@uplink-protocol/calendar-controller
Version:
Flexible calendar API supporting both calendar and date-picker integrations for any JavaScript framework or library
54 lines (53 loc) • 3.11 kB
TypeScript
import { IAccessibilityService } from '../interfaces/accessibility.service.interfaces';
import { IAccessibilityManagerService } from '../interfaces/accessibility-manager.service.interfaces';
import { DateRange } from '../interfaces/calendar.interfaces';
import { Binding } from '@uplink-protocol/core';
import { CalendarDate } from '../interfaces/calendar.interfaces';
import { IViewStateService } from '../interfaces/view-state.service.interfaces';
/**
* Implementation of AccessibilityManagerService
* Handles keyboard navigation, focus management, and accessibility functions
* by coordinating between AccessibilityService and other services
*/
export declare class AccessibilityManagerService implements IAccessibilityManagerService {
private _accessibilityService;
private _viewStateService;
constructor(_accessibilityService: IAccessibilityService, _viewStateService: IViewStateService);
/**
* Handles focus management including view updates and navigation
* @param direction Direction to move focus
* @param focusedDate Currently focused date
* @param selectedDate Selected date as fallback
* @param currentDate Current displayed date
* @param calendarDaysBinding Binding for calendar days
* @param generateCalendarDaysFn Function to generate calendar days
* @param updateDateFn Function to handle date updates if navigation is needed
* @returns The new focused date
*/
manageFocus(direction: 'right' | 'left' | 'up' | 'down' | 'start' | 'end' | 'prevMonth' | 'nextMonth' | 'prevYear' | 'nextYear', focusedDate: Date | null, selectedDate: Date | null, currentDate: Date, calendarDaysBinding: Binding<CalendarDate[]>, generateCalendarDaysFn: () => CalendarDate[], updateDateFn?: (date: Date) => void): Date;
/**
* Select the currently focused date
* @param focusedDate Currently focused date
* @param selectDateFn Function to select the date
* @returns Boolean indicating if a selection was made
*/
selectFocusedDate(focusedDate: Date | null, selectDateFn: (date: Date) => void): boolean;
/**
* Get accessible date label for screen readers
* @param date The date to get a label for
* @param localeMonthNameFn Optional function to get localized month name
* @returns Accessible date label string
*/
getAccessibleDateLabel(date: Date, localeMonthNameFn?: (month: number) => string): string;
/**
* Get date state description for screen readers
* @param date The date to check
* @param selectedDate Currently selected date
* @param selectedDateRange Currently selected date range
* @param isRangeSelection Whether range selection mode is active
* @param isDateDisabledFn Function to check if date is disabled
* @param isTodayFn Function to check if date is today
* @returns State description string
*/
getDateStateDescription(date: Date, selectedDate: Date | null, selectedDateRange: DateRange, isRangeSelection: boolean, isDateDisabledFn: (date: Date) => boolean, isTodayFn: (date: Date) => boolean): string;
}