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

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

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

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