From 34b0ad8d4a1ed778abecb269e1b9a2d0fb08a975 Mon Sep 17 00:00:00 2001 From: Majd_dk Date: Sun, 28 Sep 2025 11:48:11 +0300 Subject: [PATCH] add confirm when leave from add or edit question page --- src/Hooks/useUnsavedChangesWarning.tsx | 33 ++++++++++++++++---------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/src/Hooks/useUnsavedChangesWarning.tsx b/src/Hooks/useUnsavedChangesWarning.tsx index 145fd5b..3c9484d 100644 --- a/src/Hooks/useUnsavedChangesWarning.tsx +++ b/src/Hooks/useUnsavedChangesWarning.tsx @@ -3,7 +3,6 @@ import { useTranslation } from "react-i18next"; const useUnsavedChangesWarning = (unsavedChanges: boolean) => { const [t] = useTranslation(); - useEffect(() => { const handleBeforeUnload = (event: BeforeUnloadEvent) => { if (unsavedChanges) { @@ -14,29 +13,37 @@ const useUnsavedChangesWarning = (unsavedChanges: boolean) => { } }; - const handleNavigation = (event: MouseEvent) => { - if (unsavedChanges) { - console.log(t("Access denied: You have unsaved changes!")); - event.preventDefault(); - } - }; +const handleNavigation = (event: Event) => { + // const target = event.target as HTMLElement; + + if (unsavedChanges ) { + const leave = window.confirm(t("validation.You have unsaved changes! Are you sure you want to leave?")); + + if (leave) return ; + + event.stopPropagation(); + event.preventDefault(); + } +}; window.addEventListener("beforeunload", handleBeforeUnload); // Intercept link clicks (example for elements) - document.querySelectorAll("a").forEach((link) => { + // document.addEventListener("click", handleNavigation); + document.querySelectorAll(".link").forEach((link) => { link.addEventListener("click", handleNavigation); }); return () => { window.removeEventListener("beforeunload", handleBeforeUnload); - + document.querySelectorAll(".link").forEach((link) => { + link.removeEventListener("click", handleNavigation); + }); // Clean up event listeners - document.querySelectorAll("a").forEach((link) => { - link.removeEventListener("click", handleNavigation); - }); + document.removeEventListener("click", handleNavigation); + }; - }, [unsavedChanges, t]); + }, [unsavedChanges]); }; export default useUnsavedChangesWarning;