@uplink-protocol/calendar-controller
Version:
Flexible calendar API supporting both calendar and date-picker integrations for any JavaScript framework or library
85 lines (84 loc) • 4.23 kB
TypeScript
import { DateRange } from '../interfaces/calendar.interfaces';
import { IViewStateService } from '../interfaces/view-state.service.interfaces';
import { IDateSelectionService } from '../interfaces/date-selection.service.interfaces';
import { IConstraintsService } from '../interfaces/constraints.service.interfaces';
import { IEventManagerService } from '../interfaces/event-manager.service.interfaces';
import { Binding, EventEmitter } from '@uplink-protocol/core';
import { CalendarDate } from '../interfaces/calendar.interfaces';
import { ICalendarStateService } from '../interfaces';
/**
* Implementation of CalendarStateService
* Responsible for centralizing and managing the state of the calendar
*/
export declare class CalendarStateService implements ICalendarStateService {
private _viewStateService;
private _dateSelectionService;
private _constraintsService;
private _eventManagerService?;
constructor(_viewStateService: IViewStateService, _dateSelectionService: IDateSelectionService, _constraintsService: IConstraintsService, _eventManagerService?: IEventManagerService | undefined);
/**
* Set the minimum selectable date
*/
setMinDate(date: Date | null, _currentMinDate: Date | null, currentDate: Date, bindings: {
currentMonth: Binding<number>;
currentYear: Binding<number>;
monthName: Binding<string>;
calendarDays: Binding<CalendarDate[]>;
}, getMonthNameFn: (month: number) => string, generateCalendarDaysFn: () => CalendarDate[]): Date | null;
/**
* Set the maximum selectable date
*/
setMaxDate(date: Date | null, _currentMaxDate: Date | null, currentDate: Date, bindings: {
currentMonth: Binding<number>;
currentYear: Binding<number>;
monthName: Binding<string>;
calendarDays: Binding<CalendarDate[]>;
}, getMonthNameFn: (month: number) => string, generateCalendarDaysFn: () => CalendarDate[]): Date | null;
/**
* Set disabled dates
*/
setDisabledDates(dates: Date[], currentDate: Date, bindings: {
currentMonth: Binding<number>;
currentYear: Binding<number>;
monthName: Binding<string>;
calendarDays: Binding<CalendarDate[]>;
}, getMonthNameFn: (month: number) => string, generateCalendarDaysFn: () => CalendarDate[]): Date[];
/**
* Add a specific date to the disabled dates list
*/
addDisabledDate(date: Date, disabledDates: Date[], calendarDaysBinding: Binding<CalendarDate[]>, generateCalendarDaysFn: () => CalendarDate[]): Date[];
/**
* Remove a specific date from the disabled dates list
*/
removeDisabledDate(date: Date, disabledDates: Date[], calendarDaysBinding: Binding<CalendarDate[]>, generateCalendarDaysFn: () => CalendarDate[]): Date[];
/**
* Set the date selection mode
*/
setRangeSelectionMode(isRange: boolean, isRangeSelectionBinding: Binding<boolean>, calendarDaysBinding: Binding<CalendarDate[]>, generateCalendarDaysFn: () => CalendarDate[]): boolean;
/**
* Clear the current selection
*/
clearSelection(isRangeSelection: boolean, selectedDateBinding: Binding<Date | null>, selectedDateRangeBinding: Binding<DateRange>, calendarDaysBinding: Binding<CalendarDate[]>, generateCalendarDaysFn: () => CalendarDate[]): {
selectedDate: Date | null;
selectedDateRange: DateRange;
};
/**
* Focus a specific date for accessibility
*/
focusDate(date: Date | null, focusedDateBinding: Binding<Date | null>): Date | null;
/**
* Select a date based on the current selection mode
*/
selectDate(date: Date, isRangeSelection: boolean, currentSelectedDate: Date | null, currentDateRange: DateRange, isDateDisabledFn: (date: Date) => boolean, bindings: {
selectedDate: Binding<Date | null>;
selectedDateRange: Binding<DateRange>;
focusedDate: Binding<Date | null>;
calendarDays: Binding<CalendarDate[]>;
}, events: {
dateSelected?: EventEmitter<Date>;
dateRangeSelected?: EventEmitter<DateRange>;
} | undefined, generateCalendarDaysFn: () => CalendarDate[]): {
selectedDate: Date | null;
selectedDateRange: DateRange;
};
}