aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md1
-rw-r--r--src/routes/grocery/[id]/+page.svelte14
2 files changed, 12 insertions, 3 deletions
diff --git a/README.md b/README.md
index 462f9c7..76742d2 100644
--- a/README.md
+++ b/README.md
@@ -83,4 +83,3 @@ mise run deploy
- Shared > Modal actions
- Deterministic sort
- Input + buttons sizes (ajouter un article)
-- Save on select in grocery category
diff --git a/src/routes/grocery/[id]/+page.svelte b/src/routes/grocery/[id]/+page.svelte
index 56e57fd..027c079 100644
--- a/src/routes/grocery/[id]/+page.svelte
+++ b/src/routes/grocery/[id]/+page.svelte
@@ -10,7 +10,12 @@
let isSubmitting = $state(false);
let formRef: HTMLFormElement;
+ // Only re-sync fields when navigating to a different item, so an edit made
+ // while a save is in flight isn't clobbered by the post-save reload.
+ let syncedId = -1;
$effect(() => {
+ if (data.item.id === syncedId) return;
+ syncedId = data.item.id;
name = data.item.name;
categoryId = data.item.categoryId ?? -1;
});
@@ -49,6 +54,8 @@
return async ({ update }) => {
await update({ reset: false });
isSubmitting = false;
+ // flush a change made while the previous submit was in flight
+ submitIfChanged();
};
}}
>
@@ -73,8 +80,11 @@
<select
class="form-select"
name="category_id"
- bind:value={categoryId}
- onblur={submitIfChanged}
+ value={categoryId}
+ onchange={(e) => {
+ categoryId = Number(e.currentTarget.value);
+ submitIfChanged();
+ }}
>
<option value={-1}>—</option>
{#each data.categories as cat (cat.id)}