@uplink-protocol/calendar-controller
Version:
Flexible calendar API supporting both calendar and date-picker integrations for any JavaScript framework or library
101 lines (100 loc) • 4.11 kB
TypeScript
import { ICalendarGeneratorService } from '../interfaces/calendar-generator.service.interfaces';
import { CalendarDate, CalendarMonth, CalendarYear } from '../interfaces/calendar.interfaces';
import { CalendarGenerationOptions, MonthViewGenerationOptions, YearViewGenerationOptions } from '../interfaces/calendar.service.interfaces';
/**
* Implementation of CalendarGeneratorService
* Responsible for generating calendar data structures
*/
export declare class CalendarGeneratorService implements ICalendarGeneratorService {
getWeekNumber(date: Date, locale?: string): number;
/**
* Generate calendar days for a specific month/year
* @param year Year
* @param month Month (0-11)
* @param options Calendar generation options
* @returns Array of calendar dates
*/
generateCalendarDays(year: number, month: number, options: CalendarGenerationOptions): CalendarDate[];
/**
* Generate an array of calendar months for a year view
* @param year Year to generate months for
* @param options Month view generation options
* @returns Array of calendar month objects
*/
generateCalendarMonths(year: number, options: MonthViewGenerationOptions): CalendarMonth[];
/**
* Generate an array of calendar years for a year range view
* @param baseYear Starting year for the range
* @param rangeSize Number of years to generate
* @param options Year view generation options
* @returns Array of calendar year objects
*/
generateCalendarYears(baseYear: number, rangeSize: number, options: YearViewGenerationOptions): CalendarYear[];
/**
* Create a calendar date object with the correct properties
* @param date Date
* @param isCurrentMonth Whether this date is in the current month
* @param today Today's date
* @param options Calendar generation options
* @returns Calendar date object
*/ private createCalendarDateObject;
/**
* Get calendar days generation function
* Returns a function that can be called to generate calendar days
* @param getCurrentDate Function to get current date
* @param getCalendarOptions Function to get calendar options
* @returns Function that generates calendar days
*/
getCalendarDaysGenerator(getCurrentDate: () => Date, getCalendarOptions: () => CalendarGenerationOptions): () => CalendarDate[];
/**
* Generate month view for a specific month/year
* @param year Year
* @param month Month (0-11)
* @param options Calendar generation options
* @returns Object with month view data
*/ generateMonthView(year: number, month: number, options: CalendarGenerationOptions): {
month: number;
year: number;
weeks: {
days: CalendarDate[];
weekNumber?: number;
}[];
weekdays: string[];
};
/**
* Generate year view with all months for a specific year
* @param year Year to generate view for
* @param options Year view generation options
* @returns Object with year view data
*/
generateYearView(year: number, options: YearViewGenerationOptions): {
months: CalendarMonth[];
year: number;
};
/**
* Generate decade view (10 years)
* @param baseYear Base year for the decade view
* @param options Year view generation options
* @returns Object with decade view data
*/
generateDecadeView(baseYear: number, options: YearViewGenerationOptions): {
years: CalendarYear[];
startYear: number;
endYear: number;
};
/**
* Generate multi-year view (typically for selecting a year within a decade or larger range)
* @param baseYear Base year for the multi-year view
* @param options Year view generation options
* @returns Object with multi-year view data
*/
generateMultiYearView(baseYear: number, options: YearViewGenerationOptions): {
years: CalendarYear[];
decades: Array<{
startYear: number;
endYear: number;
}>;
startYear: number;
endYear: number;
};
}