Layout

Tabs

Navigazione a schede composta da cinque sub-componenti (Tabs, TabList, Tab, TabPanels, TabPanel). Supporta varianti visive, orientamento, badge, scroll e modalità closable.

Import

import { Tabs, TabList, Tab, TabPanels, TabPanel } from '@pzeta/vue-components'

Esempio Base


Tabs (root)

Props

PropTipoDefaultDescrizione
modelValuestring | number''Tab attiva (v-model)
valuestring | number''Alias di modelValue (compatibilità PrimeVue 4.0)
closablebooleanfalseAbilita il pulsante di chiusura su tutti i tab
scrollablebooleanfalseLista tab scorrevole in overflow orizzontale
orientation'horizontal' | 'vertical''horizontal'Orientamento della navigazione
variant'default' | 'pills' | 'underline' | 'cards''default'Variante visiva
size'small' | 'medium' | 'large''medium'Dimensione dei tab
severitySeverityundefinedColore/severità dell'indicatore attivo
roundedbooleanfalseBordi arrotondati sui tab
closeIconstring(da config)Icona personalizzata per la chiusura
disabledbooleanfalseDisabilita tutti i tab

Emits

EventoPayloadDescrizione
update:modelValuestring | numberAggiornamento del v-model
update:valuestring | numberAlias per compatibilità
tabChange{ originalEvent: Event; index: number; value: string | number }Emesso al cambio di tab

TabList

Container per i pulsanti Tab con indicatore animato sliding.

Props

PropTipoDefaultDescrizione
variant'default' | 'pills' | 'underlined''default'Variante (eredita da Tabs se disponibile)
orientation'horizontal' | 'vertical''horizontal'Orientamento (eredita da Tabs se disponibile)

Slot

SlotScopeDescrizione
defaultElementi Tab

Tab

Singolo pulsante di navigazione.

Props

PropTipoDefaultDescrizione
valuestring | numberIdentificatore univoco del tab
headerstringTesto del tab (fallback se nessun slot default)
iconstring | nullundefinedIcona da mostrare prima del testo
badgestring | number | nullundefinedBadge numerico/testuale
badgeClassstring''Classe CSS del badge
disabledbooleanfalseDisabilita il tab
closablebooleanfalseMostra il pulsante di chiusura
asstringundefinedTag HTML da renderizzare
asChildbooleanfalseModalità headless (espone slot con props/eventi)

Emits

EventoPayloadDescrizione
clickMouseEventClick sul tab
closeEventClick sul pulsante di chiusura

Slot (modalità asChild)

SlotScopeDescrizione
default{ class, active, disabled, a11yAttrs, onClick }Slot headless per rendering personalizzato

TabPanels

Container per i pannelli di contenuto.

Props

PropTipoDefaultDescrizione
variant'default' | 'pills' | 'underlined''default'Variante visiva (eredita da Tabs)
orientation'horizontal' | 'vertical''horizontal'Orientamento (eredita da Tabs)

TabPanel

Contenuto di un singolo tab.

Props

PropTipoDefaultDescrizione
valuestring | numberValore corrispondente al Tab da attivare
headerstring''Titolo (usato in modalità headless)
disabledbooleanfalseDisabilita il pannello
asstringundefinedTag HTML del wrapper
asChildbooleanfalseModalità headless

Slot

SlotScopeDescrizione
defaultContenuto del pannello

Esempi

Tab con icone e badge

Varianti visive

Orientamento verticale

Accessibilità

  • TabList renderizza role="tablist" con ul
  • Ogni Tab ha role="tab", aria-selected e tabindex gestito automaticamente
  • Ogni TabPanel ha role="tabpanel" e aria-hidden
  • I tab disabilitati hanno tabindex="-1" e aria-disabled

TypeScript

import type {
  TabsProps,
  TabsEmits,
  TabProps,
  TabEmits,
  TabPanelProps,
  TabsVariant,
  TabsOrientation,
} from '@pzeta/vue-components'