UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 4.42 kB
{"version":3,"file":"trigger.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\">\nimport { defineComponent, inject, ref, unref, toRef } from 'vue'\nimport { ElPopperTrigger } from '@element-plus/components/popper'\nimport { composeEventHandlers } from '@element-plus/utils'\nimport { EVENT_CODE } from '@element-plus/constants'\nimport { useNamespace } from '@element-plus/hooks'\nimport { TOOLTIP_INJECTION_KEY } from './tokens'\nimport { useTooltipTriggerProps } from './tooltip'\nimport { whenTrigger } from './utils'\n\nimport type { ElOnlyChildExpose } from '@element-plus/components/slot'\n\nexport default defineComponent({\n name: 'ElTooltipTrigger',\n components: {\n ElPopperTrigger,\n },\n props: useTooltipTriggerProps,\n setup(props) {\n const ns = useNamespace('tooltip')\n const { controlled, id, open, onOpen, onClose, onToggle } = inject(\n TOOLTIP_INJECTION_KEY,\n undefined\n )!\n const triggerRef = ref<ElOnlyChildExpose | null>(null)\n\n const stopWhenControlledOrDisabled = () => {\n if (unref(controlled) || props.disabled) {\n return true\n }\n }\n const trigger = toRef(props, 'trigger')\n const onMouseenter = composeEventHandlers(\n stopWhenControlledOrDisabled,\n whenTrigger(trigger, 'hover', onOpen)\n )\n const onMouseleave = composeEventHandlers(\n stopWhenControlledOrDisabled,\n whenTrigger(trigger, 'hover', onClose)\n )\n const 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\n const onFocus = composeEventHandlers(\n stopWhenControlledOrDisabled,\n whenTrigger(trigger, 'focus', onOpen)\n )\n\n const onBlur = composeEventHandlers(\n stopWhenControlledOrDisabled,\n whenTrigger(trigger, 'focus', onClose)\n )\n\n const onContextMenu = composeEventHandlers(\n stopWhenControlledOrDisabled,\n whenTrigger(trigger, 'contextmenu', (e: Event) => {\n e.preventDefault()\n onToggle(e)\n })\n )\n\n const onKeydown = composeEventHandlers(\n stopWhenControlledOrDisabled,\n (e: KeyboardEvent) => {\n const { code } = e\n if (code === EVENT_CODE.enter || code === EVENT_CODE.space) {\n onToggle(e)\n }\n }\n )\n\n return {\n onBlur,\n onContextMenu,\n onFocus,\n onMouseenter,\n onMouseleave,\n onClick,\n onKeydown,\n open,\n id,\n triggerRef,\n ns,\n }\n },\n})\n</script>\n"],"names":["_openBlock","_createBlock","_normalizeClass","_withCtx"],"mappings":";;;;;;;;;;;;;;AA+BA,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY;AAAA,IACV;AAAA;AAAA,EAEF,OAAO;AAAA,EACP,MAAM,OAAO;AACX,UAAM,KAAK,aAAa;AACxB,UAAM,EAAE,YAAY,IAAI,MAAM,QAAQ,SAAS,aAAa,OAC1D,uBACA;AAEF,UAAM,aAAa,IAA8B;AAEjD,UAAM,+BAA+B,MAAM;AACzC,UAAI,MAAM,eAAe,MAAM,UAAU;AACvC,eAAO;AAAA;AAAA;AAGX,UAAM,UAAU,MAAM,OAAO;AAC7B,UAAM,eAAe,qBACnB,8BACA,YAAY,SAAS,SAAS;AAEhC,UAAM,eAAe,qBACnB,8BACA,YAAY,SAAS,SAAS;AAEhC,UAAM,UAAU,qBACd,8BACA,YAAY,SAAS,SAAS,CAAC,MAAM;AAEnC,UAAK,EAAiB,WAAW,GAAG;AAClC,iBAAS;AAAA;AAAA;AAKf,UAAM,UAAU,qBACd,8BACA,YAAY,SAAS,SAAS;AAGhC,UAAM,SAAS,qBACb,8BACA,YAAY,SAAS,SAAS;AAGhC,UAAM,gBAAgB,qBACpB,8BACA,YAAY,SAAS,eAAe,CAAC,MAAa;AAChD,QAAE;AACF,eAAS;AAAA;AAIb,UAAM,YAAY,qBAChB,8BACA,CAAC,MAAqB;AACpB,YAAM,EAAE,SAAS;AACjB,UAAI,SAAS,WAAW,SAAS,SAAS,WAAW,OAAO;AAC1D,iBAAS;AAAA;AAAA;AAKf,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA;AAAA;;;SA1GGA,aAAEC;AAAA,IACN;AAAA,IACA,eAAU;AAAA,IACV;AAAA,IACA,sBAAK,KAAE;AAAA,IACP,OAAIC,eAAQ;AAAA,IACZ,QAAK,KAAE;AAAA,IACP,cAAW;AAAA,IACX,eAAO;AAAA,IACP,cAAY;AAAA,IACZ,cAAY;AAAA,IACZ,cAAS;AAAA;;aAEVC,QAAQ;AAAA;;;;;;;;;"}