Componente

Speed dial

Um botão de ação flutuante que abre um leque de ações. Controle-o por um model, escolha a forma e direção do leque, ajuste raio, espaço e escalonamento, adicione um backdrop, rotacione o ícone do gatilho, e faça template de cada ação.

Ações lineares

Clicked: —

import { ChangeDetectionStrategy, Component, signal } from '@angular/core';

import { HbSpeedDialImports, type HbSpeedDialItem } from '@herbst/ui';
import { provideIcons } from '@ng-icons/core';
import {
  phosphorDownloadSimple,
  phosphorEnvelope,
  phosphorTag,
  phosphorTrash,
} from '@ng-icons/phosphor-icons/regular';

@Component({
  selector: 'hb-demo-speed-dial-basic',
  imports: [HbSpeedDialImports],
  viewProviders: [
    provideIcons({ phosphorTag, phosphorEnvelope, phosphorDownloadSimple, phosphorTrash }),
  ],
  template: `
    <div class="flex h-64 w-full items-end justify-center pb-2">
      <hb-speed-dial
        [hbModel]="items"
        hbRotateIcon
        hbAriaLabel="Actions"
        (hbItemClick)="log.set($any($event).label)"
      />
    </div>
    <p class="text-center font-mono text-[12px] text-muted-foreground">Clicked: {{ log() }}</p>
  `,
  changeDetection: ChangeDetectionStrategy.OnPush,
})
export class HbDemoSpeedDialBasicComponent {
  protected readonly log = signal('—');
  protected readonly items: HbSpeedDialItem[] = [
    { icon: 'phosphorTag', label: 'Tag' },
    { icon: 'phosphorEnvelope', label: 'Share' },
    { icon: 'phosphorDownloadSimple', label: 'Download' },
    { icon: 'phosphorTrash', label: 'Delete', disabled: true },
  ];
}

Círculo e máscara

Quarto de círculo e item custom

Referência de API

hb-speed-dial — model

PropriedadeDescriçãoTipoPadrão
[hbModel] As ações. Cada item: { icon?, label?, tooltip?, disabled?, command?, ariaLabel?, styleClass?, data? }. HbSpeedDialItem[] []
[(hbVisible)] O estado aberto, bidirecional. boolean false
(hbItemClick) / (hbShow) / (hbHide) Emitem o item clicado, e quando o dial abre e fecha. Cada item também pode carregar seu próprio command(). HbSpeedDialItem / void
ng-template[hbSpeedDialItem] Conteúdo customizado para cada botão de ação. Contexto: $implicit = item, index. template

hb-speed-dial — layout

PropriedadeDescriçãoTipoPadrão
[hbType] A forma do leque. 'linear' | 'circle' | 'semi-circle' | 'quarter-circle' 'linear'
[hbDirection] Para qual lado as ações se abrem. 'up' | 'down' | 'left' | 'right' | 'up-left' | 'up-right' | 'down-left' | 'down-right' 'up'
[hbRadius] / [hbGap] / [hbItemSize] Raio do círculo, espaço entre itens lineares, e tamanho do item — tudo em pixels. number 120 / 12 / 36
[hbTransitionDelay] Escalonamento por item em milissegundos conforme as ações aparecem. number 30

hb-speed-dial — behaviour

PropriedadeDescriçãoTipoPadrão
[hbMask] / [hbHideOnClickOutside] Escurece a página atrás do dial quando aberto, e fecha ao clicar fora. boolean false / true
[hbRotateIcon] Rotaciona o ícone do gatilho 45° quando aberto (transformando um + em ×). boolean false
[hbIcon] / [hbCloseIcon] / [hbButtonType] Os nomes de ícone do gatilho para fechado/aberto, e a cor dos botões do gatilho e itens. string / HbButtonType 'phosphorPlus' / 'phosphorX' / 'default'
[hbTooltip] / [hbAriaLabel] Mostra um tooltip (de item.tooltip ou item.label) em cada ação, e o rótulo acessível do gatilho. boolean / string true / 'Actions'