diff --git a/src/elements/SwpEventElement.ts b/src/elements/SwpEventElement.ts index 6f79e60..05c55a8 100644 --- a/src/elements/SwpEventElement.ts +++ b/src/elements/SwpEventElement.ts @@ -333,7 +333,7 @@ export class SwpAllDayEventElement extends BaseSwpEventElement { element.dataset.start = dateService.toUTC(event.start); element.dataset.end = dateService.toUTC(event.end); element.dataset.type = event.type; - element.dataset.allDay = 'true'; + element.dataset.allday = 'true'; element.textContent = event.title; return element; diff --git a/src/managers/AllDayManager.ts b/src/managers/AllDayManager.ts index 7dce7db..1752700 100644 --- a/src/managers/AllDayManager.ts +++ b/src/managers/AllDayManager.ts @@ -6,6 +6,7 @@ import { AllDayEventRenderer } from '../renderers/AllDayEventRenderer'; import { AllDayLayoutEngine, EventLayout } from '../utils/AllDayLayoutEngine'; import { ColumnBounds, ColumnDetectionUtils } from '../utils/ColumnDetectionUtils'; import { CalendarEvent } from '../types/CalendarTypes'; +import { SwpAllDayEventElement } from '../elements/SwpEventElement'; import { DragMouseEnterHeaderEventPayload, DragStartEventPayload, @@ -312,20 +313,19 @@ export class AllDayManager { } - /** - * Handle conversion of timed event to all-day event - SIMPLIFIED - * During drag: Place in row 1 only, calculate column from targetDate - */ private handleConvertToAllDay(payload: DragMouseEnterHeaderEventPayload): void { let allDayContainer = this.getAllDayContainer(); + if (!allDayContainer) return; - payload.draggedClone.removeAttribute('style'); - payload.draggedClone.style.gridRow = '1'; - payload.draggedClone.style.gridColumn = payload.targetColumn.index.toString(); - payload.draggedClone.dataset.allday = 'true'; + const allDayElement = SwpAllDayEventElement.fromCalendarEvent(payload.calendarEvent); - allDayContainer?.appendChild(payload.draggedClone); + // Apply grid positioning + allDayElement.style.gridRow = '1'; + allDayElement.style.gridColumn = payload.targetColumn.index.toString(); + + payload.draggedClone.remove(); + allDayContainer.appendChild(allDayElement); ColumnDetectionUtils.updateColumnBoundsCache(); diff --git a/src/managers/DragDropManager.ts b/src/managers/DragDropManager.ts index e91b250..4eff03e 100644 --- a/src/managers/DragDropManager.ts +++ b/src/managers/DragDropManager.ts @@ -495,11 +495,15 @@ export class DragDropManager { if (targetColumn) { console.log('🎯 DragDropManager: Emitting drag:mouseenter-header', { targetDate: targetColumn }); + // Extract CalendarEvent from the dragged clone + const calendarEvent = SwpEventElement.extractCalendarEventFromElement(this.draggedClone!!); + const dragMouseEnterPayload: DragMouseEnterHeaderEventPayload = { targetColumn: targetColumn, mousePosition: { x: event.clientX, y: event.clientY }, originalElement: this.draggedElement, - draggedClone: this.draggedClone!! + draggedClone: this.draggedClone!!, + calendarEvent: calendarEvent }; this.eventBus.emit('drag:mouseenter-header', dragMouseEnterPayload); } diff --git a/src/types/EventTypes.ts b/src/types/EventTypes.ts index 07b222a..f2b6a25 100644 --- a/src/types/EventTypes.ts +++ b/src/types/EventTypes.ts @@ -3,6 +3,7 @@ */ import { ColumnBounds } from "../utils/ColumnDetectionUtils"; +import { CalendarEvent } from "./CalendarTypes"; export interface AllDayEvent { id: string; @@ -82,6 +83,7 @@ export interface DragMouseEnterHeaderEventPayload { mousePosition: MousePosition; originalElement: HTMLElement | null; draggedClone: HTMLElement; + calendarEvent: CalendarEvent; } // Drag mouse leave header event payload