Skip to content

Commit

Permalink
fix(tooltip): support fragment when using wrapper
Browse files Browse the repository at this point in the history
  • Loading branch information
qmhc committed Jul 15, 2022
1 parent e44f327 commit 68be420
Show file tree
Hide file tree
Showing 5 changed files with 25 additions and 24 deletions.
37 changes: 17 additions & 20 deletions components/tooltip/tooltip.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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(() => {
Expand Down Expand Up @@ -271,10 +271,6 @@ export default defineComponent({
} else {
originalTrigger.value = null
}

if (!props.wrapper) {
wrapper.value = originalTrigger.value
}
}

function syncRendering() {
Expand All @@ -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()
Expand All @@ -303,8 +300,18 @@ export default defineComponent({

return triggerVNode
}
const renderPopover = () => [
triggerVNode && <Fragment ref={syncTriggerRef as any}>{renderTrigger()}</Fragment>,

return [
triggerVNode &&
(CustomTag
? (
<CustomTag {...attrs} ref={originalTrigger} class={[nh.b(), nh.bs('vars')]}>
{triggers}
</CustomTag>
)
: (
<Fragment ref={syncTriggerRef as any}>{renderTrigger()}</Fragment>
)),
!props.disabled && (
<Portal to={transferTo.value}>
{(props.tipAlive || rendering.value) && (
Expand Down Expand Up @@ -337,16 +344,6 @@ export default defineComponent({
</Portal>
)
]

return CustomTag
? (
<CustomTag ref={wrapper} {...attrs} class={[nh.b(), nh.bs('vars')]}>
{renderPopover()}
</CustomTag>
)
: (
renderPopover()
)
}
}
})
2 changes: 1 addition & 1 deletion docs/demos/tooltip/trigger/demo.en-US.vue
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
</template>
Some tip content
</Tooltip>
<Tooltip trigger="focus" placement="right">
<Tooltip trigger="focus" placement="bottom">
<template #trigger>
<Button> Focus Trigger </Button>
</template>
Expand Down
2 changes: 1 addition & 1 deletion docs/demos/tooltip/trigger/demo.zh-CN.vue
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
</template>
一些提示的内容
</Tooltip>
<Tooltip trigger="focus" placement="right">
<Tooltip trigger="focus" placement="bottom">
<template #trigger>
<Button> 聚焦触发 </Button>
</template>
Expand Down
4 changes: 3 additions & 1 deletion docs/demos/tooltip/wrapper/demo.en-US.vue
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
<template>
<Tooltip wrapper style="display: inline-flex; padding: 10px; border: var(--vxp-border-base);">
<Tooltip wrapper style="display: inline-block; padding: 10px; border: var(--vxp-border-base);">
<template #trigger>
<Button> Tooltip </Button>
<br />
<span>Can be fragment after using wrapper</span>
</template>
A tooltip with wrapping element
</Tooltip>
Expand Down
4 changes: 3 additions & 1 deletion docs/demos/tooltip/wrapper/demo.zh-CN.vue
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
<template>
<Tooltip wrapper style="display: inline-flex; padding: 10px; border: var(--vxp-border-base);">
<Tooltip wrapper style="display: inline-block; padding: 10px; border: var(--vxp-border-base);">
<template #trigger>
<Button> 气泡提示 </Button>
<br />
<span>添加了包围元素后可以使用片段了</span>
</template>
带有包围元素的气泡提示
</Tooltip>
Expand Down

0 comments on commit 68be420

Please sign in to comment.