Componente
Sheet
Um painel que desliza a partir de qualquer borda da tela. Dê a ele um título, descrição e ícone, projete um gatilho e corpo, dimensione-o, escolha os botões de rodapé embutidos, e controle-o como um overlay controlado.
Gatilho, formulário e rodapé
Last action: —
import { ChangeDetectionStrategy, Component, signal } from '@angular/core';
import { HbButtonComponent, HbFieldImports, HbInputDirective, HbSheetImports } from '@herbst/ui';
@Component({
selector: 'hb-demo-sheet-basic',
imports: [HbSheetImports, HbButtonComponent, HbFieldImports, HbInputDirective],
template: `
<div class="flex flex-col items-start gap-2">
<hb-sheet
hbTitle="Edit photo"
hbDescription="Update the record for IMG·019."
hbOkText="Save"
hbCancelText="Discard"
(hbOk)="log.set('saved')"
(hbCancel)="log.set('discarded')"
>
<button hbSheetTrigger hb-button hbType="outline">Open sheet</button>
<div hbSheetContent class="flex flex-col gap-4">
<hb-field>
<label hb-field-label>Title</label>
<input hb-input value="Oak leaves" />
</hb-field>
<hb-field>
<label hb-field-label>City</label>
<input hb-input value="Freiburg" />
</hb-field>
</div>
</hb-sheet>
<p class="font-mono text-[12px] text-muted-foreground">Last action: {{ log() }}</p>
</div>
`,
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class HbDemoSheetBasicComponent {
protected readonly log = signal('—');
}
Lados e tamanho
Ícone, destrutivo e eventos
—
Referência de API
hb-sheet — panel
| Propriedade | Descrição | Tipo | Padrão |
|---|---|---|---|
| [hbSide] | A borda de onde o sheet desliza. | 'right' | 'left' | 'top' | 'bottom' | 'right' |
| [hbSize] | Largura (left/right) ou altura (top/bottom) como qualquer comprimento CSS. | string | '24rem' |
| [hbTitle] / [hbDescription] / [hbIcon] | O título do cabeçalho, texto de apoio, e um nome de ícone à frente. | string | '' |
| [hbClosable] / [hbShowClose] | Permite fechar via backdrop/Escape, e mostra o botão de fechar no cabeçalho. | boolean | true |
| [hbOpen] / (hbOpenChange) | Estado aberto controlado (undefined para abrir via gatilho), e um evento ao abrir e fechar. | boolean | undefined / boolean | undefined / — |
hb-sheet — footer
| Propriedade | Descrição | Tipo | Padrão |
|---|---|---|---|
| [hbShowFooter] / [hbFooterAlign] | Mostra o rodapé embutido, e como seus botões são alinhados. | boolean / 'start' | 'center' | 'end' | 'between' | true / 'end' |
| [hbOkText] / [hbOkType] / [hbOkIcon] / [hbOkDisabled] | O rótulo, cor, ícone e estado desabilitado do botão de confirmar. Emite (hbOk) com hbData. | string / 'default' | 'destructive' | 'warning' | 'success' | 'OK' / 'default' |
| [hbCancelText] / [hbCancelIcon] / [hbCancelDisabled] | O rótulo, ícone e estado desabilitado do botão de cancelar. Emite (hbCancel) com hbData. | string / boolean | 'Cancel' |
| [hbData] | Um payload arbitrário devolvido pelos eventos (hbOk) e (hbCancel). | object | undefined |
Slots
| Propriedade | Descrição | Tipo | Padrão |
|---|---|---|---|
| [hbSheetTrigger] | O elemento projetado que abre o sheet ao ser clicado. | directive | — |
| [hbSheetContent] / [hbSheetFooter] | O corpo rolável, e conteúdo extra colocado antes dos botões OK/Cancel no rodapé. | directive | — |