Repository navigation
fix(react): harden tooltip interactions - #126
Merged
Merged
Conversation
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.
redox
approved these changes
Oct 29, 2026
albert20260301
approved these changes
Oct 29, 2026
albert20260301
left a comment
There was a problem hiding this comment.
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.