import React, { useEffect, useRef } from 'react'; import classNames from 'classnames'; import { SessionIconButton } from './icon/'; import { SessionButton } from './SessionButton'; // tslint:disable-next-line: no-submodule-imports import useKey from 'react-use/lib/useKey'; export type SessionWrapperModalType = { title?: string; showHeader?: boolean; onConfirm?: () => void; onClose?: () => void; showClose?: boolean; confirmText?: string; cancelText?: string; showExitIcon?: boolean; headerIconButtons?: Array; children: any; headerReverse?: boolean; additionalClassName?: string; }; export const SessionWrapperModal = (props: SessionWrapperModalType) => { const { title, onConfirm, onClose, showHeader = true, showClose = false, confirmText, cancelText, showExitIcon, headerIconButtons, headerReverse, additionalClassName, } = props; useKey( 'Esc', () => { props.onClose?.(); }, undefined, [props.onClose] ); useKey( 'Escape', () => { props.onClose?.(); }, undefined, [props.onClose] ); const modalRef = useRef(null); const handleClick = (e: any) => { if (!modalRef.current?.contains(e.target)) { props.onClose?.(); } }; useEffect(() => { document.addEventListener('mousedown', handleClick); return () => { document.removeEventListener('mousedown', handleClick); }; }, []); return (
{showHeader ? (
{showExitIcon ? ( ) : null}
{title}
{headerIconButtons ? headerIconButtons.map((iconItem: any) => { return ( ); }) : null}
) : null}
{props.children}
{onConfirm ? ( {confirmText || window.i18n('ok')} ) : null} {onClose && showClose ? ( {cancelText || window.i18n('close')} ) : null}
); };