calendar
zard/calendarFreeComponent
@zard publishes no description for this item.
Live preview
live · rendered by the registry
Rendered by @zard on their own page — this is the component running, not a screenshot of it.Install it
npx shadcn@latest add https://www.zardui.com/r/calendar.jsonSource
1import {2 ChangeDetectionStrategy,3 Component,4 computed,5 forwardRef,6 input,7 linkedSignal,8 model,9 viewChild,10 ViewEncapsulation,11} from '@angular/core';12import { outputFromObservable, outputToObservable } from '@angular/core/rxjs-interop';13import { NG_VALUE_ACCESSOR, type ControlValueAccessor } from '@angular/forms';1415import type { ClassValue } from 'clsx';16import { filter, map } from 'rxjs';1718import { ZardCalendarGridComponent } from '@/shared/components/calendar/calendar-grid.component';19import { ZardCalendarNavigationComponent } from '@/shared/components/calendar/calendar-navigation.component';20import type { CalendarMode, CalendarValue } from '@/shared/components/calendar/calendar.types';21import {22 generateCalendarDays,23 getSelectedDatesArray,24 isSameDay,25 makeSafeDate,26 normalizeCalendarValue,27} from '@/shared/components/calendar/calendar.utils';28import { calendarVariants } from '@/shared/components/calendar/calendar.variants';29import { mergeClasses, noopFn } from '@/shared/utils/merge-classes';3031@Component({32 selector: 'z-calendar, [z-calendar]',33 imports: [ZardCalendarNavigationComponent, ZardCalendarGridComponent],34 template: `35 <div [class]="classes()">36 <z-calendar-navigation37 [currentMonth]="currentMonthValue()"38 [currentYear]="currentYearValue()"39 [minDate]="minDate()"40 [maxDate]="maxDate()"41 [disabled]="disabled()"42 (monthChange)="onMonthChange($event)"43 (yearChange)="onYearChange($event)"44 (previousMonth)="previousMonth()"45 (nextMonth)="nextMonth()"46 />4748 <z-calendar-grid49 [calendarDays]="calendarDays()"50 [disabled]="disabled()"51 (dateSelect)="onDateSelect($event)"52 (previousMonth)="onGridPreviousMonth($event)"53 (nextMonth)="onGridNextMonth($event)"54 (navigateYear)="onNavigateYear($event)"55 />56 </div>57 `,58 providers: [59 {60 provide: NG_VALUE_ACCESSOR,61 useExisting: forwardRef(() => ZardCalendarComponent),62 multi: true,63 },64 ],65 changeDetection: ChangeDetectionStrategy.OnPush,66 encapsulation: ViewEncapsulation.None,67 host: {68 '[attr.tabindex]': '0',69 },70 exportAs: 'zCalendar',71})72export class ZardCalendarComponent implements ControlValueAccessor {73 private readonly gridRef = viewChild.required(ZardCalendarGridComponent);7475 // Public method to reset navigation (useful for date-picker)76 resetNavigation(): void {77 const value = this.currentDate();78// … truncated
What it pulls in
Other registry items
Files it writes
More from @zard
All 49 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| accordionaccordion | @zard | Components | Free | no deps · 5 files | |
| alertalert | @zard | Components | Free | no deps · 3 files | |
| alert-dialogalert-dialog | @zard | Components | Free | no deps · 5 files | |
| avataravatar | @zard | Components | Free | no deps · 4 files | |
| badgebadge | @zard | Components | Free | no deps · 3 files | |
| breadcrumbbreadcrumb | @zard | Components | Free | no deps · 4 files | |
| buttonbutton | @zard | Components | Free | no deps · 3 files | |
| button-groupbutton-group | @zard | Components | Free | no deps · 3 files |
