2022-02-01 09:58:06 +00:00
|
|
|
import { useContext, useRef } from "react";
|
|
|
|
|
|
|
|
import {
|
|
|
|
ExitFormDialogContext,
|
|
|
|
ExitFormDialogData,
|
|
|
|
SubmitFn,
|
|
|
|
WithFormId
|
|
|
|
} from "./ExitFormDialogProvider";
|
|
|
|
|
|
|
|
export interface UseExitFormDialogResult
|
2022-03-17 14:59:04 +00:00
|
|
|
extends Omit<ExitFormDialogData, "setIsDirty" | "setExitDialogSubmitRef">,
|
2022-02-01 09:58:06 +00:00
|
|
|
WithFormId {
|
|
|
|
setIsDirty: (isDirty: boolean) => void;
|
|
|
|
setExitDialogSubmitRef: (submitFn: SubmitFn) => void;
|
|
|
|
}
|
|
|
|
|
|
|
|
export interface UseExitFormDialogProps {
|
|
|
|
formId: symbol;
|
|
|
|
}
|
|
|
|
|
|
|
|
export const useExitFormDialog = (
|
|
|
|
{ formId }: UseExitFormDialogProps = { formId: undefined }
|
|
|
|
): UseExitFormDialogResult => {
|
|
|
|
const id = useRef(formId || Symbol()).current;
|
|
|
|
|
|
|
|
const { setIsDirty, setExitDialogSubmitRef, ...rest } = useContext(
|
|
|
|
ExitFormDialogContext
|
|
|
|
);
|
|
|
|
|
|
|
|
return {
|
|
|
|
...rest,
|
|
|
|
formId: id,
|
|
|
|
setIsDirty: (value: boolean) => setIsDirty(id, value),
|
|
|
|
setExitDialogSubmitRef: (submitFn: SubmitFn) =>
|
|
|
|
setExitDialogSubmitRef(id, submitFn)
|
|
|
|
};
|
|
|
|
};
|