Componente
Menu
Um menu dropdown e de contexto construído sobre o CDK menu. Acione por clique, hover ou clique direito; preencha com itens, checkboxes, grupos de rádio, rótulos, separadores, atalhos e submenus aninhados.
Itens, atalhos e destrutivo
Last: —
import { ChangeDetectionStrategy, Component, signal } from '@angular/core';
import { HbButtonComponent, HbMenuImports } from '@herbst/ui';
@Component({
selector: 'hb-demo-menu-basic',
imports: [HbMenuImports, HbButtonComponent],
template: `
<div class="flex flex-col items-start gap-2">
<button hb-button [hbMenuTriggerFor]="menu" (hbOpenChange)="open.set($event)">
{{ open() ? 'Open ▲' : 'Actions ▼' }}
</button>
<span class="font-mono text-[12px] text-muted-foreground">Last: {{ last() }}</span>
</div>
<ng-template #menu>
<hb-menu>
<hb-menu-label>Photo</hb-menu-label>
<hb-menu-item (hbSelect)="last.set('Edit')">
Edit
<hb-menu-shortcut>⌘E</hb-menu-shortcut>
</hb-menu-item>
<hb-menu-item (hbSelect)="last.set('Duplicate')">
Duplicate
<hb-menu-shortcut>⌘D</hb-menu-shortcut>
</hb-menu-item>
<hb-menu-item hbDisabled>Archive (disabled)</hb-menu-item>
<hb-menu-separator />
<hb-menu-item hbVariant="destructive" (hbSelect)="last.set('Delete')">
Delete
<hb-menu-shortcut>⌫</hb-menu-shortcut>
</hb-menu-item>
</hb-menu>
</ng-template>
`,
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class HbDemoMenuBasicComponent {
protected readonly open = signal(false);
protected readonly last = signal('—');
}
Checkbox, rádio e submenu
notes: true · sort: name
Hover e menu de contexto
Right-click this area
Referência de API
Triggers
| Propriedade | Descrição | Tipo | Padrão |
|---|---|---|---|
| [hbMenuTriggerFor] | Aplique a qualquer elemento, apontando para um ng-template que envolve um hb-menu. | TemplateRef | — |
| [hbTrigger] / [hbDisabled] | Abre no clique ou hover, e opcionalmente bloqueia a abertura. | 'click' | 'hover' / boolean | 'click' / false |
| [hbOpen] / (hbOpenChange) / [hbMenuPosition] | Estado aberto controlado, um evento de abrir/fechar, e posições conectadas do CDK customizadas. | boolean / boolean / ConnectedPosition[] | undefined / — / — |
| [hbContextMenuTriggerFor] | Abre o menu no ponteiro ao clicar com o direito. [hbGlobal] captura cliques direitos em qualquer lugar; [hbContextDisabled] desabilita. | TemplateRef | — |
Items
| Propriedade | Descrição | Tipo | Padrão |
|---|---|---|---|
| hb-menu-item [hbVariant] [hbInset] | Uma linha de comando. default | destructive; hbInset alinha o texto com itens que têm indicadores. Emite (hbSelect); [hbDisabled] desabilita; adicione [hbMenuTriggerFor] para um submenu. | 'default' | 'destructive' | 'default' |
| hb-menu-checkbox-item [(hbChecked)] | Um item alternável com indicador de check. | boolean | false |
| hb-menu-radio-group [(hbValue)] + hb-menu-radio-item [hbValue] | Um grupo de escolha única; o item cujo valor casa com o grupo é marcado como selecionado. | unknown | null |
Structure
| Propriedade | Descrição | Tipo | Padrão |
|---|---|---|---|
| hb-menu-label [hbInset] | Uma legenda não-interativa para uma seção. | component | — |
| hb-menu-separator / hb-menu-group | Uma linha divisória, e um wrapper para agrupar itens relacionados. | component | — |
| hb-menu-shortcut | Texto esmaecido alinhado à direita para uma dica de teclado. | component | — |