vxe-table-select-area
Version:
一个基于 vxe-table 的可区域选中复制、粘贴的组件
77 lines (72 loc) • 2.48 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
/*
events outside
desc:绑定元素触发的事件不在指定事件中,将会触发。此指令可替代 clickoutside
--------------------vue 模板用法如下:-----------------------------------
<tempate>
<button v-events-outside="{
events:["mousedown","mouseover"],
callback:(e)=>{} //
}">删除</button>
</tempate>
--------------------vue jsx 用法如下:-----------------------------------
<script>
export default{
render(){
const props = {
directives: [
{
name: "events-outside",
value: {
events: ["mousedown","mouseover"],
callback: (e) => {
//
},
},
}
]
};
return (
<div>
<button {...props}>删除</button>
</div>
)
}
}
</script>
*/
var _default = {
bind: function bind(el, binding, vNode) {
var _binding$value = binding.value,
events = _binding$value.events,
callback = _binding$value.callback;
if (Array.isArray(events) && events.length && typeof callback === "function") {
var handler = function handler(e) {
if (!el.contains(e.target) && el !== e.target) {
callback(e);
} else {
return false;
}
};
el.__eventsOutside__ = handler;
events.forEach(function (eventName) {
document.addEventListener(eventName, handler, true);
});
} else {
var compName = vNode.context.name;
console.error("[events-outside] Please provided 'events' and 'callback' in ".concat(compName));
}
},
unbind: function unbind(el, binding, vNode) {
var events = binding.value.events;
events.forEach(function (eventName) {
document.removeEventListener(eventName, el.__eventsOutside__, true);
});
el.__eventsOutside__ = null;
}
};
exports["default"] = _default;