element-plus
Version:
A Component Library for Vue 3
1 lines • 6.46 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.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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"}