Sitelet https://github.com/ngbracket/a11y-devtools/pull/22
Skip to content

fix(keyboard): unreachable-control skips mouse shortcuts inside a keyboard-operated widget (0.15.3) - #22

Merged
DuncanFaulkner merged 1 commit into
mainfrom
fix/click-part-of-widget-item
Sep 27, 2026
Merged

DuncanFaulkner merged 1 commit into
mainfrom
fix/click-part-of-widget-item

Conversation

@DuncanFaulkner

Copy link
Copy Markdown
Contributor

A click-only element with no role of its own is now skipped when it's part of something the keyboard already operates:

  • inside a reachable composite-widget item, e.g. a tree's expand/collapse arrow inside its treeitem (←/→ expand it); or
  • its nearest Tab-reachable ancestor handles keys itself (Angular key listener), e.g. the bars/slices/points of a focusable chart (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

…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>
@DuncanFaulkner
DuncanFaulkner merged commit 710a849 into main Sep 27, 2026
1 check passed
@DuncanFaulkner
DuncanFaulkner deleted the fix/click-part-of-widget-item branch September 27, 2026 21:49
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.

1 participant