diff --git a/frontend/src/components/calendar/EventDialog.tsx b/frontend/src/components/calendar/EventDialog.tsx
index 2d190ac..7f10c0a 100644
--- a/frontend/src/components/calendar/EventDialog.tsx
+++ b/frontend/src/components/calendar/EventDialog.tsx
@@ -5,7 +5,7 @@ import {
addDays, allDayISO, dateFromInput, eventDay, nthOfMonth, timedISO,
toDateInput, toTimeInput, weekdayCodeOf, weekdayCodes,
} from './dates'
-import { ColorSwatches, Toggle } from './controls'
+import { CalendarPicker, ColorSwatches, Toggle } from './controls'
interface Props {
/** Fehlt er, entsteht ein neuer Termin. */
@@ -215,9 +215,7 @@ export default function EventDialog({ event, defaultStart, calendars, calendarId
Speichern die Sammlung, behält aber seine Kennung – für
CalDAV-Clients derselbe Termin an neuer Adresse, nicht ein
neuer. */}
-
+
Wird beim Speichern nach „{calendars.find(c => c.id === calId)?.name}" verschoben diff --git a/frontend/src/components/calendar/controls.tsx b/frontend/src/components/calendar/controls.tsx index 8a3bbe0..a254190 100644 --- a/frontend/src/components/calendar/controls.tsx +++ b/frontend/src/components/calendar/controls.tsx @@ -93,3 +93,57 @@ export function ColorSwatches({ value, onChange, inherit, disabled }: { ) } + +/** + * Kalenderwahl als farbige Plaketten statt als Auswahlfeld. + * + * Ein Auswahlfeld zeigt nur den Namen – die Farbe aber ist das, woran man + * einen Kalender im Raster wiedererkennt. Wer „Arbeit" wählt, soll dabei + * schon das Blau sehen, in dem der Termin gleich erscheint. + * + * Der Punkt spricht dieselbe Sprache wie überall sonst im Kalender: gefüllt + * heißt gewählt, ein leerer Ring heißt nicht gewählt. + */ +export function CalendarPicker({ calendars, value, onChange, disabled }: { + calendars: { id: string; name: string; color: string }[] + value: string + onChange: (id: string) => void + disabled?: boolean +}) { + return ( +