UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 5.61 kB
{"version":3,"file":"trigger.vue2.mjs","sources":["../../../../../../packages/components/tooltip/src/trigger.vue"],"sourcesContent":["<template>\n <el-popper-trigger\n :id=\"id\"\n :virtual-ref=\"virtualRef\"\n :open=\"open\"\n :virtual-triggering=\"virtualTriggering\"\n :class=\"ns.e('trigger')\"\n @blur=\"onBlur\"\n @click=\"onClick\"\n @contextmenu=\"onContextMenu\"\n @focus=\"onFocus\"\n @mouseenter=\"onMouseenter\"\n @mouseleave=\"onMouseleave\"\n @keydown=\"onKeydown\"\n >\n <slot />\n </el-popper-trigger>\n</template>\n\n<script lang=\"ts\" setup>\nimport { inject, nextTick, ref, toRef, unref } from 'vue'\nimport { ElPopperTrigger } from '@element-plus/components/popper'\nimport {\n composeEventHandlers,\n focusElement,\n getEventCode,\n} from '@element-plus/utils'\nimport { useNamespace } from '@element-plus/hooks'\nimport { TOOLTIP_INJECTION_KEY } from './constants'\nimport { whenTrigger } from './utils'\nimport { useTooltipTriggerPropsDefaults } from './trigger'\n\nimport type { UseTooltipTriggerProps } from './trigger'\nimport type { OnlyChildExpose } from '@element-plus/components/slot'\n\ndefineOptions({\n name: 'ElTooltipTrigger',\n})\n\nconst props = withDefaults(\n defineProps<UseTooltipTriggerProps>(),\n useTooltipTriggerPropsDefaults\n)\n\nconst ns = useNamespace('tooltip')\nconst { controlled, id, open, onOpen, onClose, onToggle } = inject(\n TOOLTIP_INJECTION_KEY,\n undefined\n)!\n\nconst triggerRef = ref<OnlyChildExpose | null>(null)\n\nconst stopWhenControlledOrDisabled = () => {\n if (unref(controlled) || props.disabled) {\n return true\n }\n}\nconst trigger = toRef(props, 'trigger')\nconst onMouseenter = composeEventHandlers(\n stopWhenControlledOrDisabled,\n whenTrigger(trigger, 'hover', (e) => {\n onOpen(e)\n\n if (props.focusOnTarget && e.target) {\n nextTick(() => {\n focusElement(e.target as HTMLElement, { preventScroll: true })\n })\n }\n })\n)\nconst onMouseleave = composeEventHandlers(\n stopWhenControlledOrDisabled,\n whenTrigger(trigger, 'hover', onClose)\n)\nconst onClick = composeEventHandlers(\n stopWhenControlledOrDisabled,\n whenTrigger(trigger, 'click', (e) => {\n // distinguish left click\n if ((e as MouseEvent).button === 0) {\n onToggle(e)\n }\n })\n)\n\nconst onFocus = composeEventHandlers(\n stopWhenControlledOrDisabled,\n whenTrigger(trigger, 'focus', onOpen)\n)\n\nconst onBlur = composeEventHandlers(\n stopWhenControlledOrDisabled,\n whenTrigger(trigger, 'focus', onClose)\n)\n\nconst onContextMenu = composeEventHandlers(\n stopWhenControlledOrDisabled,\n whenTrigger(trigger, 'contextmenu', (e: Event) => {\n e.preventDefault()\n onToggle(e)\n })\n)\n\nconst onKeydown = composeEventHandlers(\n stopWhenControlledOrDisabled,\n (e: Event) => {\n const code = getEventCode(e as KeyboardEvent)\n if (props.triggerKeys.includes(code)) {\n e.preventDefault()\n onToggle(e)\n }\n }\n)\n\ndefineExpose({\n /**\n * @description trigger element\n */\n triggerRef,\n})\n</script>\n"],"names":["_createBlock","_unref","ElPopperTrigger","_normalizeClass","_renderSlot"],"mappings":"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"}