Improves all-day drag-and-drop conversion

Refactors drag-to-all-day functionality to apply CSS styling and reposition the existing drag clone within the all-day container, rather than creating a new event element.

Centralizes all-day container creation in HeaderManager. Introduces `drag:mouseleave-header` to handle transitions from all-day back to timed events.

Ensures consistent styling and robust cleanup of drag clones for a smoother user experience.
This commit is contained in:
Janus C. H. Knudsen 2025-09-21 21:30:51 +02:00
parent 2cdbc8f1a3
commit c682c30e23
6 changed files with 181 additions and 121 deletions

View file

@ -24,6 +24,9 @@ export class HeaderManager {
// Listen for navigation events to update header
this.setupNavigationListener();
// Listen for requests to ensure all-day container
this.setupContainerRequestListener();
}
/**
@ -95,18 +98,23 @@ export class HeaderManager {
}
/**
* Ensure all-day container exists in header
* Ensure all-day container exists in header - creates directly
*/
private ensureAllDayContainer(): void {
private ensureAllDayContainer(): HTMLElement | null {
const calendarHeader = this.getCalendarHeader();
if (!calendarHeader) return;
if (!calendarHeader) return null;
let allDayContainer = calendarHeader.querySelector('swp-allday-container');
let allDayContainer = calendarHeader.querySelector('swp-allday-container') as HTMLElement;
if (!allDayContainer) {
console.log('📍 HeaderManager: All-day container missing, requesting creation...');
eventBus.emit('allday:ensure-container');
console.log('📍 HeaderManager: Creating all-day container directly...');
allDayContainer = document.createElement('swp-allday-container');
calendarHeader.appendChild(allDayContainer);
console.log('✅ HeaderManager: All-day container created');
}
return allDayContainer;
}
@ -134,6 +142,16 @@ export class HeaderManager {
}
/**
* Setup listener for all-day container creation requests
*/
private setupContainerRequestListener(): void {
eventBus.on('header:ensure-allday-container', () => {
console.log('📍 HeaderManager: Received request to ensure all-day container');
this.ensureAllDayContainer();
});
}
/**
* Update header content for navigation
*/