import { Button, Dialog, DialogActions, DialogBody, DialogContent, DialogSurface, DialogTitle, } from "@fluentui/react-components"; import React, { PropsWithChildren } from "react"; type ConfirmContext = ( message: string, title?: string, confirmButton?: string, cancelButton?: string ) => Promise; const ConfirmContextK = React.createContext(null); export function ConfirmDialogProvider( p: PropsWithChildren ): React.ReactElement { const [open, setOpen] = React.useState(false); const [title, setTitle] = React.useState(undefined); const [message, setMessage] = React.useState(""); const [confirmButton, setConfirmButton] = React.useState( undefined ); const [cancelButton, setCancelButton] = React.useState( undefined ); const cb = React.useRef void)>(null); const handleClose = (confirm: boolean) => { setOpen(false); if (cb.current !== null) cb.current(confirm); cb.current = null; }; const hook: ConfirmContext = ( message, title, confirmButton, cancelButton ) => { setTitle(title); setMessage(message); setConfirmButton(confirmButton); setCancelButton(cancelButton); setOpen(true); return new Promise((res) => { cb.current = res; }); }; return ( <> {p.children} { if (!data.open) setOpen(false); }} > {title && {title}} {message} ); } export function useConfirm(): ConfirmContext { return React.useContext(ConfirmContextK)!; }