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 @@