Skip to content

fix(react): harden tooltip interactions - #126

Merged
francoischalifour merged 3 commits into
mainfrom
fc/tooltip-reliability
Oct 29, 2026
Merged

francoischalifour merged 3 commits into
mainfrom
fc/tooltip-reliability

Conversation

@francoischalifour

@francoischalifour francoischalifour commented Oct 29, 2026 •

Copy link
Copy Markdown
Member

Make supplemental hints stay open for keyboard focus and pointer reading, preserve focus when their text is clicked, and apply updated provider delays without remounting controls. Keep chart cursor/tap inspection separate, preserve existing ARIA descriptions, and handle native-dialog portals and Escape dismissal.

Add authoring guidance for labeled controls, disabled and text triggers, and touch disclosures. Also prepare annotation selection before the next pointer event; the tooltip lifecycle changes exposed a selection-readiness race.

The tooltip workflows were also exercised in WebKit locally.

Local packed-consumer validation was blocked by npm registry timeouts and DNS failures; the PR CI runs that verification.

Keep supplemental hints visible during pointer travel and share hover timing
across neighboring controls. Preserve keyboard descriptions, cancel pending
hover on activation, and release timing state when open triggers unmount.
Handle descendant focus explicitly so WebKit recovers after pointer activation,
and consume Escape before a surrounding native dialog closes.

Separate chart inspection from hint interactions without changing public props.
Document the authoring contract and cover keyboard, pointer, touch, portals,
dynamic content, long descriptions, themes, and reduced motion in browser tests.
Discover annotation targets before paint when entering annotation mode. Tooltip lifecycle changes exposed a window where the app showed annotation mode but its selection layer was not ready for an immediate click. Synchronous discovery closes that window without delaying input or changing target identities.
Keep hints open while their triggers retain keyboard focus, and prevent
passive hint clicks from moving focus or the sequential navigation start point.
Synchronize changed provider delays into the shared hover group without
remounting controls or losing the current instant-hover phase.

Exercise pointer exits, hint text clicks followed by Tab, and delay/skip-window
updates with browser regressions that use fixed time and retain DOM identity.

@albert20260301 albert20260301 left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

The hint lifecycle now preserves keyboard focus and existing descriptions, allows pointer travel onto passive content, and updates shared timing without remounting controls. Chart cursor/tap handling remains separate. No blocking findings.

All 15 tooltip workflows and 40 chart workflows pass locally; build, types and lint pass, and required CI is green. One existing annotation workflow times out at its second-card selection on both this head and the unchanged base; the other 17 annotation workflows pass here. That local failure is not evidence of a regression in this PR.

A published SDK release is still needed before consumers receive these changes.

@francoischalifour
francoischalifour merged commit 9f73507 into main Oct 29, 2026
7 checks passed
@francoischalifour
francoischalifour deleted the fc/tooltip-reliability branch October 29, 2026 12:44
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