UNPKG

@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
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; }; }