STooltip
<STooltip> is a component to display small popup text on any given component.
Usage
Import <STooltip> component and pass in tooltip text as a prop.
<script setup lang="ts">
import STooltip from '@globalbrain/sefirot/lib/components/STooltip.vue'
</script>
<template>
<STooltip text="Tooltip text.">
Hover this text
</STooltip>
</template>You may also pass in the text as slot. This is useful when you want to add HTML element such as link to within tooltip.
<script setup lang="ts">
import STooltip from '@globalbrain/sefirot/lib/components/STooltip.vue'
</script>
<template>
<STooltip>
<template #default>
Hover this text
</template>
<template #text>
Tooltip text with <a href="...">link</a>.
</template>
</STooltip>
</template>Props
Here are the list of props you may pass to the component.
:tag
Defines the HTML tag for the pill. Any value passed to this prop will used as <component :is="tag">. The default tag for the button is span.
interface Props {
tag?: string
}<STooltip tag="div" text="...">
...
</STooltip>:triggerTag
Defines the HTML tag for the trigger element. Any value passed to this prop will used as <component :is="triggerTag">. The default tag for the trigger element is span.
interface Props {
triggerTag?: string
}<STooltip triggerTag="div" text="...">
...
</STooltip>Note that setting this to something other than span is required when you want to put block elements within the trigger element.
:text
Defines the content of tooltip.
interface Props {
text?: string
}<STooltip text="Tooltip text.">
...
</STooltip>:position
Defines the position of the tooltip. Defaults to 'top'.
interface Props {
position?: 'top' | 'right' | 'bottom' | 'left'
}<STooltip text="..." position="bottom">
...
</STooltip>:display
Defines the css display property of the tooltip. Defaults to undefined.
interface Props {
display?: 'inline' | 'inline-block' | 'block'
}<STooltip text="..." display="inline-block">
...
</STooltip>:trigger
Defines the trigger event to show the tooltip. Defaults to 'hover'.
interface Props {
trigger?: 'hover' | 'focus' | 'both'
}<STooltip text="..." trigger="focus">
...
</STooltip>:timeout
Defines the timeout in milliseconds to hide the tooltip. Used only when trigger is set to 'focus' or 'both'. Defaults to undefined (the tooltip will not hide automatically).
interface Props {
timeout?: number
}<STooltip text="..." trigger="focus" timeout="1000">
...
</STooltip>:tabindex
Defines the tabindex attribute of the tooltip. Defaults to 0. Useful when nesting focusable elements like buttons within the tooltip.
interface Props {
tabindex?: number
}<STooltip text="..." tabindex="-1">
...
</STooltip>Slots
Here are the list of slots you may define within the component.
#default
The content that a user would hover over to display tooltip.
<STooltip text="Tooltip text.">
Hover this text
</STooltip>#text
The content of tooltip. Same as text prop. When text prop and this slot are defined at the same time, this slot will take precedence.
<STooltip>
<template #default>
Hover this text
</template>
<template #text>
Tooltip text with <a href="...">link</a>.
</template>
</STooltip>Styles
You may customize the styles by overriding --tooltip prefixed CSS variables.
Available styles
Override following styles to customize the component.
:root {
/**
* Set `max-width` of the tooltip. The tooltip content text
* gets wrapped when the tooltip hits this size.
*/
--tooltip-max-width: 288px;
/* Colors of tooltip. */
--tooltip-border-color: var(--c-divider-2);
--tooltip-text-color: var(--c-text-1);
--tooltip-bg-color: var(--c-bg-elv-4);
}