diff --git a/src/managers/AllDayManager.ts b/src/managers/AllDayManager.ts index e150d13..de06165 100644 --- a/src/managers/AllDayManager.ts +++ b/src/managers/AllDayManager.ts @@ -32,6 +32,11 @@ export class AllDayManager { const { targetDate, originalElement } = (event as CustomEvent).detail; this.handleConvertToAllDay(targetDate, originalElement); }); + + eventBus.on('drag:convert-from-allday', (event) => { + const { draggedEventId } = (event as CustomEvent).detail; + this.handleConvertFromAllDay(draggedEventId); + }); } /** @@ -261,18 +266,58 @@ export class AllDayManager { } }; + // Check if all-day event already exists for this event ID + const existingAllDayEvent = document.querySelector(`swp-allday-container swp-allday-event[data-event-id="${eventId}"]`); + if (existingAllDayEvent) { + // All-day event already exists, just ensure clone is hidden + const dragClone = document.querySelector(`swp-event[data-event-id="clone-${eventId}"]`); + if (dragClone) { + (dragClone as HTMLElement).style.display = 'none'; + } + return; + } + // Use renderer to create and add all-day event const allDayElement = this.allDayEventRenderer.renderAllDayEvent(calendarEvent, targetDate); if (allDayElement) { - // Remove original timed event - originalElement.remove(); + // Hide drag clone completely + const dragClone = document.querySelector(`swp-event[data-event-id="clone-${eventId}"]`); + if (dragClone) { + (dragClone as HTMLElement).style.display = 'none'; + } // Animate height change this.checkAndAnimateAllDayHeight(); } } + /** + * Handle conversion from all-day event back to day event + */ + private handleConvertFromAllDay(draggedEventId: string): void { + // Find and remove all-day event specifically in the container + const allDayEvent = document.querySelector(`swp-allday-container swp-allday-event[data-event-id="${draggedEventId}"]`); + if (allDayEvent) { + allDayEvent.remove(); + } + + // Show drag clone again with reset styles + const dragClone = document.querySelector(`swp-event[data-event-id="clone-${draggedEventId}"]`); + if (dragClone) { + const clone = dragClone as HTMLElement; + + // Reset to standard day event styles + clone.style.display = 'block'; + clone.style.zIndex = ''; // Fjern drag z-index + clone.style.cursor = ''; // Fjern drag cursor + clone.style.opacity = ''; // Fjern evt. opacity + clone.style.transform = ''; // Fjern evt. transforms + + // Position styles (top, height, left, right) bevares + } + } + /** * Update row height when all-day events change */