#201 - Listengruppen: Liste ueber das Options-Menue oder bei Neuanlage einer Gruppe zuordnen #201

Closed
opened 2026-09-27 13:31:53 +02:00 by lena · 2 comments
Collaborator

Follow-up auf #197 (Listengruppen: Auf-/Zuklappen + Dashboard-Seite). Aktuell kann eine Liste nur ueber den Vollbild-Bearbeitungsmodus (Drag & Drop) einer Gruppe zugeordnet werden.

Erweiterung (Nutzeranfrage):

  1. Im Drei-Punkte-Options-Menue jeder Liste (Todo/Shopping/Pantry/MasterPacking) soll es eine Option geben, die Liste einer bestehenden Gruppe zuzuordnen (oder aus der aktuellen Gruppe zu entfernen).
  2. Beim Neuanlegen einer Liste (alle Listentypen) soll bereits im Erstellungsdialog die Option bestehen, die neue Liste direkt einer Gruppe zuzuordnen.

Keine Backend-Aenderung erwartet - Gruppenzugehoerigkeit ist rein positionell (userListOrder), ReorderUserListsCommand kann wiederverwendet werden (siehe #197s useUnifiedListEntries/GroupDashboardPage).

Acceptance Criteria:

  • Options-Menue jeder Liste zeigt ein Untermenue "Zu Gruppe hinzufuegen" mit allen bestehenden Gruppen + "Keine Gruppe" (nur sichtbar, wenn mindestens eine Gruppe existiert).
  • Auswahl verschiebt die Liste server-seitig (userListOrder) unter die gewaehlte Gruppe (oder ans Ende, wenn "Keine Gruppe").
  • Jeder Erstellungsdialog (Standard/Projekt/Priorisiert/Shopping/Pantry/MasterPacking) hat ein optionales Gruppen-Auswahlfeld; wird eine Gruppe gewaehlt, landet die neue Liste direkt darunter.
  • Sidebar und Gruppen-Dashboard-Seite (#197) spiegeln die neue Zuordnung sofort wider.
Follow-up auf #197 (Listengruppen: Auf-/Zuklappen + Dashboard-Seite). Aktuell kann eine Liste nur ueber den Vollbild-Bearbeitungsmodus (Drag & Drop) einer Gruppe zugeordnet werden. Erweiterung (Nutzeranfrage): 1. Im Drei-Punkte-Options-Menue jeder Liste (Todo/Shopping/Pantry/MasterPacking) soll es eine Option geben, die Liste einer bestehenden Gruppe zuzuordnen (oder aus der aktuellen Gruppe zu entfernen). 2. Beim Neuanlegen einer Liste (alle Listentypen) soll bereits im Erstellungsdialog die Option bestehen, die neue Liste direkt einer Gruppe zuzuordnen. Keine Backend-Aenderung erwartet - Gruppenzugehoerigkeit ist rein positionell (userListOrder), ReorderUserListsCommand kann wiederverwendet werden (siehe #197s useUnifiedListEntries/GroupDashboardPage). Acceptance Criteria: - Options-Menue jeder Liste zeigt ein Untermenue "Zu Gruppe hinzufuegen" mit allen bestehenden Gruppen + "Keine Gruppe" (nur sichtbar, wenn mindestens eine Gruppe existiert). - Auswahl verschiebt die Liste server-seitig (userListOrder) unter die gewaehlte Gruppe (oder ans Ende, wenn "Keine Gruppe"). - Jeder Erstellungsdialog (Standard/Projekt/Priorisiert/Shopping/Pantry/MasterPacking) hat ein optionales Gruppen-Auswahlfeld; wird eine Gruppe gewaehlt, landet die neue Liste direkt darunter. - Sidebar und Gruppen-Dashboard-Seite (#197) spiegeln die neue Zuordnung sofort wider.
lena changed title from #199 - Listengruppen: Liste ueber das Options-Menue oder bei Neuanlage einer Gruppe zuordnen to #201 - Listengruppen: Liste ueber das Options-Menue oder bei Neuanlage einer Gruppe zuordnen 2026-09-27 13:32:01 +02:00
lena self-assigned this 2026-09-27 13:32:15 +02:00
Author
Collaborator

Claiming - implementing directly per user request (extension of #197).

Claiming - implementing directly per user request (extension of #197).
Author
Collaborator

Implemented and shipped in 4b8ebc09 (feature) + 402d15a5 (bug fix from live testing).

Scope shipped:

  • Every list's "..." options menu (Todo/Shopping/Pantry/MasterPacking) gets an "Add to group" submenu listing every existing group plus "No group", with the list's current group disabled in that list.
  • Every list-creation dialog (Standard, Project, Priority, Shopping, Pantry, MasterPacking) gets an optional group picker; picking a group repositions the newly created list under it right after creation.
  • No backend changes needed - group membership stays purely positional (userListOrder), reusing ReorderUserListsCommand exactly like #197's GroupDashboardPage does. Shared logic: moveEntryToGroup/currentGroupHeadingId (listOrder.ts) + the useMoveListToGroup hook; shared UI: GroupPickerSubmenu (options menu) and GroupAssignmentField (create dialogs).

Bug found and fixed via live browser testing (not caught by unit tests, since every test case happened to move an entry that was already last in the order): moving a list to "No group" appended it at the absolute end of the full order, which silently re-grouped it into whichever heading happened to be last (a heading with nothing after it has an open-ended membership span). Fixed to insert before the first heading instead - see 402d15a5 and the team-memory note in ai/roles/memory/04_frontend_engineer_memory.md.

Tests: new tests for moveEntryToGroup/currentGroupHeadingId, useMoveListToGroup, GroupPickerSubmenu, GroupAssignmentField, plus wiring tests added to all 4 options-menu test files and all 5 create-dialog test files. Full suite green (143 files / 1408 tests). Backend unaffected.

Live-verified in the local review container: moved an existing shopping list into a group and back out via its options menu (confirmed the fixed "No group" behavior with a screen reader-visible collapse check), created a new list with a group pre-selected and confirmed it landed under that group immediately.

Closing as done.

Implemented and shipped in 4b8ebc09 (feature) + 402d15a5 (bug fix from live testing). Scope shipped: - Every list's "..." options menu (Todo/Shopping/Pantry/MasterPacking) gets an "Add to group" submenu listing every existing group plus "No group", with the list's current group disabled in that list. - Every list-creation dialog (Standard, Project, Priority, Shopping, Pantry, MasterPacking) gets an optional group picker; picking a group repositions the newly created list under it right after creation. - No backend changes needed - group membership stays purely positional (userListOrder), reusing ReorderUserListsCommand exactly like #197's GroupDashboardPage does. Shared logic: moveEntryToGroup/currentGroupHeadingId (listOrder.ts) + the useMoveListToGroup hook; shared UI: GroupPickerSubmenu (options menu) and GroupAssignmentField (create dialogs). Bug found and fixed via live browser testing (not caught by unit tests, since every test case happened to move an entry that was already last in the order): moving a list to "No group" appended it at the absolute end of the full order, which silently re-grouped it into whichever heading happened to be last (a heading with nothing after it has an open-ended membership span). Fixed to insert before the first heading instead - see 402d15a5 and the team-memory note in ai/roles/memory/04_frontend_engineer_memory.md. Tests: new tests for moveEntryToGroup/currentGroupHeadingId, useMoveListToGroup, GroupPickerSubmenu, GroupAssignmentField, plus wiring tests added to all 4 options-menu test files and all 5 create-dialog test files. Full suite green (143 files / 1408 tests). Backend unaffected. Live-verified in the local review container: moved an existing shopping list into a group and back out via its options menu (confirmed the fixed "No group" behavior with a screen reader-visible collapse check), created a new list with a group pre-selected and confirmed it landed under that group immediately. Closing as done.
lena closed this issue 2026-09-27 16:03:50 +02:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
robert/todo#201
No description provided.