From 113415ce357a9cea1759d0452ebae6352f8fe36b Mon Sep 17 00:00:00 2001 From: Martin Kagamino Lehoux Date: Mon, 7 Sep 2026 10:55:06 +0200 Subject: Split groceries domain out of the app root Move the grocery list, catalog, and categories routes under /groceries/ so the app home can host the projects/routines overview next. Update nav to exact-path matching, login redirect default, and layout title. --- src/routes/catalog/+page.server.ts | 49 --------- src/routes/catalog/+page.svelte | 210 ------------------------------------- 2 files changed, 259 deletions(-) delete mode 100644 src/routes/catalog/+page.server.ts delete mode 100644 src/routes/catalog/+page.svelte (limited to 'src/routes/catalog') diff --git a/src/routes/catalog/+page.server.ts b/src/routes/catalog/+page.server.ts deleted file mode 100644 index 22464dc..0000000 --- a/src/routes/catalog/+page.server.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { fail } from '@sveltejs/kit'; -import { - loadAll, - toggle, - bulkUpdateGroceryCategory, -} from '$lib/server/services/groceries'; -import { - numericId, - parseOptionalNumber, -} from '$lib/server/services/validation'; -import type { EnrichedGrocery } from '$lib/server/services/groceries'; -import type { Category } from '$lib/server/services/types'; -import type { Actions, PageServerLoad } from './$types'; - -export interface CatalogOutput { - items: EnrichedGrocery[]; - categories: Category[]; -} - -export const load: PageServerLoad = async () => { - return loadAll(); -}; - -export const actions: Actions = { - toggle: async ({ request }) => { - const data = await request.formData(); - try { - const id = numericId(data.get('id')); - await toggle(id); - } catch { - return fail(400, { error: 'ID invalide' }); - } - return { success: true }; - }, - - bulkUpdateCategory: async ({ request }) => { - const data = await request.formData(); - const ids = data.getAll('ids').map(numericId); - const rawCategoryId = parseOptionalNumber(data.get('category_id')); - const categoryId = rawCategoryId === -1 ? null : rawCategoryId; - - if (ids.length === 0) { - return fail(400, { error: 'Aucun article sélectionné' }); - } - - await bulkUpdateGroceryCategory(ids, categoryId); - return { success: true, type: 'bulkUpdate' as const }; - }, -}; diff --git a/src/routes/catalog/+page.svelte b/src/routes/catalog/+page.svelte deleted file mode 100644 index ebc1819..0000000 --- a/src/routes/catalog/+page.svelte +++ /dev/null @@ -1,210 +0,0 @@ - - -{#if catalogItems.length > 0} -
-
{ - return async ({ update }) => { - await update({ reset: false }); - selectedIds.clear(); - }; - }} - > - {#each Array.from(selectedIds) as id (id)} - - {/each} - - -
-
-{/if} - -
- {#if form?.error} -

{form.error}

- {/if} - - {#if catalogItems.length === 0} -

Aucun article

- {:else} - - - {#if filteredItems.length === 0} -

Aucun résultat

- {:else} -
- {#each groupByCategory(filteredItems) as [cat, items] (cat)} -

{cat}

-
    - {#each items as item (item.id)} -
  • - toggleId(item.id)} - /> - - → -
  • - {/each} -
- {/each} -
- {/if} - {/if} -
- - -- cgit v1.3