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