From 09a9be3e3d426ef5aa3094f76d68fe552b671663 Mon Sep 17 00:00:00 2001 From: tglide <26071571+TGlide@users.noreply.github.com> Date: Mon, 17 Jul 2023 12:23:16 +0100 Subject: [PATCH] feat: basic export data modal functionality --- .gitignore | 2 + src/lib/components/migrationBox.svelte | 2 +- src/lib/components/modal.svelte | 2 +- src/lib/elements/forms/form.svelte | 6 +- src/lib/elements/forms/inputText.svelte | 17 ++- src/lib/elements/forms/inputTextarea.svelte | 2 + src/lib/helpers/form.ts | 14 +++ src/routes/+layout.ts | 2 +- .../settings/migrations/+page.svelte | 78 ++++-------- .../settings/migrations/+page.ts | 14 ++- .../settings/migrations/exportModal.svelte | 119 ++++++++++++++++++ src/routes/store.ts | 2 +- 12 files changed, 192 insertions(+), 68 deletions(-) create mode 100644 src/lib/helpers/form.ts create mode 100644 src/routes/console/project-[project]/settings/migrations/exportModal.svelte diff --git a/.gitignore b/.gitignore index 46763dacc..183c55563 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,5 @@ node_modules node_modules/ dist/ .vercel + +*.swp \ No newline at end of file diff --git a/src/lib/components/migrationBox.svelte b/src/lib/components/migrationBox.svelte index 8fc6c47a3..dafe098b4 100644 --- a/src/lib/components/migrationBox.svelte +++ b/src/lib/components/migrationBox.svelte @@ -80,7 +80,7 @@
{percentage}%
-
+
Importing users...
diff --git a/src/lib/components/modal.svelte b/src/lib/components/modal.svelte index c780c39b3..3801b0fb7 100644 --- a/src/lib/components/modal.svelte +++ b/src/lib/components/modal.svelte @@ -11,7 +11,7 @@ export let error: string = null; export let closable = true; export let headerDivider = true; - export let onSubmit: () => Promise | void = function () { + export let onSubmit: (e: SubmitEvent) => Promise | void = function () { return; }; diff --git a/src/lib/elements/forms/form.svelte b/src/lib/elements/forms/form.svelte index fcb58760a..8145f2c69 100644 --- a/src/lib/elements/forms/form.svelte +++ b/src/lib/elements/forms/form.svelte @@ -13,15 +13,15 @@ export let noMargin = false; export let noStyle = false; export let isModal = false; - export let onSubmit: () => Promise | void; + export let onSubmit: (e: SubmitEvent) => Promise | void; const { isSubmitting } = setContext('form', { isSubmitting: writable(false) }); - async function submit() { + async function submit(e: SubmitEvent) { isSubmitting.set(true); - await onSubmit(); + await onSubmit(e); isSubmitting.set(false); } diff --git a/src/lib/elements/forms/inputText.svelte b/src/lib/elements/forms/inputText.svelte index 28123a30f..702d6228a 100644 --- a/src/lib/elements/forms/inputText.svelte +++ b/src/lib/elements/forms/inputText.svelte @@ -8,6 +8,7 @@ export let optionalText: string | undefined = undefined; export let showLabel = true; export let id: string; + export let name: string = id; export let value = ''; export let placeholder = ''; export let required = false; @@ -29,6 +30,7 @@ }); const handleInvalid = (event: Event) => { + console.log('Invalid'); event.preventDefault(); if (element.validity.valueMissing) { @@ -39,8 +41,11 @@ error = element.validationMessage; }; - $: if (value) { - error = null; + $: { + value; + if (element?.validity?.valid) { + error = null; + } } let prevValue = ''; @@ -56,6 +61,10 @@ $: showTextCounter = !!maxlength; $: showNullCheckbox = nullable && !required; + + type $$Events = { + input: Event & { target: HTMLInputElement }; + }; @@ -66,6 +75,7 @@
+ on:invalid={handleInvalid} + on:input /> {#if showTextCounter || showNullCheckbox}
    diff --git a/src/lib/elements/forms/inputTextarea.svelte b/src/lib/elements/forms/inputTextarea.svelte index a5a096b35..8840d381d 100644 --- a/src/lib/elements/forms/inputTextarea.svelte +++ b/src/lib/elements/forms/inputTextarea.svelte @@ -7,6 +7,7 @@ export let label: string; export let showLabel = true; export let id: string; + export let name: string = id; export let value = ''; export let placeholder = ''; export let required = false; @@ -63,6 +64,7 @@