Skip to content

Commit

Permalink
feat: Add tabIndex prop to View component (#34486)
Browse files Browse the repository at this point in the history
Summary:
This adds the `tabIndex` Android only prop to View as requested on #34424 mapping the existing `focusable` prop to `tabIndex` so that `tabIndex={0}` maps to `focusable={true}` and `tabIndex={-1}` represents ` focusable={false}`.

## Changelog

[Android] [Added] - Add tabIndex prop to View component

Pull Request resolved: #34486

Test Plan: I'm still investigating the best way to test this but we're are just mapping this to an existing prop

Reviewed By: GijsWeterings

Differential Revision: D38957303

Pulled By: necolas

fbshipit-source-id: d00db854e11cb3457329c1547b69cff60afb34cf
  • Loading branch information
gabrieldonadel authored and facebook-github-bot committed Aug 30, 2022
1 parent 4d642a2 commit 621f4cf
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 7 deletions.
20 changes: 13 additions & 7 deletions Libraries/Components/View/View.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,19 @@ export type Props = ViewProps;
const View: React.AbstractComponent<
ViewProps,
React.ElementRef<typeof ViewNativeComponent>,
> = React.forwardRef((props: ViewProps, forwardedRef) => {
return (
<TextAncestor.Provider value={false}>
<ViewNativeComponent {...props} ref={forwardedRef} />
</TextAncestor.Provider>
);
});
> = React.forwardRef(
({tabIndex, focusable, ...otherProps}: ViewProps, forwardedRef) => {
return (
<TextAncestor.Provider value={false}>
<ViewNativeComponent
focusable={tabIndex !== undefined ? !tabIndex : focusable}
{...otherProps}
ref={forwardedRef}
/>
</TextAncestor.Provider>
);
},
);

View.displayName = 'View';

Expand Down
13 changes: 13 additions & 0 deletions Libraries/Components/View/ViewPropTypes.js
Original file line number Diff line number Diff line change
Expand Up @@ -352,6 +352,19 @@ type AndroidViewProps = $ReadOnly<{|
*/
focusable?: boolean,

/**
* Indicates whether this `View` should be focusable with a non-touch input device, eg. receive focus with a hardware keyboard.
* See https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/tabindex
* for more details.
*
* Supports the following values:
* - 0 (View is focusable)
* - -1 (View is not focusable)
*
* @platform android
*/
tabIndex?: 0 | -1,

/**
* The action to perform when this `View` is clicked on by a non-touch click, eg. enter key on a hardware keyboard.
*
Expand Down

0 comments on commit 621f4cf

Please sign in to comment.