add confirm when leave from add or edit question page
This commit is contained in:
parent
761be504cf
commit
34b0ad8d4a
|
|
@ -3,7 +3,6 @@ import { useTranslation } from "react-i18next";
|
||||||
|
|
||||||
const useUnsavedChangesWarning = (unsavedChanges: boolean) => {
|
const useUnsavedChangesWarning = (unsavedChanges: boolean) => {
|
||||||
const [t] = useTranslation();
|
const [t] = useTranslation();
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const handleBeforeUnload = (event: BeforeUnloadEvent) => {
|
const handleBeforeUnload = (event: BeforeUnloadEvent) => {
|
||||||
if (unsavedChanges) {
|
if (unsavedChanges) {
|
||||||
|
|
@ -14,9 +13,15 @@ const useUnsavedChangesWarning = (unsavedChanges: boolean) => {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleNavigation = (event: MouseEvent) => {
|
const handleNavigation = (event: Event) => {
|
||||||
|
// const target = event.target as HTMLElement;
|
||||||
|
|
||||||
if (unsavedChanges ) {
|
if (unsavedChanges ) {
|
||||||
console.log(t("Access denied: You have unsaved changes!"));
|
const leave = window.confirm(t("validation.You have unsaved changes! Are you sure you want to leave?"));
|
||||||
|
|
||||||
|
if (leave) return ;
|
||||||
|
|
||||||
|
event.stopPropagation();
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
@ -24,19 +29,21 @@ const useUnsavedChangesWarning = (unsavedChanges: boolean) => {
|
||||||
window.addEventListener("beforeunload", handleBeforeUnload);
|
window.addEventListener("beforeunload", handleBeforeUnload);
|
||||||
|
|
||||||
// Intercept link clicks (example for <a> elements)
|
// Intercept link clicks (example for <a> elements)
|
||||||
document.querySelectorAll("a").forEach((link) => {
|
// document.addEventListener("click", handleNavigation);
|
||||||
|
document.querySelectorAll(".link").forEach((link) => {
|
||||||
link.addEventListener("click", handleNavigation);
|
link.addEventListener("click", handleNavigation);
|
||||||
});
|
});
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
window.removeEventListener("beforeunload", handleBeforeUnload);
|
window.removeEventListener("beforeunload", handleBeforeUnload);
|
||||||
|
document.querySelectorAll(".link").forEach((link) => {
|
||||||
// Clean up event listeners
|
|
||||||
document.querySelectorAll("a").forEach((link) => {
|
|
||||||
link.removeEventListener("click", handleNavigation);
|
link.removeEventListener("click", handleNavigation);
|
||||||
});
|
});
|
||||||
|
// Clean up event listeners
|
||||||
|
document.removeEventListener("click", handleNavigation);
|
||||||
|
|
||||||
};
|
};
|
||||||
}, [unsavedChanges, t]);
|
}, [unsavedChanges]);
|
||||||
};
|
};
|
||||||
|
|
||||||
export default useUnsavedChangesWarning;
|
export default useUnsavedChangesWarning;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user