Add an advanced filter panel to the jobs view - #9787
Open
camd wants to merge 22 commits into
Open
Conversation
- PrimaryNavBar's memo comparator now compares isFilterPanelOpen and classificationTypes so the panel can actually open in the app. - SecondaryNavBar ignores Overlay rootClose events that originate on the trigger button, so the trigger toggles open/closed instead of the two handlers canceling each other out. - AdvancedFilterPanel moves focus into the popover when it opens and restores focus to the trigger when it closes. - Advanced-filter badge uses Bootstrap 5 classes; trigger button gets aria-controls/aria-haspopup; PresetsSection falls back to thDefaultRepo; FieldFilterSection's remove button gets a matching aria-label. - Adds regression tests for the memo/re-render bug and the trigger open/close toggle bug.
✅ Deploy Preview for treeherder ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## master #9787 +/- ##
===========================================
+ Coverage 69.15% 83.56% +14.40%
===========================================
Files 637 648 +11
Lines 38505 38830 +325
Branches 3466 3543 +77
===========================================
+ Hits 26630 32447 +5817
+ Misses 11481 5986 -5495
- Partials 394 397 +3 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
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.
What this adds
An Advanced Filters popover for the jobs view that brings every filter dimension into one place. It replaces the old one-field-at-a-time filter form that appeared under the secondary toolbar (that inline form is removed; the active-filter chips bar remains).
The panel is opened from a new sliders icon attached to the left edge of the "Filter platforms & jobs" quick-filter box, from Filters → Advanced Filters… in the top nav, or with the shift+f keyboard shortcut (documented in the
?shortcut overlay). The trigger shows a count badge when any non-default filters are active.Panel contents (top to bottom)
<datalist>typeahead sourced from the currently loaded jobs.failures/in progressgroup shortcuts. Pills use the same status colors as the toolbar chicklets (shared CSS tokens): filled when active, outlined when off.Everything "live" reads and writes through the existing
FilterModel, so the URL stays the single source of truth and the panel can never disagree with the toolbar chicklets, tier menu, or chips bar. Only the push-range section holds local state, and only until Apply.Discoverability
shift+fcompletes the existing family:ffocuses the quick filter,ctrl+shift+fclears it.Implementation notes
ui/job-view/headerbars/filter-panel/; the popover is a react-bootstrapOverlay/PopoverwithrootClose(outside click / Esc closes), focus moved into the panel on open and restored to the trigger on close.isFieldFilterVisibleplumbing throughApp→PrimaryNavBarwas repurposed asisFilterPanelOpen/toggleFilterPanelso both the trigger and the hotkey share one source of truth. ThePrimaryNavBarReact.memocomparator gained the new props (a miss there made the panel unopenable — now covered by a regression test through the memoized export).ActiveFiltersis chips-only now;startdate/enddateURL params (already supported by the fetch layer) finally have a UI.:roottokens used by both the toolbar chicklets and the panel pills.Testing
Follow-ups (out of scope here)
fromchange/tochangehave no panel UI yet (they still count toward the badge and clear with Clear all).