From 1f7b93af218d1f2a1eed698e0b9c0b6ddd13c37c Mon Sep 17 00:00:00 2001 From: Till-JS <101404291+Till-JS@users.noreply.github.com> Date: Sun, 14 Dec 2025 23:25:29 +0100 Subject: [PATCH] feat(calendar): add context menu to CalendarHeader with display settings MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add right-click context menu to the calendar header for customizing: - Compact view toggle - Weekday format (full/short/hidden) - Date visibility toggle - Month display toggle (e.g., "13.12.") 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .../components/calendar/CalendarHeader.svelte | 86 +++++++++++++-- .../calendar/CalendarHeaderContextMenu.svelte | 102 ++++++++++++++++++ .../web/src/lib/stores/settings.svelte.ts | 25 +++++ 3 files changed, 206 insertions(+), 7 deletions(-) create mode 100644 apps/calendar/apps/web/src/lib/components/calendar/CalendarHeaderContextMenu.svelte diff --git a/apps/calendar/apps/web/src/lib/components/calendar/CalendarHeader.svelte b/apps/calendar/apps/web/src/lib/components/calendar/CalendarHeader.svelte index b16235177..9ee69b7d8 100644 --- a/apps/calendar/apps/web/src/lib/components/calendar/CalendarHeader.svelte +++ b/apps/calendar/apps/web/src/lib/components/calendar/CalendarHeader.svelte @@ -1,9 +1,50 @@ -
+ + + diff --git a/apps/calendar/apps/web/src/lib/components/calendar/CalendarHeaderContextMenu.svelte b/apps/calendar/apps/web/src/lib/components/calendar/CalendarHeaderContextMenu.svelte new file mode 100644 index 000000000..704a5bbca --- /dev/null +++ b/apps/calendar/apps/web/src/lib/components/calendar/CalendarHeaderContextMenu.svelte @@ -0,0 +1,102 @@ + + + diff --git a/apps/calendar/apps/web/src/lib/stores/settings.svelte.ts b/apps/calendar/apps/web/src/lib/stores/settings.svelte.ts index 96860581c..5aacc09fa 100644 --- a/apps/calendar/apps/web/src/lib/stores/settings.svelte.ts +++ b/apps/calendar/apps/web/src/lib/stores/settings.svelte.ts @@ -13,6 +13,7 @@ import { userSettings } from './user-settings.svelte'; export type WeekStartDay = 0 | 1; // 0 = Sunday, 1 = Monday export type TimeFormat = '24h' | '12h'; export type AllDayDisplayMode = 'header' | 'block'; // header = separate row, block = full day block in grid +export type WeekdayFormat = 'full' | 'short' | 'hidden'; export interface CalendarAppSettings { // View settings @@ -26,6 +27,12 @@ export interface CalendarAppSettings { dayEndHour: number; // Last visible hour (0-23) allDayDisplayMode: AllDayDisplayMode; // How to display all-day events + // Header settings + headerCompact: boolean; // Compact header display + headerWeekdayFormat: WeekdayFormat; // Weekday display format + headerShowDate: boolean; // Show date in header + headerAlwaysShowMonth: boolean; // Always show month (e.g., "13.12.") + // DateStrip settings dateStripShowMoonPhases: boolean; // Show moon phase indicators dateStripShowEventIndicators: boolean; // Show event dot indicators @@ -61,6 +68,11 @@ const DEFAULT_SETTINGS: CalendarAppSettings = { dayStartHour: 6, dayEndHour: 20, allDayDisplayMode: 'header', + // Header defaults + headerCompact: false, + headerWeekdayFormat: 'full', + headerShowDate: true, + headerAlwaysShowMonth: false, // DateStrip defaults dateStripShowMoonPhases: true, dateStripShowEventIndicators: true, @@ -175,6 +187,19 @@ export const settingsStore = { get allDayDisplayMode() { return settings.allDayDisplayMode; }, + // Header settings + get headerCompact() { + return settings.headerCompact; + }, + get headerWeekdayFormat() { + return settings.headerWeekdayFormat; + }, + get headerShowDate() { + return settings.headerShowDate; + }, + get headerAlwaysShowMonth() { + return settings.headerAlwaysShowMonth; + }, // DateStrip settings get dateStripShowMoonPhases() { return settings.dateStripShowMoonPhases;