import './Input.css'; import React from 'react'; import type { HTMLAttributes, InputHTMLAttributes, Ref, ReactNode } from 'react'; import type { FormElementSizeVariant } from '../../types/FormElementSizeVariant'; import { type FieldHintProps } from '../FieldHint'; import { type FieldIconProps } from '../FieldIcon'; import { type FieldLabelProps } from '../FieldLabel'; export declare const inputTypeVariant: readonly ["number", "date", "datetime-local", "time", "text", "tel", "password", "email"]; export type InputTypeVariant = (typeof inputTypeVariant)[number]; export type InputSizeVariant = FormElementSizeVariant; type InputElement = InputHTMLAttributes; export type InputProps = { /** Атрибут id для элемента input */ id?: InputElement['id']; /** Атрибут name для элемента input */ name?: InputElement['name']; /** Текст над полем ввода */ label?: string; /** * Размер компонента * @default m */ size?: InputSizeVariant; /** Подсказка. Отображается, когда вариант не выбран */ placeholder?: InputElement['placeholder']; /** * Если {true} устанавливает автофокус * @default false */ autoFocus?: InputElement['autoFocus']; /** * Если {true} переводит поле в состояние ошибки * @default false */ error?: boolean; /** * Если {true} растягивает поле на всю ширину * @default false */ fullWidth?: boolean; /** Дополнительное описание к полю */ hint?: ReactNode | null; /** Атрибут type для элемента input */ type?: InputTypeVariant; /** * Если {true} делает элемент неактивным * @default false */ disabled?: boolean; /** Если {true} элемент отображается только для чтения * @default false */ readOnly?: boolean; /** * Если {true} делает элемент обязательным к заполнению * @default false */ required?: boolean; /** Минимальное количество символов разрешенных для ввода */ minLength?: InputElement['minLength']; /** Максимальное количество символов разрешенных для ввода */ maxLength?: InputElement['maxLength']; /** Текст или иконка слева */ renderLeft?: FieldIconProps['icon']; /** Текст или иконка справа */ renderRight?: FieldIconProps['icon']; /** Выбранное значение */ value?: InputElement['value']; /** Значение по умолчанию (неконтролируемый компонент) */ defaultValue?: InputElement['defaultValue']; /** Обработчик события на изменение значения поля */ onChange?: InputElement['onChange']; /** Ссылка на нативный элемент input */ inputRef?: Ref; /** Ссылка на нативный элемент label */ bodyRef?: Ref; /** Свойства нативного элемента input */ inputProps?: InputElement & { 'data-testid'?: string; }; /** Ссылка на компонент FieldLabel */ labelRef?: FieldLabelProps['ref']; /** Свойства компонента FieldLabel */ labelProps?: FieldLabelProps; /** Свойства компонента FieldHint */ hintProps?: FieldHintProps; /** Ссылка на корневой DOM-элемент компонента */ ref?: Ref; /** Атрибут, используемый для идентификации элемента в целях тестирования */ 'data-testid'?: string; } & Omit, 'value' | 'defaultValue' | 'onChange'>; export declare const cnInput: import("@bem-react/classname").ClassNameFormatter; export declare const Input: React.ForwardRefExoticComponent & React.RefAttributes>; export {};