import React, { useCallback, useEffect, useRef } from 'react'; import ModalContainer, { ModalContainerProps, } from '@digigov/react-core/ModalContainer'; import useKeypress from '@digigov/ui/utils/hooks/useKeypress'; export interface ModalProps extends ModalContainerProps { onEscape?: () => void; } export const Modal = React.forwardRef( function Modal({ ...props }, ref) { if (props.open) { return ; } else { return null; } } ); export const ModalBase = React.forwardRef( function ModalBase({ open, children, onEscape, ...props }, ref) { const firstModalElement = useRef(null); const lastModalElement = useRef(null); const handleFocus = useCallback(() => { firstModalElement.current?.focus(); }, []); useKeypress('Escape', onEscape); useEffect(() => { const lastModalElementInstance = lastModalElement.current; handleFocus(); lastModalElementInstance?.addEventListener('focus', handleFocus); return () => { lastModalElementInstance?.removeEventListener('focus', handleFocus); }; }, []); return ( {open && children} ); } ); export default Modal;