Add web UI for CalDAV calendars (web/calendar)

- List of the user's own calendars (web/calendar)
- Month view per calendar with a Monday-first 6-week grid, showing
  all-day and timed events, colored dot matching the calendar's color
- Navigation between months (prev/next/today) via query params
- Create/edit/delete events: title, description, location, all-day
  toggle, start/end date+time
- Clicking a day cell prefills a new all-day event on that date; the
  "New event" button defaults to a one-hour slot starting next full hour
- Deleting an event or invalid time ranges (end before/equal start) are
  validated with inline error messages
- Verified round-trip with the real CalDAV protocol handler (events
  created via the web UI are correctly visible to a REPORT query)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
2026-08-20 16:58:59 +02:00
co-authored by Copilot
parent 3fa0297715
commit cd2cfa6c06
9 changed files with 1691 additions and 3 deletions
+1 -1
View File
File diff suppressed because one or more lines are too long
+12
View File
@@ -0,0 +1,12 @@
"use strict";
// Event form behavior: hide/show the start/end time fields depending on
// whether the "All-day event" checkbox is checked.
(function initEventForm() {
const allDay = document.getElementById("all-day");
const startTimeField = document.getElementById("start-time-field");
const endTimeField = document.getElementById("end-time-field");
allDay?.addEventListener("change", () => {
startTimeField?.classList.toggle("hidden", allDay.checked);
endTimeField?.classList.toggle("hidden", allDay.checked);
});
})();