From 09bce8de8399cb19fd8dc625851a6d5d61fb898e Mon Sep 17 00:00:00 2001
From: 梁灏 <admin@aresn.com>
Date: Tue, 21 Feb 2017 11:36:41 +0800
Subject: [PATCH] update Modal

---
 src/components/modal/modal.vue |  8 ++++++--
 src/styles/mixins/mask.less    |  1 +
 test/routers/more.vue          | 47 ++++++++++++++++++++++++-----------------------
 3 files changed, 31 insertions(+), 25 deletions(-)

diff --git a/src/components/modal/modal.vue b/src/components/modal/modal.vue
index 82265d2..0ace491 100644
--- a/src/components/modal/modal.vue
+++ b/src/components/modal/modal.vue
@@ -1,6 +1,6 @@
 <template>
-    <div :class="wrapClasses">
-        <div :class="maskClasses" v-show="visible" @click="mask" transition="fade"></div>
+    <div :class="maskClasses" v-show="visible" @click="mask" transition="fade"></div>
+    <div :class="wrapClasses" @click="handleWrapClick">
         <div :class="classes" :style="styles" v-show="visible" transition="ease">
             <div :class="[prefixCls + '-content']">
                 <a :class="[prefixCls + '-close']" v-if="closable" @click="close">
@@ -130,6 +130,10 @@
                     this.close();
                 }
             },
+            handleWrapClick (event) {
+                // use indexOf,do not use === ,because ivu-modal-wrap can have other custom className
+                if (event.target.getAttribute('class').indexOf(`${prefixCls}-wrap`) > -1) this.mask();
+            },
             cancel () {
                 this.close();
             },
diff --git a/src/styles/mixins/mask.less b/src/styles/mixins/mask.less
index 2d69d4e..6631950 100644
--- a/src/styles/mixins/mask.less
+++ b/src/styles/mixins/mask.less
@@ -6,6 +6,7 @@
     right: 0;
     background-color: rgba(55, 55, 55, 0.6);
     height: 100%;
+    z-index: @zindex-modal;
 
     &-hidden {
         display: none;
diff --git a/test/routers/more.vue b/test/routers/more.vue
index 9a702f2..aa1c63a 100644
--- a/test/routers/more.vue
+++ b/test/routers/more.vue
@@ -1,39 +1,40 @@
-<style>
-    body{
-        height: 2000px !important;
+<style lang="less">
+    .vertical-center-modal{
+        display: flex;
+        align-items: center;
+        justify-content: center;
+
+    .ivu-modal{
+        top: 0;
+    }
     }
 </style>
 <template>
-    <i-button type="primary" @click="modal1 = true">显示对话框</i-button>
-    <i-button @click="scrollable = !scrollable">Toggle scrollable</i-button>
-    scrollable:{{scrollable}}
+    <i-button @click="modal9 = true">距离顶部 20px</i-button>
     <Modal
-            :visible.sync="modal1"
-            title="普通的Modal对话框标题"
-            :scrollable="scrollable"
-            @on-ok="ok"
-            @on-cancel="cancel">
+            title="对话框标题"
+            :visible.sync="modal9"
+            :style="{top: '20px'}">
+        <p>对话框内容</p>
+        <p>对话框内容</p>
+        <p>对话框内容</p>
+    </Modal>
+    <i-button @click="modal10 = true">垂直居中</i-button>
+    <Modal
+            title="对话框标题"
+            :visible.sync="modal10"
+            class-name="vertical-center-modal">
         <p>对话框内容</p>
         <p>对话框内容</p>
         <p>对话框内容</p>
-        <i-button @click="scrollable = !scrollable">Toggle scrollable</i-button>
     </Modal>
 </template>
 <script>
     export default {
         data () {
             return {
-                modal1: false,
-                scrollable: false
-            }
-        },
-        methods: {
-            ok () {
-                this.$nextTick(() => this.modal1 = true);
-                this.$Message.info('点击了确定');
-            },
-            cancel () {
-                this.$Message.info('点击了取消');
+                modal9: false,
+                modal10: false,
             }
         }
     }
--
libgit2 0.21.4