UNPKG

vxe-table-demonic

Version:

一个基于 vue 的 PC 端表单/表格组件,支持增删改查、虚拟列表、虚拟树、懒加载、快捷菜单、数据校验、树形结构、打印导出、表单渲染、数据分页、弹窗、自定义模板、渲染器、JSON 配置式...

77 lines (76 loc) 2.61 kB
import XEUtils from 'xe-utils'; import { browse } from './dom'; export var EVENT_KEYS = { F2: 'F2', ESCAPE: 'Escape', ENTER: 'Enter', TAB: 'Tab', DELETE: 'Delete', BACKSPACE: 'Backspace', SPACEBAR: ' ', CONTEXT_MENU: 'ContextMenu', ARROW_UP: 'ArrowUp', ARROW_DOWN: 'ArrowDown', ARROW_LEFT: 'ArrowLeft', ARROW_RIGHT: 'ArrowRight', PAGE_UP: 'PageUp', PAGE_DOWN: 'PageDown' }; var convertEventKeys = { ' ': 'Spacebar', Apps: EVENT_KEYS.CONTEXT_MENU, Del: EVENT_KEYS.DELETE, Up: EVENT_KEYS.ARROW_UP, Down: EVENT_KEYS.ARROW_DOWN, Left: EVENT_KEYS.ARROW_LEFT, Right: EVENT_KEYS.ARROW_RIGHT }; // 监听全局事件 var wheelName = browse.firefox ? 'DOMMouseScroll' : 'mousewheel'; var eventStore = []; export var hasEventKey = function (evnt, targetKey) { var key = evnt.key; targetKey = targetKey.toLowerCase(); return key ? (targetKey === key.toLowerCase() || !!(convertEventKeys[key] && convertEventKeys[key].toLowerCase() === targetKey)) : false; }; function triggerEvent(evnt) { var isWheel = evnt.type === wheelName; eventStore.forEach(function (_a) { var type = _a.type, cb = _a.cb; // 如果被取消冒泡,不再执行 if (!evnt.cancelBubble) { if (type === evnt.type || (isWheel && type === 'mousewheel')) { cb(evnt); } } }); } export var GlobalEvent = { on: function (comp, type, cb) { eventStore.push({ comp: comp, type: type, cb: cb }); }, off: function (comp, type) { XEUtils.remove(eventStore, function (item) { return item.comp === comp && item.type === type; }); }, trigger: triggerEvent, eqKeypad: function (evnt, keyVal) { var key = evnt.key; if (keyVal.toLowerCase() === key.toLowerCase()) { return true; } return false; } }; if (browse.isDoc) { if (!browse.msie) { document.addEventListener('copy', triggerEvent, false); document.addEventListener('cut', triggerEvent, false); document.addEventListener('paste', triggerEvent, false); } document.addEventListener('keydown', triggerEvent, false); document.addEventListener('contextmenu', triggerEvent, false); window.addEventListener('mousedown', triggerEvent, false); window.addEventListener('blur', triggerEvent, false); window.addEventListener('resize', triggerEvent, false); window.addEventListener(wheelName, XEUtils.throttle(triggerEvent, 100, { leading: true, trailing: false }), { passive: true, capture: false }); }