Data

Knob

Controllo rotante (dial) per la selezione di valori numerici tramite drag del mouse, touch o tastiera, con arco SVG personalizzabile per colori e spessore.

Import

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

Esempio Base

Props

PropTipoDefaultDescrizione
modelValuenumber0Valore corrente (v-model)
defaultValuenumber | nullnullValore iniziale quando modelValue non è fornito
namestring | nullnullAttributo name per form
sizenumber100Dimensione in pixel del componente SVG (larghezza = altezza)
strokeWidthnumber14Spessore in pixel dell'arco SVG
showValuebooleantrueMostra il valore numerico al centro del knob
valueTemplatestring | ((value: number) => string)'{value}'Template stringa con {value} o funzione per formattare il valore visualizzato
minnumber0Valore minimo
maxnumber100Valore massimo
stepnumber1Incremento per ogni step
valueColorstringColore CSS dell'arco valore (default: var CSS --knob-value-color, fallback #3b82f6)
rangeColorstringColore CSS dell'arco range sfondo (default: var CSS --knob-range-color, fallback #e5e7eb)
textColorstringColore CSS del testo centrale
invalidbooleanfalseIndica stato di validazione errato
disabledbooleanfalseDisabilita il componente
readonlybooleanfalseRende il componente in sola lettura (nessuna modifica)
loadingbooleanfalseMostra indicatore di caricamento
loadingIconstringClasse icona personalizzata per lo stato loading
tabindexnumber0Tabindex per la navigazione da tastiera
ariaLabelstring | nullnullEtichetta accessibilità aria-label
ariaLabelledbystring | nullnullID elemento che etichetta il knob

Emits

EventoPayloadDescrizione
update:modelValuenumberAggiornamento del valore per v-model
value-changenumberEmesso ad ogni cambio di valore
changenumberEmesso ad ogni cambio di valore (alias di value-change)

Slot

SlotScopeDescrizione
labelContenuto aggiuntivo posizionato sotto il knob SVG

Esempi

Min, Max e Step personalizzati

Colori personalizzati

Template valore

Dimensioni personalizzate

Stati

Accessibilità

  • Renderizzato con role="slider", aria-valuemin, aria-valuemax, aria-valuenow.
  • Navigabile da tastiera: ArrowUp/ArrowRight incrementa di uno step, ArrowDown/ArrowLeft decrementa, Home va al minimo, End va al massimo, PageUp/PageDown incrementa/decrementa di 10 step.
  • Supporto touch nativo per dispositivi mobili.
  • disabled e loading impostano tabindex="-1", aria-disabled e aria-busy.

TypeScript

import type { KnobProps } from '@pzeta/vue-components'