UNPKG

@mucfe/matui

Version:

基于Vue和ElementUi的PC组件库

70 lines (51 loc) 1.68 kB
"use strict"; exports.__esModule = true; exports.default = void 0; var _ariaUtils = _interopRequireDefault(require("../aria-utils")); var _ariaSubmenu = _interopRequireDefault(require("./aria-submenu")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var MenuItem = function MenuItem(domNode) { this.domNode = domNode; this.submenu = null; this.init(); }; MenuItem.prototype.init = function () { this.domNode.setAttribute('tabindex', '0'); var menuChild = this.domNode.querySelector('.mat-menu'); if (menuChild) { this.submenu = new _ariaSubmenu.default(this, menuChild); } this.addListeners(); }; MenuItem.prototype.addListeners = function () { var _this = this; var keys = _ariaUtils.default.keys; this.domNode.addEventListener('keydown', function (event) { var prevDef = false; switch (event.keyCode) { case keys.down: _ariaUtils.default.triggerEvent(event.currentTarget, 'mouseenter'); _this.submenu && _this.submenu.gotoSubIndex(0); prevDef = true; break; case keys.up: _ariaUtils.default.triggerEvent(event.currentTarget, 'mouseenter'); _this.submenu && _this.submenu.gotoSubIndex(_this.submenu.subMenuItems.length - 1); prevDef = true; break; case keys.tab: _ariaUtils.default.triggerEvent(event.currentTarget, 'mouseleave'); break; case keys.enter: case keys.space: prevDef = true; event.currentTarget.click(); break; } if (prevDef) { event.preventDefault(); } }); }; var _default = MenuItem; exports.default = _default;