import { clsx } from 'clsx'; import { ReactNode, useContext, useId, useRef } from 'react'; import { CSSTransition } from 'react-transition-group'; import { useIntl } from 'react-intl'; import { Size, Position, PositionTop, PositionCenter, Scroll, CommonProps, SizeSmall, SizeMedium, SizeLarge, SizeExtraLarge, ScrollContent, ScrollViewport, Typography, } from '../common'; import { useLayout } from '../common/hooks'; import Dimmer from '../dimmer'; import Drawer from '../drawer'; import { OverlayIdContext } from '../provider/overlay/OverlayIdProvider'; import Title from '../title/Title'; import { Cross } from '@transferwise/icons'; import IconButton from '../iconButton'; import closeBtnMessages from '../common/closeButton/CloseButton.messages'; const TRANSITION_DURATION_IN_MILLISECONDS = 150; export type ModalProps = CommonProps & { /** @default null */ title?: ReactNode; body: ReactNode; /** @default null */ footer?: ReactNode; /** @default 'md' */ size?: SizeSmall | SizeMedium | SizeLarge | SizeExtraLarge; onClose: () => void; onUnmount?: () => void; open: boolean; /** @default 'viewport' */ scroll?: ScrollContent | ScrollViewport; /** @default 'center' */ position?: PositionTop | PositionCenter; /** @default false */ disableDimmerClickToClose?: boolean; }; const Modal = ({ title = null, body, footer = null, onClose, onUnmount, className, open, size = Size.MEDIUM, scroll = Scroll.VIEWPORT, position = Position.CENTER, disableDimmerClickToClose = false, ...otherProps }: ModalProps) => { const intl = useIntl(); const { isMedium } = useLayout(); const contentReference = useRef(null); const titleId = useId(); const overlayId = useContext(OverlayIdContext); return !isMedium ? ( {body} ) : (
); }; export default Modal;