Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat/accessibility state alias #34524

Closed
Closed
Show file tree
Hide file tree
Changes from 7 commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
9b93788
feat: typing for accessibilit state alias
ankit-tailor Aug 29, 2022
374ea18
feat: mapping for accssibility state alias
ankit-tailor Aug 29, 2022
b65c50d
fix: add aria-busy
ankit-tailor Aug 29, 2022
3adb318
fix: remove log
ankit-tailor Aug 29, 2022
c28ca60
feat: accessibility state typings for pressable
ankit-tailor Aug 29, 2022
5686e1e
feat: accessibility state alias for text
ankit-tailor Aug 29, 2022
b5a03ff
feat: accessibility state alias typing for text
ankit-tailor Aug 29, 2022
e58b762
fix: remove undefined keys
ankit-tailor Aug 30, 2022
14af27f
Merge remote-tracking branch 'upstream/main' into feat/accessibility-…
ankit-tailor Aug 30, 2022
1ab9b3b
fix: alpha sorted props
ankit-tailor Aug 30, 2022
885543f
fix: object dot notation
ankit-tailor Aug 30, 2022
2ed706e
feat: alias for accessibilit state
ankit-tailor Aug 31, 2022
2bd848f
feat: alias for accessibilit state
ankit-tailor Aug 31, 2022
c5ea82d
feat: alias accessibility state for TextInput
ankit-tailor Aug 31, 2022
73778b5
feat: accessibility state alias
ankit-tailor Aug 31, 2022
4f628a7
fix: remove undefined key logic
ankit-tailor Aug 31, 2022
2848bf5
feat: update snapshot
ankit-tailor Aug 31, 2022
4b543bf
fix: undefined check
ankit-tailor Sep 1, 2022
190a8b0
fix: remove trailing space
ankit-tailor Sep 1, 2022
89f7de9
fix: accessibility state assignment
ankit-tailor Sep 1, 2022
0e123bc
fix: resolve conflicts
ankit-tailor Sep 5, 2022
7ee1978
Merge remote-tracking branch 'upstream/main' into feat/accessibility-…
ankit-tailor Sep 5, 2022
4c4955c
fix: const variables
ankit-tailor Sep 5, 2022
a4bb35c
Merge remote-tracking branch 'upstream/main' into feat/accessibility-…
ankit-tailor Sep 7, 2022
bd8dec6
feat: accessibility state example
ankit-tailor Sep 7, 2022
377ec76
Merge remote-tracking branch 'upstream/main' into feat/accessibility-…
ankit-tailor Sep 8, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 22 additions & 5 deletions Libraries/Components/Pressable/Pressable.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,11 @@ type Props = $ReadOnly<{|
accessibilityLiveRegion?: ?('none' | 'polite' | 'assertive'),
accessibilityRole?: ?AccessibilityRole,
accessibilityState?: ?AccessibilityState,
'aria-disabled'?: ?boolean,
'aria-checked'?: ?boolean,
'aria-busy'?: ?boolean,
'aria-expanded'?: ?boolean,
'aria-selected'?: ?boolean,
accessibilityValue?: ?AccessibilityValue,
accessibilityViewIsModal?: ?boolean,
accessible?: ?boolean,
Expand Down Expand Up @@ -175,6 +180,12 @@ type Props = $ReadOnly<{|
function Pressable(props: Props, forwardedRef): React.Node {
const {
accessible,
'aria-busy': ariaBusy,
'aria-checked': ariaChecked,
'aria-disabled': ariaDisabled,
'aria-expanded': ariaExpanded,
'aria-selected': ariaSelected,
accessibilityState,
android_disableSound,
android_ripple,
cancelable,
Expand Down Expand Up @@ -205,16 +216,22 @@ function Pressable(props: Props, forwardedRef): React.Node {

const [pressed, setPressed] = usePressState(testOnly_pressed === true);

const accessibilityState =
disabled != null
? {...props.accessibilityState, disabled}
: props.accessibilityState;
let _accessibilityState = {
busy: ariaBusy ?? accessibilityState?.busy,
checked: ariaChecked ?? accessibilityState?.checked,
disabled: ariaDisabled ?? accessibilityState?.disabled,
expanded: ariaExpanded ?? accessibilityState?.expanded,
selected: ariaSelected ?? accessibilityState?.selected,
};

_accessibilityState =
disabled != null ? {..._accessibilityState, disabled} : _accessibilityState;

const restPropsWithDefaults: React.ElementConfig<typeof View> = {
...restProps,
...android_rippleConfig?.viewProps,
accessible: accessible !== false,
accessibilityState,
accessibilityState: _accessibilityState,
focusable: focusable !== false,
hitSlop,
};
Expand Down
24 changes: 23 additions & 1 deletion Libraries/Components/View/View.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,31 @@ const View: React.AbstractComponent<
ViewProps,
React.ElementRef<typeof ViewNativeComponent>,
> = React.forwardRef((props: ViewProps, forwardedRef) => {
const {
'aria-busy': ariaBusy,
'aria-checked': ariaChecked,
'aria-disabled': ariaDisabled,
'aria-expanded': ariaExpanded,
'aria-selected': ariaSelected,
accessibilityState,
...restProps
} = props;

const _accessibilityState = {
busy: ariaBusy ?? accessibilityState?.busy,
checked: ariaChecked ?? accessibilityState?.checked,
disabled: ariaDisabled ?? accessibilityState?.disabled,
expanded: ariaExpanded ?? accessibilityState?.expanded,
selected: ariaSelected ?? accessibilityState?.selected,
};

return (
<TextAncestor.Provider value={false}>
<ViewNativeComponent {...props} ref={forwardedRef} />
<ViewNativeComponent
accessibilityState={_accessibilityState}
{...restProps}
ref={forwardedRef}
/>
</TextAncestor.Provider>
);
});
Expand Down
6 changes: 6 additions & 0 deletions Libraries/Components/View/ViewPropTypes.js
Original file line number Diff line number Diff line change
Expand Up @@ -455,6 +455,12 @@ export type ViewProps = $ReadOnly<{|
accessibilityState?: ?AccessibilityState,
accessibilityValue?: ?AccessibilityValue,

'aria-disabled'?: ?boolean,
'aria-checked'?: ?boolean,
'aria-busy'?: ?boolean,
'aria-expanded'?: ?boolean,
'aria-selected'?: ?boolean,

/**
* Provides an array of custom actions available for accessibility.
*
Expand Down
28 changes: 22 additions & 6 deletions Libraries/Text/Text.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,12 @@ const Text: React.AbstractComponent<
> = React.forwardRef((props: TextProps, forwardedRef) => {
const {
accessible,
'aria-busy': ariaBusy,
'aria-checked': ariaChecked,
'aria-disabled': ariaDisabled,
'aria-expanded': ariaExpanded,
'aria-selected': ariaSelected,
accessibilityState,
allowFontScaling,
ellipsizeMode,
onLongPress,
Expand All @@ -51,14 +57,23 @@ const Text: React.AbstractComponent<

const [isHighlighted, setHighlighted] = useState(false);

const _accessibilityState = {
busy: ariaBusy ?? accessibilityState?.busy,
checked: ariaChecked ?? accessibilityState?.checked,
disabled: ariaDisabled ?? accessibilityState?.disabled,
expanded: ariaExpanded ?? accessibilityState?.expanded,
selected: ariaSelected ?? accessibilityState?.selected,
};

const _disabled =
restProps.disabled != null
? restProps.disabled
: props.accessibilityState?.disabled;
const _accessibilityState =
_disabled !== props.accessibilityState?.disabled
? {...props.accessibilityState, disabled: _disabled}
: props.accessibilityState;
: _accessibilityState?.disabled;

const nativeTextAccessibilityState =
_disabled !== _accessibilityState?.disabled
? {..._accessibilityState, disabled: _disabled}
: _accessibilityState;

const isPressable =
(onPress != null ||
Expand Down Expand Up @@ -178,6 +193,7 @@ const Text: React.AbstractComponent<

return hasTextAncestor ? (
<NativeVirtualText
accessibilityState={_accessibilityState}
{...restProps}
{...eventHandlersForText}
isHighlighted={isHighlighted}
Expand All @@ -194,7 +210,7 @@ const Text: React.AbstractComponent<
{...eventHandlersForText}
disabled={_disabled}
accessible={_accessible}
accessibilityState={_accessibilityState}
accessibilityState={nativeTextAccessibilityState}
allowFontScaling={allowFontScaling !== false}
ellipsizeMode={ellipsizeMode ?? 'tail'}
isHighlighted={isHighlighted}
Expand Down
5 changes: 5 additions & 0 deletions Libraries/Text/TextProps.js
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,11 @@ export type TextProps = $ReadOnly<{|
accessibilityLabel?: ?Stringish,
accessibilityRole?: ?AccessibilityRole,
accessibilityState?: ?AccessibilityState,
'aria-disabled'?: ?boolean,
'aria-checked'?: ?boolean,
'aria-busy'?: ?boolean,
'aria-expanded'?: ?boolean,
'aria-selected'?: ?boolean,

/**
* Whether font should be scaled down automatically.
Expand Down