Calendar/src/types/ManagerTypes.ts
Janus C. H. Knudsen f0cc9bb6ce Refactors grid date handling and event rendering
Replaces getPeriodRange with getDisplayDates approach
Simplifies event rendering by using flexible date array
Updates event rendering to work with dynamic date lists

Improves code modularity and reduces complexity
2025-11-13 21:22:28 +01:00

75 lines
2.3 KiB
TypeScript

import { IEventBus, ICalendarEvent, CalendarView } from './CalendarTypes';
/**
* Complete type definition for all managers returned by ManagerFactory
*/
export interface ICalendarManagers {
eventManager: IEventManager;
eventRenderer: IEventRenderingService;
gridManager: IGridManager;
scrollManager: IScrollManager;
navigationManager: unknown; // Avoid interface conflicts
viewManager: IViewManager;
calendarManager: ICalendarManager;
dragDropManager: unknown; // Avoid interface conflicts
allDayManager: unknown; // Avoid interface conflicts
resizeHandleManager: IResizeHandleManager;
edgeScrollManager: unknown; // Avoid interface conflicts
dragHoverManager: unknown; // Avoid interface conflicts
headerManager: unknown; // Avoid interface conflicts
}
/**
* Base interface for managers with optional initialization and refresh
*/
interface IManager {
initialize?(): Promise<void> | void;
refresh?(): void;
}
export interface IEventManager extends IManager {
loadData(): Promise<void>;
getEvents(): ICalendarEvent[];
getEventsForPeriod(startDate: Date, endDate: Date): ICalendarEvent[];
navigateToEvent(eventId: string): boolean;
}
export interface IEventRenderingService extends IManager {
// EventRenderingService doesn't have a render method in current implementation
}
export interface IGridManager extends IManager {
render(): Promise<void>;
}
export interface IScrollManager extends IManager {
scrollTo(scrollTop: number): void;
scrollToHour(hour: number): void;
}
// Use a more flexible interface that matches actual implementation
export interface INavigationManager extends IManager {
[key: string]: unknown; // Allow any properties from actual implementation
}
export interface IViewManager extends IManager {
// ViewManager doesn't have setView in current implementation
getCurrentView?(): CalendarView;
}
export interface ICalendarManager extends IManager {
setView(view: CalendarView): void;
setCurrentDate(date: Date): void;
}
export interface IDragDropManager extends IManager {
// DragDropManager has different interface in current implementation
}
export interface IAllDayManager extends IManager {
[key: string]: unknown; // Allow any properties from actual implementation
}
export interface IResizeHandleManager extends IManager {
// ResizeHandleManager handles hover effects for resize handles
}