/** * элемент для рендера в календаре */ export type CalendarGridItem = { /** * дата календаря, будет использована в качестве опорной при выборе в календаре */ date: Date; /** * флаг, обозначающий, что дата совпадает с выбранным */ isSelected: boolean; /** * флаг, обозначающий, что дата совпадает с текущей датой пользователя */ isCurrentInUserLocalTime: boolean; /** * флаг, обозначающий, что дата попадает в выбранный пользователем интервал */ isInSelectedRange: boolean; /** * флаг, обозначающий что элемент будет не доступен к выбору */ isDisabled: boolean; } & T; export type GridBuilderResult = CalendarGridItem[]; type SelectedRange = { /** * Дата промежутка, может быть как началом, так и концом */ dateA: Date; /** * Дата промежутка, может быть как началом, так и концом */ dateB: Date; }; type GridBuilderOptions = { /** * опорная дата, для построения массива календаря */ baseDate: Date; /** * выбранная дата, будет использоваться для сверки элемента массива с этой датой на предмет совпадения */ selectedDate?: Date | null; /** * Массив выбранных промежутков */ selectedRanges?: SelectedRange[] | null; } & T; export type CalendarGridBuilder = (options: GridBuilderOptions) => GridBuilderResult; export {};