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

PropriedadeDescriçãoTipoPadrã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

PropriedadeDescriçãoTipoPadrã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

PropriedadeDescriçãoTipoPadrã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

PropriedadeDescriçãoTipoPadrã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