feat: add calendar drag-and-drop rescheduling and iCalendar import

- Drag events in week/day views to reschedule (15-min snap intervals)
- Drag events in month view to change date (preserves time)
- Visual snap indicators with time labels during drag
- iCalendar (.ics) file import via JMAP CalendarEvent/parse
- Import modal with file upload, event preview, calendar selector
- File validation (5MB max), bulk import with progress tracking
This commit is contained in:
Matthieu MALVACHE
2026-02-16 21:09:13 +01:00
committed by Matthieu MALVACHE
parent e6f67c24cb
commit ff65693e26
19 changed files with 842 additions and 29 deletions
+21 -2
View File
@@ -1004,14 +1004,33 @@
"event_updated": "Evento actualizado",
"event_deleted": "Evento eliminado",
"calendar_created": "Calendario creado",
"calendar_deleted": "Calendario eliminado"
"calendar_deleted": "Calendario eliminado",
"event_move_error": "Error al mover el evento"
},
"status": {
"loading_calendars": "Cargando calendarios...",
"loading_events": "Cargando eventos..."
},
"nav_prev": "Anterior",
"nav_next": "Siguiente"
"nav_next": "Siguiente",
"import": {
"title": "Importar calendario",
"select_file": "Seleccionar archivo .ics",
"drop_file": "o arrastra el archivo aquí",
"supported_formats": "Archivos iCalendar (.ics) compatibles",
"parsing": "Analizando archivo de calendario...",
"parsed_events": "{count} eventos encontrados",
"no_events": "No se encontraron eventos en el archivo",
"select_all": "Seleccionar todo",
"deselect_all": "Deseleccionar todo",
"target_calendar": "Importar al calendario",
"import_button": "Importar selección",
"importing": "Importando eventos...",
"success": "{count} eventos importados correctamente",
"error": "Error al importar el calendario",
"file_too_large": "El archivo supera el límite de 5 MB",
"invalid_format": "Formato de archivo de calendario no válido"
}
},
"advanced_search": {
"title": "Búsqueda avanzada",