1
0
Fork 0
blog/src/components/atoms/Modal.tsx

39 lines
873 B
TypeScript
Raw Normal View History

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>
)
}