diff --git a/src/routes/shopping-list/+page.svelte b/src/routes/shopping-list/+page.svelte index db6919a..8e86c7b 100644 --- a/src/routes/shopping-list/+page.svelte +++ b/src/routes/shopping-list/+page.svelte @@ -6,9 +6,11 @@ import ShoppingCartChip from '$lib/components/ShoppingCartChip.svelte'; import type { ShoppingListRow as Row } from '$lib/server/shopping/repository'; import { shoppingCartStore } from '$lib/client/shopping-cart.svelte'; + import { confirmAction } from '$lib/client/confirm.svelte'; let snapshot = $state({ recipes: [], rows: [], uncheckedCount: 0 }); let loading = $state(true); + const hasChecked = $derived(snapshot.rows.some((r) => r.checked === 1)); async function load() { loading = true; @@ -47,6 +49,25 @@ void shoppingCartStore.refresh(); } + async function clearChecked() { + await fetch('/api/shopping-list/checked', { method: 'DELETE' }); + await load(); + void shoppingCartStore.refresh(); + } + + async function clearAll() { + const ok = await confirmAction({ + title: 'Einkaufsliste leeren?', + message: 'Alle Rezepte und abgehakten Zutaten werden entfernt. Das lässt sich nicht rückgängig machen.', + confirmLabel: 'Leeren', + destructive: true + }); + if (!ok) return; + await fetch('/api/shopping-list', { method: 'DELETE' }); + await load(); + void shoppingCartStore.refresh(); + } + onMount(load); @@ -80,6 +101,12 @@ {/each} + {/if}