UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 3.92 kB
{"version":3,"file":"submenu.mjs","sources":["../../../../../../../packages/components/menu/src/utils/submenu.ts"],"sourcesContent":["// @ts-nocheck\nimport { getEventCode, triggerEvent } from '@element-plus/utils'\nimport { EVENT_CODE } from '@element-plus/constants'\n\nimport type MenuItem from './menu-item'\n\nclass SubMenu {\n public subMenuItems: NodeList\n public subIndex = 0\n constructor(\n public parent: MenuItem,\n public domNode: ParentNode\n ) {\n this.subIndex = 0\n this.init()\n }\n\n init(): void {\n this.subMenuItems = this.domNode.querySelectorAll('li')\n this.addListeners()\n }\n\n gotoSubIndex(idx: number): void {\n if (idx === this.subMenuItems.length) {\n idx = 0\n } else if (idx < 0) {\n idx = this.subMenuItems.length - 1\n }\n ;(this.subMenuItems[idx] as HTMLElement).focus()\n this.subIndex = idx\n }\n\n addListeners(): void {\n const parentNode = this.parent.domNode\n Array.prototype.forEach.call(this.subMenuItems, (el: Element) => {\n el.addEventListener('keydown', (event: KeyboardEvent) => {\n const code = getEventCode(event)\n let prevDef = false\n\n switch (code) {\n case EVENT_CODE.down: {\n this.gotoSubIndex(this.subIndex + 1)\n prevDef = true\n break\n }\n case EVENT_CODE.up: {\n this.gotoSubIndex(this.subIndex - 1)\n prevDef = true\n break\n }\n case EVENT_CODE.tab: {\n triggerEvent(parentNode 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 event.stopPropagation()\n }\n return false\n })\n })\n }\n}\n\nexport default SubMenu\n"],"names":[],"mappings":";;;;AAMA,MAAM,OAAQ,CAAA;AAAA,EAGZ,WAAA,CACS,QACA,OACP,EAAA;AAFO,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA,CAAA;AACA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA,CAAA;AAHT,IAAA,IAAA,CAAO,QAAW,GAAA,CAAA,CAAA;AAKhB,IAAA,IAAA,CAAK,QAAW,GAAA,CAAA,CAAA;AAChB,IAAA,IAAA,CAAK,IAAK,EAAA,CAAA;AAAA,GACZ;AAAA,EAEA,IAAa,GAAA;AACX,IAAA,IAAA,CAAK,YAAe,GAAA,IAAA,CAAK,OAAQ,CAAA,gBAAA,CAAiB,IAAI,CAAA,CAAA;AACtD,IAAA,IAAA,CAAK,YAAa,EAAA,CAAA;AAAA,GACpB;AAAA,EAEA,aAAa,GAAmB,EAAA;AAC9B,IAAI,IAAA,GAAA,KAAQ,IAAK,CAAA,YAAA,CAAa,MAAQ,EAAA;AACpC,MAAM,GAAA,GAAA,CAAA,CAAA;AAAA,KACR,MAAA,IAAW,MAAM,CAAG,EAAA;AAClB,MAAM,GAAA,GAAA,IAAA,CAAK,aAAa,MAAS,GAAA,CAAA,CAAA;AAAA,KACnC;AACC,IAAC,IAAA,CAAK,YAAa,CAAA,GAAA,CAAA,CAAqB,KAAM,EAAA,CAAA;AAC/C,IAAA,IAAA,CAAK,QAAW,GAAA,GAAA,CAAA;AAAA,GAClB;AAAA,EAEA,YAAqB,GAAA;AACnB,IAAM,MAAA,UAAA,GAAa,KAAK,MAAO,CAAA,OAAA,CAAA;AAC/B,IAAA,KAAA,CAAM,UAAU,OAAQ,CAAA,IAAA,CAAK,IAAK,CAAA,YAAA,EAAc,CAAC,EAAgB,KAAA;AAC/D,MAAG,EAAA,CAAA,gBAAA,CAAiB,SAAW,EAAA,CAAC,KAAyB,KAAA;AACvD,QAAM,MAAA,IAAA,GAAO,aAAa,KAAK,CAAA,CAAA;AAC/B,QAAA,IAAI,OAAU,GAAA,KAAA,CAAA;AAEd,QAAQ,QAAA,IAAA;AAAA,UAAA,KACD,WAAW,IAAM,EAAA;AACpB,YAAK,IAAA,CAAA,YAAA,CAAa,IAAK,CAAA,QAAA,GAAW,CAAC,CAAA,CAAA;AACnC,YAAU,OAAA,GAAA,IAAA,CAAA;AACV,YAAA,MAAA;AAAA,WACF;AAAA,UAAA,KACK,WAAW,EAAI,EAAA;AAClB,YAAK,IAAA,CAAA,YAAA,CAAa,IAAK,CAAA,QAAA,GAAW,CAAC,CAAA,CAAA;AACnC,YAAU,OAAA,GAAA,IAAA,CAAA;AACV,YAAA,MAAA;AAAA,WACF;AAAA,UAAA,KACK,WAAW,GAAK,EAAA;AACnB,YAAA,YAAA,CAAa,YAA2B,YAAY,CAAA,CAAA;AACpD,YAAA,MAAA;AAAA,WACF;AAAA,UAAA,KACK,UAAW,CAAA,KAAA,CAAA;AAAA,UAAA,KACX,UAAW,CAAA,WAAA,CAAA;AAAA,UAAA,KACX,WAAW,KAAO,EAAA;AACrB,YAAU,OAAA,GAAA,IAAA,CAAA;AACT,YAAC,KAAA,CAAM,cAA8B,KAAM,EAAA,CAAA;AAC5C,YAAA,MAAA;AAAA,WACF;AAAA,SAAA;AAEF,QAAA,IAAI,OAAS,EAAA;AACX,UAAA,KAAA,CAAM,cAAe,EAAA,CAAA;AACrB,UAAA,KAAA,CAAM,eAAgB,EAAA,CAAA;AAAA,SACxB;AACA,QAAO,OAAA,KAAA,CAAA;AAAA,OACR,CAAA,CAAA;AAAA,KACF,CAAA,CAAA;AAAA,GACH;AACF;;;;"}