@wordpress/components
Version:
UI components for WordPress.
23 lines (21 loc) • 566 B
text/typescript
/**
* WordPress dependencies
*/
import { useState, flushSync } from '@wordpress/element';
export function useTemporaryFocusVisibleFix( {
onBlur: onBlurProp,
}: {
onBlur?: React.FocusEventHandler< HTMLDivElement >;
} ) {
const [ focusVisible, setFocusVisible ] = useState( false );
return {
'data-focus-visible': focusVisible || undefined,
onFocusVisible: () => {
flushSync( () => setFocusVisible( true ) );
},
onBlur: ( ( event ) => {
onBlurProp?.( event );
setFocusVisible( false );
} ) as React.FocusEventHandler< HTMLDivElement >,
};
}