diff options
| author | Martin Kagamino Lehoux <martin@lehoux.net> | 2026-07-28 15:47:06 +0200 |
|---|---|---|
| committer | Martin Kagamino Lehoux <martin@lehoux.net> | 2026-07-28 15:47:06 +0200 |
| commit | 154b80588e0544d2b59684998b0cdbb8b6ed4495 (patch) | |
| tree | 1d919c88c307193e217e242a535191d87e56bb72 /src/routes/grocery | |
| parent | db2f142aaf98ba36d1e9b17ce8a4299268d1b69b (diff) | |
fix: prevent form reset after update and show feedback
Diffstat (limited to 'src/routes/grocery')
| -rw-r--r-- | src/routes/grocery/[id]/+page.svelte | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/src/routes/grocery/[id]/+page.svelte b/src/routes/grocery/[id]/+page.svelte index a7e0bc9..a1ac3d6 100644 --- a/src/routes/grocery/[id]/+page.svelte +++ b/src/routes/grocery/[id]/+page.svelte @@ -4,13 +4,31 @@ let { data, form } = $props(); let name = $state(data.item.name); let categoryId = $state(data.item.categoryId ?? -1); + let saved = $state(false); + + $effect(() => { + if (form?.success) { + saved = true; + const t = setTimeout(() => (saved = false), 2000); + return () => clearTimeout(t); + } + }); let reference = $state(''); let price = $state(''); let unit = $state('€/kg'); let qualityScore = $state(''); </script> -<form class="form-card" method="POST" action="?/update" use:enhance> +<form + class="form-card" + method="POST" + action="?/update" + use:enhance={() => { + return async ({ update }) => { + await update({ reset: false }); + }; + }} +> <label> <span class="form-label">Nom</span> <input class="form-input" type="text" name="name" bind:value={name} /> @@ -24,7 +42,7 @@ {/each} </select> </label> - <button class="btn-primary" type="submit">Enregistrer</button> + <button class="btn-primary" type="submit">{saved ? '✓ Enregistré' : 'Enregistrer'}</button> </form> <hr /> |
