From 6d2f68b24c1e0f61c2d2f711e4cefa22f785f770 Mon Sep 17 00:00:00 2001 From: "cinwell.li" Date: Thu, 15 Dec 2016 12:50:08 +0800 Subject: [PATCH] Popup: prevent click event bubbles, fixed #1677 (#1754) --- src/utils/vue-popper.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/utils/vue-popper.js b/src/utils/vue-popper.js index 71c498189..2408f4b7f 100644 --- a/src/utils/vue-popper.js +++ b/src/utils/vue-popper.js @@ -1,6 +1,8 @@ import PopperJS from './popper'; import { PopupManager } from 'vue-popup'; +const stop = e => e.stopPropagation(); + /** * @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. @@ -93,6 +95,7 @@ export default { this.$nextTick(this.updatePopper); }); this.popperJS._popper.style.zIndex = PopupManager.nextZIndex(); + this.popperElm.addEventListener('click', stop); }, updatePopper() { @@ -149,9 +152,10 @@ export default { beforeDestroy() { this.doDestroy(); - this.popperElm && - this.popperElm.parentNode === document.body && - document.body.removeChild(this.popperElm); + if (this.popperElm && this.popperElm.parentNode === document.body) { + this.popperElm.removeEventListener('click', stop); + document.body.removeChild(this.popperElm); + } }, // call destroy in keep-alive mode