From 3dc892255acf3ce1ea499fe0d09efb94544d6827 Mon Sep 17 00:00:00 2001 From: NikolaBorislavovHristov Date: Thu, 22 Aug 2019 16:53:36 +0300 Subject: [PATCH] close Popup fixed .... again --- src/common/Popup/Popup.js | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/src/common/Popup/Popup.js b/src/common/Popup/Popup.js index 514d837d1..91664087b 100644 --- a/src/common/Popup/Popup.js +++ b/src/common/Popup/Popup.js @@ -9,29 +9,37 @@ const Popup = ({ open = false, menuMatchLabelWidth = false, renderLabel, renderM const [menuStyles, setMenuStyles] = React.useState({}); React.useEffect(() => { const checkCloseEvent = (event) => { - if (event.type === 'keydown') { - if (event.key === 'Escape') { + switch (event.type) { + case 'resize': onCloseRequest(event); - } - } else if (event.target !== window && - event.target !== document && - event.target !== document.documentElement && - !labelRef.current.contains(event.target) && - !menuRef.current.contains(event.target)) { - onCloseRequest(event); + break; + case 'keydown': + if (event.key === 'Escape') { + onCloseRequest(event); + } + break; + case 'mousedown': + case 'scroll': + if (event.target !== document && + event.target !== document.documentElement && + !labelRef.current.contains(event.target) && + !menuRef.current.contains(event.target)) { + onCloseRequest(event); + } + break; } }; if (open) { window.addEventListener('scroll', checkCloseEvent, true); - window.addEventListener('resize', checkCloseEvent); window.addEventListener('mousedown', checkCloseEvent); window.addEventListener('keydown', checkCloseEvent); + window.addEventListener('resize', checkCloseEvent); } return () => { window.removeEventListener('scroll', checkCloseEvent, true); - window.removeEventListener('resize', checkCloseEvent); window.removeEventListener('mousedown', checkCloseEvent); window.removeEventListener('keydown', checkCloseEvent); + window.removeEventListener('resize', checkCloseEvent); }; }, [open, onCloseRequest]); React.useEffect(() => {