Skip to content

Conversation

@Dosant
Copy link
Contributor

@Dosant Dosant commented Jul 16, 2025

Summary

Part of #8820, this is an attempt to address an ugly hack for for push EuiFlyout's in Kibana's new layout:

https://github.com/elastic/kibana/blob/main/src/core/packages/chrome/layout/core-chrome-layout/layouts/grid/hack_use_sync_push_flyout.tsx

Currently Kibana has to rely on MutationObserver on body.style to apply padding on application container instead of a body, but with this simple improvement where EUI exposes the variables directly we can get rid of the ugly hack.

Long-term, we should consider solving this by making the flyout relative to the specified container instead of the body. However, this quick workaround is already a great improvement.

General checklist

  • Browser QA
    • Checked in both light and dark modes
    • Checked in both MacOS and Windows high contrast modes
    • Checked in mobile
    • Checked in Chrome, Safari, Edge, and Firefox
    • Checked for accessibility including keyboard-only and screenreader modes
  • Docs site QA
  • Code quality checklist
  • Release checklist
    • A changelog entry exists and is marked appropriately.
    • If applicable, added the breaking change issue label (and filled out the breaking change checklist)
  • Designer checklist
    • If applicable, file an issue to update EUI's Figma library with any corresponding UI changes. (This is an internal repo, if you are external to Elastic, ask a maintainer to submit this request)

@Dosant Dosant marked this pull request as ready for review July 17, 2025 07:07
@Dosant Dosant requested a review from a team as a code owner July 17, 2025 07:07
@elasticmachine
Copy link
Collaborator

💚 Build Succeeded

History

@elasticmachine
Copy link
Collaborator

💚 Build Succeeded

History

@Dosant Dosant requested a review from mgadewoll July 17, 2025 12:10
Copy link
Contributor

@mgadewoll mgadewoll left a comment

Choose a reason for hiding this comment

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

🟢 Code changes LGTM and the change to provide global flyout variables works as expected.

@Dosant
Copy link
Contributor Author

Dosant commented Jul 17, 2025

@mgadewoll thank you! Could you please merge 🙏

@mgadewoll mgadewoll merged commit ba73911 into elastic:main Jul 17, 2025
5 checks passed
weronikaolejniczak added a commit to elastic/kibana that referenced this pull request Jul 23, 2025
`@elastic/eui`: `106.0.0` ⏩ `106.1.0`
`@elastic/eslint-plugin-eui`: `2.1.0` ⏩ `2.2.1`

[Questions? Please see our Kibana upgrade
FAQ.](https://github.com/elastic/eui/blob/main/wiki/eui-team-processes/upgrading-kibana.md#faq-for-kibana-teams)

New props and defaults have been added to `EuiFlyout`, including
`includeSelectorInFocusTrap`, plus new global CSS variables for push
mode offset control. Additionally, we introduced a small spacing fix for
invalid `EuiDualRange` append component and added support for custom
styles on `EuiTreeView` nodes via the css key.

:warning: **React 16 is now deprecated:** EUI no longer tests against it
or fixes issues specific to it.

## Changes

- I removed forced click in:
`x-pack/test/security_solution_cypress/cypress/tasks/rule_details.ts`
- I removed `{enter}` in:
`x-pack/test/security_solution_cypress/cypress/tasks/common/rule_actions.ts`
(see #228517)

## Package updates

### `@elastic/eui`

#### [`v106.1.0`](https://github.com/elastic/eui/releases/v106.1.0)

- Added `--euiPushFlyoutOffsetInlineStart` and
`--euiPushFlyoutOffsetInlineEnd` global CSS variables set by the
`EuiFlyout` in `push` mode.
([#8872](elastic/eui#8872))
- Reduced the `min-width` for inputs in `EuiRange` and `EuiDualRange`
([#8866](elastic/eui#8866))
- Added `includeSelectorInFocusTrap` prop for `EuiFlyout`
([#8849](elastic/eui#8849))
- Added component defaults for `EuiFlyout` that include
`includeSelectorInFocusTrap` and `includeFixedHeadersInFocusTrap`
([#8849](elastic/eui#8849))

**Bug fixes**

- Fixed flaky manual return focus behavior on `EuiFlyout` by relying on
`FocusTrap` returning focus instead
([#8878](elastic/eui#8878))
- Fixed `EuiFlyoutChild` closing its parent `EuiFlyout` on `Escape`
keypress ([#8878](elastic/eui#8878))
- Fixed support for `css` key in items object passed to `EuiTreeView`
([#8864](elastic/eui#8864))

**Deprecations**

- Deprecated support for React 16. Please update to a modern version of
React or stay on EUI version 106.0.0 if you can't switch right now.
([#8868](elastic/eui#8868))
  
### `@elastic/eslint-plugin-eui`

####
[`v2.2.1`](https://www.npmjs.com/package/@elastic/eslint-plugin-eui/v/2.2.1)

**Bug fixes**

- Removed `no-css_color` entry which mapped to a duplicate
`no-css-color` rule ([#8888](elastic/eui#8888))

####
[`v2.2.0`](https://www.npmjs.com/package/@elastic/eslint-plugin-eui/v/2.2.0)

- Added new `prefer-eui-icon-tip` rule.
([#8877](elastic/eui#8877))
kertal pushed a commit to kertal/kibana that referenced this pull request Jul 25, 2025
`@elastic/eui`: `106.0.0` ⏩ `106.1.0`
`@elastic/eslint-plugin-eui`: `2.1.0` ⏩ `2.2.1`

[Questions? Please see our Kibana upgrade
FAQ.](https://github.com/elastic/eui/blob/main/wiki/eui-team-processes/upgrading-kibana.md#faq-for-kibana-teams)

New props and defaults have been added to `EuiFlyout`, including
`includeSelectorInFocusTrap`, plus new global CSS variables for push
mode offset control. Additionally, we introduced a small spacing fix for
invalid `EuiDualRange` append component and added support for custom
styles on `EuiTreeView` nodes via the css key.

:warning: **React 16 is now deprecated:** EUI no longer tests against it
or fixes issues specific to it.

## Changes

- I removed forced click in:
`x-pack/test/security_solution_cypress/cypress/tasks/rule_details.ts`
- I removed `{enter}` in:
`x-pack/test/security_solution_cypress/cypress/tasks/common/rule_actions.ts`
(see elastic#228517)

## Package updates

### `@elastic/eui`

#### [`v106.1.0`](https://github.com/elastic/eui/releases/v106.1.0)

- Added `--euiPushFlyoutOffsetInlineStart` and
`--euiPushFlyoutOffsetInlineEnd` global CSS variables set by the
`EuiFlyout` in `push` mode.
([elastic#8872](elastic/eui#8872))
- Reduced the `min-width` for inputs in `EuiRange` and `EuiDualRange`
([elastic#8866](elastic/eui#8866))
- Added `includeSelectorInFocusTrap` prop for `EuiFlyout`
([elastic#8849](elastic/eui#8849))
- Added component defaults for `EuiFlyout` that include
`includeSelectorInFocusTrap` and `includeFixedHeadersInFocusTrap`
([elastic#8849](elastic/eui#8849))

**Bug fixes**

- Fixed flaky manual return focus behavior on `EuiFlyout` by relying on
`FocusTrap` returning focus instead
([elastic#8878](elastic/eui#8878))
- Fixed `EuiFlyoutChild` closing its parent `EuiFlyout` on `Escape`
keypress ([elastic#8878](elastic/eui#8878))
- Fixed support for `css` key in items object passed to `EuiTreeView`
([elastic#8864](elastic/eui#8864))

**Deprecations**

- Deprecated support for React 16. Please update to a modern version of
React or stay on EUI version 106.0.0 if you can't switch right now.
([elastic#8868](elastic/eui#8868))
  
### `@elastic/eslint-plugin-eui`

####
[`v2.2.1`](https://www.npmjs.com/package/@elastic/eslint-plugin-eui/v/2.2.1)

**Bug fixes**

- Removed `no-css_color` entry which mapped to a duplicate
`no-css-color` rule ([elastic#8888](elastic/eui#8888))

####
[`v2.2.0`](https://www.npmjs.com/package/@elastic/eslint-plugin-eui/v/2.2.0)

- Added new `prefer-eui-icon-tip` rule.
([elastic#8877](elastic/eui#8877))
eokoneyo pushed a commit to eokoneyo/kibana that referenced this pull request Jul 31, 2025
`@elastic/eui`: `106.0.0` ⏩ `106.1.0`
`@elastic/eslint-plugin-eui`: `2.1.0` ⏩ `2.2.1`

[Questions? Please see our Kibana upgrade
FAQ.](https://github.com/elastic/eui/blob/main/wiki/eui-team-processes/upgrading-kibana.md#faq-for-kibana-teams)

New props and defaults have been added to `EuiFlyout`, including
`includeSelectorInFocusTrap`, plus new global CSS variables for push
mode offset control. Additionally, we introduced a small spacing fix for
invalid `EuiDualRange` append component and added support for custom
styles on `EuiTreeView` nodes via the css key.

:warning: **React 16 is now deprecated:** EUI no longer tests against it
or fixes issues specific to it.

## Changes

- I removed forced click in:
`x-pack/test/security_solution_cypress/cypress/tasks/rule_details.ts`
- I removed `{enter}` in:
`x-pack/test/security_solution_cypress/cypress/tasks/common/rule_actions.ts`
(see elastic#228517)

## Package updates

### `@elastic/eui`

#### [`v106.1.0`](https://github.com/elastic/eui/releases/v106.1.0)

- Added `--euiPushFlyoutOffsetInlineStart` and
`--euiPushFlyoutOffsetInlineEnd` global CSS variables set by the
`EuiFlyout` in `push` mode.
([elastic#8872](elastic/eui#8872))
- Reduced the `min-width` for inputs in `EuiRange` and `EuiDualRange`
([elastic#8866](elastic/eui#8866))
- Added `includeSelectorInFocusTrap` prop for `EuiFlyout`
([elastic#8849](elastic/eui#8849))
- Added component defaults for `EuiFlyout` that include
`includeSelectorInFocusTrap` and `includeFixedHeadersInFocusTrap`
([elastic#8849](elastic/eui#8849))

**Bug fixes**

- Fixed flaky manual return focus behavior on `EuiFlyout` by relying on
`FocusTrap` returning focus instead
([elastic#8878](elastic/eui#8878))
- Fixed `EuiFlyoutChild` closing its parent `EuiFlyout` on `Escape`
keypress ([elastic#8878](elastic/eui#8878))
- Fixed support for `css` key in items object passed to `EuiTreeView`
([elastic#8864](elastic/eui#8864))

**Deprecations**

- Deprecated support for React 16. Please update to a modern version of
React or stay on EUI version 106.0.0 if you can't switch right now.
([elastic#8868](elastic/eui#8868))
  
### `@elastic/eslint-plugin-eui`

####
[`v2.2.1`](https://www.npmjs.com/package/@elastic/eslint-plugin-eui/v/2.2.1)

**Bug fixes**

- Removed `no-css_color` entry which mapped to a duplicate
`no-css-color` rule ([elastic#8888](elastic/eui#8888))

####
[`v2.2.0`](https://www.npmjs.com/package/@elastic/eslint-plugin-eui/v/2.2.0)

- Added new `prefer-eui-icon-tip` rule.
([elastic#8877](elastic/eui#8877))
Dosant added a commit to elastic/kibana that referenced this pull request Aug 5, 2025
## Summary

We introduced some EUI related hacks for flyouts for grid layout. After
contributing some improvements to EUI we can clean the hacks up:

- elastic/eui#8872 - this cleans up a hack to
resize the push flyout using new exposed css variable
- elastic/eui#8849 This allows us to specify
which elements should be included in the flyout focus trap by default.
Previously, it was the EUI fixed header, but in the grid layout, we
don't have a fixed header. So, we need to tell EUI which elements to
include: our header and sidenav.
- Small unzyme

---------

Co-authored-by: Tim Sullivan <[email protected]>
delanni pushed a commit to delanni/kibana that referenced this pull request Aug 5, 2025
## Summary

We introduced some EUI related hacks for flyouts for grid layout. After
contributing some improvements to EUI we can clean the hacks up:

- elastic/eui#8872 - this cleans up a hack to
resize the push flyout using new exposed css variable
- elastic/eui#8849 This allows us to specify
which elements should be included in the flyout focus trap by default.
Previously, it was the EUI fixed header, but in the grid layout, we
don't have a fixed header. So, we need to tell EUI which elements to
include: our header and sidenav.
- Small unzyme

---------

Co-authored-by: Tim Sullivan <[email protected]>
NicholasPeretti pushed a commit to NicholasPeretti/kibana that referenced this pull request Aug 18, 2025
## Summary

We introduced some EUI related hacks for flyouts for grid layout. After
contributing some improvements to EUI we can clean the hacks up:

- elastic/eui#8872 - this cleans up a hack to
resize the push flyout using new exposed css variable
- elastic/eui#8849 This allows us to specify
which elements should be included in the flyout focus trap by default.
Previously, it was the EUI fixed header, but in the grid layout, we
don't have a fixed header. So, we need to tell EUI which elements to
include: our header and sidenav.
- Small unzyme

---------

Co-authored-by: Tim Sullivan <[email protected]>
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.

3 participants