@wordpress/components
Version:
UI components for WordPress.
38 lines (35 loc) • 834 B
JavaScript
/**
* External dependencies
*/
import { View } from 'react-native';
/**
* WordPress dependencies
*/
import { useCallback, useState } from '@wordpress/element';
import {
createHigherOrderComponent,
__experimentalUseFocusOutside as useFocusOutside,
} from '@wordpress/compose';
export default createHigherOrderComponent(
( WrappedComponent ) => ( props ) => {
const [ handleFocusOutside, setHandleFocusOutside ] = useState();
const bindFocusOutsideHandler = useCallback(
( node ) =>
setHandleFocusOutside( () =>
node?.handleFocusOutside
? node.handleFocusOutside.bind( node )
: undefined
),
[]
);
return (
<View { ...useFocusOutside( handleFocusOutside ) }>
<WrappedComponent
ref={ bindFocusOutsideHandler }
{ ...props }
/>
</View>
);
},
'withFocusOutside'
);