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

Il valore e una stringa in formato HH:MM (es. "14:30"). Il popup mostra un orologio interattivo (variante clock) o un selettore compatto con frecce (variante compact, default).

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
durationbooleanfalseModalita 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

Esempi

Con limiti orari

Con step (ogni 15 minuti)

Lo step e in secondi e agisce sull'input nativo <input type="time">. Per limitare la selezione nel picker Clock, usare la prop precision.

Clock analogico

Modalita durata

Metodi Esposti

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

Accessibilita

  • L'input usa type="time" nativo del browser per compatibilita
  • 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',
}