FieldText

Однострочный текстовый input. Базируется на FieldDecorator и @cloud-ru/ds-input-private. Несёт заголовок, подсказку, кнопки очистки и копирования (последняя — только в readonly). Слотов вокруг строки ввода не имеет — для них есть FieldCombo.

Когда использовать

  • Стандартное поле в формах, фильтрах, редакторах настроек.
  • Отображение значений только-для-чтения (readonly + автоматическая кнопка копирования).
  • Нужен префикс, иконка или кнопка-сегмент:
  • Для специфичного поведения поиска (suggest, recent) используйте @cloud-ru/ds-search, не FieldText.

Анатомия

Size (default m)

ЗначениеКогда
sПлотные таблицы, inline-редактирование
mСтандартные формы (по умолчанию)
lЛендинги, primary-формы

ValidationState (default default)

Управляет тонировкой acrylic-фона поля и иконкой подсказки. Проп error форсит error.

ЗначениеКогда
defaultНет валидации — нейтральный фон, текст подсказки textTertiary, без иконки валидации
errorПоле не прошло валидацию — красная тонировка фона
warningПредупреждение, ввод допустим — жёлтая тонировка фона
successПодтверждение успешного ввода — зелёная тонировка фона

Background (default true)

Acrylic-фон поля. При background = false поле остаётся без подложки (borderless-вид) — уместно во встроенных/inline-сценариях, где фон даёт окружающий контейнер.

Кнопки очистки и копирования

Постфикс-слот несёт взаимоисключающие кнопки:

  • Кнопка очистки (showClearButton, по умолчанию true) появляется при непустом value в редактируемом поле. В disabled и readonly она скрыта — очищать нечего.
  • Кнопка копирования (showCopyButton, по умолчанию true) появляется только при readonly и непустом value. После клика иконка на 2 секунды меняется на галочку — подтверждение, что значение скопировано.

Установка

pnpm add @cloud-ru/ds-fields
import { FieldText } from '@cloud-ru/ds-fields'

Примеры использования

Базовое поле

Базовое полеControlled FieldText с label и hint.
Как к вам обращаться
tsx
import { FieldText } from '@cloud-ru/ds-fields';
import { useState } from 'react';

export function Basic() {
  const [value, setValue] = useState('');
  return <FieldText label='Имя' hint='Как к вам обращаться' placeholder='Иван' value={value} onChange={setValue} />;
}

Валидация ошибки

Валидация ошибкиПроп error форсит validationState=error и показывает иконку, если showHintIcon.
*
Введите корректный email
tsx
import { FieldText } from '@cloud-ru/ds-fields';
import { useState } from 'react';

export function WithError() {
  const [value, setValue] = useState('abc');
  return (
    <FieldText
      label='Email'
      required
      placeholder='user@example.com'
      error={value.includes('@') ? '' : 'Введите корректный email'}
      showHintIcon
      value={value}
      onChange={setValue}
    />
  );
}

Readonly с копированием

Readonly с копированиемReadonly FieldText показывает кнопку копирования значения в буфер. После копирования иконка на 2 секунды меняется на галочку — подтверждение, что значение скопировано.
tsx
import { FieldText } from '@cloud-ru/ds-fields';

export function Readonly() {
  return <FieldText label='Token' readonly value='sk-XXXXXXXXXXXXXXXXXXXXXXXX' />;
}

Props

Types

PropsFieldTextProps
PropTypeDefaultRequiredDescription
allowMoreThanMaxLengthbooleanfalsenoРазрешить ввод свыше `maxLength` символов (счётчик продолжит расти).
autoCompletestring | booleanfalsenoВключен ли автокомплит для поля
autoFocusbooleanfalsenoВключен ли авто-фокус для поля
backgroundbooleantruenoФон поля (acrylic)
captionstringnoВторичная подпись справа
classNamestringnoCSS-класс CSS-класс корня `FieldDecorator`
data-test-idstringno
defaultValuestringnoНачальное значение (uncontrolled-режим)
disabledbooleanfalsenoПоле выключено Является ли поле деактивированным
errorstringnoОшибка (приоритетнее `hint`; форсит `validationState=error`)
fieldClassNamestringnoCSS-класс оболочки поля ввода
hintstringnoПодсказка
idstringnoЗначение html-атрибута id
innerRefRef<HTMLDivElement>noRef на корневой DOM-элемент
inputMode"decimal" | "email" | "none" | "numeric" | "search" | "tel" | "text" | "url"noРежим работы экранной клавиатуры
labelstringnoЗаголовок
labelForstringnoHTML-атрибут `for` для `<label>`
labelTooltipQuestionTooltipPropsnoПодсказка (question-tooltip) у заголовка
layoutPresetsPartial<Record<LayoutType, Partial<{ autoFocus: boolean; }>>>noПереопределение адаптивных дефолтов по раскладке. Участвует `autoFocus`: на mobile он выключен (открывает клавиатуру без действия). Вернуть на mobile — `layoutPresets={{ mobile: { autoFocus: true } }}`.
lengthFieldLengthnoСчётчик длины `current/max`
maxnumbernoМаксимальное значение поля
maxLengthnumbernoМаксимальная длина вводимого значения
minnumbernoМинимальное значение поля
namestringnoЗначение html-атрибута name
onBlurFocusEventHandler<HTMLInputElement>noКолбек обработки потери фокуса
onChange((value: string) => void)noКолбек смены значения
onClearButtonClick(() => void)noКолбек клика по кнопке очистки
onClickMouseEventHandler<HTMLInputElement>noКолбек обработки клика
onCopyButtonClick(() => void)noКолбек после копирования значения в буфер
onFocusFocusEventHandler<HTMLInputElement>noКолбек обработки получения фокуса
onKeyDownKeyboardEventHandler<HTMLInputElement>noКолбек обработки начала нажатия клавиши клавиатуры
onMouseDownMouseEventHandler<HTMLInputElement>noКолбек обработки нажатия кнопки мыши
onPasteClipboardEventHandler<HTMLInputElement>noКолбек обработки вставки значения
outlinebooleantruenoРазделитель между основным полем и слотами `elementBefore` / `elementAfter`
patternstringnoРегулярное выражение валидного инпута
placeholderstringnoЗначение плейсхолдера
readonlybooleanfalsenoТолько для чтения Является ли поле доступным только для чтения
requiredbooleannoПоказать знак обязательности `*`
showClearButtonbooleantruenoПоказывать кнопку очистки значения (как в Search)
showCopyButtonbooleantruenoПоказывать кнопку копирования значения (только при `readonly = true` и непустом `value`)
showHintIconbooleannoОтображение статус-иконки у подсказки (по умолчанию `true`)
size"l" | "m" | "s"noРазмер
spellCheckbooleantruenoЗначение атрибута spellcheck (проверка орфографии)
stepstring | numbernoМаксимальное значение поля
tabIndexnumber0noЗначение атрибута tab-index
type"email" | "number" | "password" | "tel" | "text" | "url"noТип инпута
validationState"default" | "error" | "success" | "warning"noСостояние валидации
valuestringnoЗначение поля (controlled-режим)

Types

FieldTextProps

Storybook

Figma