diff --git a/frontend/src/hooks/useDialog.tsx b/frontend/src/hooks/useDialog.tsx index 5eb53434..867dbfb0 100644 --- a/frontend/src/hooks/useDialog.tsx +++ b/frontend/src/hooks/useDialog.tsx @@ -13,27 +13,33 @@ export type DialogControlProps = Omit< DialogControl, "openDialog" >; +type TCloseDialog = ( + e?: E, + reason?: "backdropClick" | "escapeKeyDown" | "postDelete", +) => void; +type TFnVoid = (data?: T) => void; export type DialogControl = DialogProps & { data?: T; - callback?: (data?: C) => void; - openDialog: (data?: T) => void; - closeDialog: () => void; + saveData?: TFnVoid; + callback?: TFnVoid; + openDialog: TFnVoid; + closeDialog: TCloseDialog; }; export const useDialog = (initialState: boolean): DialogControl => { const [open, setOpen] = useState(initialState); const [data, setData] = useState(undefined); - const openDialog = (data?: T) => { + const openDialog: TFnVoid = (data) => { if (data) setData(data); setOpen(true); }; - const closeDialog = (event?: React.MouseEvent | Event, reason?: string) => { - if (reason !== "backdropClick") { - setOpen(false); - } + const closeDialog: TCloseDialog = (event, reason) => { + if (reason === "postDelete") setData(undefined); + if (reason !== "backdropClick") setOpen(false); }; + const saveData: TFnVoid = (data) => setData(data); - return { open, openDialog, closeDialog, data }; + return { open, openDialog, closeDialog, data, saveData }; }; export const getDisplayDialogs = ({