Skip to content

[material_ui] Add tabBar/tab roles and expanded state semantics - #13176

Merged
auto-submit[bot] merged 6 commits into
flutter:mainfrom
kevmoo:material-ui-a11y-rail-drawer-datepicker
Nov 5, 2026
Merged

auto-submit[bot] merged 6 commits into
flutter:mainfrom
kevmoo:material-ui-a11y-rail-drawer-datepicker

Conversation

@kevmoo

@kevmoo kevmoo commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

Exposes SemanticsRole.tabBar and SemanticsRole.tab on NavigationRail destinations (omitting the redundant "Tab i of n" indexLabel on web where role="tablist" natively computes set size, matching TabBar and Tab) and sets Semantics(expanded: ...) on DrawerButtonIcon, EndDrawerButtonIcon, and CalendarDatePicker's year/day mode toggle button so assistive technologies announce tab selection and expand/collapse states (WCAG 4.1.2).

Fixes flutter/flutter#173052
Fixes flutter/flutter#194904

Pre-Review Checklist

If you need help, consider asking for advice on the #hackers-new channel on Discord.

Note: The Flutter team is currently trialing the use of Gemini Code Assist for GitHub. Comments from the gemini-code-assist bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed.

Footnotes

  1. Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling. ↩ ↩2

…icker accessibility

- Wrap NavigationRail destinations in SemanticsRole.tabBar and _RailDestination in SemanticsRole.tab with selected state.
- Expose expanded state semantics on DrawerButton and EndDrawerButton via MergeSemantics.
- Expose expanded state semantics on _DatePickerModeToggleButton in CalendarDatePicker.
@flutter-dashboard flutter-dashboard Bot added the CICD Run CI/CD label Oct 9, 2026
@github-actions github-actions Bot added p: material_ui triage-design Should be looked at in design triage labels Oct 9, 2026

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Code Review

This pull request improves accessibility semantics across several Material UI components. It adds SemanticsRole.tabBar and SemanticsRole.tab to NavigationRail, exposes expanded state semantics on DrawerButton, EndDrawerButton, and the CalendarDatePicker year-mode toggle, and includes corresponding test updates. Feedback suggests that DrawerButton and EndDrawerButton should only expose the expanded state if a drawer is actually present on the ancestor Scaffold to avoid incorrect screen reader announcements.

@kevmoo kevmoo changed the title [material_ui] Improve NavigationRail, DrawerButton, and CalendarDatePicker accessibility [material_ui] Add tabBar/tab roles and expanded state semantics Oct 11, 2026
@Piinks

Piinks commented Oct 20, 2026

Copy link
Copy Markdown
Contributor

@kevmoo can you please complete the checklist provided in the PR template? It looks like this one is generated and is missing some things. Also, what issue is this resolving?

@kevmoo

kevmoo commented Oct 21, 2026

Copy link
Copy Markdown
Contributor Author

Updated the PR description with the standard Pre-Review Checklist and linked flutter/flutter#173052 and flutter/flutter#194904.

@elliette elliette left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Thanks for fixing! Left a comment

…heritedModel

Upgrades _ScaffoldScope to InheritedModel so DrawerButtonIcon and
EndDrawerButtonIcon rebuild reactively when Scaffold drawer presence or
open/close state changes, and tests the full AppBar open/close lifecycle.
@kevmoo
kevmoo requested a review from elliette November 4, 2026 19:56

@elliette elliette left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Thanks, LGTM!

@kevmoo kevmoo added the autosubmit Merge PR when tree becomes green via auto submit App label Nov 5, 2026
@auto-submit
auto-submit Bot merged commit afe281a into flutter:main Nov 5, 2026
13 checks passed
@kevmoo
kevmoo deleted the material-ui-a11y-rail-drawer-datepicker branch November 6, 2026 07:03
flutter-zl pushed a commit to NemesisDevX/flutter that referenced this pull request Nov 6, 2026
flutter/packages@0478162...63881f9

2026-11-06 [email protected] [material_ui] Paint Dialog.fullscreen
background color behind the keyboard (flutter/packages#13244)
2026-11-05 [email protected] [material_ui] Add tabBar/tab
roles and expanded state semantics (flutter/packages#13176)
2026-11-05 [email protected]
[material_ui] Disable the DropdownButtonFormField decoration when the
field is disabled (flutter/packages#13473)
2026-11-05 [email protected] [material_ui] Fix Switch throwing when first
painted mid-animation (flutter/packages#13496)
2026-11-05 [email protected] [various] Add
engineIdentifier to fake plugin registrars (flutter/packages#13574)
2026-11-05 [email protected] [google_sign_in]
Allow GoogleSignIn-iOS 10 (flutter/packages#13306)
2026-11-05 [email protected] [material_ui] Hit
test the floating label of InputDecorator at its painted position
(flutter/packages#13326)
2026-11-05 [email protected] [material_ui] Fix InputDecorator
intrinsic height when isDense or isC… (flutter/packages#13522)
2026-11-05 [email protected] [material_ui] Paint Scaffold
persistent bottom sheet background color behind the keyboard
(flutter/packages#13242)
2026-11-05 [email protected] [image_picker_ios] PR 5/5 Switch
Pigeon to Swift and finish the Objective-C to Swift migration.
(flutter/packages#13493)

If this roll has caused a breakage, revert this CL and set the roller
to dry run mode using the controls here:
https://autoroll.skia.org/r/flutter-packages-flutter-autoroll
Please CC [email protected] on the revert to ensure that a
human
is aware of the problem.

To file a bug in Flutter:
https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

autosubmit Merge PR when tree becomes green via auto submit App CICD Run CI/CD p: material_ui triage-design Should be looked at in design triage

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[material_ui] DrawerButton and NavigationRail omit Semantics states [VPAT][A11y] datepicker expand button is missing state announcement in voiceover

3 participants