0
0
mirror of https://github.com/naturalcrit/homebrewery.git synced 2025-12-25 20:33:51 +00:00
Files
homebrewery/client/components/dialog.jsx
2024-06-06 21:41:33 +12:00

37 lines
861 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(null);
const [open, setOpen] = useState(false);
useEffect(()=>{
if(!localStorage.getItem(dismissKey)) {
!open && setOpen(true);
}
}, []);
useEffect(()=>{
if(open && !dialogRef.current?.open){
blocking ? dialogRef.current?.showModal() : dialogRef.current?.show();
} else {
dialogRef.current?.close();
}
}, [open]);
const dismiss = ()=>{
dismissKey && localStorage.setItem(dismissKey, true);
setOpen(false);
};
return <dialog ref={dialogRef} onCancel={dismiss} {...rest}>
{rest.children}
<button className='dismiss' onClick={dismiss}>
{closeText}
</button>
</dialog>
;
};
export default Dialog;