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;
|