UNPKG

vxe-table-demonic

Version:

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

99 lines (98 loc) 2.89 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.hasEventKey = exports.GlobalEvent = exports.EVENT_KEYS = void 0; var _xeUtils = _interopRequireDefault(require("xe-utils")); var _dom = require("./dom"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 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' }; exports.EVENT_KEYS = EVENT_KEYS; 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 = _dom.browse.firefox ? 'DOMMouseScroll' : 'mousewheel'; var eventStore = []; var hasEventKey = function (evnt, targetKey) { var key = evnt.key; targetKey = targetKey.toLowerCase(); return key ? targetKey === key.toLowerCase() || !!(convertEventKeys[key] && convertEventKeys[key].toLowerCase() === targetKey) : false; }; exports.hasEventKey = hasEventKey; 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); } } }); } var GlobalEvent = { on: function (comp, type, cb) { eventStore.push({ comp: comp, type: type, cb: cb }); }, off: function (comp, type) { _xeUtils.default.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; } }; exports.GlobalEvent = GlobalEvent; if (_dom.browse.isDoc) { if (!_dom.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.default.throttle(triggerEvent, 100, { leading: true, trailing: false }), { passive: true, capture: false }); }