0
0
mirror of https://github.com/naturalcrit/homebrewery.git synced 2025-12-24 20:42:43 +00:00
Files
homebrewery/client/components/dialog.jsx
2024-06-05 12:33:13 +12:00

33 lines
814 B
JavaScript

// Dialog as a separate component
const React = require('react');
const { useState, useRef, useEffect } = React;
function Dialog({ dismissKey, closeText = 'Close', blocking = false, ...rest }) {
const dialogRef = useRef();
const [open, setOpen] = useState(false);
useEffect(()=>{
if(!dismissKey || !localStorage.getItem(dismissKey)) {
blocking ? dialogRef.current?.showModal() : dialogRef.current?.show();
setOpen(true);
}
}, []);
const dismiss = ()=>{
dismissKey && localStorage.setItem(dismissKey, true);
dialogRef.current?.close();
setOpen(false);
};
if(!open) return null;
return (
<dialog ref={dialogRef} onCancel={dismiss} {...rest}>
<button className='dismiss' onClick={dismiss}>
{closeText}
</button>
{rest.children}
</dialog>
);
}
export default Dialog;