UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 5.64 kB
{"version":3,"file":"dropdown-item.vue2.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 <template v-if=\"$slots.icon\" #icon>\n <slot name=\"icon\" />\n </template>\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":[],"mappings":";;;;;;;;AA0BA,gBAAe,eAAA,CAAgB;AAAA,EAC7B,IAAA,EAAM,gBAAA;AAAA,EACN,UAAA,EAAY;AAAA,IACV,iBAAA;AAAA,IACA;AAAA,GACF;AAAA,EACA,YAAA,EAAc,KAAA;AAAA,EACd,KAAA,EAAO,iBAAA;AAAA,EACP,KAAA,EAAO,CAAC,aAAA,EAAe,cAAA,EAAgB,OAAO,CAAA;AAAA,EAC9C,KAAA,CAAM,KAAA,EAAO,EAAE,IAAA,EAAM,OAAM,EAAG;AAC5B,IAAA,MAAM,EAAE,UAAA,EAAW,GAAI,WAAA,EAAY;AACnC,IAAA,MAAM,YAAY,kBAAA,EAAmB;AACrC,IAAA,MAAM,EAAE,WAAA,EAAa,WAAA,EAAY,GAAI,MAAA;AAAA,MACnC,sBAAA;AAAA,MACA;AAAA,KACF;AAEA,IAAA,MAAM,iBAAA,GAAoB,oBAAA;AAAA,MACxB,CAAC,CAAA,KAAoB;AACnB,QAAA,IAAA,CAAK,eAAe,CAAC,CAAA;AACrB,QAAA,OAAO,CAAA,CAAE,gBAAA;AAAA,MACX,CAAA;AAAA,MACA,SAAA,CAAU,CAAC,CAAA,KAAM;AACf,QAAA,IAAI,MAAM,QAAA,EAAU;AAClB,UAAA,WAAA,CAAY,CAAC,CAAA;AACb,UAAA;AAAA,QACF;AAEA,QAAA,MAAM,SAAS,CAAA,CAAE,aAAA;AAQjB,QAAA,IACE,WAAW,QAAA,CAAS,aAAA,IACpB,OAAO,QAAA,CAAS,QAAA,CAAS,aAAa,CAAA,EACtC;AACA,UAAA;AAAA,QACF;AAEA,QAAA,WAAA,CAAY,CAAC,CAAA;AACb,QAAA,IAAI,CAAC,EAAE,gBAAA,EAAkB;AACvB,UAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,KAAA,CAAM;AAAA,YACZ,aAAA,EAAe;AAAA,WACjB,CAAA;AAAA,QACF;AAAA,MACF,CAAC;AAAA,KACH;AAEA,IAAA,MAAM,kBAAA,GAAqB,oBAAA,CAAqB,CAAC,CAAA,KAAoB;AACnE,MAAA,IAAA,CAAK,gBAAgB,CAAC,CAAA;AACtB,MAAA,OAAO,CAAA,CAAE,gBAAA;AAAA,IACX,CAAA,EAAG,SAAA,CAAU,WAAW,CAAC,CAAA;AAEzB,IAAA,MAAM,WAAA,GAAc,oBAAA;AAAA,MAClB,CAAC,CAAA,KAAoB;AACnB,QAAA,IAAI,MAAM,QAAA,EAAU;AAClB,UAAA;AAAA,QACF;AACA,QAAA,IAAA,CAAK,SAAS,CAAC,CAAA;AACf,QAAA,OAAO,CAAA,CAAE,IAAA,KAAS,SAAA,IAAa,CAAA,CAAE,gBAAA;AAAA,MACnC,CAAA;AAAA,MACA,CAAC,CAAA,KAAM;;AACL,QAAA,IAAI,MAAM,QAAA,EAAU;AAClB,UAAA,CAAA,CAAE,wBAAA,EAAyB;AAC3B,UAAA;AAAA,QACF;AACA,QAAA,IAAA,CAAI,EAAA,GAAA,UAAA,IAAA,IAAA,GAAA,MAAA,GAAA,UAAA,CAAY,WAAA,KAAZ,IAAA,GAAA,MAAA,GAAA,EAAA,CAAyB,KAAA,EAAO;AAClC,UAAA,CAAA,EAAA,GAAA,UAAA,CAAW,WAAA,KAAX,IAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,UAAA,CAAA;AAAA,QACF;AACA,QAAA,CAAA,EAAA,GAAA,UAAA,CAAW,cAAA,KAAX,IAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,UAAA,EAA4B,KAAA,CAAM,OAAA,EAAS,SAAA,EAAW,CAAA,CAAA;AAAA,MACxD;AAAA,KACF;AAGA,IAAA,MAAM,aAAA,GAAgB,SAAS,OAAO,EAAE,GAAG,KAAA,EAAO,GAAG,OAAM,CAAE,CAAA;AAE7D,IAAA,OAAO;AAAA,MACL,WAAA;AAAA,MACA,iBAAA;AAAA,MACA,kBAAA;AAAA,MACA;AAAA,KACF;AAAA,EACF;AACF,CAAC,CAAA;;;;"}