Forms

DateTimePicker

Input combinato data e ora con popup che integra un Calendar e un Clock compatto. Il valore e sempre in formato ISO 8601 YYYY-MM-DDTHH:MM.

Import

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

Esempio Base

Il valore e una stringa in formato ISO 8601: YYYY-MM-DDTHH:MM (es. "2025-12-31T14:30"). L'input visualizza il formato localizzato DD/MM/YYYY HH:MM. Il popup contiene un Calendar nella parte superiore e un Clock compatto in basso. La selezione viene applicata solo al click su Conferma.

Formato Valore

DirezioneFormato
modelValue in ingressoYYYY-MM-DDTHH:MM o undefined/null
update:modelValue in uscitaYYYY-MM-DDTHH:MM o null
Visualizzato all'utenteDD/MM/YYYY HH:MM

Props

PropTipoDefaultDescrizione
modelValuestringValore corrente in formato ISO 8601 (v-model)
defaultValuestring | nullValore iniziale non controllato
labelstringLabel del campo
placeholderstringlocaleTesto placeholder (default da i18n)
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
showIconbooleantrueMostra icona calendario
iconDisplay'button' | 'input''button'Posizione icona: suffix button o prefix input
manualInputbooleantruePermette la digitazione manuale
minstringValore minimo in formato ISO
maxstringValore massimo in formato ISO
prefixIconstringClasse icona prefix
suffixIconstringClasse icona suffix
clearIconstringconfigClasse icona clear (override config)
loadingIconstringconfigClasse icona loading (override config)
inputIdstringautoID dell'elemento input
inputClassstring | nullClasse CSS aggiuntiva
inputStylestring | Record<string, string | number> | nullStile inline per l'input
namestringNome del campo per form submission
autofocusbooleanfalseFocus automatico al mount
minDateDate | nullData minima selezionabile
maxDateDate | nullData massima selezionabile
disabledDatesDate[] | nullDate disabilitate
disabledDaysnumber[] | nullGiorni della settimana disabilitati (0=Dom, 6=Sab)
showQuickOptionsbooleanfalseMostra opzioni rapide nel calendario
quickOptionsCalendarQuickOption[]Opzioni rapide personalizzate
firstDayOfWeeknumberlocalePrimo giorno settimana (0=Dom, 1=Lun)
showWeekNumbersbooleanfalseMostra numeri di settimana
minTimestringOra minima selezionabile nel Clock (es. '08:00')
maxTimestringOra massima selezionabile nel Clock (es. '20:00')
precision1 | 5 | 10 | 15 | 30 | 605Precisione minuti nel Clock
separatorstring':'Separatore ore:minuti nel Clock
clockI18nClockI18nTesti localizzati per il Clock
showClockHeaderbooleanfalseMostra header con orario nel Clock

Emits

EventoPayloadDescrizione
update:modelValuestring | nullAggiornamento valore (v-model) — emesso alla conferma
input{ originalEvent: Event; value: string | null }Cambio durante digitazione
change{ originalEvent: Event; value: string | null }Cambio valore confermato
focusFocusEventFocus sull'input
blurFocusEventBlur dall'input
keydownKeyboardEventTasto premuto
keyupKeyboardEventTasto rilasciato
keypressKeyboardEventTasto premuto (keypress)
clearMouseEventClick sul pulsante clear
dateSelectDateData selezionata nel calendario (pre-conferma)
timeChangestringOra cambiata nel Clock (pre-conferma)
monthChange{ month: number; year: number }Cambio mese nella navigazione
beforeShowPrima dell'apertura popup
showPopup aperto
beforeHidePrima della chiusura popup
hidePopup chiuso
confirmstring | nullConferma selezione — valore finale in ISO 8601
cancelAnnullamento — valori ripristinati

Esempi

Con limiti data/ora

<DateTimePicker
  v-model="meetingDateTime"
  label="Meeting"
  :min="new Date().toISOString().slice(0, 16)"
  min-time="08:00"
  max-time="18:00"
/>

Con precisione minuti personalizzata

Con pulsante clear

<DateTimePicker
  v-model="dateTimeValue"
  label="Data e Ora"
  show-clear
  @confirm="handleConfirm"
  @cancel="handleCancel"
/>

I pulsanti Conferma/Annulla sono sempre visibili nel popup DateTimePicker. Il valore viene aggiornato solo alla conferma. Al cancel, i valori precedenti vengono ripristinati.

Metodi Esposti

MetodoDescrizione
focus()Porta il focus sull'input
blur()Rimuove il focus dall'input
select()Seleziona il testo nell'input
open()Apre il popup
close()Chiude il popup
toggle()Alterna apertura/chiusura del popup

Accessibilita

  • Input associato alla label tramite id auto-generato o inputId
  • Il popup si chiude con Escape
  • Si apre con Enter quando l'input ha il focus

TypeScript

import type { DateTimePickerProps, CalendarQuickOption } from '@pzeta/vue-components'

// Formato ISO 8601: YYYY-MM-DDTHH:MM
const dateTimeValue = ref<string>('')

function handleConfirm(value: string | null) {
  if (value) {
    // value e gia in formato YYYY-MM-DDTHH:MM
    console.log('Confermato:', value)
  }
}