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
| Propriedade | Descrição | Tipo | Padrã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
| Propriedade | Descrição | Tipo | Padrã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
| Propriedade | Descrição | Tipo | Padrã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' |