Skip to content

Commit bbef9bb

Browse files
committed
wip
1 parent d8bc0e2 commit bbef9bb

File tree

1 file changed

+19
-4
lines changed

1 file changed

+19
-4
lines changed

packages/react-native/React/Fabric/RCTConversions.h

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)