import type { InputHTMLAttributes, SyntheticEvent, KeyboardEvent, MutableRefObject, ReactNode, CSSProperties } from 'react'; import type { DateInfo } from '../Calendar/Calendar.types'; import type { DatePickerPopoverProps, DatePickerTextFieldProps } from '../DatePicker/SingleDate/SingleDate.types'; import type { HintProps, LabelProps } from '../TextField/TextField.types'; import type { DatePickerCalendarProps } from '../DatePicker/DatePickerBase.types'; import type { CalendarStateType } from '../Calendar'; import type { Langs } from '../DatePicker/utils/dateHelper'; export type FormattedValues = { originalDate?: Date; isoDate?: string; quarterInfo?: DateInfo; }; export type DateShortcutItemBase = { /** * Подпись к предустановленной дате */ label: string; /** * Неактивный элемент */ disabled?: boolean; /** * Слот для контента слева */ contentLeft?: ReactNode; /** * Слот для контента справа */ contentRight?: ReactNode; }; export type DateShortcutItem = DateShortcutItemBase & { /** * Значение даты, которое будет установлено при выборе */ value: Date; }; export type InputProps = { /** * Обработчик вызывается при вводе корректной даты, выборе дня на календаре или по нажатию Enter в поле ввода. * @param value - значение даты с временем * @param {Object} formattedValues - набор дат в разных форматах * @param formattedValue.originalDate - дата как экземпляр Date * @param formattedValue.isoDate - дата в формате ISO * @param formattedValue.quarterInfo - информация о кварталах, если `type='Quarters'` * @return void */ onCommitDate?: (value: string, formattedValues: FormattedValues) => void; /** * Обработчик изменения значения. * @param event - событие при изменении значения * @param value - значение даты с временем * @param {Object} formattedValues - набор дат в разных форматах * @param formattedValue.originalDate - дата как экземпляр Date * @param formattedValue.isoDate - дата в формате ISO * @return void */ onChangeValue?: (event: SyntheticEvent | null, value?: string, formattedValues?: Omit) => void; /** * Обработчик по нажатию Enter * @param event - событие при изменении значения * @param value - значение даты с временем * @return void */ onSearch?: (event?: KeyboardEvent, value?: string) => void; } & Omit & LabelProps & Omit, 'defaultValue' | 'value' | 'size'> & Pick; export type PopoverProps = Omit & Pick; export type CalendarProps = { /** * Формат даты без времени * @default `DD.MM.YYYY` */ dateFormat?: string; /** * Формат времени * @default `HH:mm:ss` */ timeFormat?: string; /** * Разделитель между датой и временем * @default ` ` */ dateTimeSeparator?: string; /** * Формат даты и времени применяется в качестве маски ввода. */ maskWithFormat?: boolean; /** * Режим отображения: одиночный или двойной. */ isDouble?: boolean; /** * Дата, которая будет установлена, * если пользователь сперва выберет время на TimeGrid. */ dateOnTimeSelectOnly?: Date; /** * Список предустановленных дат, * которые можно выбрать в выпадающем календаре */ dateShortcuts?: DateShortcutItem[]; /** * Ширина списка предустановленных дат */ dateShortcutsWidth?: CSSProperties['width']; /** * Положение списка предустановленных дат * @default 'left' */ dateShortcutsPlacement?: 'right' | 'left'; } & Omit; type VariationProps = { /** * Стиль для UI конфигурации * Влияет на выбор предустановленного набора токенов * @default 'default' */ appearance?: 'default' | 'clear'; /** * Флаг наличия разделителя для clear appearance * @default false */ hasClearDivider?: boolean; /** * Размер компонента. */ size?: string; /** * Вид компонента. */ view?: string; /** * Компонент доступен только для чтения. */ readOnly?: boolean; /** * Компонент неактивен. */ disabled?: boolean; }; export type DateTimePickerProps = VariationProps & CalendarProps & PopoverProps & InputProps & HintProps; export type DateTimePickerRootProps = { eventTooltipSize?: string; } & Omit; export type CorrectDates = { input: string; calendar: Date | undefined; time: Date | undefined; }; export type UseDateTimePickerArgs = { inputRef: MutableRefObject; outerValue?: Date | string; defaultDate?: Date; preserveInvalidOnBlur?: boolean; valueError?: boolean; valueSuccess?: boolean; type?: CalendarStateType; lang?: Langs; disabled?: boolean; readOnly?: boolean; maskWithFormat?: boolean; dateFormat?: string; timeFormat?: string; dateTimeSeparator?: string; min?: Date; max?: Date; includeEdgeDates?: boolean; dateOnTimeSelectOnly?: Date; onChangeValue?: InputProps['onChangeValue']; onCommitDate?: InputProps['onCommitDate']; onBlur?: InputProps['onBlur']; }; export {}; //# sourceMappingURL=DateTimePicker.types.d.ts.map