import type { ChangeEvent, InputHTMLAttributes, ReactNode } from 'react';
import type { HintProps, RequiredProps, LabelProps } from '../TextField/TextField.types';
export type LayoutOptions = {
/**
* Отображать ли значения минимума и максимума интервала.
*/
hasScale?: boolean;
/**
* Метка-подпись к элементу справа.
*/
titleCaption?: ReactNode;
/**
* Слот для контента слева.
*/
contentLeft?: React.ReactElement;
/**
* Слот для контента справа.
*/
contentRight?: React.ReactElement;
/**
* Слот для вспомогательного текста слева.
*/
textBefore?: string;
/**
* Слот для вспомогательного текста справа.
*/
textAfter?: string;
} & LabelProps;
export type RequiredOptions = RequiredProps;
export type HintOptions = HintProps;
type Values = {
raw: string | number | undefined;
formatted: string | number | undefined;
};
export type SliderProps = {
/**
* Минимальное значение
*/
min: number;
/**
* Максимальное значение
*/
max: number;
/**
* Шаг изменения значения
*/
step?: number;
/**
* Отображение ручки слайдера
* @default true
*/
hasPointer?: boolean;
/**
* Массив числовых меток на шкале слайдера.
* При наличии — отображаются точки и подписи под слайдером для каждого значения.
* Имеют приоритет над `showScale`.
*/
scaleTicks?: number[];
/**
* Вызывается при перемещении ползунка
*/
onChangeSlider?: (values?: Values) => void;
};
type TextFieldProps = {
/**
* Вызывается при изменении значения в поле ввода
*/
onChangeTextField?: (values?: Values) => void;
};
export type TextFieldSliderProps = {
/**
* Значение (контролируемый вариант компонента)
*/
value?: number | string;
/**
* Значение по умолчанию (неконтролируемый вариант компонента)
*/
defaultValue?: number;
/**
* Количество знаков после запятой
* @default 2
*/
decimalScale?: number;
/**
* Стиль группировки тысяч:
* - 'thousand' (123 456 789),
* - 'lakh' (индийский стиль, 12 34 56 789),
* - 'wan' (китайский стиль, 1 2345 6789),
* - 'none' (без группировки).
*/
thousandsGroupStyle?: 'thousand' | 'lakh' | 'wan' | 'none';
/**
* Разделитель тысяч.
* Может быть строкой (например, ",") или булевым значением.
* @default ' ' (пробел)
* @example 123 456 789
*/
thousandSeparator?: boolean | string;
/**
* Разделитель десятичных знаков (например, ".").
* @default .
* @example 123.456
*/
decimalSeparator?: string;
/**
* Фиксирует количество знаков после запятой, даже если число их не содержит (добавляет нули).
*/
fixedDecimalScale?: boolean;
/**
* Стиль для UI конфигурации
* Влияет на выбор предустановленного набора токенов
* @default default
*/
appearance?: 'default' | 'clear';
/**
* Размер контрола.
*/
size?: string;
/**
* Вид контрола.
*/
view?: string;
/**
* Вид слайдера.
*/
sliderView?: string;
/**
* Компонент доступен только для чтения.
*/
readOnly?: boolean;
/**
* Компонент неактивен.
*/
disabled?: boolean;
/**
* Вызывается при изменении значения компонента
*/
onChange?: (event?: ChangeEvent, values?: Values) => void;
} & HintOptions & RequiredOptions & LayoutOptions & TextFieldProps & SliderProps & Omit, 'size' | 'required' | 'value' | 'onChange'>;
export type TextFiledSliderRootProps = Pick;
export {};
//# sourceMappingURL=TextFieldSlider.types.d.ts.map