2019-10-13 00:07:02 +02:00
|
|
|
import React from 'react'
|
2019-10-02 13:35:50 +02:00
|
|
|
import ReactModal from 'react-modal'
|
2019-11-15 22:10:53 +01:00
|
|
|
import Icon from './Icon'
|
2019-10-02 13:35:50 +02:00
|
|
|
import styles from './Modal.module.scss'
|
|
|
|
|
2019-10-13 00:07:02 +02:00
|
|
|
if (process.env.NODE_ENV !== 'test') ReactModal.setAppElement('#___gatsby')
|
2019-10-02 13:35:50 +02:00
|
|
|
|
|
|
|
export default function Modal({
|
|
|
|
title,
|
|
|
|
isOpen,
|
|
|
|
handleCloseModal,
|
|
|
|
children,
|
|
|
|
...props
|
|
|
|
}: {
|
|
|
|
title?: string
|
|
|
|
isOpen?: boolean
|
2019-10-13 00:07:02 +02:00
|
|
|
handleCloseModal(): void
|
|
|
|
children: any
|
2019-10-02 13:35:50 +02:00
|
|
|
}) {
|
|
|
|
if (!isOpen) return null
|
|
|
|
|
|
|
|
return (
|
|
|
|
<ReactModal
|
|
|
|
overlayClassName={styles.modal}
|
2019-11-15 22:10:53 +01:00
|
|
|
className={styles.modalContent}
|
2019-10-02 13:35:50 +02:00
|
|
|
htmlOpenClassName={styles.isModalOpen}
|
|
|
|
shouldReturnFocusAfterClose={false}
|
|
|
|
isOpen={isOpen}
|
|
|
|
{...props}
|
|
|
|
>
|
2019-11-15 22:10:53 +01:00
|
|
|
{title && <h1 className={styles.modalTitle}>{title}</h1>}
|
2019-10-02 13:35:50 +02:00
|
|
|
{children}
|
2019-11-15 22:10:53 +01:00
|
|
|
<button className={styles.modalClose} onClick={handleCloseModal}>
|
|
|
|
<Icon name="X" />
|
2019-10-02 13:35:50 +02:00
|
|
|
</button>
|
|
|
|
</ReactModal>
|
|
|
|
)
|
|
|
|
}
|