shadcn-ui 增加 multi-select

前言

multi-select 是一個很常見的組件,但 shadcn-ui 並沒有提供
後來查到Fancy Multi Select,但還滿陽春的

因為目前專案使用了不少React-Select,默默地就實現了他所有的功能

demo: shadcn-ui expansions / Multiple Selector

功能

  • 僅使用 shadcn-uiCommand組件(基於cmdk),沒有其他套件
  • 支援 API 查詢,並且可以自訂查詢的 debounce 時間
  • 支援當沒有符合的選項時,可直接建立新選項(即React-Select裡的Creatable Selector)
  • 支援自訂loading spinnerempty indicator,僅須傳參數設定
  • 支援選項分組(Grouping)
  • 支援自訂最大選擇數量、最大輸入文字長度、固定選項
  • 可輕易與react-hook-form整合
  • 支援預設不選取任何選項 (cmdk目前無此功能,此為 workaround 解法。更多資訊詳見cmdk issue)
  • 封裝好ref,使用方式就像一般的input組件
  • 可透過參數調整classNamebadgeClassName,盡量不必去修改原始碼

最重要的是,只需要 Copy and Paste,程式碼就是你的了!

使用方式

shadcn-ui expansions / Multiple Selector 已經提供了所有功能的範例用法
這裡就不再贅述

參考資料

GitHub issue / Multi select ?
Fancy Multi Select