Skip to content

Navigation Menu

Sign in
Sign up

Latest commit

History

39 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

v-tooltip

npm npm vue2

Easy tooltips with Tooltip.js

Demo

JSFiddle

Installation

Npm

npm install --save v-tooltip

Install the plugin into Vue:

import Vue from 'vue'
import VTooltip from 'v-tooltip'
Vue.use(VTooltip)

Or use the directive directly:

import Vue from 'vue'
import { VTooltip } from 'v-tooltip'
Vue.directive('tooltip', VTooltip)

Browser

Include popper.js & tooltip.js with v-tooltip in the page.

Install the plugin into Vue:

Vue.use(VTooltip)

Or use the directive directly:

Vue.directive('tooltip', VTooltip.VTooltip)

Usage

In the template, use the v-tooltip directive:

<button v-tooltip="'You have ' + count + ' new messages.'">

Of course, you can use a reactive property:

<button v-tooltip="tooltipContent">

You can specify the tooltip position as a modifier:

<button v-tooltip.bottom-left="'You have ' + count + ' new messages.'">

The available positions are:

  • 'top'
  • 'top-start'
  • 'top-end'
  • 'right'
  • 'right-start'
  • 'right-end'
  • 'bottom'
  • 'bottom-start'
  • 'bottom-end'
  • 'left'
  • 'left-start'
  • 'left-end'

Object notation

You can use an object instead of a simple string:

<button v-tooltip="{ content: 'You have ' + count + ' new messages.' }">

Dynamic CSS classes

You can set the tooltip css classes dynamically with the object notation:

<button v-tooltip="{ content: 'You have ' + count + ' new messages.', classes: ['a', 'b'] }">

This will replace the default CSS classe with 'a b' on the tooltip element.

You can also use the standard class notation:

<button v-tooltip="{ content: 'You have ' + count + ' new messages.', classes: 'a b' }">

Or a reactive property:

<button v-tooltip="{ content: 'You have ' + count + ' new messages.', classes: tooltipClasses }">

Other options

<button v-tooltip="options">
  • content - HTML text to be displayed in the tooltip
  • classes - (see above)
  • delay - Show/Hide delay (ms)
  • placement - (see above)
  • trigger - Events triggering the tooltip separated with spaces: 'hover', 'click', 'focus' or 'manual' ('manual' can't be combined with any other event)
  • offset - Offset of the position (px)
  • container - Selector: Container where the tooltip will be appended (e.g. 'body')

Global options

The default global options are:

{
 // Default tooltip placement relative to target element
 defaultPlacement: 'top',
 // Default CSS classes applied to the tooltip element
 defaultClass: 'vue-tooltip-theme',
 // Default HTML template of the tooltip element
 // It must include `tooltip` & `tooltip-inner` CSS classes
 defaultTemplate: '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',
 // Delay (ms)
 defaultDelay: 0,
 // Default events that trigger the tooltip
 defaultTrigger: 'hover focus',
 // Default position offset (px)
 defaultOffset: 0,
 // Default container where the tooltip will be appended
 defaultContainer: 'body',
}

You can change the options during install with the arguments:

Vue.use(VTooltip, options)

Or directly on the directive definition:

// Set custom CSS class
VTooltip.options.defaultClass = 'my-tooltip'

Disabling tooltips

On mobile, you can disable the tooltips with the VTooltip.enabled property:

VTooltip.enabled = window.innerWidth > 768

Example Style

Sass / Less

.tooltip {
 display: block !important;
 padding: 4px;
 z-index: 10000;
 .tooltip-inner {
 background: black;
 color: white;
 border-radius: 16px;
 padding: 5px 10px 4px;
 }
 .tooltip-arrow{
 display: none;
 }
 &[aria-hidden='true'] {
 visibility: hidden;
 opacity: 0;
 transition: opacity .15s, visibility .15s;
 }
 &[aria-hidden='false'] {
 visibility: visible;
 opacity: 1;
 transition: opacity .15s;
 }
}

CSS

.tooltip {
 display: block !important;
 padding: 4px;
 z-index: 10000;
}
.tooltip .tooltip-inner {
 background: black;
 color: white;
 border-radius: 16px;
 padding: 5px 10px 4px;
}
.tooltip tooltip-arrow{
 display: none;
}
.tooltip[aria-hidden='true'] {
 visibility: hidden;
 opacity: 0;
 transition: opacity .15s, visibility .15s;
}
.tooltip[aria-hidden='false'] {
 visibility: visible;
 opacity: 1;
 transition: opacity .15s;
}

LICENCE ISC - Created by Guillaume CHAU (@Akryum)

About

Easy tooltips with Vue 2.x

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

AltStyle によって変換されたページ (->オリジナル) /