You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

0 lines
5.2 KiB

1 month ago
  1. {"ast":null,"code":"import SubMenu from './submenu.mjs';\nimport { EVENT_CODE } from '../../../../constants/aria.mjs';\nimport { triggerEvent } from '../../../../utils/dom/aria.mjs';\nclass MenuItem {\n constructor(domNode, namespace) {\n this.domNode = domNode;\n this.submenu = null;\n this.submenu = null;\n this.init(namespace);\n }\n init(namespace) {\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 addListeners() {\n this.domNode.addEventListener(\"keydown\", event => {\n let prevDef = false;\n switch (event.code) {\n case EVENT_CODE.down:\n {\n triggerEvent(event.currentTarget, \"mouseenter\");\n this.submenu && this.submenu.gotoSubIndex(0);\n prevDef = true;\n break;\n }\n case EVENT_CODE.up:\n {\n triggerEvent(event.currentTarget, \"mouseenter\");\n this.submenu && this.submenu.gotoSubIndex(this.submenu.subMenuItems.length - 1);\n prevDef = true;\n break;\n }\n case EVENT_CODE.tab:\n {\n triggerEvent(event.currentTarget, \"mouseleave\");\n break;\n }\n case EVENT_CODE.enter:\n case EVENT_CODE.numpadEnter:\n case EVENT_CODE.space:\n {\n prevDef = true;\n event.currentTarget.click();\n break;\n }\n }\n if (prevDef) {\n event.preventDefault();\n }\n });\n }\n}\nexport { MenuItem as default };","map":{"version":3,"names":["MenuItem","constructor","domNode","namespace","submenu","init","setAttribute","menuChild","querySelector","SubMenu","addListeners","addEventListener","event","prevDef","code","EVENT_CODE","down","triggerEvent","currentTarget","gotoSubIndex","up","subMenuItems","length","tab","enter","numpadEnter","space","click","preventDefault"],"sources":["../../../../../../../packages/components/menu/src/utils/menu-item.ts"],"sourcesContent":["// @ts-nocheck\nimport { 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(public domNode: HTMLElement, namespace: string) {\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(): 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.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":";;;AAGA,MAAMA,QAAQ,CAAC;EACbC,WAAWA,CAACC,OAAO,EAAEC,SAAS,EAAE;IAC9B,IAAI,CAACD,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACE,OAAO,GAAG,IAAI;IACnB,IAAI,CAACA,OAAO,GAAG,IAAI;IACnB,IAAI,CAACC,IAAI,CAACF,SAAS,CAAC;