@primer/components
Version:
Primer react components
33 lines (31 loc) • 783 B
JavaScript
import { useOnOutsideClick } from './useOnOutsideClick';
import { useOpenAndCloseFocus } from './useOpenAndCloseFocus';
import { useOnEscapePress } from './useOnEscapePress';
import { useProvidedRefOrCreate } from './useProvidedRefOrCreate';
export const useOverlay = ({
overlayRef: _overlayRef,
returnFocusRef,
initialFocusRef,
onEscape,
ignoreClickRefs,
onClickOutside,
preventFocusOnOpen
}) => {
const overlayRef = useProvidedRefOrCreate(_overlayRef);
if (!preventFocusOnOpen) {
useOpenAndCloseFocus({
containerRef: overlayRef,
returnFocusRef,
initialFocusRef
});
}
useOnOutsideClick({
containerRef: overlayRef,
ignoreClickRefs,
onClickOutside
});
useOnEscapePress(onEscape);
return {
ref: overlayRef
};
};