Buttons

ToggleButton

Pulsante con stato on/off che mostra label e icone differenti in base allo stato attivo, con v-model booleano o mappato su valori di dominio (string/number) tramite onValue/offValue.

Import

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

Esempio Base

Props

PropTipoDefaultDescrizione
modelValueToggleButtonValue (boolean | string | number)falseStato del pulsante (v-model). Confrontato con onValue/offValue
onValueToggleButtonValuetrueValore emesso quando il pulsante è attivo (on)
offValueToggleButtonValuefalseValore emesso quando il pulsante è inattivo (off)
onLabelstringlabel localizzata di defaultLabel mostrata quando il pulsante è attivo. Passa una stringa vuota per un toggle solo-icona
offLabelstringlabel localizzata di defaultLabel mostrata quando il pulsante è inattivo. Passa una stringa vuota per un toggle solo-icona
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:modelValueToggleButtonValueEmesso quando il valore cambia (per v-model)
change{ originalEvent: Event; value: ToggleButtonValue }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

Valori on/off personalizzati

Con onValue/offValue il v-model può mappare valori di dominio (es. 'S'/'N', 1/0) invece del booleano standard.

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 (passando onLabel/offLabel come stringa vuota), impostare sempre ariaLabel.

TypeScript

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