@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
80 lines (79 loc) • 2.67 kB
TypeScript
import { DateRange } from "../interfaces";
/**
* CalendarStateManager - Centralized state management for the calendar controller
* Manages all state variables with type-safe getters and setters
*/
export declare class CalendarStateManager {
private _currentDate;
private _selectedDate;
private _selectedDateRange;
private _focusedDate;
private _minDate;
private _maxDate;
private _disabledDates;
private _disabledDaysOfWeek;
private _firstDayOfWeek;
private _dateFormat;
private _isRangeSelection;
private _hideOtherMonthDays;
private _locale;
private _dateFormatOptions;
private _yearRangeSize;
private _currentYearRangeBase;
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 all state as a snapshot
*/
getStateSnapshot(): {
currentDate: Date;
selectedDate: Date | null;
selectedDateRange: {
startDate: Date | null;
endDate: Date | null;
};
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;
};
}