Commit 8ec81da7 authored by qingwei.li's avatar qingwei.li

add clickoutside

parent 287868d1
<template>
<div class="el-dialog__wrapper" v-if="visible" transition="dialog-fade" @click.self="handleWrapperClick">
<div class="el-dialog {{ sizeClass }} {{ customClass }}" v-el:dialog :style="{ 'margin-bottom': size !== 'full' ? '50px' : '', 'top': size !== 'full' ? dynamicTop + 'px' : '0' }">
<div class="el-dialog" :class="[sizeClass, customClass]" v-el:dialog :style="{ 'margin-bottom': size !== 'full' ? '50px' : '', 'top': size !== 'full' ? dynamicTop + 'px' : '0' }">
<div class="el-dialog__header">
<span class="el-dialog__title">{{title}}</span>
<div class="el-dialog__headerbtn">
......
......@@ -11,7 +11,7 @@
@click="handleMiscClick"
:style="{ 'width': width + 'px' }"
transition="label-fade">
<i class="{{ onIconClass }}" v-if="onIconClass"></i>
<i :class="[onIconClass]" v-if="onIconClass"></i>
<span v-if="onText">{{ onText }}</span>
</div>
<div
......@@ -20,7 +20,7 @@
@click="handleMiscClick"
:style="{ 'width': width + 'px' }"
transition="label-fade">
<i class="{{ offIconClass }}" v-if="offIconClass"></i>
<i :class="[offIconClass]" v-if="offIconClass"></i>
<span v-if="offText">{{ offText }}</span>
</div>
</div>
......
/**
* v-clickoutside
* @desc 点击元素外面才会触发的事件
* @example
* ```vue
* <div v-element-clickoutside="handleClose">
* ```
*/
let handler;
export default {
bind(el, binding, vnode) {
const expression = binding.expression;
handler = function(e) {
if (vnode.context && !el.contains(e.target)) {
vnode.context[expression]();
}
};
document.addEventListener('click', handler);
},
unbind() {
document.removeEventListener('click', handler);
},
install(Vue) {
Vue.directive('clickoutside', {
bind: this.bind,
unbind: this.unbind
});
}
};
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