Componente
Select
Um select dropdown com escolha única ou múltipla. Passe opções como dados ou declare itens agrupados, filtre e virtualize listas longas, mostre chips ou um resumo, dimensione e colora o gatilho, e controle-o como um controle de formulário.
Opções e valor
Selected: —
import { ChangeDetectionStrategy, Component, signal } from '@angular/core';
import { HbSelectImports, type HbSelectOption } from '@herbst/ui';
@Component({
selector: 'hb-demo-select-basic',
imports: [HbSelectImports],
template: `
<div class="flex w-full max-w-xs flex-col gap-2">
<hb-select
hbFluid
hbClearable
[hbOptions]="options"
[(hbValue)]="family"
hbPlaceholder="Pick a city"
/>
<p class="font-mono text-[12px] text-muted-foreground">Selected: {{ family() ?? '—' }}</p>
</div>
`,
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class HbDemoSelectBasicComponent {
protected readonly family = signal<unknown>(null);
protected readonly options: HbSelectOption[] = [
{ value: 'freiburg', label: 'Freiburg' },
{ value: 'munich', label: 'Munich' },
{ value: 'berlin', label: 'Berlin' },
{ value: 'hamburg', label: 'Hamburg', disabled: true },
];
}
Grupos declarativos
Múltiplo, chips e selecionar-tudo
2 selected
Filtro, status, tamanho e carregando
Referência de API
hb-select — value
| Propriedade | Descrição | Tipo | Padrão |
|---|---|---|---|
| [(hbValue)] | O valor selecionado (ou array quando múltiplo), bidirecional. Também um controle de formulário via ngModel / formControl. | unknown | null |
| [hbOptions] | As escolhas como dados ({ value, label, disabled? }). Omita para declarar filhos hb-select-item. | HbSelectOption[] | [] |
| [hbPlaceholder] / [hbClearable] | Texto de estado vazio, e um botão de limpar para resetar o valor. | string / boolean | 'Select...' / false |
| [hbCompareWith] | Função de igualdade customizada para casar valores com opções (para valores de objeto). | (a, b) => boolean | a === b |
| (hbChange) / (hbOpenChange) | Emitem o novo valor na seleção, e true/false conforme o painel abre e fecha. | unknown / boolean | — |
hb-select — multiple
| Propriedade | Descrição | Tipo | Padrão |
|---|---|---|---|
| [hbMultiple] | Permite selecionar vários valores; hbValue vira um array. | boolean | false |
| [hbDisplay] / [hbMaxChips] | Mostra as seleções como chips ou lista separada por vírgula, e limita o número de chips antes de um badge "+N". | 'chip' | 'comma' / number | 'chip' / 2 |
| [hbSelectAll] / [hbSelectionLimit] | Adiciona uma linha "Selecionar tudo", e limita quantos valores podem ser escolhidos (0 = sem limite). | boolean / number | false / 0 |
hb-select — panel
| Propriedade | Descrição | Tipo | Padrão |
|---|---|---|---|
| [hbFilter] / [hbFilterMatchMode] / [hbFilterPlaceholder] | Adiciona uma busca; casa por contains, startsWith ou equals, com placeholder customizado. | boolean / 'contains' | 'startsWith' | 'equals' / string | false / 'contains' / 'Search...' |
| [hbVirtualScroll] / [hbVirtualItemSize] / [hbVirtualHeight] | Virtualiza listas longas de dados, definindo a altura da linha e do viewport em pixels. | boolean / number | false / 36 / 280 |
| [hbLoading] / [hbLoadingText] | Mostra um spinner e mensagem no lugar das opções. | boolean / string | false / 'Loading…' |
| [hbEmptyMessage] / [hbEmptyOptionsMessage] | Texto mostrado quando um filtro não tem correspondências, e quando não há opções. | string | 'No results.' / 'No options.' |
hb-select — appearance & parts
| Propriedade | Descrição | Tipo | Padrão |
|---|---|---|---|
| [hbSize] / [hbStatus] | Altura do gatilho, e cor de validação (default | success | warning | error). | size xs–xl / status | 'md' / 'default' |
| [hbDisabled] / [hbReadonly] / [hbInvalid] / [hbRequired] | Estados de controle padrão repassados ao gatilho e ao ARIA. | boolean | false |
| [hbBorderless] / [hbRing] / [hbFluid] | Remove a borda, alterna o anel de foco, e estica à largura total. | boolean | false / true / false |
| parts & templates | hb-select-item, hb-select-group, hb-select-label, hb-select-separator montam o painel; ng-template[hbSelectValue] customiza a exibição do gatilho. | components / template | — |