Skip to content

Commit 15da31c

Browse files
chore: Repalce accessibilityRole map with getAccessibilityRoleFromRole
1 parent d9c2f99 commit 15da31c

File tree

3 files changed

+144
-71
lines changed

3 files changed

+144
-71
lines changed

Libraries/Components/View/View.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import type {ViewProps} from './ViewPropTypes';
1212

1313
import flattenStyle from '../../StyleSheet/flattenStyle';
1414
import TextAncestor from '../../Text/TextAncestor';
15-
import {roleToAccessibilityRoleMapping} from '../../Utilities/AcessibilityMapping';
15+
import {getAccessibilityRoleFromRole} from '../../Utilities/AcessibilityMapping';
1616
import ViewNativeComponent from './ViewNativeComponent';
1717
import * as React from 'react';
1818

@@ -95,7 +95,7 @@ const View: React.AbstractComponent<
9595
focusable={tabIndex !== undefined ? !tabIndex : focusable}
9696
accessibilityState={_accessibilityState}
9797
accessibilityRole={
98-
role ? roleToAccessibilityRoleMapping[role] : accessibilityRole
98+
role ? getAccessibilityRoleFromRole(role) : accessibilityRole
9999
}
100100
accessibilityElementsHidden={
101101
ariaHidden ?? accessibilityElementsHidden

Libraries/Text/Text.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@ import usePressability from '../Pressability/usePressability';
1515
import flattenStyle from '../StyleSheet/flattenStyle';
1616
import processColor from '../StyleSheet/processColor';
1717
import StyleSheet from '../StyleSheet/StyleSheet';
18+
import {getAccessibilityRoleFromRole} from '../Utilities/AcessibilityMapping';
1819
import Platform from '../Utilities/Platform';
1920
import TextAncestor from './TextAncestor';
2021
import {NativeText, NativeVirtualText} from './TextNativeComponent';
2122
import {type TextProps} from './TextProps';
2223
import * as React from 'react';
2324
import {useContext, useMemo, useState} from 'react';
24-
import {roleToAccessibilityRoleMapping} from '../Utilities/AcessibilityMapping';
2525

2626
/**
2727
* Text is the fundamental component for displaying text.
@@ -227,7 +227,7 @@ const Text: React.AbstractComponent<
227227
{...eventHandlersForText}
228228
accessibilityLabel={ariaLabel ?? accessibilityLabel}
229229
accessibilityRole={
230-
role ? roleToAccessibilityRoleMapping[role] : accessibilityRole
230+
role ? getAccessibilityRoleFromRole(role) : accessibilityRole
231231
}
232232
isHighlighted={isHighlighted}
233233
isPressable={isPressable}
@@ -253,7 +253,7 @@ const Text: React.AbstractComponent<
253253
accessibilityLabel={ariaLabel ?? accessibilityLabel}
254254
accessibilityState={nativeTextAccessibilityState}
255255
accessibilityRole={
256-
role ? roleToAccessibilityRoleMapping[role] : accessibilityRole
256+
role ? getAccessibilityRoleFromRole(role) : accessibilityRole
257257
}
258258
allowFontScaling={allowFontScaling !== false}
259259
ellipsizeMode={ellipsizeMode ?? 'tail'}

Libraries/Utilities/AcessibilityMapping.js

Lines changed: 139 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -10,70 +10,143 @@
1010

1111
'use strict';
1212

13+
import type {
14+
AccessibilityRole,
15+
Role,
16+
} from '../Components/View/ViewAccessibility';
17+
1318
// Map role values to AccessibilityRole values
14-
export const roleToAccessibilityRoleMapping = {
15-
alert: 'alert',
16-
alertdialog: undefined,
17-
application: undefined,
18-
article: undefined,
19-
banner: undefined,
20-
button: 'button',
21-
cell: undefined,
22-
checkbox: 'checkbox',
23-
columnheader: undefined,
24-
combobox: 'combobox',
25-
complementary: undefined,
26-
contentinfo: undefined,
27-
definition: undefined,
28-
dialog: undefined,
29-
directory: undefined,
30-
document: undefined,
31-
feed: undefined,
32-
figure: undefined,
33-
form: undefined,
34-
grid: 'grid',
35-
group: undefined,
36-
heading: 'header',
37-
img: 'image',
38-
link: 'link',
39-
list: 'list',
40-
listitem: undefined,
41-
log: undefined,
42-
main: undefined,
43-
marquee: undefined,
44-
math: undefined,
45-
menu: 'menu',
46-
menubar: 'menubar',
47-
menuitem: 'menuitem',
48-
meter: undefined,
49-
navigation: undefined,
50-
none: 'none',
51-
note: undefined,
52-
presentation: 'none',
53-
progressbar: 'progressbar',
54-
radio: 'radio',
55-
radiogroup: 'radiogroup',
56-
region: undefined,
57-
row: undefined,
58-
rowgroup: undefined,
59-
rowheader: undefined,
60-
scrollbar: 'scrollbar',
61-
searchbox: 'search',
62-
separator: undefined,
63-
slider: 'adjustable',
64-
spinbutton: 'spinbutton',
65-
status: undefined,
66-
summary: 'summary',
67-
switch: 'switch',
68-
tab: 'tab',
69-
table: undefined,
70-
tablist: 'tablist',
71-
tabpanel: undefined,
72-
term: undefined,
73-
timer: 'timer',
74-
toolbar: 'toolbar',
75-
tooltip: undefined,
76-
tree: undefined,
77-
treegrid: undefined,
78-
treeitem: undefined,
79-
};
19+
export function getAccessibilityRoleFromRole(role: Role): ?AccessibilityRole {
20+
switch (role) {
21+
case 'alert':
22+
return 'alert';
23+
case 'alertdialog':
24+
return undefined;
25+
case 'application':
26+
return undefined;
27+
case 'article':
28+
return undefined;
29+
case 'banner':
30+
return undefined;
31+
case 'button':
32+
return 'button';
33+
case 'cell':
34+
return undefined;
35+
case 'checkbox':
36+
return 'checkbox';
37+
case 'columnheader':
38+
return undefined;
39+
case 'combobox':
40+
return 'combobox';
41+
case 'complementary':
42+
return undefined;
43+
case 'contentinfo':
44+
return undefined;
45+
case 'definition':
46+
return undefined;
47+
case 'dialog':
48+
return undefined;
49+
case 'directory':
50+
return undefined;
51+
case 'document':
52+
return undefined;
53+
case 'feed':
54+
return undefined;
55+
case 'figure':
56+
return undefined;
57+
case 'form':
58+
return undefined;
59+
case 'grid':
60+
return 'grid';
61+
case 'group':
62+
return undefined;
63+
case 'heading':
64+
return 'header';
65+
case 'img':
66+
return 'image';
67+
case 'link':
68+
return 'link';
69+
case 'list':
70+
return 'list';
71+
case 'listitem':
72+
return undefined;
73+
case 'log':
74+
return undefined;
75+
case 'main':
76+
return undefined;
77+
case 'marquee':
78+
return undefined;
79+
case 'math':
80+
return undefined;
81+
case 'menu':
82+
return 'menu';
83+
case 'menubar':
84+
return 'menubar';
85+
case 'menuitem':
86+
return 'menuitem';
87+
case 'meter':
88+
return undefined;
89+
case 'navigation':
90+
return undefined;
91+
case 'none':
92+
return 'none';
93+
case 'note':
94+
return undefined;
95+
case 'presentation':
96+
return 'none';
97+
case 'progressbar':
98+
return 'progressbar';
99+
case 'radio':
100+
return 'radio';
101+
case 'radiogroup':
102+
return 'radiogroup';
103+
case 'region':
104+
return undefined;
105+
case 'row':
106+
return undefined;
107+
case 'rowgroup':
108+
return undefined;
109+
case 'rowheader':
110+
return undefined;
111+
case 'scrollbar':
112+
return 'scrollbar';
113+
case 'searchbox':
114+
return 'search';
115+
case 'separator':
116+
return undefined;
117+
case 'slider':
118+
return 'adjustable';
119+
case 'spinbutton':
120+
return 'spinbutton';
121+
case 'status':
122+
return undefined;
123+
case 'summary':
124+
return 'summary';
125+
case 'switch':
126+
return 'switch';
127+
case 'tab':
128+
return 'tab';
129+
case 'table':
130+
return undefined;
131+
case 'tablist':
132+
return 'tablist';
133+
case 'tabpanel':
134+
return undefined;
135+
case 'term':
136+
return undefined;
137+
case 'timer':
138+
return 'timer';
139+
case 'toolbar':
140+
return 'toolbar';
141+
case 'tooltip':
142+
return undefined;
143+
case 'tree':
144+
return undefined;
145+
case 'treegrid':
146+
return undefined;
147+
case 'treeitem':
148+
return undefined;
149+
}
150+
151+
return undefined;
152+
}

0 commit comments

Comments
 (0)