diff --git a/src/lib/components/ShoppingListRow.svelte b/src/lib/components/ShoppingListRow.svelte new file mode 100644 index 0000000..4641bce --- /dev/null +++ b/src/lib/components/ShoppingListRow.svelte @@ -0,0 +1,57 @@ + + + + + diff --git a/src/routes/shopping-list/+page.svelte b/src/routes/shopping-list/+page.svelte index 46368c2..f695f9b 100644 --- a/src/routes/shopping-list/+page.svelte +++ b/src/routes/shopping-list/+page.svelte @@ -2,6 +2,9 @@ import { onMount } from 'svelte'; import { ShoppingCart } from 'lucide-svelte'; import type { ShoppingListSnapshot } from '$lib/server/shopping/repository'; + import ShoppingListRow from '$lib/components/ShoppingListRow.svelte'; + import type { ShoppingListRow as Row } from '$lib/server/shopping/repository'; + import { shoppingCartStore } from '$lib/client/shopping-cart.svelte'; let snapshot = $state({ recipes: [], rows: [], uncheckedCount: 0 }); let loading = $state(true); @@ -16,6 +19,17 @@ } } + async function onToggleRow(row: Row, next: boolean) { + const method = next ? 'POST' : 'DELETE'; + await fetch('/api/shopping-list/check', { + method, + headers: { 'content-type': 'application/json' }, + body: JSON.stringify({ name_key: row.name_key, unit_key: row.unit_key }) + }); + await load(); + void shoppingCartStore.refresh(); + } + onMount(load); @@ -36,6 +50,14 @@

Einkaufswagen ist leer.

Lege Rezepte auf der Wunschliste in den Wagen, um sie hier zu sehen.

+{:else} + {/if}