Calendar/wwwroot/js/features/all-day/AllDayDragService.d.ts
2026-02-03 00:02:25 +01:00

50 lines
2 KiB
TypeScript

/**
* AllDayDragService - Manages drag and drop operations for all-day events
*
* STATELESS SERVICE - Reads all data from DOM via AllDayDomReader
* - No persistent state
* - Handles timed → all-day conversion
* - Handles all-day → all-day repositioning
* - Handles column changes during drag
* - Calculates layouts on-demand from DOM
*/
import { IEventLayout } from '../../utils/AllDayLayoutEngine';
import { IDragMouseEnterHeaderEventPayload, IDragColumnChangeEventPayload, IDragEndEventPayload } from '../../types/EventTypes';
import { EventManager } from '../../managers/EventManager';
import { AllDayEventRenderer } from '../../renderers/AllDayEventRenderer';
import { DateService } from '../../utils/DateService';
export declare class AllDayDragService {
private eventManager;
private allDayEventRenderer;
private dateService;
constructor(eventManager: EventManager, allDayEventRenderer: AllDayEventRenderer, dateService: DateService);
/**
* Handle conversion from timed event to all-day event
* Called when dragging a timed event into the header
*/
handleConvertToAllDay(payload: IDragMouseEnterHeaderEventPayload): void;
/**
* Handle column change during drag of all-day event
* Updates grid position while maintaining event span
*/
handleColumnChange(payload: IDragColumnChangeEventPayload): void;
/**
* Handle drag end for all-day → all-day drops
* Recalculates layouts and updates event positions
*/
handleDragEnd(dragEndEvent: IDragEndEventPayload): Promise<void>;
/**
* Calculate layouts for events using AllDayLayoutEngine
*/
private calculateLayouts;
/**
* Apply layout updates to DOM elements
* Only updates elements that have changed position
* Public so AllDayCoordinator can use it for full recalculation
*/
applyLayoutUpdates(newLayouts: IEventLayout[]): void;
/**
* Fade out and remove element
*/
private fadeOutAndRemove;
}