@@ -83,6 +83,7 @@ inline UIAccessibilityTraits RCTUIAccessibilityTraitsFromAccessibilityTraits(
83
83
if ((accessibilityTraits & AccessibilityTraits::Image) != AccessibilityTraits::None) {
84
84
result |= UIAccessibilityTraitImage;
85
85
}
86
+ // not in macos
86
87
if ((accessibilityTraits & AccessibilityTraits::Selected) != AccessibilityTraits::None) {
87
88
result |= UIAccessibilityTraitSelected;
88
89
}
@@ -98,24 +99,29 @@ inline UIAccessibilityTraits RCTUIAccessibilityTraitsFromAccessibilityTraits(
98
99
if ((accessibilityTraits & AccessibilityTraits::SummaryElement) != AccessibilityTraits::None) {
99
100
result |= UIAccessibilityTraitSummaryElement;
100
101
}
102
+ // not on macos
101
103
if ((accessibilityTraits & AccessibilityTraits::NotEnabled) != AccessibilityTraits::None) {
102
104
result |= UIAccessibilityTraitNotEnabled;
103
105
}
106
+ // not on macos
104
107
if ((accessibilityTraits & AccessibilityTraits::UpdatesFrequently) != AccessibilityTraits::None) {
105
108
result |= UIAccessibilityTraitUpdatesFrequently;
106
109
}
107
110
if ((accessibilityTraits & AccessibilityTraits::SearchField) != AccessibilityTraits::None) {
108
111
result |= UIAccessibilityTraitSearchField;
109
112
}
113
+ // not on macos
110
114
if ((accessibilityTraits & AccessibilityTraits::StartsMediaSession) != AccessibilityTraits::None) {
111
115
result |= UIAccessibilityTraitStartsMediaSession;
112
116
}
113
117
if ((accessibilityTraits & AccessibilityTraits::Adjustable) != AccessibilityTraits::None) {
114
118
result |= UIAccessibilityTraitAdjustable;
115
119
}
120
+ // not on macos
116
121
if ((accessibilityTraits & AccessibilityTraits::AllowsDirectInteraction) != AccessibilityTraits::None) {
117
122
result |= UIAccessibilityTraitAllowsDirectInteraction;
118
123
}
124
+ // not on macOS
119
125
if ((accessibilityTraits & AccessibilityTraits::CausesPageTurn) != AccessibilityTraits::None) {
120
126
result |= UIAccessibilityTraitCausesPageTurn;
121
127
}
@@ -136,6 +142,7 @@ inline NSAccessibilityRole RCTUIAccessibilityRoleFromAccessibilityTraits(
136
142
{
137
143
using AccessibilityTraits = facebook::react::AccessibilityTraits;
138
144
if ((accessibilityTraits & AccessibilityTraits::Button) != AccessibilityTraits::None) {
145
+ // check
139
146
if ((accessibilityTraits & AccessibilityTraits::Bar) != AccessibilityTraits::None) {
140
147
return NSAccessibilityToolbarRole ;
141
148
}
@@ -145,6 +152,7 @@ inline NSAccessibilityRole RCTUIAccessibilityRoleFromAccessibilityTraits(
145
152
if ((accessibilityTraits & AccessibilityTraits::Menu) != AccessibilityTraits::None) {
146
153
return NSAccessibilityMenuButtonRole ;
147
154
}
155
+ // check end
148
156
return NSAccessibilityButtonRole ;
149
157
}
150
158
if ((accessibilityTraits & AccessibilityTraits::Link) != AccessibilityTraits::None) {
@@ -162,6 +170,9 @@ inline NSAccessibilityRole RCTUIAccessibilityRoleFromAccessibilityTraits(
162
170
if ((accessibilityTraits & AccessibilityTraits::SummaryElement) != AccessibilityTraits::None) {
163
171
return NSAccessibilityStaticTextRole ;
164
172
}
173
+ if ((accessibilityTraits & AccessibilityTraits::UpdatesFrequently) != AccessibilityTraits::None) {
174
+ return NSAccessibilityProgressIndicatorRole ;
175
+ }
165
176
if ((accessibilityTraits & AccessibilityTraits::SearchField) != AccessibilityTraits::None) {
166
177
return NSAccessibilityTextFieldRole ;
167
178
}
@@ -174,12 +185,11 @@ inline NSAccessibilityRole RCTUIAccessibilityRoleFromAccessibilityTraits(
174
185
if ((accessibilityTraits & AccessibilityTraits::Switch) != AccessibilityTraits::None) {
175
186
return NSAccessibilityCheckBoxRole ;
176
187
}
177
- if ((accessibilityTraits & AccessibilityTraits::UpdatesFrequently) != AccessibilityTraits::None) {
178
- return NSAccessibilityProgressIndicatorRole ;
179
- }
188
+ // macos only
180
189
if ((accessibilityTraits & AccessibilityTraits::ComboBox) != AccessibilityTraits::None) {
181
190
return NSAccessibilityComboBoxRole ;
182
191
}
192
+ // macos only
183
193
if ((accessibilityTraits & AccessibilityTraits::Menu) != AccessibilityTraits::None) {
184
194
if ((accessibilityTraits & AccessibilityTraits::Bar) != AccessibilityTraits::None) {
185
195
return NSAccessibilityMenuBarRole ;
@@ -201,11 +211,16 @@ inline NSAccessibilityRole RCTUIAccessibilityRoleFromAccessibilityTraits(
201
211
if ((accessibilityTraits & AccessibilityTraits::SpinButton) != AccessibilityTraits::None) {
202
212
return NSAccessibilityIncrementorRole ;
203
213
}
214
+ // Align with ARIA: `tablist` -> TabGroup
215
+ if ((accessibilityTraits & AccessibilityTraits::TabBar) != AccessibilityTraits::None) {
216
+ return NSAccessibilityTabGroupRole ;
217
+ }
204
218
if ((accessibilityTraits & AccessibilityTraits::Tab) != AccessibilityTraits::None) {
205
219
if ((accessibilityTraits & AccessibilityTraits::List) != AccessibilityTraits::None) {
206
220
return NSAccessibilityTabGroupRole ;
207
221
}
208
- return NSAccessibilityButtonRole ;
222
+ // Align with ARIA mapping where `tab` maps to a RadioButton.
223
+ return NSAccessibilityRadioButtonRole ;
209
224
}
210
225
if ((accessibilityTraits & AccessibilityTraits::Disclosure) != AccessibilityTraits::None) {
211
226
return NSAccessibilityDisclosureTriangleRole ;
0 commit comments