From cf26eafa166e8af170a877a41135fd5c699454b4 Mon Sep 17 00:00:00 2001
From: rlazarini <remi.lazarini@cea.fr>
Date: Wed, 22 Jan 2025 10:22:13 +0100
Subject: [PATCH] [Ivette] added event to close modal with escape

---
 ivette/src/dome/renderer/dialogs.tsx | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/ivette/src/dome/renderer/dialogs.tsx b/ivette/src/dome/renderer/dialogs.tsx
index bed492719c2..786e6ff9e36 100644
--- a/ivette/src/dome/renderer/dialogs.tsx
+++ b/ivette/src/dome/renderer/dialogs.tsx
@@ -336,10 +336,21 @@ export function Modal(
   const { label, title, icon, className, onClose, children } = props;
 
   const contentClasses = classes('dome-xModal-content', className);
-  const onCloseModal = (): void => {
+  const onCloseModal = React.useCallback((): void => {
     closeModal();
     if(onClose) onClose();
-  };
+  }, [onClose]);
+
+  React.useEffect(() => {
+    const handleKeyDown = (event: KeyboardEvent): void => {
+      if (event.key === "Escape") onCloseModal();
+    };
+
+    window.addEventListener("keydown", handleKeyDown);
+    return () => {
+      window.removeEventListener("keydown", handleKeyDown);
+    };
+  }, [onCloseModal]);
 
   return (
     <div className={contentClasses}>
-- 
GitLab