import type { ChangeEvent, HTMLAttributes } from 'react';
import type { DateShortcutItemBase } from '../../../components/DateTimePicker/DateTimePicker.types';
import type { RangeInnerProps } from '../../Range/Range.types';
import type { DatePickerCalendarProps, DatePickerVariationProps, FormattedDateValues } from '../DatePickerBase.types';
import type { DatePickerPopoverProps } from '../SingleDate/SingleDate.types';
import type { DateInfo, DateType } from '../../Calendar/Calendar.types';
export type DatePickerRangePlacementBasic = 'top' | 'bottom';
export type DatePickerRangePlacementVariation = 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end';
export type DatePickerRangePlacement = DatePickerRangePlacementBasic | DatePickerRangePlacementVariation;
export type ChangeInstanceCallback = (event: ChangeEvent | null, value?: string, originalDate?: DateType, isoDate?: string) => void;
/**
* @deprecated Используйте новую сигнатуру с объектом formattedValues
*/
export type CommitInstanceCallbackDeprecated = (value: Date | string, error?: boolean, success?: boolean, dateInfo?: DateInfo, originalDate?: Date, isoDate?: string) => void;
export type CommitInstanceCallback = (value: Date | string, formattedValues: FormattedDateValues) => void;
type BaseRangeProps = Omit;
export type DatePickerRangeFieldProps = {
/**
* Задает выравнивание индикатора обязательности поля
* @default right
*/
requiredPlacement?: 'left' | 'right';
/**
* Флаг обязательности поля
*/
required?: boolean;
/**
* Флаг наличия индикатора обязательности поля
* @default false
*/
hasRequiredIndicator?: boolean;
/**
* Выбранные значения.
*/
value?: [DateType | string, DateType | string];
/**
* Сохранять невалидное значение после блюра полей ввода
*/
preserveInvalidOnBlur?: boolean;
/**
* Значение по умолчанию для первого поля.
*/
defaultFirstDate?: Date;
/**
* Значение по умолчанию для второго поля.
*/
defaultSecondDate?: Date;
/**
* Свойство для названия поля при работе с формой
*/
name?: string;
/**
* Коллбэк, вызываемый при изменении первого поля ввода
*/
onChangeFirstValue?: ChangeInstanceCallback;
/**
* Коллбэк, вызываемый при изменении второго поля ввода
*/
onChangeSecondValue?: ChangeInstanceCallback;
/**
* Callback по нажатию Enter в поле ввода или выборе дня на календаре для первой даты.
* @param value - значение даты
* @param {Object} formattedValues - набор значений в разных форматах
* @param formattedValues.error - статус ошибки валидации
* @param formattedValues.success - статус успешной валидации
* @param formattedValues.dateInfo - информация о дате (для кварталов и т.д.)
* @param formattedValues.originalDate - дата как экземпляр Date
* @param formattedValues.isoDate - дата в формате ISO
* @return void
*/
onCommitFirstDate?: CommitInstanceCallback;
/**
* Callback по нажатию Enter в поле ввода или выборе дня на календаре для второй даты.
* @param value - значение даты
* @param {Object} formattedValues - набор значений в разных форматах
* @param formattedValues.error - статус ошибки валидации
* @param formattedValues.success - статус успешной валидации
* @param formattedValues.dateInfo - информация о дате (для кварталов и т.д.)
* @param formattedValues.originalDate - дата как экземпляр Date
* @param formattedValues.isoDate - дата в формате ISO
* @return void
*/
onCommitSecondDate?: CommitInstanceCallback;
/**
* Свойство устарело, используется формой. Вместо используйте onCommitFirstDate и onCommitSecondDate
* @deprecated
*/
onChange?: (event: {
target: {
value?: string;
name?: string;
};
}) => void;
} & BaseRangeProps;
export type DateShortcutItem = DateShortcutItemBase & {
value: [Date?, Date?];
};
export type DatePickerDoublePopoverProps = Omit & {
/**
* Сторона открытия календаря относительно поля ввода.
* @default
* ["bottom", "top"]
*/
placement?: DatePickerRangePlacement | Array;
/**
* Отобразить двойной календарь
*/
isDoubleCalendar?: boolean;
/**
* Список предустановленных дат,
* которые можно выбрать в выпадающем календаре
*/
dateShortcuts?: DateShortcutItem[];
};
export type DatePickerRangeProps = DatePickerVariationProps & DatePickerRangeFieldProps & DatePickerCalendarProps & DatePickerDoublePopoverProps & HTMLAttributes & {
/**
* Вид компонента
*/
appearance?: 'default' | 'clear';
/**
* Флаг наличия разделителя для clear appearance
* @default false
*/
hasClearDivider?: boolean;
};
export type RootDatePickerRangeProps = {
eventTooltipSize?: string;
} & Omit;
export {};
//# sourceMappingURL=RangeDate.types.d.ts.map