@uplink-protocol/calendar-controller
Version:
Flexible calendar and time picker API supporting both calendar, date-picker, and time-picker integrations for any JavaScript framework or library
61 lines (60 loc) • 2.45 kB
TypeScript
import { CalendarDate, CalendarMonth, CalendarYear, ICalendarGeneratorService, DateRange } from "../interfaces";
/**
* ViewGenerationCoordinator
* Handles all calendar view generation logic (days, months, years)
*/
export declare class ViewGenerationCoordinator {
private calendarGeneratorService;
private getState;
private isDateDisabledFn;
constructor(calendarGeneratorService: ICalendarGeneratorService, getState: () => {
currentDate: Date;
selectedDate: Date | null;
selectedDateRange: DateRange;
focusedDate: Date | null;
firstDayOfWeek: number;
minDate: Date | null;
maxDate: Date | null;
disabledDates: Date[];
disabledDaysOfWeek: number[];
isRangeSelection: boolean;
hideOtherMonthDays: boolean;
currentYearRangeBase: number;
yearRangeSize: number;
}, isDateDisabledFn: (date: Date) => boolean);
/**
* Generate calendar days for current month view
*/
generateCalendarDays(currentDate: Date, selectedDate: Date | null, selectedDateRange: DateRange, focusedDate: Date | null, firstDayOfWeek: number, minDate: Date | null, maxDate: Date | null, disabledDates: Date[], disabledDaysOfWeek: number[], isRangeSelection: boolean, hideOtherMonthDays: boolean, isDateDisabledFn: (date: Date) => boolean): CalendarDate[];
/**
* Generate calendar months for year view
*/
generateCalendarMonths(currentDate: Date, selectedDate: Date | null, selectedDateRange: DateRange, isRangeSelection: boolean, minDate: Date | null, maxDate: Date | null): CalendarMonth[];
/**
* Generate calendar years for year range view
*/
generateCalendarYears(currentDate: Date, currentYearRangeBase: number, yearRangeSize: number, selectedDate: Date | null, selectedDateRange: DateRange, isRangeSelection: boolean, minDate: Date | null, maxDate: Date | null): CalendarYear[];
/**
* Generate complete month view (structured with weeks)
*/
generateMonthView(): {
month: number;
year: number;
weeks: {
days: CalendarDate[];
weekNumber?: number;
}[];
weekdays: string[];
};
/**
* Generate complete year view (all months)
*/
generateYearView(): {
months: CalendarMonth[];
year: number;
};
/**
* Get week number for a date
*/
getWeekNumber(date: Date): number;
}