ChipsInput
Компонент для ввода и отображения множества значений.
Позволяет пользователю добавлять, удалять и редактировать элементы списка.
Каждый элемент представлен в виде отдельного компонента Chip.
Связанные компоненты:
Режим работы
Компонент поддерживает работу как в неконтролируемом режиме, так и контролируемом. Это стандартное поведение React-компонентов, прочитать про это можно в документации React ↗.
Для использования неконтролируемого режима достаточно просто не передавать value или передавать defaultValue, если
требуется задать значение по умолчанию.
Для контролируемого режима используйте связку свойств value/onChange для задания значения и его изменения.
// Неконтролируемое состояние
<ChipsInput
defaultValue={[
{
value: 'red',
label: 'Красный',
},
]}
/>;
// Контролируемое состояние
const [colors, setColors] = React.useState([]);
<ChipsInput value={colors} onChange={setColors} />;Управление вводом
Разделитель
Задаётся свойством delimiter. Позволяет добавлять несколько элементов за раз, разделяя их указанным символом.
Представляет собой символ, который будет использоваться как разделитель для автоматического создания опций из текста,
введенного или вставленного в поле ввода. Например, при delimiter="," вставка текста “Красный,Синий” в поле ввода
создаст два элемента - “Красный” и “Синий”.
Пока поддерживаются только строковые символы.
Потеря фокуса
По умолчанию при потере полем фокуса добавления в список опций не происходит.
С помощью свойства addOnBlur можно включить поведение, при котором потеря фокуса будет приводить к добавлению нового элемента.
Состояния
disabled
Свойство disabled блокирует взаимодействие с компонентом и добавляет визуальную индикацию недоступности.
Валидация
Свойство status используется для визуализации валидации компонента - некорректности заполненного поля (значение "error")
или успешной валидации (значение "valid").
Кастомизация
Визуальное оформление
С помощью свойства renderChip можно влиять на отображение конкретного значения. Вы можете изменить
стандартный компонент Chip или использовать свой компонент:
Важно отметить, что первым параметром в обработчике renderChip идёт объект со свойствами, необходимыми для
корректной работы a11y. Если для отображения опции вы используете свой компонент, убедитесь, что все эти свойства
компонент получает и корректно обрабатывает. Вторым параметром идёт объект со значением конкретной опции
(значение, переданное в value/defaultValue).
Доступность (a11y)
Компонент обеспечивает базовую доступность через стандартные HTML-атрибуты и ARIA-роли.
Для улучшения доступности рекомендуется связывать компонент с текстовым описанием одним из следующих способов:
-
обернуть в
<label>;<label> Список исполнителей <ChipsInput placeholder="Введите название" /> </label> -
указать
idилиaria-describedbyи передать в<label>илиFormItemчерезhtmlFor;<label htmlFor="chips">Список исполнителей</label> <ChipsInput placeholder="Введите название" id="chips"/><FormItem top="Список исполнителей" htmlFor="chips"> <ChipsInput placeholder="Введите название" id="chips" /> </FormItem> -
указать
aria-label;<ChipsInput placeholder="Введите название" aria-label="Список исполнителей" />
При необходимости, через свойство chipsListLabel можете указать описания списка выбранных опций.
Свойства и методы
| Свойство | Описание |
|---|---|
addOnBlur | booleanДобавляет значение в список на событие По умолчанию: - |
after | ReactNodeДобавляет иконку справа. Рекомендации:
По умолчанию: - |
align | AlignTypeПо умолчанию: - |
allowClearButton | booleanЕсли По умолчанию: - |
before | ReactNodeДобавляет иконку слева. Рекомендации:
По умолчанию: - |
chipsListLabel | string
По умолчанию: - |
ClearButton | ComponentType<FormFieldClearButtonProps>Кастомная кнопка для очистки значения.
Должна принимать обязательное свойство По умолчанию: - |
clearButtonShown | booleanПоказывать ли кнопку для очистки значения. По умолчанию: - |
clearButtonTestId | string(e2e) testId кнопки очистки. По умолчанию: - |
defaultInputValue | stringЗначение поля ввода по умолчанию. По умолчанию: - |
defaultValue | Option[]Выбранные опции по умолчанию. По умолчанию: - |
delimiter | string | RegExp | string[]Символ или строка, которая будет использоваться как разделитель для автоматического создания опций из текста, введенного в поле ввода. Принимает:
Работает в двух сценариях:
По умолчанию: - |
disabled | booleanБлокировка взаимодействия с компонентом. По умолчанию: - |
getNewOptionData | GetNewOptionData<Option>Функция для создания новой опции. По умолчанию: - |
getOptionLabel | GetOptionLabel<Option>Селектор пользовательского представления. По умолчанию: - |
getOptionValue | GetOptionValue<Option>Селектор значения. По умолчанию: - |
getRef | Ref<HTMLInputElement>Deprecated: Since 7.9.0. Вместо этого используйте По умолчанию: - |
getRootRef | Ref<HTMLDivElement>По умолчанию: - |
inputValue | stringЗначение поля ввода. По умолчанию: - |
maxHeight | numberМаксимальная высота поля. По умолчанию: - |
mode | "default" | "plain"Режим отображения.
По умолчанию: - |
onChange | OnChange<Option>Обработчик изменения выбранных опций. По умолчанию: - |
onInputChange | OnInputChangeОбработчик изменения значения в поле ввода. По умолчанию: - |
renderChip | RenderChip<Option>Render prop функция для возврата своего компонента. По умолчанию: Используется [Chip](#/Chip) |
slotProps | { root?: (HTMLAttributes<HTMLDivElement> & HasRootRef<HTMLDivElement> & HasDataAttribute); input?: (InputHTMLAttributes<...> & ... 1 more ... & HasDataAttribute) | undefined; } | undefinedСвойства, которые можно прокинуть внутрь компонента:
По умолчанию: - |
status | "default" | "error" | "valid"Статус отображения поля в форме. По умолчанию: - |
value | Option[]Выбранные опции. По умолчанию: - |