Skip to content

[EuiToolTip] Improve tooltip group transition#9749

Draft
weronikaolejniczak wants to merge 4 commits into
mainfrom
revert-9748-revert-9689-poc/tooltip-group-swap
Draft

[EuiToolTip] Improve tooltip group transition#9749
weronikaolejniczak wants to merge 4 commits into
mainfrom
revert-9748-revert-9689-poc/tooltip-group-swap

Conversation

@weronikaolejniczak

@weronikaolejniczak weronikaolejniczak commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

Previously reverted on #9748 to derisk a release due to changes needed: elastic/kibana#274383

It was already reviewed and tested, it's good to smoke-test and go again.

Summary

Adjacent EuiToolTip triggers show visually disjoint tooltips. They re-play entry fade-in animation on every hover (~150ms delay + ~90ms fade).

Most design systems solve this by skipping the entry animation within a certain window of time. The show and hide stays synchronous (no timer), preserving the screen-reader behavior from #9626.

Kapture 2026-05-11 at 15 10 35

The anchor now listens with non-bubbling onMouseEnter/onMouseLeave instead of onMouseOver/onMouseOut. This removes the old relatedTarget filtering that was supposed to fix a flicker where the tooltip could hide when the cursor moved between inner children of the trigger.

Inline animation: none must be on first popover render, not after positionToolTip, otherwise CSS keyframes fire briefly before override.

API Changes

N/A

Screenshots

Kapture 2026-06-03 at 15 34 37

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

  • VRTs are unaffected (it's an animation change),
  • there is impact for consumers: nested tooltips now won't work as expected by consumers because of no bubbling. Only internal tooltip will be shown.

Prepped changes: Kibana PR

Release Readiness

  • Documentation: {link to docs page(s)}
  • Figma: {link to Figma or issue}
  • 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

Behavior

  • There's only ever one tooltip at a time (potential regression to the tooltip manager original intent)
  • When triggers are next to each other, hovering over them skips animation
  • When triggers are further from each other, hovering over them plays the full animation
  • There is no flickering
  • Turn reduced motion setting on and make sure tooltip displays correctly

Screen readers

  • VO + Chrome announces tooltips reliably (potential regression)
  • VO + Safari announces tooltips reliably (potential regression)
  • NVDA announces tooltips reliably (potential regression)
  • JAWS announces tooltips reliably (potential regression)

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.

@weronikaolejniczak weronikaolejniczak self-assigned this Jun 23, 2026
@elastic-vault-github-plugin-prod

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

euicodeblock (1 difference)

StoryBeforeAfterDiff
virtualized code block scrolling desktop

euidatagrid (1 difference)

StoryBeforeAfterDiff
render custom toolbar desktop

@elastic-vault-github-plugin-prod

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

euidatagrid (2 differences)

StoryBeforeAfterDiff
compact desktop
render custom toolbar desktop

@weronikaolejniczak weronikaolejniczak added the skip-vrt Skips Visual Regression Testing job in CI (clearly state why you're using it in your PR) label Jun 23, 2026
@weronikaolejniczak weronikaolejniczak force-pushed the revert-9748-revert-9689-poc/tooltip-group-swap branch from f5e051b to f0aabe3 Compare June 23, 2026 13:33
@weronikaolejniczak weronikaolejniczak force-pushed the revert-9748-revert-9689-poc/tooltip-group-swap branch from f0aabe3 to db284c0 Compare July 2, 2026 10:48
@weronikaolejniczak weronikaolejniczak added the ci:regression-integration-test-kibana Run a Regression Integration Test in Kibana against this PR label Jul 2, 2026
@weronikaolejniczak weronikaolejniczak force-pushed the revert-9748-revert-9689-poc/tooltip-group-swap branch from db284c0 to 07d9df8 Compare July 2, 2026 11:54
@weronikaolejniczak weronikaolejniczak added ci:regression-integration-test-kibana Run a Regression Integration Test in Kibana against this PR and removed ci:regression-integration-test-kibana Run a Regression Integration Test in Kibana against this PR labels Jul 2, 2026
@weronikaolejniczak weronikaolejniczak removed ci:regression-integration-test-kibana Run a Regression Integration Test in Kibana against this PR skip-vrt Skips Visual Regression Testing job in CI (clearly state why you're using it in your PR) labels Jul 9, 2026
@weronikaolejniczak weronikaolejniczak force-pushed the revert-9748-revert-9689-poc/tooltip-group-swap branch from 07d9df8 to 90ee6b1 Compare July 9, 2026 16:19
@snyk-io

snyk-io Bot commented Jul 9, 2026

Copy link
Copy Markdown

Snyk checks have passed. No issues have been found so far.

Status Scan Engine Critical High Medium Low Total (0)
Open Source Security 0 0 0 0 0 issues
Licenses 0 0 0 0 0 issues

💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse.

@weronikaolejniczak weronikaolejniczak marked this pull request as ready for review July 10, 2026 14:05
@weronikaolejniczak weronikaolejniczak requested a review from a team as a code owner July 10, 2026 14:05
Copilot AI review requested due to automatic review settings July 10, 2026 14:05

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.

Pull request overview

This PR updates EuiToolTip hover behavior to make adjacent tooltip triggers feel like a continuous interaction by skipping the entry animation when moving quickly between triggers, while also addressing prior flicker behavior by switching to non-bubbling mouse events.

Changes:

  • Add a skipAnimation signal to the tooltip manager (time-window based) and use it to inline-disable the entry animation on the next tooltip render.
  • Switch tooltip triggers from onMouseOver/onMouseOut to onMouseEnter/onMouseLeave to avoid child-to-child mouseout flicker.
  • Add/adjust unit tests and add a Storybook story to exercise tooltip group behavior.

Reviewed changes

Copilot reviewed 8 out of 10 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
packages/eui/src/components/tool_tip/tool_tip.tsx Uses manager-provided skipAnimation + switches trigger mouse handlers to mouseenter/leave.
packages/eui/src/components/tool_tip/tool_tip.test.tsx Adds regression test for skipping entry animation and resets singleton manager between tests.
packages/eui/src/components/tool_tip/tool_tip.stories.tsx Adds a “TooltipGroup” story to demo grouped tooltip behavior.
packages/eui/src/components/tool_tip/tool_tip_manager.ts Implements time-window-based skipAnimation signal + adds reset() for tests.
packages/eui/src/components/tool_tip/tool_tip_manager.test.ts Adds unit coverage for skipAnimation behavior and uses the new reset().
packages/eui/src/components/tool_tip/tool_tip_anchor.tsx Updates anchor to accept/pass onMouseEnter/onMouseLeave.
packages/eui/src/components/selectable/selectable_list/selectable_list_item.test.tsx Resets tooltip manager singleton to prevent cross-test animation state leakage.
packages/eui/changelogs/upcoming/9749.md Adds changelog entry for the tooltip behavior change.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread packages/eui/changelogs/upcoming/9749.md
@weronikaolejniczak weronikaolejniczak marked this pull request as draft July 10, 2026 14:12
@weronikaolejniczak weronikaolejniczak force-pushed the revert-9748-revert-9689-poc/tooltip-group-swap branch 2 times, most recently from c116f82 to 90bf47b Compare July 10, 2026 14:30
@weronikaolejniczak weronikaolejniczak force-pushed the revert-9748-revert-9689-poc/tooltip-group-swap branch from 90bf47b to b3097dc Compare July 10, 2026 14:30
@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

euicomment (1 difference)

StoryBeforeAfterDiff
high contrast desktop

@infra-vault-gh-plugin-prod

Copy link
Copy Markdown

💚 Build Succeeded

History

cc @weronikaolejniczak

@infra-vault-gh-plugin-prod

Copy link
Copy Markdown

💚 Build Succeeded

History

cc @weronikaolejniczak

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