element-plus
Version:
A Component Library for Vue 3
1 lines • 6.19 kB
Source Map (JSON)
{"version":3,"file":"dropdown-item.mjs","sources":["../../../../../../packages/components/dropdown/src/dropdown-item.vue"],"sourcesContent":["<template>\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</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, getCurrentInstance, inject } 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 { dropdownItemProps } from './dropdown'\nimport { DROPDOWN_INJECTION_KEY } from './tokens'\n\nexport default defineComponent({\n name: 'ElDropdownItem',\n components: {\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 { 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 return\n }\n\n const target = e.currentTarget as HTMLElement\n /**\n * This handles the following scenario:\n * when the item contains a form element such as input element\n * when the mouse is moving over the element itself which is contained by\n * the item, the default focusing logic should be prevented so that\n * it won't cause weird action.\n */\n if (\n target === document.activeElement ||\n target.contains(document.activeElement)\n ) {\n return\n }\n\n onItemEnter(e)\n if (!e.defaultPrevented) {\n target?.focus({\n preventScroll: true,\n })\n }\n })\n )\n\n const handlePointerLeave = composeEventHandlers((e: PointerEvent) => {\n emit('pointerleave', e)\n return e.defaultPrevented\n }, whenMouse(onItemLeave))\n\n const handleClick = composeEventHandlers(\n (e: PointerEvent) => {\n if (props.disabled) {\n return\n }\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(() => ({ ...props, ...attrs }))\n\n return {\n handleClick,\n handlePointerMove,\n handlePointerLeave,\n propsAndAttrs,\n }\n },\n})\n</script>\n"],"names":["_createBlock","_createVNode","_mergeProps","_renderSlot"],"mappings":"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"}