# Tooltip
# Example
The first element appear in <tooltip>
node will be the trigger element. You can also use target
to reference it from outside the component.
TIP
Tooltips with zero-length texts are never displayed.
Hover over the button below to toggle tooltips:
<template>
<div class="uiv">
<btn id="btn" type="primary">Hover me!</btn>
<tooltip text="Static tooltip content goes here" target="#btn" />
</div>
</template>
# Trigger target
Order to decide the tooltip trigger:
- Use
target
if exist. - Use element in default slot with
data-role="trigger"
attribute if exist. - Use the first element present in default slot.
A target
can be:
- Selector that can be recognized by
querySelect
. - Reference to Element.
- Reference to Component.
# Directive
You can also simply use tooltips via v-tooltip
directive:
<template>
<div class="uiv">
<btn v-tooltip="'Static tooltip content goes here'" type="primary"
>Hover me!</btn
>
</div>
</template>
# Placements
Supported placements:
- top (Default)
- right
- bottom
- left
<template>
<div class="uiv">
<btn v-tooltip.left="'Tooltip content on left'" type="primary">Left</btn>
<btn v-tooltip.top="'Tooltip content on top'" type="primary">Top</btn>
<btn v-tooltip.bottom="'Tooltip content on bottom'" type="primary"
>Bottom</btn
>
<btn v-tooltip.right="'Tooltip content on right'" type="primary">Right</btn>
</div>
</template>
# Auto placement
Tooltips will try to find the best placement for displaying while auto-placement
is set to true
(by default) base on the default placement setting. Useful while there does not have enough space to show the entire tooltip content.
auto-placement
try order: right -> bottom -> left -> top, and use the set one if none of these matched.
# Viewport
Keeps the tooltip within the bounds of this element.
<template>
<div id="tooltip-viewport" class="uiv">
<btn
v-tooltip="{
text: 'Tooltip content auto',
viewport: '#tooltip-viewport',
}"
type="primary"
>Auto</btn
>
<btn
v-tooltip.left="{
text: 'Tooltip content on left',
viewport: '#tooltip-viewport',
}"
type="primary"
>Left</btn
>
<btn
v-tooltip.top="{
text: 'Tooltip content on top',
viewport: '#tooltip-viewport',
}"
type="primary"
>Top</btn
>
<btn
v-tooltip.bottom="{
text: 'Tooltip content on bottom',
viewport: '#tooltip-viewport',
}"
type="primary"
>Bottom
</btn>
<btn
v-tooltip.right="{
text: 'Tooltip content on right',
viewport: '#tooltip-viewport',
}"
type="primary"
>Right</btn
>
<btn
v-tooltip="{
text: 'Tooltip content auto',
viewport: '#tooltip-viewport',
}"
type="primary"
>Auto</btn
>
</div>
</template>
<style scoped>
#tooltip-viewport {
display: inline-block;
padding: 20px;
background-color: #eee;
}
</style>
# Triggers
Supported triggers:
hover
show on mouseenter, hide on mouseleave.focus
show on focus, hide on blur.hover-focus
(Default) combination of hover and focus trigger.click
toggle on trigger click.outside-click
same as click, but not close on tooltip click and close on outside click.
<template>
<div class="uiv">
<btn v-tooltip="'Static tooltip content'" type="primary"
>Hover-Focus (Default)</btn
>
<btn v-tooltip.hover="'Static tooltip content'" type="primary">Hover</btn>
<btn v-tooltip.focus="'Static tooltip content'" type="primary">Focus</btn>
<btn v-tooltip.click="'Static tooltip content'" type="primary">Click</btn>
<btn v-tooltip.outside-click="'Static tooltip content'" type="primary"
>Outside-Click</btn
>
</div>
</template>
# Manual trigger
Set trigger
prop to manual
to disable all the event listeners, and controls tooltips show / hide only by v-model
change.
<template>
<section class="uiv">
<tooltip
v-model="show"
text="Static tooltip content goes here"
trigger="manual"
>
<btn>You Can't Trigger Tooltip Here...</btn>
</tooltip>
<hr />
<btn type="primary" @click="show = !show">Toggle Tooltip</btn>
</section>
</template>
<script>
export default {
data() {
return {
show: false,
}
},
}
</script>
# API Reference
# Tooltip (opens new window)
# Props
Name | Type | Default | Required | Description |
---|---|---|---|---|
v-model | Boolean | Show / hide the tooltip. | ||
target | Tooltip trigger, can be a select or reference to Element / Component. | |||
tag | String | span | The HTML tag that render the component. | |
text | String | The tooltip text. | ||
enable | Boolean | true | Enable the tooltip. | |
enterable | Boolean | true | Whether mouse can enter the tooltip. | |
placement | String | top | The tooltip placement, support top / bottom / left / right . | |
auto-placement | Boolean | true | Try to auto adjust the placement if the set one does not have enough space to show. | |
trigger | String | hover-focus | The tooltip trigger event, support hover / focus / hover-focus / click / outside-click / manual | |
append-to | String | body | Element selector that the tooltip append to. | |
position-by | String | (1.2.0+) Element selector that the tooltip position by, see #410 (opens new window). | ||
transition | Number | 150 | The tooltip show / hide transition time in ms. | |
show-delay | Number | 0 | Delay showing the tooltip (ms). | |
hide-delay | Number | 0 | Delay hidding the tooltip (ms). | |
viewport | String or Function | Keeps the tooltip within the bounds of this element. Example: viewport: '#viewport'. If a function is given, it is called with the triggering element DOM node as its only argument. | ||
custom-class | String | Apply a custom css class to the tooltip. |
# Events
Name | Params | Description |
---|---|---|
show | Fire after tooltip show. | |
hide | Fire after tooltip hide. |
# Directive (opens new window)
The binding value will be the text content of corresponding tooltip.
# Simplest Usage
v-tooltip="'tooltip content'"
# Placements Examples
v-tooltip.left="'tooltip content'"
v-tooltip.right="'tooltip content'"
# Triggers Examples
v-tooltip.hover="'tooltip content'"
v-tooltip.click="'tooltip content'"
# Unenterable
v-tooltip.unenterable="'tooltip content'"
# Custom append-to
v-tooltip:arg="'tooltip content'"
arg
is the ID (without prefix #
) of the element to append to, leave it empty to use default value body
.
# Combination
v-tooltip.left.hover="'tooltip content'"
v-tooltip:some-id.right.click="'tooltip content'"