Skip to content

[EuiFilterGroup][EuiFilterButton] Implement redesign - #9961

Open
mgadewoll wants to merge 12 commits into
elastic:mainfrom
mgadewoll:buttongroup/filterbutton-redesign
Open

[EuiFilterGroup][EuiFilterButton] Implement redesign#9961
mgadewoll wants to merge 12 commits into
elastic:mainfrom
mgadewoll:buttongroup/filterbutton-redesign

Conversation

@mgadewoll

@mgadewoll mgadewoll commented Aug 27, 2026

Copy link
Copy Markdown
Contributor

Summary

Note

This PR is related to the updates for new button group designs and API.
This PR should merge after #9953.

  • What: Implements redesign changes for EuiFilterGroup and EuiFilterButton to fully align them with the updates done for EuiButtonGroup.
  • Why: Closes https://github.com/elastic/eui-private/issues/728.
  • How:
    • Added showDividers prop on EuiFilterGroup to optionally show/hide dividers between group children
    • Added display prop ('regular' | 'highlighted') to render different visual selection state variants
    • Updates styles for EuiFilterGroup and EuiFilterButton
    • Adds internal EuiFilterGroupContext to pass non public props to EuiFilterButton (inherited from EuiFilterGroup)
    • Additional changes:
      • Updates the disabled behavior/styling for EuiButtonGroup to ensure selected buttons keep a background color to distinguish selection

API Changes

component / parent prop / child change description
EuiFilterGroup display Added Defines the visual selection state sub-variant. Values: regular | highlighted. Defaults regular
EuiFilterGroup showDividers Added Optionally renders dividers between group children. Defaults to true.

Screenshots

Description Before After
light mode Screenshot 2026-08-27 at 10 44 03 Screenshot 2026-08-27 at 10 44 15
dark mode Screenshot 2026-08-27 at 10 44 06 Screenshot 2026-08-27 at 10 44 19
HCM Screenshot 2026-08-27 at 10 46 28 Screenshot 2026-08-27 at 11 14 52 Screenshot 2026-08-27 at 11 14 49 Screenshot 2026-08-27 at 10 46 31 Screenshot 2026-08-27 at 11 13 26 Screenshot 2026-08-27 at 11 13 30
mobile Screenshot 2026-08-27 at 10 47 25 Screenshot 2026-08-27 at 10 47 11
isSelected Screenshot 2026-08-27 at 10 48 19 Screenshot 2026-08-27 at 10 48 26 Screenshot 2026-08-27 at 11 18 21
display="highlighted" Screenshot 2026-08-27 at 10 57 24 Screenshot 2026-08-27 at 11 16 17
showDividers={false} Screenshot 2026-08-27 at 10 55 42 Screenshot 2026-08-27 at 10 58 17 Screenshot 2026-08-27 at 11 17 06

EuiButtonGroup disabled changes

before after
Screenshot 2026-09-02 at 11 01 11 Screenshot 2026-09-02 at 11 17 55

Impact Assessment

Note: Most PRs should be tested in Kibana to help gauge their Impact before merging.

  • 🔴 Breaking changes — What will break? How many usages in Kibana/Cloud UI are impacted?
  • 💅 Visual changes — May impact style overrides; could require visual testing. Explain and estimate impact.
  • 🧪 Test impact — May break functional or snapshot tests (e.g., HTML structure, class names, default values).
  • 🔧 Hard to integrate — If changes require substantial updates to Kibana, please stage the changes and link them here.

Impact level: 🟢 Low

🧪 The changes have been run in Kibana CI (🟢 build)
Required Kibana changes: commits added here.

Release Readiness

  • Documentation: eui docs
  • Figma: ideation specs
  • Migration guide: {steps or link, for breaking/visual changes or deprecations}
  • Adoption plan (new features): {link to issue/doc or outline who will integrate this and where}

QA instructions for reviewer

💻 EuiFilterGroup Storybook
💻 EuiFilterButton Storybook

  • verify EuiFilterGroup and EuiFilterButton styles are aligned with the button group redesign specs
  • verify display="highlighted" switches correctly to dark grey toggle state
  • verify showDividers correctly toggles show/hide dividers
  • verify there is no functional regression with production
  • verify the responsive behavior has no regression
  • verify the docs updates are clear and correct

Checklist before marking Ready for Review

Reviewer checklist

  • Approved Impact Assessment — Acceptable to merge given the consumer impact.
  • Approved Release Readiness — Docs, Figma, and migration info are sufficient to ship.

@mgadewoll mgadewoll self-assigned this Aug 27, 2026
@github-actions

Copy link
Copy Markdown

👋 Since this is a community submitted pull request, a Buildkite build has not been started automatically. Would an Elastic organization member please verify the contents of this pull request and kick off a build manually?

@github-actions github-actions Bot added the community contribution (Don't delete - used for automation) label Aug 27, 2026
@mgadewoll mgadewoll removed the community contribution (Don't delete - used for automation) label Aug 27, 2026
@mgadewoll
mgadewoll force-pushed the buttongroup/filterbutton-redesign branch from 3c384f4 to 7573287 Compare August 27, 2026 09:27
@elastic-vault-github-plugin-prod

Copy link
Copy Markdown

📷 46 visual difference(s) found

Look at the visual diff below. If everything is expected, run Approve visual changes to update baselines, re-run the job or make appropriate fixes.

See the visual regression testing wiki for more information.

Expand to review

euifilterbutton (8 differences)

StoryDiff %BeforeAfterDiff
full width and grow desktop 4.54%
full width and grow mobile n/a
high contrast desktop 4.59%
high contrast mobile n/a
multiple buttons desktop n/a
multiple buttons mobile n/a
playground desktop n/a
playground mobile 2.33%

euifiltergroup (6 differences)

StoryDiff %BeforeAfterDiff
multiple popovers desktop n/a
multiple popovers mobile n/a
playground desktop n/a
playground mobile 3.96%
with popover desktop n/a
with popover mobile 3.62%

euiform (2 differences)

StoryDiff %BeforeAfterDiff
append prepend api kitchen sink desktop 0.02%
append prepend api kitchen sink mobile 0.05%

euisearchbar (4 differences)

StoryDiff %BeforeAfterDiff
playground desktop 3.10%
playground mobile n/a
playground desktop n/a
playground mobile n/a

euisuperdatepicker (6 differences)

StoryDiff %BeforeAfterDiff
time window buttons compressed desktop 0.68%
time window buttons compressed mobile 2.66%
time window buttons desktop 0.73%
time window buttons mobile 2.84%
time window buttons with zoom in desktop 1.06%
time window buttons with zoom in mobile 4.21%

euibuttongroup (14 differences)

StoryDiff %BeforeAfterDiff
disabled with tooltips desktop 0.36%
disabled with tooltips mobile 1.42%
high contrast desktop n/a
high contrast mobile n/a
icon only desktop 21.24%
icon only mobile 21.24%
kitchen sink desktop 0.89%
kitchen sink mobile 3.02%
multi selection desktop n/a
multi selection mobile n/a
single selection desktop n/a
single selection mobile n/a
with tooltips desktop 0.35%
with tooltips mobile 1.39%

euidatagrid (4 differences)

StoryDiff %BeforeAfterDiff
column sorting desktop 0.23%
column sorting mobile 1.14%
display selector desktop 0.37%
display selector mobile 1.23%

euiinmemorytable (2 differences)

StoryDiff %BeforeAfterDiff
kitchen sink desktop 0.25%
kitchen sink mobile 0.08%

@mgadewoll
mgadewoll force-pushed the buttongroup/filterbutton-redesign branch from 7c9e37c to 90208fc Compare September 1, 2026 08:27
@elastic-vault-github-plugin-prod

Copy link
Copy Markdown

📷 22 visual difference(s) found

Look at the visual diff below. If everything is expected, run Approve visual changes to update baselines, re-run the job or make appropriate fixes.

See the visual regression testing wiki for more information.

Expand to review

euifilterbutton (8 differences)

StoryDiff %BeforeAfterDiff
full width and grow desktop 3.84%
high contrast desktop 3.91%
multiple buttons desktop n/a
playground desktop n/a
full width and grow mobile n/a
high contrast mobile n/a
multiple buttons mobile n/a
playground mobile 2.33%

euifiltergroup (6 differences)

StoryDiff %BeforeAfterDiff
multiple popovers desktop n/a
playground desktop n/a
with popover desktop n/a
multiple popovers mobile n/a
playground mobile 6.55%
with popover mobile 3.62%

euiform (2 differences)

StoryDiff %BeforeAfterDiff
append prepend api kitchen sink desktop 0.02%
append prepend api kitchen sink mobile 0.05%

euiinmemorytable (2 differences)

StoryDiff %BeforeAfterDiff
kitchen sink desktop 0.26%
kitchen sink mobile 0.09%

euisearchbar (4 differences)

StoryDiff %BeforeAfterDiff
playground desktop 3.99%
playground desktop n/a
playground mobile n/a
playground mobile n/a

@mgadewoll
mgadewoll force-pushed the buttongroup/filterbutton-redesign branch from 4326c2b to da5d11b Compare September 1, 2026 09:14
@elastic-vault-github-plugin-prod

Copy link
Copy Markdown

📷 20 visual difference(s) found

Look at the visual diff below. If everything is expected, run Approve visual changes to update baselines, re-run the job or make appropriate fixes.

See the visual regression testing wiki for more information.

Expand to review

euifilterbutton (8 differences)

StoryDiff %BeforeAfterDiff
full width and grow desktop 3.84%
high contrast desktop 3.91%
multiple buttons desktop n/a
playground desktop n/a
full width and grow mobile n/a
high contrast mobile n/a
multiple buttons mobile n/a
playground mobile 2.33%

euifiltergroup (6 differences)

StoryDiff %BeforeAfterDiff
multiple popovers desktop n/a
playground desktop n/a
with popover desktop n/a
multiple popovers mobile n/a
playground mobile 6.55%
with popover mobile 3.62%

euiinmemorytable (2 differences)

StoryDiff %BeforeAfterDiff
kitchen sink desktop 0.26%
kitchen sink mobile 0.09%

euisearchbar (4 differences)

StoryDiff %BeforeAfterDiff
playground desktop 3.99%
playground desktop n/a
playground mobile n/a
playground mobile n/a

@mgadewoll

Copy link
Copy Markdown
Contributor Author

buildkite test this

@elastic-vault-github-plugin-prod

Copy link
Copy Markdown

📷 20 visual difference(s) found

Look at the visual diff below. If everything is expected, run Approve visual changes to update baselines, re-run the job or make appropriate fixes.

See the visual regression testing wiki for more information.

Expand to review

euifilterbutton (8 differences)

StoryDiff %BeforeAfterDiff
full width and grow desktop 3.84%
high contrast desktop 3.91%
multiple buttons desktop n/a
playground desktop n/a
full width and grow mobile n/a
high contrast mobile n/a
multiple buttons mobile n/a
playground mobile 2.33%

euifiltergroup (6 differences)

StoryDiff %BeforeAfterDiff
multiple popovers desktop n/a
playground desktop n/a
with popover desktop n/a
multiple popovers mobile n/a
playground mobile 6.55%
with popover mobile 3.62%

euiinmemorytable (2 differences)

StoryDiff %BeforeAfterDiff
kitchen sink desktop 0.26%
kitchen sink mobile 0.09%

euisearchbar (4 differences)

StoryDiff %BeforeAfterDiff
playground desktop 3.99%
playground desktop n/a
playground mobile n/a
playground mobile n/a

@mgadewoll

Copy link
Copy Markdown
Contributor Author

buildkite test this

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

There are at least two concrete issues to address (a TypeScript-typing problem in the story and a likely unintended divider border color inconsistency in the new styles).

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Pull request overview

Implements the redesign and updated API for EuiFilterGroup/EuiFilterButton, aligning their visuals and behavior with the recent EuiButtonGroup redesign work (incl. new selection display variants and optional dividers).

Changes:

  • Added display and showDividers props to EuiFilterGroup, plus an internal context to pass inherited styling state to EuiFilterButton.
  • Updated EuiFilterButton implementation/styling (notably toggle rendering) and adjusted related snapshots.
  • Updated docs and changelog entries to reflect the new API and visuals.
File summaries
File Description
packages/website/docs/components/navigation/buttons/filter-group.mdx Updates docs copy + example to include display/showDividers usage.
packages/eui/src/components/search_bar/filters/snapshots/is_filter.test.tsx.snap Snapshot updates for filter button markup/classes.
packages/eui/src/components/search_bar/filters/snapshots/field_value_toggle_group_filter.test.tsx.snap Snapshot updates for toggle group filter rendering.
packages/eui/src/components/search_bar/filters/snapshots/field_value_toggle_filter.test.tsx.snap Snapshot updates for toggle filter rendering.
packages/eui/src/components/search_bar/snapshots/search_filters.test.tsx.snap Snapshot updates reflecting new data-* attributes + wrapper classes.
packages/eui/src/components/search_bar/snapshots/search_bar.test.tsx.snap Snapshot updates reflecting new data-* attributes + wrapper classes.
packages/eui/src/components/form/form_control_layout/form_control_layout.styles.ts Removes wrapper padding for filter buttons within form control side nodes.
packages/eui/src/components/filter_group/filter_group.tsx Adds display/showDividers, provides internal context, and sets data-* attributes.
packages/eui/src/components/filter_group/filter_group.styles.ts Adds divider gap + display-based CSS var; updates radius handling.
packages/eui/src/components/filter_group/filter_group.stories.tsx Updates Storybook to exercise new props and toggle behavior.
packages/eui/src/components/filter_group/filter_group_context.tsx New internal context for propagating group-only state to buttons.
packages/eui/src/components/filter_group/filter_button.tsx Updates toggle rendering to use EuiButton and consumes group context.
packages/eui/src/components/filter_group/filter_button.styles.ts Significant styling changes: inset sizing, dividers, compressed handling.
packages/eui/src/components/filter_group/snapshots/filter_group.test.tsx.snap Snapshot updates for new data-* attributes.
packages/eui/src/components/filter_group/snapshots/filter_button.test.tsx.snap Snapshot updates for wrapper/button class changes.
packages/eui/changelogs/upcoming/9961.md Adds changelog entry for FilterGroup/FilterButton redesign + new props.
packages/eui/changelogs/upcoming/9953.md Removes now-superseded FilterGroup/FilterButton note from prior PR entry.
Review details
  • Files reviewed: 17/37 changed files
  • Comments generated: 2
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread packages/eui/src/components/filter_group/filter_group.stories.tsx Outdated
Comment thread packages/eui/src/components/filter_group/filter_button.styles.ts Outdated
@mgadewoll
mgadewoll marked this pull request as ready for review September 1, 2026 11:28
@mgadewoll
mgadewoll requested a review from a team as a code owner September 1, 2026 11:28
@mgadewoll
mgadewoll requested a review from JoseLuisGJ September 1, 2026 11:28
@elastic-vault-github-plugin-prod

Copy link
Copy Markdown

📷 4 visual difference(s) found

Look at the visual diff below. If everything is expected, run Approve visual changes to update baselines, re-run the job or make appropriate fixes.

See the visual regression testing wiki for more information.

Expand to review

euidatagrid (4 differences)

StoryDiff %BeforeAfterDiff
column sorting desktop 0.16%
display selector desktop 0.27%
column sorting mobile 0.25%
display selector mobile 0.91%

@mgadewoll
mgadewoll force-pushed the buttongroup/filterbutton-redesign branch from 089fa40 to 3be7f79 Compare September 2, 2026 09:18
*:where(.euiButton, .euiButtonIcon):is([aria-pressed='true']) {
background-color: ${euiTheme.colors.backgroundLightText};
*:where(.euiButton, .euiButtonIcon) {
&:where(:is([aria-pressed='true']):not(${euiDisabledSelector})) {

@mgadewoll mgadewoll Sep 2, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ℹ️ I realized that the disabled state for EuiButtonGroup wasn't quite right for selected buttons, as the selected background color was not correct and in some places removed.
I figured we can just add it onto this PR as it's somewhat related 😅

before after
Screenshot 2026-09-02 at 11 01 11 Screenshot 2026-09-02 at 11 17 55

@elastic-vault-github-plugin-prod

Copy link
Copy Markdown

📷 4 visual difference(s) found

Look at the visual diff below. If everything is expected, run Approve visual changes to update baselines, re-run the job or make appropriate fixes.

See the visual regression testing wiki for more information.

Expand to review

euidatagrid (4 differences)

StoryDiff %BeforeAfterDiff
column sorting desktop 0.16%
display selector desktop 0.27%
column sorting mobile 0.25%
display selector mobile 0.91%

@mgadewoll
mgadewoll force-pushed the buttongroup/filterbutton-redesign branch from 3be7f79 to f6ba0b5 Compare September 2, 2026 09:51
@elastic-vault-github-plugin-prod

Copy link
Copy Markdown

📷 4 visual difference(s) found

Look at the visual diff below. If everything is expected, run Approve visual changes to update baselines, re-run the job or make appropriate fixes.

See the visual regression testing wiki for more information.

Expand to review

euidatagrid (4 differences)

StoryDiff %BeforeAfterDiff
column sorting desktop 0.16%
display selector desktop 0.27%
column sorting mobile 0.25%
display selector mobile 0.91%

@mgadewoll

Copy link
Copy Markdown
Contributor Author

buildkite test this

@elastic-vault-github-plugin-prod

Copy link
Copy Markdown

📷 4 visual difference(s) found

Look at the visual diff below. If everything is expected, run Approve visual changes to update baselines, re-run the job or make appropriate fixes.

See the visual regression testing wiki for more information.

Expand to review

euidatagrid (4 differences)

StoryDiff %BeforeAfterDiff
column sorting desktop 0.16%
display selector desktop 0.27%
column sorting mobile 0.25%
display selector mobile 0.91%

@mgadewoll
mgadewoll force-pushed the buttongroup/filterbutton-redesign branch from f6ba0b5 to d3cb170 Compare September 2, 2026 10:34
Comment thread packages/eui/src/components/filter_group/filter_group.styles.ts Outdated
Comment thread packages/eui/src/components/filter_group/filter_button.tsx
Comment thread packages/eui/changelogs/upcoming/9961.md

@weronikaolejniczak weronikaolejniczak left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 🟢 Thanks for the change, Lene!

@infra-vault-gh-plugin-prod

Copy link
Copy Markdown

💚 Build Succeeded

History

cc @mgadewoll

@infra-vault-gh-plugin-prod

Copy link
Copy Markdown

💚 Build Succeeded

History

cc @mgadewoll

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants