Skip to content

Commit

Permalink
Add aria-required and aria-multiselectable to accessibilityState on w…
Browse files Browse the repository at this point in the history
…in32 (#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
  • Loading branch information
ksiler committed Aug 23, 2023
1 parent f7e59bd commit 3183aac
Show file tree
Hide file tree
Showing 9 changed files with 39 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"type": "prerelease",
"comment": "fix a11yState and add support for aria-required and -multiselectable",
"packageName": "@office-iss/react-native-win32",
"email": "krsiler@microsoft.com",
"dependentChangeType": "patch"
}
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ class MultiSelectionExample extends React.Component<{}, IMultiSelectionExampleSt

public render() {
return (
<ViewWin32 accessible accessibilityRole="tablist" accessibilityState={{multiselectable: true}}>
<ViewWin32 accessible accessibilityRole="tablist" aria-required aria-multiselectable>
<SelectionItemComponent
value={1}
color="#aee8fcff"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,8 @@ type Props = $ReadOnly<{|
'aria-disabled'?: ?boolean,
'aria-expanded'?: ?boolean,
'aria-selected'?: ?boolean,
'aria-multiselectable'?: ?boolean, // Win32
'aria-required'?: ?boolean, // Win32
/**
* A value indicating whether the accessibility elements contained within
* this accessibility element are hidden.
Expand Down Expand Up @@ -257,6 +259,8 @@ function Pressable(props: Props, forwardedRef): React.Node {
'aria-disabled': ariaDisabled,
'aria-expanded': ariaExpanded,
'aria-label': ariaLabel,
'aria-multiselectable': ariaMultiselectable, // Win32
'aria-required': ariaRequired, // Win32
'aria-selected': ariaSelected,
cancelable,
children,
Expand Down Expand Up @@ -297,6 +301,8 @@ function Pressable(props: Props, forwardedRef): React.Node {
checked: ariaChecked ?? accessibilityState?.checked,
disabled: ariaDisabled ?? accessibilityState?.disabled,
expanded: ariaExpanded ?? accessibilityState?.expanded,
multiselectable: ariaMultiselectable ?? accessibilityState?.multiselectable, // Win32
required: ariaRequired ?? accessibilityState?.required, // Win32
selected: ariaSelected ?? accessibilityState?.selected,
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1101,6 +1101,8 @@ function InternalTextInput(props: Props): React.Node {
'aria-disabled': ariaDisabled,
'aria-expanded': ariaExpanded,
'aria-selected': ariaSelected,
'aria-multiselectable': ariaMultiselectable, // Win32
'aria-required': ariaRequired, // Win32
accessibilityState,
id,
tabIndex,
Expand Down Expand Up @@ -1491,13 +1493,18 @@ function InternalTextInput(props: Props): React.Node {
ariaChecked != null ||
ariaDisabled != null ||
ariaExpanded != null ||
ariaMultiselectable != null ||
ariaRequired != null ||
ariaSelected != null
) {
_accessibilityState = {
busy: ariaBusy ?? accessibilityState?.busy,
checked: ariaChecked ?? accessibilityState?.checked,
disabled: ariaDisabled ?? accessibilityState?.disabled,
expanded: ariaExpanded ?? accessibilityState?.expanded,
multiselectable:
ariaMultiselectable ?? accessibilityState?.multiselectable, // Win32
required: ariaRequired ?? accessibilityState?.required, // Win32
selected: ariaSelected ?? accessibilityState?.selected,
};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@ const View: React.AbstractComponent<
'aria-label': ariaLabel,
'aria-labelledby': ariaLabelledBy,
'aria-live': ariaLive,
'aria-multiselectable': ariaMultiselectable, // Win32
'aria-required': ariaRequired, // Win32
'aria-selected': ariaSelected,
'aria-valuemax': ariaValueMax,
'aria-valuemin': ariaValueMin,
Expand All @@ -76,13 +78,18 @@ const View: React.AbstractComponent<
ariaChecked != null ||
ariaDisabled != null ||
ariaExpanded != null ||
ariaMultiselectable != null ||
ariaRequired != null ||
ariaSelected != null
) {
_accessibilityState = {
busy: ariaBusy ?? accessibilityState?.busy,
checked: ariaChecked ?? accessibilityState?.checked,
disabled: ariaDisabled ?? accessibilityState?.disabled,
expanded: ariaExpanded ?? accessibilityState?.expanded,
multiselectable:
ariaMultiselectable ?? accessibilityState?.multiselectable, // Win32
required: ariaRequired ?? accessibilityState?.required, // Win32
selected: ariaSelected ?? accessibilityState?.selected,
};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,8 @@ export interface AccessibilityProps
'aria-checked'?: boolean | 'mixed' | undefined;
'aria-disabled'?: boolean | undefined;
'aria-expanded'?: boolean | undefined;
'aria-multiselectable'?: boolean | undefined; // Win32
'aria-required'?: boolean | undefined; // Win32
'aria-selected'?: boolean | undefined;

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,8 @@ export type AccessibilityState = {
checked?: ?boolean | 'mixed',
busy?: boolean,
expanded?: boolean,
multiselectable?: boolean, // Win32
required?: boolean, // Win32
...
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -467,6 +467,8 @@ type WindowsViewProps = $ReadOnly<{|

accessibilityPosInSet?: ?number,
accessibilitySetSize?: ?number,
'aria-multiselectable'?: ?boolean,
'aria-required'?: ?boolean,

/**
* Specifies if the control should show System focus visuals
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,8 @@ const BaseImage = (props: ImagePropsType, forwardedRef) => {
'aria-checked': ariaChecked,
'aria-disabled': ariaDisabled,
'aria-expanded': ariaExpanded,
'aria-multiselectable': ariaMultiselectable, // Win32
'aria-required': ariaRequired, // Win32
'aria-selected': ariaSelected,
height,
src,
Expand All @@ -182,6 +184,9 @@ const BaseImage = (props: ImagePropsType, forwardedRef) => {
checked: ariaChecked ?? props.accessibilityState?.checked,
disabled: ariaDisabled ?? props.accessibilityState?.disabled,
expanded: ariaExpanded ?? props.accessibilityState?.expanded,
multiselectable:
ariaMultiselectable ?? props.accessibilityState?.multiselectable, // Win32
required: ariaRequired ?? props.accessibilityState?.required, // Win32
selected: ariaSelected ?? props.accessibilityState?.selected,
};
const accessibilityLabel = props['aria-label'] ?? props.accessibilityLabel;
Expand Down

0 comments on commit 3183aac

Please sign in to comment.