diff --git a/src/core/CalendarConfig.ts b/src/core/CalendarConfig.ts index cb731fc..20d1b31 100644 --- a/src/core/CalendarConfig.ts +++ b/src/core/CalendarConfig.ts @@ -546,6 +546,13 @@ export class CalendarConfig { return this.timeFormatConfig.timezone; } + /** + * Get configured locale + */ + getLocale(): string { + return this.timeFormatConfig.locale; + } + /** * Check if using 24-hour format */ diff --git a/src/renderers/HeaderRenderer.ts b/src/renderers/HeaderRenderer.ts index 77ba231..25a86fa 100644 --- a/src/renderers/HeaderRenderer.ts +++ b/src/renderers/HeaderRenderer.ts @@ -29,15 +29,16 @@ export class DateHeaderRenderer implements HeaderRenderer { render(calendarHeader: HTMLElement, context: HeaderRenderContext): void { const { currentWeek, config } = context; - + // FIRST: Always create all-day container as part of standard header structure const allDayContainer = document.createElement('swp-allday-container'); calendarHeader.appendChild(allDayContainer); - - // Initialize date service with config + + // Initialize date service with timezone and locale from config const timezone = config.getTimezone?.() || 'Europe/Copenhagen'; + const locale = config.getLocale?.() || 'da-DK'; this.dateService = new DateService(timezone); - + const workWeekSettings = config.getWorkWeekSettings(); const dates = this.dateService.getWorkWeekDates(currentWeek, workWeekSettings.workDays); const weekDays = config.getDateViewSettings().weekDays; @@ -48,15 +49,15 @@ export class DateHeaderRenderer implements HeaderRenderer { if (this.dateService.isSameDay(date, new Date())) { (header as any).dataset.today = 'true'; } - - const dayName = this.dateService.getDayName(date, 'short'); - + + const dayName = this.dateService.getDayName(date, 'long', locale).toUpperCase(); + header.innerHTML = ` ${dayName} ${date.getDate()} `; (header as any).dataset.date = this.dateService.formatISODate(date); - + calendarHeader.appendChild(header); }); } diff --git a/src/utils/DateService.ts b/src/utils/DateService.ts index 48c6e87..daf6a87 100644 --- a/src/utils/DateService.ts +++ b/src/utils/DateService.ts @@ -139,10 +139,11 @@ export class DateService { * Get day name for a date * @param date - Date to get day name for * @param format - 'short' (e.g., 'Mon') or 'long' (e.g., 'Monday') + * @param locale - Locale for day name (default: 'da-DK') * @returns Day name */ - public getDayName(date: Date, format: 'short' | 'long' = 'short'): string { - const formatter = new Intl.DateTimeFormat('en-US', { + public getDayName(date: Date, format: 'short' | 'long' = 'short', locale: string = 'da-DK'): string { + const formatter = new Intl.DateTimeFormat(locale, { weekday: format }); return formatter.format(date); diff --git a/wwwroot/css/calendar-layout-css.css b/wwwroot/css/calendar-layout-css.css index 755ca7b..c333e5d 100644 --- a/wwwroot/css/calendar-layout-css.css +++ b/wwwroot/css/calendar-layout-css.css @@ -246,7 +246,7 @@ swp-day-header { flex-direction: column; align-items: center; justify-content: center; - padding-top: 7px; + padding-top: 3px; } swp-day-header:last-child { @@ -299,27 +299,27 @@ swp-day-name { font-weight: 500; font-size: 12px; color: var(--color-text-secondary); + letter-spacing: 0.1em; } swp-day-date { display: block; - font-size: 20px; - font-weight: 600; + font-size: 30px; margin-top: 4px; - height: 41px; +} +/* Highlight entire header for today */ +swp-day-header[data-today="true"] { + background: rgba(33, 150, 243, 0.1); +} + +swp-day-header[data-today="true"] swp-day-name { + color: var(--color-primary); + font-weight: 600; } swp-day-header[data-today="true"] swp-day-date { color: var(--color-primary); - background: rgba(33, 150, 243, 0.1); - border-radius: 50%; - width: 41px; - height: 41px; - display: flex; - align-items: center; - justify-content: center; - margin: 4px auto 0; } /* Ghost columns for mouseenter events */