import React, { useEffect } from 'react'; import classNames from 'classnames'; import { SessionIconButton, SessionIconSize, SessionIconType } from './icon/'; import { SessionButton, SessionButtonColor, SessionButtonType } from './SessionButton'; import { DefaultTheme } from 'styled-components'; import { useKeyPress } from 'use-hooks'; interface 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; onConfirm?: () => void; onClose?: () => void; showClose?: boolean confirmText?: string; cancelText?: string; showExitIcon?: boolean; theme?: any; headerIconButtons?: any[]; children: any; }; export const SessionWrapperModal = (props: SessionWrapperModalType) => { const { title, onConfirm, onClose, showClose = false, confirmText, cancelText, showExitIcon, theme, headerIconButtons, } = props; useEffect(() => { window.addEventListener('keyup', upHandler); return () => { window.removeEventListener('keyup', upHandler); }; }, []); // TODO: warrick: typing const upHandler = ({ key }: any) => { if (key === 'Escape') { if (props.onClose) { props.onClose(); } } }; return (
{showExitIcon ? ( ) : null}
{title}
{headerIconButtons ? headerIconButtons.map((iconItem: any) => { return ( ); }) : null}
{props.children}
{onConfirm ? ( {confirmText || window.i18n('ok')} ) : null} {onClose && showClose ? ( {cancelText || window.i18n('close')} ) : null}
); };