Feedback

Tooltip

Testo contestuale che appare al hover/focus su un elemento. Disponibile come componente Vue e come direttiva v-tooltip per uso diretto su qualsiasi elemento HTML.

Import

// Componente
import { Tooltip } from '@pzeta/vue-components'

// Direttiva
import { vTooltip } from '@pzeta/vue-components'

// Oppure tramite plugin (registra entrambi):
import { FeedbackPlugin } from '@pzeta/vue-components'
app.use(FeedbackPlugin)

Utilizzo come componente

Il componente <Tooltip> wrappa l'elemento target nello slot default e mostra il tooltip al suo interno.

Utilizzo come direttiva v-tooltip

La direttiva v-tooltip si applica direttamente a qualsiasi elemento HTML senza wrapper.

Props del componente Tooltip

PropTipoDefaultDescrizione
contentstringTesto del tooltip
position'top' | 'bottom' | 'left' | 'right''top'Posizione rispetto all'elemento target
trigger'hover' | 'focus' | 'click''hover'Evento che attiva il tooltip
disabledbooleanfalseDisabilita il tooltip
idstringID personalizzato (default: generato automaticamente)
classstringClasse CSS aggiuntiva per il box del tooltip
showDelaynumber0Ritardo in ms prima di mostrare il tooltip
hideDelaynumber0Ritardo in ms prima di nascondere il tooltip
autoHidebooleantrueNasconde automaticamente al mouse leave
escapebooleantrueSe true fa escape dell'HTML; se false interpreta HTML (sanitizzato)
fitContentbooleantrueAdatta la larghezza al contenuto
zIndexnumber1100Z-index del tooltip

Emits del componente Tooltip

EventoPayloadDescrizione
showEmesso quando il tooltip diventa visibile
hideEmesso quando il tooltip viene nascosto

Slot del componente Tooltip

SlotScopeDescrizione
defaultElemento target su cui il tooltip è ancorato
contentContenuto custom del tooltip (sostituisce la prop content)

Opzioni della direttiva v-tooltip

OpzioneTipoDefaultDescrizione
valuestringTesto da mostrare
position'top' | 'bottom' | 'left' | 'right''top'Posizione del tooltip
showDelaynumber0Ritardo in ms prima di mostrare
hideDelaynumber0Ritardo in ms prima di nascondere
disabledbooleanfalseDisabilita il tooltip
escapebooleantrueEscape HTML nel contenuto
tooltipClassstringClassi CSS aggiuntive
zIndexnumber9999Z-index del tooltip

Esempi

Componente: posizioni

Componente: trigger click

Componente: contenuto HTML via slot

Componente: con delay

Direttiva: configurazione avanzata

Direttiva: disabilitazione condizionale

Registrazione manuale della direttiva

// main.ts
import { createApp } from 'vue'
import { vTooltip } from '@pzeta/vue-components'
import App from './App.vue'

const app = createApp(App)
app.directive('tooltip', vTooltip)
app.mount('#app')

Accessibilità

  • Il componente usa aria-describedby sull'elemento target con l'ID del tooltip.
  • Il tooltip ha role="tooltip".
  • La direttiva aggiunge role="tooltip" al nodo DOM creato.
  • Il tooltip si chiude con il tasto Escape.
  • Si attiva anche con focus per supporto navigazione da tastiera.

Metodi esposti (componente)

const tooltipRef = ref()

// Controllo programmatico
tooltipRef.value.show()    // Mostra
tooltipRef.value.hide()    // Nasconde
tooltipRef.value.toggle()  // Toggle

TypeScript

import type { TooltipProps, TooltipEmits, TooltipSlots } from '@pzeta/vue-components'
import type { TooltipPosition, TooltipTrigger } from '@pzeta/vue-components'
import { vTooltip } from '@pzeta/vue-components'

// TooltipPosition = 'top' | 'bottom' | 'left' | 'right'
// TooltipTrigger  = 'hover' | 'focus' | 'click'