fix(ux): replace native confirm() dialogs, add undo-toast, fix prefers-reduced-motion

- Replace all 13 native confirm() calls with confirmModal() across 7 page modules
- Add confirmModal() to modal.js (Promise-based, danger variant, focus management)
- Fix double-confirm bug in contacts.js and budget.js (modal + deleteContact/deleteEntry)
- Extend showToast() with onUndo callback and max-3-toast limit
- Implement optimistic undo-toast (4s window) for shopping item and bulk-checked delete
- Add prefers-reduced-motion guard to btnSuccess() and btnError() in modal.js
- Add btn--error-static CSS class as motion-reduced fallback for btnError()
- Add toast__undo button styles to layout.css
- Add common.confirm and common.undo i18n keys (de, en, it, sv)
- Add shopping.itemDeletedToast i18n key (de, en, it, sv)
This commit is contained in:
Ulas
2026-04-05 12:31:16 +02:00
parent 3a7d6d0e0a
commit 44e5a879b9
15 changed files with 245 additions and 56 deletions
+4 -1
View File
@@ -26,7 +26,9 @@
"nameRequired": "Namn krävs",
"contentRequired": "Innehåll krävs",
"all": "Alla",
"unknownError": "Okänt fel"
"unknownError": "Okänt fel",
"confirm": "Bekräfta",
"undo": "Ångra"
},
"nav": {
@@ -155,6 +157,7 @@
"renameListPrompt": "Nytt listnamn:",
"deleteListConfirm": "Ta bort listan \"{{name}}\" och alla objekt?",
"deletedListToast": "Lista raderad.",
"itemDeletedToast": "\"{{name}}\" borttaget.",
"itemsRemovedToast": "{{count}} objekt har tagits bort.",
"clearChecked": "Ta bort markerad ({{count}})",
"itemNamePlaceholder": "Lägg till objekt...",