Skip to content

[EuiContextMenuItem] Add hasAriaDisabled prop type - #9870

Merged
mgadewoll merged 3 commits into
elastic:mainfrom
brunofarache:context-menu-item-has-aria-disabled
Aug 6, 2026
Merged

[EuiContextMenuItem] Add hasAriaDisabled prop type#9870
mgadewoll merged 3 commits into
elastic:mainfrom
brunofarache:context-menu-item-has-aria-disabled

Conversation

@brunofarache

@brunofarache brunofarache commented Aug 5, 2026

Copy link
Copy Markdown
Member

Summary

  • What: Declares the hasAriaDisabled prop on EuiContextMenuItemProps and forwards it explicitly to EuiListItemLayout. Also adds the missing focusEuiToolTipTrigger declaration to the published test-util types.

  • Why: hasAriaDisabled (#9214) already worked on EuiContextMenuItem at runtime — it fell through ...rest into EuiListItemLayout, which declares the prop, performs the disabledaria-disabled swap via useEuiDisabledElement, ships a dedicated disabled style, and keeps the item focusable so a toolTipContent explaining why it's disabled stays reachable. Only the prop type was missing, so TS consumers have to widen the props themselves.

    This came out of elastic/kibana#281982 ([Agent Builder] Return conversation permissions for rename and delete), which disables the Rename / Delete context menu items when the user lacks permission and attaches a toolTipContent explaining why. A natively disabled item is removed from the tab order and dispatches no mouse events, so that explanation is unreachable by both mouse and keyboard — exactly what hasAriaDisabled exists to solve. Because the prop is undeclared, that PR carries two workarounds it can delete once this ships:

    • const AriaDisabledContextMenuItem: React.FC<EuiContextMenuItemProps & EuiDisabledProps> = EuiContextMenuItem; — duplicated in conversation_title.tsx and conversation_list_item_row.tsx.
    • A hand-copied focusEuiToolTipTrigger in the two sibling test files, because the published declarations don't export EUI's own.
  • How:

    • EuiContextMenuItemProps now extends Pick<EuiDisabledProps, 'hasAriaDisabled'> rather than the full EuiDisabledProps: the full type also carries isDisabled, and this component's disabled prop is named disabled — extending fully would add a second, dead disabled prop.
    • The prop is destructured and passed to EuiListItemLayout explicitly instead of relying on ...rest, which was accidental and would silently break if rest were ever allow-listed.
    • src/test/rtl/component_helpers.d.ts is hand-written and is the source the build uses for the published lib/test/rtl types (see scripts/compile-eui.js), so focusEuiToolTipTrigger (added in #9201) existed at runtime but not in the published declarations — external consumers got TS2305 importing focusEuiToolTipTrigger from @elastic/eui/lib/test/rtl. Kibana currently inlines a copy of the helper in two test files because of this.

API Changes

component / parent prop / child change description
EuiContextMenuItem hasAriaDisabled Added Beta. Swaps the native disabled attribute for aria-disabled so a disabled item stays focusable and its toolTipContent stays reachable. Runtime behavior was already supported; this only adds the type.
@elastic/eui/lib/test/rtl focusEuiToolTipTrigger Added Missing type declaration for an already-exported test helper

Screenshots

No visual change. The disabled-with-tooltip rendering is unchanged from what EuiListItemLayout already produced for consumers passing the prop through untyped.

Impact Assessment

  • 🔴 Breaking changes
  • 💅 Visual changes
  • 🧪 Test impact
  • 🔧 Hard to integrate

Impact level: 🟢 None — purely additive types plus an explicit prop forward; no rendered output changes for existing usages.

Release Readiness

  • Documentation: props table is generated from the type, so the beta JSDoc on EuiDisabledProps['hasAriaDisabled'] carries over. The general guidance already lives on the Tooltip / Disabled elements page.
  • Figma
  • Migration guide
  • Adoption plan: elastic/kibana#281982 (agent_builder) is the driving consumer — it deletes the two AriaDisabledContextMenuItem local aliases and the two inlined focusEuiToolTipTrigger copies once this ships.

QA instructions for reviewer

  • Open Storybook → Navigation/EuiContextMenu/EuiContextMenuItem → Playground.
  • Set disabled: true, hasAriaDisabled: true and fill in toolTipContent.
  • Confirm the item renders aria-disabled="true" and no disabled attribute.
  • Confirm the tooltip shows on hover and on keyboard focus (Tab to the item).
  • Confirm the item does not activate on click or Enter.
  • With hasAriaDisabled: false, confirm the item is natively disabled as before.

Checklist before marking Ready for Review

  • Filled out all sections above
  • QA: keyboard-only verified via unit tests (focus reaches the item, tooltip opens); no visual change to test across themes
  • QA: Tested in CodeSandbox and Kibana
  • QA: Tested docs changes
  • Tests: Added Jest coverage (describe('hasAriaDisabled') in context_menu_item.test.tsx) — verified they fail without the prop forward
  • Changelog: Added
  • Breaking changes

The prop already worked at runtime by falling through `...rest` into
EuiListItemLayout, but it was not declared on `EuiContextMenuItemProps`,
so TS consumers had to widen the props themselves. Declare it and
forward it explicitly instead of relying on `...rest`.

Also adds the missing `simulateFocusVisible` and `focusEuiToolTipTrigger`
declarations to the hand-written `src/test/rtl/component_helpers.d.ts`,
which is the source of the published test-util types.
@brunofarache
brunofarache marked this pull request as ready for review August 5, 2026 17:04
@brunofarache
brunofarache requested a review from a team as a code owner August 5, 2026 17:04
@brunofarache

Copy link
Copy Markdown
Member Author

@mgadewoll would you mind taking a look? You worked on hasAriaDisabled in #9214 / #9201, so this is squarely your area — it just adds the missing prop type to EuiContextMenuItem and the missing focusEuiToolTipTrigger declaration.

(I don't have permission to add reviewers on this repo, hence the mention.)

brunofarache added a commit to brunofarache/kibana that referenced this pull request Aug 5, 2026
Both workarounds for EUI 118 typing gaps — the local
`AriaDisabledContextMenuItem` aliases and the inlined
`focusEuiToolTipTrigger` test helpers — are covered by
elastic/eui#9870, so name it as the removal
trigger in all four comments.
@elastic-vault-github-plugin-prod

Copy link
Copy Markdown
1 visual difference(s) found - expand to review, then click Approve visual changes to update baselines

euidatagrid (1 difference)

StoryBeforeAfterDiff
compact desktop

@mgadewoll mgadewoll 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 are LGTM. The added behavior works as expected.
Thanks for the update! It's nice to see that hasAriaDisabled is getting more traction beyond the initial set of supported components 🎉

@mgadewoll

Copy link
Copy Markdown
Contributor

buildkite test this

@infra-vault-gh-plugin-prod

Copy link
Copy Markdown

💚 Build Succeeded

History

@infra-vault-gh-plugin-prod

Copy link
Copy Markdown

💚 Build Succeeded

History

@mgadewoll
mgadewoll merged commit e9749da into elastic:main Aug 6, 2026
8 checks passed
acstll added a commit to elastic/kibana that referenced this pull request Aug 13, 2026
## Dependency updates

`@elastic/eui` - 118.0.0 ⏩ 119.0.0
`@elastic/eslint-plugin-eui` - 2.15.0 ⏩ 2.16.0
`@elastic/eui-test-helpers` - 1.2.0 ⏩ 1.3.0

## Changes

- Added 3 new `EuiFlyoutMenu` i18n tokens
(`euiFlyoutMenu.history.tooltip`, `euiFlyoutMenu.pagination.first`,
`euiFlyoutMenu.pagination.last`) to `i18n_eui_mapping.tsx` and all
translation files
- Replaced removed `plusInCircle` icon alias with `plusCircle` in the ML
plugin (data frame analytics, anomaly detection jobs, and trained models
menus)

## Package updates

### `@elastic/eslint-plugin-eui`
[v2.16.0](https://github.com/elastic/eui/blob/main/packages/eslint-plugin/changelogs/CHANGELOG_2026.md)

- Added new `@elastic/eui/no-nested-copy-tooltip` rule to improve
`EuiCopy` usage ([#9852](elastic/eui#9852))
- Updated `@elastic/eui/tooltip-button-icon-wrap` with an exception for
`EuiCopy` usage covered by `@elastic/eui/no-nested-copy-tooltip`
([#9852](elastic/eui#9852))
- Added `button-group-no-invalid-children` rule
([#9849](elastic/eui#9849))
- Added `no-deprecated-icon-aliases` rule
([#9815](elastic/eui#9815))

### `@elastic/eui`
[v119.0.0](https://github.com/elastic/eui/blob/main/packages/eui/changelogs/CHANGELOG_2026.md)

- Bundled icon glyph files into `dist/svgs/` and added
`dist/eui-icons.json` manifest (mapping icon filename stems to SVG
content strings) ([#9873](elastic/eui#9873))
- Added `hasAriaDisabled` prop to `EuiContextMenuItem`
([#9870](elastic/eui#9870))
- Updated `EuiButtonGroup`:
([#9845](elastic/eui#9845))
- Added new render API via `children` prop that allows passing button
components as children
  - Added `variant` prop (usable only with `children` prop)
- Added `gutterSize` prop (usable only with `children` and
`variant="default"` prop)
- Updated `EuiButton`, `EuiButtonEmpty` and `EuiButtonIcon` to consume a
`EuiButtonContext` allowing the group to control common props
([#9845](elastic/eui#9845))
- Updated `EuiFlyoutMenu`:
([#9856](elastic/eui#9856))
- Added `leadingActions` and `trailingActions` props, which accept the
new `EuiFlyoutMenuAction` type supporting `toolTipContent` and
`toolTipProps`
  - Changed the history trigger icon to `clockCounter`
  - Added control-group dividers between built-in controls
- Added `onFirst`, `onLast` to `pagination`, which render optional
buttons for jumping to the beginning and end of the list.
- Deprecated additional `EuiIcon` types that are not represented in
Figma ([#9815](elastic/eui#9815))

**Bug fixes**

- Fixed the missing type declaration for the `focusEuiToolTipTrigger`
test helper ([#9870](elastic/eui#9870))
- Fixed generated icon IDs to remain stable during server-side rendering
([#9866](elastic/eui#9866))
- Fixed a visual bug in `EuiButtonGroup` that rendered duplicate borders
on disabled buttons ([#9845](elastic/eui#9845))
- The `EuiFlyoutMenu` history popover now only appears when
`historyItems` has more than one entry. When there is a single entry in
history, only the Back button is shown.
([#9856](elastic/eui#9856))
- Fixed `EuiFlyoutMenu` pagination controls disappearing when
`pagination.total` is `1`; the controls now render (as "1 of 1" with
both Prev/Next disabled) for any `total` of at least `1`
([#9856](elastic/eui#9856))

**Deprecations**

- Deprecated `customActions` and `EuiFlyoutMenuCustomAction` in
`EuiFlyoutMenu`; use `trailingActions` and `EuiFlyoutMenuAction` instead
([#9856](elastic/eui#9856))

**Breaking changes**

- Removed most deprecated `EuiIcon` types and their icon assets. 16
widely-used deprecated aliases (e.g. `alert`, `search`, `visPie`) remain
temporarily and will be removed in a future release
([#9832](elastic/eui#9832))
([#9815](elastic/eui#9815))

### `@elastic/eui-test-helpers`
[v1.3.0](https://github.com/elastic/eui/blob/main/packages/test-helpers/changelogs/CHANGELOG_2026.md)

- Added `EuiDataGridObject` with `rows`, `cell()`, `cells()`,
`doActionOnColumn()` and `openFullScreenMode()`/`closeFullScreenMode()`
([#9874](elastic/eui#9874))
- Added `EuiSuperSelectObject` with `selectOptionByValue()`,
`selectOptionByLabel()` and `getSelectedValue()`
([#9874](elastic/eui#9874))
- Added `EuiGlobalToastListObject` with a `toasts` locator and
`closeAll()` ([#9874](elastic/eui#9874))

---------

Co-authored-by: Lene Gadewoll <lene.gadewoll@elastic.co>
Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
qn895 pushed a commit to qn895/kibana that referenced this pull request Aug 13, 2026
## Dependency updates

`@elastic/eui` - 118.0.0 ⏩ 119.0.0
`@elastic/eslint-plugin-eui` - 2.15.0 ⏩ 2.16.0
`@elastic/eui-test-helpers` - 1.2.0 ⏩ 1.3.0

## Changes

- Added 3 new `EuiFlyoutMenu` i18n tokens
(`euiFlyoutMenu.history.tooltip`, `euiFlyoutMenu.pagination.first`,
`euiFlyoutMenu.pagination.last`) to `i18n_eui_mapping.tsx` and all
translation files
- Replaced removed `plusInCircle` icon alias with `plusCircle` in the ML
plugin (data frame analytics, anomaly detection jobs, and trained models
menus)

## Package updates

### `@elastic/eslint-plugin-eui`
[v2.16.0](https://github.com/elastic/eui/blob/main/packages/eslint-plugin/changelogs/CHANGELOG_2026.md)

- Added new `@elastic/eui/no-nested-copy-tooltip` rule to improve
`EuiCopy` usage ([elastic#9852](elastic/eui#9852))
- Updated `@elastic/eui/tooltip-button-icon-wrap` with an exception for
`EuiCopy` usage covered by `@elastic/eui/no-nested-copy-tooltip`
([elastic#9852](elastic/eui#9852))
- Added `button-group-no-invalid-children` rule
([elastic#9849](elastic/eui#9849))
- Added `no-deprecated-icon-aliases` rule
([elastic#9815](elastic/eui#9815))

### `@elastic/eui`
[v119.0.0](https://github.com/elastic/eui/blob/main/packages/eui/changelogs/CHANGELOG_2026.md)

- Bundled icon glyph files into `dist/svgs/` and added
`dist/eui-icons.json` manifest (mapping icon filename stems to SVG
content strings) ([elastic#9873](elastic/eui#9873))
- Added `hasAriaDisabled` prop to `EuiContextMenuItem`
([elastic#9870](elastic/eui#9870))
- Updated `EuiButtonGroup`:
([elastic#9845](elastic/eui#9845))
- Added new render API via `children` prop that allows passing button
components as children
  - Added `variant` prop (usable only with `children` prop)
- Added `gutterSize` prop (usable only with `children` and
`variant="default"` prop)
- Updated `EuiButton`, `EuiButtonEmpty` and `EuiButtonIcon` to consume a
`EuiButtonContext` allowing the group to control common props
([elastic#9845](elastic/eui#9845))
- Updated `EuiFlyoutMenu`:
([elastic#9856](elastic/eui#9856))
- Added `leadingActions` and `trailingActions` props, which accept the
new `EuiFlyoutMenuAction` type supporting `toolTipContent` and
`toolTipProps`
  - Changed the history trigger icon to `clockCounter`
  - Added control-group dividers between built-in controls
- Added `onFirst`, `onLast` to `pagination`, which render optional
buttons for jumping to the beginning and end of the list.
- Deprecated additional `EuiIcon` types that are not represented in
Figma ([elastic#9815](elastic/eui#9815))

**Bug fixes**

- Fixed the missing type declaration for the `focusEuiToolTipTrigger`
test helper ([elastic#9870](elastic/eui#9870))
- Fixed generated icon IDs to remain stable during server-side rendering
([elastic#9866](elastic/eui#9866))
- Fixed a visual bug in `EuiButtonGroup` that rendered duplicate borders
on disabled buttons ([elastic#9845](elastic/eui#9845))
- The `EuiFlyoutMenu` history popover now only appears when
`historyItems` has more than one entry. When there is a single entry in
history, only the Back button is shown.
([elastic#9856](elastic/eui#9856))
- Fixed `EuiFlyoutMenu` pagination controls disappearing when
`pagination.total` is `1`; the controls now render (as "1 of 1" with
both Prev/Next disabled) for any `total` of at least `1`
([elastic#9856](elastic/eui#9856))

**Deprecations**

- Deprecated `customActions` and `EuiFlyoutMenuCustomAction` in
`EuiFlyoutMenu`; use `trailingActions` and `EuiFlyoutMenuAction` instead
([elastic#9856](elastic/eui#9856))

**Breaking changes**

- Removed most deprecated `EuiIcon` types and their icon assets. 16
widely-used deprecated aliases (e.g. `alert`, `search`, `visPie`) remain
temporarily and will be removed in a future release
([elastic#9832](elastic/eui#9832))
([elastic#9815](elastic/eui#9815))

### `@elastic/eui-test-helpers`
[v1.3.0](https://github.com/elastic/eui/blob/main/packages/test-helpers/changelogs/CHANGELOG_2026.md)

- Added `EuiDataGridObject` with `rows`, `cell()`, `cells()`,
`doActionOnColumn()` and `openFullScreenMode()`/`closeFullScreenMode()`
([elastic#9874](elastic/eui#9874))
- Added `EuiSuperSelectObject` with `selectOptionByValue()`,
`selectOptionByLabel()` and `getSelectedValue()`
([elastic#9874](elastic/eui#9874))
- Added `EuiGlobalToastListObject` with a `toasts` locator and
`closeAll()` ([elastic#9874](elastic/eui#9874))

---------

Co-authored-by: Lene Gadewoll <lene.gadewoll@elastic.co>
Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
patrykkopycinski pushed a commit to patrykkopycinski/kibana that referenced this pull request Aug 18, 2026
## Dependency updates

`@elastic/eui` - 118.0.0 ⏩ 119.0.0
`@elastic/eslint-plugin-eui` - 2.15.0 ⏩ 2.16.0
`@elastic/eui-test-helpers` - 1.2.0 ⏩ 1.3.0

## Changes

- Added 3 new `EuiFlyoutMenu` i18n tokens
(`euiFlyoutMenu.history.tooltip`, `euiFlyoutMenu.pagination.first`,
`euiFlyoutMenu.pagination.last`) to `i18n_eui_mapping.tsx` and all
translation files
- Replaced removed `plusInCircle` icon alias with `plusCircle` in the ML
plugin (data frame analytics, anomaly detection jobs, and trained models
menus)

## Package updates

### `@elastic/eslint-plugin-eui`
[v2.16.0](https://github.com/elastic/eui/blob/main/packages/eslint-plugin/changelogs/CHANGELOG_2026.md)

- Added new `@elastic/eui/no-nested-copy-tooltip` rule to improve
`EuiCopy` usage ([elastic#9852](elastic/eui#9852))
- Updated `@elastic/eui/tooltip-button-icon-wrap` with an exception for
`EuiCopy` usage covered by `@elastic/eui/no-nested-copy-tooltip`
([elastic#9852](elastic/eui#9852))
- Added `button-group-no-invalid-children` rule
([elastic#9849](elastic/eui#9849))
- Added `no-deprecated-icon-aliases` rule
([elastic#9815](elastic/eui#9815))

### `@elastic/eui`
[v119.0.0](https://github.com/elastic/eui/blob/main/packages/eui/changelogs/CHANGELOG_2026.md)

- Bundled icon glyph files into `dist/svgs/` and added
`dist/eui-icons.json` manifest (mapping icon filename stems to SVG
content strings) ([elastic#9873](elastic/eui#9873))
- Added `hasAriaDisabled` prop to `EuiContextMenuItem`
([elastic#9870](elastic/eui#9870))
- Updated `EuiButtonGroup`:
([elastic#9845](elastic/eui#9845))
- Added new render API via `children` prop that allows passing button
components as children
  - Added `variant` prop (usable only with `children` prop)
- Added `gutterSize` prop (usable only with `children` and
`variant="default"` prop)
- Updated `EuiButton`, `EuiButtonEmpty` and `EuiButtonIcon` to consume a
`EuiButtonContext` allowing the group to control common props
([elastic#9845](elastic/eui#9845))
- Updated `EuiFlyoutMenu`:
([elastic#9856](elastic/eui#9856))
- Added `leadingActions` and `trailingActions` props, which accept the
new `EuiFlyoutMenuAction` type supporting `toolTipContent` and
`toolTipProps`
  - Changed the history trigger icon to `clockCounter`
  - Added control-group dividers between built-in controls
- Added `onFirst`, `onLast` to `pagination`, which render optional
buttons for jumping to the beginning and end of the list.
- Deprecated additional `EuiIcon` types that are not represented in
Figma ([elastic#9815](elastic/eui#9815))

**Bug fixes**

- Fixed the missing type declaration for the `focusEuiToolTipTrigger`
test helper ([elastic#9870](elastic/eui#9870))
- Fixed generated icon IDs to remain stable during server-side rendering
([elastic#9866](elastic/eui#9866))
- Fixed a visual bug in `EuiButtonGroup` that rendered duplicate borders
on disabled buttons ([elastic#9845](elastic/eui#9845))
- The `EuiFlyoutMenu` history popover now only appears when
`historyItems` has more than one entry. When there is a single entry in
history, only the Back button is shown.
([elastic#9856](elastic/eui#9856))
- Fixed `EuiFlyoutMenu` pagination controls disappearing when
`pagination.total` is `1`; the controls now render (as "1 of 1" with
both Prev/Next disabled) for any `total` of at least `1`
([elastic#9856](elastic/eui#9856))

**Deprecations**

- Deprecated `customActions` and `EuiFlyoutMenuCustomAction` in
`EuiFlyoutMenu`; use `trailingActions` and `EuiFlyoutMenuAction` instead
([elastic#9856](elastic/eui#9856))

**Breaking changes**

- Removed most deprecated `EuiIcon` types and their icon assets. 16
widely-used deprecated aliases (e.g. `alert`, `search`, `visPie`) remain
temporarily and will be removed in a future release
([elastic#9832](elastic/eui#9832))
([elastic#9815](elastic/eui#9815))

### `@elastic/eui-test-helpers`
[v1.3.0](https://github.com/elastic/eui/blob/main/packages/test-helpers/changelogs/CHANGELOG_2026.md)

- Added `EuiDataGridObject` with `rows`, `cell()`, `cells()`,
`doActionOnColumn()` and `openFullScreenMode()`/`closeFullScreenMode()`
([elastic#9874](elastic/eui#9874))
- Added `EuiSuperSelectObject` with `selectOptionByValue()`,
`selectOptionByLabel()` and `getSelectedValue()`
([elastic#9874](elastic/eui#9874))
- Added `EuiGlobalToastListObject` with a `toasts` locator and
`closeAll()` ([elastic#9874](elastic/eui#9874))

---------

Co-authored-by: Lene Gadewoll <lene.gadewoll@elastic.co>
Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
patrykkopycinski pushed a commit to patrykkopycinski/kibana that referenced this pull request Aug 18, 2026
## Dependency updates

`@elastic/eui` - 118.0.0 ⏩ 119.0.0
`@elastic/eslint-plugin-eui` - 2.15.0 ⏩ 2.16.0
`@elastic/eui-test-helpers` - 1.2.0 ⏩ 1.3.0

## Changes

- Added 3 new `EuiFlyoutMenu` i18n tokens
(`euiFlyoutMenu.history.tooltip`, `euiFlyoutMenu.pagination.first`,
`euiFlyoutMenu.pagination.last`) to `i18n_eui_mapping.tsx` and all
translation files
- Replaced removed `plusInCircle` icon alias with `plusCircle` in the ML
plugin (data frame analytics, anomaly detection jobs, and trained models
menus)

## Package updates

### `@elastic/eslint-plugin-eui`
[v2.16.0](https://github.com/elastic/eui/blob/main/packages/eslint-plugin/changelogs/CHANGELOG_2026.md)

- Added new `@elastic/eui/no-nested-copy-tooltip` rule to improve
`EuiCopy` usage ([elastic#9852](elastic/eui#9852))
- Updated `@elastic/eui/tooltip-button-icon-wrap` with an exception for
`EuiCopy` usage covered by `@elastic/eui/no-nested-copy-tooltip`
([elastic#9852](elastic/eui#9852))
- Added `button-group-no-invalid-children` rule
([elastic#9849](elastic/eui#9849))
- Added `no-deprecated-icon-aliases` rule
([elastic#9815](elastic/eui#9815))

### `@elastic/eui`
[v119.0.0](https://github.com/elastic/eui/blob/main/packages/eui/changelogs/CHANGELOG_2026.md)

- Bundled icon glyph files into `dist/svgs/` and added
`dist/eui-icons.json` manifest (mapping icon filename stems to SVG
content strings) ([elastic#9873](elastic/eui#9873))
- Added `hasAriaDisabled` prop to `EuiContextMenuItem`
([elastic#9870](elastic/eui#9870))
- Updated `EuiButtonGroup`:
([elastic#9845](elastic/eui#9845))
- Added new render API via `children` prop that allows passing button
components as children
  - Added `variant` prop (usable only with `children` prop)
- Added `gutterSize` prop (usable only with `children` and
`variant="default"` prop)
- Updated `EuiButton`, `EuiButtonEmpty` and `EuiButtonIcon` to consume a
`EuiButtonContext` allowing the group to control common props
([elastic#9845](elastic/eui#9845))
- Updated `EuiFlyoutMenu`:
([elastic#9856](elastic/eui#9856))
- Added `leadingActions` and `trailingActions` props, which accept the
new `EuiFlyoutMenuAction` type supporting `toolTipContent` and
`toolTipProps`
  - Changed the history trigger icon to `clockCounter`
  - Added control-group dividers between built-in controls
- Added `onFirst`, `onLast` to `pagination`, which render optional
buttons for jumping to the beginning and end of the list.
- Deprecated additional `EuiIcon` types that are not represented in
Figma ([elastic#9815](elastic/eui#9815))

**Bug fixes**

- Fixed the missing type declaration for the `focusEuiToolTipTrigger`
test helper ([elastic#9870](elastic/eui#9870))
- Fixed generated icon IDs to remain stable during server-side rendering
([elastic#9866](elastic/eui#9866))
- Fixed a visual bug in `EuiButtonGroup` that rendered duplicate borders
on disabled buttons ([elastic#9845](elastic/eui#9845))
- The `EuiFlyoutMenu` history popover now only appears when
`historyItems` has more than one entry. When there is a single entry in
history, only the Back button is shown.
([elastic#9856](elastic/eui#9856))
- Fixed `EuiFlyoutMenu` pagination controls disappearing when
`pagination.total` is `1`; the controls now render (as "1 of 1" with
both Prev/Next disabled) for any `total` of at least `1`
([elastic#9856](elastic/eui#9856))

**Deprecations**

- Deprecated `customActions` and `EuiFlyoutMenuCustomAction` in
`EuiFlyoutMenu`; use `trailingActions` and `EuiFlyoutMenuAction` instead
([elastic#9856](elastic/eui#9856))

**Breaking changes**

- Removed most deprecated `EuiIcon` types and their icon assets. 16
widely-used deprecated aliases (e.g. `alert`, `search`, `visPie`) remain
temporarily and will be removed in a future release
([elastic#9832](elastic/eui#9832))
([elastic#9815](elastic/eui#9815))

### `@elastic/eui-test-helpers`
[v1.3.0](https://github.com/elastic/eui/blob/main/packages/test-helpers/changelogs/CHANGELOG_2026.md)

- Added `EuiDataGridObject` with `rows`, `cell()`, `cells()`,
`doActionOnColumn()` and `openFullScreenMode()`/`closeFullScreenMode()`
([elastic#9874](elastic/eui#9874))
- Added `EuiSuperSelectObject` with `selectOptionByValue()`,
`selectOptionByLabel()` and `getSelectedValue()`
([elastic#9874](elastic/eui#9874))
- Added `EuiGlobalToastListObject` with a `toasts` locator and
`closeAll()` ([elastic#9874](elastic/eui#9874))

---------

Co-authored-by: Lene Gadewoll <lene.gadewoll@elastic.co>
Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
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.

2 participants