feat(dashboards): multi-select tag filter on Dashboards and Saved Searches#2379
Draft
alex-fedotyev wants to merge 2 commits into
Draft
feat(dashboards): multi-select tag filter on Dashboards and Saved Searches#2379alex-fedotyev wants to merge 2 commits into
alex-fedotyev wants to merge 2 commits into
Conversation
…rches Replace the single-Select tag filter on the Dashboards and Saved Searches list pages with a Mantine MultiSelect chip control. Drop the `groupByTags` grid utility that rendered multi-tagged items once per tag header; the grid now renders each item exactly once, with OR semantics across selected chips. URL state moves from `?tag=foo` (single string) to `?tags=a,b` (array via nuqs `parseAsArrayOf(parseAsString)`). A mount-only useEffect migrates legacy single-tag URLs onto the new state so existing bookmarks and shared links keep working; the modern `?tags=...` wins when both are present. Closes the duplication symptom reported on #1253. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
🦋 Changeset detectedLatest commit: fd3aa27 The changes in this PR will be included in the next version bump. This PR includes changesets to release 3 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Contributor
E2E Test Results✅ All tests passed • 191 passed • 3 skipped • 1310s
Tests ran across 4 shards in parallel. |
…ct swap
The DashboardsListPage and SavedSearchesListPage e2e page objects
looked the filter input up by `getByPlaceholder('Filter by tag')`,
which broke for two reasons after the multi-select swap:
- placeholder text changed to 'Filter by tags' (plural).
- Mantine's MultiSelect hides the placeholder once any chip is
selected, so even a singular match would not survive the second
interaction in any future multi-tag test.
Switch the locator to a stable `data-testid="tag-filter"` on the
MultiSelect, simplify the placeholder back to an unconditional
'Filter by tags', and press Escape after selection so the still-open
combobox does not block subsequent card clicks. clearTagFilter()
keeps the same CSS-target on the sibling clear button; Mantine v9's
ComboboxClearButton still carries aria-hidden so role-based queries
remain unreliable.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
8 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Replace the single-tag dropdown on the Dashboards and Saved Searches list pages with a multi-select chip filter. Each dashboard or saved search now renders exactly once in the grid view, even when it carries multiple selected tags.
?tags=a,bvianuqsparseAsArrayOf(parseAsString). Existing?tag=fooshared links and bookmarks continue to load and migrate onto the new state on mount.groupByTagsutility that produced the duplicate render is removed; the grid renders directly from the filtered list.Closes the duplication symptom reported on #1253. Also relevant to #1929 (different surface; that one is intra-dashboard panel organization).
Test plan
yarn jest src/components/Dashboards/__tests__/DashboardsListPage.test.tsx src/components/SavedSearches/__tests__/SavedSearchesListPage.test.tsx(6 new RTL tests pass)yarn ci:lint(lint + tsc + stylelint pass)yarn jest(1756 tests pass; 9 skipped; no regressions)?tag=fooURL selects the chip and rewrites to?tags=foo.MultiSelecthonors both).Screenshots to attach before marking ready: before-grid (current duplication), after-grid (single render), multi-select interaction in light + dark.