Componente Calendar para Angular | ng-hub-ui-calendar

Componente calendario para Angular con vistas de eventos, drag and drop, plantillas, internacionalización y variables CSS para interfaces de scheduling.

Referencia API

Aquí tienes el contrato completo de calendar: todo lo que puedes enlazar, escuchar, proyectar y personalizar, reunido en un solo sitio. Enlaza lo que necesites y dale el estilo que quieras — es standalone y reactivo con signals.

Inputs

Ajusta calendar a tu gusto con 17 inputs. Se enlazan como cualquier @Input de Angular.

NombreTipoPor defectoDescripción
variantstringundefinedAcento semántico del día de hoy y del seleccionado, del botón de vista activo y de las etiquetas de evento: primary, secondary, success, danger, warning, info, neutral, light, dark, o cualquier nombre propio leído como --hub-sys-color-<variant>.
eventsCalendarEvent<T>[][]Array de eventos a mostrar en el calendario
view'month' | 'week' | 'day' | 'year''month'Tipo de vista actual (binding bidireccional con viewChange)
selectedDateDatenew Date()Fecha actualmente enfocada (binding bidireccional con selectedDateChange)
configCalendarConfig{}Opciones de configuración para el calendario
eventClassstring | ((event: CalendarEvent) => string)undefinedClase(s) CSS a aplicar a los eventos, puede ser estática o dinámica
weekStartsOn0 | 1 | 2 | 3 | 4 | 5 | 6 | undefinedundefinedDía en que empieza la semana (0 = domingo, 1 = lunes, etc.). Manda sobre config.weekStartsOn cuando se pasa; si se deja sin valor decide la configuración, cuyo valor por defecto es 0.
localestring'en'Código de idioma del diccionario integrado. Inglés y español vienen con la biblioteca; cualquier otro código recurre al inglés.
heightnumber | stringundefinedAlto del calendario, que además decide si se desplaza o crece. Un número se lee como píxeles; vale cualquier longitud CSS, y `auto` crece con el contenido en vez de desplazarse. Sin valor, el calendario ocupa su contenedor. Es preferible a una regla de estilos: un selector `hub-calendar { … }` con ámbito gana a la disposición del propio componente y puede romperla.
displayFormatIntl.DateTimeFormatOptions | string | ((date: Date) => string)undefinedCómo escribe el título de la cabecera el mes y el año. Admite opciones de Intl, un patrón de fecha de Angular como `MMMM yyyy` o una función. Sin valor se usa la composición interna; la vista de año, cuyo título nombra un año, se queda como está.
timeDisplayFormatIntl.DateTimeFormatOptions{ hour: 'numeric', minute: '2-digit' }Opciones de Intl para la hora de los tooltips del chip y del día, compuestas con `hourFormat`. Por defecto, la hora y sus minutos.
eventTimeFormatIntl.DateTimeFormatOptions | string | ((date: Date) => string)undefinedLa hora que imprime un chip de la vista de mes delante de un evento con hora. Sin valor conserva la abreviatura que se le dio a una celda estrecha: los minutos se omiten cuando son cero.
slotLabelFormatIntl.DateTimeFormatOptions | string | ((date: Date) => string)undefinedLas etiquetas de la regla de horas de las vistas de semana y día. Sin valor se quedan en el `9:00` de siempre; basta con indicar `hourFormat` para convertirlas en un reloj de verdad.
hourFormat'12' | '24'undefinedFuerza un reloj de 12 o de 24 horas en todo lo que el calendario escriba. Sin valor decide el idioma, que es lo mismo que significa la opción en `hub-datepicker`.
weekdayFormat'short' | 'narrow' | 'long''short' ('narrow' when compact)Ancho de las cabeceras de los días de la semana. `short` y `long` leen el diccionario del propio calendario, así que un diccionario de la aplicación llega hasta ellas; `narrow` no tiene entrada allí y se deriva del idioma.
monthFormat'short' | 'long''long'Cómo se escribe el mes en el título de la cabecera y en las tarjetas de la vista de año. `long` por defecto, que es lo que el calendario ha impreso siempre.
compactbooleanfalseDibuja el calendario como un mes en miniatura: se va la barra, se van las alturas mínimas de día y semana, las cabeceras pasan a las iniciales que dicte el idioma y el día con eventos lleva un punto en vez de etiquetas. El rótulo del mes se queda. Se transforma con `booleanAttribute`, así que el atributo `compact` a secas lo enciende.

Outputs

Reacciona a lo que hace calendar: 6 eventos a los que enganchar tu lógica.

NombreTipoDescripción
eventClickCalendarEvent<T>Se emite cuando se hace clic en un evento
dayClickCalendarDay<T>Se emite cuando se hace clic en una celda de día
eventDrop{ event: CalendarEvent<T>; newDate: Date; previousDate: Date }Se emite cuando se suelta un evento en un día diferente
viewChangeCalendarViewTypeSe emite cuando cambia el tipo de vista
selectedDateChangeDateSe emite cuando cambia la fecha seleccionada; admite enlace bidireccional mediante [(selectedDate)]
dateChangeDateSe emite cuando la navegación cambia la fecha mostrada

Templates

Hazlo tuyo — 2 plantillas para proyectar tu propio marcado.

NombreDescripciónEjemplo
eventTptPlantilla para renderizar eventos individuales. Contexto: { event: CalendarEvent }<ng-template eventTpt let-event="event">{{ event.title }}</ng-template>
dayCellTptPlantilla para personalizar el renderizado de las celdas de día. Contexto: { day: CalendarDay }<ng-template dayCellTpt let-day="day">{{ day.date | date }}</ng-template>