Spaces:
Runtime error
Runtime error
/* | |
* Copyright (c) Meta Platforms, Inc. and affiliates. | |
* | |
* This source code is licensed under the Chameleon License found in the | |
* LICENSE file in the root directory of this source tree. | |
*/ | |
import { ReactNode, useRef, useEffect } from "react"; | |
import { Close } from "@carbon/icons-react"; | |
export interface DialogModalProps { | |
onHide?: () => void; | |
onShow?: () => void; | |
visible: boolean; | |
children: ReactNode; | |
} | |
export function DialogModal({ | |
onShow, | |
onHide, | |
visible, | |
children, | |
}: DialogModalProps) { | |
const shareRef = useRef<HTMLDialogElement>(null); | |
useEffect(() => { | |
if (visible) { | |
shareRef.current?.showModal(); | |
onShow && onShow(); | |
} else { | |
shareRef.current?.close(); | |
onHide && onHide(); | |
} | |
}, [visible]); | |
return ( | |
<dialog ref={shareRef} className="modal"> | |
<div className="modal-box relative"> | |
<div | |
className="absolute top-0 right-0 p-4 hover:text-primary cursor-pointer" | |
onClick={onHide} | |
> | |
<Close size={32} /> | |
</div> | |
{children} | |
</div> | |
<form method="dialog" className="modal-backdrop"> | |
<button>close</button> | |
</form> | |
</dialog> | |
); | |
} | |