Forms

TimePicker

Input orario con popup Clock picker analogico o compatto. Supporta formato 24h, step personalizzabili e modalita durata.

Import

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

Esempio Base

Formato Valore

DirezioneFormato
modelValue in ingressoHH:MM (es. "14:30") o ''
update:modelValue in uscitaHH:MM
Visualizzato all'utenteHH:MM (input nativo <input type="time">)

Il popup mostra un orologio interattivo (variante clock) o un selettore compatto con frecce (variante compact, default).

step vs precisionstep (in secondi) agisce sull'input HTML nativo <input type="time"> e influenza solo le frecce su/giù del browser. precision (in minuti, valori 1 | 5 | 10 | 15 | 30 | 60) limita la selezione nel popup Clock. Per coerenza usa entrambi: :step="900" + :precision="15".

Props

PropTipoDefaultDescrizione
modelValuestringValore corrente in formato HH:MM (v-model)
defaultValuestring | nullValore iniziale non controllato
labelstringLabel del campo
placeholderstringTesto placeholder
helperTextstringTesto di aiuto sotto il campo
errorstringMessaggio di errore
disabledbooleanfalseDisabilita il componente
readonlybooleanfalseSola lettura
loadingbooleanfalseMostra spinner di caricamento
requiredbooleanfalseCampo obbligatorio
invalidbooleanfalseForza stato errore
size'small' | 'medium' | 'large''medium'Dimensione dell'input
severitySeverity'primary'Colore del tema
variant'outlined' | 'filled''outlined'Variante visiva
fluidbooleanfalseAdatta la larghezza al contenitore
roundedbooleanfalseBordi arrotondati
showClearbooleanfalseMostra pulsante di svuotamento
minstringOrario minimo (es. '08:00')
maxstringOrario massimo (es. '18:00')
stepstring | numberStep in secondi per l'input nativo (es. 900 = 15 minuti)
prefixIconstring''Classe icona prefix
suffixIconstringClasse icona suffix
clearIconstringconfigClasse icona clear (override config)
loadingIconstringconfigClasse icona loading (override config)
inputIdstringautoID dell'elemento input
inputClassstring | nullClasse CSS aggiuntiva per l'input
inputStylestring | Record<string, string | number> | nullStile inline per l'input
namestringNome del campo per form submission
autofocusbooleanfalseFocus automatico al mount
clockVariant'clock' | 'compact''compact'Stile del picker: analogico o a frecce
precision1 | 5 | 10 | 15 | 30 | 601Precisione minuti nel picker
separatorstring':'Separatore ore:minuti
afternoonHoursInOuterCirclebooleanfalseOre pomeridiane nel cerchio esterno
alwaysSelectHoursFirstbooleanfalseSeleziona sempre prima le ore
durationbooleanfalseModalità durata (consente ore > 23)
durationNegativebooleanfalsePermette durate negative
useDurationPlusSignbooleanfalseMostra segno + per durate positive
hideUnselectableNumbersbooleanfalseNasconde numeri non selezionabili
vibratebooleantrueVibrazione su selezione (mobile)
popupWidthnumber280Larghezza del popup Clock in pixel
showClockHeaderbooleanfalseMostra header con orario nel Clock
showClockFooterbooleantrueMostra footer con bottoni OK/Annulla
fontsClockFontsFont personalizzati per il clock analogico
i18nClockI18nTesti localizzati per i bottoni del Clock

Emits

EventoPayloadDescrizione
update:modelValuestringAggiornamento valore (v-model)
input{ originalEvent: Event; value: string }Cambio durante la digitazione
change{ originalEvent: Event; value: string }Cambio valore confermato
focusFocusEventFocus sull'input
blurFocusEventBlur dall'input
keydownKeyboardEventTasto premuto
keyupKeyboardEventTasto rilasciato
keypressKeyboardEventTasto premuto (keypress)
clearMouseEventClick sul pulsante clear

Slot

SlotDescrizione
prefixSostituisce/aggiunge contenuto a sinistra dell'input (override del prefixIcon)

Esempi

Con limiti orari

Con step e precision allineati

Lo step (in secondi) agisce sull'input HTML nativo, precision (in minuti) sul popup Clock. Per UX coerente impostali in modo equivalente — qui 900s = 15min.

Clock analogico

Confronto compact vs clock

La variante compact mostra ore/minuti con frecce su/giù (più adatta a scrivanie e form densi). La variante clock apre un quadrante analogico interattivo (più immediata su touch).

Modalità durata

Con duration=true il valore può superare le 23 ore. Combinala con durationNegative=true per durate negative (es. fusi orari, scostamenti).

Metodi Esposti

MetodoDescrizione
focus()Porta il focus sull'input
blur()Rimuove il focus dall'input
select()Seleziona il testo nell'input

Accessibilità

  • L'input usa type="time" nativo del browser per compatibilità (selettore di sistema su mobile, validazione automatica)
  • Il pulsante orologio ha tabindex="-1" (fuori dal tab order)
  • Il popup si chiude con Escape
  • Tab fuori dall'input chiude il picker e porta il focus all'elemento successivo
  • L'auto-completamento intelligente completa l'orario digitando solo le ore

TypeScript

import type { TimePickerProps, ClockFonts, ClockI18n } from '@pzeta/vue-components'

const timeValue = ref<string>('')

const customFonts: ClockFonts = {
  fontFamily: 'Inter, sans-serif',
  clockOuterCircleFontSize: 14,
  clockInnerCircleFontSize: 11,
}

const customI18n: ClockI18n = {
  okButton: 'Conferma',
  cancelButton: 'Annulla',
}