import { SizeTokenValue, QA } from '../common'; import { CSSProperties, HTMLAttributes, InputHTMLAttributes, MouseEventHandler, ReactNode, Ref } from 'react'; import { MaskInputOptions } from 'maska'; type InputBaseProps = Pick, 'type' | 'name' | 'disabled' | 'readOnly' | 'required' | 'autoFocus' | 'autoComplete' | 'onFocus' | 'onBlur' | 'onClick' | 'onInput' | 'onChange' | 'tabIndex' | 'placeholder'>; export type InputInputComponent = React.FC>; export type InputProps = { /** Размер */ size?: SizeTokenValue | `${SizeTokenValue}`; /** Принудительная установка состояния "Заполнено" */ filled?: boolean; /** Принудительная установка состояния "В фокусе" */ focused?: boolean; /** Без границы */ unborder?: boolean; /** Всплывающая подсказка если значение не помещается */ overflowTooltip?: boolean; /** Показать loader */ isLoading?: boolean; /** Абсолютное позиционирование caption, не занимает место между полями */ absoluteCaption?: boolean; /** Ошибка в поле */ error?: boolean | ReactNode; /** Подпись */ caption?: ReactNode; /** Label */ label?: string | React.FC, 'error'>>; /** Значение */ value: string | undefined; /** Иконка | Контент слева */ startAdornment?: ReactNode; /** Иконка | Контент справа */ endAdornment?: ReactNode; /** Обработчик нажатия на крестик(очистки) * * Крестик отображатся при передаче */ onClearClick?: MouseEventHandler; /** Маска поля * * Применяется при первом рендере * * Обновляется только при смене key */ mask?: MaskInputOptions & { /** Использовать для смены свойств маски */ key?: string; }; /** ref контейнера */ containerRef?: Ref; /** Свойства элемента input */ inputProps?: InputHTMLAttributes & { ref?: Ref; }; /** Компонент input */ inputComponent?: InputInputComponent; } & QA & InputBaseProps & Pick & Pick, 'className'>; export type InputStyles = { isDisabled?: boolean; isReadOnly?: boolean; isFilled?: boolean; isFocused: boolean; isUnborder?: boolean; isOverflowTooltip?: boolean; isLoading?: boolean; isLabeled: boolean; isMasked: boolean; isSmall: boolean; isError: boolean; isAbsoluteCaption: boolean; }; export type InputInternalProps = InputProps & { style: InputStyles; }; export {};