51 lines
2 KiB
TypeScript
51 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;
|
||
|
|
}
|