CoreUI Angular Logo
Framework:
  • JavaScript / Vanilla JS
  • React.js
  • Vue.js
Getting startedIntroductionSupport CoreUICustomizeSassOptionsCSS VariablesLayoutBreakpointsContainersGridColumnsGuttersFormsOverviewDate PickerPRODate Range PickerPROForm ControlSelectMulti SelectPROChecks & RadiosPassword InputPRORangeRange SliderPRORatingPROStepperPROInput GroupFloating LabelsLayoutTime PickerPROValidationComponentsAccordionAlertAvatarBadgeBreadcrumbButtonButton GroupCalendarPROCalloutCardCarouselClose buttonCollapseDropdownFooterHeaderImageList GroupLoading ButtonPROModalNavNavbarOffcanvasPaginationPlaceholderPopoverProgressSmart PaginationPROSmart TablePROSidebarSpinnerTableTabsNewToastTooltipWidgetsIconsChartsTemplatesNewAdmin & DashboardDownloadInstallationCustomizeContentMigrationv4 → v5v3 → v4Angular version


DownloadHire UsGet CoreUI PRO
On this page
    CoreUI PRO for Angular This component is part of CoreUI PRO – a powerful UI library with over 250 components and 25+ templates, designed to help you build modern, responsive apps faster. Fully compatible with Angular, Bootstrap, React.js, and Vue.js. Get CoreUI PRO

    Angular Calendar Component

    The Angular Calendar Component is a versatile, customizable tool for creating responsive calendars in Angular, supporting day, month, and year selection, with global locales.


    Example

    Explore the Angular Calendar basic usage through sample code snippets demonstrating its core functionality.

    Days

    Select specific days using the Angular Calendar component. The example below shows basic usage.

    Mon
    Tue
    Wed
    Thu
    Fri
    Sat
    Sun
    26
    27
    28
    29
    30
    31
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    1
    2
    3
    4
    5
    6
    Loading...


    Weeks

    Set the selectionType to week to enable selection of entire week. You can also add showWeekNumber to show week numbers.

    Mon
    Tue
    Wed
    Thu
    Fri
    Sat
    Sun
    40
    30
    1
    2
    3
    4
    5
    6
    41
    7
    8
    9
    10
    11
    12
    13
    42
    14
    15
    16
    17
    18
    19
    20
    43
    21
    22
    23
    24
    25
    26
    27
    44
    28
    29
    30
    31
    1
    2
    3
    45
    4
    5
    6
    7
    8
    9
    10
    Loading...


    Months

    Set the selectionType property to month to enable selection of entire months.

    Jan
    Feb
    Mar
    Apr
    May
    Jun
    Jul
    Aug
    Sep
    Oct
    Nov
    Dec
    Loading...

    Years

    Set the selectionType property to year to enable years range selection.

    2019
    2020
    2021
    2022
    2023
    2024
    2025
    2026
    2027
    2028
    2029
    2030
    Loading...

    Multiple calendar panels

    Display multiple calendar panels side by side by setting the calendars property. This can be useful for selecting ranges or comparing dates across different months.

    Mon
    Tue
    Wed
    Thu
    Fri
    Sat
    Sun
    26
    27
    28
    29
    30
    31
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    1
    2
    3
    4
    5
    6
    Mon
    Tue
    Wed
    Thu
    Fri
    Sat
    Sun
    30
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Loading...

    Range selection

    Enable range selection to allow users to pick a start and end date. This example shows how to configure the Angular Calendar component to handle date ranges.

    Mon
    Tue
    Wed
    Thu
    Fri
    Sat
    Sun
    26
    27
    28
    29
    30
    31
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    1
    2
    3
    4
    5
    6
    Mon
    Tue
    Wed
    Thu
    Fri
    Sat
    Sun
    30
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10

    Jun 17, 2025 - Jun 24, 2025
    Loading...
    import { Component, signal } from '@angular/core';
    import { ButtonDirective, CalendarComponent } from '@coreui/angular';
    import { DatePipe } from '@angular/common';
    
    @Component({
      selector: 'docs-calendar06',
      standalone: true,
      imports: [CalendarComponent, DatePipe, ButtonDirective],
      templateUrl: './calendar06.component.html'
    })
    export class Calendar06Component {
      startDate = signal<Date | null>(new Date());
      endDate = signal<Date | null>(new Date(new Date().getFullYear(), new Date().getMonth(), new Date().getDate() + 7));
    
      handleClear() {
        this.endDate.set(null);
        this.startDate.set(null);
      }
    }
    

    Disabled dates

    The Calendar component includes functionality to disable specific dates, such as weekends or holidays, using the disabledDates prop. This prop takes an array of dates to determine which dates should be disabled. Other useful props include minDate and maxDate to set the minimum and maximum selectable dates. The dateFilter prop can be used to apply custom logic to determine which dates are selectable.

    Mon
    Tue
    Wed
    Thu
    Fri
    Sat
    Sun
    26
    27
    28
    29
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    1
    2
    3
    4
    5
    6
    7
    Mon
    Tue
    Wed
    Thu
    Fri
    Sat
    Sun
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Loading...
    import { Component } from '@angular/core';
    import { CalendarComponent } from '@coreui/angular';
    
    @Component({
      selector: 'docs-calendar07',
      standalone: true,
      imports: [CalendarComponent],
      templateUrl: './calendar07.component.html'
    })
    export class Calendar07Component {
      public calendarDate = new Date(2024, 2, 1);
      public disabledDates = [
        [new Date(2024, 2, 4), new Date(2024, 2, 7)], // range of dates that cannot be selected
        new Date(2024, 2, 16), // single date that cannot be selected
        new Date(2024, 3, 16),
        [new Date(2024, 4, 2), new Date(2024, 4, 8)]
      ];
      public maxDate = new Date(2024, 5, 0);
      public minDate = new Date(2024, 0, 1);
    
      dateFilter = (date: Date | null): boolean => {
        // Sundays cannot be selected
        const day = date?.getDay();
        return day !== 0;
      };
    }
    

    Non-english locale

    The CoreUI Angular Calendar allows users to display dates in non-English locales, making it suitable for international applications.

    Auto

    By default, the Calendar component uses the browser's default locale. However, you can easily configure it to use a different locale supported by the JavaScript Internationalization API. This feature helps create inclusive and accessible applications for a diverse audience.

    Mon
    Tue
    Wed
    Thu
    Fri
    Sat
    Sun
    26
    27
    28
    29
    30
    31
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    1
    2
    3
    4
    5
    6
    Loading...

    Chinese

    Here is an example of the Angular Calendar component with Chinese locale settings.

    周一
    周二
    周三
    周四
    周五
    周六
    周日
    26日
    27日
    28日
    29日
    30日
    31日
    1日
    2日
    3日
    4日
    5日
    6日
    7日
    8日
    9日
    10日
    11日
    12日
    13日
    14日
    15日
    16日
    17日
    18日
    19日
    20日
    21日
    22日
    23日
    24日
    25日
    26日
    27日
    28日
    29日
    30日
    1日
    2日
    3日
    4日
    5日
    6日
    Loading...

    Japanese

    Below is an example of the Angular Calendar component with Japanese locale settings.

    月
    火
    水
    木
    金
    土
    日
    26日
    27日
    28日
    29日
    30日
    31日
    1日
    2日
    3日
    4日
    5日
    6日
    7日
    8日
    9日
    10日
    11日
    12日
    13日
    14日
    15日
    16日
    17日
    18日
    19日
    20日
    21日
    22日
    23日
    24日
    25日
    26日
    27日
    28日
    29日
    30日
    1日
    2日
    3日
    4日
    5日
    6日
    Loading...

    Korean

    Here is an example of the Angular Calendar component with Korean locale settings.

    월
    화
    수
    목
    금
    토
    일
    26일
    27일
    28일
    29일
    30일
    31일
    1일
    2일
    3일
    4일
    5일
    6일
    7일
    8일
    9일
    10일
    11일
    12일
    13일
    14일
    15일
    16일
    17일
    18일
    19일
    20일
    21일
    22일
    23일
    24일
    25일
    26일
    27일
    28일
    29일
    30일
    1일
    2일
    3일
    4일
    5일
    6일
    Loading...

    Right to left support

    RTL support is built-in and can be explicitly controlled through the $enable-rtl variables in scss.

    Hebrew

    Example of the Angular Calendar component with RTL support, using the Hebrew locale.

    ב׳
    ג׳
    ד׳
    ה׳
    ו׳
    ש׳
    א׳
    26
    27
    28
    29
    30
    31
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    1
    2
    3
    4
    5
    6
    Loading...

    Persian

    Example of the Angular Calendar component with Persian locale settings.

    د
    س
    چ
    پ
    ج
    ش
    ی
    ۵
    ۶
    ۷
    ۸
    ۹
    ۱۰
    ۱۱
    ۱۲
    ۱۳
    ۱۴
    ۱۵
    ۱۶
    ۱۷
    ۱۸
    ۱۹
    ۲۰
    ۲۱
    ۲۲
    ۲۳
    ۲۴
    ۲۵
    ۲۶
    ۲۷
    ۲۸
    ۲۹
    ۳۰
    ۳۱
    ۱
    ۲
    ۳
    ۴
    ۵
    ۶
    ۷
    ۸
    ۹
    ۱۰
    ۱۱
    ۱۲
    ۱۳
    ۱۴
    ۱۵
    Loading...

    Customizing

    CSS variables

    The Angular Calendar uses local CSS variables on .calendar for real-time customization. Values for these CSS variables are set via Sass, but they can also be overridden directly in the component for dynamic styling.

    --cui-calendar-table-margin: #{$calendar-table-margin};
    --cui-calendar-table-cell-size: #{$calendar-table-cell-size};
    --cui-calendar-nav-padding: #{$calendar-nav-padding};
    --cui-calendar-nav-border-color: #{$calendar-nav-border-color};
    --cui-calendar-nav-border: #{$calendar-nav-border-width} solid var(--cui-calendar-nav-border-color);
    --cui-calendar-nav-date-color: #{$calendar-nav-date-color};
    --cui-calendar-nav-date-hover-color: #{$calendar-nav-date-hover-color};
    --cui-calendar-nav-icon-width: #{$calendar-nav-icon-width};
    --cui-calendar-nav-icon-height: #{$calendar-nav-icon-height};
    --cui-calendar-nav-icon-double-next: #{escape-svg($calendar-nav-icon-double-next)};
    --cui-calendar-nav-icon-double-prev: #{escape-svg($calendar-nav-icon-double-prev)};
    --cui-calendar-nav-icon-next: #{escape-svg($calendar-nav-icon-next)};
    --cui-calendar-nav-icon-prev: #{escape-svg($calendar-nav-icon-prev)};
    --cui-calendar-nav-icon-color: #{$calendar-nav-icon-color};
    --cui-calendar-nav-icon-hover-color: #{$calendar-nav-icon-hover-color};
    --cui-calendar-cell-header-inner-color: #{$calendar-cell-header-inner-color};
    --cui-calendar-cell-week-number-color: #{$calendar-cell-week-number-color};
    --cui-calendar-cell-hover-color: #{$calendar-cell-hover-color};
    --cui-calendar-cell-hover-bg: #{$calendar-cell-hover-bg};
    --cui-calendar-cell-focus-box-shadow: #{$calendar-cell-focus-box-shadow};
    --cui-calendar-cell-disabled-color: #{$calendar-cell-disabled-color};
    --cui-calendar-cell-selected-color: #{$calendar-cell-selected-color};
    --cui-calendar-cell-selected-bg: #{$calendar-cell-selected-bg};
    --cui-calendar-cell-range-bg: #{$calendar-cell-range-bg};
    --cui-calendar-cell-range-hover-bg: #{$calendar-cell-range-hover-bg};
    --cui-calendar-cell-range-hover-border-color: #{$calendar-cell-range-hover-border-color};
    --cui-calendar-cell-today-color: #{$calendar-cell-today-color};
    --cui-calendar-cell-week-number-color: #{$calendar-cell-week-number-color};
    

    How to use CSS variables

    const vars = {
    '--my-css-var': 10,
    '--my-another-css-var': "red"
    }
    
    &lt;c-calendar [ngStyle]="vars" /&gt;
    

    SASS variables

    $calendar-table-margin:                      .5rem !default;
    $calendar-table-cell-size:                   2.75rem !default;
    
    $calendar-nav-padding:                       .5rem !default;
    $calendar-nav-border-width:                  1px !default;
    $calendar-nav-border-color:                  var(--cui-border-color) !default;
    $calendar-nav-date-color:                    var(--cui-body-color) !default;
    $calendar-nav-date-hover-color:              var(--cui-primary) !default;
    $calendar-nav-icon-width:                    1rem !default;
    $calendar-nav-icon-height:                   1rem !default;
    $calendar-nav-icon-color:                    var(--cui-tertiary-color) !default;
    $calendar-nav-icon-hover-color:              var(--cui-body-color) !default;
    
    $calendar-nav-icon-double-next:              url("data:image/svg+xml,&lt;svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' role='img'&gt;&lt;polygon fill='#000' points='95.314 447.313 72.686 424.687 245.373 252 72.686 79.313 95.314 56.687 290.627 252 95.314 447.313'&gt;&lt;/polygon&gt;&lt;polygon fill='#000' points='255.314 447.313 232.686 424.687 405.373 252 232.686 79.313 255.314 56.687 450.627 252 255.314 447.313'&gt;&lt;/polygon&gt;&lt;/svg&gt;") !default;
    $calendar-nav-icon-double-prev:              url("data:image/svg+xml,&lt;svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' role='img'&gt;&lt;polygon fill='#000' points='416.686 447.313 221.373 252 416.686 56.687 439.314 79.313 266.627 252 439.314 424.687 416.686 447.313'&gt;&lt;/polygon&gt;&lt;polygon fill='#000' points='256.686 447.313 61.373 252 256.686 56.687 279.314 79.313 106.627 252 279.314 424.687 256.686 447.313'&gt;&lt;/polygon&gt;&lt;/svg&gt;") !default;
    $calendar-nav-icon-next:                     url("data:image/svg+xml,&lt;svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' role='img'&gt;&lt;polygon fill='#000' points='179.313 451.313 156.687 428.687 329.372 256 156.687 83.313 179.313 60.687 374.627 256 179.313 451.313'&gt;&lt;/polygon&gt;&lt;/svg&gt;") !default;
    $calendar-nav-icon-prev:                     url("data:image/svg+xml,&lt;svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 512 512' role='img'&gt;&lt;polygon fill='#000' points='324.687 451.313 129.373 256 324.687 60.687 347.313 83.313 174.628 256 347.313 428.687 324.687 451.313'&gt;&lt;/polygon&gt;&lt;/svg&gt;") !default;
    
    $calendar-cell-header-inner-color:           var(--cui-secondary-color) !default;
    $calendar-cell-week-number-color:            var(--cui-secondary-color) !default;
    
    $calendar-cell-hover-color:                  var(--cui-body-color) !default;
    $calendar-cell-hover-bg:                     var(--cui-tertiary-bg) !default;
    $calendar-cell-disabled-color:               var(--cui-tertiary-color) !default;
    
    $calendar-cell-focus-box-shadow:             $focus-ring-box-shadow !default;
    
    $calendar-cell-selected-color:               $white !default;
    $calendar-cell-selected-bg:                  var(--cui-primary) !default;
    
    $calendar-cell-range-bg:                     rgba(var(--cui-primary-rgb), .125) !default;
    $calendar-cell-range-hover-bg:               rgba(var(--cui-primary-rgb), .25) !default;
    $calendar-cell-range-hover-border-color:     var(--cui-primary) !default;
    
    $calendar-cell-today-color:                  var(--cui-danger) !default;
    
    $calendar-cell-week-number-color:            var(--cui-tertiary-color) !default;
    

    API

    Import

    // standalone components
    import { CalendarComponent } from '@coreui/angular';
    
    @Component({
       standalone: true,
       imports: [CalendarComponent]
       // ...   
    })
    export class ...
    
    // ng modules
    import { CalendarModule } from '@coreui/angular';
    
    @NgModule({
       imports: [CalendarModule]
       // ...
    })
    export class ...
    

    c-calendar

    component

    Inputs

    name description type default
    ariaNextMonthLabel A string that provides an accessible label for the button that navigates to the next month in the calendar. This label is read by screen readers to describe the action associated with the button. string Next month
    ariaNextYearLabel A string that provides an accessible label for the button that navigates to the next year in the calendar. This label is intended for screen readers to help users understand the button's functionality. string Next year
    ariaPrevMonthLabel A string that provides an accessible label for the button that navigates to the previous month in the calendar. Screen readers will use this label to explain the purpose of the button. string Previous month
    ariaPrevYearLabel A string that provides an accessible label for the button that navigates to the previous year in the calendar. This label helps screen reader users understand the button's function. string Previous year
    calendarDate Default date month of the component. Date undefined
    calendars The number of calendars that render on desktop devices. number 1
    dateFilter Custom function to determine selectable dates. (date: Date) =&gt; boolean) undefined
    dayFormat Set the format of day number. numeric | 2-digit | (date: Date) =&gt; string | number numeric
    disabledDates List of dates that cannot be selected. (Date | Date[])[] undefined
    endDate Initial selected start date. Date undefined
    firstDayOfWeek Sets the first day of a week. number 1 (Monday)
    locale Sets the default locale for components. If not set, it is inherited from the browser. string default
    maxDate Max selectable date. Date undefined
    minDate Min selectable date. Date undefined
    navYearFirst Reorder year-month navigation, and render year first. boolean false
    navigation Show arrows navigation. boolean true
    range Allow range selection. boolean undefined
    selectAdjacentDays Days in adjacent months shown before or after the current month are selectable. This only applies if the showAdjacentDays option is set to true. boolean false
    selectionType Specify the type of date selection as day, week, month, or year. day | week | month | year day
    showAdjacentDays Display dates in adjacent months (non-selectable) at the start/end of the current month. boolean true
    showWeekNumber Display ISO week numbers in month view. boolean undefined
    startDate Initial selected start date. Date undefined
    weekNumbersLabel Label displayed over week numbers in the calendar. string undefined
    weekdayFormat Set length or format of day name. number | long | narrow | short 2
    Outputs
    name description type
    startDateChange Event emitted on startDate change Date
    endDateChange Event emitted on startDate change Date
    dateHover Event emitted on calendar cell hover Date
    calendarDateChange Event emitted on calendar month change Date
    viewChange Event emitted on view change days | months | years

    • GitHub
    • Twitter
    • Support
    • CoreUI (Vanilla)
    • CoreUI for React.js
    • CoreUI for Vue.js

    CoreUI for Angular is Open Source UI Components Library for Angular.

    Currently v5.5.2 Code licensed MIT , docs CC BY 3.0 .
    CoreUI PRO requires a commercial license.