fix(keyboard): unreachable-control skips mouse shortcuts inside a keyboard-operated widget (0.15.3) - #22
Merged
Conversation
…board-operated widget (0.15.3) A click-only element (no role) is skipped when it's part of something the keyboard already operates: a reachable composite-widget item (tree expand/collapse arrow in its treeitem) or the nearest Tab-reachable ancestor with an Angular key listener (chart marks in a focusable chart). Page-wide listeners don't count (body is never tabbable). Dogfooded on the forms-pack docs dev build, 157 pages: 83 fixed, 0 new (--baseline). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
A click-only element with no role of its own is now skipped when it's part of something the keyboard already operates:
svg role="application" tabindex="0" (keydown)).A page-wide key listener doesn't count (
<body>is never tabbable), and a click target inside a focusable ancestor with no key handling is still reported.Tests: 7 new; the 3 exemption cases fail on the old code, the 4 guards pass either way. 282 pass.
Dogfood: forms-pack docs dev build, all 157 pages, compared with
--baseline: 83 fixed, 0 new.🤖 Generated with Claude Code