Repository navigation
Agentic ListboxItem: expose selection correctly to assistive technology - #4404
Merged
Jason Morse (JasonVMo) merged 4 commits intoOct 29, 2026
Merged
Conversation
Use supported checked state and the platform Toggle action while retaining the button role and external selection ownership. Own conflicting ARIA state/role aliases, preserve bound option semantics, and add focused public-state and real Win32 regressions. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4b66f3ef-85ac-4405-bd35-dcc167a077b1
Observe the real Win32 Toggle action exactly once with both handlers present, unchanged externally owned selection and no synthesized press. Verify the supported disabled activation route rejects without callbacks. Keep the existing implementation unchanged and distinguish driver rejection from disabled-provider dispatch. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4b66f3ef-85ac-4405-bd35-dcc167a077b1
Contributor
Bundle size reportTree-shaken, minified production esbuild bundles with React and React Native runtimes externalized.
The job is advisory: size changes are reported but do not fail the pull request. Bundle or analysis errors still fail. |
srividyaramas
marked this pull request as ready for review
October 28, 2026 18:33
Preserve portable button role and enabled-state assertions, qualify native checked reads on Windows, and document the macOS AXButton limitation without changing product behavior. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4b66f3ef-85ac-4405-bd35-dcc167a077b1
Keep the validated source unchanged and preserve append-only history. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4b66f3ef-85ac-4405-bd35-dcc167a077b1
srividyaramas
requested review from
Jason Morse (JasonVMo),
Khalef Hosany (Khalef1) and
Anandraj (mganandraj)
October 28, 2026 22:06
Jason Morse (JasonVMo)
approved these changes
Oct 29, 2026
Jason Morse (JasonVMo)
deleted the
user/sriramas/listbox-item-accessibility-fix
branch
October 29, 2026 19:27
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.
Why
A standalone agentic ListboxItem can look selected without declaring that selection in its accessibility state. This makes its state and available action harder for assistive technology to understand.
What changed
Standalone interactive items now declare their selected value as checked state and advertise the custom toggle action. Windows exposes the native checked projection. macOS retains the button role; the desktop driver does not expose checked queries for that role. Items managed by a containing list keep their list-item role and list-owned selection behavior. Section headers remain noninteractive.
The app remains responsible for updating selection. Accessibility actions are forwarded once, without an extra press or an automatic selection change. The tests also check that conflicting caller accessibility properties cannot override the component's actual state.
This change includes focused regression tests, updated component documentation, and patch changesets. Broader component coverage will come separately.
Testing
The macOS follow-up changes only Storybook tests and related contract documentation. Portable role and enabled/disabled assertions remain shared. Windows checked projection is a separate test, explicitly reported as unsupported on macOS rather than interpreted as false or counted as a pass.
The disabled-action check verifies that the public driver rejects activation without callbacks; it does not force an action through a disabled native provider. Keyboard, pointer, and wheel input were disabled. Native macOS and Windows Fabric are outside the local native qualification.
All PR checks on this head completed without failures as of October 28. The root aggregate cited above ran on the separate combined validation branch, not on this isolated product head. The Windows tooling repair landed upstream in #4400 and is not part of this PR. Green CI does not qualify macOS checked projection or the explicitly Windows-only action cases.