Buttons

ToggleButton

Pulsante con stato on/off che mostra label e icone differenti in base allo stato attivo, con supporto v-model booleano.

Import

import { ToggleButton } from '@pzeta/vue-components'
// oppure con plugin selettivo:
import { ButtonsPlugin } from '@pzeta/vue-components'
app.use(ButtonsPlugin)

Esempio Base

Props

PropTipoDefaultDescrizione
modelValuebooleanfalseStato del pulsante (v-model)
onLabelstring'On'Label mostrata quando il pulsante è attivo
offLabelstring'Off'Label mostrata quando il pulsante è inattivo
onIconstringundefinedClasse CSS dell'icona mostrata quando attivo
offIconstringundefinedClasse CSS dell'icona mostrata quando inattivo
severity'primary' | 'secondary' | 'success' | 'info' | 'warn' | 'danger' | 'contrast' | 'help''primary'Severità visiva applicata allo stato attivo
size'small' | 'medium' | 'large''medium'Dimensione del pulsante
disabledbooleanfalseDisabilita il pulsante impedendo il toggle
invalidbooleanfalseIndica uno stato di validazione non valido
autofocusbooleanfalseFocus automatico al mount
tabindexnumber | string0Ordine di tabulazione per navigazione tastiera
ariaLabelstringundefinedLabel per screen reader
ariaLabelledbystringundefinedID dell'elemento che fornisce il label
classstring''Classe CSS aggiuntiva per styling personalizzato

Emits

EventoPayloadDescrizione
update:modelValuebooleanEmesso quando il valore cambia (per v-model)
change{ originalEvent: Event; value: boolean }Emesso al cambio di stato con evento originale
focusFocusEventEmesso quando il pulsante riceve il focus
blurFocusEventEmesso quando il pulsante perde il focus

Slot

SlotScopeDescrizione
default{ checked: boolean }Contenuto personalizzato in base allo stato
icon{ checked: boolean }Icona personalizzata in base allo stato

Esempi

Con label e icone dinamiche

Solo icone (senza label)

Severity

Dimensioni

Stato disabilitato

Con slot personalizzato

Accessibilità

  • Il componente usa un elemento <button> nativo con aria-pressed impostato automaticamente in base a modelValue.
  • ariaLabel e ariaLabelledby permettono di fornire un contesto descrittivo per screen reader.
  • Il tabindex configurabile permette di controllare l'ordine di navigazione.
  • Per pulsanti solo icona (senza onLabel/offLabel), impostare sempre ariaLabel.

TypeScript

import type { ToggleButtonProps, ToggleButtonEmits } from '@pzeta/vue-components'