import { classy } from '@audentio/utils/src/classy'; import { keymap } from '@audentio/utils/src/keymap'; import CloseIcon from 'mdi-react/CloseIcon'; import React, { Component } from 'react'; import FocusLock from 'react-focus-lock'; import { Backdrop } from '../../Backdrop'; import { ScrollLock } from '../../ScrollLock'; import style from '../Modal.scss'; export default class ModalBox extends Component { __node: HTMLElement; __nodeInner: HTMLElement; static defaultProps = { overlay: true, }; public componentDidMount(): void { document.addEventListener('keydown', this.keyDownListener); } public componentWillUnmount(): void { document.removeEventListener('keydown', this.keyDownListener); } private keyDownListener = (e): void => { const { onClose } = this.props; if (onClose && e.keyCode === keymap.ESCAPE) { onClose(e); } }; public render(): React.ReactNode { const { overlay, opacity, children, className, containerClass, onClose, canClose, ...rest } = this.props; return (
{overlay && }
{ if (!this.__node) { this.__node = ref; } }} className={classy(style.modal, className)} >
{ this.__nodeInner = ref; }} > {children}
); } }