Calendar
Componente de calendario con soporte para eventos, tooltips y navegación intuitiva
Uso
Ejemplo de Implementación Básica
A continuación, se muestra cómo puedes importar y utilizar el componente Calendar en una página o componente de Vue 3.
Ejemplo Integrado con Formulario
Props
| Prop | Tipo | Descripción | Requerido | Valor por defecto |
|---|---|---|---|---|
| modelValue | Date | Fecha actualmente seleccionada | No | - |
| locale | string | Código de idioma para la localización del calendario | No | 'en' |
| class | string | Clases CSS adicionales para el componente | No | - |
| events | CalendarEvent | Array de eventos a mostrar en el calendario | No | [] |
Tipo CalendarEvent
Eventos Emitidos
| Evento | Descripción | Datos emitidos |
|---|---|---|
| update:modelValue | Emitido cuando el usuario selecciona una nueva fecha | Date - Nueva fecha seleccionada |
Comportamiento
- Navegación: Permite navegar entre meses usando los botones de anterior y siguiente.
- Selección de Fecha: Al hacer clic en una fecha, se selecciona y emite el evento correspondiente.
- Indicadores de Eventos: Muestra puntos de colores debajo de las fechas que tienen eventos programados.
- Tooltips Informativos: Al pasar el cursor sobre fechas con eventos, muestra un tooltip con los detalles.
- Límite de Indicadores: Muestra máximo 3 puntos por fecha, con un indicador "+" para fechas con más eventos.
- Localización: Soporta diferentes idiomas a través de la prop
locale.
Funcionalidades Adicionales
- Gestión de Múltiples Eventos: Puede manejar varios eventos en la misma fecha de manera eficiente.
- Responsive: Se adapta a diferentes tamaños de pantalla con diseño flexible.
- Navegación por Teclado: Soporta navegación completa por teclado para accesibilidad.
- Personalización Visual: Los eventos pueden tener diferentes colores para categorización visual.
Estructura de Eventos
El componente organiza internamente los eventos usando un Map para optimizar el rendimiento:
- Agrupación por Fecha: Los eventos se agrupan automáticamente por fecha para facilitar la consulta.
- Renderizado Eficiente: Solo renderiza indicadores para fechas que realmente tienen eventos.
- Gestión de Tooltips: Los tooltips se generan dinámicamente basados en los eventos de cada fecha.
Personalización de Colores
Los eventos soportan cualquier clase de color de Tailwind CSS:
Notas
- El componente utiliza
reka-uicomo base para la funcionalidad del calendario. - Los tooltips requieren que
TooltipProvideresté disponible en el contexto de la aplicación. - Para un rendimiento óptimo con muchos eventos, se recomienda paginar o filtrar los eventos por rango de fechas.
- El componente es completamente accesible y sigue las mejores prácticas de ARIA.
- Las fechas se manejan internamente usando objetos
Datenativos de JavaScript.