element-plus
Version:
A Component Library for Vue 3
1 lines • 5.18 kB
Source Map (JSON)
{"version":3,"file":"dropdown-item-impl.vue.mjs","sources":["../../../../../../packages/components/dropdown/src/dropdown-item-impl.vue"],"sourcesContent":["<template>\n <li\n v-if=\"divided\"\n role=\"separator\"\n :class=\"ns.bem('menu', 'item', 'divided')\"\n />\n <li\n :ref=\"itemRef\"\n v-bind=\"{ ...dataset, ...$attrs }\"\n :aria-disabled=\"disabled\"\n :class=\"[ns.be('menu', 'item'), ns.is('disabled', disabled)]\"\n :tabindex=\"tabIndex\"\n :role=\"role\"\n @click=\"(e) => $emit('clickimpl', e)\"\n @focus=\"handleFocus\"\n @keydown.self=\"handleKeydown\"\n @mousedown=\"handleMousedown\"\n @pointermove=\"(e) => $emit('pointermove', e)\"\n @pointerleave=\"(e) => $emit('pointerleave', e)\"\n >\n <el-icon v-if=\"icon || $slots.icon\">\n <slot name=\"icon\">\n <component :is=\"icon\" />\n </slot>\n </el-icon>\n <slot />\n </li>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, inject } from 'vue'\nimport {\n ROVING_FOCUS_GROUP_ITEM_INJECTION_KEY,\n ROVING_FOCUS_ITEM_COLLECTION_INJECTION_KEY,\n} from '@element-plus/components/roving-focus-group'\nimport { COLLECTION_ITEM_SIGN } from '@element-plus/components/collection'\nimport { ElIcon } from '@element-plus/components/icon'\nimport { useNamespace } from '@element-plus/hooks'\nimport {\n composeEventHandlers,\n composeRefs,\n getEventCode,\n} from '@element-plus/utils'\nimport { EVENT_CODE } from '@element-plus/constants'\nimport { dropdownItemProps } from './dropdown'\nimport { DROPDOWN_INJECTION_KEY } from './tokens'\n\nexport default defineComponent({\n name: 'DropdownItemImpl',\n components: {\n ElIcon,\n },\n props: dropdownItemProps,\n emits: ['pointermove', 'pointerleave', 'click', 'clickimpl'],\n setup(_, { emit }) {\n const ns = useNamespace('dropdown')\n\n const { role: menuRole } = inject(DROPDOWN_INJECTION_KEY, undefined)!\n\n const { collectionItemRef: rovingFocusCollectionItemRef } = inject(\n ROVING_FOCUS_ITEM_COLLECTION_INJECTION_KEY,\n undefined\n )!\n\n const {\n rovingFocusGroupItemRef,\n tabIndex,\n handleFocus,\n handleKeydown: handleItemKeydown,\n handleMousedown,\n } = inject(ROVING_FOCUS_GROUP_ITEM_INJECTION_KEY, undefined)!\n\n const itemRef = composeRefs(\n rovingFocusCollectionItemRef,\n rovingFocusGroupItemRef\n )\n\n const role = computed<string>(() => {\n if (menuRole.value === 'menu') {\n return 'menuitem'\n } else if (menuRole.value === 'navigation') {\n return 'link'\n }\n return 'button'\n })\n\n const handleKeydown = composeEventHandlers((e: KeyboardEvent) => {\n const code = getEventCode(e)\n\n if (\n [EVENT_CODE.enter, EVENT_CODE.numpadEnter, EVENT_CODE.space].includes(\n code\n )\n ) {\n e.preventDefault()\n e.stopImmediatePropagation()\n emit('clickimpl', e)\n return true\n }\n }, handleItemKeydown)\n\n return {\n ns,\n itemRef,\n dataset: {\n [COLLECTION_ITEM_SIGN]: '',\n },\n role,\n tabIndex,\n handleFocus,\n handleKeydown,\n handleMousedown,\n }\n },\n})\n</script>\n"],"names":["_openBlock","_createElementBlock","_normalizeClass","_createElementVNode","_mergeProps","_createBlock","_withCtx","_renderSlot","_resolveDynamicComponent"],"mappings":";;;;;;;;;;;MAEU,IAAA,CAAA,OAAA,IAAAA,SAAA,EAAA,EADRC,kBAAA;AAAA,QAIE,IAAA;AAAA,QAAA;AAAA,UAAA,GAAA,EAAA,CAAA;AAAA,UAFA,IAAA,EAAK,WAAA;AAAA,UACJ,KAAA,EAAKC,eAAE,IAAA,CAAA,EAAA,CAAG,IAAG,MAAA,EAAA,MAAA,EAAA,SAAA,CAAA;AAAA,SAAA;AAAA;;;;MAEhBC,kBAAA,CAoBK,IAAA,EApBLC,UAAA,CAoBK,EAnBF,KAAK,IAAA,UAAO,EAAA,EAAA,GACA,IAAA,CAAA,OAAA,EAAO,GAAK,IAAA,CAAA,QAAM,EAAA;AAAA,QAC9B,iBAAe,IAAA,CAAA,QAAA;AAAA,QACf,KAAA,EAAK,CAAG,IAAA,CAAA,EAAA,CAAG,GAAE,MAAA,WAAkB,IAAA,CAAA,EAAA,CAAG,EAAA,CAAE,UAAA,EAAa,IAAA,CAAA,QAAQ,CAAA,CAAA;AAAA,QACzD,UAAU,IAAA,CAAA,QAAA;AAAA,QACV,MAAM,IAAA,CAAA,IAAA;AAAA,QACN,OAAA,EAAK,MAAA,CAAA,CAAA,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAA,CAAG,CAAA,KAAM,IAAA,CAAA,KAAA,CAAK,WAAA,EAAc,CAAC,CAAA,CAAA;AAAA,QAClC,OAAA,EAAK,MAAA,CAAA,CAAA,CAAA,KAAA,OAAA,CAAA,CAAA,GAAA,CAAA,GAAA,IAAA,KAAE,IAAA,CAAA,WAAA,IAAA,IAAA,CAAA,WAAA,CAAA,GAAA,IAAA,CAAA,CAAA;AAAA,QACP,WAAO,MAAA,+CAAO,IAAA,CAAA,aAAA,IAAA,KAAA,aAAA,CAAA,GAAA,IAAA,CAAA,EAAa,CAAA,MAAA,CAAA,CAAA,CAAA;AAAA,QAC3B,WAAA,EAAS,MAAA,CAAA,CAAA,CAAA,KAAA,OAAA,CAAA,CAAA,GAAA,CAAA,GAAA,IAAA,KAAE,IAAA,CAAA,eAAA,IAAA,IAAA,CAAA,eAAA,CAAA,GAAA,IAAA,CAAA,CAAA;AAAA,QACX,aAAA,EAAW,MAAA,CAAA,CAAA,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAA,CAAG,CAAA,KAAM,IAAA,CAAA,KAAA,CAAK,aAAA,EAAgB,CAAC,CAAA,CAAA;AAAA,QAC1C,cAAA,EAAY,MAAA,CAAA,CAAA,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAA,CAAG,CAAA,KAAM,IAAA,CAAA,KAAA,CAAK,cAAA,EAAiB,CAAC,CAAA;AAAA,OAAA,CAAA,EAAA;AAAA,QAE9B,IAAA,CAAA,IAAA,IAAQ,IAAA,CAAA,MAAA,CAAO,IAAA,iBAA9BC,WAAA,CAIU,kBAAA,EAAA,EAAA,GAAA,EAAA,CAAA,EAAA,EAAA;AAAA,UAAA,OAAA,EAAAC,QAHR,MAEO;AAAA,YAFPC,WAEO,IAAA,qBAFP,MAEO;AAAA,eAAAP,WAAA,EADLK,WAAA,CAAwBG,uBAAA,CAAR,IAAA,CAAA,IAAI,CAAA,CAAA;AAAA,aAAA;AAAA;;;;QAGxBD,UAAA,CAAQ,IAAA,CAAA,MAAA,EAAA,SAAA;AAAA,OAAA,EAAA,IAAA,UAAA;AAAA;;;;;;;;;"}