element-plus
Version:
A Component Library for Vue 3
1 lines • 11.3 kB
Source Map (JSON)
{"version":3,"file":"content.vue2.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 { isTriggerType } from './utils'\nimport { useTooltipContentPropsDefaults } from './content'\n\nimport type { ElTooltipContentProps } from './content'\nimport type { PopperContentInstance } from '@element-plus/components/popper'\n\ndefineOptions({\n name: 'ElTooltipContent',\n inheritAttrs: false,\n})\n\nconst props = withDefaults(\n defineProps<ElTooltipContentProps>(),\n useTooltipContentPropsDefaults\n)\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","_Transition","_withDirectives","_createVNode","_mergeProps","$attrs","_renderSlot"],"mappings":"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"}