From 28bf2c834d2fb8fa03d9bf4d66e66573b926fd14 Mon Sep 17 00:00:00 2001 From: zsmj1994 Date: Tue, 13 Oct 2020 10:35:25 +0800 Subject: [PATCH] =?UTF-8?q?DEC-15325=20fix:=20=E8=A7=A3=E5=86=B3click-blur?= =?UTF-8?q?=20popup=E6=8C=82=E5=9C=A8body=E4=B8=8A=E5=92=8CIE11=E5=AD=90?= =?UTF-8?q?=E5=85=83=E7=B4=A0=E8=A7=A6=E5=8F=91blur=E5=9C=BA=E6=99=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/base/combination/combo.js | 35 +++++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/src/base/combination/combo.js b/src/base/combination/combo.js index 04f4d17bc..fbd96f310 100644 --- a/src/base/combination/combo.js +++ b/src/base/combination/combo.js @@ -81,7 +81,7 @@ element: this }, BI.LogicFactory.createLogic("vertical", BI.extend(o.logic, { items: [ - {el: this.combo} + { el: this.combo } ] })))); o.isDefaultInit && (this._assertPopupView()); @@ -117,7 +117,7 @@ var enterPopup = false; - function hide (e) { + function hide(e) { if (self.isEnabled() && self.isValid() && self.combo.isEnabled() && self.combo.isValid() && o.toggle === true) { self._hideView(e); self.fireEvent(BI.Controller.EVENT_CHANGE, BI.Events.COLLAPSE, "", self.combo); @@ -223,13 +223,17 @@ var debounce = BI.debounce(function (e) { if (self.combo.element.__isMouseInBounds__(e)) { if (self.isEnabled() && self.isValid() && self.combo.isEnabled() && self.combo.isValid()) { - // if (!o.toggle && self.isViewVisible()) { - // return; - // } o.toggle ? self._toggle(e) : self._popupView(e); if (self.isViewVisible()) { self.fireEvent(BI.Controller.EVENT_CHANGE, BI.Events.EXPAND, "", self.combo); self.fireEvent(BI.Combo.EVENT_EXPAND); + self.popupView.element.off("mouseenter." + self.getName()).on("mouseenter." + self.getName(), function (e) { + enterPopup = true; + self.popupView.element.on("mouseleave." + self.getName(), function (e) { + enterPopup = false; + self.popupView.element.off("mouseleave." + self.getName()); + }); + }); } else { self.fireEvent(BI.Controller.EVENT_CHANGE, BI.Events.COLLAPSE, "", self.combo); self.fireEvent(BI.Combo.EVENT_COLLAPSE); @@ -243,15 +247,30 @@ self.element.off("click." + self.getName()).on("click." + self.getName(), function (e) { debounce(e); try { - self.element[0].focus(); + self.element.focus(); } catch (e) { } st(e); }); + + var enterCombo = false; + self.combo.element.off("mouseenter." + self.getName()).on("mouseenter." + self.getName(), function (e) { + enterCombo = true; + self.combo.element.on("mouseleave." + self.getName(), function (e) { + enterCombo = false; + self.combo.element.off("mouseleave." + self.getName()); + }); + }); + + self.element.off("blur." + self.getName()).on("blur." + self.getName(), function (e) { if (self.isViewVisible()) { - self._hideView(e); + if (!enterCombo && !enterPopup) { + self._hideView(e); + self.fireEvent(BI.Controller.EVENT_CHANGE, BI.Events.COLLAPSE, "", self.combo); + self.fireEvent(BI.Combo.EVENT_COLLAPSE); + } } st(e); }); @@ -295,7 +314,7 @@ scrolly: false, element: this.options.container || this, items: [ - {el: this.popupView} + { el: this.popupView } ] }); this._rendered = true;