From 03bc88774f16a2dcb3ef468bdb425cf9f7e76f51 Mon Sep 17 00:00:00 2001 From: Torsten Dittmann Date: Wed, 21 Sep 2022 14:38:18 +0200 Subject: [PATCH] fix: form for each step --- src/lib/layout/wizard.svelte | 27 +++++++++++++------ .../[collection]/createDocument.svelte | 15 +++++------ .../collection/[collection]/store.ts | 6 ++--- 3 files changed, 29 insertions(+), 19 deletions(-) diff --git a/src/lib/layout/wizard.svelte b/src/lib/layout/wizard.svelte index bf559b61e..1b5621da0 100644 --- a/src/lib/layout/wizard.svelte +++ b/src/lib/layout/wizard.svelte @@ -12,22 +12,33 @@ import { Steps } from '$lib/components'; import { Button, Form } from '$lib/elements/forms'; import { wizard } from '$lib/stores/wizard'; - import type { SvelteComponent } from 'svelte'; + import { createEventDispatcher, type SvelteComponent } from 'svelte'; export let title: string; export let steps: WizardStepsType; export let finalAction = 'Create'; + const dispatch = createEventDispatcher(); + let currentStep = 1; - const handleKeydown = (event: KeyboardEvent) => { + function handleKeydown(event: KeyboardEvent) { if (event.key === 'Escape') { event.preventDefault(); wizard.hide(); } - }; + } + + function submit() { + if (isLastStep) { + dispatch('finish'); + } else { + currentStep++; + } + } $: prepared = [...steps].sort(([a], [b]) => (a > b ? 1 : -1)); + $: isLastStep = currentStep === steps.size; @@ -57,8 +68,8 @@
-
- {#each [...steps] as [step, { component }]} + + {#each prepared as [step, { component }]} {#if currentStep === step} {/if} @@ -67,13 +78,13 @@
{#if currentStep === 1} - - {:else if currentStep === steps.size} + + {:else if isLastStep} {:else} - + {/if}
diff --git a/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/createDocument.svelte b/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/createDocument.svelte index 9d0c011c6..21245cd5b 100644 --- a/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/createDocument.svelte +++ b/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/createDocument.svelte @@ -1,9 +1,9 @@ - + diff --git a/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/store.ts b/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/store.ts index 57a1cd7b0..7bfcda9f4 100644 --- a/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/store.ts +++ b/src/routes/console/project-[project]/databases/database/[database]/collection/[collection]/store.ts @@ -66,9 +66,9 @@ export const documentList = cachedStore< load: ( databaseId: string, collectionId: string, - queries: [], - limit: number, - offset: number + queries?: [], + limit?: number, + offset?: number ) => Promise; } >('documentList', function ({ set }) {