Mehrfachauswahl (mehrere Produkte auf einmal loeschen) fuer Einkaufsliste und Vorratsschrank #187
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#187
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: Mehrfachauswahl (mehrere Produkte auf einmal loeschen) fuer Einkaufsliste und Vorratsschrank
As a Mitglied, das nach dem Grosseinkauf/Aufraeumen mehrere veraltete oder falsch erfasste Produkte gleichzeitig entfernen will,
I want to mehrere Produkte einer Einkaufsliste oder eines Vorratsschranks per Checkbox auswaehlen und gemeinsam loeschen koennen,
so that ich nicht jedes einzeln ueber sein eigenes Aktionsmenue entfernen muss.
Kontext (verifiziert im Code):
ShoppingProductItem.tsxundPantryProductItem.tsxbieten Loeschen aktuell nur einzeln ueber ein Pro-Zeile-Aktionsmenue ("..." -> Loeschen -> Bestaetigungsdialog). Es gibt keine Mehrfachauswahl-UI in der gesamten App - auch nicht bei Todos.DeleteShoppingProductCommand/DeletePantryProductCommand-artige Einzel-Befehle existieren bereits und koennen pro ausgewaehltem Produkt sequenziell aufgerufen werden (gleiches Muster wie das mehrzeilige Erstellen aus #108/#184 - dort sequenziell erstellen, hier sequenziell loeschen).Acceptance criteria:
Out of scope for this story:
Open questions: (escalate to human if unanswered)
Claiming this for the current autonomous cycle. Plan: a per-list-type Selection mode toggle in the options menu shows a checkbox per product row instead of the normal row interaction; a small action bar shows the selected count and a Delete button; confirming deletes all selected products sequentially via the existing single-item DeleteShoppingProductCommand/DeletePantryProductCommand, mirroring the sequential-call pattern from #108/#184s multi-line create. No backend changes needed. Note: this is the last cycle of this go session per explicit human instruction - will close out and stop after this one.
Done. Implemented in
9c29b73a.Scope: Einkaufsliste and Vorratsschrank each have a new "Auswaehlen" (Select) entry in their options menu. Active Selection mode replaces each row's normal check-off-checkbox/quantity-click and "..." actions menu with a plain selection checkbox (tapping anywhere on the row also toggles it) and disables drag-to-reorder; an action bar shows the selected count plus Cancel/Delete. Confirming deletes every selected product sequentially through the existing single-item DeleteShoppingProductCommand/DeletePantryProductCommand - no new backend command needed, same sequential-call pattern already used for multi-line create (#108/#184). Outside Selection mode every row behaves exactly as before.
Tests: 12 new frontend tests across ShoppingListPage/PantryPage (row rendering with/without Selection mode, count updates, Delete disabled with nothing selected, confirm deletes every selected id and exits Selection mode, Cancel deletes nothing). Full suite green: 135 files / 1310 tests. Backend suite unaffected but re-verified anyway since another session's work had landed in between: 119+52+922 tests green against real Postgres (Docker stayed available this whole session). Self-review + security-review skill: no findings (frontend-only, reuses the existing already-authorized delete commands, no new input surface). Local review container rebuilt and health-checked with today's code.
This was the last cycle of this go session (explicit human instruction to stop after this one) - backlog left open for the next session: #183 (recurring shopping items) and #185 (comment notifications on Shopping/Pantry/MasterPack products), plus #155/#138 still status/blocked.