From b6466fcd955d06a3d45ed93d755ece3549c67690 Mon Sep 17 00:00:00 2001 From: Marcel Date: Sun, 19 Apr 2026 18:07:06 +0200 Subject: [PATCH] fix(admin): wire delete-user button via enhance callback instead of requestSubmit() The delete button used type=button + requestSubmit() to trigger the form, which did not reliably fire SvelteKit's enhance submit listener. Replaced with a type=submit button and an async enhance callback that guards with the confirm dialog and calls cancel() on rejection. Also clears the unsaved-changes dirty flag before the redirect so beforeNavigate doesn't silently block the post-delete navigation. Closes #277 Co-Authored-By: Claude Sonnet 4.6 --- .../src/routes/admin/users/[id]/+page.svelte | 29 +++++++++-------- .../admin/users/[id]/page.svelte.spec.ts | 32 ++++++++++++------- 2 files changed, 37 insertions(+), 24 deletions(-) diff --git a/frontend/src/routes/admin/users/[id]/+page.svelte b/frontend/src/routes/admin/users/[id]/+page.svelte index 9296e057..ac94b9a8 100644 --- a/frontend/src/routes/admin/users/[id]/+page.svelte +++ b/frontend/src/routes/admin/users/[id]/+page.svelte @@ -15,16 +15,6 @@ const unsaved = createUnsavedWarning(); const selectedGroupIds = $derived(data.editUser.groups?.map((g: { id: string }) => g.id) ?? []); -let deleteFormEl = $state(null); - -async function handleDelete() { - const confirmed = await confirm({ - title: m.admin_user_delete_confirm({ username: data.editUser.email }), - destructive: true - }); - if (confirmed) deleteFormEl!.requestSubmit(); -} - $effect(() => { if (form?.success) unsaved.clearOnSuccess(); }); @@ -51,10 +41,23 @@ $effect(() => {

{m.admin_user_edit_heading({ username: data.editUser.email })}

-
+ { + const confirmed = await confirm({ + title: m.admin_user_delete_confirm({ username: data.editUser.email }), + destructive: true + }); + if (!confirmed) { + cancel(); + } else { + unsaved.clearOnSuccess(); + } + }} + >