Skip to content

Conversation

@mgadewoll
Copy link
Contributor

@mgadewoll mgadewoll commented Nov 17, 2025

Summary

Closes #9184

This PR updates EuiPopover by changing the default values of these props to change the visual output of the component:

  • hasArrow
  • position
  • offset
prop type new default old default
hasArrow boolean false true
position union downLeft downCenter
offset number hasArrow ? 0 : 4 4

Additionally, EuiInputPopover is updated by changing its offset.

prop type new default old default
offset number 2 0

EuiTourStep is updated to only set hasArrow on its underlying EuiPopover by default when decoration="beacon" and not decoration="none" (unless manually overridden).

Why are we making this change?

🎨 UI refresh: The changes are part of the effort to refresh and modernize the UI (#9183)

Screenshots #

EuiPopover

before after
Screenshot 2025-11-17 at 09 12 31 Screenshot 2025-11-17 at 09 12 28
Screenshot 2025-11-17 at 09 12 10 Screenshot 2025-11-17 at 09 11 39

EuiInputPopover

before after
Screenshot 2025-11-17 at 09 15 22 Screenshot 2025-11-17 at 09 15 25
Screenshot 2025-11-17 at 09 15 30 Screenshot 2025-11-17 at 09 15 35

EuiTourStep with decoration="none"

before after
Screenshot 2025-11-17 at 09 21 43 Screenshot 2025-11-17 at 09 21 50
Screenshot 2025-11-17 at 09 21 40 Screenshot 2025-11-17 at 09 21 47

Impact to users

🟢 No implementation updates required on consumer side.

⚠️ If tests check popover position, they likely fail and require update. Otherwise, snapshot tests might also fail based on updated props.

QA

🧪 Storybook:

Checks:

  • verify EuiPopover updates are correct and that manually set props apply as expected
    • it's rendered without arrow by default
    • its default position is downLeft
    • its default offset is 4 with hasArrow=false and 0 with hasArrow=0 (same as production)
  • verify EuiInputPopover has a default offset of 2
  • verify EuiTourStep with decoration="none" does not render an arrow by default (applying hasArrow will still override this)
  • verify there is otherwise no unexpected regression between production and staging states

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)
    • If the changes unblock an issue in a different repo, smoke tested carefully (see Testing EUI features in Kibana ahead of time)
  • 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)

@mgadewoll mgadewoll self-assigned this Nov 17, 2025
@mgadewoll mgadewoll force-pushed the popover/9184-updated-arrow-default branch 3 times, most recently from 6d513e7 to e72009c Compare November 17, 2025 11:59
@mgadewoll mgadewoll marked this pull request as ready for review November 17, 2025 12:32
@mgadewoll mgadewoll requested a review from a team as a code owner November 17, 2025 12:32
@mgadewoll mgadewoll requested review from JoseLuisGJ and removed request for ryankeairns November 17, 2025 12:38
@JoseLuisGJ
Copy link
Contributor

LGTM @mgadewoll BTW the related Figma component was added to the new Borealis library and is using the same new defaults here

@mgadewoll
Copy link
Contributor Author

LGTM @mgadewoll BTW the related Figma component was added to the new Borealis library and is using the same new defaults here

@JoseLuisGJ Awesome, thanks a lot for the update! 🎉

@JoseLuisGJ
Copy link
Contributor

Not sure which version of EUI are we using in Storybook but I see this border in the union of the arrow and the Popover content in dark mode.

CleanShot 2025-11-18 at 09 49 21@2x

@mgadewoll
Copy link
Contributor Author

mgadewoll commented Nov 18, 2025

Not sure which version of EUI are we using in Storybook but I see this border in the union of the arrow and the Popover content in dark mode.

@JoseLuisGJ I can see it on a Retina display in Chrome and only for the left aligned positions (leftUp, leftCenter, leftDown). That means it's most likely related to different sub-pixel calculations which browsers handle differently.

browser retina non-retina
Chrome Screenshot 2025-11-18 at 09 55 48 Screenshot 2025-11-18 at 09 53 40
Safari Screenshot 2025-11-18 at 10 35 43 Screenshot 2025-11-18 at 10 36 01
Firefox Screenshot 2025-11-18 at 10 15 19 Screenshot 2025-11-18 at 10 15 33

If we try to change the position further inwards, then other displays look not aligned.

Screenshot 2025-11-18 at 10 23 18

I think it's somewhat of an edge case.
It's only happening for left-aligned popovers because the position depends on the content width. If the width has sub-pixels, it'll be calculated differently (some round up, some down).
Depending on the content it looks fine or not. So the specific content "This is a popover" results in a width that results in exactly that arrow position that results in a visible line due to sub pixels. (also, if you zoom it's fine again)

Examples

looks fine

Screenshot 2025-11-18 at 10 17 54 Screenshot 2025-11-18 at 10 29 17 Screenshot 2025-11-18 at 10 29 46 Screenshot 2025-11-18 at 10 32 20 Screenshot 2025-11-18 at 10 32 52

popover min width

Screenshot 2025-11-18 at 10 46 19

same issue

Screenshot 2025-11-18 at 10 29 31

@JoseLuisGJ
Copy link
Contributor

Thanks Lene for the deep research on this rendering issue. This confirms that I was seeng this issue randomly, and it makes sense if it¡s related to the content width. I guess that's a trade off we can assume.

@acstll acstll self-requested a review November 20, 2025 10:50
Copy link
Contributor

@acstll acstll left a comment

Choose a reason for hiding this comment

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

🟢 Changes on the code side look correct and it's working as expected (checked Storybook following QA steps). Left a single non-blocking comment.

Copy link
Contributor

@acstll acstll left a comment

Choose a reason for hiding this comment

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

I did a second review going through the VRT updates, let me know what you think 🙂

Copy link
Contributor

Choose a reason for hiding this comment

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

maybe this looks better still centered?

Copy link
Contributor

Choose a reason for hiding this comment

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

this should probably remain centered as well?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Good question. Right now it follows the popover default.
I would agree that centered looks better, but let's get that also agreed on by design. Maybe @JoseLuisGJ could provide an opinion?

Screenshot 2025-11-20 at 12 33 42 Screenshot 2025-11-20 at 12 33 58

Copy link
Contributor Author

Choose a reason for hiding this comment

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

ℹ️ That's how it would look like centered:

Screenshot 2025-11-20 at 12 52 52 Screenshot 2025-11-20 at 12 52 32

Copy link
Contributor

Choose a reason for hiding this comment

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

I agree too centered looks better, as you suggest, let's wait for @JoseLuisGJ's blessing 🙂‍↕️

Copy link
Contributor

Choose a reason for hiding this comment

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

I agree that initially might be following the Popover default offset, but in this case is more appropriate to center it completely IMO as well.

@mgadewoll mgadewoll force-pushed the popover/9184-updated-arrow-default branch from 3970140 to 31c6626 Compare November 20, 2025 11:46
@mgadewoll mgadewoll force-pushed the popover/9184-updated-arrow-default branch from 7d9abac to 2c1dfa7 Compare November 21, 2025 10:15
@mgadewoll mgadewoll enabled auto-merge (squash) November 21, 2025 10:15
@mgadewoll mgadewoll disabled auto-merge November 21, 2025 10:17
@elasticmachine
Copy link
Collaborator

💚 Build Succeeded

History

cc @mgadewoll

@elasticmachine
Copy link
Collaborator

💚 Build Succeeded

History

cc @mgadewoll

@mgadewoll mgadewoll merged commit 1ad8cd9 into elastic:main Nov 21, 2025
7 checks passed
mgadewoll added a commit to elastic/kibana that referenced this pull request Dec 2, 2025
- `@elastic/eui`: `v109.1.0` ⏩ `v109.2.0`
- `@elastic/eui-theme-borealis`: `v5.0.0` ⏩ `v5.1.0`

[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)

---

## Changes

- Only snapshot updates related to EuiPopover, ToolTip and Table changes
(see below)

## Package updates

### `@elastic/eui` v109.2.0

- Updated `EuiFlexItem` to fall back to `grow={true}` if invalid values
for `grow` are passed
([#9228](elastic/eui#9228))
- Updated shared button styles in `useEuiButtonColorCSS` to use
`euiDisabledSelector`
([#9226](elastic/eui#9226))
- Added `euiTextTruncateCSS` Emotion style utility
([#9231](elastic/eui#9231))
- Added `hasBackground` prop on `EuiTable`, `EuiBasicTable` and
`EuiInMemoryTable` ([#9224](elastic/eui#9224))
- Added component token `components.tableFooterBackground`
([#9224](elastic/eui#9224))
- Updated the color of mobile table header cells to use
`colors.textSubdued` ([#9224](elastic/eui#9224))
- Updated `EuiSuperDatePicker` to show a tooltip with the full range
details when the button displays a pretty duration e.g. "Last 15
minutes" ([#9221](elastic/eui#9221))
- Updated `EuiPopover` default prop values of `hasArrow`, `position` and
`offset`: ([#9218](elastic/eui#9218))
  - Changed `hasArrow` to `false`
  - Changed `position` to `downLeft`
  - Changed `offset` to `4` when `hasArrow=false`
- Updated `EuiInputPopover` `offset` default value to `2`
([#9218](elastic/eui#9218))
- Updated `EuiTourStep` to not apply `hasArrow=true` by default when
`decoration="none"` ([#9218](elastic/eui#9218))
- Updated `EuiSuperDatePicker` to have a more forgiving manual input for
absolute dates. ([#9199](elastic/eui#9199))

**Bug fixes**

- Updated EuiButtonGroup disabled style selectors to use
`euiDisabledSelector` to ensure high contrast mode styles apply
correctly ([#9226](elastic/eui#9226))
- Updated `EuiSuperDatePicker` to ensure its pretty format button dates
are truncated correctly
([#9231](elastic/eui#9231))
- Fixed a visual bug for mobile table action buttons that causes
shifting positions when changing color mode
([#8231](elastic/eui#8231))
([#9224](elastic/eui#9224))

**Accessibility**

- Improved the navigation of sibling `EuiToolTip` anchor elements in
NVDA browse mode by adding an `id` to ensure they are unique
([#9208](elastic/eui#9208))

### `@elastic/eui-theme-borealis` v5.1.0

- Added component token `components.tableFooterBackground`
([#9224](elastic/eui#9224))

---------

Co-authored-by: Jorge Sanz <[email protected]>
Co-authored-by: Lene Gadewoll <[email protected]>
NicholasPeretti pushed a commit to NicholasPeretti/kibana that referenced this pull request Dec 2, 2025
- `@elastic/eui`: `v109.1.0` ⏩ `v109.2.0`
- `@elastic/eui-theme-borealis`: `v5.0.0` ⏩ `v5.1.0`

[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)

---

## Changes

- Only snapshot updates related to EuiPopover, ToolTip and Table changes
(see below)

## Package updates

### `@elastic/eui` v109.2.0

- Updated `EuiFlexItem` to fall back to `grow={true}` if invalid values
for `grow` are passed
([elastic#9228](elastic/eui#9228))
- Updated shared button styles in `useEuiButtonColorCSS` to use
`euiDisabledSelector`
([elastic#9226](elastic/eui#9226))
- Added `euiTextTruncateCSS` Emotion style utility
([elastic#9231](elastic/eui#9231))
- Added `hasBackground` prop on `EuiTable`, `EuiBasicTable` and
`EuiInMemoryTable` ([elastic#9224](elastic/eui#9224))
- Added component token `components.tableFooterBackground`
([elastic#9224](elastic/eui#9224))
- Updated the color of mobile table header cells to use
`colors.textSubdued` ([elastic#9224](elastic/eui#9224))
- Updated `EuiSuperDatePicker` to show a tooltip with the full range
details when the button displays a pretty duration e.g. "Last 15
minutes" ([elastic#9221](elastic/eui#9221))
- Updated `EuiPopover` default prop values of `hasArrow`, `position` and
`offset`: ([elastic#9218](elastic/eui#9218))
  - Changed `hasArrow` to `false`
  - Changed `position` to `downLeft`
  - Changed `offset` to `4` when `hasArrow=false`
- Updated `EuiInputPopover` `offset` default value to `2`
([elastic#9218](elastic/eui#9218))
- Updated `EuiTourStep` to not apply `hasArrow=true` by default when
`decoration="none"` ([elastic#9218](elastic/eui#9218))
- Updated `EuiSuperDatePicker` to have a more forgiving manual input for
absolute dates. ([elastic#9199](elastic/eui#9199))

**Bug fixes**

- Updated EuiButtonGroup disabled style selectors to use
`euiDisabledSelector` to ensure high contrast mode styles apply
correctly ([elastic#9226](elastic/eui#9226))
- Updated `EuiSuperDatePicker` to ensure its pretty format button dates
are truncated correctly
([elastic#9231](elastic/eui#9231))
- Fixed a visual bug for mobile table action buttons that causes
shifting positions when changing color mode
([elastic#8231](elastic/eui#8231))
([elastic#9224](elastic/eui#9224))

**Accessibility**

- Improved the navigation of sibling `EuiToolTip` anchor elements in
NVDA browse mode by adding an `id` to ensure they are unique
([elastic#9208](elastic/eui#9208))

### `@elastic/eui-theme-borealis` v5.1.0

- Added component token `components.tableFooterBackground`
([elastic#9224](elastic/eui#9224))

---------

Co-authored-by: Jorge Sanz <[email protected]>
Co-authored-by: Lene Gadewoll <[email protected]>
PhilippeOberti added a commit to elastic/kibana that referenced this pull request Dec 3, 2025
…ck on its content (#245162)

## Summary

This PR fixes a UI issue with the `kbn-cell-actions` rendering in hover
mode. A recent [EUI PR](#244032)
made a change to the default `offset` value:

### Context

```
- Updated EuiPopover default prop values of hasArrow, position and offset: (elastic/eui#9218)
  - Changed hasArrow to false
  - Changed position to downLeft
  - Changed offset to 4 when hasArrow=false
``` 

This offset change ended up making our cell actions almost unusable, as
the gap that is now present between the hovered content and the content
of the `EuiPopover` is not 4 pixels (instead of previously 0). This
means that when leaving the hovered content and before reaching the
`EuiPopover` content, the popover is actually being removed...

Before the EUI `109.2.0` commit


https://github.com/user-attachments/assets/4ff1e2ef-38cc-486e-a236-1df400b2a5d0

Right at the EUI `109.2.0` commit


https://github.com/user-attachments/assets/e4af2ca6-36fc-48e9-aee7-c8a9fc00ede3

### Solution

Add `offset={0}` to the `EuiPopover` in the `kbn-cell-actions` package.
That way we do not have to change the UI and the correct behavior is
restored.

### Checklist

- [x] The PR description includes the appropriate Release Notes section,
and the correct `release_note:*` label is applied per the
[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)
- [x] Review the [backport
guidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)
and apply applicable `backport:*` labels.
JordanSh pushed a commit to JordanSh/kibana that referenced this pull request Dec 9, 2025
- `@elastic/eui`: `v109.1.0` ⏩ `v109.2.0`
- `@elastic/eui-theme-borealis`: `v5.0.0` ⏩ `v5.1.0`

[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)

---

## Changes

- Only snapshot updates related to EuiPopover, ToolTip and Table changes
(see below)

## Package updates

### `@elastic/eui` v109.2.0

- Updated `EuiFlexItem` to fall back to `grow={true}` if invalid values
for `grow` are passed
([elastic#9228](elastic/eui#9228))
- Updated shared button styles in `useEuiButtonColorCSS` to use
`euiDisabledSelector`
([elastic#9226](elastic/eui#9226))
- Added `euiTextTruncateCSS` Emotion style utility
([elastic#9231](elastic/eui#9231))
- Added `hasBackground` prop on `EuiTable`, `EuiBasicTable` and
`EuiInMemoryTable` ([elastic#9224](elastic/eui#9224))
- Added component token `components.tableFooterBackground`
([elastic#9224](elastic/eui#9224))
- Updated the color of mobile table header cells to use
`colors.textSubdued` ([elastic#9224](elastic/eui#9224))
- Updated `EuiSuperDatePicker` to show a tooltip with the full range
details when the button displays a pretty duration e.g. "Last 15
minutes" ([elastic#9221](elastic/eui#9221))
- Updated `EuiPopover` default prop values of `hasArrow`, `position` and
`offset`: ([elastic#9218](elastic/eui#9218))
  - Changed `hasArrow` to `false`
  - Changed `position` to `downLeft`
  - Changed `offset` to `4` when `hasArrow=false`
- Updated `EuiInputPopover` `offset` default value to `2`
([elastic#9218](elastic/eui#9218))
- Updated `EuiTourStep` to not apply `hasArrow=true` by default when
`decoration="none"` ([elastic#9218](elastic/eui#9218))
- Updated `EuiSuperDatePicker` to have a more forgiving manual input for
absolute dates. ([elastic#9199](elastic/eui#9199))

**Bug fixes**

- Updated EuiButtonGroup disabled style selectors to use
`euiDisabledSelector` to ensure high contrast mode styles apply
correctly ([elastic#9226](elastic/eui#9226))
- Updated `EuiSuperDatePicker` to ensure its pretty format button dates
are truncated correctly
([elastic#9231](elastic/eui#9231))
- Fixed a visual bug for mobile table action buttons that causes
shifting positions when changing color mode
([elastic#8231](elastic/eui#8231))
([elastic#9224](elastic/eui#9224))

**Accessibility**

- Improved the navigation of sibling `EuiToolTip` anchor elements in
NVDA browse mode by adding an `id` to ensure they are unique
([elastic#9208](elastic/eui#9208))

### `@elastic/eui-theme-borealis` v5.1.0

- Added component token `components.tableFooterBackground`
([elastic#9224](elastic/eui#9224))

---------

Co-authored-by: Jorge Sanz <[email protected]>
Co-authored-by: Lene Gadewoll <[email protected]>
JordanSh pushed a commit to JordanSh/kibana that referenced this pull request Dec 9, 2025
…ck on its content (elastic#245162)

## Summary

This PR fixes a UI issue with the `kbn-cell-actions` rendering in hover
mode. A recent [EUI PR](elastic#244032)
made a change to the default `offset` value:

### Context

```
- Updated EuiPopover default prop values of hasArrow, position and offset: (elastic/eui#9218)
  - Changed hasArrow to false
  - Changed position to downLeft
  - Changed offset to 4 when hasArrow=false
``` 

This offset change ended up making our cell actions almost unusable, as
the gap that is now present between the hovered content and the content
of the `EuiPopover` is not 4 pixels (instead of previously 0). This
means that when leaving the hovered content and before reaching the
`EuiPopover` content, the popover is actually being removed...

Before the EUI `109.2.0` commit


https://github.com/user-attachments/assets/4ff1e2ef-38cc-486e-a236-1df400b2a5d0

Right at the EUI `109.2.0` commit


https://github.com/user-attachments/assets/e4af2ca6-36fc-48e9-aee7-c8a9fc00ede3

### Solution

Add `offset={0}` to the `EuiPopover` in the `kbn-cell-actions` package.
That way we do not have to change the UI and the correct behavior is
restored.

### Checklist

- [x] The PR description includes the appropriate Release Notes section,
and the correct `release_note:*` label is applied per the
[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)
- [x] Review the [backport
guidelines](https://docs.google.com/document/d/1VyN5k91e5OVumlc0Gb9RPa3h1ewuPE705nRtioPiTvY/edit?usp=sharing)
and apply applicable `backport:*` labels.
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.

[EuiPopover] Remove arrow and change default position to downLeft

4 participants