Data

EventCalendar

Calendario mensile con griglia di navigazione, gestione eventi e sidebar laterale con elenco eventi del giorno selezionato.

Import

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

Esempio Base

Props

PropTipoDefaultDescrizione
modelValueDate | nullnullData selezionata (supporta v-model)
eventsCalendarEvent[][]Array di eventi da visualizzare nel calendario
firstDayOfWeeknumberlocale (it-IT: 1)Primo giorno della settimana (0 = Domenica, 1 = Lunedi')
dayNamesShortstring[]localeNomi brevi dei giorni (sovrascrive il locale)
monthNamesstring[]localeNomi dei mesi (sovrascrive il locale)
showEventsSidebarbooleantrueMostra la sidebar con gli eventi del giorno selezionato
sidebarColor'primary' | 'success' | 'info' | 'warn' | 'danger''success'Colore tema della sidebar
disabledbooleanfalseDisabilita la selezione delle date
localestring'it-IT'Locale per la formattazione delle date

CalendarEvent

Proprieta'TipoDescrizione
idstring | numberIdentificatore univoco dell'evento (obbligatorio)
titlestringTitolo dell'evento (obbligatorio)
dateDateData dell'evento (obbligatorio)
descriptionstringDescrizione dell'evento
colorstringColore custom per l'evento

Emits

EventoPayloadDescrizione
update:modelValueDate | nullEmesso quando cambia la data selezionata
dateSelectDateEmesso quando l'utente clicca su una data
monthChange{ month: number, year: number }Emesso quando cambia il mese visualizzato
eventClickCalendarEventEmesso quando si clicca su un evento nella sidebar
createEventDateEmesso quando si clicca sul pulsante "Crea evento" nella sidebar

Esempi

Senza Sidebar

Gestione Completa degli Eventi

Prima settimana dal Lunedì

Note Comportamento

  • La griglia del calendario e' sempre di 42 celle (6 settimane x 7 giorni), includendo i giorni del mese precedente e successivo per riempire le righe
  • I giorni con eventi mostrano un indicatore visivo nella cella (has-event)
  • La sidebar mostra automaticamente gli eventi del giorno selezionato, filtrati per data
  • La navigazione anno avviene tramite i pulsanti prev/next nell'intestazione; la navigazione mese avviene cliccando sui nomi dei mesi
  • I valori di firstDayOfWeek, dayNamesShort e monthNames vengono letti dal sistema i18n di @pzeta/vue-i18n se non specificati esplicitamente
  • Il cambio di modelValue dall'esterno aggiorna automaticamente il mese visualizzato

Accessibilita'

  • Le celle del calendario sono elementi <button> nativi con attributo disabled quando il calendario e' disabilitato
  • Il giorno corrente, il giorno selezionato e i giorni con eventi ricevono classi CSS distinte (today, selected, has-event)

TypeScript

import type { EventCalendarProps, EventCalendarEmits, CalendarEvent } from '@pzeta/vue-components'

const events: CalendarEvent[] = [
  {
    id: 1,
    title: 'Evento di esempio',
    date: new Date('2024-03-15'),
    description: 'Descrizione opzionale',
    color: '#3b82f6',
  },
]