1
0
Fork 0
mirror of https://github.com/seanmorley15/AdventureLog.git synced 2025-08-06 13:45:17 +02:00

Refactor EditModal component to use adventureToEdit prop instead of individual props

This commit is contained in:
Sean Morley 2024-04-27 16:54:20 +00:00
parent b057ee01b3
commit 7327fefe15
5 changed files with 22 additions and 37 deletions

View file

@ -1,15 +1,12 @@
<script lang="ts"> <script lang="ts">
export let editId: number = NaN; export let adventureToEdit: Adventure;
export let editName: string = "";
export let editLocation: string = "";
export let editdate: string = "";
import { createEventDispatcher } from "svelte"; import { createEventDispatcher } from "svelte";
import type { Adventure } from "$lib/utils/types"; import type { Adventure } from "$lib/utils/types";
const dispatch = createEventDispatcher(); const dispatch = createEventDispatcher();
import { onMount } from "svelte"; import { onMount } from "svelte";
let modal: HTMLDialogElement; let modal: HTMLDialogElement;
let originalName = editName; let originalName = adventureToEdit.name;
onMount(() => { onMount(() => {
modal = document.getElementById("my_modal_1") as HTMLDialogElement; modal = document.getElementById("my_modal_1") as HTMLDialogElement;
@ -19,14 +16,8 @@
}); });
function submit() { function submit() {
const adventureEdited: Adventure = { dispatch("submit", adventureToEdit);
id: editId, console.log(adventureToEdit);
name: editName,
location: editLocation,
date: editdate,
};
dispatch("submit", adventureEdited);
console.log(adventureEdited);
} }
function close() { function close() {
@ -56,7 +47,7 @@
<input <input
type="text" type="text"
id="name" id="name"
bind:value={editName} bind:value={adventureToEdit.name}
class="input input-bordered w-full max-w-xs" class="input input-bordered w-full max-w-xs"
/> />
</div> </div>
@ -65,7 +56,7 @@
<input <input
type="text" type="text"
id="location" id="location"
bind:value={editLocation} bind:value={adventureToEdit.location}
class="input input-bordered w-full max-w-xs" class="input input-bordered w-full max-w-xs"
/> />
</div> </div>
@ -74,7 +65,7 @@
<input <input
type="date" type="date"
id="date" id="date"
bind:value={editdate} bind:value={adventureToEdit.date}
class="input input-bordered w-full max-w-xs" class="input input-bordered w-full max-w-xs"
/> />
</div> </div>

View file

@ -78,6 +78,10 @@
<button class="btn btn-primary my-2 md:my-0 md:mr-4" on:click={goToLog} <button class="btn btn-primary my-2 md:my-0 md:mr-4" on:click={goToLog}
>My Log</button >My Log</button
> >
<button
class="btn btn-primary my-2 md:my-0 md:mr-4"
on:click={() => goto("/planner")}>Planner</button
>
{/if} {/if}
<button <button
class="btn btn-primary my-2 md:my-0 md:mr-4" class="btn btn-primary my-2 md:my-0 md:mr-4"

View file

@ -17,10 +17,11 @@
let newName = ""; let newName = "";
let newLocation = ""; let newLocation = "";
let editId: number = NaN; // let editId: number = NaN;
let editName: string = ""; // let editName: string = "";
let editLocation: string = ""; // let editLocation: string = "";
let editdate: string = ""; // let editdate: string = "";
let adventureToEdit: Adventure | undefined;
let isShowingToast: boolean = false; let isShowingToast: boolean = false;
let toastAction: string = ""; let toastAction: string = "";
@ -133,10 +134,7 @@
adventures = adventures.map((adventure) => adventures = adventures.map((adventure) =>
adventure.id === event.detail.id ? event.detail : adventure adventure.id === event.detail.id ? event.detail : adventure
); );
editId = NaN; adventureToEdit = undefined;
editName = "";
editLocation = "";
editdate = "";
showToast("Adventure edited successfully!"); showToast("Adventure edited successfully!");
}) })
.catch((error) => { .catch((error) => {
@ -149,10 +147,7 @@
(adventure) => adventure.id === event.detail (adventure) => adventure.id === event.detail
); );
if (adventure) { if (adventure) {
editId = adventure.id || 0; adventureToEdit = adventure;
editName = adventure.name || "";
editLocation = adventure.location || "";
editdate = adventure.date || "";
} }
} }
@ -179,10 +174,7 @@
} }
function handleClose() { function handleClose() {
editId = NaN; adventureToEdit = undefined;
editName = "";
editLocation = "";
editdate = "";
} }
function deleteData() { function deleteData() {
@ -272,12 +264,9 @@
<SucessToast action={toastAction} /> <SucessToast action={toastAction} />
{/if} {/if}
{#if !Number.isNaN(editId)} {#if adventureToEdit && adventureToEdit.id != undefined}
<EditModal <EditModal
bind:editId bind:adventureToEdit
bind:editName
bind:editLocation
bind:editdate
on:submit={saveAdventure} on:submit={saveAdventure}
on:close={handleClose} on:close={handleClose}
/> />

View file

View file

@ -0,0 +1 @@
<h1>Welcome to the planner</h1>