openpanel/packages/react-location/src/prompt.tsx
Stefan Pejcic 8595a9f4e5 back
2024-05-08 19:58:53 +02:00

30 lines
743 B
TypeScript

import { useLocation } from "@tanstack/react-location";
import { useEffect } from "react";
import type { PromptProps } from "@pankod/refine-core";
export const Prompt: React.FC<PromptProps> = ({
message,
when,
setWarnWhen,
}) => {
const location = useLocation();
useEffect(() => {
if (!when) return;
const unblock = location.history.block((transition: any) => {
if (window.confirm(message)) {
setWarnWhen?.(false);
unblock();
transition.retry();
} else {
location.current.pathname = window.location.pathname;
}
});
return unblock;
}, [when, location, message]);
return null;
};