Skip to content

Commit 3183aac

Browse files
authored
Add aria-required and aria-multiselectable to accessibilityState on win32 (#12046) (#12061)
* add missing a11yState props on win32 * Change files * fix missing a11yState props for other components * minor fix * add aria- equivalent props * edit change file comment * Add win32 comment tags * lint fix * fix lint errors * add aria- props to textprops * remove unneeded props
1 parent f7e59bd commit 3183aac

File tree

9 files changed

+39
-1
lines changed

9 files changed

+39
-1
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"type": "prerelease",
3+
"comment": "fix a11yState and add support for aria-required and -multiselectable",
4+
"packageName": "@office-iss/react-native-win32",
5+
"email": "[email protected]",
6+
"dependentChangeType": "patch"
7+
}

packages/@office-iss/react-native-win32-tester/src/js/examples-win32/Accessibility/AccessibilityExampleWin32.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ class MultiSelectionExample extends React.Component<{}, IMultiSelectionExampleSt
181181

182182
public render() {
183183
return (
184-
<ViewWin32 accessible accessibilityRole="tablist" accessibilityState={{multiselectable: true}}>
184+
<ViewWin32 accessible accessibilityRole="tablist" aria-required aria-multiselectable>
185185
<SelectionItemComponent
186186
value={1}
187187
color="#aee8fcff"

packages/@office-iss/react-native-win32/src/Libraries/Components/Pressable/Pressable.win32.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@ type Props = $ReadOnly<{|
7474
'aria-disabled'?: ?boolean,
7575
'aria-expanded'?: ?boolean,
7676
'aria-selected'?: ?boolean,
77+
'aria-multiselectable'?: ?boolean, // Win32
78+
'aria-required'?: ?boolean, // Win32
7779
/**
7880
* A value indicating whether the accessibility elements contained within
7981
* this accessibility element are hidden.
@@ -257,6 +259,8 @@ function Pressable(props: Props, forwardedRef): React.Node {
257259
'aria-disabled': ariaDisabled,
258260
'aria-expanded': ariaExpanded,
259261
'aria-label': ariaLabel,
262+
'aria-multiselectable': ariaMultiselectable, // Win32
263+
'aria-required': ariaRequired, // Win32
260264
'aria-selected': ariaSelected,
261265
cancelable,
262266
children,
@@ -297,6 +301,8 @@ function Pressable(props: Props, forwardedRef): React.Node {
297301
checked: ariaChecked ?? accessibilityState?.checked,
298302
disabled: ariaDisabled ?? accessibilityState?.disabled,
299303
expanded: ariaExpanded ?? accessibilityState?.expanded,
304+
multiselectable: ariaMultiselectable ?? accessibilityState?.multiselectable, // Win32
305+
required: ariaRequired ?? accessibilityState?.required, // Win32
300306
selected: ariaSelected ?? accessibilityState?.selected,
301307
};
302308

packages/@office-iss/react-native-win32/src/Libraries/Components/TextInput/TextInput.win32.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1101,6 +1101,8 @@ function InternalTextInput(props: Props): React.Node {
11011101
'aria-disabled': ariaDisabled,
11021102
'aria-expanded': ariaExpanded,
11031103
'aria-selected': ariaSelected,
1104+
'aria-multiselectable': ariaMultiselectable, // Win32
1105+
'aria-required': ariaRequired, // Win32
11041106
accessibilityState,
11051107
id,
11061108
tabIndex,
@@ -1491,13 +1493,18 @@ function InternalTextInput(props: Props): React.Node {
14911493
ariaChecked != null ||
14921494
ariaDisabled != null ||
14931495
ariaExpanded != null ||
1496+
ariaMultiselectable != null ||
1497+
ariaRequired != null ||
14941498
ariaSelected != null
14951499
) {
14961500
_accessibilityState = {
14971501
busy: ariaBusy ?? accessibilityState?.busy,
14981502
checked: ariaChecked ?? accessibilityState?.checked,
14991503
disabled: ariaDisabled ?? accessibilityState?.disabled,
15001504
expanded: ariaExpanded ?? accessibilityState?.expanded,
1505+
multiselectable:
1506+
ariaMultiselectable ?? accessibilityState?.multiselectable, // Win32
1507+
required: ariaRequired ?? accessibilityState?.required, // Win32
15011508
selected: ariaSelected ?? accessibilityState?.selected,
15021509
};
15031510
}

packages/@office-iss/react-native-win32/src/Libraries/Components/View/View.win32.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ const View: React.AbstractComponent<
5050
'aria-label': ariaLabel,
5151
'aria-labelledby': ariaLabelledBy,
5252
'aria-live': ariaLive,
53+
'aria-multiselectable': ariaMultiselectable, // Win32
54+
'aria-required': ariaRequired, // Win32
5355
'aria-selected': ariaSelected,
5456
'aria-valuemax': ariaValueMax,
5557
'aria-valuemin': ariaValueMin,
@@ -76,13 +78,18 @@ const View: React.AbstractComponent<
7678
ariaChecked != null ||
7779
ariaDisabled != null ||
7880
ariaExpanded != null ||
81+
ariaMultiselectable != null ||
82+
ariaRequired != null ||
7983
ariaSelected != null
8084
) {
8185
_accessibilityState = {
8286
busy: ariaBusy ?? accessibilityState?.busy,
8387
checked: ariaChecked ?? accessibilityState?.checked,
8488
disabled: ariaDisabled ?? accessibilityState?.disabled,
8589
expanded: ariaExpanded ?? accessibilityState?.expanded,
90+
multiselectable:
91+
ariaMultiselectable ?? accessibilityState?.multiselectable, // Win32
92+
required: ariaRequired ?? accessibilityState?.required, // Win32
8693
selected: ariaSelected ?? accessibilityState?.selected,
8794
};
8895
}

packages/@office-iss/react-native-win32/src/Libraries/Components/View/ViewAccessibility.d.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ export interface AccessibilityProps
5757
'aria-checked'?: boolean | 'mixed' | undefined;
5858
'aria-disabled'?: boolean | undefined;
5959
'aria-expanded'?: boolean | undefined;
60+
'aria-multiselectable'?: boolean | undefined; // Win32
61+
'aria-required'?: boolean | undefined; // Win32
6062
'aria-selected'?: boolean | undefined;
6163

6264
/**

packages/@office-iss/react-native-win32/src/Libraries/Components/View/ViewAccessibility.win32.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,8 @@ export type AccessibilityState = {
152152
checked?: ?boolean | 'mixed',
153153
busy?: boolean,
154154
expanded?: boolean,
155+
multiselectable?: boolean, // Win32
156+
required?: boolean, // Win32
155157
...
156158
};
157159

packages/@office-iss/react-native-win32/src/Libraries/Components/View/ViewPropTypes.win32.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -467,6 +467,8 @@ type WindowsViewProps = $ReadOnly<{|
467467

468468
accessibilityPosInSet?: ?number,
469469
accessibilitySetSize?: ?number,
470+
'aria-multiselectable'?: ?boolean,
471+
'aria-required'?: ?boolean,
470472

471473
/**
472474
* Specifies if the control should show System focus visuals

packages/@office-iss/react-native-win32/src/Libraries/Image/Image.win32.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,8 @@ const BaseImage = (props: ImagePropsType, forwardedRef) => {
170170
'aria-checked': ariaChecked,
171171
'aria-disabled': ariaDisabled,
172172
'aria-expanded': ariaExpanded,
173+
'aria-multiselectable': ariaMultiselectable, // Win32
174+
'aria-required': ariaRequired, // Win32
173175
'aria-selected': ariaSelected,
174176
height,
175177
src,
@@ -182,6 +184,9 @@ const BaseImage = (props: ImagePropsType, forwardedRef) => {
182184
checked: ariaChecked ?? props.accessibilityState?.checked,
183185
disabled: ariaDisabled ?? props.accessibilityState?.disabled,
184186
expanded: ariaExpanded ?? props.accessibilityState?.expanded,
187+
multiselectable:
188+
ariaMultiselectable ?? props.accessibilityState?.multiselectable, // Win32
189+
required: ariaRequired ?? props.accessibilityState?.required, // Win32
185190
selected: ariaSelected ?? props.accessibilityState?.selected,
186191
};
187192
const accessibilityLabel = props['aria-label'] ?? props.accessibilityLabel;

0 commit comments

Comments
 (0)