UNPKG

tdesign-vue-next

Version:
1 lines 9.53 kB
{"version":3,"file":"tooltip.mjs","sources":["../../../components/tooltip/tooltip.tsx"],"sourcesContent":["import { computed, defineComponent, onMounted, ref, toRefs, watch, getCurrentInstance } from 'vue';\nimport { omit, isFunction } from 'lodash-es';\n\nimport props from './props';\nimport popupProps from '../popup/props';\nimport Popup, { PopupVisibleChangeContext } from '../popup';\nimport { useVModel, useContent, useTNodeJSX, usePrefixClass } from '@tdesign/shared-hooks';\n\nimport { useMouse } from './utils';\n\nexport default defineComponent({\n name: 'TTooltip',\n props: {\n ...popupProps,\n ...props,\n },\n setup(props, ctx) {\n const timer = ref(null);\n const popupRef = ref(null);\n\n const { visible, modelValue } = toRefs(props);\n const [innerVisible, setInnerVisible] = useVModel(\n visible,\n modelValue,\n props.defaultVisible,\n props.onVisibleChange,\n 'visible',\n );\n const vm = getCurrentInstance();\n const innerTooltipVisible = ref(props.visible || props.defaultVisible);\n const classPrefix = usePrefixClass();\n const renderTNodeJSX = useTNodeJSX();\n const renderContent = useContent();\n const { x } = useMouse();\n const offsetX = ref(x.value);\n\n onMounted(() => {\n if (props.duration && innerTooltipVisible.value) {\n timer.value = setTimeout(() => {\n setInnerVisible(false, {});\n clearTimeout(timer.value);\n timer.value = null;\n }, props.duration);\n }\n });\n\n const onTipVisibleChange = (val: boolean, ctx?: PopupVisibleChangeContext) => {\n // 因 props={this.getPopupProps()} 已经透传 onVisibleChange props,此处不再需要使用 emitEvent\n if (timer.value && ctx?.trigger !== 'document') return;\n if (val) {\n offsetX.value = x.value;\n }\n setInnerVisible(val, ctx);\n };\n\n const tooltipOverlayClassName = computed(() => {\n return [\n `${classPrefix.value}-tooltip`,\n { [`${classPrefix.value}-tooltip--${props.theme}`]: props.theme },\n props.overlayClassName,\n ];\n });\n\n const popupProps = computed(() => ({\n ...(vm?.vnode.props || {}),\n placement: props.placement === 'mouse' ? 'bottom-left' : props.placement,\n showArrow: props.placement === 'mouse' ? false : props.showArrow,\n overlayClassName: tooltipOverlayClassName.value,\n onVisibleChange: onTipVisibleChange,\n disabled: props.disabled,\n }));\n\n const overlayInnerStyle = computed(() => {\n if (props.placement !== 'mouse' || offsetX.value === 0) {\n return props.overlayInnerStyle;\n }\n const offsetStyle = (triggerEl: HTMLElement) => ({\n transform: `translateX(${offsetX.value - triggerEl.getBoundingClientRect().left}px)`,\n });\n if (props.overlayInnerStyle) {\n return (triggerEl: HTMLElement, popupEl: HTMLElement) => ({\n ...offsetStyle(triggerEl),\n ...(isFunction(props.overlayInnerStyle)\n ? props.overlayInnerStyle(triggerEl, popupEl)\n : props.overlayInnerStyle),\n });\n }\n return offsetStyle;\n });\n\n watch(\n () => innerTooltipVisible.value,\n () => {\n if (timer.value && !innerTooltipVisible.value) {\n clearTimeout(timer.value);\n timer.value = null;\n }\n },\n );\n\n const onPopupUpdate = () => {\n popupRef.value?.update?.();\n };\n\n /**\n * 透传更新popup实例方法,供外部调用\n */\n ctx.expose({\n updatePopper: onPopupUpdate,\n });\n return () => {\n const content = renderTNodeJSX('content');\n if (!content && !props.content) {\n return renderContent('default', 'triggerElement');\n }\n return (\n <Popup\n {...omit(popupProps.value, ['content', 'default'])}\n ref={popupRef}\n overlayInnerStyle={overlayInnerStyle.value}\n visible={innerVisible.value}\n v-slots={{\n content: () => content,\n }}\n >\n {renderContent('default', 'triggerElement')}\n </Popup>\n );\n };\n },\n});\n"],"names":["defineComponent","name","props","_objectSpread","popupProps","setup","ctx","timer","ref","popupRef","_toRefs","toRefs","visible","modelValue","_useVModel","useVModel","defaultVisible","onVisibleChange","_useVModel2","_slicedToArray","innerVisible","setInnerVisible","vm","getCurrentInstance","innerTooltipVisible","classPrefix","usePrefixClass","renderTNodeJSX","useTNodeJSX","renderContent","useContent","_useMouse","useMouse","x","offsetX","value","onMounted","duration","setTimeout","clearTimeout","onTipVisibleChange","val","trigger","tooltipOverlayClassName","computed","concat","_defineProperty","theme","overlayClassName","vnode","placement","showArrow","disabled","overlayInnerStyle","offsetStyle","triggerEl","transform","getBoundingClientRect","left","popupEl","isFunction","watch","onPopupUpdate","_popupRef$value","_popupRef$value$updat","update","call","expose","updatePopper","content","_createVNode","Popup","_mergeProps","omit"],"mappings":"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"}