From 68be420456f5f0a7b4ef0862b4fac5fea6ab05ab Mon Sep 17 00:00:00 2001
From: qmhc <544022268@qq.com>
Date: Fri, 15 Jul 2022 22:32:46 +0800
Subject: [PATCH] fix(tooltip): support fragment when using wrapper
---
components/tooltip/tooltip.tsx | 37 +++++++++++------------
docs/demos/tooltip/trigger/demo.en-US.vue | 2 +-
docs/demos/tooltip/trigger/demo.zh-CN.vue | 2 +-
docs/demos/tooltip/wrapper/demo.en-US.vue | 4 ++-
docs/demos/tooltip/wrapper/demo.zh-CN.vue | 4 ++-
5 files changed, 25 insertions(+), 24 deletions(-)
diff --git a/components/tooltip/tooltip.tsx b/components/tooltip/tooltip.tsx
index 2e2762b47..348543120 100644
--- a/components/tooltip/tooltip.tsx
+++ b/components/tooltip/tooltip.tsx
@@ -131,12 +131,12 @@ export default defineComponent({
return reference.value instanceof Element ? reference.value : null
})
- const wrapper = useClickOutside(handleClickOutside)
+ useClickOutside(handleClickOutside, originalTrigger)
const { popper, transferTo, updatePopper } = usePopper({
placement,
transfer,
- wrapper,
- reference
+ reference,
+ wrapper: originalTrigger
})
const tipStyle = computed(() => {
@@ -271,10 +271,6 @@ export default defineComponent({
} else {
originalTrigger.value = null
}
-
- if (!props.wrapper) {
- wrapper.value = originalTrigger.value
- }
}
function syncRendering() {
@@ -285,7 +281,8 @@ export default defineComponent({
const CustomTag = props.wrapper
? ((props.wrapper === true ? 'span' : props.wrapper) as any)
: null
- const triggerVNode = slots.trigger?.()[0] || null
+ const triggers = slots.trigger?.()
+ const triggerVNode = triggers ? triggers[0] : null
const stopPropagation = (event: MouseEvent) => {
event.stopPropagation()
@@ -303,8 +300,18 @@ export default defineComponent({
return triggerVNode
}
- const renderPopover = () => [
- triggerVNode && {renderTrigger()},
+
+ return [
+ triggerVNode &&
+ (CustomTag
+ ? (
+
+ {triggers}
+
+ )
+ : (
+ {renderTrigger()}
+ )),
!props.disabled && (
{(props.tipAlive || rendering.value) && (
@@ -337,16 +344,6 @@ export default defineComponent({
)
]
-
- return CustomTag
- ? (
-
- {renderPopover()}
-
- )
- : (
- renderPopover()
- )
}
}
})
diff --git a/docs/demos/tooltip/trigger/demo.en-US.vue b/docs/demos/tooltip/trigger/demo.en-US.vue
index 4524b2857..1318e4464 100644
--- a/docs/demos/tooltip/trigger/demo.en-US.vue
+++ b/docs/demos/tooltip/trigger/demo.en-US.vue
@@ -12,7 +12,7 @@
Some tip content
-
+
diff --git a/docs/demos/tooltip/trigger/demo.zh-CN.vue b/docs/demos/tooltip/trigger/demo.zh-CN.vue
index bc3f5399d..b2a09e15a 100644
--- a/docs/demos/tooltip/trigger/demo.zh-CN.vue
+++ b/docs/demos/tooltip/trigger/demo.zh-CN.vue
@@ -12,7 +12,7 @@
一些提示的内容
-
+
diff --git a/docs/demos/tooltip/wrapper/demo.en-US.vue b/docs/demos/tooltip/wrapper/demo.en-US.vue
index 9c1f3cf56..0f0c96a2a 100644
--- a/docs/demos/tooltip/wrapper/demo.en-US.vue
+++ b/docs/demos/tooltip/wrapper/demo.en-US.vue
@@ -1,7 +1,9 @@
-
+
+
+ Can be fragment after using wrapper
A tooltip with wrapping element
diff --git a/docs/demos/tooltip/wrapper/demo.zh-CN.vue b/docs/demos/tooltip/wrapper/demo.zh-CN.vue
index c2c3d490f..2056a86c7 100644
--- a/docs/demos/tooltip/wrapper/demo.zh-CN.vue
+++ b/docs/demos/tooltip/wrapper/demo.zh-CN.vue
@@ -1,7 +1,9 @@
-
+
+
+ 添加了包围元素后可以使用片段了
带有包围元素的气泡提示