@uplink-protocol/calendar-controller
Version:
Flexible calendar API supporting both calendar and date-picker integrations for any JavaScript framework or library
108 lines (107 loc) • 2.75 kB
TypeScript
/**
* CalendarDate - Interface for calendar date objects
*/
export interface CalendarDate {
date?: Date;
day: number;
month?: number;
year?: number;
isCurrentMonth: boolean;
isToday: boolean;
isSelected: boolean;
isDisabled: boolean;
isInRange?: boolean;
isRangeStart?: boolean;
isRangeEnd?: boolean;
isFocused?: boolean;
}
/**
* CalendarOptions - Interface for calendar configuration options
*/
export interface CalendarOptions {
/** Minimum selectable date */
minDate?: Date;
/** Maximum selectable date */
maxDate?: Date;
/** List of disabled dates */
disabledDates?: Date[];
/** List of disabled days of the week (0 = Sunday, 1 = Monday, etc.) */
disabledDaysOfWeek?: number[];
/** Start with a specific date selected */
initialSelectedDate?: Date;
/** First day of week (0 = Sunday, 1 = Monday, etc.) */
firstDayOfWeek?: number;
/** Date format for output (defaults to ISO string) */
dateFormat?: string;
/** Hide days from previous and next months */
hideOtherMonthDays?: boolean;
/** Locale for internationalization (defaults to 'en-US') */
locale?: string;
/** Date format options for Intl.DateTimeFormat */
dateFormatOptions?: Intl.DateTimeFormatOptions;
/** Enable date range selection mode */
isRangeSelection?: boolean;
/** Show week numbers in calendar */
showWeekNumbers?: boolean;
}
/**
* DateRange - Interface for date range selection
*/
export interface DateRange {
startDate: Date | null;
endDate: Date | null;
}
/**
* CalendarMonth - Interface for calendar month objects in month view
*/
export interface CalendarMonth {
month: number;
year: number;
name: string;
isCurrentMonth: boolean;
isSelected: boolean;
isDisabled: boolean;
}
/**
* CalendarYear - Interface for calendar year objects in year view
*/
export interface CalendarYear {
year: number;
isCurrentYear: boolean;
isSelected: boolean;
isDisabled: boolean;
isInRange?: boolean;
}
/**
* YearRange - Interface for year range
*/
export interface YearRange {
startYear: number;
endYear: number;
}
/**
* CalendarWeek - Interface for a week in the calendar view
*/
export interface CalendarWeek {
days: CalendarDate[];
weekNumber?: number;
}
/**
* CalendarView - Interface for a month view with weeks
*/
export interface CalendarView {
month: number;
year: number;
weeks: CalendarWeek[];
weekdays: string[];
}
/**
* YearView - Interface for a year view with months or years
*/
export interface YearView {
year?: number;
startYear?: number;
endYear?: number;
months?: CalendarMonth[];
years?: CalendarYear[];
}