Skip to content

Commit a2121a2

Browse files
feat: Add aria-hidden prop to Pressable and Touchables components
1 parent 2560bd5 commit a2121a2

File tree

7 files changed

+44
-11
lines changed

7 files changed

+44
-11
lines changed

Libraries/Components/Pressable/Pressable.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,11 @@ type Props = $ReadOnly<{|
5252
accessibilityValue?: ?AccessibilityValue,
5353
accessibilityViewIsModal?: ?boolean,
5454
accessible?: ?boolean,
55+
/**
56+
* A value indicating whether the accessibility elements contained within
57+
* this accessibility element are hidden.
58+
*/
59+
'aria-hidden'?: ?boolean,
5560
focusable?: ?boolean,
5661
importantForAccessibility?: ?('auto' | 'yes' | 'no' | 'no-hide-descendants'),
5762
onAccessibilityAction?: ?(event: AccessibilityActionEvent) => mixed,

Libraries/Components/Touchable/TouchableBounce.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,10 +143,16 @@ class TouchableBounce extends React.Component<Props, State> {
143143
accessibilityActions={this.props.accessibilityActions}
144144
onAccessibilityAction={this.props.onAccessibilityAction}
145145
accessibilityValue={this.props.accessibilityValue}
146-
importantForAccessibility={this.props.importantForAccessibility}
146+
importantForAccessibility={
147+
this.props['aria-hidden'] === true
148+
? 'no-hide-descendants'
149+
: this.props.importantForAccessibility
150+
}
147151
accessibilityLiveRegion={this.props.accessibilityLiveRegion}
148152
accessibilityViewIsModal={this.props.accessibilityViewIsModal}
149-
accessibilityElementsHidden={this.props.accessibilityElementsHidden}
153+
accessibilityElementsHidden={
154+
this.props['aria-hidden'] ?? this.props.accessibilityElementsHidden
155+
}
150156
nativeID={this.props.nativeID}
151157
testID={this.props.testID}
152158
hitSlop={this.props.hitSlop}

Libraries/Components/Touchable/TouchableHighlight.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -302,10 +302,16 @@ class TouchableHighlight extends React.Component<Props, State> {
302302
accessibilityValue={this.props.accessibilityValue}
303303
accessibilityActions={this.props.accessibilityActions}
304304
onAccessibilityAction={this.props.onAccessibilityAction}
305-
importantForAccessibility={this.props.importantForAccessibility}
305+
importantForAccessibility={
306+
this.props['aria-hidden'] === true
307+
? 'no-hide-descendants'
308+
: this.props.importantForAccessibility
309+
}
306310
accessibilityLiveRegion={this.props.accessibilityLiveRegion}
307311
accessibilityViewIsModal={this.props.accessibilityViewIsModal}
308-
accessibilityElementsHidden={this.props.accessibilityElementsHidden}
312+
accessibilityElementsHidden={
313+
this.props['aria-hidden'] ?? this.props.accessibilityElementsHidden
314+
}
309315
style={StyleSheet.compose(
310316
this.props.style,
311317
this.state.extraStyles?.underlay,

Libraries/Components/Touchable/TouchableNativeFeedback.js

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -278,10 +278,14 @@ class TouchableNativeFeedback extends React.Component<Props, State> {
278278
accessibilityActions: this.props.accessibilityActions,
279279
onAccessibilityAction: this.props.onAccessibilityAction,
280280
accessibilityValue: this.props.accessibilityValue,
281-
importantForAccessibility: this.props.importantForAccessibility,
281+
importantForAccessibility:
282+
this.props['aria-hidden'] === true
283+
? 'no-hide-descendants'
284+
: this.props.importantForAccessibility,
282285
accessibilityLiveRegion: this.props.accessibilityLiveRegion,
283286
accessibilityViewIsModal: this.props.accessibilityViewIsModal,
284-
accessibilityElementsHidden: this.props.accessibilityElementsHidden,
287+
accessibilityElementsHidden:
288+
this.props['aria-hidden'] ?? this.props.accessibilityElementsHidden,
285289
hasTVPreferredFocus: this.props.hasTVPreferredFocus,
286290
hitSlop: this.props.hitSlop,
287291
focusable:

Libraries/Components/Touchable/TouchableOpacity.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -231,10 +231,16 @@ class TouchableOpacity extends React.Component<Props, State> {
231231
accessibilityActions={this.props.accessibilityActions}
232232
onAccessibilityAction={this.props.onAccessibilityAction}
233233
accessibilityValue={this.props.accessibilityValue}
234-
importantForAccessibility={this.props.importantForAccessibility}
234+
importantForAccessibility={
235+
this.props['aria-hidden'] === true
236+
? 'no-hide-descendants'
237+
: this.props.importantForAccessibility
238+
}
235239
accessibilityLiveRegion={this.props.accessibilityLiveRegion}
236240
accessibilityViewIsModal={this.props.accessibilityViewIsModal}
237-
accessibilityElementsHidden={this.props.accessibilityElementsHidden}
241+
accessibilityElementsHidden={
242+
this.props['aria-hidden'] ?? this.props.accessibilityElementsHidden
243+
}
238244
style={[this.props.style, {opacity: this.state.anim}]}
239245
nativeID={this.props.nativeID}
240246
testID={this.props.testID}

Libraries/Components/Touchable/TouchableWithoutFeedback.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ type Props = $ReadOnly<{|
4242
accessibilityValue?: ?AccessibilityValue,
4343
accessibilityViewIsModal?: ?boolean,
4444
accessible?: ?boolean,
45+
'aria-hidden'?: ?boolean,
4546
children?: ?React.Node,
4647
delayLongPress?: ?number,
4748
delayPressIn?: ?number,
@@ -71,7 +72,6 @@ type State = $ReadOnly<{|
7172

7273
const PASSTHROUGH_PROPS = [
7374
'accessibilityActions',
74-
'accessibilityElementsHidden',
7575
'accessibilityHint',
7676
'accessibilityLanguage',
7777
'accessibilityIgnoresInvertColors',
@@ -81,7 +81,6 @@ const PASSTHROUGH_PROPS = [
8181
'accessibilityValue',
8282
'accessibilityViewIsModal',
8383
'hitSlop',
84-
'importantForAccessibility',
8584
'nativeID',
8685
'onAccessibilityAction',
8786
'onBlur',
@@ -123,6 +122,13 @@ class TouchableWithoutFeedback extends React.Component<Props, State> {
123122
: this.props.accessibilityState,
124123
focusable:
125124
this.props.focusable !== false && this.props.onPress !== undefined,
125+
126+
accessibilityElementsHidden:
127+
this.props['aria-hidden'] ?? this.props.accessibilityElementsHidden,
128+
importantForAccessibility:
129+
this.props['aria-hidden'] === true
130+
? 'no-hide-descendants'
131+
: this.props.importantForAccessibility,
126132
};
127133
for (const prop of PASSTHROUGH_PROPS) {
128134
if (this.props[prop] !== undefined) {

Libraries/Components/View/View.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ const View: React.AbstractComponent<
125125
ariaHidden ?? accessibilityElementsHidden
126126
}
127127
importantForAccessibility={
128-
ariaHidden !== undefined
128+
ariaHidden === true
129129
? 'no-hide-descendants'
130130
: importantForAccessibility
131131
}

0 commit comments

Comments
 (0)