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> По умолчанию: - |
getRootRef | Ref<HTMLDivElement> Ссылка на корневой элемент. По умолчанию: - |
inputValue | string Значение поля ввода. По умолчанию: - |
maxHeight | number Максимальная высота поля. По умолчанию: - |
mode | "default" | "plain" Режим отображения.
По умолчанию: - |
onChange | OnChange<Option> Обработчик изменения выбранных опций. По умолчанию: - |
onInputChange | OnInputChange Обработчик изменения значения в поле ввода. По умолчанию: - |
renderChip | RenderChip<Option> Render prop функция для возврата своего компонента. По умолчанию: Используется [Chip](#/Chip) |
status | "default" | "error" | "valid" Статус отображения поля в форме. По умолчанию: - |
value | Option[] Выбранные опции. По умолчанию: - |