Перейти к основному содержимому

Combobox

Автодополнение (поиск по списку) на композиции Popover + Command + Button: триггер-кнопка показывает label текущего значения и открывает выпадающий список опций с полем поиска. Отдельного shadcn-примитива нет — это рецепт из готовых компонентов. Контракт value-based (value: string | null, onChange(string | null)), поэтому в форме Combobox кладётся в component как есть.

Тяжёлый компонент: импортируется из подпути @reformer/ui-kit/combobox (вне главного barrel).

Когда выбор иерархичен, плоского options не хватает — тогда берут варианты ComboboxTree (значение string | null) и ComboboxTreeMulti (значение string[] | null, пустой выбор эмитится как null, никогда как [] — обязательность выражается required(), а не minLength(1)). Оба принимают nodes вместо options; значением поля становится id узла (для файла — его полный путь), а loadChildren позволяет читать уровни лениво. По умолчанию selectable="leaf": щелчок по каталогу раскрывает его, а не выбирает.

Список в поповере у этих вариантов — Tree кита, и cmdk там намеренно отсутствует, в отличие от Combobox / ComboboxMulti: фильтр cmdk при поиске размонтирует несовпавшие строки вместе с их детьми, переставляет узлы мимо React и не видит виртуализированных строк — иерархия этого не переживает. Поэтому поиск свой: он фильтрует само дерево, достраивая путь до совпадения.