Componente
Calendar
Uma grade de mês inline para escolher datas. Seleciona um único dia, um intervalo ou vários dias, respeita min, max e datas desabilitadas, e oferece presets, legendas em dropdown, múltiplos meses e seletor de hora.
Único
July 2026
| Su | Mo | Tu | We | Th | Fr | Sa |
|---|---|---|---|---|---|---|
Selected: Mon Jul 13 2026
import { ChangeDetectionStrategy, Component, computed, signal } from '@angular/core';
import { HbCalendarImports, type HbCalendarValue } from '@herbst/ui';
@Component({
selector: 'hb-demo-calendar-single',
imports: [HbCalendarImports],
template: `
<div class="flex flex-col gap-2">
<hb-calendar
[hbValue]="date()"
(hbValueChange)="date.set($event)"
class="w-fit rounded-lg border border-border"
/>
<p class="font-mono text-[12px] text-muted-foreground">Selected: {{ label() }}</p>
</div>
`,
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class HbDemoCalendarSingleComponent {
protected readonly date = signal<HbCalendarValue>(new Date(2026, 6, 13));
protected readonly label = computed(() => {
const value = this.date();
return value instanceof Date ? value.toDateString() : '—';
});
}
Intervalo e dois meses
July 2026
| Su | Mo | Tu | We | Th | Fr | Sa |
|---|---|---|---|---|---|---|
August 2026
| Su | Mo | Tu | We | Th | Fr | Sa |
|---|---|---|---|---|---|---|
Múltiplo, min/max e desabilitados
July 2026
| Mo | Tu | We | Th | Fr | Sa | Su |
|---|---|---|---|---|---|---|
Presets, dropdowns e hora
| Su | Mo | Tu | We | Th | Fr | Sa |
|---|---|---|---|---|---|---|
Célula do dia customizada
October 2026
| Su | Mo | Tu | We | Th | Fr | Sa |
|---|---|---|---|---|---|---|
Dots mark days with an autumn walk planned.
Referência de API
hb-calendar
| Propriedade | Descrição | Tipo | Padrão |
|---|---|---|---|
| [(hbValue)] | Valor selecionado: um Date, um intervalo { start, end }, um array de Dates ou null. | HbCalendarValue | null |
| [hbMode] | Comportamento de seleção. | 'single' | 'range' | 'multiple' | 'single' |
| [hbDefaultDate] | Mês exibido inicialmente quando não há valor. | Date | null | null |
| [hbMin] / [hbMax] | Datas mínima e máxima selecionáveis. | Date | null | null |
| [hbDisabledDates] | Uma lista de datas ou um predicado que desabilita dias. | Date[] | ((date: Date) => boolean) | [] |
| [hbNumberOfMonths] | Quantos meses renderizar lado a lado. | number | 1 |
| [hbWeekStartsOn] | Primeiro dia da semana (0 = domingo … 6 = sábado). | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 0 |
| [hbCaption] | Cabeçalho como rótulo estático ou dropdowns de mês/ano. | 'label' | 'dropdowns' | 'label' |
| [hbPresets] | Presets rápidos: um rótulo e um valor (ou uma função que o retorna). | HbCalendarPreset[] | [] |
| [hbShowTime] | Adiciona um seletor de hora abaixo da grade. | boolean | false |
| [hbLocale] | Locale do date-fns para nomes de mês e dias da semana. | Locale | null | null |
| [hbTimezone] | Timezone IANA usado para calcular o dia atual. | string | null | null |
| [hbDisabled] | Desabilita o calendário inteiro. | boolean | false |
| ng-template[hbCalendarDay] | Substitui o conteúdo de cada célula de dia. Contexto: $implicit = date, mais selected, today, disabled, outside e inRange. | template | — |