mirror of
https://gitlab.com/MrFry/qmining-page
synced 2025-04-01 20:23:44 +02:00
53 lines
1.1 KiB
JavaScript
53 lines
1.1 KiB
JavaScript
import React, { useEffect } from 'react'
|
|
|
|
import styles from './modal.module.css'
|
|
|
|
export default function Modal(props) {
|
|
const { closeClick } = props
|
|
|
|
const keyHandler = (event) => {
|
|
if (event.key === 'Escape' && closeClick) {
|
|
closeClick()
|
|
}
|
|
}
|
|
|
|
useEffect(() => {
|
|
document.addEventListener('keydown', keyHandler)
|
|
return () => {
|
|
document.removeEventListener('keydown', keyHandler)
|
|
}
|
|
}, [])
|
|
|
|
return (
|
|
<div
|
|
style={{
|
|
cursor: closeClick ? 'pointer' : 'auto',
|
|
}}
|
|
onClick={() => {
|
|
if (closeClick) {
|
|
closeClick()
|
|
}
|
|
}}
|
|
className={styles.modal}
|
|
>
|
|
<div
|
|
onClick={(event) => {
|
|
event.stopPropagation()
|
|
}}
|
|
className={styles.modalContent}
|
|
>
|
|
{closeClick && (
|
|
<div
|
|
className={styles.close}
|
|
onClick={() => {
|
|
closeClick()
|
|
}}
|
|
>
|
|
❌
|
|
</div>
|
|
)}
|
|
<div className={styles.children}>{props.children}</div>
|
|
</div>
|
|
</div>
|
|
)
|
|
}
|