diff --git a/src/lib/components/ShoppingCartChip.svelte b/src/lib/components/ShoppingCartChip.svelte new file mode 100644 index 0000000..2bc6352 --- /dev/null +++ b/src/lib/components/ShoppingCartChip.svelte @@ -0,0 +1,75 @@ + + +
+ {recipe.title} +
+ + {recipe.servings}p + + +
+
+ + diff --git a/src/routes/shopping-list/+page.svelte b/src/routes/shopping-list/+page.svelte index f695f9b..db6919a 100644 --- a/src/routes/shopping-list/+page.svelte +++ b/src/routes/shopping-list/+page.svelte @@ -3,6 +3,7 @@ import { ShoppingCart } from 'lucide-svelte'; import type { ShoppingListSnapshot } from '$lib/server/shopping/repository'; import ShoppingListRow from '$lib/components/ShoppingListRow.svelte'; + 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'; @@ -30,6 +31,22 @@ void shoppingCartStore.refresh(); } + async function onServingsChange(recipeId: number, servings: number) { + await fetch(`/api/shopping-list/recipe/${recipeId}`, { + method: 'PATCH', + headers: { 'content-type': 'application/json' }, + body: JSON.stringify({ servings }) + }); + await load(); + void shoppingCartStore.refresh(); + } + + async function onRemoveRecipe(recipeId: number) { + await fetch(`/api/shopping-list/recipe/${recipeId}`, { method: 'DELETE' }); + await load(); + void shoppingCartStore.refresh(); + } + onMount(load); @@ -51,6 +68,11 @@

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

{:else} +
+ {#each snapshot.recipes as r (r.recipe_id)} + + {/each} +