This commit is contained in:
Janus C. H. Knudsen 2025-10-04 16:20:09 +02:00
parent a9d6d14c93
commit 420036d939
4 changed files with 17 additions and 11 deletions

View file

@ -333,7 +333,7 @@ export class SwpAllDayEventElement extends BaseSwpEventElement {
element.dataset.start = dateService.toUTC(event.start); element.dataset.start = dateService.toUTC(event.start);
element.dataset.end = dateService.toUTC(event.end); element.dataset.end = dateService.toUTC(event.end);
element.dataset.type = event.type; element.dataset.type = event.type;
element.dataset.allDay = 'true'; element.dataset.allday = 'true';
element.textContent = event.title; element.textContent = event.title;
return element; return element;

View file

@ -6,6 +6,7 @@ import { AllDayEventRenderer } from '../renderers/AllDayEventRenderer';
import { AllDayLayoutEngine, EventLayout } from '../utils/AllDayLayoutEngine'; import { AllDayLayoutEngine, EventLayout } from '../utils/AllDayLayoutEngine';
import { ColumnBounds, ColumnDetectionUtils } from '../utils/ColumnDetectionUtils'; import { ColumnBounds, ColumnDetectionUtils } from '../utils/ColumnDetectionUtils';
import { CalendarEvent } from '../types/CalendarTypes'; import { CalendarEvent } from '../types/CalendarTypes';
import { SwpAllDayEventElement } from '../elements/SwpEventElement';
import { import {
DragMouseEnterHeaderEventPayload, DragMouseEnterHeaderEventPayload,
DragStartEventPayload, 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 { private handleConvertToAllDay(payload: DragMouseEnterHeaderEventPayload): void {
let allDayContainer = this.getAllDayContainer(); let allDayContainer = this.getAllDayContainer();
if (!allDayContainer) return;
payload.draggedClone.removeAttribute('style'); const allDayElement = SwpAllDayEventElement.fromCalendarEvent(payload.calendarEvent);
payload.draggedClone.style.gridRow = '1';
payload.draggedClone.style.gridColumn = payload.targetColumn.index.toString();
payload.draggedClone.dataset.allday = 'true';
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(); ColumnDetectionUtils.updateColumnBoundsCache();

View file

@ -495,11 +495,15 @@ export class DragDropManager {
if (targetColumn) { if (targetColumn) {
console.log('🎯 DragDropManager: Emitting drag:mouseenter-header', { targetDate: 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 = { const dragMouseEnterPayload: DragMouseEnterHeaderEventPayload = {
targetColumn: targetColumn, targetColumn: targetColumn,
mousePosition: { x: event.clientX, y: event.clientY }, mousePosition: { x: event.clientX, y: event.clientY },
originalElement: this.draggedElement, originalElement: this.draggedElement,
draggedClone: this.draggedClone!! draggedClone: this.draggedClone!!,
calendarEvent: calendarEvent
}; };
this.eventBus.emit('drag:mouseenter-header', dragMouseEnterPayload); this.eventBus.emit('drag:mouseenter-header', dragMouseEnterPayload);
} }

View file

@ -3,6 +3,7 @@
*/ */
import { ColumnBounds } from "../utils/ColumnDetectionUtils"; import { ColumnBounds } from "../utils/ColumnDetectionUtils";
import { CalendarEvent } from "./CalendarTypes";
export interface AllDayEvent { export interface AllDayEvent {
id: string; id: string;
@ -82,6 +83,7 @@ export interface DragMouseEnterHeaderEventPayload {
mousePosition: MousePosition; mousePosition: MousePosition;
originalElement: HTMLElement | null; originalElement: HTMLElement | null;
draggedClone: HTMLElement; draggedClone: HTMLElement;
calendarEvent: CalendarEvent;
} }
// Drag mouse leave header event payload // Drag mouse leave header event payload