@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
153 lines (152 loc) • 5.79 kB
TypeScript
import { ControllerAdapter } from "@uplink-protocol/core";
import { ControllerMetadata } from "@uplink-protocol/core/dist/uplink/interfaces/metadata/controller-metadata.interface";
import { TimeOptions, TimeRange, TimeView } from "./interfaces";
import { TypedTimeController, TimeControllerBindings, TimeControllerMethods, TimeControllerEvents } from "./types";
/**
* TimeControllerClass - A full featured time picker controller class.
* Provides functionality for time picking and time display.
*
* This controller uses a service-oriented architecture where all the core
* functionality is delegated to specialized services.
*/
export interface TimeControllerInterface extends TypedTimeController {
_selectedTime: Date | null;
_selectedTimeRange: TimeRange;
_focusedSegment: 'hours' | 'minutes' | 'seconds' | 'milliseconds' | 'period' | null;
_minTime: Date | null;
_maxTime: Date | null;
_disabledTimes: Date[];
_disabledHours: number[];
_disabledMinutes: number[];
_disabledSeconds: number[];
_use12HourFormat: boolean;
_showSeconds: boolean;
_showMilliseconds: boolean;
_minuteStep: number;
_secondStep: number;
_locale: string;
_timeFormat: string | null;
_timeFormatOptions: Intl.DateTimeFormatOptions | null;
_isRangeSelection: boolean;
}
export declare class TimeControllerClass implements TimeControllerInterface {
bindings: TimeControllerBindings;
methods: TimeControllerMethods;
events: TimeControllerEvents;
meta?: ControllerMetadata;
__adapter?: ControllerAdapter;
options?: TimeOptions;
_selectedTime: Date | null;
_selectedTimeRange: TimeRange;
_focusedSegment: 'hours' | 'minutes' | 'seconds' | 'milliseconds' | 'period' | null;
_minTime: Date | null;
_maxTime: Date | null;
_disabledTimes: Date[];
_disabledHours: number[];
_disabledMinutes: number[];
_disabledSeconds: number[];
_use12HourFormat: boolean;
_showSeconds: boolean;
_showMilliseconds: boolean;
_minuteStep: number;
_secondStep: number;
_locale: string;
_timeFormat: string | null;
_timeFormatOptions: Intl.DateTimeFormatOptions | null;
_isRangeSelection: boolean;
private _timeService;
private _timeFormattingService;
private _timeSelectionService;
private _timeViewStateService;
private _timeEventManagerService;
private _timeNavigationService;
private _timeConstraintsService;
private _timeGeneratorService;
private _timeConfigurationService;
private _timeValidationService;
/**
* Constructor - initializes the controller with optional configuration
* @param options Time configuration options
*/
constructor(options?: TimeOptions);
selectTime(time: Date): void;
goToNextHour(): void;
goToPreviousHour(): void;
goToNextMinute(): void;
goToPreviousMinute(): void;
goToNextSecond(): void;
goToPreviousSecond(): void;
clearSelection(): void;
setRangeSelectionMode(isRange: boolean): void;
get selectedTimeRange(): {
start: Date | null;
end: Date | null;
startTime: Date | null;
endTime: Date | null;
};
setHour(hour: number, period?: 'AM' | 'PM'): void;
setMinute(minute: number): void;
setSecond(second: number): void;
setMillisecond(millisecond: number): void;
goToCurrentTime(): void;
togglePeriod(): void;
setFocusedSegment(segment: 'hours' | 'minutes' | 'seconds' | 'milliseconds' | 'period' | null): void;
clearFocusedSegment(): void;
focusSegment(segment: 'hours' | 'minutes' | 'seconds' | 'milliseconds' | 'period'): void;
setMinTime(time: Date | null): void;
setMaxTime(time: Date | null): void;
setDisabledTimes(times: Date[]): void;
addDisabledTime(time: Date): Date[];
removeDisabledTime(time: Date): Date[];
getDisabledTimes(): Date[];
setDisabledHours(hours: number[]): number[];
addDisabledHour(hour: number): number[];
removeDisabledHour(hour: number): number[];
getDisabledHours(): number[];
setDisabledMinutes(minutes: number[]): number[];
setDisabledSeconds(seconds: number[]): number[];
setLocale(locale: string): void;
getLocale(): string;
setTimeFormatOptions(options: Intl.DateTimeFormatOptions | null): void;
getTimeFormatOptions(): Intl.DateTimeFormatOptions | null;
getFormattedTime(): string | null;
formatTime(time: Date, options?: Intl.DateTimeFormatOptions | string): string;
setUse12HourFormat(use12Hour: boolean): void;
setShowSeconds(show: boolean): void;
setShowMilliseconds(show: boolean): void;
setMinuteStep(step: number): void;
setSecondStep(step: number): void;
isCurrentTime(time: Date): boolean;
generateTimeView(): TimeView;
isTimeValid(time: Date): boolean;
roundToStep(time: Date): Date;
moveFocusToNextSegment(): void;
moveFocusToPreviousSegment(): void;
moveFocusToHours(): void;
moveFocusToMinutes(): void;
moveFocusToSeconds(): void;
moveFocusToMilliseconds(): void;
moveFocusToPeriod(): void;
selectFocusedSegment(): void;
/**
* Generate time segments for binding
* @returns Time segments object
*/
private generateTimeSegments;
/**
* Create generation options from current state
* @returns Time generation options
*/
private createGenerationOptions;
/**
* Update all reactive bindings
*/
private updateAllBindings;
}
/**
* TimeController - Factory function that creates and returns a new TimeControllerClass instance.
*
* @param options Optional time configuration options
* @returns A TimeControllerClass instance
*/
export declare const TimeController: (options?: TimeOptions) => TimeControllerClass;