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)
captionstring—noВторичная подпись справа
classNamestring—noCSS-класс CSS-класс корня `FieldDecorator`
data-test-idstring—no
defaultValuestring—noНачальное значение (uncontrolled-режим)
disabledbooleanfalsenoПоле выключено Является ли поле деактивированным
errorstring—noОшибка (приоритетнее `hint`; форсит `validationState=error`)
fieldClassNamestring—noCSS-класс оболочки поля ввода
hintstring—noПодсказка
idstring—noЗначение html-атрибута id
innerRefRef<HTMLDivElement>—noRef на корневой DOM-элемент
inputMode"decimal" | "email" | "none" | "numeric" | "search" | "tel" | "text" | "url"—noРежим работы экранной клавиатуры
labelstring—noЗаголовок
labelForstring—noHTML-атрибут `for` для `<label>`
labelTooltipQuestionTooltipProps—noПодсказка (question-tooltip) у заголовка
layoutPresetsPartial<Record<LayoutType, Partial<{ autoFocus: boolean; }>>>—noПереопределение адаптивных дефолтов по раскладке. Участвует `autoFocus`: на mobile он выключен (открывает клавиатуру без действия). Вернуть на mobile — `layoutPresets={{ mobile: { autoFocus: true } }}`.
lengthFieldLength—noСчётчик длины `current/max`
maxnumber—noМаксимальное значение поля
maxLengthnumber—noМаксимальная длина вводимого значения
minnumber—noМинимальное значение поля
namestring—noЗначение 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`
patternstring—noРегулярное выражение валидного инпута
placeholderstring—noЗначение плейсхолдера
readonlybooleanfalsenoТолько для чтения Является ли поле доступным только для чтения
requiredboolean—noПоказать знак обязательности `*`
showClearButtonbooleantruenoПоказывать кнопку очистки значения (как в Search)
showCopyButtonbooleantruenoПоказывать кнопку копирования значения (только при `readonly = true` и непустом `value`)
showHintIconboolean—noОтображение статус-иконки у подсказки (по умолчанию `true`)
size"l" | "m" | "s"—noРазмер
spellCheckbooleantruenoЗначение атрибута spellcheck (проверка орфографии)
stepstring | number—noМаксимальное значение поля
tabIndexnumber0noЗначение атрибута tab-index
type"email" | "number" | "password" | "tel" | "text" | "url"—noТип инпута
validationState"default" | "error" | "success" | "warning"—noСостояние валидации
valuestring—noЗначение поля (controlled-режим)

Types

FieldTextProps

Storybook

Figma