@ipohjs/calendar
Version:
Minimal module to compute a calendar
58 lines • 1.96 kB
TypeScript
interface BaseCalendar {
disabledDatesSet: Set<number>;
disabledDaysSet: Set<number>;
key: string;
}
export interface CalendarDay extends CalendarWeekday {
disabled: boolean;
fullDate: Date | null;
key: string;
}
export interface CalendarGrid extends BaseCalendar {
datesGrid: DatesGridRow[];
toJSON(): SerializableCalendarGrid;
}
export interface CalendarInit<CM extends CalendarMode> extends CalendarInitBase {
calendarMode?: CM;
date: Date;
dayFormat: Intl.DateTimeFormat;
disabledDates?: Date[];
disabledDays?: number[];
fullDateFormat: Intl.DateTimeFormat;
locale: string;
max?: Date;
min?: Date;
weekNumberType?: WeekNumberType;
}
export interface CalendarInitBase {
firstDayOfWeek?: number;
showWeekNumber?: boolean;
weekNumberTemplate?: string;
}
export interface CalendarList extends BaseCalendar {
datesList: CalendarDay[];
toJSON(): SerializableCalendarList;
}
export type CalendarMode = 'grid' | 'list';
export type CalendarResult<CM extends CalendarMode> = CM extends 'list' ? CalendarList : CalendarGrid;
export interface CalendarWeekday {
label: string;
value: string;
}
export interface DatesGridColumn extends CalendarDay {
}
export interface DatesGridRow {
columns: DatesGridColumn[];
key: string;
}
export type DateTimeFormatter = Intl.DateTimeFormat['format'];
type OmitKey<T extends object, K extends keyof T> = Omit<T, K>;
type SerializableBaseCalendar<T extends BaseCalendar> = {
disabledDates: number[];
disabledDays: number[];
} & OmitKey<T, 'disabledDatesSet' | 'disabledDaysSet'>;
export type SerializableCalendarGrid = SerializableBaseCalendar<OmitKey<CalendarGrid, 'toJSON'>>;
export type SerializableCalendarList = SerializableBaseCalendar<OmitKey<CalendarList, 'toJSON'>>;
export type WeekNumberType = 'first-4-day-week' | 'first-day-of-year' | 'first-full-week';
export {};
//# sourceMappingURL=types.d.ts.map