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 precision — step (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
modelValuestring—Valore corrente in formato HH:MM (v-model)
defaultValuestring | null—Valore iniziale non controllato
labelstring—Label del campo
placeholderstring—Testo placeholder
helperTextstring—Testo di aiuto sotto il campo
errorstring—Messaggio di errore
reserveMessageSpacebooleantrueRiserva lo spazio del messaggio sotto il campo; false nei layout compatti (dalla 1.23.0)
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
minstring—Orario minimo (es. '08:00')
maxstring—Orario massimo (es. '18:00')
stepstring | number—Step in secondi per l'input nativo (es. 900 = 15 minuti)
prefixIconstring''Classe icona prefix
suffixIconstring—Classe icona suffix
clearIconstringconfigClasse icona clear (override config)
loadingIconstringconfigClasse icona loading (override config)
inputIdstringautoID dell'elemento input
inputClassstring | null—Classe CSS aggiuntiva per l'input
inputStylestring | Record<string, string | number> | null—Stile inline per l'input
namestring—Nome 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
fontsClockFonts—Font personalizzati per il clock analogico
i18nClockI18n—Testi 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; in un Dialog chiude solo il popup, anche col focus sul body (useEscapeWhileOpen, dalla 1.24.0)
  • Tab fuori dall'input chiude il picker e porta il focus all'elemento successivo
  • Dentro il quadrante Tab gira fra i suoi controlli senza arrivare al focus trap di un Dialog contenitore (dalla 1.24.0)
  • 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',
}