UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 4.81 kB
{"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\" v-bind=\"$attrs\">\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, contentId } =\n inject(tooltipV2RootKey)!\n\nlet isMousedown = false\n\nconst setTriggerRef = (el: HTMLElement | null) => {\n triggerRef.value = el\n}\n\nconst onMouseup = () => {\n isMousedown = false\n}\n\nconst onMouseenter = composeEventHandlers(props.onMouseEnter, onDelayOpen)\n\nconst onMouseleave = composeEventHandlers(props.onMouseLeave, onClose)\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 if (triggerEl) {\n triggerEl.setAttribute('aria-describedby', contentId.value)\n }\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,aAAA,UAAA,EAAA,SAAA,EAAA,GACA,OAAA,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,KACA,CAAA;AAEA,IAAA,MAAA,YAAA,MAAA;AACA,MAAA,WAAA,GAAA,KAAA,CAAA;AAAA,KACA,CAAA;AAEA,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,WAAA,GAAA,oBAAA,CAAA,KAAA,CAAA,WAAA,EAAA,MAAA;AACA,MAAA,OAAA,EAAA,CAAA;AACA,MAAA,WAAA,GAAA,IAAA,CAAA;AACA,MAAA,QAAA,CAAA,iBAAA,SAAA,EAAA,SAAA,EAAA,EAAA,IAAA,EAAA,MAAA,CAAA,CAAA;AAAA,KACA,CAAA,CAAA;AAEA,IAAA,MAAA,OAAA,GAAA,oBAAA,CAAA,KAAA,CAAA,OAAA,EAAA,MAAA;AACA,MAAA,IAAA,CAAA,WAAA;AAAA,QAAA,MAAA,EAAA,CAAA;AAAA,KACA,CAAA,CAAA;AAEA,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,KACA,CAAA,CAAA;AAEA,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,KACA,CAAA;AAEA,IAAA,MAAA,SAAA,GAAA,CACA,EACA,EAAA,OAAA,EACA,IACA,KAAA;AACA,MAAA,IAAA,EAAA,EAAA;AACA,QAAA,MAAA,CAAA,QAAA,OAAA,CAAA,CAAA,QAAA,CAAA,CAAA,MAAA,OAAA,CAAA,KAAA;AACA,UAAA,EAAA,CAAA,IAAA,CAAA,CAAA,MAAA,OAAA,CAAA,CAAA;AAAA,SACA,CAAA,CAAA;AAAA,OACA;AAAA,KACA,CAAA;AAEA,IAAA,KAAA,CAAA,UAAA,EAAA,CAAA,SAAA,EAAA,iBAAA,KAAA;AACA,MAAA,SAAA,CAAA,SAAA,EAAA,QAAA,kBAAA,CAAA,CAAA;AACA,MAAA,SAAA,CAAA,iBAAA,EAAA,QAAA,qBAAA,CAAA,CAAA;AAEA,MAAA,IAAA,SAAA,EAAA;AACA,QAAA,SAAA,CAAA,YAAA,CAAA,kBAAA,EAAA,SAAA,CAAA,KAAA,CAAA,CAAA;AAAA,OACA;AAAA,KACA,CAAA,CAAA;AAEA,IAAA,eAAA,CAAA,MAAA;AACA,MAAA,SAAA,CAAA,UAAA,CAAA,KAAA,EAAA,MAAA,EAAA,qBAAA,CAAA,CAAA;AACA,MAAA,QAAA,CAAA,mBAAA,CAAA,WAAA,SAAA,CAAA,CAAA;AAAA,KACA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;"}