Spaces:
Runtime error
Runtime error
| import classNames from 'classnames'; | |
| import PropTypes from 'prop-types'; | |
| import React from 'react'; | |
| import ReactModal from 'react-modal'; | |
| import {FormattedMessage} from 'react-intl'; | |
| import Box from '../box/box.jsx'; | |
| import Button from '../button/button.jsx'; | |
| import CloseButton from '../close-button/close-button.jsx'; | |
| import backIcon from '../../lib/assets/icon--back.svg'; | |
| import helpIcon from '../../lib/assets/icon--help.svg'; | |
| import styles from './modal.css'; | |
| const ModalComponent = props => ( | |
| <ReactModal | |
| isOpen | |
| className={classNames(styles.modalContent, props.className, { | |
| [styles.fullScreen]: props.fullScreen | |
| })} | |
| contentLabel={props.contentLabel} | |
| overlayClassName={classNames(styles.modalOverlay, { | |
| [styles.scrollable]: props.scrollable | |
| })} | |
| onRequestClose={props.onRequestClose} | |
| > | |
| <Box | |
| dir={props.isRtl ? 'rtl' : 'ltr'} | |
| direction="column" | |
| grow={1} | |
| > | |
| <div className={classNames(styles.header, props.headerClassName)}> | |
| {props.onHelp ? ( | |
| <div | |
| className={classNames( | |
| styles.headerItem, | |
| styles.headerItemHelp | |
| )} | |
| > | |
| <Button | |
| className={styles.helpButton} | |
| iconSrc={helpIcon} | |
| onClick={props.onHelp} | |
| > | |
| <FormattedMessage | |
| defaultMessage="Help" | |
| description="Help button in modal" | |
| id="gui.modal.help" | |
| /> | |
| </Button> | |
| </div> | |
| ) : null} | |
| <div | |
| className={classNames( | |
| styles.headerItem, | |
| styles.headerItemTitle | |
| )} | |
| > | |
| {props.headerImage ? ( | |
| <img | |
| className={styles.headerImage} | |
| src={props.headerImage} | |
| /> | |
| ) : null} | |
| {props.contentLabel} | |
| </div> | |
| <div | |
| className={classNames( | |
| styles.headerItem, | |
| styles.headerItemClose | |
| )} | |
| > | |
| {props.fullScreen ? ( | |
| <Button | |
| className={styles.backButton} | |
| iconSrc={backIcon} | |
| onClick={props.onRequestClose} | |
| > | |
| <FormattedMessage | |
| defaultMessage="Back" | |
| description="Back button in modal" | |
| id="gui.modal.back" | |
| /> | |
| </Button> | |
| ) : ( | |
| <CloseButton | |
| size={CloseButton.SIZE_LARGE} | |
| onClick={props.onRequestClose} | |
| /> | |
| )} | |
| </div> | |
| </div> | |
| {props.children} | |
| </Box> | |
| </ReactModal> | |
| ); | |
| ModalComponent.propTypes = { | |
| children: PropTypes.node, | |
| className: PropTypes.string, | |
| contentLabel: PropTypes.oneOfType([ | |
| PropTypes.string, | |
| PropTypes.object | |
| ]).isRequired, | |
| fullScreen: PropTypes.bool, | |
| headerClassName: PropTypes.string, | |
| headerImage: PropTypes.string, | |
| isRtl: PropTypes.bool, | |
| onHelp: PropTypes.func, | |
| onRequestClose: PropTypes.func, | |
| scrollable: PropTypes.bool | |
| }; | |
| export default ModalComponent; | |