date picker

A date picker component with range and presets.

PreviousNext
import { ChangeDetectionStrategy, Component, signal } from '@angular/core';

import { ZardDatePickerComponent } from '../date-picker.component';

@Component({
  selector: 'zard-demo-date-picker-default',
  imports: [ZardDatePickerComponent],
  standalone: true,
  template: `
    <z-date-picker [value]="selectedDate()" placeholder="Pick a date" (dateChange)="onDateChange($event)" />
  `,
  changeDetection: ChangeDetectionStrategy.OnPush,
})
export class ZardDemoDatePickerDefaultComponent {
  readonly selectedDate = signal<Date | null>(null);

  onDateChange(date: Date | null) {
    this.selectedDate.set(date);
    console.log('Selected date:', date);
  }
}

Installation

Copy
npx zard-cli@latest add date-picker

Usage

import { ZardDatePickerComponent } from '@/shared/components/date-picker/date-picker.component';
Copy
<z-date-picker placeholder="Pick a date"></z-date-picker>
Copy

Examples

default

import { ChangeDetectionStrategy, Component, signal } from '@angular/core';

import { ZardDatePickerComponent } from '../date-picker.component';

@Component({
  selector: 'zard-demo-date-picker-default',
  imports: [ZardDatePickerComponent],
  standalone: true,
  template: `
    <z-date-picker [value]="selectedDate()" placeholder="Pick a date" (dateChange)="onDateChange($event)" />
  `,
  changeDetection: ChangeDetectionStrategy.OnPush,
})
export class ZardDemoDatePickerDefaultComponent {
  readonly selectedDate = signal<Date | null>(null);

  onDateChange(date: Date | null) {
    this.selectedDate.set(date);
    console.log('Selected date:', date);
  }
}

sizes

Small

Default

Large

import { ChangeDetectionStrategy, Component, signal } from '@angular/core';

import { ZardDatePickerComponent } from '../date-picker.component';

@Component({
  selector: 'zard-demo-date-picker-sizes',
  imports: [ZardDatePickerComponent],
  standalone: true,
  template: `
    <div class="flex flex-col gap-4">
      <div class="space-y-2">
        <h4 class="text-sm font-medium">Small</h4>
        <z-date-picker
          zSize="sm"
          [value]="selectedDateSm()"
          placeholder="Pick a date"
          (dateChange)="onDateChangeSm($event)"
        />
      </div>

      <div class="space-y-2">
        <h4 class="text-sm font-medium">Default</h4>
        <z-date-picker
          zSize="default"
          [value]="selectedDateDefault()"
          placeholder="Pick a date"
          (dateChange)="onDateChangeDefault($event)"
        />
      </div>

      <div class="space-y-2">
        <h4 class="text-sm font-medium">Large</h4>
        <z-date-picker
          zSize="lg"
          [value]="selectedDateLg()"
          placeholder="Pick a date"
          (dateChange)="onDateChangeLg($event)"
        />
      </div>
    </div>
  `,
  changeDetection: ChangeDetectionStrategy.OnPush,
})
export class ZardDemoDatePickerSizesComponent {
  readonly selectedDateSm = signal<Date | null>(null);
  readonly selectedDateDefault = signal<Date | null>(null);
  readonly selectedDateLg = signal<Date | null>(null);

  onDateChangeSm(date: Date | null) {
    this.selectedDateSm.set(date);
    console.log('Selected date (sm):', date);
  }

  onDateChangeDefault(date: Date | null) {
    this.selectedDateDefault.set(date);
    console.log('Selected date (default):', date);
  }

  onDateChangeLg(date: Date | null) {
    this.selectedDateLg.set(date);
    console.log('Selected date (lg):', date);
  }
}

formats

import { ChangeDetectionStrategy, Component } from '@angular/core';

import { ZardDatePickerComponent } from '../date-picker.component';

@Component({
  selector: 'z-date-picker-formats-demo',
  imports: [ZardDatePickerComponent],
  standalone: true,
  template: `
    <div class="flex flex-col gap-4">
      <div class="flex flex-col gap-2">
        <label class="text-sm font-medium">Default Format (MMMM d, yyyy)</label>
        <z-date-picker [value]="selectedDate" (dateChange)="selectedDate = $event" />
      </div>

      <div class="flex flex-col gap-2">
        <label class="text-sm font-medium">US Format (MM/dd/yyyy)</label>
        <z-date-picker [value]="selectedDate" (dateChange)="selectedDate = $event" zFormat="MM/dd/yyyy" />
      </div>

      <div class="flex flex-col gap-2">
        <label class="text-sm font-medium">European Format (dd-MM-yyyy)</label>
        <z-date-picker [value]="selectedDate" (dateChange)="selectedDate = $event" zFormat="dd-MM-yyyy" />
      </div>

      <div class="flex flex-col gap-2">
        <label class="text-sm font-medium">Short Format (MMM d, yy)</label>
        <z-date-picker [value]="selectedDate" (dateChange)="selectedDate = $event" zFormat="MMM d, yy" />
      </div>

      <div class="flex flex-col gap-2">
        <label class="text-sm font-medium">With Day Name (EEE, MMMM d)</label>
        <z-date-picker [value]="selectedDate" (dateChange)="selectedDate = $event" zFormat="EEE, MMMM d" />
      </div>

      <div class="flex flex-col gap-2">
        <label class="text-sm font-medium">ISO Format (yyyy-MM-dd)</label>
        <z-date-picker [value]="selectedDate" (dateChange)="selectedDate = $event" zFormat="yyyy-MM-dd" />
      </div>
    </div>
  `,
  changeDetection: ChangeDetectionStrategy.OnPush,
})
export class ZardDatePickerFormatsComponent {
  selectedDate: Date | null = new Date();
}

export default ZardDatePickerFormatsComponent;

API Reference

z-date-pickerComponent

A date picker component that provides an intuitive interface for date selection through a button trigger and calendar popup.

PropertyDescriptionTypeDefault
class Additional CSS classes ClassValue ''
zType Button variant style 'default' | 'outline' | 'ghost' 'outline'
zSize Size of the date picker 'sm' | 'default' | 'lg' 'default'
value Selected date value Date | null null
placeholder Placeholder text when no date is selected string 'Pick a date'
zFormat Date format pattern (e.g. 'MMMM d, yyyy') string 'MMMM d, yyyy'
minDate Minimum selectable date Date | null null
maxDate Maximum selectable date Date | null null
disabled Whether the date picker is disabled boolean false
(dateChange) Emitted when a date is selected EventEmitter<Date | null> -
github iconwhatsapp icondiscord iconX icon

Made with in Brazil. Open source and available on GitHub .