Преглед изворни кода

Tooltip: fix destroy popper

qingwei.li пре 9 година
родитељ
комит
4a96617af0
2 измењених фајлова са 7 додато и 6 уклоњено
  1. 2 1
      package.json
  2. 5 5
      src/utils/vue-popper.js

+ 2 - 1
package.json

@@ -68,6 +68,7 @@
     "vue-popup": "^0.2.3",
     "vue-router": "^2.0.0-beta.2",
     "webpack": "^1.13.2",
-    "webpack-dev-server": "^1.15.1"
+    "webpack-dev-server": "^1.15.1",
+    "wind-dom": "0.0.3"
   }
 }

+ 5 - 5
src/utils/vue-popper.js

@@ -1,5 +1,5 @@
 import PopperJS from 'main/utils/popper';
-
+import { once } from 'wind-dom/src/event';
 /**
  * @param {HTMLElement} [reference=$refs.reference] - The reference element used to position the popper.
  * @param {HTMLElement} [popper=$refs.popper] - The HTML element used as popper, or a configuration used to generate the popper.
@@ -100,9 +100,7 @@ export default {
 
     doDestroy() {
       if (this.showPopper) return;
-
-      this.popperJS._popper.removeEventListener('transitionend', this.doDestroy);
-      this.popperJS.destroy();
+      this.popperJS && this.popperJS.destroy();
       this.popperJS = null;
     },
 
@@ -110,7 +108,9 @@ export default {
       if (this.popperJS) {
         this.resetTransformOrigin(this.popperJS);
         if (this.transition) {
-          this.popperJS._popper.addEventListener('transitionend', this.doDestroy);
+          once(this.popperJS._popper, 'webkitTransitionEnd', this.doDestroy);
+          once(this.popperJS._popper, 'oTransitionend', this.doDestroy);
+          once(this.popperJS._popper, 'transitionend', this.doDestroy);
         } else {
           this.doDestroy();
         }