From b3a21e01821841d635d620b0d6e8b0a5f259c110 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tu=C4=9F=C3=A7e=20K=C3=BC=C3=A7=C3=BCko=C4=9Flu?= Date: Wed, 30 Mar 2022 15:07:10 +0300 Subject: [PATCH] Fixed #2371 - StyleClass may fail to enter the element --- src/components/styleclass/StyleClass.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/components/styleclass/StyleClass.js b/src/components/styleclass/StyleClass.js index 2252e5836..43be415ce 100644 --- a/src/components/styleclass/StyleClass.js +++ b/src/components/styleclass/StyleClass.js @@ -137,10 +137,11 @@ function resolveTarget(el, binding) { function bindDocumentListener(target, el, binding) { if (!target.$p_styleclass_documentlistener) { target.$p_styleclass_documentlistener = (event) => { - if (getComputedStyle(target).getPropertyValue('position') === 'static') { + if (isVisible(target) || getComputedStyle(target).getPropertyValue('position') === 'static') { unbindDocumentListener(target); } - else if (!el.isSameNode(event.target) && !el.contains(event.target) && !target.contains(event.target)) { + + else if (isOutsideClick(event, target, el)) { leave(target, binding); } } @@ -156,6 +157,14 @@ function unbindDocumentListener(target) { } } +function isVisible(target) { + return target.offsetParent !== null; +} + +function isOutsideClick(event, target, el) { + return !el.isSameNode(event.target) && !el.contains(event.target) && !target.contains(event.target); +} + const StyleClass = { mounted(el, binding) { bind(el, binding);