import React from 'react';
import PropTypes from 'prop-types';
import ReactModal from 'react-modal';
import Draggable from 'react-draggable';
import { useModal } from '../../contextProviders';
import Icon from '../Icon';
import Typography from '../Typography';
import './Modal.css';
if (typeof document !== 'undefined') {
ReactModal.setAppElement(document.getElementById('root'));
}
const Modal = ({
closeButton,
shouldCloseOnEsc,
isOpen,
title,
onClose,
children,
shouldCloseOnOverlayClick,
movable = false,
containerDimensions = null,
contentDimensions = null,
}) => {
const { hide } = useModal();
const handleClose = () => {
hide();
};
const renderHeader = () =>
title && (
{title}
{closeButton && (
)}
);
const modalContent = (
<>
{renderHeader()}
>
);
return (
{movable ? (
{modalContent}
) : (
modalContent
)}
);
};
Modal.defaultProps = {
shouldCloseOnEsc: true,
shouldCloseOnOverlayClick: true,
movable: false,
containerDimensions: null,
contentDimensions: null,
};
Modal.propTypes = {
closeButton: PropTypes.bool,
shouldCloseOnEsc: PropTypes.bool,
isOpen: PropTypes.bool,
title: PropTypes.string,
onClose: PropTypes.func,
children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]).isRequired,
shouldCloseOnOverlayClick: PropTypes.bool,
movable: PropTypes.bool,
containerDimensions: PropTypes.string,
contentDimensions: PropTypes.string,
};
export default Modal;