Commit bb060b98bcfd6b0f52d1a33a9989a93b23137cb9

Authored by 梁灏
1 parent 55fe310a

fix #5800, close #5647

Showing 1 changed file with 9 additions and 1 deletions   Show diff stats
src/components/modal/modal.vue
@@ -5,7 +5,7 @@ @@ -5,7 +5,7 @@
5 </transition> 5 </transition>
6 <div :class="wrapClasses" :style="wrapStyles" @click="handleWrapClick"> 6 <div :class="wrapClasses" :style="wrapStyles" @click="handleWrapClick">
7 <transition :name="transitionNames[0]" @after-leave="animationFinish"> 7 <transition :name="transitionNames[0]" @after-leave="animationFinish">
8 - <div :class="classes" :style="mainStyles" v-show="visible"> 8 + <div :class="classes" :style="mainStyles" v-show="visible" @mousedown="handleMousedown">
9 <div :class="contentClasses" ref="content" :style="contentStyles" @click="handleClickModal"> 9 <div :class="contentClasses" ref="content" :style="contentStyles" @click="handleClickModal">
10 <a :class="[prefixCls + '-close']" v-if="closable" @click="close"> 10 <a :class="[prefixCls + '-close']" v-if="closable" @click="close">
11 <slot name="close"> 11 <slot name="close">
@@ -140,6 +140,7 @@ @@ -140,6 +140,7 @@
140 dragging: false 140 dragging: false
141 }, 141 },
142 modalIndex: this.handleGetModalIndex(), // for Esc close the top modal 142 modalIndex: this.handleGetModalIndex(), // for Esc close the top modal
  143 + isMouseTriggerIn: false, // #5800
143 }; 144 };
144 }, 145 },
145 computed: { 146 computed: {
@@ -243,10 +244,17 @@ @@ -243,10 +244,17 @@
243 } 244 }
244 }, 245 },
245 handleWrapClick (event) { 246 handleWrapClick (event) {
  247 + if (this.isMouseTriggerIn) {
  248 + this.isMouseTriggerIn = false;
  249 + return;
  250 + }
246 // use indexOf,do not use === ,because ivu-modal-wrap can have other custom className 251 // use indexOf,do not use === ,because ivu-modal-wrap can have other custom className
247 const className = event.target.getAttribute('class'); 252 const className = event.target.getAttribute('class');
248 if (className && className.indexOf(`${prefixCls}-wrap`) > -1) this.handleMask(); 253 if (className && className.indexOf(`${prefixCls}-wrap`) > -1) this.handleMask();
249 }, 254 },
  255 + handleMousedown () {
  256 + this.isMouseTriggerIn = true;
  257 + },
250 cancel () { 258 cancel () {
251 this.close(); 259 this.close();
252 }, 260 },