Ir al contenido

Referencia de Props

El componente <Calendar> acepta todos los campos de CalendarConfig, mas className.

PropTipoDefaultDescripcion
eventsCalendarEvent[]requeridoEventos a mostrar
defaultViewCalendarView"month"Vista inicial (no controlado)
defaultDateDateStringhoyFecha inicial (no controlado)
viewCalendarViewVista controlada
dateDateStringFecha controlada
localePartial<CalendarLocale>{ locale: "en-US", weekStartsOn: 0 }Configuracion de locale
slotsPartial<CalendarSlots>Sobreescrituras de componentes
enableDnDbooleanfalseHabilitar drag and drop
dayStartHournumber0Hora de inicio de la grilla (0-23)
dayEndHournumber24Hora de fin de la grilla (0-24)
snapDurationnumber15Incremento de snap en minutos para arrastre, redimensionado y seleccion
hiddenDaysnumber[][]Dias de la semana a ocultar (0=Domingo … 6=Sabado)
validRange{ start?: DateString; end?: DateString }Restringe el rango navegable; los botones anterior/siguiente se deshabilitan en los limites
highlightedDatesDateString[][]Fechas a resaltar visualmente en todas las vistas
showWeekNumbersbooleanfalseMuestra numeros de semana ISO en la vista de mes
longPressDelaynumber0Retardo de presion larga en ms para arrastre tactil (evita interferir con el scroll)
slotClickTimestring"09:00:00"Tiempo por defecto al hacer click en un dia vacio en vista de mes
resourcesResource[][]Recursos para las vistas de recursos (las vistas dia/semana ganan una columna por recurso)
flexibleSlotTimeLimitsbooleanfalseExpandir automaticamente la grilla cuando los eventos caen fuera del rango horario
customButtonsCustomButton[][]Botones personalizados inyectados en el toolbar
displayTimeZonestringzona del browserZona IANA en la que se renderizan los tiempos. Ver Zonas horarias.
classNamestringClases CSS adicionales
CallbackFirmaDescripcion
onEventClick(event: CalendarEvent) => voidSe dispara al hacer click en un evento
onSlotClick(dateTime: DateTimeString, extra?: { resourceId?: string }) => voidSe dispara al hacer click en un slot vacio. extra.resourceId presente en vistas de recursos.
onEventDrop(event: CalendarEvent, newStart: DateTimeString, newEnd: DateTimeString, extra?: EventDropExtra) => voidSe dispara al soltar un evento. extra.resourceId presente en vistas de recursos.
onEventResize(event: CalendarEvent, newStart: DateTimeString, newEnd: DateTimeString) => voidSe dispara al redimensionar un evento (vista semana/dia)
onSlotSelect(start: DateTimeString, end: DateTimeString, extra?: { resourceId?: string }) => voidSe dispara al seleccionar un rango de tiempo. extra.resourceId presente en vistas de recursos.
onDateChange(date: DateString) => voidSe dispara cuando la fecha visible cambia (navegacion)
onViewChange(view: CalendarView) => voidSe dispara cuando la vista cambia
dragConstraint(event, newStart, newEnd) => booleanDevuelve false para prevenir un drop
resizeConstraint(event, newStart, newEnd) => booleanDevuelve false para prevenir un resize
selectConstraint(start, end) => booleanDevuelve false para prevenir una seleccion
interface CalendarEvent {
id: string;
title: string;
start: DateTimeString; // "2026-03-13T09:00:00"
end: DateTimeString; // "2026-03-13T10:00:00"
allDay?: boolean;
color?: string;
timeZone?: string; // Zona IANA (TZID de RFC 5545). Ver Zonas horarias.
recurrence?: RecurrenceRule; // Regla de evento recurrente
exDates?: DateString[]; // Fechas a excluir de la recurrencia
recurringEventId?: string; // Presente en instancias expandidas (apunta al padre)
originalDate?: DateString; // Fecha original de esta instancia recurrente
[key: string]: unknown; // Metadatos personalizados
}

Consulta Recurrencia para documentacion completa.

interface RecurrenceRule {
freq: "daily" | "weekly" | "monthly" | "yearly";
interval?: number;
byDay?: RecurrenceDay[]; // "MO" | "TU" | "WE" | "TH" | "FR" | "SA" | "SU"
byMonthDay?: number[];
bySetPos?: number[];
count?: number;
until?: string;
}
type CalendarView = "month" | "week" | "day" | "agenda" | "year";
interface CalendarLocale {
locale: string; // BCP 47: "en-US", "es-ES", "ja-JP"
weekStartsOn: 0 | 1 | 2 | 3 | 4 | 5 | 6;
labels?: Partial<CalendarLabels>;
}
interface CalendarLabels {
today: string;
month: string;
week: string;
day: string;
agenda: string;
allDay: string;
noEvents: string;
more: (count: number) => string;
}
type DateString = string; // "2026-03-13" (YYYY-MM-DD)
type DateTimeString = string; // "2026-03-13T09:00:00" (YYYY-MM-DDTHH:mm:ss)

Consulta la pagina de Slots API para los tipos de props detallados.

interface CalendarSlots {
toolbar?: ComponentType<ToolbarSlotProps>;
event?: ComponentType<EventSlotProps>;
dayCell?: ComponentType<DayCellSlotProps>;
timeEvent?: ComponentType<TimeEventSlotProps>;
allDayEvent?: ComponentType<AllDayEventSlotProps>;
popover?: ComponentType<PopoverSlotProps>;
agendaEvent?: ComponentType<AgendaEventSlotProps>;
resourceHeader?: ComponentType<ResourceHeaderSlotProps>;
}