From 576367974b067b6ce45d5b7c25fad357dee2dfa8 Mon Sep 17 00:00:00 2001 From: "Janus C. H. Knudsen" Date: Thu, 2 Oct 2025 23:58:03 +0200 Subject: [PATCH] Fixes all-day event dragging issues Addresses issues with dragging all-day events, ensuring correct event placement and layout calculations after a drag and drop operation. Specifically, ensures the correct event ID is used and updates the event layout when dragging all day events. --- src/elements/SwpEventElement.ts | 1 + src/managers/AllDayManager.ts | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/elements/SwpEventElement.ts b/src/elements/SwpEventElement.ts index 1ea565e..003d6e5 100644 --- a/src/elements/SwpEventElement.ts +++ b/src/elements/SwpEventElement.ts @@ -250,6 +250,7 @@ export class SwpAllDayEventElement extends BaseEventElement { const endDateStr = this.event.end.toISOString().split('T')[0]; this.element.dataset.start = `${startDateStr}T00:00:00`; this.element.dataset.end = `${endDateStr}T23:59:59`; + this.element.dataset.allday = 'true'; } /** diff --git a/src/managers/AllDayManager.ts b/src/managers/AllDayManager.ts index 143b8b1..806782b 100644 --- a/src/managers/AllDayManager.ts +++ b/src/managers/AllDayManager.ts @@ -367,7 +367,7 @@ export class AllDayManager { // 2. Normalize clone ID dragEndEvent.draggedClone.dataset.eventId = dragEndEvent.draggedClone.dataset.eventId?.replace('clone-', ''); - + dragEndEvent.originalElement.dataset.eventId += '_'; // 3. Create temporary array with existing events + the dropped event let eventId = dragEndEvent.draggedClone.dataset.eventId; @@ -390,7 +390,10 @@ export class AllDayManager { }; // Use current events + dropped event for calculation - const tempEvents = [...this.currentAllDayEvents, droppedEvent].except(dragEndEvent.originalElement); + const tempEvents = [ + ...this.currentAllDayEvents.filter(event => event.id !== eventId), + droppedEvent + ]; // 4. Calculate new layouts for ALL events this.newLayouts = this.calculateAllDayEventsLayout(tempEvents, this.currentWeekDates);