Kobana UI
GitHub

EntityCombobox

Combobox genérico com busca assíncrona para entidades.

Instalação

npx @kobana/ui add entity-combobox

Dependências shadcn/ui: popover, command, button

Importação

import { EntityCombobox } from "@/components/kobana/entity-combobox"

Props

PropTipoDefaultDescrição
valuestringValor selecionado
onChange(value: string, entity?: T) => voidCallback com valor e entidade
onSearch(query: string) => Promise<T[]>Busca async (debounce 300ms)
renderItem(item: T) => ReactNodeRenderização de cada item
renderSelected(item: T) => ReactNodeRenderização do item selecionado
getItemValue(item: T) => stringExtrai valor do item
getItemLabel(item: T) => stringExtrai label do item
placeholderstring"Selecionar..."Placeholder
searchPlaceholderstring"Buscar..."Placeholder da busca
emptyMessagestring"Nenhum resultado encontrado."Mensagem vazio
disabledbooleanDesabilitado
classNamestringClasses adicionais

Uso

<EntityCombobox<Customer>
  value={customerId}
  onChange={(value, customer) => setCustomerId(value)}
  onSearch={async (query) => {
    const res = await api.customers.search({ query })
    return res.data
  }}
  renderItem={(c) => (
    <div>
      <p className="font-medium">{c.name}</p>
      <p className="text-xs text-muted-foreground">{c.email}</p>
    </div>
  )}
  getItemValue={(c) => c.id}
  getItemLabel={(c) => c.name}
/>

On this page