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 блокирует взаимодействие с компонентом и добавляет визуальную индикацию недоступности.

Загружается...

Свойство status используется для визуализации валидации компонента - некорректности заполненного поля (значение "error") или успешной валидации (значение "valid").

Загружается...

С помощью свойства renderChip можно влиять на отображение конкретного значения. Вы можете изменить стандартный компонент Chip или использовать свой компонент.

С помощью свойства renderOption можно влиять на отображение конкретного элемента выпадающего списка. Вы можете изменить стандартный компонент CustomSelectOption или использовать свой компонент.

Загружается...

Важно отметить, что первым параметром в обработчика renderChip/renderOption идёт объект со свойствами, необходимыми для корректной работы a11y. Если для отображения элемента вы используете свой компонент, убедитесь, что все эти свойства компонент получает и корректно обрабатывает. Вторым параметром идёт объект со значением конкретной опции (значение, переданное в value/defaultValue).

Компонент обеспечивает базовую доступность через стандартные 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 можете указать описания списка выбранных опций.

СвойствоОписание
addOnBlurboolean

Добавляет значение в список на событие onBlur (использовать вместе с creatable).

По умолчанию: -
alignAlignType
По умолчанию: -
allowClearButtonboolean

Если true, то справа будет отображаться кнопка для очистки значения.

По умолчанию: -
beforeReactNode

Добавляет иконку слева.

Рекомендации:

  • Используйте следующие размеры иконок 12 | 16 | 20 | 24 | 28.
  • Используйте IconButton ↗, если вам нужна иконка, реагирующая на нажатие.
По умолчанию: -
chipsListLabelstring

aria-label для списка выбранных опций.

По умолчанию: -
ClearButtonComponentType<FormFieldClearButtonProps>

Кастомная кнопка для очистки значения. Должна принимать обязательное свойство onClick.

По умолчанию: -
clearButtonShownboolean

Показывать ли кнопку для очистки значения.

По умолчанию: -
clearButtonTestIdstring

(e2e) testId кнопки очистки.

По умолчанию: -
closeAfterSelectboolean

Закрытие выпадающего списка после выбора элемента.

По умолчанию: true
creatablestring | boolean

Возможность создавать чипы которых нет в списке:

  • true – добавление по кнопке Enter;
  • <текст> – помимо возможности добавления через Enter, в пункте меню появится кнопка с текстом. Текст для пункта, создающего чипы при нажатии, также отвечает за то, будет ли показан этот пункт (показывается после того как в списке не останется опций).
По умолчанию: false
defaultInputValuestring

Значение поля ввода по умолчанию.

По умолчанию: -
defaultValueOption[]

Выбранные опции по умолчанию.

По умолчанию: -
delimiterstring | RegExp | string[]

Символ или строка, которая будет использоваться как разделитель для автоматического создания опций из текста, введенного в поле ввода. Принимает:

  • string - простая строка
  • RegExp - регулярное выражение
  • string[] - массив строк, по которым нужно разелять ввод.

Работает в двух сценариях:

  1. При вводе разделителя - текст до разделителя автоматически преобразуется в новую опцию. Например, при delimiter="," ввод “опция1,” создаст опцию “опция1”.

  2. При вставке из буфера обмена - если вставляемый текст содержит разделители, он будет автоматически разбит на несколько опций. Например, при delimiter="," вставка “опция1,опция2,опция3” создаст три отдельные опции: “опция1”, “опция2” и “опция3”.

По умолчанию: -
disabledboolean

Блокировка взаимодействия с компонентом.

По умолчанию: -
dropdownAutoWidthboolean

Ширина раскрывающегося списка зависит от контента.

По умолчанию: -
dropdownOffsetDistancenumber

Отступ от выпадающего списка.

По умолчанию: 0
dropdownTestIdstring

Передает атрибут data-testid для дропдауна.

По умолчанию: -
emptyTextstring

Текст, который показывается если список опций пуст.

По умолчанию: Ничего не найдено
fetchingboolean

Отрисовка Spinner вместо списка опций в выпадающем списке.

По умолчанию: false
filterFnfalse | FilterFn<Option>

Функция для фильтрации опций в списке.

По умолчанию: -
forceDropdownPortalboolean

Принудительно использовать портал.

По умолчанию: -
getNewOptionDataGetNewOptionData<Option>

Функция для создания новой опции.

По умолчанию: -
getOptionLabelGetOptionLabel<Option>

Селектор пользовательского представления.

По умолчанию: -
getOptionValueGetOptionValue<Option>

Селектор значения.

По умолчанию: -
getRefRef<HTMLInputElement>
По умолчанию: -
getRootRefRef<HTMLDivElement>

Ссылка на корневой элемент.

По умолчанию: -
iconReactNode

Иконка раскрывающегося списка.

По умолчанию: -
inputValuestring

Значение поля ввода.

По умолчанию: -
mode"default" | "plain"

Режим отображения.

  • default — показывает фон, обводку и, при наличии, текст-подсказку.
  • plain — показывает только текст-подсказку.
По умолчанию: -
noMaxHeightboolean

Отключает максимальную высоту по умолчанию.

По умолчанию: false
onChangeOnChange<Option>

Обработчик изменения выбранных опций.

По умолчанию: -
onChangeStart((event: MouseEvent<Element, MouseEvent> | KeyboardEvent<Element>, option: Option) => void)

Событие срабатывающее перед onChange.

По умолчанию: -
onCloseVoidFunction

Будет вызвано в момент скрытия выпадающего списка.

По умолчанию: -
onInputChangeOnInputChange

Обработчик изменения значения в поле ввода.

По умолчанию: -
onOpenVoidFunction

Будет вызвано в момент открытия выпадающего списка.

По умолчанию: -
optionsOption[]

Список опций в выпадающем списке.

По умолчанию: -
overscrollBehavior"auto" | "none" | "contain"

Поведение overscroll, подробнее можно почитать в документации ↗.

По умолчанию: -
placement"top" | "bottom"

Расположение выпадающего списка.

По умолчанию: bottom
renderChipRenderChip<Option>

Render prop функция для возврата своего компонента.

По умолчанию: Используется [Chip](#/Chip)
renderDropdown(({ defaultDropdownContent, }: { defaultDropdownContent: ReactNode; }) => ReactNode)

Рендер-проп для кастомного рендера содержимого дропдауна. В defaultDropdownContent содержится список опций.

По умолчанию: -
renderOption((props: CustomSelectOptionProps, option: Option) => ReactNode)

Функция для отрисовки кастомной опции в выпадающем списке.

По умолчанию: (props: CustomSelectOptionProps): React.ReactNode => ( <CustomSelectOption {...props} /> )
selectedBehavior"hide" | "highlight"

Показывать или скрывать уже выбранные опции.

По умолчанию: highlight
sortFnfalse | SortFn<Option>

Функция для сортировки опций в списке.

По умолчанию: false
status"default" | "error" | "valid"

Статус отображения поля в форме.

По умолчанию: default
valueOption[]

Выбранные опции.

По умолчанию: -