Skip to content

Commit 22b8bf5

Browse files
Daksh BhardwajOlimpiaZurek
Daksh Bhardwaj
authored andcommitted
feat: added aria-modal as alias for accessibilityViewIsModal(iOS) (facebook#34506)
Summary: This adds the `aria-modal` prop to the components where it's used as requested on facebook#34424, mapping web [aria-modal](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Attributes/aria-modal) to equivalent [accessibilityViewIsModal](iOS) ## Changelog [General] [Added] - Add aria-modal prop to basic component ## TestPlan Checked manually we are receiving the values by props. Pull Request resolved: facebook#34506 Reviewed By: jacdebug Differential Revision: D39060396 Pulled By: cipolleschi fbshipit-source-id: 80da100ff412b17ba29ddc6d811afb4b0207ac9f
1 parent d9fad5b commit 22b8bf5

File tree

7 files changed

+25
-4
lines changed

7 files changed

+25
-4
lines changed

Libraries/Components/Pressable/Pressable.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ type Props = $ReadOnly<{|
5555
'aria-valuenow'?: AccessibilityValue['now'],
5656
'aria-valuetext'?: AccessibilityValue['text'],
5757
accessibilityViewIsModal?: ?boolean,
58+
'aria-modal'?: ?boolean,
5859
accessible?: ?boolean,
5960

6061
/**
@@ -265,6 +266,8 @@ function Pressable(props: Props, forwardedRef): React.Node {
265266
...restProps,
266267
...android_rippleConfig?.viewProps,
267268
accessible: accessible !== false,
269+
accessibilityViewIsModal:
270+
restProps['aria-modal'] ?? restProps.accessibilityViewIsModal,
268271
accessibilityLiveRegion,
269272
accessibilityLabel,
270273
accessibilityState: _accessibilityState,

Libraries/Components/Touchable/TouchableBounce.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,9 @@ class TouchableBounce extends React.Component<Props, State> {
173173
? 'no-hide-descendants'
174174
: this.props.importantForAccessibility
175175
}
176-
accessibilityViewIsModal={this.props.accessibilityViewIsModal}
176+
accessibilityViewIsModal={
177+
this.props['aria-modal'] ?? this.props.accessibilityViewIsModal
178+
}
177179
accessibilityElementsHidden={
178180
this.props['aria-hidden'] ?? this.props.accessibilityElementsHidden
179181
}

Libraries/Components/Touchable/TouchableHighlight.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -321,8 +321,10 @@ class TouchableHighlight extends React.Component<Props, State> {
321321
? 'no-hide-descendants'
322322
: this.props.importantForAccessibility
323323
}
324+
accessibilityViewIsModal={
325+
this.props['aria-modal'] ?? this.props.accessibilityViewIsModal
326+
}
324327
accessibilityLiveRegion={accessibilityLiveRegion}
325-
accessibilityViewIsModal={this.props.accessibilityViewIsModal}
326328
accessibilityElementsHidden={
327329
this.props['aria-hidden'] ?? this.props.accessibilityElementsHidden
328330
}

Libraries/Components/Touchable/TouchableNativeFeedback.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -310,8 +310,9 @@ class TouchableNativeFeedback extends React.Component<Props, State> {
310310
this.props['aria-hidden'] === true
311311
? 'no-hide-descendants'
312312
: this.props.importantForAccessibility,
313+
accessibilityViewIsModal:
314+
this.props['aria-modal'] ?? this.props.accessibilityViewIsModal,
313315
accessibilityLiveRegion: accessibilityLiveRegion,
314-
accessibilityViewIsModal: this.props.accessibilityViewIsModal,
315316
accessibilityElementsHidden:
316317
this.props['aria-hidden'] ?? this.props.accessibilityElementsHidden,
317318
hasTVPreferredFocus: this.props.hasTVPreferredFocus,

Libraries/Components/Touchable/TouchableOpacity.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -265,8 +265,10 @@ class TouchableOpacity extends React.Component<Props, State> {
265265
? 'no-hide-descendants'
266266
: this.props.importantForAccessibility
267267
}
268+
accessibilityViewIsModal={
269+
this.props['aria-modal'] ?? this.props.accessibilityViewIsModal
270+
}
268271
accessibilityLiveRegion={accessibilityLiveRegion}
269-
accessibilityViewIsModal={this.props.accessibilityViewIsModal}
270272
accessibilityElementsHidden={
271273
this.props['aria-hidden'] ?? this.props.accessibilityElementsHidden
272274
}

Libraries/Components/Touchable/TouchableWithoutFeedback.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ type Props = $ReadOnly<{|
4545
'aria-valuenow'?: AccessibilityValue['now'],
4646
'aria-valuetext'?: AccessibilityValue['text'],
4747
accessibilityViewIsModal?: ?boolean,
48+
'aria-modal'?: ?boolean,
4849
accessible?: ?boolean,
4950
/**
5051
* alias for accessibilityState
@@ -102,6 +103,7 @@ const PASSTHROUGH_PROPS = [
102103
'aria-valuenow',
103104
'aria-valuetext',
104105
'accessibilityViewIsModal',
106+
'aria-modal',
105107
'hitSlop',
106108
'importantForAccessibility',
107109
'nativeID',

Libraries/Components/View/ViewPropTypes.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -403,6 +403,15 @@ type IOSViewProps = $ReadOnly<{|
403403
*/
404404
accessibilityViewIsModal?: ?boolean,
405405

406+
/**
407+
* The aria-modal attribute indicates content contained within a modal with aria-modal="true"
408+
* should be accessible to the user.
409+
* Default is `false`.
410+
*
411+
* @platform ios
412+
*/
413+
'aria-modal'?: ?boolean,
414+
406415
/**
407416
* A value indicating whether the accessibility elements contained within
408417
* this accessibility element are hidden.

0 commit comments

Comments
 (0)