UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 3.83 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,OAAA,CAAQ;AAAA,EAGZ,WAAA,CACS,QACA,OAAA,EACP;AAFO,IAAA,IAAA,CAAA,MAAA,GAAA,MAAA;AACA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAJT,IAAA,aAAA,CAAA,IAAA,EAAO,cAAA,CAAA;AACP,IAAA,aAAA,CAAA,IAAA,EAAO,UAAA,EAAW,CAAA,CAAA;AAKhB,IAAA,IAAA,CAAK,QAAA,GAAW,CAAA;AAChB,IAAA,IAAA,CAAK,IAAA,EAAK;AAAA,EACZ;AAAA,EAEA,IAAA,GAAa;AACX,IAAA,IAAA,CAAK,YAAA,GAAe,IAAA,CAAK,OAAA,CAAQ,gBAAA,CAAiB,IAAI,CAAA;AACtD,IAAA,IAAA,CAAK,YAAA,EAAa;AAAA,EACpB;AAAA,EAEA,aAAa,GAAA,EAAmB;AAC9B,IAAA,IAAI,GAAA,KAAQ,IAAA,CAAK,YAAA,CAAa,MAAA,EAAQ;AACpC,MAAA,GAAA,GAAM,CAAA;AAAA,IACR,CAAA,MAAA,IAAW,MAAM,CAAA,EAAG;AAClB,MAAA,GAAA,GAAM,IAAA,CAAK,aAAa,MAAA,GAAS,CAAA;AAAA,IACnC;AACC,IAAC,IAAA,CAAK,YAAA,CAAa,GAAG,CAAA,CAAkB,KAAA,EAAM;AAC/C,IAAA,IAAA,CAAK,QAAA,GAAW,GAAA;AAAA,EAClB;AAAA,EAEA,YAAA,GAAqB;AACnB,IAAA,MAAM,UAAA,GAAa,KAAK,MAAA,CAAO,OAAA;AAC/B,IAAA,KAAA,CAAM,UAAU,OAAA,CAAQ,IAAA,CAAK,IAAA,CAAK,YAAA,EAAc,CAAC,EAAA,KAAgB;AAC/D,MAAA,EAAA,CAAG,gBAAA,CAAiB,SAAA,EAAW,CAAC,KAAA,KAAyB;AACvD,QAAA,MAAM,IAAA,GAAO,aAAa,KAAK,CAAA;AAC/B,QAAA,IAAI,OAAA,GAAU,KAAA;AAEd,QAAA,QAAQ,IAAA;AAAM,UACZ,KAAK,WAAW,IAAA,EAAM;AACpB,YAAA,IAAA,CAAK,YAAA,CAAa,IAAA,CAAK,QAAA,GAAW,CAAC,CAAA;AACnC,YAAA,OAAA,GAAU,IAAA;AACV,YAAA;AAAA,UACF;AAAA,UACA,KAAK,WAAW,EAAA,EAAI;AAClB,YAAA,IAAA,CAAK,YAAA,CAAa,IAAA,CAAK,QAAA,GAAW,CAAC,CAAA;AACnC,YAAA,OAAA,GAAU,IAAA;AACV,YAAA;AAAA,UACF;AAAA,UACA,KAAK,WAAW,GAAA,EAAK;AACnB,YAAA,YAAA,CAAa,YAA2B,YAAY,CAAA;AACpD,YAAA;AAAA,UACF;AAAA,UACA,KAAK,UAAA,CAAW,KAAA;AAAA,UAChB,KAAK,UAAA,CAAW,WAAA;AAAA,UAChB,KAAK,WAAW,KAAA,EAAO;AACrB,YAAA,OAAA,GAAU,IAAA;AACT,YAAC,KAAA,CAAM,cAA8B,KAAA,EAAM;AAC5C,YAAA;AAAA,UACF;AAAA;AAEF,QAAA,IAAI,OAAA,EAAS;AACX,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,KAAA,CAAM,eAAA,EAAgB;AAAA,QACxB;AACA,QAAA,OAAO,KAAA;AAAA,MACT,CAAC,CAAA;AAAA,IACH,CAAC,CAAA;AAAA,EACH;AACF;;;;"}