Tooltip
Examples
Style variants
Available ui
prop values: alt
.
<template>
<article>
<section>
<veui-checkbox
v-model="ui"
true-value="reverse"
:false-value="null"
ui="s"
>
Reverse style
</veui-checkbox>
</section>
<section>
<span ref="text">Move your mouse pointer over here.</span>
<veui-tooltip
target="text"
:ui="ui"
>
This is a tooltip.
</veui-tooltip>
</section>
</article>
</template>
<script>
import { Tooltip, Checkbox } from 'veui'
export default {
components: {
'veui-tooltip': Tooltip,
'veui-checkbox': Checkbox
},
data () {
return {
ui: null
}
}
}
</script>
<style lang="less" scoped>
section + section {
margin-top: 20px;
}
</style>
Positioning
Use the position
prop to specify the position of the tooltip.
<template>
<article>
<section>
<veui-checkbox
v-model="aimCenter"
ui="s"
>
Aim center
</veui-checkbox>
</section>
<section class="grid">
<veui-tooltip
:open.sync="open"
:target="target"
:position="position"
:aim-center="aimCenter"
>
Hello.
</veui-tooltip>
<veui-button
ref="top-start"
style="grid-area: 1 / 2"
@mouseenter="show('top-start')"
>
top-start
</veui-button>
<veui-button
ref="top"
style="grid-area: 1 / 3"
@mouseenter="show('top')"
>
top
</veui-button>
<veui-button
ref="top-end"
style="grid-area: 1 / 4"
@mouseenter="show('top-end')"
>
top-end
</veui-button>
<veui-button
ref="right-start"
style="grid-area: 2 / 5"
@mouseenter="show('right-start')"
>
right-start
</veui-button>
<veui-button
ref="right"
style="grid-area: 3 / 5"
@mouseenter="show('right')"
>
right
</veui-button>
<veui-button
ref="right-end"
style="grid-area: 4 / 5"
@mouseenter="show('right-end')"
>
right-end
</veui-button>
<veui-button
ref="bottom-start"
style="grid-area: 5 / 2"
@mouseenter="show('bottom-start')"
>
bottom-start
</veui-button>
<veui-button
ref="bottom"
style="grid-area: 5 / 3"
@mouseenter="show('bottom')"
>
bottom
</veui-button>
<veui-button
ref="bottom-end"
style="grid-area: 5 / 4"
@mouseenter="show('bottom-end')"
>
bottom-end
</veui-button>
<veui-button
ref="left-start"
style="grid-area: 2 / 1"
@mouseenter="show('left-start')"
>
left-start
</veui-button>
<veui-button
ref="left"
style="grid-area: 3 / 1"
@mouseenter="show('left')"
>
left
</veui-button>
<veui-button
ref="left-end"
style="grid-area: 4 / 1"
@mouseenter="show('left-end')"
>
left-end
</veui-button>
</section>
</article>
</template>
<script>
import { Tooltip, Button, Checkbox } from 'veui'
export default {
components: {
'veui-tooltip': Tooltip,
'veui-button': Button,
'veui-checkbox': Checkbox
},
data () {
return {
target: null,
position: null,
open: false,
aimCenter: false
}
},
methods: {
show (position) {
this.target = this.$refs[position]
this.position = position
this.open = true
}
}
}
</script>
<style lang="less" scoped>
section + section {
margin-top: 20px;
}
.grid {
display: grid;
grid-template-columns: auto auto auto auto auto;
grid-gap: 12px;
justify-content: center;
align-items: center;
}
</style>
Trigger
Use the trigger
prop to specify when to show/hide the tooltip.
trigger="hover"
hover
over here.<template>
<article>
<section>
<code>trigger="{{ trigger }}"</code>
</section>
<section>
Open trigger: <veui-select
v-model="open"
:options="triggers"
/>
</section>
<section>
Close trigger: <veui-select
v-model="close"
:options="triggers"
/>
</section>
<section>
<span
ref="text"
tabindex="0"
>Trigger <b><code>{{ open }}</code></b> over here.</span>
<veui-tooltip
target="text"
:trigger="trigger"
>
This is a tooltip.
</veui-tooltip>
</section>
</article>
</template>
<script>
import { Tooltip, Select } from 'veui'
export default {
components: {
'veui-tooltip': Tooltip,
'veui-select': Select
},
data () {
return {
open: 'hover',
close: 'hover',
triggers: [
{ label: 'hover', value: 'hover' },
{ label: 'click', value: 'click' },
{ label: 'mousedown', value: 'mousedown' },
{ label: 'mouseup', value: 'mouseup' },
{ label: 'focus', value: 'focus' }
]
}
},
computed: {
trigger () {
if (this.open === this.close) {
return this.open
}
return `${this.open}-${this.close}`
}
}
}
</script>
<style lang="less" scoped>
section + section {
margin-top: 20px;
}
span {
outline: none;
&.focus-visible {
outline: 2px solid #ccc;
outline-offset: 3px;
}
}
</style>
API
Props
Name | Type | Default | Description | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
ui | string | - | Predefined styles.
| ||||||||
open | boolean | false |
Specifies whether to show the tooltip or not. | ||||||||
target | string | Vue | Node | - | Refers to the target prop of the Overlay component. | ||||||||
position | string | 'top' | Specifies the positioning options. Uses the positioning syntax of Popper.js, see | ||||||||
aim-center | boolean | false | Specifies whether the tooltip arrow should always point to the center of the target element. | ||||||||
trigger | string | 'hover' | Specifies how to trigger the tooltip. The supported values are the For example, | ||||||||
interactive | boolean | true | Specifies whether the content of the tooltip can be interacted with. If false , the tooltip will automatically close when the conditions specified by trigger are met outside of the target . | ||||||||
autofocus | boolean | - | Specifies whether to automatically focus on the first focusable element inside the tooltip. | ||||||||
hide-delay | number | tooltip.hideDelays | The number of milliseconds to wait before closing the tooltip after the conditions for closing are met. This can be used to prevent the tooltip from closing automatically before interacting with it after moving the cursor out of the target . | ||||||||
overlay-class | string | Array | Object | - | Refers to the overlay-class prop of the Overlay component. | ||||||||
overlay-style | string | Array | Object | - | Refers to the overlay-style prop of the Overlay component. |
Slots
Name | Description |
---|---|
default | The content of the tooltip. |
Events
Name | Description |
---|---|
toggle |
Triggered when the tooltip's open state is toggled. The callback parameter is |
Configs
Key | Type | Default | Description |
---|---|---|---|
tooltip.hideDelay | number | 300 | See the hide-delay prop. |