diff --git a/src/main/js/components/dropdowns/utils.js b/src/main/js/components/dropdowns/utils.js index 588e1c232b02..b109cc389408 100644 --- a/src/main/js/components/dropdowns/utils.js +++ b/src/main/js/components/dropdowns/utils.js @@ -19,15 +19,20 @@ function generateDropdown(element, callback, immediate) { tippy( element, Object.assign({}, Templates.dropdown(), { - hideOnClick: element.dataset["hideOnClick"] !== "false", + hideOnClick: element.dataset["hideOnClick"] !== "false" ? "toggle" : false, onCreate(instance) { const onload = () => { if (instance.loaded) { return; } - instance.popper.addEventListener("click", () => { - instance.hide(); + document.addEventListener("click", (event) => { + const isClickInAnyDropdown = !!event.target.closest('[data-tippy-root]'); + const isClickOnReference = instance.reference.contains(event.target); + + if (!isClickInAnyDropdown && !isClickOnReference) { + instance.hide(); + } }); callback(instance);