/**
* External dependencies
*/
import * as React from 'react';
/**
* Internal dependencies
*/
import useFocusHandler from '../hooks/use-focus-handler';
import useFocusTrap from '../hooks/use-focus-trap';
import useKeydownHandler from '../hooks/use-keydown-handler';
interface Props {
onMinimize: () => void;
onDismiss: ( target: string ) => () => void;
onNextStepProgression: () => void;
onPreviousStepProgression: () => void;
tourContainerRef: React.MutableRefObject< null | HTMLElement >;
isMinimized: boolean;
}
const KeyboardNavigation: React.FunctionComponent< Props > = ( {
onMinimize,
onDismiss,
onNextStepProgression,
onPreviousStepProgression,
tourContainerRef,
isMinimized,
} ) => {
function ExpandedTourNav() {
useKeydownHandler( {
onEscape: onMinimize,
onArrowRight: onNextStepProgression,
onArrowLeft: onPreviousStepProgression,
} );
useFocusTrap( tourContainerRef );
return null;
}
function MinimizedTourNav() {
useKeydownHandler( { onEscape: onDismiss( 'esc-key-minimized' ) } );
return null;
}
const isTourFocused = useFocusHandler( tourContainerRef );
if ( ! isTourFocused ) {
return null;
}
return isMinimized ? : ;
};
export default KeyboardNavigation;