From 23297a14701a80d3640df6e233bac0a8aafe6875 Mon Sep 17 00:00:00 2001 From: NikolaBorislavovHristov Date: Wed, 21 Aug 2019 16:23:13 +0300 Subject: [PATCH] close popup on esc pressed --- src/common/Popup/Popup.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/common/Popup/Popup.js b/src/common/Popup/Popup.js index 760a8a79d..bfd193318 100644 --- a/src/common/Popup/Popup.js +++ b/src/common/Popup/Popup.js @@ -9,18 +9,24 @@ const Popup = ({ open = false, menuMatchLabelWidth = false, renderLabel, renderM const [menuStyles, setMenuStyles] = React.useState({}); React.useEffect(() => { const checkCloseEvent = (event) => { - if (!labelRef.current.contains(event.target) && !menuRef.current.contains(event.target)) { + if (event.type === 'keydown') { + if (event.key === 'Escape') { + onCloseRequest(event); + } + } else if (!labelRef.current.contains(event.target) && !menuRef.current.contains(event.target)) { onCloseRequest(event); } }; if (open) { window.addEventListener('scroll', checkCloseEvent, true); window.addEventListener('mousedown', checkCloseEvent); + window.addEventListener('keydown', checkCloseEvent); window.addEventListener('resize', onCloseRequest); } return () => { window.removeEventListener('scroll', checkCloseEvent, true); window.removeEventListener('mousedown', checkCloseEvent); + window.removeEventListener('keydown', checkCloseEvent); window.removeEventListener('resize', onCloseRequest); }; }, [open, onCloseRequest]);