{"version":3,"file":"clr-angular-forms-datepicker.mjs","sources":["../../../projects/angular/forms/datepicker/providers/date-form-control.service.ts","../../../projects/angular/forms/datepicker/model/day.model.ts","../../../projects/angular/forms/datepicker/utils/constants.ts","../../../projects/angular/forms/datepicker/utils/date-utils.ts","../../../projects/angular/forms/datepicker/enums/weekday.enum.ts","../../../projects/angular/forms/datepicker/providers/locale-helper.service.ts","../../../projects/angular/forms/datepicker/providers/date-io.service.ts","../../../projects/angular/forms/datepicker/model/calendar.model.ts","../../../projects/angular/forms/datepicker/providers/date-navigation.service.ts","../../../projects/angular/forms/datepicker/providers/datepicker-enabled.service.ts","../../../projects/angular/forms/datepicker/providers/view-manager.service.ts","../../../projects/angular/forms/datepicker/providers/datepicker-focus.service.ts","../../../projects/angular/forms/datepicker/monthpicker.ts","../../../projects/angular/forms/datepicker/model/year-range.model.ts","../../../projects/angular/forms/datepicker/yearpicker.ts","../../../projects/angular/forms/datepicker/model/day-view.model.ts","../../../projects/angular/forms/datepicker/model/calendar-view.model.ts","../../../projects/angular/forms/datepicker/day.ts","../../../projects/angular/forms/datepicker/calendar.ts","../../../projects/angular/forms/datepicker/calendar.html","../../../projects/angular/forms/datepicker/daypicker.ts","../../../projects/angular/forms/datepicker/daypicker.html","../../../projects/angular/forms/datepicker/datepicker-action-buttons.ts","../../../projects/angular/forms/datepicker/datepicker-view-manager.ts","../../../projects/angular/forms/datepicker/datepicker-view-manager.html","../../../projects/angular/forms/datepicker/date-container.ts","../../../projects/angular/forms/datepicker/date-input.ts","../../../projects/angular/forms/datepicker/date-single-input.ts","../../../projects/angular/forms/datepicker/date-start-input.ts","../../../projects/angular/forms/datepicker/date-end-input.ts","../../../projects/angular/forms/datepicker/date-input.validator.ts","../../../projects/angular/forms/datepicker/interfaces/day-of-week.interface.ts","../../../projects/angular/forms/datepicker/datepicker.module.ts","../../../projects/angular/forms/datepicker/index.ts","../../../projects/angular/forms/datepicker/clr-angular-forms-datepicker.ts"],"sourcesContent":["/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n@Injectable()\nexport class DateFormControlService {\n  disabled: boolean;\n\n  private _touchedChange = new Subject<void>();\n  private _dirtyChange = new Subject<void>();\n\n  get touchedChange(): Observable<void> {\n    return this._touchedChange.asObservable();\n  }\n\n  get dirtyChange(): Observable<void> {\n    return this._dirtyChange.asObservable();\n  }\n\n  markAsTouched(): void {\n    this._touchedChange.next();\n  }\n\n  markAsDirty(): void {\n    this._dirtyChange.next();\n  }\n\n  // friendly wrapper\n  setDisabled(state: boolean) {\n    this.disabled = state;\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport class DayModel {\n  constructor(\n    readonly year: number,\n    readonly month: number,\n    readonly date: number\n  ) {}\n\n  /**\n   * Checks if the passed CalendarDate is equal to itself.\n   */\n  isEqual(day: DayModel) {\n    if (day) {\n      return this.year === day.year && this.month === day.month && this.date === day.date;\n    }\n    return false;\n  }\n\n  toDate(): Date {\n    return new Date(this.year, this.month, this.date);\n  }\n\n  /**\n   * Returns a new DayModel which is incremented based on the value passed.\n   */\n  incrementBy(value: number): DayModel {\n    // Creating new Javascript Date object to increment because\n    // it will automatically take care of switching to next or previous\n    // months & years without we having to worry about it.\n    const date: Date = new Date(this.year, this.month, this.date + value);\n    return new DayModel(date.getFullYear(), date.getMonth(), date.getDate());\n  }\n\n  /**\n   * Clones the current day model.\n   */\n  clone(): DayModel {\n    return new DayModel(this.year, this.month, this.date);\n  }\n\n  toComparisonString(): string {\n    return `${this.year}${this.pad(this.month)}${this.pad(this.date)}`;\n  }\n\n  toDateString(): string {\n    return this.toDate().toLocaleDateString(undefined, {\n      weekday: 'long',\n      month: 'long',\n      day: 'numeric',\n      year: 'numeric',\n    });\n  }\n\n  /**\n   * Compares the dates and returns boolean value based on the value passed\n   */\n  isBefore(day: DayModel, dayInclusive = false) {\n    return dayInclusive\n      ? this.toDate().getTime() <= day?.toDate().getTime()\n      : this.toDate().getTime() < day?.toDate().getTime();\n  }\n\n  /**\n   * Compares the dates and returns boolean value based on the value passed\n   */\n  isAfter(day: DayModel, dayInclusive = false) {\n    return dayInclusive\n      ? this.toDate().getTime() >= day?.toDate().getTime()\n      : this.toDate().getTime() > day?.toDate().getTime();\n  }\n\n  private pad(num: number): string {\n    return num < 10 ? `0${num}` : `${num}`;\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\n/**\n * This is the en-001 short locale date format. Setting as default.\n */\nexport const DEFAULT_LOCALE_FORMAT = 'dd/MM/y';\n\n// https://en.wikipedia.org/wiki/Date_format_by_country\nexport const LITTLE_ENDIAN_REGEX = /d+.+m+.+y+/i;\nexport const MIDDLE_ENDIAN_REGEX = /m+.+d+.+y+/i;\n// No need for BIG_ENDIAN_REGEX because anything that doesn't satisfy the above 2\n// is automatically BIG_ENDIAN\n\nexport const DELIMITER_REGEX = /d+|m+|y+/i;\n\nexport const USER_INPUT_REGEX = /\\d+/g;\n\nexport const MOBILE_USERAGENT_REGEX = /Mobi/i;\n\nexport const RTL_REGEX = /\\u200f/g;\n\nexport const YEAR = 'YYYY';\nexport const MONTH = 'MM';\nexport const DATE = 'DD';\n\nexport type FormatType = 'LITTLE_ENDIAN' | 'MIDDLE_ENDIAN' | 'BIG_ENDIAN';\n\nexport type InputDateDisplayFormat = {\n  readonly name: FormatType;\n  readonly format: [string, string, string];\n};\n\nexport const LITTLE_ENDIAN: InputDateDisplayFormat = {\n  name: 'LITTLE_ENDIAN',\n  format: [DATE, MONTH, YEAR],\n};\n\nexport const MIDDLE_ENDIAN: InputDateDisplayFormat = {\n  name: 'MIDDLE_ENDIAN',\n  format: [MONTH, DATE, YEAR],\n};\n\nexport const BIG_ENDIAN: InputDateDisplayFormat = {\n  name: 'BIG_ENDIAN',\n  format: [YEAR, MONTH, DATE],\n};\n\nexport const NO_OF_DAYS_IN_A_WEEK = 7;\nexport const NO_OF_ROWS_IN_CALENDAR_VIEW = 6;\nexport const TOTAL_DAYS_IN_DAYS_VIEW: number = NO_OF_DAYS_IN_A_WEEK * NO_OF_ROWS_IN_CALENDAR_VIEW;\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { WeekDay } from '@angular/common';\n\n/**\n * Returns the number of days in a month.\n */\nexport function getNumberOfDaysInTheMonth(year: number, month: number): number {\n  // If we go to the next month, but use a day of 0, it returns the last day from the previous month\n  return new Date(year, month + 1, 0).getDate();\n}\n\n/**\n * Returns the day for the corresponding date where 0 represents Sunday.\n */\nexport function getDay(year: number, month: number, date: number): WeekDay {\n  return new Date(year, month, date).getDay();\n}\n\n/**\n * Takes in a year and if it is a 2 digit year, returns the corresponding 4 digit year.\n * Window of 80 years before and 20 years after the present year.\n * Credit: https://github.com/globalizejs/globalize/blob/e1b31cd6a4f1cff75b185b68b7a32220aac5196f/src/date/parse.js\n */\nexport function parseToFourDigitYear(year: number): number {\n  if (year > 9999 || (year > 100 && year < 999) || year < 10) {\n    return -1;\n  }\n  if (year > 999) {\n    return year;\n  }\n  const currYear: number = new Date().getFullYear();\n  const century: number = Math.floor(currYear / 100) * 100;\n  let result: number = year + century;\n  if (result > currYear + 20) {\n    result = result - 100;\n  }\n  return result;\n}\n\nexport function datesAreEqual(date1: Date, date2: Date) {\n  if (date1 instanceof Date && date2 instanceof Date) {\n    return (\n      date1.getFullYear() === date2.getFullYear() &&\n      date1.getMonth() === date2.getMonth() &&\n      date1.getDate() === date2.getDate()\n    );\n  } else {\n    return false;\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\n/**\n * Index of the day of the week, matching JavaScript's Date.getDay() convention.\n * Used to override the locale-derived first day of the week in the date picker.\n */\nexport enum ClrWeekday {\n  Sunday = 0,\n  Monday = 1,\n  Tuesday = 2,\n  Wednesday = 3,\n  Thursday = 4,\n  Friday = 5,\n  Saturday = 6,\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n  FormatWidth,\n  FormStyle,\n  getLocaleDateFormat,\n  getLocaleDayNames,\n  getLocaleFirstDayOfWeek,\n  getLocaleMonthNames,\n  TranslationWidth,\n} from '@angular/common';\nimport { Inject, Injectable, LOCALE_ID } from '@angular/core';\n\nimport { ClrWeekday } from '../enums/weekday.enum';\nimport { ClrDayOfWeek } from '../interfaces/day-of-week.interface';\n\n/**\n * This service extracts the Angular CLDR data needed by the datepicker.\n */\n@Injectable()\nexport class LocaleHelperService {\n  private _firstDayOfWeek: number = ClrWeekday.Sunday;\n  private _localeDays: ReadonlyArray<ClrDayOfWeek>;\n  private _localeMonthsAbbreviated: ReadonlyArray<string>;\n  private _localeMonthsWide: ReadonlyArray<string>;\n  private _localeDateFormat: string;\n\n  constructor(@Inject(LOCALE_ID) public locale: string) {\n    this.initializeLocaleData();\n  }\n\n  get firstDayOfWeek(): number {\n    return this._firstDayOfWeek;\n  }\n\n  get localeDays(): ReadonlyArray<ClrDayOfWeek> {\n    return this._localeDays;\n  }\n\n  // leave for backward compatibility\n  get localeDaysNarrow(): ReadonlyArray<string> {\n    return this._localeDays.map(day => day.narrow);\n  }\n\n  get localeMonthsAbbreviated(): ReadonlyArray<string> {\n    return this._localeMonthsAbbreviated;\n  }\n\n  get localeMonthsWide(): ReadonlyArray<string> {\n    return this._localeMonthsWide;\n  }\n\n  get localeDateFormat(): string {\n    return this._localeDateFormat;\n  }\n\n  /**\n   * Overrides the first day of the week regardless of locale.\n   * Accepts a `ClrWeekday` value (Sunday=0 through Saturday=6), or null to revert to locale default.\n   * Incorrect values will revert to default value (Sunday).\n   */\n  updateFirstDayOfWeek(day: ClrWeekday | null): void {\n    if (day === null || day < ClrWeekday.Sunday || day > ClrWeekday.Saturday) {\n      this.initializeLocaleFirstDayOfWeek();\n      this.initializeLocaleDays();\n\n      return;\n    }\n\n    this._firstDayOfWeek = day;\n\n    this.initializeLocaleDays();\n  }\n\n  /**\n   * Initializes the locale data.\n   */\n  private initializeLocaleData(): void {\n    // Order in which these functions is called is very important.\n    this.initializeLocaleFirstDayOfWeek();\n    this.initializeLocaleDateFormat();\n    this.initializeLocaleMonthsAbbreviated();\n    this.initializeLocaleMonthsWide();\n    this.initializeLocaleDays();\n  }\n\n  /**\n   * Initialize day names based on the locale.\n   * eg: [{day: Sunday, narrow: S}, {day: Monday, narrow: M}...] for en-US.\n   */\n  private initializeLocaleDays(): void {\n    // Get locale day names starting with Sunday\n    const tempArr = [];\n    const tempWideArr: string[] = getLocaleDayNames(this.locale, FormStyle.Standalone, TranslationWidth.Wide).slice();\n    const tempNarrowArr: string[] = getLocaleDayNames(\n      this.locale,\n      FormStyle.Standalone,\n      TranslationWidth.Narrow\n    ).slice();\n\n    for (let i = 0; i < 7; i++) {\n      tempArr.push({ day: tempWideArr[i], narrow: tempNarrowArr[i] });\n    }\n\n    // Rearrange the tempArr to start with the first day of the week based on the locale (default or override).\n    if (this.firstDayOfWeek > ClrWeekday.Sunday) {\n      const prevDays: { day: string; narrow: string }[] = tempArr.splice(0, this.firstDayOfWeek);\n      tempArr.push(...prevDays);\n    }\n\n    this._localeDays = tempArr;\n  }\n\n  /**\n   * Initializes the array of month names in the TranslationWidth.Abbreviated format.\n   * e.g. `[Jan, Feb, ...]` for en-US\n   */\n  private initializeLocaleMonthsAbbreviated(): void {\n    this._localeMonthsAbbreviated = getLocaleMonthNames(\n      this.locale,\n      FormStyle.Standalone,\n      TranslationWidth.Abbreviated\n    ).slice();\n  }\n\n  /**\n   * Initializes the array of month names in the TranslationWidth.Wide format.\n   * e.g. `[January, February, ...]` for en-US\n   */\n  private initializeLocaleMonthsWide(): void {\n    this._localeMonthsWide = getLocaleMonthNames(this.locale, FormStyle.Standalone, TranslationWidth.Wide).slice();\n  }\n\n  /**\n   * Initializes the first day of the week based on the locale.\n   */\n  private initializeLocaleFirstDayOfWeek(): void {\n    this._firstDayOfWeek = getLocaleFirstDayOfWeek(this.locale);\n  }\n\n  private initializeLocaleDateFormat(): void {\n    this._localeDateFormat = getLocaleDateFormat(this.locale, FormatWidth.Short);\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { LocaleHelperService } from './locale-helper.service';\nimport { DateRange, DateRangeOption } from '../interfaces/date-range.interface';\nimport { DayModel } from '../model/day.model';\nimport {\n  BIG_ENDIAN,\n  DEFAULT_LOCALE_FORMAT,\n  DELIMITER_REGEX,\n  InputDateDisplayFormat,\n  LITTLE_ENDIAN,\n  LITTLE_ENDIAN_REGEX,\n  MIDDLE_ENDIAN,\n  MIDDLE_ENDIAN_REGEX,\n  RTL_REGEX,\n  USER_INPUT_REGEX,\n} from '../utils/constants';\nimport { getNumberOfDaysInTheMonth, parseToFourDigitYear } from '../utils/date-utils';\n\n@Injectable()\nexport class DateIOService {\n  /**\n   * This is the default range. It approximates the beginning of time to the end of time.\n   * The disabled dates are the dates that are not allowed to be selected.\n   * The min date is the earliest date that can be selected.\n   * The max date is the latest date that can be selected.\n   * Unless a minDate or maxDate is set with the native HTML5 api the range is all dates\n   */\n  disabledDates: DateRange = {\n    minDate: new DayModel(0, 0, 1),\n    maxDate: new DayModel(9999, 11, 31),\n  };\n\n  cldrLocaleDateFormat: string = DEFAULT_LOCALE_FORMAT;\n  minDateChange = new Subject<DayModel>();\n  maxDateChange = new Subject<DayModel>();\n\n  private dateRangeOptions;\n  private localeDisplayFormat: InputDateDisplayFormat = LITTLE_ENDIAN;\n  private delimiters: [string, string] = ['/', '/'];\n\n  constructor(localeHelperService: LocaleHelperService) {\n    this.cldrLocaleDateFormat = localeHelperService.localeDateFormat;\n    this.initializeLocaleDisplayFormat();\n  }\n\n  get placeholderText(): string {\n    const format: [string, string, string] = this.localeDisplayFormat.format;\n    return format[0] + this.delimiters[0] + format[1] + this.delimiters[1] + format[2];\n  }\n\n  setMinDate(date: string): void {\n    // NOTE: I'm expecting consumers to pass one of four things here:\n    //       A proper date string(2019-11-11), null, undefined or empty string ('')\n    if (!date) {\n      // attribute binding was removed, reset back to the beginning of time\n      this.disabledDates.minDate = new DayModel(0, 0, 1);\n    } else {\n      const [year, month, day] = date.split('-').map(n => parseInt(n, 10));\n      this.disabledDates.minDate = new DayModel(year, month - 1, day);\n    }\n    this.minDateChange.next(this.disabledDates.minDate);\n  }\n\n  setMaxDate(date: string): void {\n    // NOTE: I'm expecting consumers to pass one of four things here:\n    //       A proper date string(2019-11-11), null, undefined or empty string ('')\n    if (!date) {\n      // attribute binding was removed, reset forward to the end of time\n      this.disabledDates.maxDate = new DayModel(9999, 11, 31);\n    } else {\n      const [year, month, day] = date.split('-').map(n => parseInt(n, 10));\n      this.disabledDates.maxDate = new DayModel(year, month - 1, day);\n    }\n    this.maxDateChange.next(this.disabledDates.maxDate);\n  }\n\n  setRangeOptions(rangeOptions: DateRangeOption[]) {\n    const validatedRangeOption = this.validateDateRangeOptions(rangeOptions);\n    this.dateRangeOptions = validatedRangeOption || [];\n  }\n\n  getRangeOptions() {\n    return this.dateRangeOptions;\n  }\n\n  toLocaleDisplayFormatString(date: Date): string {\n    if (date) {\n      if (isNaN(date.getTime())) {\n        return '';\n      }\n      const dateNo: number = date.getDate();\n      const monthNo: number = date.getMonth() + 1;\n      const dateStr: string = dateNo > 9 ? dateNo.toString() : '0' + dateNo;\n      const monthStr: string = monthNo > 9 ? monthNo.toString() : '0' + monthNo;\n      if (this.localeDisplayFormat === LITTLE_ENDIAN) {\n        return dateStr + this.delimiters[0] + monthStr + this.delimiters[1] + date.getFullYear();\n      } else if (this.localeDisplayFormat === MIDDLE_ENDIAN) {\n        return monthStr + this.delimiters[0] + dateStr + this.delimiters[1] + date.getFullYear();\n      } else {\n        return date.getFullYear() + this.delimiters[0] + monthStr + this.delimiters[1] + dateStr;\n      }\n    }\n    return '';\n  }\n\n  getDateValueFromDateString(date: string): Date {\n    if (!date || typeof date !== 'string') {\n      return null;\n    }\n    const dateParts: string[] = date.match(USER_INPUT_REGEX);\n    if (!dateParts || dateParts.length !== 3) {\n      return null;\n    }\n    const [firstPart, secondPart, thirdPart] = dateParts;\n    if (this.localeDisplayFormat === LITTLE_ENDIAN) {\n      // secondPart is month && firstPart is date\n      return this.validateAndGetDate(thirdPart, secondPart, firstPart);\n    } else if (this.localeDisplayFormat === MIDDLE_ENDIAN) {\n      // firstPart is month && secondPart is date\n      return this.validateAndGetDate(thirdPart, firstPart, secondPart);\n    } else {\n      // secondPart is month && thirdPart is date\n      return this.validateAndGetDate(firstPart, secondPart, thirdPart);\n    }\n  }\n\n  private validateDateRangeOptions(rangeOptions: DateRangeOption[]): DateRangeOption[] {\n    const validOptions = [];\n    rangeOptions?.forEach((rangeOption: DateRangeOption) => {\n      if (\n        rangeOption?.value?.length !== 2 ||\n        Object.prototype.toString.call(rangeOption?.value[0]) !== '[object Date]' ||\n        Object.prototype.toString.call(rangeOption?.value[1]) !== '[object Date]'\n      ) {\n        return;\n      }\n      validOptions.push(rangeOption);\n    });\n    return validOptions;\n  }\n\n  private initializeLocaleDisplayFormat(): void {\n    const format: string = this.cldrLocaleDateFormat.toLocaleLowerCase();\n    if (LITTLE_ENDIAN_REGEX.test(format)) {\n      this.localeDisplayFormat = LITTLE_ENDIAN;\n    } else if (MIDDLE_ENDIAN_REGEX.test(format)) {\n      this.localeDisplayFormat = MIDDLE_ENDIAN;\n    } else {\n      // everything else is set to BIG-ENDIAN FORMAT\n      this.localeDisplayFormat = BIG_ENDIAN;\n    }\n    this.extractDelimiters();\n  }\n\n  private extractDelimiters(): void {\n    if (this.cldrLocaleDateFormat) {\n      // Sanitize Date Format. Remove RTL characters.\n      // FIXME: When we support RTL, remove this and handle it correctly.\n      const localeFormat: string = this.cldrLocaleDateFormat.replace(RTL_REGEX, '');\n      const delimiters: string[] = localeFormat.split(DELIMITER_REGEX);\n\n      // NOTE: The split from the CLDR date format should always result\n      // in an arary with 4 elements. The 1st and the 2nd values are the delimiters\n      // we will use in order.\n      // Eg: \"dd/MM/y\".split(/d+|m+|y+/i) results in [\"\", \"/\", \"/\", \"\"]\n      if (delimiters && delimiters.length === 4) {\n        this.delimiters = [delimiters[1], delimiters[2]];\n      } else {\n        console.error('Unexpected date format received. Delimiters extracted: ', delimiters);\n      }\n    }\n  }\n\n  /**\n   * Checks if the month entered by the user is valid or not.\n   * Note: Month is 0 based.\n   */\n  private isValidMonth(month: number): boolean {\n    return month > -1 && month < 12;\n  }\n\n  /**\n   * Checks if the date is valid depending on the year and month provided.\n   */\n  private isValidDate(year: number, month: number, date: number): boolean {\n    return date > 0 && date <= getNumberOfDaysInTheMonth(year, month);\n  }\n\n  /**\n   * Validates the parameters provided and returns the date.\n   * If the parameters are not\n   * valid then return null.\n   * NOTE: (Month here is 1 based since the user has provided that as an input)\n   */\n  private validateAndGetDate(year: string, month: string, date: string): Date {\n    // I don't know whats wrong with the TS compiler. It throws an error if I write\n    // the below if statement. The error is:\n    // Operator '!==' cannot be applied to types '2' and '4'\n    // More info here: https://github.com/Microsoft/TypeScript/issues/12794#issuecomment-270342936\n    /*\n        if (year.length !== 2 || year.length !== 4) {\n            return null;\n        }\n        */\n\n    // Instead I have to write the logic like this x-(\n    const y: number = +year;\n    const m: number = +month - 1; // month is 0 based\n    const d: number = +date;\n    if (!this.isValidMonth(m) || !this.isValidDate(y, m, d)) {\n      return null;\n    }\n    const result: number = parseToFourDigitYear(y);\n    return result !== -1 ? new Date(result, m, d) : null;\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { DayModel } from './day.model';\nimport { getNumberOfDaysInTheMonth } from '../utils/date-utils';\n\nexport class CalendarModel {\n  days: DayModel[];\n\n  constructor(\n    readonly year: number,\n    readonly month: number\n  ) {\n    this.initializeDaysInCalendar();\n  }\n\n  /**\n   * Checks if the calendar passed is equal to the current calendar.\n   */\n  isEqual(calendar: CalendarModel) {\n    if (calendar) {\n      return this.year === calendar.year && this.month === calendar.month;\n    }\n    return false;\n  }\n\n  /**\n   * Checks if a DayModel is in the Calendar\n   */\n  isDayInCalendar(day: DayModel): boolean {\n    if (day) {\n      return this.year === day.year && this.month === day.month;\n    }\n    return false;\n  }\n\n  /**\n   * Returns CalendarModel of the previous month.\n   */\n  previousMonth(): CalendarModel {\n    if (this.month === 0) {\n      return new CalendarModel(this.year - 1, 11);\n    } else {\n      return new CalendarModel(this.year, this.month - 1);\n    }\n  }\n\n  /**\n   * Returns CalendarModel of the next month.\n   */\n  nextMonth(): CalendarModel {\n    if (this.month === 11) {\n      return new CalendarModel(this.year + 1, 0);\n    } else {\n      return new CalendarModel(this.year, this.month + 1);\n    }\n  }\n\n  /**\n   * Returns CalendarModel of the previous year.\n   */\n  previousYear(): CalendarModel {\n    return new CalendarModel(this.year - 1, this.month);\n  }\n\n  /**\n   * Returns CalendarModel of the next year.\n   */\n  nextYear(): CalendarModel {\n    return new CalendarModel(this.year + 1, this.month);\n  }\n\n  /**\n   * Populates the days array with the DayModels in the current Calendar.\n   */\n  private initializeDaysInCalendar(): void {\n    const noOfDaysInCalendar: number = getNumberOfDaysInTheMonth(this.year, this.month);\n    this.days = Array(noOfDaysInCalendar)\n      .fill(null)\n      .map((_date, index) => {\n        return new DayModel(this.year, this.month, index + 1);\n      });\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject, tap } from 'rxjs';\n\nimport { DateRangeInput } from '../interfaces/date-range.interface';\nimport { CalendarModel } from '../model/calendar.model';\nimport { DayModel } from '../model/day.model';\n\n/**\n * This service is responsible for:\n * 1. Initializing the displayed calendar.\n * 2. Moving the calendar to the next, previous or current months\n * 3. Managing the focused and selected day models.\n */\n@Injectable()\nexport class DateNavigationService {\n  persistedDate: DayModel;\n  persistedEndDate: DayModel;\n  selectedDay: DayModel;\n  selectedEndDay: DayModel;\n  focusedDay: DayModel;\n  hoveredDay: DayModel;\n  hoveredMonth: number;\n  hoveredYear: number;\n  isRangePicker = false;\n  hasActionButtons = false;\n\n  private _displayedCalendar: CalendarModel;\n  private _todaysFullDate: Date = new Date();\n  private _today: DayModel;\n  private _selectedDayChange = new Subject<DayModel>();\n  private _selectedEndDayChange = new Subject<DayModel>();\n  private _displayedCalendarChange = new Subject<void>();\n  private _focusOnCalendarChange = new Subject<void>();\n  private _refreshCalendarView = new Subject<void>();\n  private _focusedDayChange = new Subject<DayModel>();\n\n  get today(): DayModel {\n    return this._today;\n  }\n\n  get displayedCalendar(): CalendarModel {\n    return this._displayedCalendar;\n  }\n\n  get selectedDayChange(): Observable<DayModel> {\n    return this._selectedDayChange.asObservable();\n  }\n\n  get selectedEndDayChange(): Observable<DayModel> {\n    return this._selectedEndDayChange.asObservable();\n  }\n\n  /**\n   * This observable lets the subscriber know that the displayed calendar has changed.\n   */\n  get displayedCalendarChange(): Observable<void> {\n    return this._displayedCalendarChange.asObservable();\n  }\n\n  /**\n   * This observable lets the subscriber know that the focus should be applied on the calendar.\n   */\n  get focusOnCalendarChange(): Observable<void> {\n    return this._focusOnCalendarChange.asObservable();\n  }\n\n  /**\n   * This observable lets the subscriber know that the focused day in the displayed calendar has changed.\n   */\n  get focusedDayChange(): Observable<DayModel> {\n    return this._focusedDayChange.asObservable().pipe(tap((day: DayModel) => (this.focusedDay = day)));\n  }\n\n  /**\n   * This observable lets the subscriber know that the displayed calendar has changed.\n   */\n  get refreshCalendarView(): Observable<void> {\n    return this._refreshCalendarView.asObservable();\n  }\n\n  /**\n   * Notifies that the selected day has changed so that the date can be emitted to the user.\n   */\n  notifySelectedDayChanged(dayObject: DayModel | DateRangeInput, { emitEvent } = { emitEvent: true }): void {\n    if (this.isRangePicker) {\n      const { startDate, endDate } = dayObject as DateRangeInput;\n      if (startDate && endDate) {\n        this.setSelectedDay(startDate, emitEvent);\n        this.setSelectedEndDay(endDate, emitEvent);\n      } else {\n        if (endDate !== null) {\n          this.setSelectedEndDay(endDate, emitEvent);\n        }\n        if (startDate !== null) {\n          this.setSelectedDay(startDate, emitEvent);\n        }\n      }\n    } else {\n      const day = dayObject as DayModel;\n      this.setSelectedDay(day, emitEvent);\n    }\n    this._refreshCalendarView.next();\n  }\n\n  /**\n   * Initializes the calendar based on the selected day.\n   */\n  initializeCalendar(): void {\n    this.focusedDay = null; // Can be removed later on the store focus\n    this.initializeTodaysDate();\n    if (this.selectedDay) {\n      this._displayedCalendar = new CalendarModel(this.selectedDay.year, this.selectedDay.month);\n    } else {\n      this._displayedCalendar = new CalendarModel(this.today.year, this.today.month);\n    }\n  }\n\n  changeMonth(month: number): void {\n    this.setDisplayedCalendar(new CalendarModel(this._displayedCalendar.year, month));\n  }\n\n  changeYear(year: number): void {\n    this.setDisplayedCalendar(new CalendarModel(year, this._displayedCalendar.month));\n  }\n\n  /**\n   * Moves the displayed calendar to the next month.\n   */\n  moveToNextMonth(): void {\n    this.setDisplayedCalendar(this._displayedCalendar.nextMonth());\n  }\n\n  /**\n   * Moves the displayed calendar to the previous month.\n   */\n  moveToPreviousMonth(): void {\n    this.setDisplayedCalendar(this._displayedCalendar.previousMonth());\n  }\n\n  /**\n   * Moves the displayed calendar to the next year.\n   */\n  moveToNextYear(): void {\n    this.setDisplayedCalendar(this._displayedCalendar.nextYear());\n  }\n\n  /**\n   * Moves the displayed calendar to the previous year.\n   */\n  moveToPreviousYear(): void {\n    this.setDisplayedCalendar(this._displayedCalendar.previousYear());\n  }\n\n  /**\n   * Moves the displayed calendar to the current month and year.\n   */\n  moveToCurrentMonth(): void {\n    if (!this.displayedCalendar.isDayInCalendar(this.today)) {\n      this.setDisplayedCalendar(new CalendarModel(this.today.year, this.today.month));\n    }\n    this._focusOnCalendarChange.next();\n  }\n\n  moveToSpecificMonth(day: DayModel) {\n    if (!this.displayedCalendar.isDayInCalendar(day)) {\n      this.setDisplayedCalendar(new CalendarModel(day.year, day.month));\n    }\n  }\n\n  incrementFocusDay(value: number): void {\n    this.hoveredDay = this.focusedDay = this.focusedDay.incrementBy(value);\n    if (this._displayedCalendar.isDayInCalendar(this.focusedDay)) {\n      this._focusedDayChange.next(this.focusedDay);\n    } else {\n      this.setDisplayedCalendar(new CalendarModel(this.focusedDay.year, this.focusedDay.month));\n    }\n    this._focusOnCalendarChange.next();\n  }\n\n  resetSelectedDay() {\n    this.selectedDay = this.persistedDate;\n    this.selectedEndDay = this.persistedEndDate;\n  }\n\n  convertDateToDayModel(date: Date): DayModel {\n    return new DayModel(date.getFullYear(), date.getMonth(), date.getDate());\n  }\n\n  private setSelectedDay(dayModel: DayModel | undefined, emitEvent): void {\n    this.selectedDay = dayModel;\n    if (emitEvent) {\n      this._selectedDayChange.next(dayModel);\n    }\n  }\n\n  private setSelectedEndDay(dayModel: DayModel | undefined, emitEvent): void {\n    this.selectedEndDay = dayModel;\n    if (emitEvent) {\n      this._selectedEndDayChange.next(dayModel);\n    }\n  }\n\n  // not a setter because i want this to remain private\n  private setDisplayedCalendar(value: CalendarModel) {\n    if (!this._displayedCalendar.isEqual(value)) {\n      this._displayedCalendar = value;\n      this._displayedCalendarChange.next();\n    }\n  }\n\n  private initializeTodaysDate(): void {\n    this._todaysFullDate = new Date();\n    this._today = new DayModel(\n      this._todaysFullDate.getFullYear(),\n      this._todaysFullDate.getMonth(),\n      this._todaysFullDate.getDate()\n    );\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { DOCUMENT, Inject, Injectable } from '@angular/core';\nimport { DATEPICKER_ENABLE_BREAKPOINT } from '@clr/angular/utils';\n\nimport { MOBILE_USERAGENT_REGEX } from '../utils/constants';\n\n@Injectable()\nexport class DatepickerEnabledService {\n  private _isUserAgentMobile = false;\n  private _innerWidth: number;\n\n  constructor(@Inject(DOCUMENT) private _document: any) {\n    if (_document) {\n      this._isUserAgentMobile = MOBILE_USERAGENT_REGEX.test(_document.defaultView.navigator.userAgent);\n      this._innerWidth = _document.defaultView.innerWidth;\n    }\n  }\n\n  /**\n   * Returns if the calendar should be active or not.\n   * If the user agent is mobile and the screen width is less than DATEPICKER_ACTIVE_BREAKPOINT\n   * then the calendar is inactive.\n   */\n  get isEnabled(): boolean {\n    // https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent\n    // What they recommend is:\n    //\"In summary, we recommend looking for the string 'Mobi'\n    // anywhere in the User Agent to detect a mobile device.\"\n    if (this._document) {\n      if (this._innerWidth < DATEPICKER_ENABLE_BREAKPOINT && this._isUserAgentMobile) {\n        return false;\n      }\n    }\n    return true;\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { ClrPopoverPosition } from '@clr/angular/popover/common';\n\nconst enum DatepickerViewEnum {\n  MONTHVIEW = 'MONTHVIEW',\n  YEARVIEW = 'YEARVIEW',\n  DAYVIEW = 'DAYVIEW',\n}\n\n/**\n * This service manages which view is visible in the datepicker popover.\n */\n@Injectable()\nexport class ViewManagerService {\n  position = ClrPopoverPosition.BOTTOM_LEFT;\n\n  private _currentView: DatepickerViewEnum = DatepickerViewEnum.DAYVIEW;\n\n  get isDayView(): boolean {\n    return this._currentView === DatepickerViewEnum.DAYVIEW;\n  }\n\n  get isYearView(): boolean {\n    return this._currentView === DatepickerViewEnum.YEARVIEW;\n  }\n\n  get isMonthView(): boolean {\n    return this._currentView === DatepickerViewEnum.MONTHVIEW;\n  }\n\n  changeToMonthView(): void {\n    this._currentView = DatepickerViewEnum.MONTHVIEW;\n  }\n\n  changeToYearView(): void {\n    this._currentView = DatepickerViewEnum.YEARVIEW;\n  }\n\n  changeToDayView(): void {\n    this._currentView = DatepickerViewEnum.DAYVIEW;\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { isPlatformBrowser } from '@angular/common';\nimport { ElementRef, Inject, Injectable, NgZone, PLATFORM_ID } from '@angular/core';\nimport { filter, first } from 'rxjs/operators';\n\n/**\n * This service focuses the day that is focusable in the calendar.\n */\n@Injectable()\nexport class DatepickerFocusService {\n  constructor(\n    private _ngZone: NgZone,\n    @Inject(PLATFORM_ID) private platformId: any\n  ) {}\n\n  focusCell(elRef: ElementRef<HTMLElement>): void {\n    this._ngZone.runOutsideAngular(() => {\n      this.ngZoneIsStableInBrowser().subscribe(() => {\n        const focusEl = elRef.nativeElement.querySelector<HTMLElement>('[tabindex=\"0\"]');\n        if (focusEl) {\n          focusEl.focus();\n        }\n      });\n    });\n  }\n\n  focusInput(element: HTMLInputElement): void {\n    this._ngZone.runOutsideAngular(() => this.ngZoneIsStableInBrowser().subscribe(() => element.focus()));\n  }\n\n  elementIsFocused(element: HTMLInputElement) {\n    return isPlatformBrowser(this.platformId) && document.activeElement === element;\n  }\n\n  private ngZoneIsStableInBrowser() {\n    // Credit: Material: https://github.com/angular/material2/blob/master/src/lib/datepicker/calendar.ts\n    return this._ngZone.onStable.asObservable().pipe(\n      first(),\n      filter(() => isPlatformBrowser(this.platformId))\n    );\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { AfterViewInit, Component, ElementRef, HostListener } from '@angular/core';\nimport { ClrCommonStringsService, Keys } from '@clr/angular/utils';\n\nimport { DateNavigationService } from './providers/date-navigation.service';\nimport { DatepickerFocusService } from './providers/datepicker-focus.service';\nimport { LocaleHelperService } from './providers/locale-helper.service';\nimport { ViewManagerService } from './providers/view-manager.service';\n@Component({\n  selector: 'clr-monthpicker',\n  template: `\n    <div class=\"calendar-header in-monthpicker\">\n      <div class=\"year-view-switcher\">\n        <button\n          class=\"calendar-btn yearpicker-trigger\"\n          type=\"button\"\n          (click)=\"changeToYearView()\"\n          [attr.aria-label]=\"yearAttrString\"\n          [attr.title]=\"yearAttrString\"\n        >\n          {{ calendarYear }}\n        </button>\n      </div>\n      <div class=\"calendar-switchers\">\n        <button\n          class=\"calendar-btn switcher\"\n          type=\"button\"\n          (click)=\"previousYear()\"\n          [attr.aria-label]=\"commonStrings.keys.datepickerPreviousMonth\"\n        >\n          <cds-icon shape=\"angle\" direction=\"left\" [attr.title]=\"commonStrings.keys.datepickerPreviousMonth\"></cds-icon>\n        </button>\n        <button\n          class=\"calendar-btn switcher\"\n          type=\"button\"\n          (click)=\"currentYear()\"\n          [attr.aria-label]=\"commonStrings.keys.datepickerCurrentMonth\"\n        >\n          <cds-icon shape=\"event\" [attr.title]=\"commonStrings.keys.datepickerCurrentMonth\"></cds-icon>\n        </button>\n        <button\n          class=\"calendar-btn switcher\"\n          type=\"button\"\n          (click)=\"nextYear()\"\n          [attr.aria-label]=\"commonStrings.keys.datepickerNextMonth\"\n        >\n          <cds-icon shape=\"angle\" direction=\"right\" [attr.title]=\"commonStrings.keys.datepickerNextMonth\"></cds-icon>\n        </button>\n      </div>\n    </div>\n    <div class=\"months\">\n      @for (month of monthNames; track month; let monthIndex = $index) {\n        <button\n          type=\"button\"\n          class=\"calendar-btn month\"\n          (click)=\"changeMonth(monthIndex)\"\n          [class.is-selected]=\"isSelected(monthIndex)\"\n          [class.is-start-range]=\"getIsRangeStartMonth(monthIndex)\"\n          [class.is-end-range]=\"getIsRangeEndMonth(monthIndex)\"\n          [class.in-range]=\"isInRange(monthIndex)\"\n          [attr.tabindex]=\"getTabIndex(monthIndex)\"\n          [class.is-today]=\"calendarYear === currentCalendarYear && monthIndex === currentCalendarMonth\"\n          (mouseenter)=\"onHover(monthIndex)\"\n        >\n          {{ month }}\n        </button>\n      }\n    </div>\n  `,\n  host: {\n    '[class.monthpicker]': 'true',\n    role: 'application',\n  },\n  standalone: false,\n})\nexport class ClrMonthpicker implements AfterViewInit {\n  /**\n   * Keeps track of the current focused month.\n   */\n  private _focusedMonthIndex: number;\n\n  constructor(\n    private _localeHelperService: LocaleHelperService,\n    private _dateNavigationService: DateNavigationService,\n    private _datepickerFocusService: DatepickerFocusService,\n    private _elRef: ElementRef,\n    private _viewManagerService: ViewManagerService,\n    public commonStrings: ClrCommonStringsService\n  ) {\n    this._focusedMonthIndex = this.calendarMonthIndex;\n  }\n  /**\n   * Gets the months array which is used to rendered the monthpicker view.\n   * Months are in the TranslationWidth.Wide format.\n   */\n  get monthNames(): ReadonlyArray<string> {\n    return this._localeHelperService.localeMonthsWide;\n  }\n  /**\n   * Gets the month value of the Calendar.\n   */\n  get calendarMonthIndex(): number {\n    return this._dateNavigationService.displayedCalendar.month;\n  }\n\n  /**\n   * Gets the year which the user is currently on.\n   */\n  get calendarEndMonthIndex(): number {\n    return this._dateNavigationService.selectedEndDay?.month;\n  }\n\n  get yearAttrString(): string {\n    return this.commonStrings.parse(this.commonStrings.keys.datepickerSelectYearText, {\n      CALENDAR_YEAR: this.calendarYear.toString(),\n    });\n  }\n\n  /**\n   * Returns the year value of the calendar.\n   */\n  get calendarYear(): number {\n    return this._dateNavigationService.displayedCalendar.year;\n  }\n\n  get currentCalendarYear(): number {\n    return new Date().getFullYear();\n  }\n\n  get currentCalendarMonth(): number {\n    return new Date().getMonth();\n  }\n\n  getIsRangeStartMonth(monthIndex: number): boolean {\n    return (\n      this._dateNavigationService.isRangePicker &&\n      this.calendarYear === this._dateNavigationService.selectedDay?.year &&\n      monthIndex === this._dateNavigationService.selectedDay?.month\n    );\n  }\n\n  getIsRangeEndMonth(monthIndex: number): boolean {\n    return (\n      this._dateNavigationService.isRangePicker &&\n      this.calendarYear === this._dateNavigationService.selectedEndDay?.year &&\n      monthIndex === this._dateNavigationService.selectedEndDay?.month\n    );\n  }\n\n  /**\n   * Calls the ViewManagerService to change to the yearpicker view.\n   */\n  changeToYearView(): void {\n    this._viewManagerService.changeToYearView();\n  }\n\n  /**\n   * Focuses on the current calendar month when the View is initialized.\n   */\n  ngAfterViewInit() {\n    this._datepickerFocusService.focusCell(this._elRef);\n  }\n\n  /**\n   * Handles the Keyboard arrow navigation for the monthpicker.\n   */\n  @HostListener('keydown', ['$event'])\n  onKeyDown(event: KeyboardEvent) {\n    // NOTE: Didn't move this to the date navigation service because\n    // the logic is fairly simple and it didn't make sense for me\n    // to create extra observables just to move this logic to the service.\n    if (event) {\n      const key = event.key;\n      if (key === Keys.ArrowUp && this._focusedMonthIndex > 1) {\n        event.preventDefault();\n        this._focusedMonthIndex -= 2;\n        this._datepickerFocusService.focusCell(this._elRef);\n      } else if (key === Keys.ArrowDown && this._focusedMonthIndex < 10) {\n        event.preventDefault();\n        this._focusedMonthIndex += 2;\n        this._datepickerFocusService.focusCell(this._elRef);\n      } else if (key === Keys.ArrowRight && this._focusedMonthIndex < 11) {\n        event.preventDefault();\n        this._focusedMonthIndex++;\n        this._datepickerFocusService.focusCell(this._elRef);\n      } else if (key === Keys.ArrowLeft && this._focusedMonthIndex > 0) {\n        event.preventDefault();\n        this._focusedMonthIndex--;\n        this._datepickerFocusService.focusCell(this._elRef);\n      }\n    }\n  }\n\n  isSelected(monthIndex: number): boolean {\n    return (\n      (this._dateNavigationService.selectedDay?.year === this.calendarYear &&\n        monthIndex === this._dateNavigationService.selectedDay?.month) ||\n      (this._dateNavigationService.selectedEndDay?.year === this.calendarYear &&\n        monthIndex === this.calendarEndMonthIndex)\n    );\n  }\n\n  /**\n   * Calls the DateNavigationService to update the hovered month value of the calendar\n   */\n  onHover(monthIndex: number): void {\n    this._dateNavigationService.hoveredMonth = monthIndex;\n  }\n\n  /**\n   * Calls the DateNavigationService to update the month value of the calendar.\n   * Also changes the view to the daypicker.\n   */\n  changeMonth(monthIndex: number) {\n    this._dateNavigationService.changeMonth(monthIndex);\n    this._viewManagerService.changeToDayView();\n  }\n\n  /**\n   * Compares the month passed to the focused month and returns the tab index.\n   */\n  getTabIndex(monthIndex: number): number {\n    return monthIndex === this._focusedMonthIndex ? 0 : -1;\n  }\n\n  /**\n   * Calls the DateNavigationService to move to the next month.\n   */\n  nextYear(): void {\n    this._dateNavigationService.moveToNextYear();\n  }\n\n  /**\n   * Calls the DateNavigationService to move to the previous month.\n   */\n  previousYear(): void {\n    this._dateNavigationService.moveToPreviousYear();\n  }\n\n  /**\n   * Calls the DateNavigationService to move to the current month.\n   */\n  currentYear(): void {\n    this._dateNavigationService.moveToCurrentMonth();\n  }\n\n  /**\n   * Applicable only to date range picker\n   * Compares the month passed is in between the start and end date range\n   */\n  isInRange(monthIndex: number): boolean {\n    if (!this._dateNavigationService.isRangePicker) {\n      return false;\n    }\n    if (this._dateNavigationService.selectedDay && this._dateNavigationService.selectedEndDay) {\n      return (\n        (this.calendarYear === this._dateNavigationService.selectedDay.year &&\n          monthIndex > this._dateNavigationService.selectedDay.month &&\n          this.calendarYear === this._dateNavigationService.selectedEndDay.year &&\n          monthIndex < this._dateNavigationService.selectedEndDay.month) ||\n        (this._dateNavigationService.selectedDay.year !== this._dateNavigationService.selectedEndDay.year &&\n          this.calendarYear === this._dateNavigationService.selectedDay.year &&\n          monthIndex > this._dateNavigationService.selectedDay.month) ||\n        (this._dateNavigationService.selectedDay.year !== this._dateNavigationService.selectedEndDay.year &&\n          this.calendarYear === this._dateNavigationService.selectedEndDay.year &&\n          monthIndex < this._dateNavigationService.selectedEndDay.month) ||\n        (this.calendarYear > this._dateNavigationService.selectedDay.year &&\n          this.calendarYear < this._dateNavigationService.selectedEndDay.year)\n      );\n    } else if (this._dateNavigationService.selectedDay && !this._dateNavigationService.selectedEndDay) {\n      return (\n        (this.calendarYear === this._dateNavigationService.selectedDay.year &&\n          monthIndex > this._dateNavigationService.selectedDay.month &&\n          monthIndex < this._dateNavigationService.hoveredMonth) ||\n        (this.calendarYear > this._dateNavigationService.selectedDay.year &&\n          monthIndex < this._dateNavigationService.hoveredMonth)\n      );\n    } else {\n      return false;\n    }\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nconst YEARS_TO_DISPLAY = 10;\n\nexport class YearRangeModel {\n  yearRange: number[] = [];\n\n  constructor(private readonly year: number) {\n    this.generateYearRange();\n  }\n\n  /**\n   * Gets the number in the middle of the range.\n   */\n  get middleYear(): number {\n    return this.yearRange[Math.floor(this.yearRange.length / 2)];\n  }\n\n  /**\n   * Generates the YearRangeModel for the next decade.\n   */\n  nextDecade(): YearRangeModel {\n    return new YearRangeModel(this.year + 10);\n  }\n\n  /**\n   * Generates the YearRangeModel for the previous decade.\n   */\n  previousDecade(): YearRangeModel {\n    return new YearRangeModel(this.year - 10);\n  }\n\n  /**\n   * Generates the YearRangeModel for the current decade.\n   */\n  currentDecade(): YearRangeModel {\n    return new YearRangeModel(new Date().getFullYear());\n  }\n\n  /**\n   * Checks if the value is in the YearRangeModel.\n   */\n  inRange(value: number): boolean {\n    return this.yearRange.indexOf(value) > -1;\n  }\n\n  /**\n   * Generates the year range based on the year parameter.\n   * eg: If 2018 is passed the output will be [2010, 2011, ..., 2019]\n   */\n  private generateYearRange() {\n    const remainder: number = this.year % YEARS_TO_DISPLAY;\n    const floor: number = this.year - remainder;\n    const ceil: number = floor + YEARS_TO_DISPLAY;\n    this.yearRange = this.generateRange(floor, ceil);\n  }\n\n  /**\n   * Function which generate a range of numbers from floor to ceil.\n   */\n  private generateRange(floor: number, ceil: number): number[] {\n    return Array.from({ length: ceil - floor }, (_v, k) => k + floor);\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { AfterViewInit, Component, ElementRef, HostListener } from '@angular/core';\nimport { ClrCommonStringsService, Keys } from '@clr/angular/utils';\n\nimport { YearRangeModel } from './model/year-range.model';\nimport { DateNavigationService } from './providers/date-navigation.service';\nimport { DatepickerFocusService } from './providers/datepicker-focus.service';\nimport { ViewManagerService } from './providers/view-manager.service';\n\n@Component({\n  selector: 'clr-yearpicker',\n  template: `\n    <div class=\"calendar-header\">\n      <div class=\"calendar-pickers\">\n        <button class=\"calendar-btn yearpicker-trigger year-range\" type=\"button\" (click)=\"changeToDayView()\">\n          {{ yearRangeModel.yearRange[0] }} - {{ yearRangeModel.yearRange[yearRangeModel.yearRange.length - 1] }}\n        </button>\n      </div>\n      <div class=\"year-switchers\">\n        <button\n          class=\"calendar-btn switcher\"\n          type=\"button\"\n          (click)=\"previousDecade()\"\n          [attr.aria-label]=\"commonStrings.keys.datepickerPreviousDecade\"\n        >\n          <cds-icon\n            shape=\"angle\"\n            direction=\"left\"\n            [attr.title]=\"commonStrings.keys.datepickerPreviousDecade\"\n          ></cds-icon>\n        </button>\n        <button\n          class=\"calendar-btn switcher\"\n          type=\"button\"\n          (click)=\"currentDecade()\"\n          [attr.aria-label]=\"commonStrings.keys.datepickerCurrentDecade\"\n        >\n          <cds-icon shape=\"event\" [attr.title]=\"commonStrings.keys.datepickerCurrentDecade\"></cds-icon>\n        </button>\n        <button\n          class=\"calendar-btn switcher\"\n          type=\"button\"\n          (click)=\"nextDecade()\"\n          [attr.aria-label]=\"commonStrings.keys.datepickerNextDecade\"\n        >\n          <cds-icon shape=\"angle\" direction=\"right\" [attr.title]=\"commonStrings.keys.datepickerNextDecade\"></cds-icon>\n        </button>\n      </div>\n    </div>\n\n    <div class=\"years\">\n      @for (year of yearRangeModel.yearRange; track year) {\n        <button\n          type=\"button\"\n          class=\"calendar-btn year\"\n          [attr.tabindex]=\"getTabIndex(year)\"\n          [class.is-selected]=\"year === selectedStartYear || year === selectedEndYear\"\n          [class.is-start-range]=\"getIsRangeStartYear(year)\"\n          [class.is-end-range]=\"getIsRangeEndYear(year)\"\n          [class.in-range]=\"isInRange(year)\"\n          [class.is-today]=\"isCurrentCalendarYear(year)\"\n          (click)=\"changeYear(year)\"\n          (mouseenter)=\"onHover(year)\"\n        >\n          {{ year }}\n        </button>\n      }\n    </div>\n  `,\n  host: {\n    '[class.yearpicker]': 'true',\n    role: 'application',\n  },\n  standalone: false,\n})\nexport class ClrYearpicker implements AfterViewInit {\n  /**\n   * YearRangeModel which is used to build the YearPicker view.\n   */\n  yearRangeModel: YearRangeModel;\n\n  /**\n   * Keeps track of the current focused year.\n   */\n  private _focusedYear: number;\n\n  constructor(\n    private _dateNavigationService: DateNavigationService,\n    private _viewManagerService: ViewManagerService,\n    private _datepickerFocusService: DatepickerFocusService,\n    private _elRef: ElementRef<HTMLElement>,\n    public commonStrings: ClrCommonStringsService\n  ) {\n    this.yearRangeModel = new YearRangeModel(this.calendarYear);\n    this._focusedYear = this.calendarYear;\n  }\n\n  get selectedStartYear(): number {\n    return this._dateNavigationService.selectedDay?.year;\n  }\n\n  get selectedEndYear(): number {\n    return this._dateNavigationService.selectedEndDay?.year;\n  }\n\n  /**\n   * Gets the year which the user is currently on.\n   */\n  get calendarYear(): number {\n    return this._dateNavigationService.displayedCalendar.year;\n  }\n\n  isCurrentCalendarYear(year: number): boolean {\n    return year === new Date().getFullYear();\n  }\n\n  getIsRangeStartYear(year: number): boolean {\n    return this._dateNavigationService.isRangePicker && year === this._dateNavigationService.selectedDay?.year;\n  }\n\n  getIsRangeEndYear(year: number): boolean {\n    return this._dateNavigationService.isRangePicker && year === this._dateNavigationService.selectedEndDay?.year;\n  }\n\n  /**\n   * Focuses on the current calendar year when the View is initialized.\n   */\n  ngAfterViewInit() {\n    this._datepickerFocusService.focusCell(this._elRef);\n  }\n\n  /**\n   * Handles the Keyboard arrow navigation for the yearpicker.\n   */\n  @HostListener('keydown', ['$event'])\n  onKeyDown(event: KeyboardEvent) {\n    // NOTE: Didn't move this to the date navigation service because\n    // the logic is fairly simple and it didn't make sense for me\n    // to create extra observables just to move this logic to the service.\n    if (event) {\n      const key = event.key;\n      if (key === Keys.ArrowUp) {\n        event.preventDefault();\n        this.incrementFocusYearBy(-2);\n      } else if (key === Keys.ArrowDown) {\n        event.preventDefault();\n        this.incrementFocusYearBy(2);\n      } else if (key === Keys.ArrowRight) {\n        event.preventDefault();\n        this.incrementFocusYearBy(1);\n      } else if (key === Keys.ArrowLeft) {\n        event.preventDefault();\n        this.incrementFocusYearBy(-1);\n      }\n    }\n  }\n\n  /**\n   * Calls the DateNavigationService to update the year value of the calendar.\n   * Also changes the view to the daypicker.\n   */\n  changeYear(year: number): void {\n    this._dateNavigationService.changeYear(year);\n    this._viewManagerService.changeToDayView();\n  }\n\n  /**\n   * Calls the DateNavigationService to update the hovered year value of the calendar\n   */\n  onHover(year: number): void {\n    this._dateNavigationService.hoveredYear = year;\n  }\n\n  /**\n   * Updates the YearRangeModel to the previous decade.\n   */\n  previousDecade(): void {\n    this.yearRangeModel = this.yearRangeModel.previousDecade();\n    // Year in the yearpicker is not focused because while navigating to a different decade,\n    // you want the focus to remain on the decade switcher arrows.\n  }\n\n  /**\n   * Updates the YearRangeModel to the current decade.\n   */\n  currentDecade(): void {\n    if (!this.yearRangeModel.inRange(this._dateNavigationService.today.year)) {\n      this.yearRangeModel = this.yearRangeModel.currentDecade();\n    }\n    this._datepickerFocusService.focusCell(this._elRef);\n  }\n\n  /**\n   * Updates the YearRangeModel to the next decade.\n   */\n  nextDecade(): void {\n    this.yearRangeModel = this.yearRangeModel.nextDecade();\n    // Year in the yearpicker is not focused because while navigating to a different decade,\n    // you want the focus to remain on the decade switcher arrows.\n  }\n\n  /**\n   * Compares the year passed to the focused year and returns the tab index.\n   */\n  getTabIndex(year: number): number {\n    if (!this.yearRangeModel.inRange(this._focusedYear)) {\n      if (this.yearRangeModel.inRange(this.calendarYear)) {\n        this._focusedYear = this.calendarYear;\n      } else if (this.yearRangeModel.inRange(this.selectedEndYear)) {\n        this._focusedYear = this.selectedEndYear;\n      } else {\n        this._focusedYear = this.yearRangeModel.middleYear;\n      }\n    }\n    return this._focusedYear === year ? 0 : -1;\n  }\n\n  /**\n   * Applicable only to date range picker\n   * Compares the year passed is in between the start and end date range\n   */\n  isInRange(year: number): boolean {\n    if (!this._dateNavigationService.isRangePicker) {\n      return false;\n    }\n    if (this._dateNavigationService.selectedDay?.year && this.selectedEndYear) {\n      return year > this.selectedStartYear && year < this.selectedEndYear;\n    } else if (this._dateNavigationService.selectedDay?.year && !this.selectedEndYear) {\n      return year > this.selectedStartYear && year < this._dateNavigationService.hoveredYear;\n    } else {\n      return false;\n    }\n  }\n\n  changeToDayView() {\n    this._viewManagerService.changeToDayView();\n  }\n\n  /**\n   * Increments the focus year by the value passed. Updates the YearRangeModel if the\n   * new value is not in the current decade.\n   */\n  private incrementFocusYearBy(value: number): void {\n    this._focusedYear = this._focusedYear + value;\n    if (!this.yearRangeModel.inRange(this._focusedYear)) {\n      if (value > 0) {\n        this.yearRangeModel = this.yearRangeModel.nextDecade();\n      } else {\n        this.yearRangeModel = this.yearRangeModel.previousDecade();\n      }\n    }\n    this._datepickerFocusService.focusCell(this._elRef);\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { DayModel } from './day.model';\n\nexport class DayViewModel {\n  constructor(\n    public dayModel: DayModel,\n    public isTodaysDate: boolean = false,\n    public isExcluded: boolean = false,\n    public isDisabled: boolean = false,\n    public isSelected: boolean = false,\n    public isFocusable: boolean = false,\n    public isRangeStartDay: boolean = false,\n    public isRangeEndDay: boolean = false\n  ) {}\n\n  /**\n   * Gets the tab index based on the isFocusable flag.\n   */\n  get tabIndex(): number {\n    return this.isFocusable ? 0 : -1;\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CalendarModel } from './calendar.model';\nimport { DayViewModel } from './day-view.model';\nimport { DayModel } from './day.model';\nimport { DateRange } from '../interfaces/date-range.interface';\nimport { NO_OF_DAYS_IN_A_WEEK, NO_OF_ROWS_IN_CALENDAR_VIEW, TOTAL_DAYS_IN_DAYS_VIEW } from '../utils/constants';\nimport { getDay } from '../utils/date-utils';\n\nexport class CalendarViewModel {\n  private currMonthDayViews: DayViewModel[] = [];\n  private _calendarView: DayViewModel[][];\n\n  constructor(\n    public calendar: CalendarModel,\n    public selectedDay: DayModel,\n    public selectedEndDay: DayModel,\n    private focusableDay: DayModel,\n    private today: DayModel,\n    public firstDayOfWeek: number,\n    private excludedDates: DateRange\n  ) {\n    this.initializeCalendarView();\n  }\n\n  /**\n   * DayViewModel matrix. Size 6x7\n   */\n  get calendarView(): DayViewModel[][] {\n    return this._calendarView;\n  }\n\n  /**\n   * Updates the focusable day in the calendar.\n   */\n  updateFocusableDay(day: DayModel): void {\n    this.setFocusableFlag(this.focusableDay, false);\n    this.setFocusableFlag(day, true);\n    this.focusableDay = day;\n  }\n\n  /**\n   * Updates the selected day in the calendar\n   */\n  updateSelectedDay(day: DayModel | undefined): void {\n    this.setSelectedDay(this.selectedDay, false);\n    this.selectedDay = day;\n    this.setSelectedDay(day, true);\n  }\n\n  /**\n   * Updates the selected end day in the calendar\n   */\n  updateSelectedEndDay(day: DayModel | undefined): void {\n    this.setSelectedDay(this.selectedEndDay, false);\n    this.selectedEndDay = day;\n    this.setSelectedDay(day, true);\n  }\n\n  /**\n   * Generates a 6x7 matrix of DayViewModel based on the Calendar.\n   * The 6x7 matrix is structured according to the first day of the week.\n   * 6 rows to accommodate months which might have dates spanning over 6 weeks.\n   * 7 columns because there are 7 days in a week :P :D\n   */\n  private initializeCalendarView(): void {\n    // Generate prev and next month calendar models.\n    const prevMonthCalendar: CalendarModel = this.calendar.previousMonth();\n    const nextMonthCalendar: CalendarModel = this.calendar.nextMonth();\n\n    // Get no of days from prev and next months.\n    const daysFromPrevMonthInCalView: number = this.numDaysFromPrevMonthInCalView(\n      this.calendar.year,\n      this.calendar.month\n    );\n    const daysFromNextMonthInCalView: number =\n      TOTAL_DAYS_IN_DAYS_VIEW - (this.calendar.days.length + daysFromPrevMonthInCalView);\n\n    // Generate prev, curr and next day view models\n    let prevMonthDayViews: DayViewModel[] = [];\n    let nextMonthDayViews: DayViewModel[] = [];\n\n    if (daysFromPrevMonthInCalView > 0) {\n      prevMonthDayViews = this.generateDayViewModels(\n        prevMonthCalendar.days.slice(-1 * daysFromPrevMonthInCalView),\n        true,\n        false\n      );\n    }\n\n    this.currMonthDayViews = this.generateDayViewModels(this.calendar.days, false, true);\n\n    if (daysFromNextMonthInCalView > 0) {\n      nextMonthDayViews = this.generateDayViewModels(\n        nextMonthCalendar.days.slice(0, daysFromNextMonthInCalView),\n        true,\n        false\n      );\n    }\n\n    // Generate calendar view and initialize flags\n    this._calendarView = this.generateCalendarView(prevMonthDayViews, this.currMonthDayViews, nextMonthDayViews);\n    this.initializeSelectedDay();\n    this.initializeFocusableDay();\n  }\n\n  private isDateExcluded(date: DayModel) {\n    const { minDate, maxDate }: DateRange = this.excludedDates;\n    const from = minDate.toComparisonString();\n    const to = maxDate.toComparisonString();\n    const today = date.toComparisonString();\n\n    return !(today >= from && today <= to);\n  }\n\n  /**\n   * Generates a DayViewModel array based on the DayModel passed\n   */\n  private generateDayViewModels(days: DayModel[], isExcluded: boolean, isCurrentCalendar: boolean): DayViewModel[] {\n    const dayViews: DayViewModel[] = days.map(day => {\n      return new DayViewModel(day, false, isExcluded, this.isDateExcluded(day), false, false);\n    });\n    if (isCurrentCalendar && this.calendar.isDayInCalendar(this.today)) {\n      dayViews[this.today.date - 1].isTodaysDate = true;\n    }\n    return dayViews;\n  }\n\n  /**\n   * Gets the first day of the current month to figure out how many dates of previous month\n   * are needed to complete the Calendar View based on the first day of the week.\n   * eg: Assuming locale en-US, the first day of the week is Sunday,\n   * if first day of the current month lands on Wednesday, then\n   * (this.getDay function would return 3 since\n   * first day of the week is 0), we need the 3 days from the previous month.\n   */\n  private numDaysFromPrevMonthInCalView(currentYear: number, currentMonth: number): number {\n    const firstDayOfCurrMonth: number = getDay(currentYear, currentMonth, 1);\n\n    if (firstDayOfCurrMonth >= this.firstDayOfWeek) {\n      return firstDayOfCurrMonth - this.firstDayOfWeek;\n    } else {\n      return NO_OF_DAYS_IN_A_WEEK + firstDayOfCurrMonth - this.firstDayOfWeek;\n    }\n  }\n\n  /**\n   * Checks if the Day passed is in the CalendarView.\n   */\n  private isDayInCalendarView(day: DayModel): boolean {\n    if (!this.calendar.isDayInCalendar(day)) {\n      return false;\n    }\n    return true;\n  }\n\n  /**\n   * Using the DayViewModels from the previous, current and next month, this function\n   * generates the CalendarView.\n   */\n  private generateCalendarView(prev: DayViewModel[], curr: DayViewModel[], next: DayViewModel[]): DayViewModel[][] {\n    const combinationArr: DayViewModel[] = [...prev, ...curr, ...next];\n\n    const calendarView: DayViewModel[][] = [];\n    for (let i = 0; i < NO_OF_ROWS_IN_CALENDAR_VIEW; i++) {\n      calendarView[i] = combinationArr.slice(i * NO_OF_DAYS_IN_A_WEEK, (i + 1) * NO_OF_DAYS_IN_A_WEEK);\n    }\n    return calendarView;\n  }\n\n  /**\n   * Initialize the selected day if the day is in the calendar.\n   */\n  private initializeSelectedDay(): void {\n    this.setSelectedDay(this.selectedDay, true);\n    this.setSelectedDay(this.selectedEndDay, true);\n  }\n\n  /**\n   * Initializes the focusable day if the day is in the calendar. If focusable day is not set, then\n   * we check for the selected day. If selected day is not set then check if today is in the current\n   * calendar. If not then just set the 15th of the current calendar month.\n   */\n  private initializeFocusableDay(): void {\n    if (this.focusableDay && this.isDayInCalendarView(this.focusableDay)) {\n      this.setFocusableFlag(this.focusableDay, true);\n    } else if (this.selectedDay && this.isDayInCalendarView(this.selectedDay)) {\n      this.setFocusableFlag(this.selectedDay, true);\n      this.focusableDay = this.selectedDay.clone();\n    } else if (this.selectedEndDay && this.isDayInCalendarView(this.selectedEndDay)) {\n      this.setFocusableFlag(this.selectedEndDay, true);\n      this.focusableDay = this.selectedEndDay.clone();\n    } else if (this.isDayInCalendarView(this.today)) {\n      this.setFocusableFlag(this.today, true);\n      this.focusableDay = this.today.clone();\n    } else {\n      this.focusableDay = new DayModel(this.calendar.year, this.calendar.month, 15);\n      this.setFocusableFlag(this.focusableDay, true);\n    }\n  }\n\n  private setFocusableFlag(day: DayModel, flag: boolean): void {\n    if (day) {\n      this.currMonthDayViews[day.date - 1].isFocusable = flag;\n    }\n  }\n\n  private setSelectedDay(day: DayModel, flag: boolean) {\n    if (day && this.isDayInCalendarView(day)) {\n      this.currMonthDayViews[day?.date - 1].isSelected = flag;\n    }\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, EventEmitter, HostListener, Input, Output } from '@angular/core';\nimport { ClrCommonStringsService } from '@clr/angular/utils';\n\nimport { DayViewModel } from './model/day-view.model';\nimport { DayModel } from './model/day.model';\nimport { DateNavigationService } from './providers/date-navigation.service';\n\n@Component({\n  selector: 'clr-day',\n  template: `\n    <button\n      class=\"day-btn\"\n      type=\"button\"\n      [class.is-today]=\"dayView.isTodaysDate\"\n      [class.is-excluded]=\"dayView.isExcluded\"\n      [class.is-disabled]=\"dayView.isDisabled\"\n      [class.is-selected]=\"dayView.isSelected\"\n      [class.in-range]=\"isInRange()\"\n      [class.is-start-range]=\"isRangeStartDay\"\n      [class.is-end-range]=\"isRangeEndDay\"\n      [attr.tabindex]=\"dayView.tabIndex\"\n      (click)=\"selectDay()\"\n      (focus)=\"onDayViewFocus()\"\n      [attr.aria-current]=\"dayView.isTodaysDate ? 'date' : 'false'\"\n      [attr.aria-label]=\"dayString\"\n      [attr.aria-selected]=\"dayView.isSelected\"\n    >\n      {{ dayView.dayModel.date }}\n    </button>\n  `,\n  host: { '[class.day]': 'true' },\n  standalone: false,\n})\nexport class ClrDay {\n  @Output('selectDay') onSelectDay = new EventEmitter<DayModel>();\n\n  private _dayView: DayViewModel;\n\n  constructor(\n    private _dateNavigationService: DateNavigationService,\n    private commonStrings: ClrCommonStringsService\n  ) {}\n\n  /**\n   * DayViewModel input which is used to build the Day View.\n   */\n\n  @Input('clrDayView')\n  get dayView(): DayViewModel {\n    return this._dayView;\n  }\n  set dayView(day: DayViewModel) {\n    this._dayView = day;\n  }\n\n  get dayString(): string {\n    return this.dayView.isSelected\n      ? this.commonStrings.parse(this.commonStrings.keys.datepickerSelectedLabel, {\n          FULL_DATE: this._dayView.dayModel.toDateString(),\n        })\n      : this._dayView.dayModel.toDateString();\n  }\n\n  get isRangeStartDay(): boolean {\n    return (\n      this._dateNavigationService.isRangePicker &&\n      this.dayView?.dayModel?.toComparisonString() === this._dateNavigationService.selectedDay?.toComparisonString()\n    );\n  }\n\n  get isRangeEndDay(): boolean {\n    return (\n      this._dateNavigationService.isRangePicker &&\n      this.dayView?.dayModel?.toComparisonString() === this._dateNavigationService.selectedEndDay?.toComparisonString()\n    );\n  }\n\n  /**\n   * Calls the DateNavigationService to update the hovered day value of the calendar\n   */\n  @HostListener('mouseenter')\n  hoverListener(): void {\n    if (!this.dayView.isDisabled) {\n      this._dateNavigationService.hoveredDay = this.dayView.dayModel;\n    }\n  }\n\n  /**\n   * Updates the focusedDay in the DateNavigationService when the ClrDay is focused.\n   */\n  onDayViewFocus() {\n    this._dateNavigationService.focusedDay = this.dayView.dayModel;\n  }\n\n  /**\n   * Updates the selectedDay when the ClrDay is selected and closes the datepicker popover.\n   */\n  selectDay(): void {\n    if (this.dayView.isDisabled) {\n      return;\n    }\n    const day: DayModel = this.dayView.dayModel;\n    this.onSelectDay.emit(day);\n  }\n\n  /**\n   * Applicable only to date range picker\n   * Compares whether the day is in between the start and end date range\n   */\n  isInRange(): boolean {\n    if (!this._dateNavigationService.isRangePicker) {\n      return false;\n    }\n    if (this._dateNavigationService.selectedDay && this._dateNavigationService.selectedEndDay) {\n      return (\n        this._dayView.dayModel?.isAfter(this._dateNavigationService.selectedDay) &&\n        this._dayView.dayModel?.isBefore(this._dateNavigationService.selectedEndDay)\n      );\n    } else if (this._dateNavigationService.selectedDay && !this._dateNavigationService.selectedEndDay) {\n      return (\n        this._dayView.dayModel?.isAfter(this._dateNavigationService.selectedDay) &&\n        this._dayView.dayModel?.isBefore(this._dateNavigationService.hoveredDay, true)\n      );\n    } else {\n      return false;\n    }\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, ElementRef, HostListener, OnDestroy } from '@angular/core';\nimport { ClrPopoverService } from '@clr/angular/popover/common';\nimport { Keys } from '@clr/angular/utils';\nimport { Subscription } from 'rxjs';\n\nimport { DateRangeInput } from './interfaces/date-range.interface';\nimport { ClrDayOfWeek } from './interfaces/day-of-week.interface';\nimport { CalendarViewModel } from './model/calendar-view.model';\nimport { CalendarModel } from './model/calendar.model';\nimport { DayModel } from './model/day.model';\nimport { DateFormControlService } from './providers/date-form-control.service';\nimport { DateIOService } from './providers/date-io.service';\nimport { DateNavigationService } from './providers/date-navigation.service';\nimport { DatepickerFocusService } from './providers/datepicker-focus.service';\nimport { LocaleHelperService } from './providers/locale-helper.service';\nimport { NO_OF_DAYS_IN_A_WEEK } from './utils/constants';\n\n@Component({\n  selector: 'clr-calendar',\n  templateUrl: './calendar.html',\n  standalone: false,\n})\nexport class ClrCalendar implements OnDestroy {\n  /**\n   * Calendar View Model to generate the Calendar.\n   */\n  calendarViewModel: CalendarViewModel;\n\n  private _subs: Subscription[] = [];\n\n  constructor(\n    private _localeHelperService: LocaleHelperService,\n    private _dateNavigationService: DateNavigationService,\n    private _datepickerFocusService: DatepickerFocusService,\n    private _dateIOService: DateIOService,\n    private _elRef: ElementRef<HTMLElement>,\n    private _dateFormControlService: DateFormControlService,\n    private _popoverService: ClrPopoverService\n  ) {\n    this.generateCalendarView();\n    this.initializeSubscriptions();\n  }\n\n  /**\n   * Gets the locale days according to the TranslationWidth.Narrow format.\n   */\n  get localeDays(): ReadonlyArray<ClrDayOfWeek> {\n    return this._localeHelperService.localeDays;\n  }\n\n  get calendar(): CalendarModel {\n    return this._dateNavigationService.displayedCalendar;\n  }\n\n  get selectedDay(): DayModel {\n    return this._dateNavigationService.selectedDay;\n  }\n\n  get selectedEndDay(): DayModel {\n    return this._dateNavigationService.selectedEndDay;\n  }\n\n  get focusedDay(): DayModel {\n    return this._dateNavigationService.focusedDay;\n  }\n\n  get today(): DayModel {\n    return this._dateNavigationService.today;\n  }\n\n  /**\n   * Focuses on the focusable day when the Calendar View is initialized.\n   */\n  ngAfterViewInit() {\n    this._datepickerFocusService.focusCell(this._elRef);\n  }\n\n  /**\n   * Unsubscribe from subscriptions.\n   */\n  ngOnDestroy(): void {\n    this._subs.forEach((sub: Subscription) => sub.unsubscribe());\n  }\n\n  /**\n   * Delegates Keyboard arrow navigation to the DateNavigationService.\n   */\n  @HostListener('keydown', ['$event'])\n  onKeyDown(event: KeyboardEvent) {\n    if (event && this.focusedDay) {\n      switch (event.key) {\n        case Keys.ArrowUp:\n          event.preventDefault();\n          this._dateNavigationService.incrementFocusDay(-1 * NO_OF_DAYS_IN_A_WEEK);\n          break;\n        case Keys.ArrowDown:\n          event.preventDefault();\n          this._dateNavigationService.incrementFocusDay(NO_OF_DAYS_IN_A_WEEK);\n          break;\n        case Keys.ArrowLeft:\n          event.preventDefault();\n          this._dateNavigationService.incrementFocusDay(-1);\n          break;\n        case Keys.ArrowRight:\n          event.preventDefault();\n          this._dateNavigationService.incrementFocusDay(1);\n          break;\n        default:\n          break; // No default case. ESLint x-(\n      }\n    }\n  }\n\n  setSelectedDay(day: DayModel) {\n    const hasActionButtons = this._dateNavigationService.hasActionButtons;\n    const selectedDates: DayModel | DateRangeInput = this.updateCalendarViewModal(day);\n    this._dateNavigationService.notifySelectedDayChanged(selectedDates, { emitEvent: !hasActionButtons });\n    if (!hasActionButtons) {\n      this._dateFormControlService.markAsDirty();\n      this.validateAndCloseDatePicker();\n    }\n  }\n\n  /**\n   * Initialize subscriptions to:\n   * 1. update the calendar view model.\n   * 2. update the focusable day in the calendar view model.\n   * 3. focus on the focusable day in the calendar.\n   */\n  private initializeSubscriptions(): void {\n    this._subs.push(\n      this._dateNavigationService.displayedCalendarChange.subscribe(() => {\n        this.generateCalendarView();\n      })\n    );\n\n    this._subs.push(\n      this._dateNavigationService.focusedDayChange.subscribe((focusedDay: DayModel) => {\n        this.calendarViewModel.updateFocusableDay(focusedDay);\n      })\n    );\n\n    this._subs.push(\n      this._dateNavigationService.focusOnCalendarChange.subscribe(() => {\n        this._datepickerFocusService.focusCell(this._elRef);\n      })\n    );\n\n    this._subs.push(\n      this._dateNavigationService.refreshCalendarView.subscribe(() => {\n        this.refreshCalendarViewModal();\n      })\n    );\n  }\n\n  private validateAndCloseDatePicker() {\n    if (\n      (this._dateNavigationService.isRangePicker &&\n        this._dateNavigationService.selectedDay &&\n        this._dateNavigationService.selectedEndDay) ||\n      (!this._dateNavigationService.isRangePicker && this._dateNavigationService.selectedDay)\n    ) {\n      this._popoverService.open = false;\n    }\n  }\n\n  private updateCalendarViewModal(day: DayModel): DayModel | DateRangeInput {\n    const startDate = this.calendarViewModel.selectedDay || null,\n      isRangePicker = this._dateNavigationService.isRangePicker;\n    let endDate = this.calendarViewModel.selectedEndDay || null;\n\n    if (isRangePicker) {\n      if (!startDate || (!!startDate && !!endDate) || (!!startDate && day?.isBefore(startDate))) {\n        this.calendarViewModel.updateSelectedDay(day);\n        if (endDate) {\n          endDate = undefined;\n          this.calendarViewModel.updateSelectedEndDay(endDate);\n        }\n      } else {\n        this.calendarViewModel.updateSelectedEndDay(day);\n      }\n    } else {\n      this.calendarViewModel.updateSelectedDay(day);\n    }\n\n    return isRangePicker\n      ? { startDate: this.calendarViewModel.selectedDay, endDate: this.calendarViewModel.selectedEndDay }\n      : this.calendarViewModel.selectedDay;\n  }\n\n  private refreshCalendarViewModal() {\n    this.calendarViewModel.updateSelectedDay(this._dateNavigationService.selectedDay);\n    if (this._dateNavigationService.isRangePicker) {\n      this.calendarViewModel.updateSelectedEndDay(this._dateNavigationService.selectedEndDay);\n    }\n  }\n\n  /**\n   * Generates the Calendar View based on the calendar retrieved from the DateNavigationService.\n   */\n  private generateCalendarView(): void {\n    this.calendarViewModel = new CalendarViewModel(\n      this.calendar,\n      this.selectedDay,\n      this.selectedEndDay,\n      this.focusedDay,\n      this.today,\n      this._localeHelperService.firstDayOfWeek,\n      this._dateIOService.disabledDates\n    );\n  }\n}\n","<!--\n  ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n  ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n  ~ This software is released under MIT license.\n  ~ The full license information can be found in LICENSE in the root directory of this project.\n  -->\n<table class=\"calendar-table\" role=\"presentation\">\n  <tr class=\"calendar-row weekdays\">\n    @for (day of localeDays; track day) {\n    <th class=\"calendar-cell weekday\">\n      <span [attr.aria-label]=\"day.day\">{{day.narrow}}</span>\n    </th>\n    }\n  </tr>\n  @for (row of calendarViewModel.calendarView; track row) {\n  <tr class=\"calendar-row\">\n    @for (dayView of row; track dayView) {\n    <td class=\"calendar-cell\">\n      <clr-day [clrDayView]=\"dayView\" (selectDay)=\"setSelectedDay($event)\"></clr-day>\n    </td>\n    }\n  </tr>\n  }\n</table>\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component } from '@angular/core';\nimport { ClrCommonStringsService } from '@clr/angular/utils';\n\nimport { DateNavigationService } from './providers/date-navigation.service';\nimport { LocaleHelperService } from './providers/locale-helper.service';\nimport { ViewManagerService } from './providers/view-manager.service';\n\n@Component({\n  selector: 'clr-daypicker',\n  templateUrl: './daypicker.html',\n  host: { '[class.daypicker]': 'true', role: 'application' },\n  standalone: false,\n})\nexport class ClrDaypicker {\n  constructor(\n    private _viewManagerService: ViewManagerService,\n    private _dateNavigationService: DateNavigationService,\n    private _localeHelperService: LocaleHelperService,\n    public commonStrings: ClrCommonStringsService\n  ) {}\n\n  get monthAttrString(): string {\n    return this.commonStrings.parse(this.commonStrings.keys.datepickerSelectMonthText, {\n      CALENDAR_MONTH: this.calendarMonth,\n    });\n  }\n\n  get yearAttrString(): string {\n    return this.commonStrings.parse(this.commonStrings.keys.datepickerSelectYearText, {\n      CALENDAR_YEAR: this.calendarYear.toString(),\n    });\n  }\n\n  /**\n   * Returns the month value of the calendar in the TranslationWidth.Abbreviated format.\n   */\n  get calendarMonth(): string {\n    return this._localeHelperService.localeMonthsAbbreviated[this._dateNavigationService.displayedCalendar.month];\n  }\n\n  /**\n   * Returns the year value of the calendar.\n   */\n  get calendarYear(): number {\n    return this._dateNavigationService.displayedCalendar.year;\n  }\n\n  /**\n   * Calls the ViewManagerService to change to the monthpicker view.\n   */\n  changeToMonthView(): void {\n    this._viewManagerService.changeToMonthView();\n  }\n\n  /**\n   * Calls the ViewManagerService to change to the yearpicker view.\n   */\n  changeToYearView(): void {\n    this._viewManagerService.changeToYearView();\n  }\n\n  /**\n   * Calls the DateNavigationService to move to the next month.\n   */\n  nextMonth(): void {\n    this._dateNavigationService.moveToNextMonth();\n  }\n\n  /**\n   * Calls the DateNavigationService to move to the previous month.\n   */\n  previousMonth(): void {\n    this._dateNavigationService.moveToPreviousMonth();\n  }\n\n  /**\n   * Calls the DateNavigationService to move to the current month.\n   */\n  currentMonth(): void {\n    this._dateNavigationService.moveToCurrentMonth();\n  }\n}\n","<!--\n  ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n  ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n  ~ This software is released under MIT license.\n  ~ The full license information can be found in LICENSE in the root directory of this project.\n  -->\n<div class=\"clr-sr-only\">{{commonStrings.keys.modalContentStart}}</div>\n<div class=\"calendar-header\">\n  <div class=\"calendar-pickers\">\n    <button\n      class=\"calendar-btn monthpicker-trigger\"\n      type=\"button\"\n      (click)=\"changeToMonthView()\"\n      [attr.aria-label]=\"monthAttrString\"\n      [attr.title]=\"monthAttrString\"\n    >\n      {{calendarMonth}}\n    </button>\n    <button\n      class=\"calendar-btn yearpicker-trigger\"\n      type=\"button\"\n      (click)=\"changeToYearView()\"\n      [attr.aria-label]=\"yearAttrString\"\n      [attr.title]=\"yearAttrString\"\n    >\n      {{calendarYear}}\n    </button>\n  </div>\n  <div class=\"calendar-switchers\">\n    <button\n      class=\"calendar-btn switcher\"\n      type=\"button\"\n      (click)=\"previousMonth()\"\n      [attr.aria-label]=\"commonStrings.keys.datepickerPreviousMonth\"\n    >\n      <cds-icon shape=\"angle\" direction=\"left\" [attr.title]=\"commonStrings.keys.datepickerPreviousMonth\"></cds-icon>\n    </button>\n    <button\n      class=\"calendar-btn switcher\"\n      type=\"button\"\n      (click)=\"currentMonth()\"\n      [attr.aria-label]=\"commonStrings.keys.datepickerCurrentMonth\"\n    >\n      <cds-icon shape=\"event\" [attr.title]=\"commonStrings.keys.datepickerCurrentMonth\"></cds-icon>\n    </button>\n    <button\n      class=\"calendar-btn switcher\"\n      type=\"button\"\n      (click)=\"nextMonth()\"\n      [attr.aria-label]=\"commonStrings.keys.datepickerNextMonth\"\n    >\n      <cds-icon shape=\"angle\" direction=\"right\" [attr.title]=\"commonStrings.keys.datepickerNextMonth\"></cds-icon>\n    </button>\n  </div>\n</div>\n<clr-calendar></clr-calendar>\n<div class=\"clr-sr-only\">{{commonStrings.keys.modalContentEnd}}</div>\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component } from '@angular/core';\nimport { ClrPopoverService } from '@clr/angular/popover/common';\nimport { ClrCommonStringsService } from '@clr/angular/utils';\n\nimport { DateFormControlService } from './providers/date-form-control.service';\nimport { DateNavigationService } from './providers/date-navigation.service';\n\n@Component({\n  selector: 'clr-datepicker-actions',\n  template: `\n    <button class=\"btn btn-outline\" (click)=\"cancel()\">{{ commonStrings.keys.cancel }}</button>\n    <button class=\"btn btn-primary\" (click)=\"apply()\">{{ commonStrings.keys.apply }}</button>\n  `,\n  host: {\n    '[class.datepicker-actions]': 'true',\n  },\n  standalone: false,\n})\nexport class ClrDatepickerActions {\n  constructor(\n    protected commonStrings: ClrCommonStringsService,\n    private popoverService: ClrPopoverService,\n    private dateNavigationService: DateNavigationService,\n    private dateFormControlService: DateFormControlService\n  ) {}\n\n  protected apply() {\n    if (\n      this.dateNavigationService.isRangePicker &&\n      this.dateNavigationService.selectedDay &&\n      this.dateNavigationService.selectedEndDay\n    ) {\n      this.dateNavigationService.notifySelectedDayChanged({\n        startDate: this.dateNavigationService.selectedDay,\n        endDate: this.dateNavigationService.selectedEndDay,\n      });\n      this.dateFormControlService.markAsDirty();\n    } else if (!this.dateNavigationService.isRangePicker && this.dateNavigationService.selectedDay) {\n      this.dateNavigationService.notifySelectedDayChanged(this.dateNavigationService.selectedDay);\n      this.dateFormControlService.markAsDirty();\n    }\n    this.popoverService.open = false;\n  }\n\n  protected cancel() {\n    this.dateNavigationService.resetSelectedDay();\n    this.popoverService.open = false;\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component } from '@angular/core';\nimport { ClrCommonStringsService } from '@clr/angular/utils';\n\nimport { DateIOService } from './providers/date-io.service';\nimport { DateNavigationService } from './providers/date-navigation.service';\nimport { DatepickerFocusService } from './providers/datepicker-focus.service';\nimport { ViewManagerService } from './providers/view-manager.service';\n\n@Component({\n  selector: 'clr-datepicker-view-manager',\n  templateUrl: './datepicker-view-manager.html',\n  providers: [DatepickerFocusService],\n  host: {\n    '[class.datepicker]': 'true',\n    '[class.has-range-option]': 'hasRangeOptions',\n    '[class.has-action-buttons]': 'hasActionButtons',\n    '[attr.aria-modal]': 'true',\n    '[attr.aria-label]': 'commonStrings.keys.datepickerDialogLabel',\n    role: 'dialog',\n  },\n  standalone: false,\n})\nexport class ClrDatepickerViewManager {\n  constructor(\n    public commonStrings: ClrCommonStringsService,\n    private viewManagerService: ViewManagerService,\n    private dateNavigationService: DateNavigationService,\n    private dateIOService: DateIOService\n  ) {}\n\n  /**\n   * Returns if the current view is the monthpicker.\n   */\n  get isMonthView(): boolean {\n    return this.viewManagerService.isMonthView;\n  }\n\n  /**\n   * Returns if the current view is the yearpicker.\n   */\n  get isYearView(): boolean {\n    return this.viewManagerService.isYearView;\n  }\n\n  /**\n   * Returns if the current view is the daypicker.\n   */\n  get isDayView(): boolean {\n    return this.viewManagerService.isDayView;\n  }\n\n  get hasRangeOptions() {\n    return !!this.dateNavigationService?.isRangePicker && !!this.dateRangeOptions?.length;\n  }\n\n  protected get hasActionButtons() {\n    return this.dateNavigationService.hasActionButtons;\n  }\n\n  protected get dateRangeOptions() {\n    return this.dateIOService.getRangeOptions();\n  }\n\n  onRangeOptionSelect(selectedRange) {\n    const startDate = this.dateNavigationService.convertDateToDayModel(selectedRange?.value[0]),\n      endDate = this.dateNavigationService.convertDateToDayModel(selectedRange?.value[1]);\n    this.dateNavigationService.notifySelectedDayChanged({ startDate, endDate }, { emitEvent: !this.hasActionButtons });\n    this.dateNavigationService.moveToSpecificMonth(startDate);\n  }\n}\n","<!--\n  ~ Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n  ~ The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n  ~ This software is released under MIT license.\n  ~ The full license information can be found in LICENSE in the root directory of this project.\n  -->\n\n@if (hasRangeOptions) {\n<clr-vertical-nav class=\"clr-date-range-picker-nav\">\n  @for (option of dateRangeOptions; track option) {\n  <a\n    clrVerticalNavLink\n    href=\"javascript:void(0)\"\n    [attr.aria-label]=\"option?.label\"\n    tabindex=\"0\"\n    (keyup.enter)=\"onRangeOptionSelect(option)\"\n    (click)=\"onRangeOptionSelect(option)\"\n  >\n    {{option.label}}\n  </a>\n  }\n</clr-vertical-nav>\n<ng-container *ngTemplateOutlet=\"calendarView\"></ng-container>\n} @else {\n<div class=\"datepicker-view-manager\">\n  @if (isMonthView) {\n  <clr-monthpicker></clr-monthpicker>\n  } @if (isYearView) {\n  <clr-yearpicker></clr-yearpicker>\n  } @if (isDayView) {\n  <clr-daypicker></clr-daypicker>\n  } @if (hasActionButtons) {\n  <clr-datepicker-actions></clr-datepicker-actions>\n  }\n</div>\n}\n\n<ng-template #calendarView>\n  <div class=\"datepicker-view-manager\">\n    @if (isMonthView) {\n    <clr-monthpicker></clr-monthpicker>\n    } @if (isYearView) {\n    <clr-yearpicker></clr-yearpicker>\n    } @if (isDayView) {\n    <clr-daypicker></clr-daypicker>\n    } @if (hasActionButtons) {\n    <clr-datepicker-actions></clr-datepicker-actions>\n    }\n  </div>\n</ng-template>\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { AfterViewInit, Component, ElementRef, Input, Optional, Renderer2, ViewChild } from '@angular/core';\nimport {\n  ClrAbstractContainer,\n  ControlClassService,\n  ControlIdService,\n  FormsFocusService,\n  LayoutService,\n  NgControlService,\n} from '@clr/angular/forms/common';\nimport {\n  ClrPopoverHostDirective,\n  ClrPopoverPosition,\n  ClrPopoverService,\n  ClrPopoverType,\n  DROPDOWN_POSITIONS,\n} from '@clr/angular/popover/common';\nimport { ClrCommonStringsService } from '@clr/angular/utils';\nimport { startWith } from 'rxjs/operators';\n\nimport { ClrWeekday } from './enums/weekday.enum';\nimport { DayModel } from './model/day.model';\nimport { DateFormControlService } from './providers/date-form-control.service';\nimport { DateIOService } from './providers/date-io.service';\nimport { DateNavigationService } from './providers/date-navigation.service';\nimport { DatepickerEnabledService } from './providers/datepicker-enabled.service';\nimport { LocaleHelperService } from './providers/locale-helper.service';\nimport { ViewManagerService } from './providers/view-manager.service';\n\n@Component({\n  selector: 'clr-date-container, clr-date-range-container',\n  template: `\n    <ng-content select=\"label\"></ng-content>\n    @if (!label && addGrid()) {\n      <label></label>\n    }\n    <div class=\"clr-control-container\" [ngClass]=\"controlClass()\">\n      <div class=\"clr-input-wrapper\" clrPopoverOrigin>\n        <div class=\"clr-input-group\" [class.clr-focus]=\"focus\">\n          <!-- render range inputs only if using clr-date-range-container -->\n          @if (isRangePicker) {\n            <ng-content select=\"[clrStartDate]\"></ng-content>\n            <span class=\"date-range-separator\">-</span>\n            <ng-content select=\"[clrEndDate]\"></ng-content>\n          }\n          <!-- no @if for the singe-date input because it breaks the \"auto-wrapped\" date picker -->\n          <ng-content select=\"[clrDate]\"></ng-content>\n          @if (isEnabled) {\n            <button\n              #actionButton\n              type=\"button\"\n              clrPopoverOpenCloseButton\n              class=\"clr-input-group-icon-action\"\n              [disabled]=\"isInputDateDisabled\"\n            >\n              <cds-icon status=\"info\" shape=\"calendar\"></cds-icon>\n            </button>\n          }\n          <clr-datepicker-view-manager\n            *clrPopoverContent=\"\n              open;\n              at: popoverPosition;\n              type: popoverType;\n              outsideClickToClose: true;\n              scrollToClose: true\n            \"\n            cdkTrapFocus\n          ></clr-datepicker-view-manager>\n        </div>\n      </div>\n      @if (showHelper) {\n        <ng-content select=\"clr-control-helper\"></ng-content>\n      }\n      @if (showInvalid) {\n        <ng-content select=\"clr-control-error\"></ng-content>\n      }\n      @if (showValid) {\n        <ng-content select=\"clr-control-success\"></ng-content>\n      }\n    </div>\n  `,\n  providers: [\n    ControlIdService,\n    LocaleHelperService,\n    ControlClassService,\n    FormsFocusService,\n    NgControlService,\n    DateIOService,\n    DateNavigationService,\n    DatepickerEnabledService,\n    DateFormControlService,\n    ViewManagerService,\n  ],\n  hostDirectives: [ClrPopoverHostDirective],\n  host: {\n    '[class.clr-date-container]': 'true',\n    '[class.clr-form-control-disabled]': 'isInputDateDisabled',\n    '[class.clr-form-control]': 'true',\n    '[class.clr-row]': 'addGrid()',\n  },\n  standalone: false,\n})\nexport class ClrDateContainer extends ClrAbstractContainer implements AfterViewInit {\n  focus = false;\n\n  protected popoverType = ClrPopoverType.DROPDOWN;\n  private toggleButton: ElementRef<HTMLButtonElement>;\n\n  constructor(\n    protected renderer: Renderer2,\n    protected elem: ElementRef,\n    private popoverService: ClrPopoverService,\n    private dateNavigationService: DateNavigationService,\n    private datepickerEnabledService: DatepickerEnabledService,\n    private dateFormControlService: DateFormControlService,\n    private dateIOService: DateIOService,\n    public commonStrings: ClrCommonStringsService,\n    focusService: FormsFocusService,\n    private viewManagerService: ViewManagerService,\n    protected override controlClassService: ControlClassService,\n    @Optional() protected override layoutService: LayoutService,\n    protected override ngControlService: NgControlService,\n    private localeHelperService: LocaleHelperService\n  ) {\n    super(layoutService, controlClassService, ngControlService);\n\n    this.subscriptions.push(\n      focusService.focusChange.subscribe(state => {\n        this.focus = state;\n      })\n    );\n\n    this.subscriptions.push(\n      popoverService.openChange.subscribe(() => {\n        dateFormControlService.markAsTouched();\n      })\n    );\n\n    if (dateNavigationService) {\n      const tagName = elem.nativeElement.tagName.toLowerCase();\n      dateNavigationService.hasActionButtons = dateNavigationService.isRangePicker =\n        tagName === 'clr-date-range-container';\n    }\n  }\n\n  /**\n   * Overrides the locale-derived first day of the week for the calendar.\n   * Accepts a `ClrWeekday` value (Sunday=0 through Saturday=6).\n   * When not set, the first day of the week is determined by the Angular locale.\n   */\n  @Input('clrFirstDayOfWeek')\n  set firstDayOfWeek(value: ClrWeekday | null) {\n    this.localeHelperService.updateFirstDayOfWeek(value ?? null);\n  }\n\n  /**\n   * For date range picker actions buttons are shown by default\n   */\n  @Input('showActionButtons')\n  set showActionButtons(flag: boolean) {\n    if (this.dateNavigationService.isRangePicker && !flag) {\n      console.error('Error! The date range picker requires action buttons, [showActionButtons] cannot be turned off.');\n    } else {\n      this.dateNavigationService.hasActionButtons = flag;\n    }\n  }\n\n  @Input('clrPosition')\n  set clrPosition(position: string | ClrPopoverPosition) {\n    if (!position) {\n      return;\n    }\n\n    const posIndex = DROPDOWN_POSITIONS.indexOf(position as ClrPopoverPosition);\n\n    if (posIndex === -1) {\n      return;\n    }\n\n    this.viewManagerService.position = DROPDOWN_POSITIONS[posIndex];\n  }\n\n  @Input()\n  set rangeOptions(rangeOptions) {\n    this.dateIOService.setRangeOptions(rangeOptions);\n  }\n\n  @Input()\n  set min(dateString: string) {\n    if (this.dateNavigationService.isRangePicker) {\n      this.dateIOService.setMinDate(dateString);\n    } else {\n      console.error(\n        'Error! The date container [min] input only works for date range pickers. Use the native `min` attribute/property for single-date inputs.'\n      );\n    }\n  }\n\n  @Input()\n  set max(dateString: string) {\n    if (this.dateNavigationService.isRangePicker) {\n      this.dateIOService.setMaxDate(dateString);\n    } else {\n      console.error(\n        'Error! The date container [max] input only works for date range pickers. Use the native `max` attribute/property for single-date inputs.'\n      );\n    }\n  }\n\n  @ViewChild('actionButton')\n  set actionButton(button: ElementRef<HTMLButtonElement>) {\n    this.toggleButton = button;\n  }\n\n  get popoverPosition(): ClrPopoverPosition {\n    return this.viewManagerService.position;\n  }\n\n  get open() {\n    return this.popoverService.open;\n  }\n\n  /**\n   * Returns if the Datepicker is enabled or not. If disabled, hides the datepicker trigger.\n   */\n  get isEnabled(): boolean {\n    return this.datepickerEnabledService.isEnabled;\n  }\n\n  /**\n   * Return if Datepicker is diabled or not as Form Control\n   */\n  get isInputDateDisabled(): boolean {\n    /* clrForm wrapper or without clrForm */\n    return (\n      (this.control && this.control.disabled) || (this.dateFormControlService && this.dateFormControlService.disabled)\n    );\n  }\n\n  protected get isRangePicker(): boolean {\n    return this.dateNavigationService.isRangePicker;\n  }\n\n  ngAfterViewInit(): void {\n    this.dateRangeStructuralChecks();\n    this.subscriptions.push(\n      this.popoverService.openChange.subscribe(open => {\n        if (open) {\n          this.initializeCalendar();\n        } else {\n          this.toggleButton.nativeElement.focus();\n          this.dateNavigationService.resetSelectedDay();\n        }\n      })\n    );\n\n    this.subscriptions.push(this.listenForDateChanges());\n  }\n\n  /**\n   * Return the label for the toggle button.\n   * If there's a selected date, the date is included in the label.\n   */\n  private getToggleButtonLabel(day: DayModel): string {\n    if (day) {\n      const formattedDate = this.dateIOService.toLocaleDisplayFormatString(day.toDate());\n\n      return this.commonStrings.parse(this.commonStrings.keys.datepickerToggleChangeDateLabel, {\n        SELECTED_DATE: formattedDate,\n      });\n    }\n    return this.commonStrings.keys.datepickerToggleChooseDateLabel;\n  }\n\n  private listenForDateChanges() {\n    // because date-input.ts initializes the input in ngAfterViewInit,\n    // using a databound attribute to change the button labels results in ExpressionChangedAfterItHasBeenCheckedError.\n    // so instead, update the attribute directly on the element\n    return this.dateNavigationService.selectedDayChange\n      .pipe(startWith(this.dateNavigationService.selectedDay))\n      .subscribe(day => {\n        if (this.isEnabled) {\n          const label = this.getToggleButtonLabel(day);\n          const toggleEl = this.toggleButton.nativeElement;\n          this.renderer.setAttribute(toggleEl, 'aria-label', label);\n          this.renderer.setAttribute(toggleEl, 'title', label);\n        }\n      });\n  }\n\n  /**\n   * Processes the user input and Initializes the Calendar everytime the datepicker popover is open.\n   */\n  private initializeCalendar(): void {\n    this.dateNavigationService.initializeCalendar();\n  }\n\n  private dateRangeStructuralChecks() {\n    if (this.dateNavigationService.isRangePicker) {\n      const inputs: HTMLElement[] = Array.from(this.elem.nativeElement.querySelectorAll('input'));\n      if (inputs.some(input => input.classList.contains('clr-date-input'))) {\n        console.error('Error! clr-date-range-container must contain clrStartDate and clrEndDate inputs');\n      }\n      if (!inputs.some(input => input.classList.contains('clr-date-start-input'))) {\n        console.error('Error! clr-date-range-container must contain clrStartDate input');\n      }\n      if (!inputs.some(input => input.classList.contains('clr-date-end-input'))) {\n        console.error('Error! clr-date-range-container must contain clrEndDate input');\n      }\n    }\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n  AfterViewInit,\n  Directive,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  HostBinding,\n  HostListener,\n  Inject,\n  Injector,\n  Input,\n  OnDestroy,\n  OnInit,\n  Optional,\n  PLATFORM_ID,\n  Renderer2,\n  Self,\n  ViewContainerRef,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { FormsFocusService, WrappedFormControl } from '@clr/angular/forms/common';\nimport { isBooleanAttributeSet } from '@clr/angular/utils';\nimport { Observable } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { ClrDateContainer } from './date-container';\nimport { DayModel } from './model/day.model';\nimport { DateFormControlService } from './providers/date-form-control.service';\nimport { DateIOService } from './providers/date-io.service';\nimport { DateNavigationService } from './providers/date-navigation.service';\nimport { DatepickerEnabledService } from './providers/datepicker-enabled.service';\nimport { DatepickerFocusService } from './providers/datepicker-focus.service';\nimport { datesAreEqual } from './utils/date-utils';\n\n// There are four ways the datepicker value is set\n// 1. Value set by user typing into text input as a string ex: '01/28/2015'\n// 2. Value set explicitly by Angular Forms APIs as a string ex: '01/28/2015'\n// 3. Value set by user via datepicker UI as a Date Object\n// 4. Value set via `clrDate` input as a Date Object\n\n@Directive()\nexport abstract class ClrDateInputBase\n  extends WrappedFormControl<ClrDateContainer>\n  implements OnInit, AfterViewInit, OnDestroy\n{\n  static ngAcceptInputType_date: Date | null | string;\n\n  @Input() placeholder: string;\n\n  protected override index = 1;\n\n  private initialClrDateInputValue: Date;\n  private previousDateChange: Date;\n\n  protected abstract dateChange: EventEmitter<Date>;\n\n  constructor(\n    viewContainerRef: ViewContainerRef,\n    injector: Injector,\n    protected override el: ElementRef<HTMLInputElement>,\n    protected override renderer: Renderer2,\n    @Self()\n    @Optional()\n    protected control: NgControl,\n    @Optional() @Inject(forwardRef(() => ClrDateContainer)) private container: ClrDateContainer,\n    @Optional() protected dateIOService: DateIOService,\n    @Optional() protected dateNavigationService: DateNavigationService,\n    @Optional() private datepickerEnabledService: DatepickerEnabledService,\n    @Optional() private dateFormControlService: DateFormControlService,\n    @Inject(PLATFORM_ID) private platformId: any,\n    @Optional() private focusService: FormsFocusService,\n    protected datepickerFocusService: DatepickerFocusService\n  ) {\n    super(viewContainerRef, ClrDateContainer, injector, control, renderer, el);\n  }\n\n  get disabled() {\n    if (this.dateFormControlService) {\n      return this.dateFormControlService.disabled || !!this.control?.control?.disabled;\n    }\n    return null;\n  }\n\n  @Input('disabled')\n  @HostBinding('disabled')\n  set disabled(value: boolean | string) {\n    if (this.dateFormControlService) {\n      this.dateFormControlService.setDisabled(isBooleanAttributeSet(value));\n    }\n  }\n\n  @HostBinding('attr.placeholder')\n  get placeholderText(): string {\n    return this.placeholder ? this.placeholder : this.dateIOService.placeholderText;\n  }\n\n  @HostBinding('attr.type')\n  get inputType(): string {\n    return isPlatformBrowser(this.platformId) && this.usingNativeDatepicker() ? 'date' : 'text';\n  }\n\n  protected abstract get userSelectedDayChange(): Observable<DayModel>;\n\n  override ngOnInit() {\n    super.ngOnInit();\n    this.populateServicesFromContainerComponent();\n\n    this.subscriptions.push(\n      this.listenForUserSelectedDayChanges(),\n      this.listenForControlValueChanges(),\n      this.listenForTouchChanges(),\n      this.listenForDirtyChanges(),\n      this.listenForInputRefocus()\n    );\n  }\n\n  ngAfterViewInit() {\n    // I don't know why I have to do this but after using the new HostWrapping Module I have to delay the processing\n    // of the initial Input set by the user to here. If I do not 2 issues occur:\n    // 1. The Input setter is called before ngOnInit. ngOnInit initializes the services without which the setter fails.\n    // 2. The Renderer doesn't work before ngAfterViewInit (It used to before the new HostWrapping Module for some reason).\n    // I need the renderer to set the value property on the input to make sure that if the user has supplied a Date\n    // input object, we reflect it with the right date on the input field using the IO service. I am not sure if\n    // these are major issues or not but just noting them down here.\n    this.processInitialInputs();\n  }\n\n  @HostListener('focus')\n  setFocusStates() {\n    this.setFocus(true);\n  }\n\n  override triggerValidation() {\n    super.triggerValidation();\n    this.setFocus(false);\n  }\n\n  @HostListener('change', ['$event.target'])\n  onValueChange(target: HTMLInputElement) {\n    const validDateValue = this.dateIOService.getDateValueFromDateString(target.value);\n    if (this.usingClarityDatepicker() && validDateValue) {\n      this.updateDate(validDateValue, true);\n    } else if (this.usingNativeDatepicker()) {\n      const [year, month, day] = target.value.split('-');\n      this.updateDate(new Date(+year, +month - 1, +day), true);\n    } else {\n      this.emitDateOutput(null);\n    }\n  }\n\n  protected datepickerHasFormControl() {\n    return !!this.control;\n  }\n\n  protected setDate(date: Date | string) {\n    if (typeof date === 'string') {\n      date = new Date(date);\n    }\n\n    if (this.previousDateChange !== date) {\n      this.updateDate(date);\n    }\n\n    if (!this.initialClrDateInputValue) {\n      this.initialClrDateInputValue = date;\n    }\n  }\n\n  protected triggerControlInputValidation() {\n    if (this.datepickerHasFormControl()) {\n      this.control.control?.updateValueAndValidity({ emitEvent: false });\n      this.control.control?.setErrors(this.control.control.errors);\n    }\n  }\n\n  private usingClarityDatepicker() {\n    return this.datepickerEnabledService.isEnabled;\n  }\n\n  private usingNativeDatepicker() {\n    return !this.datepickerEnabledService.isEnabled;\n  }\n\n  private setFocus(focus: boolean) {\n    if (this.focusService) {\n      this.focusService.focused = focus;\n    }\n  }\n\n  private populateServicesFromContainerComponent() {\n    if (!this.container) {\n      this.dateIOService = this.getProviderFromContainer(DateIOService);\n      this.dateNavigationService = this.getProviderFromContainer(DateNavigationService);\n      this.datepickerEnabledService = this.getProviderFromContainer(DatepickerEnabledService);\n      this.dateFormControlService = this.getProviderFromContainer(DateFormControlService);\n    }\n  }\n\n  private processInitialInputs() {\n    if (this.datepickerHasFormControl()) {\n      this.updateDate(this.dateIOService.getDateValueFromDateString(this.control.value));\n    } else {\n      this.updateDate(this.initialClrDateInputValue);\n    }\n  }\n\n  private updateDate(value: Date, setByUserInteraction = false) {\n    const date = this.getValidDateValueFromDate(value);\n    if (setByUserInteraction) {\n      this.emitDateOutput(date);\n    } else {\n      this.previousDateChange = date;\n    }\n\n    if (this.dateNavigationService) {\n      const dayModel = date ? new DayModel(date.getFullYear(), date.getMonth(), date.getDate()) : null;\n\n      this.updateDayModel(dayModel);\n    }\n\n    this.updateInput(date);\n  }\n\n  private updateInput(date: Date) {\n    if (date) {\n      const dateString = this.dateIOService.toLocaleDisplayFormatString(date);\n      if (this.usingNativeDatepicker()) {\n        // valueAsDate expects UTC, date from input is time-zoned\n        date.setMinutes(date.getMinutes() - date.getTimezoneOffset());\n        this.renderer.setProperty(this.el.nativeElement, 'valueAsDate', date);\n      } else if (this.datepickerHasFormControl() && dateString !== this.control.value) {\n        this.control.control.setValue(dateString);\n      } else {\n        this.renderer.setProperty(this.el.nativeElement, 'value', dateString);\n      }\n      this.validateDateRange();\n    } else {\n      this.renderer.setProperty(this.el.nativeElement, 'value', '');\n    }\n  }\n\n  private getValidDateValueFromDate(date: Date) {\n    if (this.dateIOService) {\n      const dateString = this.dateIOService.toLocaleDisplayFormatString(date);\n      return this.dateIOService.getDateValueFromDateString(dateString);\n    } else {\n      return null;\n    }\n  }\n\n  private emitDateOutput(date: Date) {\n    if (!datesAreEqual(date, this.previousDateChange)) {\n      this.dateChange.emit(date);\n      this.previousDateChange = date;\n    } else if (!date && this.previousDateChange) {\n      this.dateChange.emit(null);\n      this.previousDateChange = null;\n    }\n  }\n\n  private listenForControlValueChanges() {\n    if (this.datepickerHasFormControl()) {\n      return this.control.valueChanges\n        .pipe(\n          // only update date value if not being set by user\n          filter(() => !this.datepickerFocusService.elementIsFocused(this.el.nativeElement))\n        )\n        .subscribe((value: string) => this.updateDate(this.dateIOService.getDateValueFromDateString(value)));\n    } else {\n      return null;\n    }\n  }\n\n  private listenForUserSelectedDayChanges() {\n    return this.userSelectedDayChange.subscribe(dayModel => this.updateDate(dayModel?.toDate(), true));\n  }\n\n  private listenForTouchChanges() {\n    return this.dateFormControlService.touchedChange\n      .pipe(filter(() => this.datepickerHasFormControl()))\n      .subscribe(() => this.control.control.markAsTouched());\n  }\n\n  private listenForDirtyChanges() {\n    return this.dateFormControlService.dirtyChange\n      .pipe(filter(() => this.datepickerHasFormControl()))\n      .subscribe(() => this.control.control.markAsDirty());\n  }\n\n  private listenForInputRefocus() {\n    return this.dateNavigationService.selectedDayChange\n      .pipe(filter(date => !!date && !this.dateNavigationService.isRangePicker))\n      .subscribe(() => this.datepickerFocusService.focusInput(this.el.nativeElement));\n  }\n\n  /**\n   * In case of date range error, both start & end date field validation has to be triggered\n   * if either of the field gets updated\n   */\n  private validateDateRange() {\n    if (this.dateNavigationService.isRangePicker) {\n      const controls = this.ngControlService?.controls;\n      const isValid = this.dateNavigationService.selectedDay?.isBefore(this.dateNavigationService.selectedEndDay, true);\n      if (isValid && controls?.some(control => control.hasError('range'))) {\n        controls.forEach((ngControl: NgControl) => {\n          ngControl?.control?.updateValueAndValidity({ emitEvent: false });\n        });\n      }\n    }\n  }\n\n  protected abstract updateDayModel(dayModel: DayModel): void;\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, EventEmitter, Input, Output } from '@angular/core';\n\nimport { ClrDateInputBase } from './date-input';\nimport { DayModel } from './model/day.model';\nimport { DatepickerFocusService } from './providers/datepicker-focus.service';\n\n@Directive({\n  selector: '[clrDate]',\n  host: {\n    '[class.clr-input]': 'true',\n    '[class.clr-date-input]': 'true',\n  },\n  providers: [DatepickerFocusService],\n  standalone: false,\n})\nexport class ClrDateInput extends ClrDateInputBase {\n  @Output('clrDateChange') override dateChange = new EventEmitter<Date>(false);\n\n  @Input('clrDate')\n  set date(date: Date | string) {\n    this.setDate(date);\n  }\n\n  @Input()\n  set min(dateString: string) {\n    this.dateIOService.setMinDate(dateString);\n  }\n\n  @Input()\n  set max(dateString: string) {\n    this.dateIOService.setMaxDate(dateString);\n  }\n\n  protected override get userSelectedDayChange() {\n    return this.dateNavigationService.selectedDayChange;\n  }\n\n  protected override updateDayModel(dayModel: DayModel) {\n    this.dateNavigationService.persistedDate = this.dateNavigationService.selectedDay = dayModel;\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, EventEmitter, HostBinding, Input, Output } from '@angular/core';\n\nimport { ClrDateInputBase } from './date-input';\nimport { DayModel } from './model/day.model';\nimport { DatepickerFocusService } from './providers/datepicker-focus.service';\n\n@Directive({\n  selector: '[clrStartDate]',\n  host: {\n    '[class.clr-input]': 'true',\n    '[class.clr-date-start-input]': 'true',\n    '[style.text-align]': \"'right'\",\n  },\n  providers: [DatepickerFocusService],\n  standalone: false,\n})\nexport class ClrStartDateInput extends ClrDateInputBase {\n  @Output('clrStartDateChange') override dateChange = new EventEmitter<Date>(false);\n\n  @Input('inputWidth') inputWidth = 13;\n\n  @Input('clrStartDate')\n  set date(date: Date | string) {\n    this.setDate(date);\n  }\n\n  @HostBinding('attr.size')\n  get inputSize() {\n    return this.inputWidth;\n  }\n\n  protected override get userSelectedDayChange() {\n    return this.dateNavigationService.selectedDayChange;\n  }\n\n  override ngOnInit() {\n    super.ngOnInit();\n    this.subscriptions.push(this.dateIOService.minDateChange.subscribe(() => this.triggerControlInputValidation()));\n  }\n\n  protected override updateDayModel(dayModel: DayModel) {\n    this.dateNavigationService.persistedDate = this.dateNavigationService.selectedDay = dayModel;\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, EventEmitter, HostBinding, Input, Output } from '@angular/core';\n\nimport { ClrDateInputBase } from './date-input';\nimport { DayModel } from './model/day.model';\nimport { DatepickerFocusService } from './providers/datepicker-focus.service';\n\n@Directive({\n  selector: '[clrEndDate]',\n  host: {\n    '[class.clr-input]': 'true',\n    '[class.clr-date-end-input]': 'true',\n  },\n  providers: [DatepickerFocusService],\n  standalone: false,\n})\nexport class ClrEndDateInput extends ClrDateInputBase {\n  @Output('clrEndDateChange') override dateChange = new EventEmitter<Date>(false);\n\n  @Input('inputWidth') inputWidth = 13;\n\n  @Input('clrEndDate')\n  set date(date: Date | string) {\n    this.setDate(date);\n  }\n\n  @HostBinding('attr.size')\n  get inputSize() {\n    return this.inputWidth;\n  }\n\n  protected override get userSelectedDayChange() {\n    return this.dateNavigationService.selectedEndDayChange;\n  }\n\n  override ngOnInit() {\n    super.ngOnInit();\n    this.subscriptions.push(this.dateIOService.maxDateChange.subscribe(() => this.triggerControlInputValidation()));\n  }\n\n  protected override updateDayModel(dayModel: DayModel) {\n    this.dateNavigationService.persistedEndDate = this.dateNavigationService.selectedEndDay = dayModel;\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, Optional } from '@angular/core';\nimport { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator } from '@angular/forms';\n\nimport { DateIOService } from './providers/date-io.service';\nimport { DateNavigationService } from './providers/date-navigation.service';\n\n@Directive({\n  selector: '[clrDate], [clrStartDate], [clrEndDate]',\n  providers: [{ provide: NG_VALIDATORS, useExisting: ClrDateInputValidator, multi: true }],\n  standalone: false,\n})\nexport class ClrDateInputValidator implements Validator {\n  constructor(@Optional() private dateIOService: DateIOService) {}\n\n  validate(control: AbstractControl): ValidationErrors {\n    if (this.dateIOService) {\n      const value = this.dateIOService.getDateValueFromDateString(control.value);\n      const minDate = this.dateIOService.disabledDates.minDate.toDate();\n      const maxDate = this.dateIOService.disabledDates.maxDate.toDate();\n\n      if (value && value < minDate) {\n        return { min: { min: minDate.toLocaleDateString(), actual: value.toLocaleDateString() } };\n      } else if (value && value > maxDate) {\n        return { max: { max: maxDate.toLocaleDateString(), actual: value.toLocaleDateString() } };\n      }\n    }\n\n    return null;\n  }\n}\n\n@Directive({\n  selector: '[clrStartDate]',\n  providers: [{ provide: NG_VALIDATORS, useExisting: ClrStartDateInputValidator, multi: true }],\n  standalone: false,\n})\nexport class ClrStartDateInputValidator implements Validator {\n  constructor(\n    @Optional() private dateIOService: DateIOService,\n    @Optional() private dateNavigationService: DateNavigationService\n  ) {}\n\n  validate(control: AbstractControl): ValidationErrors {\n    if (this.dateIOService) {\n      const value = this.dateIOService.getDateValueFromDateString(control.value);\n      const endDate = this.dateNavigationService?.selectedEndDay?.toDate();\n\n      if (value && endDate && value > endDate) {\n        return { range: { startDate: value, endDate } };\n      }\n    }\n\n    return null;\n  }\n}\n\n@Directive({\n  selector: '[clrEndDate]',\n  providers: [{ provide: NG_VALIDATORS, useExisting: ClrEndDateInputValidator, multi: true }],\n  standalone: false,\n})\nexport class ClrEndDateInputValidator implements Validator {\n  constructor(\n    @Optional() private dateIOService: DateIOService,\n    @Optional() private dateNavigationService: DateNavigationService\n  ) {}\n\n  validate(control: AbstractControl): ValidationErrors {\n    if (this.dateIOService) {\n      const value = this.dateIOService.getDateValueFromDateString(control.value);\n      const startDate = this.dateNavigationService?.selectedDay?.toDate();\n\n      if (value && startDate && value < startDate) {\n        return { range: { startDate, endDate: value } };\n      }\n    }\n\n    return null;\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport interface ClrDayOfWeek {\n  readonly day: string;\n  readonly narrow: string;\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { ClrCommonFormsModule } from '@clr/angular/forms/common';\nimport {\n  angleIcon,\n  calendarIcon,\n  ClarityIcons,\n  ClrIcon,\n  errorStandardIcon,\n  eventIcon,\n  successStandardIcon,\n} from '@clr/angular/icon';\nimport { ClrVerticalNavModule } from '@clr/angular/layout/vertical-nav';\nimport { ClrPopoverModuleNext } from '@clr/angular/popover/common';\nimport { CdkTrapFocusModule, ClrConditionalModule, ClrHostWrappingModule } from '@clr/angular/utils';\n\nimport { ClrCalendar } from './calendar';\nimport { ClrDateContainer } from './date-container';\nimport { ClrEndDateInput } from './date-end-input';\nimport { ClrDateInputValidator, ClrEndDateInputValidator, ClrStartDateInputValidator } from './date-input.validator';\nimport { ClrDateInput } from './date-single-input';\nimport { ClrStartDateInput } from './date-start-input';\nimport { ClrDatepickerActions } from './datepicker-action-buttons';\nimport { ClrDatepickerViewManager } from './datepicker-view-manager';\nimport { ClrDay } from './day';\nimport { ClrDaypicker } from './daypicker';\nimport { ClrMonthpicker } from './monthpicker';\nimport { ClrYearpicker } from './yearpicker';\n\nexport const CLR_DATEPICKER_DIRECTIVES: Type<any>[] = [\n  ClrDateInput,\n  ClrDay,\n  ClrDateContainer,\n  ClrDateInputValidator,\n  ClrStartDateInput,\n  ClrEndDateInput,\n  ClrStartDateInputValidator,\n  ClrEndDateInputValidator,\n  ClrDatepickerViewManager,\n  ClrMonthpicker,\n  ClrYearpicker,\n  ClrDaypicker,\n  ClrCalendar,\n  ClrDatepickerActions,\n];\n\n@NgModule({\n  imports: [\n    CommonModule,\n    CdkTrapFocusModule,\n    ClrHostWrappingModule,\n    ClrConditionalModule,\n    ClrPopoverModuleNext,\n    ClrIcon,\n    ClrCommonFormsModule,\n    ClrVerticalNavModule,\n  ],\n  declarations: [CLR_DATEPICKER_DIRECTIVES],\n  exports: [CLR_DATEPICKER_DIRECTIVES],\n})\nexport class ClrDatepickerModule {\n  constructor() {\n    ClarityIcons.addIcons(successStandardIcon, errorStandardIcon, angleIcon, eventIcon, calendarIcon);\n  }\n}\n","/*\n * Copyright (c) 2016-2026 Broadcom. All Rights Reserved.\n * The term \"Broadcom\" refers to Broadcom Inc. and/or its subsidiaries.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './date-input';\nexport * from './date-single-input';\nexport * from './date-start-input';\nexport * from './date-end-input';\nexport * from './date-input.validator';\nexport * from './date-container';\nexport * from './datepicker-view-manager';\nexport * from './daypicker';\nexport * from './monthpicker';\nexport * from './yearpicker';\nexport * from './calendar';\nexport * from './day';\nexport * from './datepicker-action-buttons';\nexport * from './interfaces/day-of-week.interface';\nexport * from './enums/weekday.enum';\n\nexport * from './datepicker.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.LocaleHelperService","i2.DateNavigationService","i3.DatepickerFocusService","i4.ViewManagerService","i5","i6","i1.DateNavigationService","i2.ViewManagerService","i2","i4.DateIOService","i5.DateFormControlService","i7.ClrDay","i1.ViewManagerService","i3.LocaleHelperService","i6.ClrCalendar","i1","i3.DateNavigationService","i4.DateFormControlService","i7.ClrMonthpicker","i8.ClrYearpicker","i9.ClrDaypicker","i10.ClrDatepickerActions","i3.DatepickerEnabledService","i5.DateIOService","i8.ViewManagerService","i9.LocaleHelperService","i10","i11","i12.ClrDatepickerViewManager","i2.DateIOService","i4.DatepickerEnabledService","i7.DatepickerFocusService","i1.DateIOService"],"mappings":"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"}