mirror of
https://github.com/naturalcrit/homebrewery.git
synced 2026-01-07 14:12:43 +00:00
Small cleanup of Dialog component
Reduce number of `useEffects` needed
This commit is contained in:
@@ -2,45 +2,30 @@
|
|||||||
const React = require('react');
|
const React = require('react');
|
||||||
const { useState, useRef, useEffect } = React;
|
const { useState, useRef, useEffect } = React;
|
||||||
|
|
||||||
function Dialog({ dismissKey, closeText = 'Close', blocking = false, children, ...rest }) {
|
function Dialog({ dismissKey, closeText = 'Close', blocking = false, ...rest }) {
|
||||||
const ref = useRef();
|
const dialogRef = useRef();
|
||||||
|
|
||||||
const [open, setOpen] = useState(false);
|
const [open, setOpen] = useState(false);
|
||||||
|
|
||||||
useEffect(()=>{
|
useEffect(()=>{
|
||||||
if(!window || !dismissKey) return;
|
if(dismissKey && !localStorage.getItem(dismissKey)) {
|
||||||
if(!localStorage.getItem(dismissKey)){
|
blocking ? dialogRef.current?.showModal() : dialogRef.current?.show();
|
||||||
setOpen(true);
|
setOpen(true);
|
||||||
}
|
}
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
useEffect(()=>{
|
const dismiss = ()=>{
|
||||||
if(open) {
|
|
||||||
blocking ? ref.current?.showModal() : ref.current?.show();
|
|
||||||
} else {
|
|
||||||
ref.current?.close();
|
|
||||||
}
|
|
||||||
}, [open]);
|
|
||||||
|
|
||||||
const dismiss = function(){
|
|
||||||
localStorage.setItem(dismissKey, true);
|
localStorage.setItem(dismissKey, true);
|
||||||
|
dialogRef.current?.close();
|
||||||
setOpen(false);
|
setOpen(false);
|
||||||
};
|
};
|
||||||
|
|
||||||
if(!open) return;
|
if(!open) return null;
|
||||||
return (
|
return (
|
||||||
<dialog
|
<dialog ref={dialogRef} onCancel={dismiss} {...rest}>
|
||||||
ref={ref}
|
<button className='dismiss' onClick={dismiss}>
|
||||||
onCancel={()=>dismiss()}
|
|
||||||
{...rest}
|
|
||||||
>
|
|
||||||
<button
|
|
||||||
className='dismiss'
|
|
||||||
onClick={()=>dismiss()}
|
|
||||||
>
|
|
||||||
{closeText}
|
{closeText}
|
||||||
</button>
|
</button>
|
||||||
{children}
|
{rest.children}
|
||||||
</dialog>
|
</dialog>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user