You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 lines
16 KiB
1 lines
16 KiB
{"ast":null,"code":"import { defineComponent, ref, inject, computed, onBeforeUnmount, unref, watch, openBlock, createBlock, withCtx, createVNode, Transition, withDirectives, mergeProps, renderSlot, vShow, createCommentVNode } from 'vue';\nimport { onClickOutside } from '@vueuse/core';\nimport '../../popper/index.mjs';\nimport { ElTeleport } from '../../teleport/index.mjs';\nimport { TOOLTIP_INJECTION_KEY } from './constants.mjs';\nimport { useTooltipContentProps } from './content.mjs';\nimport _export_sfc from '../../../_virtual/plugin-vue_export-helper.mjs';\nimport { usePopperContainerId } from '../../../hooks/use-popper-container/index.mjs';\nimport ElPopperContent from '../../popper/src/content2.mjs';\nimport { tryFocus } from '../../focus-trap/src/utils.mjs';\nimport { useNamespace } from '../../../hooks/use-namespace/index.mjs';\nimport { composeEventHandlers } from '../../../utils/dom/event.mjs';\nconst __default__ = defineComponent({\n name: \"ElTooltipContent\",\n inheritAttrs: false\n});\nconst _sfc_main = /* @__PURE__ */defineComponent({\n ...__default__,\n props: useTooltipContentProps,\n setup(__props, {\n expose\n }) {\n const props = __props;\n const {\n selector\n } = usePopperContainerId();\n const ns = useNamespace(\"tooltip\");\n const contentRef = ref();\n let stopHandle;\n const {\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, void 0);\n const transitionClass = computed(() => {\n return props.transition || `${ns.namespace.value}-fade-in-linear`;\n });\n const persistentRef = computed(() => {\n if (process.env.NODE_ENV === \"test\") {\n return true;\n }\n return props.persistent;\n });\n onBeforeUnmount(() => {\n stopHandle == null ? void 0 : stopHandle();\n });\n const shouldRender = computed(() => {\n return unref(persistentRef) ? true : unref(open);\n });\n const shouldShow = computed(() => {\n return props.disabled ? false : unref(open);\n });\n const appendTo = computed(() => {\n return props.appendTo || selector.value;\n });\n const contentStyle = computed(() => {\n var _a;\n return (_a = props.style) != null ? _a : {};\n });\n const ariaHidden = ref(true);\n const onTransitionLeave = () => {\n onHide();\n isFocusInsideContent() && tryFocus(document.body);\n ariaHidden.value = true;\n };\n const stopWhenControlled = () => {\n if (unref(controlled)) return true;\n };\n const onContentEnter = composeEventHandlers(stopWhenControlled, () => {\n if (props.enterable && unref(trigger) === \"hover\") {\n onOpen();\n }\n });\n const onContentLeave = composeEventHandlers(stopWhenControlled, () => {\n if (unref(trigger) === \"hover\") {\n onClose();\n }\n });\n const onBeforeEnter = () => {\n var _a, _b;\n (_b = (_a = contentRef.value) == null ? void 0 : _a.updatePopper) == null ? void 0 : _b.call(_a);\n onBeforeShow == null ? void 0 : onBeforeShow();\n };\n const onBeforeLeave = () => {\n onBeforeHide == null ? void 0 : onBeforeHide();\n };\n const onAfterShow = () => {\n onShow();\n stopHandle = onClickOutside(computed(() => {\n var _a;\n return (_a = contentRef.value) == null ? void 0 : _a.popperContentRef;\n }), () => {\n if (unref(controlled)) return;\n const $trigger = unref(trigger);\n if ($trigger !== \"hover\") {\n onClose();\n }\n });\n };\n const onBlur = () => {\n if (!props.virtualTriggering) {\n onClose();\n }\n };\n const isFocusInsideContent = event => {\n var _a;\n const popperContent = (_a = contentRef.value) == null ? void 0 : _a.popperContentRef;\n const activeElement = (event == null ? void 0 : event.relatedTarget) || document.activeElement;\n return popperContent == null ? void 0 : popperContent.contains(activeElement);\n };\n watch(() => unref(open), val => {\n if (!val) {\n stopHandle == null ? void 0 : stopHandle();\n } else {\n ariaHidden.value = false;\n }\n }, {\n flush: \"post\"\n });\n watch(() => props.content, () => {\n var _a, _b;\n (_b = (_a = contentRef.value) == null ? void 0 : _a.updatePopper) == null ? void 0 : _b.call(_a);\n });\n expose({\n contentRef,\n isFocusInsideContent\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(ElTeleport), {\n disabled: !_ctx.teleported,\n to: unref(appendTo)\n }, {\n default: withCtx(() => [createVNode(Transition, {\n name: unref(transitionClass),\n onAfterLeave: onTransitionLeave,\n onBeforeEnter,\n onAfterEnter: onAfterShow,\n onBeforeLeave\n }, {\n default: withCtx(() => [unref(shouldRender) ? withDirectives((openBlock(), createBlock(unref(ElPopperContent), mergeProps({\n key: 0,\n id: unref(id),\n ref_key: \"contentRef\",\n ref: contentRef\n }, _ctx.$attrs, {\n \"aria-label\": _ctx.ariaLabel,\n \"aria-hidden\": ariaHidden.value,\n \"boundaries-padding\": _ctx.boundariesPadding,\n \"fallback-placements\": _ctx.fallbackPlacements,\n \"gpu-acceleration\": _ctx.gpuAcceleration,\n offset: _ctx.offset,\n placement: _ctx.placement,\n \"popper-options\": _ctx.popperOptions,\n strategy: _ctx.strategy,\n effect: _ctx.effect,\n enterable: _ctx.enterable,\n pure: _ctx.pure,\n \"popper-class\": _ctx.popperClass,\n \"popper-style\": [_ctx.popperStyle, unref(contentStyle)],\n \"reference-el\": _ctx.referenceEl,\n \"trigger-target-el\": _ctx.triggerTargetEl,\n visible: unref(shouldShow),\n \"z-index\": _ctx.zIndex,\n onMouseenter: unref(onContentEnter),\n onMouseleave: unref(onContentLeave),\n onBlur,\n onClose: unref(onClose)\n }), {\n default: withCtx(() => [renderSlot(_ctx.$slots, \"default\")]),\n _: 3\n }, 16, [\"id\", \"aria-label\", \"aria-hidden\", \"boundaries-padding\", \"fallback-placements\", \"gpu-acceleration\", \"offset\", \"placement\", \"popper-options\", \"strategy\", \"effect\", \"enterable\", \"pure\", \"popper-class\", \"popper-style\", \"reference-el\", \"trigger-target-el\", \"visible\", \"z-index\", \"onMouseenter\", \"onMouseleave\", \"onClose\"])), [[vShow, unref(shouldShow)]]) : createCommentVNode(\"v-if\", true)]),\n _: 3\n }, 8, [\"name\"])]),\n _: 3\n }, 8, [\"disabled\", \"to\"]);\n };\n }\n});\nvar ElTooltipContent = /* @__PURE__ */_export_sfc(_sfc_main, [[\"__file\", \"content.vue\"]]);\nexport { ElTooltipContent as default };","map":{"version":3,"names":["name","inheritAttrs","selector","usePopperContainerId","ns","useNamespace","contentRef","ref","stopHandle","controlled","id","open","trigger","onClose","onOpen","onShow","onHide","onBeforeShow","onBeforeHide","inject","TOOLTIP_INJECTION_KEY","transitionClass","computed","props","transition","namespace","value","persistentRef","process","env","NODE_ENV","persistent","onBeforeUnmount","shouldRender","unref","shouldShow","disabled","appendTo","contentStyle","_a","style","ariaHidden","onTransitionLeave","isFocusInsideContent","tryFocus","document","body","stopWhenControlled","onContentEnter","composeEventHandlers","enterable","onContentLeave","onBeforeEnter","_b","updatePopper","call","onBeforeLeave","onAfterShow","onClickOutside","popperContentRef","$trigger","onBlur","virtualTriggering","event","popperContent","activeElement","relatedTarget","contains","watch","val","flush","content","expose","_ctx","_cache","openBlock","createBlock","ElTeleport","teleported","to","default","withCtx","createVNode","Transition"],"sources":["../../../../../../packages/components/tooltip/src/content.vue"],"sourcesContent":["<template>\n <el-teleport :disabled=\"!teleported\" :to=\"appendTo\">\n <transition\n :name=\"transitionClass\"\n @after-leave=\"onTransitionLeave\"\n @before-enter=\"onBeforeEnter\"\n @after-enter=\"onAfterShow\"\n @before-leave=\"onBeforeLeave\"\n >\n <el-popper-content\n v-if=\"shouldRender\"\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 :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 @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 { onClickOutside } from '@vueuse/core'\nimport { useNamespace, usePopperContainerId } from '@element-plus/hooks'\nimport { composeEventHandlers } from '@element-plus/utils'\nimport { ElPopperContent } from '@element-plus/components/popper'\nimport ElTeleport from '@element-plus/components/teleport'\nimport { tryFocus } from '@element-plus/components/focus-trap'\nimport { TOOLTIP_INJECTION_KEY } from './constants'\nimport { useTooltipContentProps } from './content'\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>()\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 return true\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 ?? {}) as any)\n\nconst ariaHidden = ref(true)\n\nconst onTransitionLeave = () => {\n onHide()\n isFocusInsideContent() && tryFocus(document.body)\n ariaHidden.value = true\n}\n\nconst stopWhenControlled = () => {\n if (unref(controlled)) return true\n}\n\nconst onContentEnter = composeEventHandlers(stopWhenControlled, () => {\n if (props.enterable && unref(trigger) === 'hover') {\n onOpen()\n }\n})\n\nconst onContentLeave = composeEventHandlers(stopWhenControlled, () => {\n if (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 stopHandle = onClickOutside(\n computed(() => {\n return contentRef.value?.popperContentRef\n }),\n () => {\n if (unref(controlled)) return\n const $trigger = unref(trigger)\n if ($trigger !== 'hover') {\n onClose()\n }\n }\n )\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 }\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"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
|