Calendar/src/types/DragDropTypes.ts

47 lines
1.1 KiB
TypeScript
Raw Normal View History

/**
* Type definitions for drag and drop functionality
*/
export interface MousePosition {
x: number;
y: number;
clientX?: number;
clientY?: number;
}
export interface DragOffset {
x: number;
y: number;
offsetX?: number;
offsetY?: number;
}
export interface DragState {
isDragging: boolean;
draggedElement: HTMLElement | null;
draggedClone: HTMLElement | null;
eventId: string | null;
startColumn: string | null;
currentColumn: string | null;
mouseOffset: DragOffset;
}
export interface DragEndPosition {
column: string;
y: number;
snappedY: number;
time?: Date;
}
export interface StackLinkData {
prev?: string;
next?: string;
isFirst?: boolean;
isLast?: boolean;
}
export interface DragEventHandlers {
handleDragStart?(originalElement: HTMLElement, eventId: string, mouseOffset: DragOffset, column: string): void;
handleDragMove?(eventId: string, snappedY: number, column: string, mouseOffset: DragOffset): void;
handleDragEnd?(eventId: string, originalElement: HTMLElement, draggedClone: HTMLElement, finalColumn: string, finalY: number): void;
}