#107 — Einkaufsliste — nur belegte Kategorien anzeigen, passendere Icons #110
Labels
No labels
priority/could
priority/must
priority/should
priority/wont
status/blocked
status/claimed
status/done-migrated
type/bug
type/feature
type/infra
type/tech-debt
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
robert/todo#110
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Story: Einkaufsliste — nur belegte Kategorien anzeigen, passendere Icons
As a Nutzer der Einkaufsliste,
I want to in der normalen Ansicht und im Online-Warenkorb nur Kategorien sehen, in denen gerade aktive
Produkte stehen, und Icons, die zur jeweiligen Kategorie passen,
so that die Liste nicht von leeren Sektionen zugemüllt wird und ich Kategorien auf einen Blick optisch
erkenne.
Klärung vom 2026-08-08 (PO-Rückfrage beantwortet): "Beide Sichtweisen" = die normale Produkt-Ansicht und
die Online-Warenkorb-Ansicht (
ShoppingCartCheckPanel).Acceptance criteria:
ShoppingListPage.tsx) werden nur Kategorien gerendert, diemindestens ein aktives Produkt (
IsOnList = true) enthalten — leere Kategorien (neu angelegt, odernur inaktive/abgehakte Produkte) werden ausgeblendet, nicht gelöscht.
ShoppingCartCheckPanel) gilt dieselbe Regel.ShoppingCategoryManager, erreichbar über "Categories") zeigtweiterhin alle Kategorien, auch leere — er dient dem Verwalten/Anlegen/Löschen von Kategorien, nicht
nur der Produktübersicht, und ist von dieser Story nicht betroffen.
beiden Ansichten, ohne dass die Kategorie selbst gelöscht wird (Story
#106's Drag-and-Drop-Ziel bleibtüber die Kategorie-Verwaltung weiterhin erreichbar).
CreateShoppingListCommandHandler.DefaultSections) werdendurchgesehen und durch Emojis ersetzt, die inhaltlich eindeutiger zur jeweiligen Kategorie passen (z. B.
wo ein Icon aktuell mehrdeutig oder generisch wirkt). Konkrete Icon-Wahl liegt beim Frontend Engineer,
solange sie inhaltlich nachvollziehbar zur Kategorie passt.
Out of scope for this story:
wählbares Icon-Feld.
design (
107_shopping_category_display_and_icons_design.md)Design note:
#107— Einkaufsliste: nur belegte Kategorien anzeigen, passendere IconsScope confirmed against the code
ShoppingListPage.tsxalready computedproductsByCategoryfromactiveProducts(products withisOnList === true) but renderedorderedCategories(every category from the fetched list)unconditionally — an empty section still got a header + empty product list. Fix: filter
orderedCategoriesdown to categories with at least one bucket entry, computed afterproductsByCategoryis built.ShoppingCartCheckPanel(the "Online cart" panel) does not group by category at all — it's aflat name+checkbox list (confirmed in its own test: "name only, no quantity/comments"). It already
only ever receives
activeProductsas itsproductsprop fromShoppingListPage, so there is noempty-category header it could show in the first place. The AC's "same rule applies" is therefore
satisfied by the existing data flow — no code change needed there. Recorded here explicitly rather
than silently skipped, since the story's own PO clarification named this component directly.
ShoppingCategoryManager(the "Categories" management dialog) fetches and shows all categoriesunfiltered already, exactly as the AC requires (it's for managing sections, not browsing products).
No change needed.
from the section list on the next render, since the filter is computed live from
productsstate —no separate "is this now empty" bookkeeping needed. The category row itself is untouched (still
exists, still reachable via "Categories" for
#106's drag-and-drop target), matching the AC.Icon review (
CreateShoppingListCommandHandler.DefaultSections)Changed 4 of the 14 predefined section icons where the emoji read as one specific item rather than
the category as a whole, or clashed with a neighboring category's icon:
The other 10 (Backwaren , Trockenwaren , Müsli & Nüsse , Aufstriche , Glas und Dosen ,
Getränke , Gewürze , Tiefkühl ❄️, Essig/Öl & Co , Bioladen ) already anchor clearly enough to
their category and were left unchanged.
This only affects sections seeded for shopping lists created from now on — same as the original
#90seed, there's no backfill migration for already-existing lists' category rows. Consistent withhow this seed data has always been treated (a one-time creation-time default, not a synced source of
truth).
Out of scope (per story)