UNPKG

@wordpress/components

Version:
34 lines (31 loc) 762 B
/** * 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 ( <div { ...useFocusOutside( handleFocusOutside ) }> <WrappedComponent ref={ bindFocusOutsideHandler } { ...props } /> </div> ); }, 'withFocusOutside' );