UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 2.39 kB
{"version":3,"file":"menu-item.mjs","sources":["../../../../../packages/utils/menu/menu-item.ts"],"sourcesContent":["import { EVENT_CODE, triggerEvent } from '../aria'\nimport SubMenu from './submenu'\n\nclass MenuItem {\n public submenu: SubMenu = null\n constructor(public domNode: HTMLElement) {\n this.submenu = null\n this.init()\n }\n\n init(): void {\n this.domNode.setAttribute('tabindex', '0')\n const menuChild = this.domNode.querySelector('.el-menu')\n if (menuChild) {\n this.submenu = new SubMenu(this, menuChild)\n }\n this.addListeners()\n }\n\n addListeners(): void {\n this.domNode.addEventListener('keydown', (event: KeyboardEvent) => {\n let prevDef = false\n switch (event.code) {\n case EVENT_CODE.down: {\n triggerEvent(event.currentTarget as HTMLElement, 'mouseenter')\n this.submenu && this.submenu.gotoSubIndex(0)\n prevDef = true\n break\n }\n case EVENT_CODE.up: {\n triggerEvent(event.currentTarget as HTMLElement, 'mouseenter')\n this.submenu &&\n this.submenu.gotoSubIndex(this.submenu.subMenuItems.length - 1)\n prevDef = true\n break\n }\n case EVENT_CODE.tab: {\n triggerEvent(event.currentTarget as HTMLElement, 'mouseleave')\n break\n }\n case EVENT_CODE.enter:\n case EVENT_CODE.space: {\n prevDef = true\n ;(event.currentTarget as HTMLElement).click()\n break\n }\n }\n if (prevDef) {\n event.preventDefault()\n }\n })\n }\n}\n\nexport default MenuItem\n"],"names":[],"mappings":";;;AAGA,eAAe;AAAA,EAEb,YAAmB,SAAsB;AAAtB;AADZ,mBAAmB;AAExB,SAAK,UAAU;AACf,SAAK;AAAA;AAAA,EAGP,OAAa;AACX,SAAK,QAAQ,aAAa,YAAY;AACtC,UAAM,YAAY,KAAK,QAAQ,cAAc;AAC7C,QAAI,WAAW;AACb,WAAK,UAAU,IAAI,QAAQ,MAAM;AAAA;AAEnC,SAAK;AAAA;AAAA,EAGP,eAAqB;AACnB,SAAK,QAAQ,iBAAiB,WAAW,CAAC,UAAyB;AACjE,UAAI,UAAU;AACd,cAAQ,MAAM;AAAA,aACP,WAAW,MAAM;AACpB,uBAAa,MAAM,eAA8B;AACjD,eAAK,WAAW,KAAK,QAAQ,aAAa;AAC1C,oBAAU;AACV;AAAA;AAAA,aAEG,WAAW,IAAI;AAClB,uBAAa,MAAM,eAA8B;AACjD,eAAK,WACH,KAAK,QAAQ,aAAa,KAAK,QAAQ,aAAa,SAAS;AAC/D,oBAAU;AACV;AAAA;AAAA,aAEG,WAAW,KAAK;AACnB,uBAAa,MAAM,eAA8B;AACjD;AAAA;AAAA,aAEG,WAAW;AAAA,aACX,WAAW,OAAO;AACrB,oBAAU;AACT,UAAC,MAAM,cAA8B;AACtC;AAAA;AAAA;AAGJ,UAAI,SAAS;AACX,cAAM;AAAA;AAAA;AAAA;AAAA;;;;"}