From 27494531c6461bb8d63f6ec2521a336203cbe0e5 Mon Sep 17 00:00:00 2001 From: Martin Kagamino Lehoux Date: Tue, 28 Jul 2026 22:27:03 +0200 Subject: feat: auto-save item name/category on blur, remove explicit save button --- src/routes/grocery/[id]/+page.svelte | 49 ++++++++++++++++++++++++++++++++---- 1 file changed, 44 insertions(+), 5 deletions(-) (limited to 'src/routes') diff --git a/src/routes/grocery/[id]/+page.svelte b/src/routes/grocery/[id]/+page.svelte index 50c2e0a..c0550fc 100644 --- a/src/routes/grocery/[id]/+page.svelte +++ b/src/routes/grocery/[id]/+page.svelte @@ -5,6 +5,8 @@ let name = $state(data.item.name); let categoryId = $state(data.item.categoryId ?? -1); let saved = $state(false); + let isSubmitting = $state(false); + let formRef: HTMLFormElement; $effect(() => { if (form?.success && form?.type === 'update') { @@ -13,6 +15,17 @@ return () => clearTimeout(t); } }); + + function submitIfChanged() { + if (isSubmitting) return; + const currentCategoryId = data.item.categoryId ?? -1; + if (name === data.item.name && categoryId === currentCategoryId) return; + if (!name.trim()) return; + + isSubmitting = true; + formRef.requestSubmit(); + } + let reference = $state(''); let price = $state(''); let unit = $state('€/kg'); @@ -21,31 +34,50 @@
{ return async ({ update }) => { await update({ reset: false }); + isSubmitting = false; }; }} > - + {#if saved} +

✓ Enregistré

+ {/if}

@@ -223,4 +255,11 @@ background: var(--danger-bg); transform: translateY(-1px); } + + .save-status { + font-size: 0.875rem; + color: var(--success); + font-weight: 500; + margin-top: -0.25rem; + } -- cgit v1.3