UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 4.45 kB
{"version":3,"file":"root2.mjs","sources":["../../../../../../packages/components/tooltip-v2/src/root.vue"],"sourcesContent":["<template>\n <slot :open=\"open\" />\n</template>\n\n<script setup lang=\"ts\">\nimport {\n computed,\n onBeforeUnmount,\n onMounted,\n provide,\n ref,\n unref,\n watch,\n} from 'vue'\nimport { useTimeoutFn } from '@vueuse/core'\nimport { useId, useNamespace } from '@element-plus/hooks'\nimport { isNumber, isPropAbsent } from '@element-plus/utils'\nimport { TOOLTIP_V2_OPEN, tooltipV2RootKey } from '@element-plus/tokens'\nimport { tooltipV2RootProps } from './root'\n\ndefineOptions({\n name: 'ElTooltipV2Root',\n})\n\nconst props = defineProps(tooltipV2RootProps)\n\n/**\n * internal open state, when no model value was provided, use this as indicator instead\n */\nconst _open = ref(props.defaultOpen)\nconst triggerRef = ref<HTMLElement | null>(null)\n\nconst open = computed<boolean>({\n get: () => (isPropAbsent(props.open) ? _open.value : props.open),\n set: (open) => {\n _open.value = open\n props['onUpdate:open']?.(open)\n },\n})\n\nconst isOpenDelayed = computed(\n () => isNumber(props.delayDuration) && props.delayDuration > 0\n)\n\nconst { start: onDelayedOpen, stop: clearTimer } = useTimeoutFn(\n () => {\n open.value = true\n },\n computed(() => props.delayDuration),\n {\n immediate: false,\n }\n)\n\nconst ns = useNamespace('tooltip-v2')\n\nconst contentId = useId()\n\nconst onNormalOpen = () => {\n clearTimer()\n open.value = true\n}\n\nconst onDelayOpen = () => {\n unref(isOpenDelayed) ? onDelayedOpen() : onNormalOpen()\n}\n\nconst onOpen = onNormalOpen\n\nconst onClose = () => {\n clearTimer()\n open.value = false\n}\n\nconst onChange = (open: boolean) => {\n if (open) {\n document.dispatchEvent(new CustomEvent(TOOLTIP_V2_OPEN))\n onOpen()\n }\n\n props.onOpenChange?.(open)\n}\n\nwatch(open, onChange)\n\nonMounted(() => {\n // Keeps only 1 tooltip open at a time\n document.addEventListener(TOOLTIP_V2_OPEN, onClose)\n})\n\nonBeforeUnmount(() => {\n clearTimer()\n document.removeEventListener(TOOLTIP_V2_OPEN, onClose)\n})\n\nprovide(tooltipV2RootKey, {\n contentId,\n triggerRef,\n ns,\n\n onClose,\n onDelayOpen,\n onOpen,\n})\n\ndefineExpose({\n /**\n * @description open tooltip programmatically\n */\n onOpen,\n\n /**\n * @description close tooltip programmatically\n */\n onClose,\n})\n</script>\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AA6BA,IAAA,MAAA,KAAA,GAAA,GAAA,CAAA,KAAA,CAAA,WAAA,CAAA,CAAA;AACA,IAAA,MAAA,UAAA,GAAA,IAAA,IAAA,CAAA,CAAA;AAEA,IAAA,MAAA,OAAA,QAAA,CAAA;AAAA,MACA,GAAA,EAAA,MAAA,YAAA,CAAA,KAAA,CAAA,IAAA,CAAA,GAAA,KAAA,CAAA,QAAA,KAAA,CAAA,IAAA;AAAA,MACA,GAAA,EAAA,CAAA,KAAA,KAAA;AACA,QAAA,IAAA,EAAA,CAAA;AACA,QAAA,KAAA,CAAA;AAAA,QACA,CAAA,EAAA,GAAA,KAAA,CAAA,eAAA,CAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,KAAA,EAAA,KAAA,CAAA,CAAA;AAAA,OACA;AAEA,KAAA,CAAA,CAAA;AAIA,IAAA,MAAA,aAAA,GAAA,QAAA,CAAA,MAAA,QAAA,CAAA,KAAA,cACA,CAAA,IAAA,KAAA,CAAA,aAAA,GAAA,CAAA,CAAA,CAAA;AACA,IAAA,MAAA,EAAA,KAAA,EAAA,aAAA,EAAA,IAAA,EAAA,UAAA,EAAA,GAAA,YAAA,CAAA,MAAA;AAAA,MAEA,IAAA,CAAA,KAAA,GAAA,IAAA,CAAA;AACA,KAAA,EACA,QAAA,CAAA,MAAA,KAAA,CAAA,aAAA,CAAA,EAAA;AAAA,MAEA,SAAA,EAAA,KAAA;AAEA,KAAA,CAAA,CAAA;AAEA,IAAA,MAAA,iBAAA,CAAA,YAAA,CAAA,CAAA;AAEA,IAAA,MAAA,iBAAA,EAAA,CAAA;AACA,IAAA,MAAA,YAAA,GAAA,MAAA;AACA,MAAA,UAAA,EAAA,CAAA;AAAA,MACA,IAAA,CAAA,KAAA,GAAA,IAAA,CAAA;AAEA,KAAA,CAAA;AACA,IAAA,MAAA,WAAA,GAAA,MAAA;AAAA,MACA,KAAA,CAAA,aAAA,CAAA,GAAA,aAAA,EAAA,GAAA,YAAA,EAAA,CAAA;AAEA,KAAA,CAAA;AAEA,IAAA,MAAA,qBAAA,CAAA;AACA,IAAA,MAAA,OAAA,GAAA,MAAA;AACA,MAAA,UAAA,EAAA,CAAA;AAAA,MACA,IAAA,CAAA,KAAA,GAAA,KAAA,CAAA;AAEA,KAAA,CAAA;AACA,IAAA,MAAA,QAAA,GAAA,CAAA,KAAA,KAAA;AACA,MAAA,IAAA,EAAA,CAAA;AACA,MAAA,IAAA,KAAA,EAAA;AAAA,QACA,QAAA,CAAA,aAAA,CAAA,IAAA,WAAA,CAAA,eAAA,CAAA,CAAA,CAAA;AAEA,QAAA;AAAA,OACA;AAEA,MAAA,CAAA,EAAA,QAAA,CAAA,YAAA,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,KAAA,EAAA,KAAA,CAAA,CAAA;AAEA,KAAA,CAAA;AAEA,IAAA,KAAA,CAAA,IAAA,EAAA,QAAA,CAAA,CAAA;AAAA,IACA,SAAA,CAAA,MAAA;AAEA,MAAA,QAAA,CAAA,gBAAA,CAAA,eAAA,EAAA,OAAA,CAAA,CAAA;AACA,KAAA,CAAA,CAAA;AACA,IAAA,eAAA,CAAA,MAAA;AAAA,MACA,UAAA,EAAA,CAAA;AAEA,MAAA,QAAA,CAAA,mBAAA,CAAA,eAAA,EAAA,OAAA,CAAA,CAAA;AAAA,KACA,CAAA,CAAA;AAAA,IACA,OAAA,CAAA,gBAAA,EAAA;AAAA,MACA,SAAA;AAAA,MAEA,UAAA;AAAA,MACA,EAAA;AAAA,MACA,OAAA;AAAA,MACA,WAAA;AAEA,MAAA,MAAA;AAAA,KAIA,CAAA,CAAA;AAAA,IAKA,MAAA,CAAA;AAAA,MACA,MAAA;;;;;;;;;;;;"}