shadcn/uiのComboboxで検索だけではなく新規作成も行えるコンポーネントを作成する

2024/08/22に公開

背景

https://ui.shadcn.com/docs/components/combobox

shadcn/ui のデフォルトの Combobox では検索を行えますが新規作成はできません。
ということで作成してみます。

完成したもの

https://stackblitz.com/edit/shadcn-combobox-example?file=app%2Fpage.tsx

デフォルトの挙動と違うところ

shadcn/ui の Combobox の Example Code では矢印と Enter で選択肢を選択できるようになっています。
しかし、<CommandInput>コンポーネントで変換のために Enter キーをクリックすると、「候補として表示されている一番上の選択肢を選択してしまう」ということが発生してしまいます。

ということで<CommandInput>onKeyDownにこれを回避する処理を入れています。
また、それに伴い矢印キーではなく Tab キーで候補として表示されてある選択肢間を移動できるようにしています。

その他細かい点についてはStackBlitzのコード内にコメントで書いています。

Discussion