From e2d1bb5400ccdf1c1c5debc10471db1e486900f4 Mon Sep 17 00:00:00 2001 From: 4gray Date: Sat, 11 Apr 2026 23:30:38 +0200 Subject: [PATCH] feat(m3u): add inline search functionality for group filtering and enhance group management UI Entire-Checkpoint: 21b9b9f90f23 --- apps/web/src/assets/i18n/de.json | 1 + apps/web/src/assets/i18n/en.json | 1 + docs/architecture/m3u-playlist-module.md | 3 + .../groups-view/groups-view.component.html | 81 +++++++++++++--- .../groups-view/groups-view.component.scss | 93 +++++++++++++++++++ .../groups-view/groups-view.component.spec.ts | 41 +++++++- .../groups-view/groups-view.component.ts | 50 +++++++++- 7 files changed, 253 insertions(+), 17 deletions(-) diff --git a/apps/web/src/assets/i18n/de.json b/apps/web/src/assets/i18n/de.json index d17436f67..80c1e8dcc 100644 --- a/apps/web/src/assets/i18n/de.json +++ b/apps/web/src/assets/i18n/de.json @@ -9,6 +9,7 @@ "MANAGE_GROUPS_HINT": "Verwenden Sie \"Gruppen verwalten\", um Gruppen wieder einzublenden.", "NO_FAVORITES": "Keine Favoriten", "NO_VISIBLE_GROUPS": "Keine sichtbaren Gruppen", + "SEARCH_GROUPS": "Gruppen suchen", "REMOVE_FAVORITE": "Aus Favoritenliste entfernen", "SEARCH_CHANNEL": "Nach Sender suchen", "UNGROUPED": "Ohne Gruppe", diff --git a/apps/web/src/assets/i18n/en.json b/apps/web/src/assets/i18n/en.json index 922117448..673abfeb6 100644 --- a/apps/web/src/assets/i18n/en.json +++ b/apps/web/src/assets/i18n/en.json @@ -275,6 +275,7 @@ "MANAGE_GROUPS": "Manage groups", "MANAGE_GROUPS_HINT": "Use manage groups to show groups again.", "NO_VISIBLE_GROUPS": "No visible groups", + "SEARCH_GROUPS": "Search groups", "UNGROUPED": "Ungrouped", "UNNAMED_CHANNEL": "Unnamed Channel", "FAVORITES": "Favorites", diff --git a/docs/architecture/m3u-playlist-module.md b/docs/architecture/m3u-playlist-module.md index 08e2174d3..758330f85 100644 --- a/docs/architecture/m3u-playlist-module.md +++ b/docs/architecture/m3u-playlist-module.md @@ -190,6 +190,9 @@ channel-list-container/ - `GroupsViewComponent` owns the M3U-only "Manage groups" action and dialog in `libs/ui/components/src/lib/channel-list-container/groups-view/`. +- The groups rail header also owns an inline search toggle that filters the + currently visible groups without mutating the workspace-level route search + term used by the broader channel views. - The dialog operates on the full grouped dataset, while the left rail and channel pane render only groups whose titles are not listed in `hiddenGroupTitles`. diff --git a/libs/ui/components/src/lib/channel-list-container/groups-view/groups-view.component.html b/libs/ui/components/src/lib/channel-list-container/groups-view/groups-view.component.html index ada4c952f..8f43d2177 100644 --- a/libs/ui/components/src/lib/channel-list-container/groups-view/groups-view.component.html +++ b/libs/ui/components/src/lib/channel-list-container/groups-view/groups-view.component.html @@ -39,17 +39,68 @@

{{ 'CHANNELS.GROUPS' | translate }}

- +
+ + +
+ + @if (isGroupSearchOpen()) { + + }