Forms

ToggleSwitch

Interruttore on/off con icone personalizzabili, supporto per trueValue/falseValue, varianti di dimensione e severità.

Import

import { ToggleSwitch } from '@pzeta/vue-components'

Quando usare ToggleSwitch vs Checkbox

ScenarioComponente
Attivare/disattivare un'impostazione con effetto immediato (notifiche, dark mode, sync)ToggleSwitch
Confermare condizioni prima del submit (accetta termini, opt-in newsletter)Checkbox con binary
Selezione multipla in un gruppoCheckbox array mode
Stato indeterminato ("seleziona tutto" parziale)Checkbox con indeterminate

ToggleSwitch è solo binario — non supporta array, value, né stato indeterminato. Per quei casi vai su Checkbox.

Esempio Base

Props

PropTipoDefaultDescrizione
modelValueboolean | nullfalseValore dello switch (v-model).
defaultValueboolean | nullValore predefinito se modelValue non è fornito.
trueValuebooleantrueValore emesso quando lo switch è acceso.
falseValuebooleanfalseValore emesso quando lo switch è spento.
showIconsbooleanfalseMostra le icone on/off all'interno dell'handle dello switch.
onIconstringDa config (toggleOn)Icona CSS visualizzata quando lo switch è acceso (richiede showIcons).
offIconstringDa config (toggleOff)Icona CSS visualizzata quando lo switch è spento (richiede showIcons).
labelstringnullEtichetta visualizzata sopra lo switch.
helperTextstringnullTesto di aiuto visualizzato accanto allo switch.
errorstringnullMessaggio di errore; attiva lo stato di errore visivo.
size'small' | 'medium' | 'large''medium'Dimensione dello switch.
severity'primary' | 'secondary' | 'success' | 'info' | 'warn' | 'danger' | 'help' | 'contrast''primary'Colore/severità visiva quando lo switch è acceso.
variant'default' | 'outlined' | 'filled''default'Variante stilistica dello switch.
disabledbooleanfalseDisabilita il componente.
loadingbooleanfalseMostra il loading spinner all'interno dell'handle.
loadingIconstringDa configIcona personalizzata per il loading.
requiredbooleanfalseMarca il campo come obbligatorio.
namestringnullAttributo name del campo (per form HTML).
inputIdstringnullID dell'input nascosto (per associazione a label).
inputClassstring | objectClasse CSS aggiuntiva sull'input.
inputStylestring | objectStyle inline sull'input.
ariaLabelstringLabel accessibile per screen reader.
ariaLabelledbystringRiferimento a elemento label esterno.
tabindexnumberIndice tab per navigazione da tastiera.
autofocusbooleanFocus automatico al mount.

Emits

EventoPayloadDescrizione
update:modelValuebooleanEmesso al cambio valore (per v-model).
change{ originalEvent: Event; value: boolean }Emesso al cambio con l'evento originale e il nuovo valore.
focusFocusEventEmesso quando il componente riceve il focus.
blurFocusEventEmesso quando il componente perde il focus.
keydownKeyboardEventEmesso ad ogni pressione di tasto (Spazio/Enter attivano il toggle).

Slot

SlotScopeDescrizione
defaultContenuto del label. Sovrascrive il prop label se entrambi presenti.
handle{ checked: boolean }Contenuto personalizzato all'interno dell'handle dello switch. Sostituisce loading spinner e icone.

Esempi

Con Icone

Con Helper Text

Severità

Dimensioni

Handle Personalizzato tramite Slot

Valori personalizzati (trueValue/falseValue)

Utile per contratti API che usano enumerati invece di booleani.

Stato Disabilitato e Loading

Metodi Esposti

MetodoDescrizione
focus()Porta il focus sullo switch (button)

Accessibilità

  • Lo switch è implementato come <button type="button"> con navigazione da tastiera nativa.
  • Spazio e Invio attivano il toggle da tastiera.
  • L'input <input type="checkbox"> nascosto (sr-only) garantisce compatibilità con form HTML e screen reader.
  • inputId associa l'input a una label esterna.
  • Il prop required aggiunge * visivo per l'utente.

TypeScript

import type { ToggleSwitchProps, ToggleSwitchEmits } from '@pzeta/vue-components'