Uh oh!
There was an error while loading. Please reload this page.
Add reusable FilterBar component for date, number, text input - #54895
Conversation
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
RoyLee1224
commented
Aug 26, 2025
@guan404ming thanks for super helpful feedback. You're so great at code review ! |
bbovenzi
left a comment
There was a problem hiding this comment.
Really exciting! Let's just clean up a few details. Its ok to just change XComFilters in this PR and then we can change others in subsequent PRs
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
bbovenzi
left a comment
There was a problem hiding this comment.
This is looking great. We're very close, just a few suggestions here and there
Uh oh!
There was an error while loading. Please reload this page.
bbovenzi
commented
Sep 9, 2025
Any update on these todos? Would really like to get this in for 3.1 |
@bbovenzi I've held off on the translation changes for now. Just wanted to confirm: is the plan to add/modify those after the freeze is lifted? |
bbovenzi
commented
Sep 9, 2025
Let's move forward but we can try to keep the translation surface area to a minimum like just |
@bbovenzi I think we'll need a |
bbovenzi
commented
Sep 10, 2025
That's fine. This is a worthwhile improvement to have |
Uh oh!
There was an error while loading. Please reload this page.
kaxil
commented
Sep 11, 2025
@bbovenzi Do we want this in 3.1.0? |
kaxil
commented
Sep 11, 2025
Ok Saw the message on |
…#54895) * feat(ui): add reusable FilterBar component for date, number, text input * fix(ui): improve FilterPill focus and blur handling * refactor(ui): create useFiltersHandler hook for FilterBar * refactor(ui):Support negative number input & fix FilterPill DOM nesting * feat(ui): create centralized filter config * fix(ui): apply style feedback to FilterBar * refactor(ui): move getFilterConfig calls into useFiltersHandler & remove placeholder translation fallback * refactor: simplify DateFilter with dayjs * fix(ui): Add FilterTypes enum to avoid type casting * fix(i18n): add missing translation keys * fix(i18n): move filter translation key to free exemptions * fix(i18n): Replace dagName translation with dag ID * fix(i18n): simplify filter translations with fallbacks * fix: modify reset button translation key --------- Co-authored-by: Brent Bovenzi <brent@astronomer.io> (cherry picked from commit 2a1c686)
RoyLee1224
commented
Sep 16, 2025
Follow up PR
|
…#54895) * feat(ui): add reusable FilterBar component for date, number, text input * fix(ui): improve FilterPill focus and blur handling * refactor(ui): create useFiltersHandler hook for FilterBar * refactor(ui):Support negative number input & fix FilterPill DOM nesting * feat(ui): create centralized filter config * fix(ui): apply style feedback to FilterBar * refactor(ui): move getFilterConfig calls into useFiltersHandler & remove placeholder translation fallback * refactor: simplify DateFilter with dayjs * fix(ui): Add FilterTypes enum to avoid type casting * fix(i18n): add missing translation keys * fix(i18n): move filter translation key to free exemptions * fix(i18n): Replace dagName translation with dag ID * fix(i18n): simplify filter translations with fallbacks * fix: modify reset button translation key --------- Co-authored-by: Brent Bovenzi <brent@astronomer.io>
…#54895) * feat(ui): add reusable FilterBar component for date, number, text input * fix(ui): improve FilterPill focus and blur handling * refactor(ui): create useFiltersHandler hook for FilterBar * refactor(ui):Support negative number input & fix FilterPill DOM nesting * feat(ui): create centralized filter config * fix(ui): apply style feedback to FilterBar * refactor(ui): move getFilterConfig calls into useFiltersHandler & remove placeholder translation fallback * refactor: simplify DateFilter with dayjs * fix(ui): Add FilterTypes enum to avoid type casting * fix(i18n): add missing translation keys * fix(i18n): move filter translation key to free exemptions * fix(i18n): Replace dagName translation with dag ID * fix(i18n): simplify filter translations with fallbacks * fix: modify reset button translation key --------- Co-authored-by: Brent Bovenzi <brent@astronomer.io>


Why
As mentioned in #54049 (comment), the filters take up too much screen space. To address this, this PR introduces a new, reusable "filter pill" component design for
date,number,textinput.I would appreciate any early feedback on the overall design and direction. All comments and suggestions are welcome.
What
+ Filterto select a filter type from the dropdown menu. A new filter pill appears and is automatically focused. You can also click on any existing pill to edit its value.Enterto confirm the value and apply the filter.Escor click anywhere outside the input area to cancel and exit editing mode.xicon on any pill to remove that specific filter.Resetbutton to clear all active filters at once.Screenshots
filterPill.mp4
TO-DO
NumberFilterwhere inputting a minus sign (-) causes UI bug.^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named
{pr_number}.significant.rstor{issue_number}.significant.rst, in airflow-core/newsfragments.