element-plus
Version:
A Component Library for Vue 3
1 lines • 6.45 kB
Source Map (JSON)
{"version":3,"file":"dropdown-item.mjs","sources":["../../../../../../packages/components/dropdown/src/dropdown-item.vue"],"sourcesContent":["<template>\n <el-dropdown-collection-item\n :disabled=\"disabled\"\n :text-value=\"textValue ?? textContent\"\n >\n <el-roving-focus-item :focusable=\"!disabled\">\n <el-dropdown-item-impl\n v-bind=\"propsAndAttrs\"\n @pointerleave=\"handlePointerLeave\"\n @pointermove=\"handlePointerMove\"\n @clickimpl=\"handleClick\"\n >\n <slot />\n </el-dropdown-item-impl>\n </el-roving-focus-item>\n </el-dropdown-collection-item>\n</template>\n<script lang=\"ts\">\nimport {\n computed,\n defineComponent,\n getCurrentInstance,\n inject,\n ref,\n unref,\n} from 'vue'\nimport { ElRovingFocusItem } from '@element-plus/components/roving-focus-group'\nimport { composeEventHandlers, whenMouse } from '@element-plus/utils'\nimport ElDropdownItemImpl from './dropdown-item-impl.vue'\nimport { useDropdown } from './useDropdown'\nimport {\n ElCollectionItem as ElDropdownCollectionItem,\n dropdownItemProps,\n} from './dropdown'\nimport { DROPDOWN_INJECTION_KEY } from './tokens'\n\nexport default defineComponent({\n name: 'ElDropdownItem',\n components: {\n ElDropdownCollectionItem,\n ElRovingFocusItem,\n ElDropdownItemImpl,\n },\n inheritAttrs: false,\n props: dropdownItemProps,\n emits: ['pointermove', 'pointerleave', 'click'],\n setup(props, { emit, attrs }) {\n const { elDropdown } = useDropdown()\n const _instance = getCurrentInstance()\n const itemRef = ref<HTMLElement | null>(null)\n const textContent = computed(() => unref(itemRef)?.textContent ?? '')\n const { onItemEnter, onItemLeave } = inject(\n DROPDOWN_INJECTION_KEY,\n undefined\n )!\n\n const handlePointerMove = composeEventHandlers(\n (e: PointerEvent) => {\n emit('pointermove', e)\n return e.defaultPrevented\n },\n whenMouse((e) => {\n if (props.disabled) {\n onItemLeave(e)\n } else {\n onItemEnter(e)\n if (!e.defaultPrevented) {\n ;(e.currentTarget as HTMLElement)?.focus()\n }\n }\n })\n )\n\n const handlePointerLeave = composeEventHandlers(\n (e: PointerEvent) => {\n emit('pointerleave', e)\n return e.defaultPrevented\n },\n whenMouse((e) => {\n onItemLeave(e)\n })\n )\n\n const handleClick = composeEventHandlers(\n (e: PointerEvent) => {\n emit('click', e)\n return e.type !== 'keydown' && e.defaultPrevented\n },\n (e) => {\n if (props.disabled) {\n e.stopImmediatePropagation()\n return\n }\n if (elDropdown?.hideOnClick?.value) {\n elDropdown.handleClick?.()\n }\n elDropdown.commandHandler?.(props.command, _instance, e)\n }\n )\n\n // direct usage of v-bind={ ...$props, ...$attrs } causes type errors\n const propsAndAttrs = computed(() => {\n return { ...props, ...attrs }\n })\n\n return {\n handleClick,\n handlePointerMove,\n handlePointerLeave,\n textContent,\n propsAndAttrs,\n }\n },\n})\n</script>\n"],"names":["ElDropdownCollectionItem","_resolveComponent","_createBlock","_withCtx","_createVNode","_mergeProps"],"mappings":"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"}