import React, { useEffect } from 'react'; import classNames from 'classnames'; import { SessionIconButton, SessionIconSize, SessionIconType } from './icon/'; import { SessionButton, SessionButtonColor, SessionButtonType } from './SessionButton'; import { DefaultTheme, useTheme } from 'styled-components'; type Props = { title: string; onClose: any; showExitIcon?: boolean; showHeader?: boolean; headerReverse?: boolean; //Maximum of two icons or buttons in header headerIconButtons?: Array<{ iconType: SessionIconType; iconRotation: number; onClick?: any; }>; headerButtons?: Array<{ buttonType: SessionButtonType; buttonColor: SessionButtonColor; text: string; onClick?: any; }>; theme: DefaultTheme; }; 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; const theme = useTheme(); useEffect(() => { window.addEventListener('keyup', keyUpHandler); return () => { window.removeEventListener('keyup', keyUpHandler); }; }, []); const keyUpHandler = ({ key }: any) => { if (key === 'Escape') { if (props.onClose) { props.onClose(); } } }; 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}
); };