From 22d13621f4c40acc1afb3e1d6a5c63b1c87629fc Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Bellet Date: Thu, 24 Mar 2022 09:44:49 +0100 Subject: [PATCH] Only send close reflex if element is actually visible --- app/webpacker/controllers/selector_controller.js | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/app/webpacker/controllers/selector_controller.js b/app/webpacker/controllers/selector_controller.js index c5311ba583..d2eb881bfc 100644 --- a/app/webpacker/controllers/selector_controller.js +++ b/app/webpacker/controllers/selector_controller.js @@ -14,8 +14,15 @@ export default class extends ApplicationController { window.removeEventListener("click", this.closeOnClickOutside); } + afterReflex() { + this.computeItemsHeight(); + } + closeOnClickOutside = (event) => { - if (!this.element.contains(event.target)) { + if ( + !this.element.contains(event.target) && + this.isVisible(this.element.querySelector(".selector-wrapper")) + ) { this.stimulate(`${this.reflex}#close`, this.element); } }; @@ -25,4 +32,9 @@ export default class extends ApplicationController { const rect = items.getBoundingClientRect(); items.style.maxHeight = `calc(100vh - ${rect.height}px)`; }; + + isVisible = (element) => { + const style = window.getComputedStyle(element); + return style.display !== "none" && style.visibility !== "hidden"; + }; }