UNPKG

element-ui

Version:

A Component Library for Vue.js.

50 lines (45 loc) 1.31 kB
import Utils from '../aria-utils'; import SubMenu from './aria-submenu'; const MenuItem = function(domNode) { this.domNode = domNode; this.submenu = null; this.init(); }; MenuItem.prototype.init = function() { this.domNode.setAttribute('tabindex', '0'); let menuChild = this.domNode.querySelector('.el-menu'); if (menuChild) { this.submenu = new SubMenu(this, menuChild); } this.addListeners(); }; MenuItem.prototype.addListeners = function() { const keys = Utils.keys; this.domNode.addEventListener('keydown', event => { let prevDef = false; switch (event.keyCode) { case keys.down: Utils.triggerEvent(event.currentTarget, 'mouseenter'); this.submenu && this.submenu.gotoSubIndex(0); prevDef = true; break; case keys.up: Utils.triggerEvent(event.currentTarget, 'mouseenter'); this.submenu && this.submenu.gotoSubIndex(this.submenu.subMenuItems.length - 1); prevDef = true; break; case keys.tab: Utils.triggerEvent(event.currentTarget, 'mouseleave'); break; case keys.enter: case keys.space: prevDef = true; event.currentTarget.click(); break; } if (prevDef) { event.preventDefault(); } }); }; export default MenuItem;