higlass
Version:
HiGlass Hi-C / genomic / large data viewer
58 lines (50 loc) • 1.31 kB
JSX
// @ts-nocheck
import clsx from 'clsx';
import PropTypes from 'prop-types';
import React from 'react';
import Button from './Button';
import Cross from './Cross';
import withModal from './hocs/with-modal';
import classes from '../styles/Modal.module.scss';
function Modal(props) {
const handleClose = () => {
props.modal.close();
if (props.onClose) props.onClose();
};
return (
<div
className={clsx(classes['modal-background'], {
[classes['modal-hide']]: props.hide,
})}
>
<div className={classes['modal-wrap']}>
<div
className={clsx(classes['modal-window'], {
[classes['modal-window-max-height']]: props.maxHeight,
})}
>
{props.closeButton && (
<Button onClick={handleClose}>
<Cross />
</Button>
)}
<div className={classes['modal-content']}>{props.children}</div>
</div>
</div>
</div>
);
}
Modal.defaultProps = {
closeButton: true,
hide: false,
maxHeight: false,
};
Modal.propTypes = {
children: PropTypes.element.isRequired,
closeButton: PropTypes.bool,
hide: PropTypes.bool,
maxHeight: PropTypes.bool,
modal: PropTypes.object.isRequired,
onClose: PropTypes.func,
};
export default withModal(Modal);