From 57bf122675442078988fa9f641aec1b56bb9bae2 Mon Sep 17 00:00:00 2001 From: "Janus C. H. Knudsen" Date: Sun, 5 Oct 2025 21:53:25 +0200 Subject: [PATCH] Moves event positioning to renderer Relocates event CSS positioning logic from the `SwpEventElement` to the `DateEventRenderer`. This improves separation of concerns, making the renderer responsible for event layout. --- src/elements/SwpEventElement.ts | 11 ----------- src/renderers/EventRenderer.ts | 12 +++++++++++- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/src/elements/SwpEventElement.ts b/src/elements/SwpEventElement.ts index 5644646..16ff270 100644 --- a/src/elements/SwpEventElement.ts +++ b/src/elements/SwpEventElement.ts @@ -85,7 +85,6 @@ export class SwpEventElement extends BaseSwpEventElement { if (!this.hasChildNodes()) { this.render(); } - this.applyPositioning(); } /** @@ -193,16 +192,6 @@ export class SwpEventElement extends BaseSwpEventElement { } } - /** - * Apply initial positioning based on start/end times - */ - private applyPositioning(): void { - const position = PositionUtils.calculateEventPosition(this.start, this.end); - this.style.top = `${position.top + 1}px`; - this.style.height = `${position.height - 3}px`; - this.style.left = '2px'; - this.style.right = '2px'; - } /** * Calculate start/end minutes from Y position diff --git a/src/renderers/EventRenderer.ts b/src/renderers/EventRenderer.ts index 237e961..8a06e97 100644 --- a/src/renderers/EventRenderer.ts +++ b/src/renderers/EventRenderer.ts @@ -182,7 +182,17 @@ export class DateEventRenderer implements EventRendererStrategy { } private renderEvent(event: CalendarEvent): HTMLElement { - return SwpEventElement.fromCalendarEvent(event); + const element = SwpEventElement.fromCalendarEvent(event); + + // Apply positioning (moved from SwpEventElement.applyPositioning) + const position = this.calculateEventPosition(event); + element.style.position = 'absolute'; + element.style.top = `${position.top + 1}px`; + element.style.height = `${position.height - 3}px`; + element.style.left = '2px'; + element.style.right = '2px'; + + return element; } protected calculateEventPosition(event: CalendarEvent): { top: number; height: number } {