ChipsSelect
Компонент для выбора множества значений из выпадающего списка.
Позволяет пользователю выбирать опции из предустановленного списка или создавать новые значения. Каждый выбранный элемент
представлен в виде отдельного компонента Chip.
Связанные компоненты:
Режим работы
Компонент поддерживает работу как в неконтролируемом режиме, так и контролируемом. Это стандартное поведение React-компонентов, прочитать про это можно в документации React ↗.
Для использования неконтролируемого режима достаточно просто не передавать value или передавать defaultValue, если
требуется задать значение по умолчанию.
Для контролируемого режима используйте связку свойств value/onChange для задания значения и его изменения.
// Неконтролируемое состояние
<ChipsSelect
defaultValue={[
{
value: 'red',
label: 'Красный',
},
]}
/>;
// Контролируемое состояние
const [colors, setColors] = React.useState([]);
<ChipsSelect value={colors} onChange={setColors} />;Управление вводом
Добавление нового значения
Свойство creatable позволяет добавлять значения, которых нет в списке.
true- значение добавляется по нажатию клавишиEnter;- строковое значение - помимо клавиши
Enter, в списке появляется кнопка, нажатие на которую приводит к добавлению значения.
Разделитель
Задаётся свойством delimiter. Позволяет добавлять несколько элементов за раз, разделяя их указанным символом.
Представляет собой символ, который будет использоваться как разделитель для автоматического создания опций из текста,
введенного или вставленного в поле ввода. Например, при delimiter="," вставка текста “Красный,Синий” в поле ввода
создаст два элемента - “Красный” и “Синий”.
Пока поддерживаются только строковые символы.
Потеря фокуса
По умолчанию при потере полем фокуса добавления в список опций не происходит.
С помощью свойства addOnBlur можно включить поведение, при котором потеря фокуса будет приводить к добавлению нового элемента.
Состояния
disabled
Свойство disabled блокирует взаимодействие с компонентом и добавляет визуальную индикацию недоступности.
Валидация
Свойство status используется для визуализации валидации компонента - некорректности заполненного поля (значение "error")
или успешной валидации (значение "valid").
Кастомизация
Визуальное оформление
С помощью свойства renderChip можно влиять на отображение конкретного значения. Вы можете изменить
стандартный компонент Chip или использовать свой компонент.
С помощью свойства renderOption можно влиять на отображение конкретного элемента выпадающего списка.
Вы можете изменить стандартный компонент CustomSelectOption
или использовать свой компонент.
Важно отметить, что первым параметром в обработчика renderChip/renderOption идёт объект со свойствами, необходимыми для
корректной работы a11y. Если для отображения элемента вы используете свой компонент, убедитесь, что все эти свойства
компонент получает и корректно обрабатывает. Вторым параметром идёт объект со значением конкретной опции
(значение, переданное в value/defaultValue).
Доступность (a11y)
Компонент обеспечивает базовую доступность через стандартные HTML-атрибуты и ARIA-роли.
Для улучшения доступности рекомендуется связывать компонент с текстовым описанием одним из следующих способов:
-
обернуть в
<label>;<label> Список исполнителей <ChipsSelect options={colors} placeholder="Введите название" /> </label> -
указать
idилиaria-describedbyи передать в<label>илиFormItemчерезhtmlFor;<label htmlFor="chips">Список исполнителей</label> <ChipsSelect options={colors} placeholder="Введите название" id="chips"/><FormItem top="Список исполнителей" htmlFor="chips"> <ChipsSelect options={colors} placeholder="Введите название" id="chips" /> </FormItem> -
указать
aria-label;<ChipsSelect options={colors} placeholder="Введите название" aria-label="Список исполнителей" />
При необходимости, через свойство chipsListLabel можете указать описания списка выбранных опций.
Свойства и методы
| Свойство | Описание |
|---|---|
addOnBlur | booleanДобавляет значение в список на событие По умолчанию: - |
align | AlignTypeПо умолчанию: - |
allowClearButton | booleanЕсли По умолчанию: - |
before | ReactNodeДобавляет иконку слева. Рекомендации:
По умолчанию: - |
chipsListLabel | string
По умолчанию: - |
ClearButton | ComponentType<FormFieldClearButtonProps>Кастомная кнопка для очистки значения.
Должна принимать обязательное свойство По умолчанию: - |
clearButtonShown | booleanПоказывать ли кнопку для очистки значения. По умолчанию: - |
clearButtonTestId | string(e2e) testId кнопки очистки. По умолчанию: - |
closeAfterSelect | booleanЗакрытие выпадающего списка после выбора элемента. По умолчанию: true |
creatable | string | booleanВозможность создавать чипы которых нет в списке:
По умолчанию: false |
defaultInputValue | stringЗначение поля ввода по умолчанию. По умолчанию: - |
defaultValue | Option[]Выбранные опции по умолчанию. По умолчанию: - |
delimiter | string | RegExp | string[]Символ или строка, которая будет использоваться как разделитель для автоматического создания опций из текста, введенного в поле ввода. Принимает:
Работает в двух сценариях:
По умолчанию: - |
disabled | booleanБлокировка взаимодействия с компонентом. По умолчанию: - |
dropdownAutoWidth | booleanШирина раскрывающегося списка зависит от контента. По умолчанию: - |
dropdownOffsetDistance | numberОтступ от выпадающего списка. По умолчанию: 0 |
dropdownTestId | stringПередает атрибут По умолчанию: - |
emptyText | stringТекст, который показывается если список опций пуст. По умолчанию: Ничего не найдено |
fetching | booleanОтрисовка Spinner вместо списка опций в выпадающем списке. По умолчанию: false |
filterFn | false | FilterFn<Option>Функция для фильтрации опций в списке. По умолчанию: - |
forceDropdownPortal | booleanПринудительно использовать портал. По умолчанию: - |
getNewOptionData | GetNewOptionData<Option>Функция для создания новой опции. По умолчанию: - |
getOptionLabel | GetOptionLabel<Option>Селектор пользовательского представления. По умолчанию: - |
getOptionValue | GetOptionValue<Option>Селектор значения. По умолчанию: - |
getRef | Ref<HTMLInputElement>Deprecated: Since 7.9.0. Вместо этого используйте По умолчанию: - |
getRootRef | Ref<HTMLDivElement>По умолчанию: - |
icon | ReactNodeИконка раскрывающегося списка. По умолчанию: - |
inputValue | stringЗначение поля ввода. По умолчанию: - |
mode | "default" | "plain"Режим отображения.
По умолчанию: - |
noMaxHeight | booleanОтключает максимальную высоту по умолчанию. По умолчанию: false |
onChange | OnChange<Option>Обработчик изменения выбранных опций. По умолчанию: - |
onChangeStart | ((event: MouseEvent<Element, MouseEvent> | KeyboardEvent<Element>, option: Option) => void)Событие срабатывающее перед По умолчанию: - |
onClose | VoidFunctionБудет вызвано в момент скрытия выпадающего списка. По умолчанию: - |
onInputChange | OnInputChangeОбработчик изменения значения в поле ввода. По умолчанию: - |
onOpen | VoidFunctionБудет вызвано в момент открытия выпадающего списка. По умолчанию: - |
options | Option[]Список опций в выпадающем списке. По умолчанию: - |
overscrollBehavior | "auto" | "none" | "contain"Поведение overscroll, подробнее можно почитать в документации ↗. По умолчанию: - |
placement | "top" | "bottom"Расположение выпадающего списка. По умолчанию: bottom |
renderChip | RenderChip<Option>Render prop функция для возврата своего компонента. По умолчанию: Используется [Chip](#/Chip) |
renderDropdown | (({ defaultDropdownContent, }: { defaultDropdownContent: ReactNode; }) => ReactNode)Рендер-проп для кастомного рендера содержимого дропдауна.
В По умолчанию: - |
renderOption | ((props: CustomSelectOptionProps, option: Option) => ReactNode)Функция для отрисовки кастомной опции в выпадающем списке. По умолчанию: (props: CustomSelectOptionProps): React.ReactNode => (
<CustomSelectOption {...props} />
) |
selectedBehavior | "hide" | "highlight"Показывать или скрывать уже выбранные опции. По умолчанию: highlight |
slotProps | { root?: (HTMLAttributes<HTMLDivElement> & HasRootRef<HTMLDivElement> & HasDataAttribute); input?: (InputHTMLAttributes<...> & ... 1 more ... & HasDataAttribute) | undefined; } | undefinedСвойства, которые можно прокинуть внутрь компонента:
По умолчанию: - |
sortFn | false | SortFn<Option>Функция для сортировки опций в списке. По умолчанию: false |
status | "default" | "error" | "valid"Статус отображения поля в форме. По умолчанию: default |
value | Option[]Выбранные опции. По умолчанию: - |