Skip to content

Commit 8c0c860

Browse files
xuelgongfacebook-github-bot
authored andcommitted
Add missing accessibility props to Touchables (#27293)
Summary: The following accessibility properties was added for view but not for Touchables - importantForAccessibility, accessibilityLiveRegion, accessibilityViewIsModal and accessibilityElementsHidden. This PR is to extend the support for all touchables. ## Changelog [General] [Added] - Add missing accessibility props on Touchables Pull Request resolved: #27293 Test Plan: Tested in RNTester app. Differential Revision: D18650884 Pulled By: yungsters fbshipit-source-id: 2172ac55a8c8803d7d923511f43b2598593ea1d2
1 parent b7ab922 commit 8c0c860

File tree

6 files changed

+75
-2
lines changed

6 files changed

+75
-2
lines changed

Libraries/Components/Touchable/TouchableBounce.js

+4
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,10 @@ const TouchableBounceImpl = ((createReactClass({
188188
accessibilityActions={this.props.accessibilityActions}
189189
onAccessibilityAction={this.props.onAccessibilityAction}
190190
accessibilityValue={this.props.accessibilityValue}
191+
importantForAccessibility={this.props.importantForAccessibility}
192+
accessibilityLiveRegion={this.props.accessibilityLiveRegion}
193+
accessibilityViewIsModal={this.props.accessibilityViewIsModal}
194+
accessibilityElementsHidden={this.props.accessibilityElementsHidden}
191195
nativeID={this.props.nativeID}
192196
testID={this.props.testID}
193197
hitSlop={this.props.hitSlop}

Libraries/Components/Touchable/TouchableHighlight.js

+4
Original file line numberDiff line numberDiff line change
@@ -397,6 +397,10 @@ const TouchableHighlightImpl = ((createReactClass({
397397
accessibilityValue={this.props.accessibilityValue}
398398
accessibilityActions={this.props.accessibilityActions}
399399
onAccessibilityAction={this.props.onAccessibilityAction}
400+
importantForAccessibility={this.props.importantForAccessibility}
401+
accessibilityLiveRegion={this.props.accessibilityLiveRegion}
402+
accessibilityViewIsModal={this.props.accessibilityViewIsModal}
403+
accessibilityElementsHidden={this.props.accessibilityElementsHidden}
400404
style={StyleSheet.compose(
401405
this.props.style,
402406
this.state.extraUnderlayStyle,

Libraries/Components/Touchable/TouchableNativeFeedback.android.js

+4
Original file line numberDiff line numberDiff line change
@@ -360,6 +360,10 @@ const TouchableNativeFeedbackImpl = createReactClass({
360360
accessibilityActions: this.props.accessibilityActions,
361361
onAccessibilityAction: this.props.onAccessibilityAction,
362362
accessibilityValue: this.props.accessibilityValue,
363+
importantForAccessibility: this.props.importantForAccessibility,
364+
accessibilityLiveRegion: this.props.accessibilityLiveRegion,
365+
accessibilityViewIsModal: this.props.accessibilityViewIsModal,
366+
accessibilityElementsHidden: this.props.accessibilityElementsHidden,
363367
children,
364368
testID: this.props.testID,
365369
onLayout: this.props.onLayout,

Libraries/Components/Touchable/TouchableOpacity.js

+4
Original file line numberDiff line numberDiff line change
@@ -310,6 +310,10 @@ const TouchableOpacityImpl = ((createReactClass({
310310
accessibilityActions={this.props.accessibilityActions}
311311
onAccessibilityAction={this.props.onAccessibilityAction}
312312
accessibilityValue={this.props.accessibilityValue}
313+
importantForAccessibility={this.props.importantForAccessibility}
314+
accessibilityLiveRegion={this.props.accessibilityLiveRegion}
315+
accessibilityViewIsModal={this.props.accessibilityViewIsModal}
316+
accessibilityElementsHidden={this.props.accessibilityElementsHidden}
313317
style={[this.props.style, {opacity: this.state.anim}]}
314318
nativeID={this.props.nativeID}
315319
testID={this.props.testID}

Libraries/Components/Touchable/TouchableWithoutFeedback.js

+57
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,10 @@ const OVERRIDE_PROPS = [
5151
'accessibilityActions',
5252
'onAccessibilityAction',
5353
'accessibilityValue',
54+
'importantForAccessibility',
55+
'accessibilityLiveRegion',
56+
'accessibilityViewIsModal',
57+
'accessibilityElementsHidden',
5458
'hitSlop',
5559
'nativeID',
5660
'onBlur',
@@ -68,13 +72,17 @@ export type Props = $ReadOnly<{|
6872
accessibilityState?: ?AccessibilityState,
6973
accessibilityValue?: ?AccessibilityValue,
7074
accessible?: ?boolean,
75+
accessibilityLiveRegion?: ?('none' | 'polite' | 'assertive'),
76+
accessibilityViewIsModal?: ?boolean,
77+
accessibilityElementsHidden?: ?boolean,
7178
children?: ?React.Node,
7279
delayLongPress?: ?number,
7380
delayPressIn?: ?number,
7481
delayPressOut?: ?number,
7582
disabled?: ?boolean,
7683
focusable?: ?boolean,
7784
hitSlop?: ?EdgeInsetsProp,
85+
importantForAccessibility?: ?('auto' | 'yes' | 'no' | 'no-hide-descendants'),
7886
nativeID?: ?string,
7987
onAccessibilityAction?: ?(event: AccessibilityActionEvent) => mixed,
8088
onBlur?: ?(event: BlurEvent) => mixed,
@@ -111,6 +119,55 @@ const TouchableWithoutFeedbackImpl = ((createReactClass({
111119
accessibilityActions: PropTypes.array,
112120
onAccessibilityAction: PropTypes.func,
113121
accessibilityValue: PropTypes.object,
122+
/**
123+
* Indicates to accessibility services whether the user should be notified
124+
* when this view changes. Works for Android API >= 19 only.
125+
*
126+
* @platform android
127+
*
128+
* See http://facebook.github.io/react-native/docs/view.html#accessibilityliveregion
129+
*/
130+
accessibilityLiveRegion: (PropTypes.oneOf([
131+
'none',
132+
'polite',
133+
'assertive',
134+
]): React$PropType$Primitive<'none' | 'polite' | 'assertive'>),
135+
/**
136+
* Controls how view is important for accessibility which is if it
137+
* fires accessibility events and if it is reported to accessibility services
138+
* that query the screen. Works for Android only.
139+
*
140+
* @platform android
141+
*
142+
* See http://facebook.github.io/react-native/docs/view.html#importantforaccessibility
143+
*/
144+
importantForAccessibility: (PropTypes.oneOf([
145+
'auto',
146+
'yes',
147+
'no',
148+
'no-hide-descendants',
149+
]): React$PropType$Primitive<
150+
'auto' | 'yes' | 'no' | 'no-hide-descendants',
151+
>),
152+
/**
153+
* A value indicating whether VoiceOver should ignore the elements
154+
* within views that are siblings of the receiver.
155+
* Default is `false`.
156+
*
157+
* @platform ios
158+
*
159+
* See http://facebook.github.io/react-native/docs/view.html#accessibilityviewismodal
160+
*/
161+
accessibilityViewIsModal: PropTypes.bool,
162+
/**
163+
* A value indicating whether the accessibility elements contained within
164+
* this accessibility element are hidden.
165+
*
166+
* @platform ios
167+
*
168+
* See http://facebook.github.io/react-native/docs/view.html#accessibilityElementsHidden
169+
*/
170+
accessibilityElementsHidden: PropTypes.bool,
114171
/**
115172
* When `accessible` is true (which is the default) this may be called when
116173
* the OS-specific concept of "focus" occurs. Some platforms may not have

RNTester/js/examples/Accessibility/AccessibilityAndroidExample.android.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ class AccessibilityAndroidExample extends React.Component {
6868

6969
<RNTesterBlock title="Overlapping views and importantForAccessibility property">
7070
<View style={styles.container}>
71-
<View
71+
<TouchableWithoutFeedback
7272
style={{
7373
position: 'absolute',
7474
left: 10,
@@ -87,7 +87,7 @@ class AccessibilityAndroidExample extends React.Component {
8787
<View accessible={true}>
8888
<Text style={{fontSize: 25}}>Hello</Text>
8989
</View>
90-
</View>
90+
</TouchableWithoutFeedback>
9191
<View
9292
style={{
9393
position: 'absolute',

0 commit comments

Comments
 (0)