diff --git a/ui/src/components/menu/QMenu.js b/ui/src/components/menu/QMenu.js index a3a358ea3df..c16e712a9d7 100644 --- a/ui/src/components/menu/QMenu.js +++ b/ui/src/components/menu/QMenu.js @@ -118,6 +118,11 @@ export default createComponent({ if (props.persistent !== true && showing.value === true) { hide(e) + // prevent further processing of click-outside handlers + if (props.separateClosePopup === true) { + e.qSeparateClosePopup = true + } + if ( // always prevent touch event e.type === 'touchstart' diff --git a/ui/src/utils/private.click-outside/click-outside.js b/ui/src/utils/private.click-outside/click-outside.js index bc5b1e963b5..9b0205cf18e 100644 --- a/ui/src/utils/private.click-outside/click-outside.js +++ b/ui/src/utils/private.click-outside/click-outside.js @@ -63,6 +63,11 @@ function globalHandler (evt) { // used to prevent refocus after menu close evt.qClickOutside = true state.onClickOutside(evt) + + // used to prevent closing all if nested + if (evt.qSeparateClosePopup === true) { + return + } } else { return