UNPKG

vxe-table-select-area

Version:

一个基于 vxe-table 的可区域选中复制、粘贴的组件

77 lines (72 loc) 2.48 kB
"use strict"; 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;