diff --git a/src/common/Button/Button.js b/src/common/Button/Button.js index d5e2e6c82..be8e4882e 100644 --- a/src/common/Button/Button.js +++ b/src/common/Button/Button.js @@ -1,13 +1,13 @@ const React = require('react'); const PropTypes = require('prop-types'); const classnames = require('classnames'); -const { useFocusable } = require('stremio-navigation'); +const useTabIndex = require('../useTabIndex'); const styles = require('./styles'); const ENTER_KEY_CODE = 13; const Button = React.forwardRef(({ children, ...props }, ref) => { - const focusable = useFocusable(); + const tabIndex = useTabIndex(props.tabIndex, props.disabled); const onKeyUp = React.useCallback((event) => { if (typeof props.onKeyUp === 'function') { props.onKeyUp(event); @@ -35,10 +35,7 @@ const Button = React.forwardRef(({ children, ...props }, ref) => { ...props, ref, className: classnames(props.className, styles['button-container'], { 'disabled': props.disabled }), - tabIndex: (props.tabIndex === null || isNaN(props.tabIndex)) ? - (focusable && !props.disabled ? 0 : -1) - : - props.tabIndex, + tabIndex, onKeyUp, onMouseDown }, diff --git a/src/common/Input/Input.js b/src/common/Input/Input.js index f323af8c5..9d467285c 100644 --- a/src/common/Input/Input.js +++ b/src/common/Input/Input.js @@ -1,12 +1,12 @@ const React = require('react'); const PropTypes = require('prop-types'); const classnames = require('classnames'); -const { useFocusable } = require('stremio-navigation'); +const useTabIndex = require('../useTabIndex'); const ENTER_KEY_CODE = 13; const Input = React.forwardRef((props, ref) => { - const focusable = useFocusable(); + const tabIndex = useTabIndex(props.tabIndex, props.disabled); const onKeyUp = React.useCallback((event) => { if (typeof props.onKeyUp === 'function') { props.onKeyUp(event); @@ -21,7 +21,7 @@ const Input = React.forwardRef((props, ref) => { {...props} ref={ref} className={classnames(props.className, { 'disabled': props.disabled })} - tabIndex={(props.tabIndex === null || isNaN(props.tabIndex)) ? (focusable && !props.disabled ? 0 : -1) : props.tabIndex} + tabIndex={tabIndex} onKeyUp={onKeyUp} /> ); diff --git a/src/common/useTabIndex.js b/src/common/useTabIndex.js new file mode 100644 index 000000000..a802d5723 --- /dev/null +++ b/src/common/useTabIndex.js @@ -0,0 +1,12 @@ + +const { useFocusable } = require('stremio-navigation'); + +const useTabIndex = (tabIndex, disabled) => { + const focusable = useFocusable(); + return (tabIndex === null || isNaN(tabIndex)) ? + (focusable && !disabled ? 0 : -1) + : + tabIndex; +}; + +module.exports = useTabIndex;