import { Dialog, DialogModalType } from "@fluentui/react-components"; import { createContext, PropsWithChildren, ReactElement } from "react"; import PromptDialog, { PromptDialogProps } from "@/components/PromptDialog"; const DialogContext = createContext(null!); export default function DialogProvider(props: PropsWithChildren): ReactElement { const [dialog, setDialog] = useState(null); const [modalType, setModalType] = useState(undefined); const [onDismiss, setOnDismiss] = useState<(() => void) | undefined>(undefined); const pushPrompt = (props: PromptDialogProps): void => setDialog( ); const pushCustom = (dialogSurface: ReactElement, modalType?: DialogModalType, onDismiss?: () => void): void => { setDialog(dialogSurface); setModalType(modalType); setOnDismiss(() => onDismiss); }; const handleOpenChange = () => { onDismiss?.(); setOnDismiss(undefined); setTimeout(() => setDialog(null), 200); }; return ( { props.children } { dialog && { dialog } } ); } export const useDialog = () => useContext(DialogContext); export type DialogContextType = { pushPrompt(props: PromptDialogProps): void; pushCustom(dialogSurface: ReactElement, modalType?: DialogModalType, onDismiss?: () => void): void; };