diff --git a/webui/src/features/calendar/CalendarPage.tsx b/webui/src/features/calendar/CalendarPage.tsx
index 81dd32a..fe0b0bb 100644
--- a/webui/src/features/calendar/CalendarPage.tsx
+++ b/webui/src/features/calendar/CalendarPage.tsx
@@ -11,6 +11,7 @@ import {
"react";
import { CalendarDays, ChevronLeft, ChevronRight, Pencil, Plus, RefreshCw, Trash2 } from "lucide-react";
import {
+ AdminIconButton,
Button,
ColorPickerField,
DateField,
@@ -19,6 +20,7 @@ import {
LoadingFrame,
PasswordField,
SegmentedControl,
+ TableActionGroup,
TimeField,
ToggleSwitch,
hasScope,
@@ -684,31 +686,24 @@ export default function CalendarPage({ settings, auth }: {settings: ApiSettings;
-
- {source && canSyncCalendars &&
-
- }
- {(canManageCalendars || canDeleteCalendars) &&
-
- }
-
+ ,
+ onClick: () => void handleSyncSource(source),
+ disabled: saving || syncing
+ },
+ (canManageCalendars || canDeleteCalendars) && {
+ id: "edit",
+ label: i18nMessage("i18n:govoplan-calendar.edit_value.fad75899", { value0: calendar.name }),
+ icon: ,
+ onClick: () => openCalendarEditor(calendar)
+ }
+ ]}
+ />
);
})}
@@ -764,13 +759,19 @@ export default function CalendarPage({ settings, auth }: {settings: ApiSettings;
-
+
}
+ onClick={() => moveFocus(-1)}
+ disabled={mode === "continuous"}
+ />
-
+
}
+ onClick={() => moveFocus(1)}
+ disabled={mode === "continuous"}
+ />
{heading}
@@ -779,9 +780,11 @@ export default function CalendarPage({ settings, auth }: {settings: ApiSettings;
-
+
}
+ onClick={() => void loadEvents()}
+ />
{canWrite &&