element-plus
Version:
A Component Library for Vue 3
1 lines • 11.9 kB
Source Map (JSON)
{"version":3,"file":"content2.mjs","sources":["../../../../../../packages/components/tooltip/src/content.vue"],"sourcesContent":["<template>\n <el-teleport :disabled=\"!teleported\" :to=\"appendTo\">\n <transition\n v-if=\"shouldRender || !ariaHidden\"\n :name=\"transitionClass\"\n :appear=\"!persistentRef\"\n @after-leave=\"onTransitionLeave\"\n @before-enter=\"onBeforeEnter\"\n @after-enter=\"onAfterShow\"\n @before-leave=\"onBeforeLeave\"\n >\n <el-popper-content\n v-show=\"shouldShow\"\n :id=\"id\"\n ref=\"contentRef\"\n v-bind=\"$attrs\"\n :aria-label=\"ariaLabel\"\n :aria-hidden=\"ariaHidden\"\n :boundaries-padding=\"boundariesPadding\"\n :fallback-placements=\"fallbackPlacements\"\n :gpu-acceleration=\"gpuAcceleration\"\n :offset=\"offset\"\n :placement=\"placement\"\n :popper-options=\"popperOptions\"\n :arrow-offset=\"arrowOffset\"\n :strategy=\"strategy\"\n :effect=\"effect\"\n :enterable=\"enterable\"\n :pure=\"pure\"\n :popper-class=\"popperClass\"\n :popper-style=\"[popperStyle!, contentStyle]\"\n :reference-el=\"referenceEl\"\n :trigger-target-el=\"triggerTargetEl\"\n :visible=\"shouldShow\"\n :z-index=\"zIndex\"\n :loop=\"loop\"\n @mouseenter=\"onContentEnter\"\n @mouseleave=\"onContentLeave\"\n @blur=\"onBlur\"\n @close=\"onClose\"\n >\n <slot />\n </el-popper-content>\n </transition>\n </el-teleport>\n</template>\n\n<script lang=\"ts\" setup>\nimport { computed, inject, onBeforeUnmount, ref, unref, watch } from 'vue'\nimport { computedEager, onClickOutside } from '@vueuse/core'\nimport { useNamespace, usePopperContainerId } from '@element-plus/hooks'\nimport {\n castArray,\n composeEventHandlers,\n focusElement,\n} from '@element-plus/utils'\nimport { ElPopperContent } from '@element-plus/components/popper'\nimport ElTeleport from '@element-plus/components/teleport'\nimport { TOOLTIP_INJECTION_KEY } from './constants'\nimport { useTooltipContentProps } from './content'\nimport { isTriggerType } from './utils'\n\nimport type { PopperContentInstance } from '@element-plus/components/popper'\n\ndefineOptions({\n name: 'ElTooltipContent',\n inheritAttrs: false,\n})\n\nconst props = defineProps(useTooltipContentProps)\n\nconst { selector } = usePopperContainerId()\nconst ns = useNamespace('tooltip')\n\nconst contentRef = ref<PopperContentInstance>()\nconst popperContentRef = computedEager(() => contentRef.value?.popperContentRef)\nlet stopHandle: ReturnType<typeof onClickOutside>\nconst {\n controlled,\n id,\n open,\n trigger,\n onClose,\n onOpen,\n onShow,\n onHide,\n onBeforeShow,\n onBeforeHide,\n} = inject(TOOLTIP_INJECTION_KEY, undefined)!\nconst transitionClass = computed(() => {\n return props.transition || `${ns.namespace.value}-fade-in-linear`\n})\nconst persistentRef = computed(() => {\n // For testing, we would always want the content to be rendered\n // to the DOM, so we need to return true here.\n if (process.env.NODE_ENV === 'test') {\n if (!process.env.RUN_TEST_WITH_PERSISTENT) {\n return true\n }\n }\n return props.persistent\n})\n\nonBeforeUnmount(() => {\n stopHandle?.()\n})\n\nconst shouldRender = computed(() => {\n return unref(persistentRef) ? true : unref(open)\n})\n\nconst shouldShow = computed(() => {\n return props.disabled ? false : unref(open)\n})\n\nconst appendTo = computed(() => {\n return props.appendTo || selector.value\n})\n\nconst contentStyle = computed(() => props.style ?? {})\n\nconst ariaHidden = ref(true)\n\nconst onTransitionLeave = () => {\n onHide()\n isFocusInsideContent() && focusElement(document.body, { preventScroll: true })\n ariaHidden.value = true\n}\n\nconst stopWhenControlled = () => {\n if (unref(controlled)) return true\n}\n\nconst onContentEnter = composeEventHandlers(stopWhenControlled, () => {\n if (props.enterable && isTriggerType(unref(trigger), 'hover')) {\n onOpen()\n }\n})\n\nconst onContentLeave = composeEventHandlers(stopWhenControlled, () => {\n if (isTriggerType(unref(trigger), 'hover')) {\n onClose()\n }\n})\n\nconst onBeforeEnter = () => {\n contentRef.value?.updatePopper?.()\n onBeforeShow?.()\n}\n\nconst onBeforeLeave = () => {\n onBeforeHide?.()\n}\n\nconst onAfterShow = () => {\n onShow()\n}\n\nconst onBlur = () => {\n if (!props.virtualTriggering) {\n onClose()\n }\n}\n\nconst isFocusInsideContent = (event?: FocusEvent) => {\n const popperContent: HTMLElement | undefined =\n contentRef.value?.popperContentRef\n const activeElement = (event?.relatedTarget as Node) || document.activeElement\n\n return popperContent?.contains(activeElement)\n}\n\nwatch(\n () => unref(open),\n (val) => {\n if (!val) {\n stopHandle?.()\n } else {\n ariaHidden.value = false\n stopHandle = onClickOutside(\n popperContentRef,\n () => {\n if (unref(controlled)) return\n const needClose = castArray(unref(trigger)).every((item) => {\n return item !== 'hover' && item !== 'focus'\n })\n if (needClose) {\n onClose()\n }\n },\n { detectIframe: true }\n )\n }\n },\n {\n flush: 'post',\n }\n)\n\nwatch(\n () => props.content,\n () => {\n contentRef.value?.updatePopper?.()\n }\n)\n\ndefineExpose({\n /**\n * @description el-popper-content component instance\n */\n contentRef,\n /**\n * @description validate current focus event is trigger inside el-popper-content\n */\n isFocusInsideContent,\n})\n</script>\n"],"names":["_createBlock","_unref","teleported","_openBlock","_Transition","_withDirectives","_createVNode","_mergeProps","$attrs","ariaLabel","boundariesPadding","fallbackPlacements","gpuAcceleration","offset","placement","popperOptions","arrowOffset","strategy","effect","enterable","pure","popperClass","popperStyle","referenceEl","triggerTargetEl","zIndex","loop","_renderSlot"],"mappings":"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"}