@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
220 lines (219 loc) • 8.53 kB
TypeScript
import { ControllerAdapter } from "@uplink-protocol/core";
import { ControllerMetadata } from "@uplink-protocol/core/dist/uplink/interfaces/metadata/controller-metadata.interface";
import { CalendarDate, CalendarMonth, CalendarYear, CalendarOptions, DateRange, YearRange } from "./interfaces";
import { TypedCalendarController, CalendarControllerBindings, CalendarControllerMethods, CalendarControllerEvents } from "./types";
/**
* CalendarControllerClass - Pure Orchestrator
*
* This controller is a thin orchestration layer that delegates ALL logic
* to specialized coordinators. It contains NO business logic itself.
*
* Architecture:
* - Services: Low-level operations (date manipulation, formatting, etc.)
* - Coordinators: Business logic and state management
* - Controller: Public API facade and delegation
*/
export interface CalendarControllerInterface extends TypedCalendarController {
_currentDate: Date;
_selectedDate: Date | null;
_selectedDateRange: DateRange;
_focusedDate: Date | null;
_minDate: Date | null;
_maxDate: Date | null;
_disabledDates: Date[];
_disabledDaysOfWeek: number[];
_firstDayOfWeek: number;
_dateFormat: string | null;
_isRangeSelection: boolean;
_hideOtherMonthDays: boolean;
_locale: string;
_dateFormatOptions: Intl.DateTimeFormatOptions | null;
_yearRangeSize: number;
_currentYearRangeBase: number;
}
export declare class CalendarControllerClass implements CalendarControllerInterface {
bindings: CalendarControllerBindings;
methods: CalendarControllerMethods;
events: CalendarControllerEvents;
meta?: ControllerMetadata;
__adapter?: ControllerAdapter;
options?: CalendarOptions;
get _currentDate(): Date;
set _currentDate(value: Date);
get _selectedDate(): Date | null;
set _selectedDate(value: Date | null);
get _selectedDateRange(): DateRange;
set _selectedDateRange(value: DateRange);
get _focusedDate(): Date | null;
set _focusedDate(value: Date | null);
get _minDate(): Date | null;
set _minDate(value: Date | null);
get _maxDate(): Date | null;
set _maxDate(value: Date | null);
get _disabledDates(): Date[];
set _disabledDates(value: Date[]);
get _disabledDaysOfWeek(): number[];
set _disabledDaysOfWeek(value: number[]);
get _firstDayOfWeek(): number;
set _firstDayOfWeek(value: number);
get _dateFormat(): string | null;
set _dateFormat(value: string | null);
get _isRangeSelection(): boolean;
set _isRangeSelection(value: boolean);
get _hideOtherMonthDays(): boolean;
set _hideOtherMonthDays(value: boolean);
get _locale(): string;
set _locale(value: string);
get _dateFormatOptions(): Intl.DateTimeFormatOptions | null;
set _dateFormatOptions(value: Intl.DateTimeFormatOptions | null);
get _yearRangeSize(): number;
set _yearRangeSize(value: number);
get _currentYearRangeBase(): number;
set _currentYearRangeBase(value: number);
get selectedDateRange(): {
start: Date | null;
end: Date | null;
startDate: Date | null;
endDate: Date | null;
};
set selectedDateRange(value: {
start?: Date | null;
end?: Date | null;
startDate?: Date | null;
endDate?: Date | null;
});
private _calendarService;
private _localizationService;
private _dateFormattingService;
private _dateSelectionService;
private _viewStateService;
private _eventManagerService;
private _navigationService;
private _constraintsService;
private _calendarGeneratorService;
private _accessibilityService;
private _accessibilityManagerService;
private _calendarStateService;
private stateManager;
private bindingsCoordinator;
private navigationCoordinator;
private selectionCoordinator;
private constraintsCoordinator;
private focusCoordinator;
private formattingCoordinator;
private utilityCoordinator;
private controllerInitializer;
private viewGenerationCoordinator;
private localizationCoordinator;
private configurationCoordinator;
constructor(options?: CalendarOptions);
generateCalendarDays(): CalendarDate[];
generateCalendarMonths(): CalendarMonth[];
generateCalendarYears(): CalendarYear[];
getWeekNumber(date: Date): number;
isDateDisabled(date: Date): boolean;
isDateSelected(date: Date): boolean;
isDateInRange(date: Date): boolean;
isToday(date: Date): boolean;
hasEvents(_date: Date): boolean;
isSameDay(date1: Date, date2: Date): boolean;
isSameMonth(date1: Date, date2: Date): boolean;
isSameYear(date1: Date, date2: Date): boolean;
getDayOfWeek(date: Date): number;
getDaysInMonth(year: number, month: number): number;
selectDate(yearOrDate: number | Date, month?: number, day?: number): void;
selectMonth(month: number, year: number): void;
selectYear(year: number): void;
clearSelection(): void;
setRangeSelectionMode(isRange: boolean): void;
goToMonth(month: number, year: number): void;
goToYear(year: number): void;
goToDate(date: Date): void;
private updateCurrentDate;
goToNextMonth(): void;
nextMonth(): void;
goToPreviousMonth(): void;
previousMonth(): void;
prevMonth(): void;
goToNextYear(): void;
nextYear(): void;
goToPreviousYear(): void;
prevYear(): void;
goToToday(): void;
goToNextYearRange(): void;
goToPreviousYearRange(): void;
setMinDate(date: Date | null): void;
setMaxDate(date: Date | null): void;
setDisabledDates(dates: Date[]): void;
addDisabledDate(date: Date): Date[];
removeDisabledDate(date: Date): Date[];
getDisabledDates(): Date[];
setDisabledDaysOfWeek(days: number[]): number[];
addDisabledDayOfWeek(day: number): number[];
removeDisabledDayOfWeek(day: number): number[];
getDisabledDaysOfWeek(): number[];
setLocale(locale: string): void;
getLocale(): string;
setDateFormat(format: string | null): void;
getDateFormat(): string | null;
setDateFormatOptions(options: Intl.DateTimeFormatOptions | null): void;
getDateFormatOptions(): Intl.DateTimeFormatOptions | null;
setFirstDayOfWeek(day: number): void;
getFirstDayOfWeek(): number;
setHideOtherMonthDays(hide: boolean): void;
getHideOtherMonthDays(): boolean;
getFormattedDate(): string | null;
formatDate(date: Date, format?: string | object, locale?: string): string;
formatDateWithOptions(date: Date, options?: Intl.DateTimeFormatOptions, locale?: string): string;
getMonthName(month: number, format?: 'long' | 'short', locale?: string): string;
getDayName(dayOfWeek: number, format?: 'long' | 'short' | 'narrow', locale?: string): string;
getDayNames(format?: 'long' | 'short' | 'narrow', locale?: string): string[];
getWeekdayNames(format?: 'long' | 'short' | 'narrow', locale?: string): string[];
getMonthNames(format?: 'long' | 'short', locale?: string): string[];
focusDate(date: Date): void;
setFocusedDate(date: Date): void;
clearFocusedDate(): void;
selectFocusedDate(): void;
getAccessibleDateLabel(date: Date): string;
getDateStateDescription(date: Date): string;
moveFocusLeft(): void;
moveFocusRight(): void;
moveFocusUp(): void;
moveFocusDown(): void;
moveFocusToStartOfWeek(): void;
moveFocusToEndOfWeek(): void;
moveFocusToStartOfMonth(): void;
moveFocusToEndOfMonth(): void;
moveFocusToNextMonth(): void;
moveFocusToPreviousMonth(): void;
moveFocusToNextYear(): void;
moveFocusToPreviousYear(): void;
getAriaLabel(date: Date): string;
getAriaLabelForMonth(month: number, year: number): string;
getAriaLabelForYear(year: number): string;
getCurrentYearRange(): YearRange;
setCurrentYearRange(date: Date): void;
setYearRangeSize(size: number): void;
getYearRangeSize(): number;
getCurrentDate(): Date;
getSelectedDate(): Date | null;
getSelectedDateRange(): DateRange;
getFocusedDate(): Date | null;
getMinDate(): Date | null;
getMaxDate(): Date | null;
getRangeSelectionMode(): boolean;
generateMonthView(): {
month: number;
year: number;
weeks: {
days: CalendarDate[];
weekNumber?: number;
}[];
weekdays: string[];
};
generateYearView(): {
months: CalendarMonth[];
year: number;
};
private getGetters;
}