Popup.jsx 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. // utils
  2. import PropTypes from 'prop-types';
  3. import loadable from '@loadable/component'
  4. // components
  5. import Fade from '@mui/material/Fade';
  6. import Grow from '@mui/material/Grow';
  7. import {ClickAwayListener} from '@mui/base/ClickAwayListener';
  8. // lazy loading components
  9. const Modal = loadable(() => import('@mui/material/Modal'));
  10. const Popup = ({open, onClose, children, popupClass}) => {
  11. return (
  12. <Modal open={open} onClose={onClose} closeAfterTransition>
  13. <Fade in={open} timeout={500}>
  14. <div className="popup-container">
  15. {/*<ClickAwayListener onClickAway={onClose}>*/}
  16. <Grow in={open} timeout={500}>
  17. <div className={`${popupClass || ''} popup card card-padded`} style={{minHeight: 'unset'}}>
  18. <button className="popup_close" onClick={onClose} aria-label="Close popup">
  19. <i className="icon-xmark"/>
  20. </button>
  21. {children}
  22. </div>
  23. </Grow>
  24. {/*</ClickAwayListener>*/}
  25. </div>
  26. </Fade>
  27. </Modal>
  28. );
  29. }
  30. Popup.propTypes = {
  31. open: PropTypes.bool.isRequired,
  32. onClose: PropTypes.func.isRequired,
  33. children: PropTypes.node.isRequired,
  34. popupClass: PropTypes.string
  35. }
  36. export default Popup