@@ -83,6 +83,7 @@ inline UIAccessibilityTraits RCTUIAccessibilityTraitsFromAccessibilityTraits(
8383 if ((accessibilityTraits & AccessibilityTraits::Image) != AccessibilityTraits::None) {
8484 result |= UIAccessibilityTraitImage;
8585 }
86+ // not in macos
8687 if ((accessibilityTraits & AccessibilityTraits::Selected) != AccessibilityTraits::None) {
8788 result |= UIAccessibilityTraitSelected;
8889 }
@@ -98,24 +99,29 @@ inline UIAccessibilityTraits RCTUIAccessibilityTraitsFromAccessibilityTraits(
9899 if ((accessibilityTraits & AccessibilityTraits::SummaryElement) != AccessibilityTraits::None) {
99100 result |= UIAccessibilityTraitSummaryElement;
100101 }
102+ // not on macos
101103 if ((accessibilityTraits & AccessibilityTraits::NotEnabled) != AccessibilityTraits::None) {
102104 result |= UIAccessibilityTraitNotEnabled;
103105 }
106+ // not on macos
104107 if ((accessibilityTraits & AccessibilityTraits::UpdatesFrequently) != AccessibilityTraits::None) {
105108 result |= UIAccessibilityTraitUpdatesFrequently;
106109 }
107110 if ((accessibilityTraits & AccessibilityTraits::SearchField) != AccessibilityTraits::None) {
108111 result |= UIAccessibilityTraitSearchField;
109112 }
113+ // not on macos
110114 if ((accessibilityTraits & AccessibilityTraits::StartsMediaSession) != AccessibilityTraits::None) {
111115 result |= UIAccessibilityTraitStartsMediaSession;
112116 }
113117 if ((accessibilityTraits & AccessibilityTraits::Adjustable) != AccessibilityTraits::None) {
114118 result |= UIAccessibilityTraitAdjustable;
115119 }
120+ // not on macos
116121 if ((accessibilityTraits & AccessibilityTraits::AllowsDirectInteraction) != AccessibilityTraits::None) {
117122 result |= UIAccessibilityTraitAllowsDirectInteraction;
118123 }
124+ // not on macOS
119125 if ((accessibilityTraits & AccessibilityTraits::CausesPageTurn) != AccessibilityTraits::None) {
120126 result |= UIAccessibilityTraitCausesPageTurn;
121127 }
@@ -136,6 +142,7 @@ inline NSAccessibilityRole RCTUIAccessibilityRoleFromAccessibilityTraits(
136142{
137143 using AccessibilityTraits = facebook::react::AccessibilityTraits;
138144 if ((accessibilityTraits & AccessibilityTraits::Button) != AccessibilityTraits::None) {
145+ // check
139146 if ((accessibilityTraits & AccessibilityTraits::Bar) != AccessibilityTraits::None) {
140147 return NSAccessibilityToolbarRole ;
141148 }
@@ -145,6 +152,7 @@ inline NSAccessibilityRole RCTUIAccessibilityRoleFromAccessibilityTraits(
145152 if ((accessibilityTraits & AccessibilityTraits::Menu) != AccessibilityTraits::None) {
146153 return NSAccessibilityMenuButtonRole ;
147154 }
155+ // check end
148156 return NSAccessibilityButtonRole ;
149157 }
150158 if ((accessibilityTraits & AccessibilityTraits::Link) != AccessibilityTraits::None) {
@@ -162,6 +170,9 @@ inline NSAccessibilityRole RCTUIAccessibilityRoleFromAccessibilityTraits(
162170 if ((accessibilityTraits & AccessibilityTraits::SummaryElement) != AccessibilityTraits::None) {
163171 return NSAccessibilityStaticTextRole ;
164172 }
173+ if ((accessibilityTraits & AccessibilityTraits::UpdatesFrequently) != AccessibilityTraits::None) {
174+ return NSAccessibilityProgressIndicatorRole ;
175+ }
165176 if ((accessibilityTraits & AccessibilityTraits::SearchField) != AccessibilityTraits::None) {
166177 return NSAccessibilityTextFieldRole ;
167178 }
@@ -174,12 +185,11 @@ inline NSAccessibilityRole RCTUIAccessibilityRoleFromAccessibilityTraits(
174185 if ((accessibilityTraits & AccessibilityTraits::Switch) != AccessibilityTraits::None) {
175186 return NSAccessibilityCheckBoxRole ;
176187 }
177- if ((accessibilityTraits & AccessibilityTraits::UpdatesFrequently) != AccessibilityTraits::None) {
178- return NSAccessibilityProgressIndicatorRole ;
179- }
188+ // macos only
180189 if ((accessibilityTraits & AccessibilityTraits::ComboBox) != AccessibilityTraits::None) {
181190 return NSAccessibilityComboBoxRole ;
182191 }
192+ // macos only
183193 if ((accessibilityTraits & AccessibilityTraits::Menu) != AccessibilityTraits::None) {
184194 if ((accessibilityTraits & AccessibilityTraits::Bar) != AccessibilityTraits::None) {
185195 return NSAccessibilityMenuBarRole ;
@@ -201,11 +211,16 @@ inline NSAccessibilityRole RCTUIAccessibilityRoleFromAccessibilityTraits(
201211 if ((accessibilityTraits & AccessibilityTraits::SpinButton) != AccessibilityTraits::None) {
202212 return NSAccessibilityIncrementorRole ;
203213 }
214+ // Align with ARIA: `tablist` -> TabGroup
215+ if ((accessibilityTraits & AccessibilityTraits::TabBar) != AccessibilityTraits::None) {
216+ return NSAccessibilityTabGroupRole ;
217+ }
204218 if ((accessibilityTraits & AccessibilityTraits::Tab) != AccessibilityTraits::None) {
205219 if ((accessibilityTraits & AccessibilityTraits::List) != AccessibilityTraits::None) {
206220 return NSAccessibilityTabGroupRole ;
207221 }
208- return NSAccessibilityButtonRole ;
222+ // Align with ARIA mapping where `tab` maps to a RadioButton.
223+ return NSAccessibilityRadioButtonRole ;
209224 }
210225 if ((accessibilityTraits & AccessibilityTraits::Disclosure) != AccessibilityTraits::None) {
211226 return NSAccessibilityDisclosureTriangleRole ;
0 commit comments