I’m trying to use VTooltip with an activator passed as a slot, my slot renders correctly, but the tooltip won’t open on hover. If I remove the slot to use a hardcoded content it works. Did I miss something here?
I’m using vuetify@^3.3.23
.
MyTooltip.vue
<code><template>
<VTooltip max-width="340px">
<div class="tooltip">
<div class="mb-1 gap-4 d-flex align-center">
<AppIcon
name="info-circle"
size="small"
/>
<slot name="title" />
</div>
<slot name="content" />
</div>
<!-- <template #activator="{ props }">
<VBtn v-bind="props">Tooltip</VBtn> This works
</template> -->
<template #activator="{ props: tooltipProps }">
<slot
name="activator"
v-bind="tooltipProps"
/>
</template>
</VTooltip>
</template>
</code>
<code><template>
<VTooltip max-width="340px">
<div class="tooltip">
<div class="mb-1 gap-4 d-flex align-center">
<AppIcon
name="info-circle"
size="small"
/>
<slot name="title" />
</div>
<slot name="content" />
</div>
<!-- <template #activator="{ props }">
<VBtn v-bind="props">Tooltip</VBtn> This works
</template> -->
<template #activator="{ props: tooltipProps }">
<slot
name="activator"
v-bind="tooltipProps"
/>
</template>
</VTooltip>
</template>
</code>
<template>
<VTooltip max-width="340px">
<div class="tooltip">
<div class="mb-1 gap-4 d-flex align-center">
<AppIcon
name="info-circle"
size="small"
/>
<slot name="title" />
</div>
<slot name="content" />
</div>
<!-- <template #activator="{ props }">
<VBtn v-bind="props">Tooltip</VBtn> This works
</template> -->
<template #activator="{ props: tooltipProps }">
<slot
name="activator"
v-bind="tooltipProps"
/>
</template>
</VTooltip>
</template>
Usage
<code><MyTooltip class="tooltip">
<template #title>
<span class="font-weight-medium">
{{ $t('title') }}
</span>
</template>
<template #content>
<div class="tooltip__content">
<p>{{ $t('tooltip.title') }}</p>
<p class="font-italic">{{ $t('tooltip.content') }}</p>
</div>
</template>
<template #activator>
<AppIcon
name="info-circle"
size="small"
/>
</template>
</MyTooltip>
</code>
<code><MyTooltip class="tooltip">
<template #title>
<span class="font-weight-medium">
{{ $t('title') }}
</span>
</template>
<template #content>
<div class="tooltip__content">
<p>{{ $t('tooltip.title') }}</p>
<p class="font-italic">{{ $t('tooltip.content') }}</p>
</div>
</template>
<template #activator>
<AppIcon
name="info-circle"
size="small"
/>
</template>
</MyTooltip>
</code>
<MyTooltip class="tooltip">
<template #title>
<span class="font-weight-medium">
{{ $t('title') }}
</span>
</template>
<template #content>
<div class="tooltip__content">
<p>{{ $t('tooltip.title') }}</p>
<p class="font-italic">{{ $t('tooltip.content') }}</p>
</div>
</template>
<template #activator>
<AppIcon
name="info-circle"
size="small"
/>
</template>
</MyTooltip>