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": "Event updated",
"event_deleted": "Event deleted",
"calendar_created": "Calendar created",
"calendar_deleted": "Calendar deleted"
"calendar_deleted": "Calendar deleted",
"event_move_error": "Failed to move event"
},
"status": {
"loading_calendars": "Loading calendars...",
"loading_events": "Loading events..."
},
"nav_prev": "Previous",
"nav_next": "Next"
"nav_next": "Next",
"import": {
"title": "Import Calendar",
"select_file": "Select .ics file",
"drop_file": "or drop file here",
"supported_formats": "Supports iCalendar (.ics) files",
"parsing": "Parsing calendar file...",
"parsed_events": "{count} events found",
"no_events": "No events found in file",
"select_all": "Select all",
"deselect_all": "Deselect all",
"target_calendar": "Import to calendar",
"import_button": "Import selected",
"importing": "Importing events...",
"success": "{count} events imported successfully",
"error": "Failed to import calendar",
"file_too_large": "File exceeds 5MB limit",
"invalid_format": "Invalid calendar file format"
}
},
"advanced_search": {
"title": "Advanced Search",