UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 2.57 kB
{"version":3,"file":"menu-item.mjs","names":[],"sources":["../../../../../../../packages/components/menu/src/utils/menu-item.ts"],"sourcesContent":["import { getEventCode, triggerEvent } from '@element-plus/utils'\nimport { EVENT_CODE } from '@element-plus/constants'\nimport SubMenu from './submenu'\n\nclass MenuItem {\n public submenu: SubMenu | null\n constructor(\n public domNode: HTMLElement,\n namespace: string\n ) {\n this.submenu = null\n this.init(namespace)\n }\n\n init(namespace: string): void {\n this.domNode.setAttribute('tabindex', '0')\n const menuChild = this.domNode.querySelector(`.${namespace}-menu`)\n if (menuChild) {\n this.submenu = new SubMenu(this, menuChild)\n }\n this.addListeners()\n }\n\n addListeners() {\n this.domNode.addEventListener('keydown', (event: KeyboardEvent) => {\n const code = getEventCode(event)\n let prevDef = false\n\n switch (code) {\n case EVENT_CODE.down: {\n triggerEvent(event.currentTarget as HTMLElement, 'mouseenter')\n 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?.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.numpadEnter:\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"],"mappings":";;;;;AAIA,IAAM,WAAN,MAAe;CAEb,YACE,SACA,WACA;EAFO,KAAA,UAAA;EAGP,KAAK,UAAU;EACf,KAAK,KAAK,UAAU;;CAGtB,KAAK,WAAyB;EAC5B,KAAK,QAAQ,aAAa,YAAY,IAAI;EAC1C,MAAM,YAAY,KAAK,QAAQ,cAAc,IAAI,UAAU,OAAO;EAClE,IAAI,WACF,KAAK,UAAU,IAAI,QAAQ,MAAM,UAAU;EAE7C,KAAK,cAAc;;CAGrB,eAAe;EACb,KAAK,QAAQ,iBAAiB,YAAY,UAAyB;GACjE,MAAM,OAAO,aAAa,MAAM;GAChC,IAAI,UAAU;GAEd,QAAQ,MAAR;IACE,KAAK,WAAW;KACd,aAAa,MAAM,eAA8B,aAAa;KAC9D,KAAK,SAAS,aAAa,EAAE;KAC7B,UAAU;KACV;IAEF,KAAK,WAAW;KACd,aAAa,MAAM,eAA8B,aAAa;KAC9D,KAAK,SAAS,aAAa,KAAK,QAAQ,aAAa,SAAS,EAAE;KAChE,UAAU;KACV;IAEF,KAAK,WAAW;KACd,aAAa,MAAM,eAA8B,aAAa;KAC9D;IAEF,KAAK,WAAW;IAChB,KAAK,WAAW;IAChB,KAAK,WAAW;KACd,UAAU;KACT,MAAO,cAA8B,OAAO;KAC7C;;GAGJ,IAAI,SACF,MAAM,gBAAgB;IAExB"}