element-plus
Version:
A Component Library for Vue 3
1 lines • 4.58 kB
Source Map (JSON)
{"version":3,"file":"trigger2.mjs","sources":["../../../../../../packages/components/tooltip-v2/src/trigger.vue"],"sourcesContent":["<template>\n <forward-ref v-if=\"nowrap\" :set-ref=\"setTriggerRef\" only-child>\n <slot />\n </forward-ref>\n <button v-else ref=\"triggerRef\">\n <slot />\n </button>\n</template>\n\n<script setup lang=\"ts\">\nimport { inject, onBeforeUnmount, watch } from 'vue'\nimport { composeEventHandlers } from '@element-plus/utils'\nimport { tooltipV2RootKey } from '@element-plus/tokens'\nimport ForwardRef from './forward-ref'\nimport { tooltipV2TriggerProps } from './trigger'\nimport { tooltipV2CommonProps } from './common'\n\ndefineOptions({\n name: 'ElTooltipV2Trigger',\n})\n\nconst props = defineProps({\n ...tooltipV2CommonProps,\n ...tooltipV2TriggerProps,\n})\n\n/**\n * onOpen opens the tooltip instantly, onTrigger acts a lil bit differently,\n * it will check if delayDuration is set to greater than 0 and based on that result,\n * if true, it opens the tooltip after delayDuration, otherwise it opens it instantly.\n */\nconst { onClose, onOpen, onDelayOpen, triggerRef } = inject(tooltipV2RootKey)!\n\nlet isMousedown = false\n\nconst setTriggerRef = (el: HTMLElement | null) => {\n triggerRef.value = el\n}\n\nconst onMouseenter = composeEventHandlers(props.onMouseEnter, onDelayOpen)\n\nconst onMouseleave = composeEventHandlers(props.onMouseLeave, onClose)\n\nconst onMouseup = () => {\n isMousedown = false\n}\n\nconst onMousedown = composeEventHandlers(props.onMouseDown, () => {\n onClose()\n isMousedown = true\n document.addEventListener('mouseup', onMouseup, { once: true })\n})\n\nconst onFocus = composeEventHandlers(props.onFocus, () => {\n if (!isMousedown) onOpen()\n})\n\nconst onBlur = composeEventHandlers(props.onBlur, onClose)\n\nconst onClick = composeEventHandlers(props.onClick, (e) => {\n if ((e as MouseEvent).detail === 0) onClose()\n})\n\nconst events = {\n blur: onBlur,\n click: onClick,\n focus: onFocus,\n mousedown: onMousedown,\n mouseenter: onMouseenter,\n mouseleave: onMouseleave,\n}\n\nconst setEvents = <T extends (e: Event) => void>(\n el: HTMLElement | null | undefined,\n events: Record<string, T>,\n type: 'addEventListener' | 'removeEventListener'\n) => {\n if (el) {\n Object.entries(events).forEach(([name, handler]) => {\n el[type](name, handler)\n })\n }\n}\n\nwatch(triggerRef, (triggerEl, previousTriggerEl) => {\n setEvents(triggerEl, events, 'addEventListener')\n setEvents(previousTriggerEl, events, 'removeEventListener')\n})\n\nonBeforeUnmount(() => {\n setEvents(triggerRef.value, events, 'removeEventListener')\n document.removeEventListener('mouseup', onMouseup)\n})\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AA+BA,IAAA,MAAA,EAAA,OAAA,EAAA,MAAA,EAAA,WAAA,EAAA,eAAA,MAAA,CAAA,gBAAA,CAAA,CAAA;AAEA,IAAA,IAAA,WAAA,GAAA,KAAA,CAAA;AAEA,IAAA,MAAA,aAAA,GAAA,CAAA,EAAA,KAAA;AACA,MAAA,UAAA,CAAA,KAAA,GAAA,EAAA,CAAA;AAAA,KAAA,CAAA;AAGA,IAAA,MAAA,YAAA,GAAA,oBAAA,CAAA,KAAA,CAAA,YAAA,EAAA,WAAA,CAAA,CAAA;AAEA,IAAA,MAAA,YAAA,GAAA,oBAAA,CAAA,KAAA,CAAA,YAAA,EAAA,OAAA,CAAA,CAAA;AAEA,IAAA,MAAA,YAAA,MAAA;AACA,MAAA,WAAA,GAAA,KAAA,CAAA;AAAA,KAAA,CAAA;AAGA,IAAA,MAAA,WAAA,GAAA,oBAAA,CAAA,KAAA,CAAA,WAAA,EAAA,MAAA;AACA,MAAA,OAAA,EAAA,CAAA;AACA,MAAA,WAAA,GAAA,IAAA,CAAA;AACA,MAAA,QAAA,CAAA,gBAAA,CAAA,SAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,IAAA,EAAA,CAAA,CAAA;AAAA,KAAA,CAAA,CAAA;AAGA,IAAA,MAAA,OAAA,GAAA,oBAAA,CAAA,KAAA,CAAA,OAAA,EAAA,MAAA;AACA,MAAA,IAAA,CAAA,WAAA;AAAA,QAAA,MAAA,EAAA,CAAA;AAAA,KAAA,CAAA,CAAA;AAGA,IAAA,MAAA,MAAA,GAAA,oBAAA,CAAA,KAAA,CAAA,MAAA,EAAA,OAAA,CAAA,CAAA;AAEA,IAAA,MAAA,OAAA,GAAA,oBAAA,CAAA,KAAA,CAAA,OAAA,EAAA,CAAA,CAAA,KAAA;AACA,MAAA,IAAA,EAAA,MAAA,KAAA,CAAA;AAAA,QAAA,OAAA,EAAA,CAAA;AAAA,KAAA,CAAA,CAAA;AAGA,IAAA,MAAA,MAAA,GAAA;AAAA,MACA,IAAA,EAAA,MAAA;AAAA,MACA,KAAA,EAAA,OAAA;AAAA,MACA,KAAA,EAAA,OAAA;AAAA,MACA,SAAA,EAAA,WAAA;AAAA,MACA,UAAA,EAAA,YAAA;AAAA,MACA,UAAA,EAAA,YAAA;AAAA,KAAA,CAAA;AAGA,IAAA,MAAA,SAAA,GAAA,CACA,EACA,EAAA,OAAA,EACA,IACA,KAAA;AACA,MAAA,IAAA,EAAA,EAAA;AACA,QAAA,MAAA,CAAA,QAAA,OAAA,CAAA,CAAA,OAAA,CAAA,CAAA,CAAA,MAAA,OAAA,CAAA,KAAA;AACA,UAAA,EAAA,CAAA,MAAA,IAAA,EAAA,OAAA,CAAA,CAAA;AAAA,SAAA,CAAA,CAAA;AAAA,OAAA;AAAA,KAAA,CAAA;AAKA,IAAA,KAAA,CAAA,UAAA,EAAA,CAAA,SAAA,EAAA,iBAAA,KAAA;AACA,MAAA,SAAA,CAAA,WAAA,MAAA,EAAA,kBAAA,CAAA,CAAA;AACA,MAAA,SAAA,CAAA,mBAAA,MAAA,EAAA,qBAAA,CAAA,CAAA;AAAA,KAAA,CAAA,CAAA;AAGA,IAAA,eAAA,CAAA,MAAA;AACA,MAAA,SAAA,CAAA,UAAA,CAAA,OAAA,MAAA,EAAA,qBAAA,CAAA,CAAA;AACA,MAAA,QAAA,CAAA,oBAAA,SAAA,EAAA,SAAA,CAAA,CAAA;AAAA,KAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;"}