Commit a44ca2b3 authored by JingChao's avatar JingChao

Update Modal.vue

parent 832295a0
<template> <template>
<!--<transition :name="transition">--> <!--<transition :name="transition">-->
<div v-show="showModal" :class="active" class="modal-backdrop" @touchstart="hideModal"> <div v-show="showModal" :class="active" class="modal-backdrop" @click.capture="hideModal">
<div class="modal-backdrop-bg"/> <div class="modal-backdrop-bg"/>
<div <div
:class="[modalClass,cusClass]" :class="[modalClass,transition]"
class="modal slide-in-up" class="modal"
@touchstart="start" @touchstart="start"
@mousedown="start"> @mousedown="start">
<slot/> <slot/>
...@@ -19,7 +19,7 @@ export default { ...@@ -19,7 +19,7 @@ export default {
value: Boolean, // eslint-disable-line value: Boolean, // eslint-disable-line
position: { position: {
type: String, type: String,
default: 'bottom', default: 'top',
}, },
cusClass: { cusClass: {
type: String, type: String,
...@@ -34,7 +34,12 @@ export default { ...@@ -34,7 +34,12 @@ export default {
}, },
computed: { computed: {
transition () { transition () {
return this.position === 'bottom' ? 'slide-in-up' : 'slide-in-down' return {
'slide-in-up': this.position === 'top',
'slide-in-down': this.position === 'bottom',
'slide-in-left': this.position === 'left',
'slide-in-right': this.position === 'right',
}
}, },
active () { active () {
return this.showModal ? 'active' : 'hide' return this.showModal ? 'active' : 'hide'
...@@ -59,7 +64,7 @@ export default { ...@@ -59,7 +64,7 @@ export default {
this.state = 2 this.state = 2
setTimeout(() => { setTimeout(() => {
}, 400) }, 400)
}, 50) }, 100)
}, },
showModal (val) { showModal (val) {
// 标签用法时需要发射一个input事件,修改v-model绑定的属性值 // 标签用法时需要发射一个input事件,修改v-model绑定的属性值
...@@ -72,14 +77,16 @@ export default { ...@@ -72,14 +77,16 @@ export default {
}, },
start (e) { start (e) {
e.stopPropagation() // e.stopPropagation()
}, },
hideModal () { hideModal (e) {
this.state = 3 if(e.target.className.indexOf('modal-backdrop') === 0){
setTimeout(() => { this.state = 3
this.state = 0 setTimeout(() => {
this.showModal = false this.state = 0
}, 250) this.showModal = false
}, 250)
}
}, },
}, },
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment