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

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

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

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