import type { FC, HTMLAttributes, MutableRefObject, PropsWithChildren, ReactNode } from 'react'; import type { PopoverPlacement, PopoverPlacementBasic } from '../Popover'; import type { CalendarBaseProps } from './CalendarBase/CalendarBase'; import type { CalendarDoubleProps } from './CalendarDouble/CalendarDouble'; import type { CalendarStateType } from './store/types'; export declare enum Keys { pageUp = 33, pageDown = 34, home = 36, end = 35, left = 37, right = 39, up = 38, down = 40, enter = 13, space = 32 } export interface DateObject { day: number; monthIndex: number; year: number; } export interface ItemProps { isCurrent: boolean; isSelected: boolean; } export interface DateItem extends ItemProps { date: DateObject; isDayInCurrentMonth?: boolean; inRange?: boolean; events?: EventDay[]; disabled?: boolean; isOutOfMinMaxRange?: boolean; disabledArrowKey?: string; disabledMonths?: string; disabledDates?: string; disabledYears?: string; monthName?: string; monthIndex?: number; monthFullName?: string; yearValue?: number; quarterName?: string; } export type DateBasePorps = { isDouble?: boolean; isHovered?: boolean; inRange?: boolean; sideInRange?: 'left' | 'right'; disabled?: boolean; }; export interface DateStructureProps extends Partial, DateBasePorps { isDayInCurrentMonth?: boolean; dayOfWeek?: boolean; } export type QuarterPartialDate = { monthIndex: number; day: number; }; export interface QuarterProps extends Partial, DateBasePorps { quarterName: number; quarterIndex: number; } export interface MonthsProps extends Partial, DateBasePorps { } export interface MonthsItem extends ItemProps { monthName: string; monthIndex: number; monthFullName?: string; } export interface YearsProps extends ItemProps { } export interface YearsItem extends ItemProps { yearValue: number; } export interface EventDay { date: Date; color?: string; eventInfo?: ReactNode; } export interface DisabledDay { date: Date; } export type DateType = Date | undefined | null; export type CalendarValueType = DateType | [DateType, DateType]; export type DateInfo = { name: string; fullValue: CalendarValueType; }; export type Locales = 'ru' | 'en'; export type EventTooltipOptions = { /** * Обертка для всплывающей подсказки для событий. */ bodyWrapper?: FC; /** * Размер всплывающей подсказки для событий. */ size?: string; /** * Направление раскрытия тултипа. */ placement?: PopoverPlacement | Array; /** * Отступ окна относительно элемента, у которого оно вызвано. * @default * [0, 8] */ offset?: [number, number]; /** * Видимость стрелки (хвоста). */ hasArrow?: boolean; /** * Анимированное появление/сокрытие. */ animated?: boolean; /** * Минимальная ширина окна (в rem). */ minWidth?: number | string; /** * Максимальная ширина окна (в rem). */ maxWidth?: number | string; }; export interface Calendar extends HTMLAttributes { /** * Выбранное значение. */ value: CalendarValueType; /** * Обработчик изменения значения. */ onChangeValue: (value: Date, dateInfo?: DateInfo) => void; /** * Дата, определяющая отображаемый период календаря. */ focusedDate?: DateType; /** * Состояние календаря, отвечающее за отображение. */ date?: DateObject; /** * Минимальное значение даты. */ min?: Date; /** * Максимальное значение даты. */ max?: Date; /** * Дата с которой начинается календарная сетка при отсутсвии значения. */ renderFromDate?: Date; /** * Должны ли значения минимального и максимального дня включаться в диапазон. */ includeEdgeDates?: boolean; /** * Свойства всплывающей подсказки для событий. */ eventTooltipOptions?: EventTooltipOptions; /** * Список событий. */ eventList?: EventDay[]; /** * Список отключенных дней. */ disabledList?: DisabledDay[]; /** * Список событий по месяцам. */ eventMonthList?: EventDay[]; /** * Список отключенных месяцев. */ disabledMonthList?: DisabledDay[]; /** * Список событий по кварталам. */ eventQuarterList?: EventDay[]; /** * Список отключенных кварталов. */ disabledQuarterList?: DisabledDay[]; /** * Список событий по годам. */ eventYearList?: EventDay[]; /** * Список отключенных годов. */ disabledYearList?: DisabledDay[]; /** * Конечный тип отображения календаря: дни, месяца, года, кварталы. */ type?: CalendarStateType; /** * Выбранный язык календаря. Влияет на название дней, месяцев */ locale?: Locales; /** * Растянуть календарь на всю доступную ширину и высоту */ stretched?: boolean; } export type CalendarConfigProps = { /** * Размер календаря. */ size?: string; /** * Вид календаря. */ view?: string; }; export type CalendarRange = Omit & { /** * Выбранное значение. */ value: [DateType, DateType]; /** * Обработчик изменения значения. */ onChangeValue: (values: [DateType, DateType], dateInfo?: DateInfo) => void; /** * Обработчик для выбора стартового значения в диапазоне. */ onChangeStartOfRange?: (value: Date, dateInfo?: DateInfo) => void; }; export interface DaysMetaDescription { refs: MutableRefObject; rowSize: number; newRowIndex: number; newColumnIndex: number; columnSize: number; minColumnIndex: number; defaultState?: number[]; } export type KeyboardArrowKey = 'left' | 'right' | 'up' | 'down'; type BaseProps = { /** * Выбранное значение. */ value: Date; /** * Режим выбора: диапазон или одинарный. */ isRange?: false; /** * Режим отображения: двойной или одинарный. */ isDouble?: false; } & CalendarBaseProps; type BaseRangeProps = { /** * Режим выбора: диапазон или одинарный. */ isRange: true; /** * Режим отображения: двойной или одинарный. */ isDouble?: false; } & CalendarRange; type DoubleProps = { /** * Выбранное значение. */ value: Date; /** * Режим отображения: двойной или одинарный. */ isDouble?: true; /** * Режим выбора: диапазон или одинарный. */ isRange?: false; } & CalendarDoubleProps; type DoubleRangeProps = { /** * Режим выбора: диапазон или одинарный. */ isRange: true; /** * Режим отображения: двойной или одинарный. */ isDouble?: true; } & CalendarRange; export type ComponentVariation = { base: React.FC; baseRange: React.FC>; double: React.FC; doubleRange: React.FC>; }; export type CalendarProps = BaseProps | BaseRangeProps | DoubleProps | DoubleRangeProps; export {}; //# sourceMappingURL=Calendar.types.d.ts.map