import type { CSSProperties, HTMLAttributes, RefObject, SyntheticEvent } from 'react'; import type { HintProps, LabelProps } from '../TextField/TextField.types'; export type Placement = 'top' | 'top-start' | 'top-end' | 'right' | 'right-start' | 'right-end' | 'bottom' | 'bottom-start' | 'bottom-end' | 'left' | 'left-start' | 'left-end'; export type TimePickerFloatingPopoverProps = { target: React.ReactNode | ((ref: React.MutableRefObject) => React.ReactNode); children: React.ReactNode; opened: boolean; onToggle: () => void; placement: Placement; portal?: string | React.RefObject; offset?: [number, number]; zIndex?: React.CSSProperties['zIndex']; disableFlip?: boolean; }; export type TimePickerChangeEvent = { value?: string; timeValues: { hour?: number; minute?: number; second?: number; }; }; export type TextFieldProps = { /** * Выравнивание индикатора обязательности поля */ requiredPlacement?: 'left' | 'right'; /** * Флаг обязательности поля */ required?: boolean; /** * Флаг наличия индикатора обязательности поля */ hasRequiredIndicator?: boolean; /** * Выбранное значение времени в формате HH:mm:ss */ value?: string; /** * Значение по умолчанию */ defaultValue?: Date; /** * Плейсхолдер поля ввода */ placeholder?: string; /** * Флаг некорректного значения */ valueError?: boolean; /** * Флаг корректного значения */ valueSuccess?: boolean; /** * Вспомогательный текст снизу слева */ leftHelper?: string; /** * Левый контент */ contentLeft?: React.ReactElement; /** * Правый контент */ contentRight?: React.ReactElement; /** * Текст перед полем ввода */ textBefore?: string; /** * Текст после поля ввода */ textAfter?: string; /** * Автозаполнение полей. */ autoComplete?: string; /** * Обработчик изменения значения */ onChange?: (event: TimePickerChangeEvent) => void; } & LabelProps; export type TimePickerPopoverProps = { /** * Видимость поповера */ opened?: boolean; /** * Сторона открытия TimePicker относительно поля ввода. * @default bottom */ placement?: Placement; /** * Отступ поповера относительно поля ввода */ offset?: [number, number]; /** * CSS-свойство z-index для выпадающего списка времени * @default 1000 */ zIndex?: CSSProperties['zIndex']; /** * Контейнер для позиционирования */ frame?: 'document' | string | RefObject; /** * Закрывать при клике вне области */ closeOnOverlayClick?: boolean; /** * Закрывать при нажатии Escape */ closeOnEsc?: boolean; /** * Отключить автоматическое переворачивание дропдауна при нехватке места */ disableFlip?: boolean; /** * Использовать портал для рендера */ usePortal?: boolean; /** * Обработчик изменения видимости */ onToggle?: (isOpen: boolean, event?: SyntheticEvent | Event) => void; }; type BasicProps = { /** * Выравнивание выпадающего списка * @deprecated использовать `placement="bottom-right"` */ dropdownAlign?: 'left' | 'right'; /** * Ширина выпадающего списка */ dropdownWidth?: 'auto' | 'fullWidth' | CSSProperties['width']; /** * Высота выпадающего списка */ dropdownHeight?: CSSProperties['height']; /** * Количество колонок (2 - часы/минуты, 3 - часы/минуты/секунды) */ columnsQuantity?: 2 | 3; /** * Стиль для UI конфигурации * Влияет на выбор предустановленного набора токенов * @default 'default' */ appearance?: 'default' | 'clear'; /** * Флаг наличия разделителя для clear appearance * @default false */ hasClearDivider?: boolean; /** * Размер компонента */ size?: string; /** * Стиль компонента */ view?: string; /** * Флаг неактивного состояния */ disabled?: boolean; /** * Флаг состояния только для чтения */ readonly?: boolean; /** * Растягивание на всю ширину */ stretched?: boolean; }; export type TimePickerProps = BasicProps & TextFieldProps & HintProps & TimePickerPopoverProps & Omit, 'defaultValue'>; export {}; //# sourceMappingURL=TimePicker.types.d.ts.map