@netwin/angular-datetime-picker 20.0.0-rc.1 → 20.0.0-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"netwin-angular-datetime-picker.mjs","sources":["../../../projects/picker/src/lib/date-time/adapter/date-time-adapter.class.ts","../../../projects/picker/src/lib/date-time/adapter/date-time-format.class.ts","../../../projects/picker/src/lib/utils/array.utils.ts","../../../projects/picker/src/lib/utils/constants.ts","../../../projects/picker/src/lib/utils/date.utils.ts","../../../projects/picker/src/lib/date-time/adapter/native-date-time-adapter.class.ts","../../../projects/picker/src/lib/date-time/adapter/native-date-time-format.class.ts","../../../projects/picker/src/lib/date-time/adapter/native-date-time.module.ts","../../../projects/picker/src/lib/date-time/calendar-body.component.ts","../../../projects/picker/src/lib/date-time/calendar-body.component.html","../../../projects/picker/src/lib/date-time/calendar-month-view.component.ts","../../../projects/picker/src/lib/date-time/calendar-month-view.component.html","../../../projects/picker/src/lib/date-time/date-time-picker-intl.service.ts","../../../projects/picker/src/lib/date-time/options-provider.ts","../../../projects/picker/src/lib/date-time/calendar-multi-year-view.component.ts","../../../projects/picker/src/lib/date-time/calendar-multi-year-view.component.html","../../../projects/picker/src/lib/date-time/calendar-year-view.component.ts","../../../projects/picker/src/lib/date-time/calendar-year-view.component.html","../../../projects/picker/src/lib/date-time/date-time.class.ts","../../../projects/picker/src/lib/date-time/calendar.component.ts","../../../projects/picker/src/lib/date-time/calendar.component.html","../../../projects/picker/src/lib/date-time/timer-box.component.ts","../../../projects/picker/src/lib/date-time/timer-box.component.html","../../../projects/picker/src/lib/date-time/timer.component.ts","../../../projects/picker/src/lib/date-time/timer.component.html","../../../projects/picker/src/lib/date-time/date-time-picker-container.component.ts","../../../projects/picker/src/lib/date-time/date-time-picker-container.component.html","../../../projects/picker/src/lib/date-time/date-time-inline.component.ts","../../../projects/picker/src/lib/date-time/date-time-inline.component.html","../../../projects/picker/src/lib/date-time/date-time.module.ts","../../../projects/picker/src/lib/date-time/adapter/unix-timestamp-adapter/unix-timestamp-date-time-adapter.class.ts","../../../projects/picker/src/lib/date-time/adapter/unix-timestamp-adapter/unix-timestamp-date-time-format.class.ts","../../../projects/picker/src/netwin-angular-datetime-picker.ts"],"sourcesContent":["/**\n * date-time-adapter.class\n */\nimport { InjectionToken, LOCALE_ID, inject } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n/** InjectionToken for date time picker that can be used to override default locale code. */\nexport const OWL_DATE_TIME_LOCALE = new InjectionToken<string>('OWL_DATE_TIME_LOCALE', {\n providedIn: 'root',\n factory: OWL_DATE_TIME_LOCALE_FACTORY\n});\n\n/** @docs-private */\nexport function OWL_DATE_TIME_LOCALE_FACTORY(): string {\n return inject(LOCALE_ID);\n}\n\n/** Provider for OWL_DATE_TIME_LOCALE injection token. */\nexport const OWL_DATE_TIME_LOCALE_PROVIDER = {\n provide: OWL_DATE_TIME_LOCALE,\n useExisting: LOCALE_ID\n};\n\nexport abstract class DateTimeAdapter<T> {\n /** The locale to use for all dates. */\n protected locale: string;\n\n /** A stream that emits when the locale changes. */\n protected _localeChanges = new Subject<string>();\n public localeChanges = this._localeChanges.asObservable();\n\n /** total milliseconds in a day. */\n protected readonly millisecondsInDay = 86400000;\n\n /** total milliseconds in a minute. */\n protected readonly milliseondsInMinute = 60000;\n\n /**\n * Get the year of the given date\n */\n public abstract getYear(date: T): number;\n\n /**\n * Get the month of the given date\n * 0 -- January\n * 11 -- December\n */\n public abstract getMonth(date: T): number;\n\n /**\n * Get the day of the week of the given date\n * 0 -- Sunday\n * 6 -- Saturday\n */\n public abstract getDay(date: T): number;\n\n /**\n * Get the day num of the given date\n */\n public abstract getDate(date: T): number;\n\n /**\n * Get the hours of the given date\n */\n public abstract getHours(date: T): number;\n\n /**\n * Get the minutes of the given date\n */\n public abstract getMinutes(date: T): number;\n\n /**\n * Get the seconds of the given date\n */\n public abstract getSeconds(date: T): number;\n\n /**\n * Get the milliseconds timestamp of the given date\n */\n public abstract getTime(date: T): number;\n\n /**\n * Gets the number of days in the month of the given date.\n */\n public abstract getNumDaysInMonth(date: T): number;\n\n /**\n * Get the number of calendar days between the given dates.\n * If dateLeft is before dateRight, it would return positive value\n * If dateLeft is after dateRight, it would return negative value\n */\n public abstract differenceInCalendarDays(dateLeft: T, dateRight: T): number;\n\n /**\n * Gets the name for the year of the given date.\n */\n public abstract getYearName(date: T): string;\n\n /**\n * Get a list of month names\n */\n public abstract getMonthNames(style: Intl.DateTimeFormatOptions['month']): Array<string>;\n\n /**\n * Get a list of week names\n */\n public abstract getDayOfWeekNames(style: Intl.DateTimeFormatOptions['weekday']): Array<string>;\n\n /**\n * Gets a list of names for the dates of the month.\n */\n public abstract getDateNames(): Array<string>;\n\n /**\n * Return a Date object as a string, using the ISO standard\n */\n public abstract toIso8601(date: T): string;\n\n /**\n * Check if the give dates are equal\n */\n public abstract isEqual(dateLeft: T, dateRight: T): boolean;\n\n /**\n * Check if the give dates are the same day\n */\n public abstract isSameDay(dateLeft: T, dateRight: T): boolean;\n\n /**\n * Checks whether the given date is valid.\n */\n public abstract isValid(date: T): boolean;\n\n /**\n * Gets date instance that is not valid.\n */\n public abstract invalid(): T;\n\n /**\n * Checks whether the given object is considered a date instance by this DateTimeAdapter.\n */\n public abstract isDateInstance(obj: unknown): obj is T;\n\n /**\n * Add the specified number of years to the given date\n */\n public abstract addCalendarYears(date: T, amount: number): T;\n\n /**\n * Add the specified number of months to the given date\n */\n public abstract addCalendarMonths(date: T, amount: number): T;\n\n /**\n * Add the specified number of days to the given date\n */\n public abstract addCalendarDays(date: T, amount: number): T;\n\n /**\n * Set the hours to the given date.\n */\n public abstract setHours(date: T, amount: number): T;\n\n /**\n * Set the minutes to the given date.\n */\n public abstract setMinutes(date: T, amount: number): T;\n\n /**\n * Set the seconds to the given date.\n */\n public abstract setSeconds(date: T, amount: number): T;\n\n /**\n * Creates a date with the given year, month, date, hour, minute and second. Does not allow over/under-flow of the\n * month and date.\n */\n public abstract createDate(year: number, month: number, date: number): T;\n public abstract createDate(\n year: number,\n month: number,\n date: number,\n hours: number,\n minutes: number,\n seconds: number\n ): T;\n\n /**\n * Clone the given date\n */\n public abstract clone(date: T): T;\n\n /**\n * Get a new moment\n */\n public abstract now(): T;\n\n /**\n * Formats a date as a string according to the given format.\n */\n public abstract format(date: T, displayFormat: Intl.DateTimeFormatOptions): string;\n\n /**\n * Parse a user-provided value to a Date Object\n */\n public abstract parse(value: unknown): T | null;\n\n /**\n * Compare two given dates\n * 1 if the first date is after the second,\n * -1 if the first date is before the second\n * 0 if dates are equal.\n */\n public compare(first: T, second: T): number {\n if (!this.isValid(first) || !this.isValid(second)) {\n throw Error('JSNativeDate: Cannot compare invalid dates.');\n }\n\n const dateFirst = this.clone(first);\n const dateSecond = this.clone(second);\n\n const diff = this.getTime(dateFirst) - this.getTime(dateSecond);\n\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1;\n } else {\n // Return 0 if diff is 0; return NaN if diff is NaN\n return diff;\n }\n }\n\n /**\n * Check if two given dates are in the same year\n * 1 if the first date's year is after the second,\n * -1 if the first date's year is before the second\n * 0 if two given dates are in the same year\n */\n public compareYear(first: T, second: T): number {\n if (!this.isValid(first) || !this.isValid(second)) {\n throw Error('JSNativeDate: Cannot compare invalid dates.');\n }\n\n const yearLeft = this.getYear(first);\n const yearRight = this.getYear(second);\n\n const diff = yearLeft - yearRight;\n\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1;\n } else {\n return 0;\n }\n }\n\n /**\n * Attempts to deserialize a value to a valid date object. This is different from parsing in that\n * deserialize should only accept non-ambiguous, locale-independent formats (e.g. a ISO 8601\n * string). The default implementation does not allow any deserialization, it simply checks that\n * the given value is already a valid date object or null. The `<mat-datepicker>` will call this\n * method on all of it's `@Input()` properties that accept dates. It is therefore possible to\n * support passing values from your backend directly to these properties by overriding this method\n * to also deserialize the format used by your backend.\n */\n public deserialize(value: T | null): T | null {\n if (value == null || (this.isDateInstance(value) && this.isValid(value))) {\n return value;\n }\n return this.invalid();\n }\n\n /**\n * Sets the locale used for all dates.\n */\n public setLocale(locale: string): void {\n this.locale = locale;\n this._localeChanges.next(locale);\n }\n\n /**\n * Get the locale used for all dates.\n */\n public getLocale(): string {\n return this.locale;\n }\n\n /**\n * Clamp the given date between min and max dates.\n */\n public clampDate(date: T, min?: T | null, max?: T | null): T {\n if (min && this.compare(date, min) < 0) {\n return min;\n }\n if (max && this.compare(date, max) > 0) {\n return max;\n }\n return date;\n }\n}\n","/**\n * date-time-format.class\n */\n\nimport { InjectionToken } from '@angular/core';\n\nexport type OwlDateTimeFormats = {\n fullPickerInput: Partial<Intl.DateTimeFormatOptions>;\n datePickerInput: Partial<Intl.DateTimeFormatOptions>;\n timePickerInput: Partial<Intl.DateTimeFormatOptions>;\n monthYearLabel: Partial<Intl.DateTimeFormatOptions>;\n dateA11yLabel: Partial<Intl.DateTimeFormatOptions>;\n monthYearA11yLabel: Partial<Intl.DateTimeFormatOptions>;\n};\n\n/** InjectionToken for date time picker that can be used to override default format. */\nexport const OWL_DATE_TIME_FORMATS = new InjectionToken<OwlDateTimeFormats>('OWL_DATE_TIME_FORMATS');\n","/** Creates an array and fills it with values. */\nexport function range<T>(length: number, valueFunction: (index: number) => T): Array<T> {\n return new Array<T>(length).fill(null).map((_, index) => valueFunction(index));\n}\n","import { range } from './array.utils';\n\n/** Whether the browser supports the Intl API. */\nexport const SUPPORTS_INTL_API = typeof Intl !== 'undefined';\n\n/** The default month names to use if Intl API is not available. */\nexport const DEFAULT_MONTH_NAMES = {\n long: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December'\n ],\n short: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D']\n};\n\n/** The default day of the week names to use if Intl API is not available. */\nexport const DEFAULT_DAY_OF_WEEK_NAMES = {\n long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S']\n};\n\n/** The default date names to use if Intl API is not available. */\nexport const DEFAULT_DATE_NAMES = range(31, (i) => String(i + 1));\n","/**\n * Creates a date with the given year, month, date, hour, minute and second. Does not allow over/under-flow of the\n * month and date.\n */\nexport function createDate(\n year: number,\n month: number,\n date: number,\n hours: number = 0,\n minutes: number = 0,\n seconds: number = 0\n): Date {\n if (month < 0 || month > 11) {\n throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\n }\n\n if (date < 1) {\n throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\n }\n\n if (hours < 0 || hours > 23) {\n throw Error(`Invalid hours \"${hours}\". Hours has to be between 0 and 23.`);\n }\n\n if (minutes < 0 || minutes > 59) {\n throw Error(`Invalid minutes \"${minutes}\". Minutes has to between 0 and 59.`);\n }\n\n if (seconds < 0 || seconds > 59) {\n throw Error(`Invalid seconds \"${seconds}\". Seconds has to be between 0 and 59.`);\n }\n\n const result = createDateWithOverflow(year, month, date, hours, minutes, seconds);\n\n // Check that the date wasn't above the upper bound for the month, causing the month to overflow\n // For example, createDate(2017, 1, 31) would try to create a date 2017/02/31 which is invalid\n if (result.getMonth() !== month) {\n throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\n }\n\n return result;\n}\n\n/**\n * Gets the number of days in the month of the given date.\n */\nexport function getNumDaysInMonth(date: Date): number {\n const lastDateOfMonth = createDateWithOverflow(date.getFullYear(), date.getMonth() + 1, 0);\n\n return lastDateOfMonth.getDate();\n}\n\n/**\n * Creates a date but allows the month and date to overflow.\n */\nfunction createDateWithOverflow(\n year: number,\n month: number,\n date: number,\n hours: number = 0,\n minutes: number = 0,\n seconds: number = 0\n): Date {\n const result = new Date(year, month, date, hours, minutes, seconds);\n\n if (year >= 0 && year < 100) {\n result.setFullYear(result.getFullYear() - 1900);\n }\n return result;\n}\n","/**\n * native-date-time-adapter.class\n */\n\nimport { Platform } from '@angular/cdk/platform';\nimport { inject, Injectable } from '@angular/core';\nimport { range } from '../../utils/array.utils';\nimport {\n DEFAULT_DATE_NAMES,\n DEFAULT_DAY_OF_WEEK_NAMES,\n DEFAULT_MONTH_NAMES,\n SUPPORTS_INTL_API\n} from '../../utils/constants';\nimport { createDate, getNumDaysInMonth } from '../../utils/date.utils';\nimport { DateTimeAdapter, OWL_DATE_TIME_LOCALE } from './date-time-adapter.class';\n\n/**\n * Matches strings that have the form of a valid RFC 3339 string\n * (https://tools.ietf.org/html/rfc3339). Note that the string may not actually be a valid date\n * because the regex will match strings an with out of bounds month, date, etc.\n */\nconst ISO_8601_REGEX = /^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|(?:[+-]\\d{2}:\\d{2}))?)?$/;\n\n@Injectable()\nexport class NativeDateTimeAdapter extends DateTimeAdapter<Date> {\n private readonly owlDateTimeLocale = inject(OWL_DATE_TIME_LOCALE, { optional: true });\n private readonly platform = inject(Platform);\n\n /** Whether to clamp the date between 1 and 9999 to avoid IE and Edge errors. */\n private readonly _clampDate: boolean;\n\n /**\n * Whether to use `timeZone: 'utc'` with `Intl.DateTimeFormat` when formatting dates.\n * Without this `Intl.DateTimeFormat` sometimes chooses the wrong timeZone, which can throw off\n * the result. (e.g. in the en-US locale `new Date(1800, 7, 14).toLocaleDateString()`\n * will produce `'8/13/1800'`.\n */\n public useUtcForDisplay: boolean;\n\n constructor() {\n super();\n super.setLocale(this.owlDateTimeLocale);\n\n // IE does its own time zone correction, so we disable this on IE.\n this.useUtcForDisplay = !this.platform.TRIDENT;\n this._clampDate = this.platform.TRIDENT || this.platform.EDGE;\n }\n\n public getYear(date: Date): number {\n return date.getFullYear();\n }\n\n public getMonth(date: Date): number {\n return date.getMonth();\n }\n\n public getDay(date: Date): number {\n return date.getDay();\n }\n\n public getDate(date: Date): number {\n return date.getDate();\n }\n\n public getHours(date: Date): number {\n return date.getHours();\n }\n\n public getMinutes(date: Date): number {\n return date.getMinutes();\n }\n\n public getSeconds(date: Date): number {\n return date.getSeconds();\n }\n\n public getTime(date: Date): number {\n return date.getTime();\n }\n\n public getNumDaysInMonth(date: Date): number {\n return getNumDaysInMonth(date);\n }\n\n public differenceInCalendarDays(dateLeft: Date, dateRight: Date): number {\n if (this.isValid(dateLeft) && this.isValid(dateRight)) {\n const dateLeftStartOfDay = this.createDate(\n this.getYear(dateLeft),\n this.getMonth(dateLeft),\n this.getDate(dateLeft)\n );\n const dateRightStartOfDay = this.createDate(\n this.getYear(dateRight),\n this.getMonth(dateRight),\n this.getDate(dateRight)\n );\n\n const timeStampLeft =\n this.getTime(dateLeftStartOfDay) - dateLeftStartOfDay.getTimezoneOffset() * this.milliseondsInMinute;\n const timeStampRight =\n this.getTime(dateRightStartOfDay) - dateRightStartOfDay.getTimezoneOffset() * this.milliseondsInMinute;\n return Math.round((timeStampLeft - timeStampRight) / this.millisecondsInDay);\n } else {\n return null;\n }\n }\n\n public getYearName(date: Date): string {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.getLocale(), {\n year: 'numeric',\n timeZone: 'utc'\n });\n return this.stripDirectionalityCharacters(this._format(dtf, date));\n }\n return String(this.getYear(date));\n }\n\n public getMonthNames(style: Intl.DateTimeFormatOptions['month']): Array<string> {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.getLocale(), { month: style, timeZone: 'utc' });\n return range(12, (i) => this.stripDirectionalityCharacters(this._format(dtf, new Date(2017, i, 1))));\n }\n return DEFAULT_MONTH_NAMES[style];\n }\n\n public getDayOfWeekNames(style: Intl.DateTimeFormatOptions['weekday']): Array<string> {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.getLocale(), { weekday: style, timeZone: 'utc' });\n return range(7, (i) => this.stripDirectionalityCharacters(this._format(dtf, new Date(2017, 0, i + 1))));\n }\n\n return DEFAULT_DAY_OF_WEEK_NAMES[style];\n }\n\n public getDateNames(): Array<string> {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.getLocale(), { day: 'numeric', timeZone: 'utc' });\n return range(31, (i) => this.stripDirectionalityCharacters(this._format(dtf, new Date(2017, 0, i + 1))));\n }\n return DEFAULT_DATE_NAMES;\n }\n\n public toIso8601(date: Date): string {\n return date.toISOString();\n }\n\n public isEqual(dateLeft: Date, dateRight: Date): boolean {\n if (this.isValid(dateLeft) && this.isValid(dateRight)) {\n return dateLeft.getTime() === dateRight.getTime();\n }\n return false;\n }\n\n public isSameDay(dateLeft: Date, dateRight: Date): boolean {\n if (this.isValid(dateLeft) && this.isValid(dateRight)) {\n const dateLeftStartOfDay = this.clone(dateLeft);\n const dateRightStartOfDay = this.clone(dateRight);\n dateLeftStartOfDay.setHours(0, 0, 0, 0);\n dateRightStartOfDay.setHours(0, 0, 0, 0);\n return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime();\n }\n return false;\n }\n\n public isValid(date: Date): boolean {\n return date && !isNaN(date.getTime());\n }\n\n public invalid(): Date {\n return new Date(NaN);\n }\n\n public isDateInstance(obj: unknown): obj is Date {\n return obj instanceof Date;\n }\n\n public addCalendarYears(date: Date, amount: number): Date {\n return this.addCalendarMonths(date, amount * 12);\n }\n\n public addCalendarMonths(date: Date, amount: number): Date {\n const result = this.clone(date);\n amount = Number(amount);\n\n const desiredMonth = result.getMonth() + amount;\n const dateWithDesiredMonth = new Date(0);\n dateWithDesiredMonth.setFullYear(result.getFullYear(), desiredMonth, 1);\n dateWithDesiredMonth.setHours(0, 0, 0, 0);\n\n const daysInMonth = this.getNumDaysInMonth(dateWithDesiredMonth);\n // Set the last day of the new month\n // if the original date was the last day of the longer month\n result.setMonth(desiredMonth, Math.min(daysInMonth, result.getDate()));\n return result;\n }\n\n public addCalendarDays(date: Date, amount: number): Date {\n const result = this.clone(date);\n amount = Number(amount);\n result.setDate(result.getDate() + amount);\n return result;\n }\n\n public setHours(date: Date, amount: number): Date {\n const result = this.clone(date);\n result.setHours(amount);\n return result;\n }\n\n public setMinutes(date: Date, amount: number): Date {\n const result = this.clone(date);\n result.setMinutes(amount);\n return result;\n }\n\n public setSeconds(date: Date, amount: number): Date {\n const result = this.clone(date);\n result.setSeconds(amount);\n return result;\n }\n\n public createDate(\n year: number,\n month: number,\n date: number,\n hours: number = 0,\n minutes: number = 0,\n seconds: number = 0\n ): Date {\n return createDate(year, month, date, hours, minutes, seconds);\n }\n\n public clone(date: Date): Date {\n return this.createDate(\n this.getYear(date),\n this.getMonth(date),\n this.getDate(date),\n this.getHours(date),\n this.getMinutes(date),\n this.getSeconds(date)\n );\n }\n\n public now(): Date {\n return new Date();\n }\n\n public format(date: Date, displayFormat: Intl.DateTimeFormatOptions): string {\n if (!this.isValid(date)) {\n throw Error('JSNativeDate: Cannot format invalid date.');\n }\n\n if (SUPPORTS_INTL_API) {\n if (this._clampDate && (date.getFullYear() < 1 || date.getFullYear() > 9999)) {\n date = this.clone(date);\n date.setFullYear(Math.max(1, Math.min(9999, date.getFullYear())));\n }\n\n displayFormat = { ...displayFormat, timeZone: 'utc' };\n const dtf = new Intl.DateTimeFormat(this.getLocale(), displayFormat);\n return this.stripDirectionalityCharacters(this._format(dtf, date));\n }\n\n return this.stripDirectionalityCharacters(date.toDateString());\n }\n\n public parse(value: number | string): Date | null {\n // There is no way using the native JS Date to set the parse format or locale\n if (typeof value === 'number') {\n return new Date(value);\n }\n return value ? new Date(Date.parse(value)) : null;\n }\n\n /**\n * Returns the given value if given a valid Date or null. Deserializes valid ISO 8601 strings\n * (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into null. Returns an\n * invalid date for all other values.\n */\n public override deserialize(value: Date | null): Date | null {\n if (typeof value === 'string') {\n if (!value) {\n return null;\n }\n // The `Date` constructor accepts formats other than ISO 8601, so we need to make sure the\n // string is the right format first.\n if (ISO_8601_REGEX.test(value)) {\n const date = new Date(value);\n if (this.isValid(date)) {\n return date;\n }\n }\n }\n return super.deserialize(value);\n }\n\n /**\n * Strip out unicode LTR and RTL characters. Edge and IE insert these into formatted dates while\n * other browsers do not. We remove them to make output consistent and because they interfere with\n * date parsing.\n */\n private stripDirectionalityCharacters(str: string): string {\n return str.replace(/[\\u200e\\u200f]/g, '');\n }\n\n /**\n * When converting Date object to string, javascript built-in functions may return wrong\n * results because it applies its internal DST rules. The DST rules around the world change\n * very frequently, and the current valid rule is not always valid in previous years though.\n * We work around this problem building a new Date object which has its internal UTC\n * representation with the local date and time.\n */\n private _format(dtf: Intl.DateTimeFormat, date: Date): string {\n const d = new Date(\n Date.UTC(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds()\n )\n );\n return dtf.format(d);\n }\n}\n","/**\n * native-date-time-format.class\n */\nimport { OwlDateTimeFormats } from './date-time-format.class';\n\nexport const OWL_NATIVE_DATE_TIME_FORMATS: OwlDateTimeFormats = {\n fullPickerInput: {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric'\n },\n datePickerInput: { year: 'numeric', month: 'numeric', day: 'numeric' },\n timePickerInput: { hour: 'numeric', minute: 'numeric' },\n monthYearLabel: { year: 'numeric', month: 'short' },\n dateA11yLabel: { year: 'numeric', month: 'long', day: 'numeric' },\n monthYearA11yLabel: { year: 'numeric', month: 'long' }\n};\n","/**\n * native-date-time.module\n */\n\nimport { PlatformModule } from '@angular/cdk/platform';\nimport { NgModule } from '@angular/core';\nimport { DateTimeAdapter } from './date-time-adapter.class';\nimport { OWL_DATE_TIME_FORMATS } from './date-time-format.class';\nimport { NativeDateTimeAdapter } from './native-date-time-adapter.class';\nimport { OWL_NATIVE_DATE_TIME_FORMATS } from './native-date-time-format.class';\n\n@NgModule({\n imports: [PlatformModule],\n providers: [{ provide: DateTimeAdapter, useClass: NativeDateTimeAdapter }]\n})\nexport class NativeDateTimeModule {}\n\n@NgModule({\n imports: [NativeDateTimeModule],\n providers: [\n {\n provide: OWL_DATE_TIME_FORMATS,\n useValue: OWL_NATIVE_DATE_TIME_FORMATS\n }\n ]\n})\nexport class OwlNativeDateTimeModule {}\n","import { ChangeDetectionStrategy, Component, ElementRef, inject, Input, NgZone, output } from '@angular/core';\nimport { take } from 'rxjs/operators';\nimport { SelectMode } from './date-time.class';\n\nexport class CalendarCell {\n constructor(\n public value: number,\n public displayValue: string,\n public ariaLabel: string,\n public enabled: boolean,\n public out: boolean = false,\n public cellClass: string = ''\n ) {}\n}\n\n@Component({\n standalone: false,\n selector: '[owl-date-time-calendar-body]',\n exportAs: 'owlDateTimeCalendarBody',\n templateUrl: './calendar-body.component.html',\n host: { 'class': 'owl-dt-calendar-body' },\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OwlCalendarBodyComponent {\n private readonly elmRef = inject(ElementRef);\n private readonly ngZone = inject(NgZone);\n\n /**\n * The cell number of the active cell in the table.\n */\n @Input()\n public activeCell = 0;\n\n /**\n * The cells to display in the table.\n */\n @Input()\n public rows: Array<Array<CalendarCell>>;\n\n /**\n * The number of columns in the table.\n */\n @Input()\n public numCols = 7;\n\n /**\n * The ratio (width / height) to use for the cells in the table.\n */\n @Input()\n public cellRatio = 1;\n\n /**\n * The value in the table that corresponds to today.\n */\n @Input()\n public todayValue: number;\n\n /**\n * The value in the table that is currently selected.\n */\n @Input()\n public selectedValues: Array<number>;\n\n /**\n * Current picker select mode\n */\n @Input()\n public selectMode: SelectMode;\n\n /**\n * Emit when a calendar cell is selected\n */\n public readonly selectCell = output<CalendarCell>();\n\n protected handleSelect(cell: CalendarCell): void {\n this.selectCell.emit(cell);\n }\n\n protected get isInSingleMode(): boolean {\n return this.selectMode === 'single';\n }\n\n protected get isInRangeMode(): boolean {\n return this.selectMode === 'range' || this.selectMode === 'rangeFrom' || this.selectMode === 'rangeTo';\n }\n\n public isActiveCell(rowIndex: number, colIndex: number): boolean {\n const cellNumber = rowIndex * this.numCols + colIndex;\n return cellNumber === this.activeCell;\n }\n\n /**\n * Check if the cell is selected\n */\n public isSelected(value: number): boolean {\n if (!this.selectedValues || this.selectedValues.length === 0) {\n return false;\n }\n\n if (this.isInSingleMode) {\n return value === this.selectedValues[0];\n }\n\n if (this.isInRangeMode) {\n const fromValue = this.selectedValues[0];\n const toValue = this.selectedValues[1];\n\n return value === fromValue || value === toValue;\n }\n\n return false;\n }\n\n /**\n * Check if the cell in the range\n */\n public isInRange(value: number): boolean {\n if (this.isInRangeMode) {\n const fromValue = this.selectedValues[0];\n const toValue = this.selectedValues[1];\n\n if (fromValue !== null && toValue !== null) {\n return value >= fromValue && value <= toValue;\n } else {\n return value === fromValue || value === toValue;\n }\n }\n return false;\n }\n\n /**\n * Check if the cell is the range from\n */\n public isRangeFrom(value: number): boolean {\n if (this.isInRangeMode) {\n const fromValue = this.selectedValues[0];\n return fromValue !== null && value === fromValue;\n }\n return false;\n }\n\n /**\n * Check if the cell is the range to\n */\n public isRangeTo(value: number): boolean {\n if (this.isInRangeMode) {\n const toValue = this.selectedValues[1];\n return toValue !== null && value === toValue;\n }\n return false;\n }\n\n /**\n * Focus to a active cell\n */\n public focusActiveCell(): void {\n this.ngZone.runOutsideAngular(() => {\n this.ngZone.onStable\n .asObservable()\n .pipe(take(1))\n .subscribe(() => {\n this.elmRef.nativeElement.querySelector('.owl-dt-calendar-cell-active').focus();\n });\n });\n }\n}\n","@for (row of rows; track rowIndex; let rowIndex = $index) {\n <tr role=\"row\">\n @for (item of row; track colIndex; let colIndex = $index) {\n <td\n [attr.aria-current]=\"item.value === todayValue ? 'date' : null\"\n [attr.aria-disabled]=\"!item.enabled || null\"\n [attr.aria-label]=\"item.ariaLabel\"\n [attr.aria-selected]=\"isSelected(item.value)\"\n [class]=\"item.cellClass\"\n [class.owl-dt-calendar-cell-active]=\"isActiveCell(rowIndex, colIndex)\"\n [class.owl-dt-calendar-cell-disabled]=\"!item.enabled\"\n [class.owl-dt-calendar-cell-in-range]=\"isInRange(item.value)\"\n [class.owl-dt-calendar-cell-range-from]=\"isRangeFrom(item.value)\"\n [class.owl-dt-calendar-cell-range-to]=\"isRangeTo(item.value)\"\n [style.paddingBottom.%]=\"(50 * cellRatio) / numCols\"\n [style.paddingTop.%]=\"(50 * cellRatio) / numCols\"\n [style.width.%]=\"100 / numCols\"\n [tabindex]=\"isActiveCell(rowIndex, colIndex) ? 0 : -1\"\n (click)=\"handleSelect(item)\"\n class=\"owl-dt-calendar-cell\">\n <span\n [class.owl-dt-calendar-cell-out]=\"item.out\"\n [class.owl-dt-calendar-cell-selected]=\"isSelected(item.value)\"\n [class.owl-dt-calendar-cell-today]=\"item.value === todayValue\"\n class=\"owl-dt-calendar-cell-content\">\n {{ item.displayValue }}\n </span>\n </td>\n }\n </tr>\n}\n","import {\n DOWN_ARROW,\n END,\n ENTER,\n HOME,\n LEFT_ARROW,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n UP_ARROW\n} from '@angular/cdk/keycodes';\nimport { getLocaleFirstDayOfWeek } from '@angular/common';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnDestroy,\n OnInit,\n ViewChild,\n inject,\n output\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport { OWL_DATE_TIME_FORMATS } from './adapter/date-time-format.class';\nimport { CalendarCell, OwlCalendarBodyComponent } from './calendar-body.component';\nimport { SelectMode } from './date-time.class';\n\nconst DAYS_PER_WEEK = 7;\nconst WEEKS_PER_VIEW = 6;\n\n@Component({\n standalone: false,\n selector: 'owl-date-time-month-view',\n exportAs: 'owlYearView',\n templateUrl: './calendar-month-view.component.html',\n host: { 'class': 'owl-dt-calendar-view' },\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OwlMonthViewComponent<T> implements OnInit, AfterContentInit, OnDestroy {\n private readonly cdRef = inject(ChangeDetectorRef);\n private readonly dateTimeAdapter = inject(DateTimeAdapter<T>, { optional: true });\n private readonly dateTimeFormats = inject(OWL_DATE_TIME_FORMATS, { optional: true });\n\n /**\n * Whether to hide dates in other months at the start or end of the current month.\n */\n @Input()\n public hideOtherMonths = false;\n\n private isDefaultFirstDayOfWeek = true;\n\n /**\n * Define the first day of a week\n * Sunday: 0 - Saturday: 6\n */\n private _firstDayOfWeek: number;\n\n @Input()\n public get firstDayOfWeek(): number {\n return this._firstDayOfWeek;\n }\n\n public set firstDayOfWeek(val: number) {\n if (val >= 0 && val <= 6 && val !== this._firstDayOfWeek) {\n this._firstDayOfWeek = val;\n this.isDefaultFirstDayOfWeek = false;\n\n if (this.initiated) {\n this.generateWeekDays();\n this.generateCalendar();\n this.cdRef.markForCheck();\n }\n }\n }\n\n /**\n * The select mode of the picker;\n */\n private _selectMode: SelectMode = 'single';\n @Input()\n public get selectMode(): SelectMode {\n return this._selectMode;\n }\n\n public set selectMode(val: SelectMode) {\n this._selectMode = val;\n if (this.initiated) {\n this.generateCalendar();\n this.cdRef.markForCheck();\n }\n }\n\n /** The currently selected date. */\n private _selected: T | null;\n @Input()\n public get selected(): T | null {\n return this._selected;\n }\n\n public set selected(value: T | null) {\n const oldSelected = this._selected;\n value = this.dateTimeAdapter.deserialize(value);\n this._selected = this.getValidDate(value);\n\n if (!this.dateTimeAdapter.isSameDay(oldSelected, this._selected)) {\n this.setSelectedDates();\n }\n }\n\n private _selecteds: Array<T> = [];\n @Input()\n public get selecteds(): Array<T> {\n return this._selecteds;\n }\n\n public set selecteds(values: Array<T>) {\n this._selecteds = values.map((v) => {\n v = this.dateTimeAdapter.deserialize(v);\n return this.getValidDate(v);\n });\n this.setSelectedDates();\n }\n\n private _pickerMoment: T;\n @Input()\n public get pickerMoment(): T {\n return this._pickerMoment;\n }\n\n public set pickerMoment(value: T) {\n const oldMoment = this._pickerMoment;\n value = this.dateTimeAdapter.deserialize(value);\n this._pickerMoment = this.getValidDate(value) || this.dateTimeAdapter.now();\n\n this.firstDateOfMonth = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(this._pickerMoment),\n this.dateTimeAdapter.getMonth(this._pickerMoment),\n 1\n );\n\n if (!this.isSameMonth(oldMoment, this._pickerMoment) && this.initiated) {\n this.generateCalendar();\n }\n }\n\n /**\n * A function used to filter which dates are selectable\n */\n private _dateFilter: (date: T) => boolean;\n @Input()\n public get dateFilter(): (date: T) => boolean {\n return this._dateFilter;\n }\n\n public set dateFilter(filter: (date: T) => boolean) {\n this._dateFilter = filter;\n if (this.initiated) {\n this.generateCalendar();\n this.cdRef.markForCheck();\n }\n }\n\n /** The minimum selectable date. */\n private _minDate: T | null;\n @Input()\n public get minDate(): T | null {\n return this._minDate;\n }\n\n public set minDate(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._minDate = this.getValidDate(value);\n if (this.initiated) {\n this.generateCalendar();\n this.cdRef.markForCheck();\n }\n }\n\n /** The maximum selectable date. */\n private _maxDate: T | null;\n @Input()\n public get maxDate(): T | null {\n return this._maxDate;\n }\n\n public set maxDate(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._maxDate = this.getValidDate(value);\n\n if (this.initiated) {\n this.generateCalendar();\n this.cdRef.markForCheck();\n }\n }\n\n private _weekdays: Array<Record<Intl.DateTimeFormatOptions['weekday'], string>>;\n get weekdays(): Array<Record<Intl.DateTimeFormatOptions['weekday'], string>> {\n return this._weekdays;\n }\n\n private _days: Array<Array<CalendarCell>>;\n get days(): Array<Array<CalendarCell>> {\n return this._days;\n }\n\n get activeCell(): number {\n if (this.pickerMoment) {\n return this.dateTimeAdapter.getDate(this.pickerMoment) + this.firstRowOffset - 1;\n }\n return undefined;\n }\n\n get isInSingleMode(): boolean {\n return this.selectMode === 'single';\n }\n\n get isInRangeMode(): boolean {\n return this.selectMode === 'range' || this.selectMode === 'rangeFrom' || this.selectMode === 'rangeTo';\n }\n\n private firstDateOfMonth: T;\n\n private localeSub: Subscription = Subscription.EMPTY;\n\n private initiated = false;\n\n private dateNames: Array<string>;\n\n /**\n * The date of the month that today falls on.\n */\n public todayDate: number | null;\n\n /**\n * An array to hold all selectedDates' value\n * the value is the day number in current month\n */\n public selectedDates: Array<number> = [];\n\n // the index of cell that contains the first date of the month\n public firstRowOffset: number;\n\n /**\n * Callback to invoke when a new date is selected\n */\n public readonly selectedChange = output<T | null>();\n\n /**\n * Callback to invoke when any date is selected.\n */\n public readonly userSelection = output<void>();\n\n /** Emits when any date is activated. */\n public readonly pickerMomentChange = output<T>();\n\n /** The body of calendar table */\n @ViewChild(OwlCalendarBodyComponent, { static: true })\n calendarBodyElm: OwlCalendarBodyComponent;\n\n public ngOnInit(): void {\n this.updateFirstDayOfWeek(this.dateTimeAdapter.getLocale());\n this.generateWeekDays();\n\n this.localeSub = this.dateTimeAdapter.localeChanges.subscribe((locale) => {\n this.updateFirstDayOfWeek(locale);\n this.generateWeekDays();\n this.generateCalendar();\n this.cdRef.markForCheck();\n });\n }\n\n public ngAfterContentInit(): void {\n this.generateCalendar();\n this.initiated = true;\n }\n\n public ngOnDestroy(): void {\n this.localeSub.unsubscribe();\n }\n\n /**\n * Handle a calendarCell selected\n */\n public selectCalendarCell(cell: CalendarCell): void {\n // Cases in which the date would not be selected\n // 1, the calendar cell is NOT enabled (is NOT valid)\n // 2, the selected date is NOT in current picker's month and the hideOtherMonths is enabled\n if (!cell.enabled || (this.hideOtherMonths && cell.out)) {\n return;\n }\n\n this.selectDate(cell.value);\n }\n\n /**\n * Handle a new date selected\n */\n private selectDate(date: number): void {\n const daysDiff = date - 1;\n const selected = this.dateTimeAdapter.addCalendarDays(this.firstDateOfMonth, daysDiff);\n\n this.selectedChange.emit(selected);\n this.userSelection.emit();\n }\n\n /**\n * Handle keydown event on calendar body\n */\n public handleCalendarKeydown(event: KeyboardEvent): void {\n let moment;\n switch (event.keyCode) {\n // minus 1 day\n case LEFT_ARROW:\n moment = this.dateTimeAdapter.addCalendarDays(this.pickerMoment, -1);\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 1 day\n case RIGHT_ARROW:\n moment = this.dateTimeAdapter.addCalendarDays(this.pickerMoment, 1);\n this.pickerMomentChange.emit(moment);\n break;\n\n // minus 1 week\n case UP_ARROW:\n moment = this.dateTimeAdapter.addCalendarDays(this.pickerMoment, -7);\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 1 week\n case DOWN_ARROW:\n moment = this.dateTimeAdapter.addCalendarDays(this.pickerMoment, 7);\n this.pickerMomentChange.emit(moment);\n break;\n\n // move to first day of current month\n case HOME:\n moment = this.dateTimeAdapter.addCalendarDays(\n this.pickerMoment,\n 1 - this.dateTimeAdapter.getDate(this.pickerMoment)\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // move to last day of current month\n case END:\n moment = this.dateTimeAdapter.addCalendarDays(\n this.pickerMoment,\n this.dateTimeAdapter.getNumDaysInMonth(this.pickerMoment) - this.dateTimeAdapter.getDate(this.pickerMoment)\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // minus 1 month (or 1 year)\n case PAGE_UP:\n moment =\n event.altKey ?\n this.dateTimeAdapter.addCalendarYears(this.pickerMoment, -1)\n : this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, -1);\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 1 month (or 1 year)\n case PAGE_DOWN:\n moment =\n event.altKey ?\n this.dateTimeAdapter.addCalendarYears(this.pickerMoment, 1)\n : this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, 1);\n this.pickerMomentChange.emit(moment);\n break;\n\n // select the pickerMoment\n case ENTER:\n if (!this.dateFilter || this.dateFilter(this.pickerMoment)) {\n this.selectDate(this.dateTimeAdapter.getDate(this.pickerMoment));\n }\n break;\n default:\n return;\n }\n\n this.focusActiveCell();\n event.preventDefault();\n }\n\n /**\n * Generate the calendar weekdays array\n */\n private generateWeekDays(): void {\n const longWeekdays = this.dateTimeAdapter.getDayOfWeekNames('long');\n const shortWeekdays = this.dateTimeAdapter.getDayOfWeekNames('short');\n const narrowWeekdays = this.dateTimeAdapter.getDayOfWeekNames('narrow');\n const firstDayOfWeek = this.firstDayOfWeek;\n\n const weekdays = longWeekdays.map((long, i) => {\n return { long, short: shortWeekdays[i], narrow: narrowWeekdays[i] };\n });\n\n this._weekdays = weekdays.slice(firstDayOfWeek).concat(weekdays.slice(0, firstDayOfWeek));\n\n this.dateNames = this.dateTimeAdapter.getDateNames();\n\n return;\n }\n\n /**\n * Generate the calendar days array\n */\n private generateCalendar(): void {\n if (!this.pickerMoment) {\n return;\n }\n\n this.todayDate = null;\n\n // the first weekday of the month\n const startWeekdayOfMonth = this.dateTimeAdapter.getDay(this.firstDateOfMonth);\n const firstDayOfWeek = this.firstDayOfWeek;\n\n // the amount of days from the first date of the month\n // if it is < 0, it means the date is in previous month\n let daysDiff = 0 - ((startWeekdayOfMonth + (DAYS_PER_WEEK - firstDayOfWeek)) % DAYS_PER_WEEK);\n\n // the index of cell that contains the first date of the month\n this.firstRowOffset = Math.abs(daysDiff);\n\n this._days = [];\n for (let i = 0; i < WEEKS_PER_VIEW; i++) {\n const week = [];\n for (let j = 0; j < DAYS_PER_WEEK; j++) {\n const date = this.dateTimeAdapter.addCalendarDays(this.firstDateOfMonth, daysDiff);\n const dateCell = this.createDateCell(date, daysDiff);\n\n // check if the date is today\n if (this.dateTimeAdapter.isSameDay(this.dateTimeAdapter.now(), date)) {\n this.todayDate = daysDiff + 1;\n }\n\n week.push(dateCell);\n daysDiff += 1;\n }\n this._days.push(week);\n }\n\n this.setSelectedDates();\n }\n\n private updateFirstDayOfWeek(locale: string): void {\n if (this.isDefaultFirstDayOfWeek) {\n try {\n this._firstDayOfWeek = getLocaleFirstDayOfWeek(locale);\n } catch {\n this._firstDayOfWeek = 0;\n }\n }\n }\n\n /**\n * Creates CalendarCell for days.\n */\n private createDateCell(date: T, daysDiff: number): CalendarCell {\n // total days of the month\n const daysInMonth = this.dateTimeAdapter.getNumDaysInMonth(this.pickerMoment);\n const dateNum = this.dateTimeAdapter.getDate(date);\n // const dateName = this.dateNames[dateNum - 1];\n const dateName = dateNum.toString();\n const ariaLabel = this.dateTimeAdapter.format(date, this.dateTimeFormats.dateA11yLabel);\n\n // check if the date if selectable\n const enabled = this.isDateEnabled(date);\n\n // check if date is not in current month\n const dayValue = daysDiff + 1;\n const out = dayValue < 1 || dayValue > daysInMonth;\n const cellClass = `owl-dt-day-${this.dateTimeAdapter.getDay(date)}`;\n\n return new CalendarCell(dayValue, dateName, ariaLabel, enabled, out, cellClass);\n }\n\n /**\n * Check if the date is valid\n */\n private isDateEnabled(date: T): boolean {\n return (\n !!date &&\n (!this.dateFilter || this.dateFilter(date)) &&\n (!this.minDate || this.dateTimeAdapter.compare(date, this.minDate) >= 0) &&\n (!this.maxDate || this.dateTimeAdapter.compare(date, this.maxDate) <= 0)\n );\n }\n\n /**\n * Get a valid date object\n */\n private getValidDate(obj: any): T | null {\n return this.dateTimeAdapter.isDateInstance(obj) && this.dateTimeAdapter.isValid(obj) ? obj : null;\n }\n\n /**\n * Check if the give dates are none-null and in the same month\n */\n public isSameMonth(dateLeft: T, dateRight: T): boolean {\n return !!(\n dateLeft &&\n dateRight &&\n this.dateTimeAdapter.isValid(dateLeft) &&\n this.dateTimeAdapter.isValid(dateRight) &&\n this.dateTimeAdapter.getYear(dateLeft) === this.dateTimeAdapter.getYear(dateRight) &&\n this.dateTimeAdapter.getMonth(dateLeft) === this.dateTimeAdapter.getMonth(dateRight)\n );\n }\n\n /**\n * Set the selectedDates value.\n * In single mode, it has only one value which represent the selected date\n * In range mode, it would has two values, one for the fromValue and the other for the toValue\n */\n private setSelectedDates(): void {\n this.selectedDates = [];\n\n if (!this.firstDateOfMonth) {\n return;\n }\n\n if (this.isInSingleMode && this.selected) {\n const dayDiff = this.dateTimeAdapter.differenceInCalendarDays(this.selected, this.firstDateOfMonth);\n this.selectedDates[0] = dayDiff + 1;\n return;\n }\n\n if (this.isInRangeMode && this.selecteds) {\n this.selectedDates = this.selecteds.map((selected) => {\n if (this.dateTimeAdapter.isValid(selected)) {\n const dayDiff = this.dateTimeAdapter.differenceInCalendarDays(selected, this.firstDateOfMonth);\n return dayDiff + 1;\n } else {\n return null;\n }\n });\n }\n }\n\n private focusActiveCell(): void {\n this.calendarBodyElm.focusActiveCell();\n }\n}\n","<table\n [class.owl-dt-calendar-only-current-month]=\"hideOtherMonths\"\n class=\"owl-dt-calendar-table owl-dt-calendar-month-table\">\n <thead class=\"owl-dt-calendar-header\">\n <tr class=\"owl-dt-weekdays\">\n @for (weekday of weekdays; track weekday.short) {\n <th\n [attr.aria-label]=\"weekday.long\"\n class=\"owl-dt-weekday\"\n scope=\"col\">\n <span>{{ weekday.short }}</span>\n </th>\n }\n </tr>\n <tr>\n <th\n aria-hidden=\"true\"\n class=\"owl-dt-calendar-table-divider\"\n colspan=\"7\"></th>\n </tr>\n </thead>\n <tbody\n [activeCell]=\"activeCell\"\n [rows]=\"days\"\n [selectMode]=\"selectMode\"\n [selectedValues]=\"selectedDates\"\n [todayValue]=\"todayDate\"\n (keydown)=\"handleCalendarKeydown($event)\"\n (selectCell)=\"selectCalendarCell($event)\"\n owl-date-time-calendar-body\n role=\"grid\"></tbody>\n</table>\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class OwlDateTimeIntl {\n /**\n * Stream that emits whenever the labels here are changed. Use this to notify\n * components if the labels have changed after initialization.\n */\n public readonly changes: Subject<void> = new Subject<void>();\n\n /** A label for the up second button (used by screen readers). */\n public upSecondLabel = 'Add a second';\n\n /** A label for the down second button (used by screen readers). */\n public downSecondLabel = 'Minus a second';\n\n /** A label for the up minute button (used by screen readers). */\n public upMinuteLabel = 'Add a minute';\n\n /** A label for the down minute button (used by screen readers). */\n public downMinuteLabel = 'Minus a minute';\n\n /** A label for the up hour button (used by screen readers). */\n public upHourLabel = 'Add a hour';\n\n /** A label for the down hour button (used by screen readers). */\n public downHourLabel = 'Minus a hour';\n\n /** A label for the previous month button (used by screen readers). */\n public prevMonthLabel = 'Previous month';\n\n /** A label for the next month button (used by screen readers). */\n public nextMonthLabel = 'Next month';\n\n /** A label for the previous year button (used by screen readers). */\n public prevYearLabel = 'Previous year';\n\n /** A label for the next year button (used by screen readers). */\n public nextYearLabel = 'Next year';\n\n /** A label for the previous multi-year button (used by screen readers). */\n public prevMultiYearLabel = 'Previous 21 years';\n\n /** A label for the next multi-year button (used by screen readers). */\n public nextMultiYearLabel = 'Next 21 years';\n\n /** A label for the 'switch to month view' button (used by screen readers). */\n public switchToMonthViewLabel = 'Change to month view';\n\n /** A label for the 'switch to year view' button (used by screen readers). */\n public switchToMultiYearViewLabel = 'Choose month and year';\n\n /** A label for the range 'from' in picker info */\n public rangeFromLabel = 'From';\n\n /** A label for the range 'to' in picker info */\n public rangeToLabel = 'To';\n\n /** A label for the hour12 button (AM) */\n public hour12AMLabel = 'AM';\n\n /** A label for the hour12 button (PM) */\n public hour12PMLabel = 'PM';\n\n /** A label for the today button */\n public todayButtonLabel = 'Today';\n}\n","import { InjectionToken, Provider } from '@angular/core';\n\nexport function defaultOptionsFactory(): Options {\n return DefaultOptions.create();\n}\n\nexport function multiYearOptionsFactory(options: Options): Options['multiYear'] {\n return options.multiYear;\n}\n\nexport type Options = {\n multiYear: {\n yearsPerRow: number;\n yearRows: number;\n };\n};\n\nexport class DefaultOptions {\n public static create(): Options {\n // Always return new instance\n return {\n multiYear: {\n yearRows: 7,\n yearsPerRow: 3\n }\n };\n }\n}\n\nexport abstract class OptionsTokens {\n public static all = new InjectionToken<Options>('All options token');\n}\n\nexport const optionsProviders: Array<Provider> = [\n {\n provide: OptionsTokens.all,\n useFactory: defaultOptionsFactory\n }\n];\n","import {\n DOWN_ARROW,\n END,\n ENTER,\n HOME,\n LEFT_ARROW,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n UP_ARROW\n} from '@angular/cdk/keycodes';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n inject,\n output,\n viewChild\n} from '@angular/core';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport { CalendarCell, OwlCalendarBodyComponent } from './calendar-body.component';\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\nimport { SelectMode } from './date-time.class';\nimport { OptionsTokens } from './options-provider';\n\n@Component({\n standalone: false,\n selector: 'owl-date-time-multi-year-view',\n templateUrl: './calendar-multi-year-view.component.html',\n host: { 'class': 'owl-dt-calendar-view owl-dt-calendar-multi-year-view' },\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OwlMultiYearViewComponent<T> implements AfterContentInit {\n private readonly cdRef = inject(ChangeDetectorRef);\n private readonly pickerIntl = inject(OwlDateTimeIntl);\n private readonly dateTimeAdapter = inject(DateTimeAdapter<T>, { optional: true });\n private readonly options = inject(OptionsTokens.all);\n\n /**\n * The select mode of the picker;\n */\n private _selectMode: SelectMode = 'single';\n @Input()\n public get selectMode(): SelectMode {\n return this._selectMode;\n }\n\n public set selectMode(val: SelectMode) {\n this._selectMode = val;\n if (this.initiated) {\n this.setSelectedYears();\n this.cdRef.markForCheck();\n }\n }\n\n /** The currently selected date. */\n private _selected: T | null;\n @Input()\n public get selected(): T | null {\n return this._selected;\n }\n\n public set selected(value: T | null) {\n const oldSelected = this._selected;\n value = this.dateTimeAdapter.deserialize(value);\n this._selected = this.getValidDate(value);\n\n if (!this.dateTimeAdapter.isSameDay(oldSelected, this._selected)) {\n this.setSelectedYears();\n }\n }\n\n private _selecteds: Array<T> = [];\n @Input()\n public get selecteds(): Array<T> {\n return this._selecteds;\n }\n\n public set selecteds(values: Array<T>) {\n this._selecteds = values.map((v) => {\n v = this.dateTimeAdapter.deserialize(v);\n return this.getValidDate(v);\n });\n this.setSelectedYears();\n }\n\n private _pickerMoment: T | null;\n @Input()\n public get pickerMoment(): T | null {\n return this._pickerMoment;\n }\n\n public set pickerMoment(value: T) {\n const oldMoment = this._pickerMoment;\n value = this.dateTimeAdapter.deserialize(value);\n this._pickerMoment = this.getValidDate(value) || this.dateTimeAdapter.now();\n\n if (oldMoment && this._pickerMoment && !this.isSameYearList(oldMoment, this._pickerMoment)) {\n this.generateYearList();\n }\n }\n\n /**\n * A function used to filter which dates are selectable\n */\n private _dateFilter: (date: T) => boolean;\n @Input()\n public get dateFilter(): (date: T) => boolean {\n return this._dateFilter;\n }\n\n public set dateFilter(filter: (date: T) => boolean) {\n this._dateFilter = filter;\n if (this.initiated) {\n this.generateYearList();\n }\n }\n\n /** The minimum selectable date. */\n private _minDate: T | null;\n @Input()\n public get minDate(): T | null {\n return this._minDate;\n }\n\n public set minDate(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._minDate = this.getValidDate(value);\n if (this.initiated) {\n this.generateYearList();\n }\n }\n\n /** The maximum selectable date. */\n private _maxDate: T | null;\n @Input()\n public get maxDate(): T | null {\n return this._maxDate;\n }\n\n public set maxDate(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._maxDate = this.getValidDate(value);\n if (this.initiated) {\n this.generateYearList();\n }\n }\n\n private _todayYear: number;\n protected get todayYear(): number {\n return this._todayYear;\n }\n\n private _years: Array<Array<CalendarCell>>;\n protected get years(): Array<Array<CalendarCell>> {\n return this._years;\n }\n\n private _selectedYears: Array<number>;\n protected get selectedYears(): Array<number> {\n return this._selectedYears;\n }\n\n private initiated = false;\n\n protected get isInSingleMode(): boolean {\n return this.selectMode === 'single';\n }\n\n protected get isInRangeMode(): boolean {\n return this.selectMode === 'range' || this.selectMode === 'rangeFrom' || this.selectMode === 'rangeTo';\n }\n\n protected get activeCell(): number | undefined {\n if (this._pickerMoment) {\n return (\n this.dateTimeAdapter.getYear(this._pickerMoment) %\n (this.options.multiYear.yearsPerRow * this.options.multiYear.yearRows)\n );\n }\n return undefined;\n }\n\n protected get tableHeader(): string | undefined {\n if (this._years && this._years.length > 0) {\n return `${this._years[0][0].displayValue} - ${this._years[this.options.multiYear.yearRows - 1][this.options.multiYear.yearsPerRow - 1].displayValue}`;\n }\n return undefined;\n }\n\n protected get prevButtonLabel(): string {\n return this.pickerIntl.prevMultiYearLabel;\n }\n\n protected get nextButtonLabel(): string {\n return this.pickerIntl.nextMultiYearLabel;\n }\n\n /**\n * Callback to invoke when a new month is selected\n */\n public readonly changeYear = output<T>();\n\n /**\n * Emits the selected year. This doesn't imply a change on the selected date\n */\n public readonly yearSelected = output<T>();\n\n /** Emits when any date is activated. */\n public readonly pickerMomentChange = output<T>();\n\n /** Emits when use keyboard enter to select a calendar cell */\n public readonly keyboardEnter = output<void>();\n\n /** The body of calendar table */\n protected readonly calendarBodyElm = viewChild(OwlCalendarBodyComponent);\n\n public ngAfterContentInit(): void {\n this._todayYear = this.dateTimeAdapter.getYear(this.dateTimeAdapter.now());\n this.generateYearList();\n this.initiated = true;\n }\n\n /**\n * Handle a calendarCell selected\n */\n public selectCalendarCell(cell: CalendarCell): void {\n this.selectYear(cell.value);\n }\n\n private selectYear(year: number): void {\n this.yearSelected.emit(this.dateTimeAdapter.createDate(year, 0, 1));\n const firstDateOfMonth = this.dateTimeAdapter.createDate(year, this.dateTimeAdapter.getMonth(this.pickerMoment), 1);\n const daysInMonth = this.dateTimeAdapter.getNumDaysInMonth(firstDateOfMonth);\n const selected = this.dateTimeAdapter.createDate(\n year,\n this.dateTimeAdapter.getMonth(this.pickerMoment),\n Math.min(daysInMonth, this.dateTimeAdapter.getDate(this.pickerMoment)),\n this.dateTimeAdapter.getHours(this.pickerMoment),\n this.dateTimeAdapter.getMinutes(this.pickerMoment),\n this.dateTimeAdapter.getSeconds(this.pickerMoment)\n );\n\n this.changeYear.emit(selected);\n }\n\n /**\n * Generate the previous year list\n */\n public prevYearList(event: Event): void {\n this._pickerMoment = this.dateTimeAdapter.addCalendarYears(\n this.pickerMoment,\n -1 * this.options.multiYear.yearsPerRow * this.options.multiYear.yearRows\n );\n this.generateYearList();\n event.preventDefault();\n }\n\n /**\n * Generate the next year list\n */\n public nextYearList(event: Event): void {\n this._pickerMoment = this.dateTimeAdapter.addCalendarYears(\n this.pickerMoment,\n this.options.multiYear.yearsPerRow * this.options.multiYear.yearRows\n );\n this.generateYearList();\n event.preventDefault();\n }\n\n public generateYearList(): void {\n this._years = [];\n\n const pickerMomentYear = this.dateTimeAdapter.getYear(this._pickerMoment);\n const offset = pickerMomentYear % (this.options.multiYear.yearsPerRow * this.options.multiYear.yearRows);\n\n for (let i = 0; i < this.options.multiYear.yearRows; i++) {\n const row = [];\n\n for (let j = 0; j < this.options.multiYear.yearsPerRow; j++) {\n const year = pickerMomentYear - offset + (j + i * this.options.multiYear.yearsPerRow);\n const yearCell = this.createYearCell(year);\n row.push(yearCell);\n }\n\n this._years.push(row);\n }\n\n return;\n }\n\n /** Whether the previous period button is enabled. */\n public previousEnabled(): boolean {\n if (!this.minDate) {\n return true;\n }\n return !this.minDate || !this.isSameYearList(this._pickerMoment, this.minDate);\n }\n\n /** Whether the next period button is enabled. */\n public nextEnabled(): boolean {\n return !this.maxDate || !this.isSameYearList(this._pickerMoment, this.maxDate);\n }\n\n public handleCalendarKeydown(event: KeyboardEvent): void {\n let moment;\n switch (event.keyCode) {\n // minus 1 year\n case LEFT_ARROW:\n moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment, -1);\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 1 year\n case RIGHT_ARROW:\n moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment, 1);\n this.pickerMomentChange.emit(moment);\n break;\n\n // minus 3 years\n case UP_ARROW:\n moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment, -1 * this.options.multiYear.yearsPerRow);\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 3 years\n case DOWN_ARROW:\n moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment, this.options.multiYear.yearsPerRow);\n this.pickerMomentChange.emit(moment);\n break;\n\n // go to the first year of the year page\n case HOME:\n moment = this.dateTimeAdapter.addCalendarYears(\n this._pickerMoment,\n -this.dateTimeAdapter.getYear(this._pickerMoment) %\n (this.options.multiYear.yearsPerRow * this.options.multiYear.yearRows)\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // go to the last year of the year page\n case END:\n moment = this.dateTimeAdapter.addCalendarYears(\n this._pickerMoment,\n this.options.multiYear.yearsPerRow * this.options.multiYear.yearRows -\n (this.dateTimeAdapter.getYear(this._pickerMoment) %\n (this.options.multiYear.yearsPerRow * this.options.multiYear.yearRows)) -\n 1\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // minus 1 year page (or 10 year pages)\n case PAGE_UP:\n moment = this.dateTimeAdapter.addCalendarYears(\n this.pickerMoment,\n event.altKey ?\n -10 * (this.options.multiYear.yearsPerRow * this.options.multiYear.yearRows)\n : -1 * (this.options.multiYear.yearsPerRow * this.options.multiYear.yearRows)\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 1 year page (or 10 year pages)\n case PAGE_DOWN:\n moment = this.dateTimeAdapter.addCalendarYears(\n this.pickerMoment,\n event.altKey ?\n 10 * (this.options.multiYear.yearsPerRow * this.options.multiYear.yearRows)\n : this.options.multiYear.yearsPerRow * this.options.multiYear.yearRows\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n case ENTER:\n this.selectYear(this.dateTimeAdapter.getYear(this._pickerMoment));\n this.keyboardEnter.emit();\n break;\n\n default:\n return;\n }\n\n this.focusActiveCell();\n event.preventDefault();\n }\n\n /**\n * Creates an CalendarCell for the given year.\n */\n private createYearCell(year: number): CalendarCell {\n const startDateOfYear = this.dateTimeAdapter.createDate(year, 0, 1);\n const ariaLabel = this.dateTimeAdapter.getYearName(startDateOfYear);\n const cellClass = `owl-dt-year-${year}`;\n return new CalendarCell(year, year.toString(), ariaLabel, this.isYearEnabled(year), false, cellClass);\n }\n\n private setSelectedYears(): void {\n this._selectedYears = [];\n\n if (this.isInSingleMode && this.selected) {\n this._selectedYears[0] = this.dateTimeAdapter.getYear(this.selected);\n }\n\n if (this.isInRangeMode && this.selecteds) {\n this._selectedYears = this.selecteds.map((selected) => {\n if (this.dateTimeAdapter.isValid(selected)) {\n return this.dateTimeAdapter.getYear(selected);\n } else {\n return null;\n }\n });\n }\n }\n\n /** Whether the given year is enabled. */\n private isYearEnabled(year: number): boolean {\n // disable if the year is greater than maxDate lower than minDate\n if (\n year === undefined ||\n year === null ||\n (this.maxDate && year > this.dateTimeAdapter.getYear(this.maxDate)) ||\n (this.minDate && year < this.dateTimeAdapter.getYear(this.minDate))\n ) {\n return false;\n }\n\n // enable if it reaches here and there's no filter defined\n if (!this.dateFilter) {\n return true;\n }\n\n const firstOfYear = this.dateTimeAdapter.createDate(year, 0, 1);\n\n // If any date in the year is enabled count the year as enabled.\n for (\n let date = firstOfYear;\n this.dateTimeAdapter.getYear(date) === year;\n date = this.dateTimeAdapter.addCalendarDays(date, 1)\n ) {\n if (this.dateFilter(date)) {\n return true;\n }\n }\n\n return false;\n }\n\n private isSameYearList(date1: T, date2: T): boolean {\n return (\n Math.floor(\n this.dateTimeAdapter.getYear(date1) / (this.options.multiYear.yearsPerRow * this.options.multiYear.yearRows)\n ) ===\n Math.floor(\n this.dateTimeAdapter.getYear(date2) / (this.options.multiYear.yearsPerRow * this.options.multiYear.yearRows)\n )\n );\n }\n\n /**\n * Get a valid date object\n */\n private getValidDate(obj: unknown): T | null {\n return this.dateTimeAdapter.isDateInstance(obj) && this.dateTimeAdapter.isValid(obj) ? obj : null;\n }\n\n private focusActiveCell(): void {\n this.calendarBodyElm().focusActiveCell();\n }\n}\n","<button\n [attr.aria-label]=\"prevButtonLabel\"\n [disabled]=\"!previousEnabled()\"\n (click)=\"prevYearList($event)\"\n class=\"owl-dt-control-button owl-dt-control-arrow-button\"\n tabindex=\"0\"\n type=\"button\">\n <span\n class=\"owl-dt-control-button-content\"\n tabindex=\"-1\">\n <svg\n xml:space=\"preserve\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n height=\"100%\"\n style=\"enable-background: new 0 0 250.738 250.738\"\n version=\"1.1\"\n viewBox=\"0 0 250.738 250.738\"\n width=\"100%\"\n x=\"0px\"\n xmlns=\"http://www.w3.org/2000/svg\"\n y=\"0px\">\n <path\n d=\"M96.633,125.369l95.053-94.533c7.101-7.055,7.101-18.492,0-25.546 c-7.1-7.054-18.613-7.054-25.714,0L58.989,111.689c-3.784,3.759-5.487,8.759-5.238,13.68c-0.249,4.922,1.454,9.921,5.238,13.681 l106.983,106.398c7.101,7.055,18.613,7.055,25.714,0c7.101-7.054,7.101-18.491,0-25.544L96.633,125.369z\"\n style=\"fill-rule: evenodd; clip-rule: evenodd\" />\n </svg>\n </span>\n</button>\n<table class=\"owl-dt-calendar-table owl-dt-calendar-multi-year-table\">\n <thead class=\"owl-dt-calendar-header\">\n <tr>\n <th colspan=\"3\">{{ tableHeader }}</th>\n </tr>\n </thead>\n <tbody\n [activeCell]=\"activeCell\"\n [cellRatio]=\"3 / 7\"\n [numCols]=\"3\"\n [rows]=\"years\"\n [selectMode]=\"selectMode\"\n [selectedValues]=\"selectedYears\"\n [todayValue]=\"todayYear\"\n (keydown)=\"handleCalendarKeydown($event)\"\n (selectCell)=\"selectCalendarCell($event)\"\n owl-date-time-calendar-body\n role=\"grid\"></tbody>\n</table>\n<button\n [attr.aria-label]=\"nextButtonLabel\"\n [disabled]=\"!nextEnabled()\"\n (click)=\"nextYearList($event)\"\n class=\"owl-dt-control-button owl-dt-control-arrow-button\"\n tabindex=\"0\"\n type=\"button\">\n <span\n class=\"owl-dt-control-button-content\"\n tabindex=\"-1\">\n <svg\n xml:space=\"preserve\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n style=\"enable-background: new 0 0 250.738 250.738\"\n version=\"1.1\"\n viewBox=\"0 0 250.738 250.738\"\n x=\"0px\"\n xmlns=\"http://www.w3.org/2000/svg\"\n y=\"0px\">\n <path\n d=\"M191.75,111.689L84.766,5.291c-7.1-7.055-18.613-7.055-25.713,0\n c-7.101,7.054-7.101,18.49,0,25.544l95.053,94.534l-95.053,94.533c-7.101,7.054-7.101,18.491,0,25.545\n c7.1,7.054,18.613,7.054,25.713,0L191.75,139.05c3.784-3.759,5.487-8.759,5.238-13.681\n C197.237,120.447,195.534,115.448,191.75,111.689z\"\n style=\"fill-rule: evenodd; clip-rule: evenodd\" />\n </svg>\n </span>\n</button>\n","import {\n DOWN_ARROW,\n END,\n ENTER,\n HOME,\n LEFT_ARROW,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n UP_ARROW\n} from '@angular/cdk/keycodes';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnDestroy,\n OnInit,\n ViewChild,\n inject,\n output\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport { OWL_DATE_TIME_FORMATS } from './adapter/date-time-format.class';\nimport { CalendarCell, OwlCalendarBodyComponent } from './calendar-body.component';\nimport { SelectMode } from './date-time.class';\n\nconst MONTHS_PER_YEAR = 12;\nconst MONTHS_PER_ROW = 3;\n\n@Component({\n standalone: false,\n selector: 'owl-date-time-year-view',\n exportAs: 'owlMonthView',\n templateUrl: './calendar-year-view.component.html',\n host: { 'class': 'owl-dt-calendar-view' },\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OwlYearViewComponent<T> implements OnInit, AfterContentInit, OnDestroy {\n private readonly cdRef = inject(ChangeDetectorRef);\n private readonly dateTimeAdapter = inject<DateTimeAdapter<T>>(DateTimeAdapter<T>, { optional: true });\n private readonly dateTimeFormats = inject(OWL_DATE_TIME_FORMATS, { optional: true });\n\n /**\n * The select mode of the picker;\n */\n private _selectMode: SelectMode = 'single';\n @Input()\n public get selectMode(): SelectMode {\n return this._selectMode;\n }\n\n public set selectMode(val: SelectMode) {\n this._selectMode = val;\n if (this.initiated) {\n this.generateMonthList();\n this.cdRef.markForCheck();\n }\n }\n\n /** The currently selected date. */\n private _selected: T | null;\n @Input()\n public get selected(): T | null {\n return this._selected;\n }\n\n public set selected(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._selected = this.getValidDate(value);\n this.setSelectedMonths();\n }\n\n private _selecteds: Array<T> = [];\n @Input()\n public get selecteds(): Array<T> {\n return this._selecteds;\n }\n\n public set selecteds(values: Array<T>) {\n this._selecteds = [];\n for (const val of values) {\n const value = this.dateTimeAdapter.deserialize(val);\n this._selecteds.push(this.getValidDate(value));\n }\n\n this.setSelectedMonths();\n }\n\n private _pickerMoment: T | null;\n @Input()\n public get pickerMoment(): T | null {\n return this._pickerMoment;\n }\n\n public set pickerMoment(value: T) {\n const oldMoment = this._pickerMoment;\n value = this.dateTimeAdapter.deserialize(value);\n this._pickerMoment = this.getValidDate(value) || this.dateTimeAdapter.now();\n\n if (!this.hasSameYear(oldMoment, this._pickerMoment) && this.initiated) {\n this.generateMonthList();\n }\n }\n\n /**\n * A function used to filter which dates are selectable\n */\n private _dateFilter: (date: T) => boolean;\n @Input()\n public get dateFilter(): (date: T) => boolean {\n return this._dateFilter;\n }\n\n public set dateFilter(filter: (date: T) => boolean) {\n this._dateFilter = filter;\n if (this.initiated) {\n this.generateMonthList();\n }\n }\n\n /** The minimum selectable date. */\n private _minDate: T | null;\n @Input()\n public get minDate(): T | null {\n return this._minDate;\n }\n\n public set minDate(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._minDate = this.getValidDate(value);\n if (this.initiated) {\n this.generateMonthList();\n }\n }\n\n /** The maximum selectable date. */\n private _maxDate: T | null;\n @Input()\n public get maxDate(): T | null {\n return this._maxDate;\n }\n\n public set maxDate(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._maxDate = this.getValidDate(value);\n if (this.initiated) {\n this.generateMonthList();\n }\n }\n\n private readonly monthNames = this.dateTimeAdapter.getMonthNames('short');\n\n private _months: Array<Array<CalendarCell>>;\n protected get months(): Array<Array<CalendarCell>> {\n return this._months;\n }\n\n protected get activeCell(): number {\n if (this._pickerMoment) {\n return this.dateTimeAdapter.getMonth(this._pickerMoment);\n }\n return undefined;\n }\n\n protected get isInSingleMode(): boolean {\n return this.selectMode === 'single';\n }\n\n protected get isInRangeMode(): boolean {\n return this.selectMode === 'range' || this.selectMode === 'rangeFrom' || this.selectMode === 'rangeTo';\n }\n\n private localeSub: Subscription = Subscription.EMPTY;\n\n private initiated = false;\n\n public todayMonth: number | null;\n\n /**\n * An array to hold all selectedDates' month value\n * the value is the month number in current year\n */\n public selectedMonths: Array<number> = [];\n\n /**\n * Callback to invoke when a new month is selected\n */\n public readonly changeMonth = output<T>();\n\n /**\n * Emits the selected year. This doesn't imply a change on the selected date\n */\n public readonly monthSelected = output<T>();\n\n /** Emits when any date is activated. */\n public readonly pickerMomentChange = output<T>();\n\n /** Emits when use keyboard enter to select a calendar cell */\n public readonly keyboardEnter = output<void>();\n\n /** The body of calendar table */\n @ViewChild(OwlCalendarBodyComponent, { static: true })\n protected calendarBodyElm: OwlCalendarBodyComponent;\n\n public ngOnInit(): void {\n this.localeSub = this.dateTimeAdapter.localeChanges.subscribe(() => {\n this.generateMonthList();\n this.cdRef.markForCheck();\n });\n }\n\n public ngAfterContentInit(): void {\n this.generateMonthList();\n this.initiated = true;\n }\n\n public ngOnDestroy(): void {\n this.localeSub.unsubscribe();\n }\n\n /**\n * Handle a calendarCell selected\n */\n public selectCalendarCell(cell: CalendarCell): void {\n this.selectMonth(cell.value);\n }\n\n /**\n * Handle a new month selected\n */\n private selectMonth(month: number): void {\n const firstDateOfMonth = this.dateTimeAdapter.createDate(this.dateTimeAdapter.getYear(this.pickerMoment), month, 1);\n\n this.monthSelected.emit(firstDateOfMonth);\n\n const daysInMonth = this.dateTimeAdapter.getNumDaysInMonth(firstDateOfMonth);\n const result = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(this.pickerMoment),\n month,\n Math.min(daysInMonth, this.dateTimeAdapter.getDate(this.pickerMoment)),\n this.dateTimeAdapter.getHours(this.pickerMoment),\n this.dateTimeAdapter.getMinutes(this.pickerMoment),\n this.dateTimeAdapter.getSeconds(this.pickerMoment)\n );\n\n this.changeMonth.emit(result);\n }\n\n /**\n * Handle keydown event on calendar body\n */\n public handleCalendarKeydown(event: KeyboardEvent): void {\n let moment;\n switch (event.keyCode) {\n // minus 1 month\n case LEFT_ARROW:\n moment = this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, -1);\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 1 month\n case RIGHT_ARROW:\n moment = this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, 1);\n this.pickerMomentChange.emit(moment);\n break;\n\n // minus 3 months\n case UP_ARROW:\n moment = this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, -3);\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 3 months\n case DOWN_ARROW:\n moment = this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, 3);\n this.pickerMomentChange.emit(moment);\n break;\n\n // move to first month of current year\n case HOME:\n moment = this.dateTimeAdapter.addCalendarMonths(\n this.pickerMoment,\n -this.dateTimeAdapter.getMonth(this.pickerMoment)\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // move to last month of current year\n case END:\n moment = this.dateTimeAdapter.addCalendarMonths(\n this.pickerMoment,\n 11 - this.dateTimeAdapter.getMonth(this.pickerMoment)\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // minus 1 year (or 10 year)\n case PAGE_UP:\n moment = this.dateTimeAdapter.addCalendarYears(this.pickerMoment, event.altKey ? -10 : -1);\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 1 year (or 10 year)\n case PAGE_DOWN:\n moment = this.dateTimeAdapter.addCalendarYears(this.pickerMoment, event.altKey ? 10 : 1);\n this.pickerMomentChange.emit(moment);\n break;\n\n // Select current month\n case ENTER:\n this.selectMonth(this.dateTimeAdapter.getMonth(this.pickerMoment));\n this.keyboardEnter.emit();\n break;\n default:\n return;\n }\n\n this.focusActiveCell();\n event.preventDefault();\n }\n\n /**\n * Generate the calendar month list\n */\n private generateMonthList(): void {\n if (!this.pickerMoment) {\n return;\n }\n\n this.setSelectedMonths();\n this.todayMonth = this.getMonthInCurrentYear(this.dateTimeAdapter.now());\n\n this._months = [];\n for (let i = 0; i < MONTHS_PER_YEAR / MONTHS_PER_ROW; i++) {\n const row = [];\n\n for (let j = 0; j < MONTHS_PER_ROW; j++) {\n const month = j + i * MONTHS_PER_ROW;\n const monthCell = this.createMonthCell(month);\n row.push(monthCell);\n }\n\n this._months.push(row);\n }\n\n return;\n }\n\n /**\n * Creates an CalendarCell for the given month.\n */\n private createMonthCell(month: number): CalendarCell {\n const startDateOfMonth = this.dateTimeAdapter.createDate(this.dateTimeAdapter.getYear(this.pickerMoment), month, 1);\n const ariaLabel = this.dateTimeAdapter.format(startDateOfMonth, this.dateTimeFormats.monthYearA11yLabel);\n const cellClass = `owl-dt-month-${month}`;\n return new CalendarCell(month, this.monthNames[month], ariaLabel, this.isMonthEnabled(month), false, cellClass);\n }\n\n /**\n * Check if the given month is enable\n */\n private isMonthEnabled(month: number): boolean {\n const firstDateOfMonth = this.dateTimeAdapter.createDate(this.dateTimeAdapter.getYear(this.pickerMoment), month, 1);\n\n // If any date in the month is selectable,\n // we count the month as enable\n for (\n let date = firstDateOfMonth;\n this.dateTimeAdapter.getMonth(date) === month;\n date = this.dateTimeAdapter.addCalendarDays(date, 1)\n ) {\n if (\n !!date &&\n (!this.dateFilter || this.dateFilter(date)) &&\n (!this.minDate || this.dateTimeAdapter.compare(date, this.minDate) >= 0) &&\n (!this.maxDate || this.dateTimeAdapter.compare(date, this.maxDate) <= 0)\n ) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Gets the month in this year that the given Date falls on.\n * Returns null if the given Date is in another year.\n */\n private getMonthInCurrentYear(date: T | null): number {\n if (this.getValidDate(date) && this.getValidDate(this._pickerMoment)) {\n const result = this.dateTimeAdapter.compareYear(date, this._pickerMoment);\n\n // < 0 : the given date's year is before pickerMoment's year, we return -1 as selected month value.\n // > 0 : the given date's year is after pickerMoment's year, we return 12 as selected month value.\n // 0 : the give date's year is same as the pickerMoment's year, we return the actual month value.\n if (result < 0) {\n return -1;\n } else if (result > 0) {\n return 12;\n } else {\n return this.dateTimeAdapter.getMonth(date);\n }\n } else {\n return null;\n }\n }\n\n /**\n * Set the selectedMonths value\n * In single mode, it has only one value which represent the month the selected date in\n * In range mode, it would has two values, one for the month the fromValue in and the other for the month the toValue in\n */\n private setSelectedMonths(): void {\n this.selectedMonths = [];\n if (this.isInSingleMode && this.selected) {\n this.selectedMonths[0] = this.getMonthInCurrentYear(this.selected);\n }\n\n if (this.isInRangeMode && this.selecteds) {\n this.selectedMonths[0] = this.getMonthInCurrentYear(this.selecteds[0]);\n this.selectedMonths[1] = this.getMonthInCurrentYear(this.selecteds[1]);\n }\n }\n\n /**\n * Check the given dates are in the same year\n */\n private hasSameYear(dateLeft: T, dateRight: T): boolean {\n return !!(\n dateLeft &&\n dateRight &&\n this.dateTimeAdapter.getYear(dateLeft) === this.dateTimeAdapter.getYear(dateRight)\n );\n }\n\n /**\n * Get a valid date object\n */\n private getValidDate(obj: unknown): T | null {\n return this.dateTimeAdapter.isDateInstance(obj) && this.dateTimeAdapter.isValid(obj) ? obj : null;\n }\n\n private focusActiveCell(): void {\n this.calendarBodyElm.focusActiveCell();\n }\n}\n","<table class=\"owl-dt-calendar-table owl-dt-calendar-year-table\">\n <thead class=\"owl-dt-calendar-header\">\n <tr>\n <th\n aria-hidden=\"true\"\n class=\"owl-dt-calendar-table-divider\"\n colspan=\"3\"></th>\n </tr>\n </thead>\n <tbody\n [activeCell]=\"activeCell\"\n [cellRatio]=\"3 / 7\"\n [numCols]=\"3\"\n [rows]=\"months\"\n [selectMode]=\"selectMode\"\n [selectedValues]=\"selectedMonths\"\n [todayValue]=\"todayMonth\"\n (keydown)=\"handleCalendarKeydown($event)\"\n (selectCell)=\"selectCalendarCell($event)\"\n owl-date-time-calendar-body\n role=\"grid\"></tbody>\n</table>\n","/**\n * date-time.class\n */\nimport { booleanAttribute, Directive, inject, Input, numberAttribute, type OutputRef } from '@angular/core';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport { OWL_DATE_TIME_FORMATS, OwlDateTimeFormats } from './adapter/date-time-format.class';\n\nlet nextUniqueId = 0;\n\nexport const PickerType = {\n /**\n * Shows both calendar and timer views.\n */\n Both: 'both',\n /**\n * Shows only the calendar view.\n */\n Calendar: 'calendar',\n /**\n * Shows only the timer view.\n */\n Timer: 'timer'\n} as const;\n\nexport type PickerType = (typeof PickerType)[keyof typeof PickerType];\n\nexport const SelectMode = {\n /**\n * Selects a single date.\n */\n Single: 'single',\n /**\n * Selects a date range.\n */\n Range: 'range',\n /**\n * Selects a date range from a specific date.\n * The end date (range[1]) will always be `null` in this mode.\n */\n RangeFrom: 'rangeFrom',\n /**\n * Selects a date range up to a specific date.\n * The start date (range[0]) will always be `null` in this mode.\n */\n RangeTo: 'rangeTo'\n} as const;\n\nexport type SelectMode = (typeof SelectMode)[keyof typeof SelectMode];\n\nexport const DateView = {\n /**\n * Shows all days of a month in a grid.\n */\n MONTH: 'month',\n /**\n * Shows all months of a year in a grid.\n */\n YEAR: 'year',\n /**\n * Shows a list of years.\n */\n MULTI_YEARS: 'multi-years'\n} as const;\n\nexport type DateViewType = (typeof DateView)[keyof typeof DateView];\n\n@Directive()\nexport abstract class OwlDateTime<T> {\n protected readonly dateTimeAdapter = inject<DateTimeAdapter<T>>(DateTimeAdapter, { optional: true });\n\n protected readonly dateTimeFormats = inject<OwlDateTimeFormats>(OWL_DATE_TIME_FORMATS, { optional: true });\n\n /**\n * Whether to show the second's timer\n */\n @Input({ transform: booleanAttribute })\n public showSecondsTimer: boolean = false;\n\n /**\n * Whether the timer is in hour12 format\n */\n @Input({ transform: booleanAttribute })\n public hour12Timer: boolean = false;\n\n /**\n * The view that the calendar should start in.\n */\n @Input()\n public startView: DateViewType = DateView.MONTH;\n\n /**\n * Whether to should only the year and multi-year views.\n */\n @Input()\n public yearOnly = false;\n\n /**\n * Whether to should only the multi-year view.\n */\n @Input()\n public multiyearOnly = false;\n\n /**\n * Hours to change per step\n */\n @Input({ transform: (v: unknown) => numberAttribute(v, 1) })\n public stepHour: number = 1;\n\n /**\n * Minutes to change per step\n */\n @Input({ transform: (v: unknown) => numberAttribute(v, 1) })\n public stepMinute: number = 1;\n\n /**\n * Seconds to change per step\n */\n @Input({ transform: (v: unknown) => numberAttribute(v, 1) })\n public stepSecond: number = 1;\n\n /**\n * Set the first day of week\n */\n @Input({\n transform: (v: unknown) => {\n const value = numberAttribute(v);\n return value >= 0 && value <= 6 ? value : undefined;\n }\n })\n public firstDayOfWeek: number | undefined;\n\n /**\n * Whether to hide dates in other months at the start or end of the current month.\n */\n @Input({ transform: booleanAttribute })\n public hideOtherMonths: boolean = false;\n\n public readonly id = `owl-dt-picker-${nextUniqueId++}`;\n\n public abstract disabled: boolean;\n\n public abstract get selected(): T | null;\n\n public abstract get selecteds(): Array<T> | null;\n\n public abstract get dateTimeFilter(): (date: T | null) => boolean;\n\n public abstract get maxDateTime(): T | null;\n\n public abstract get minDateTime(): T | null;\n\n public abstract get selectMode(): SelectMode;\n\n public abstract get startAt(): T | null;\n\n public abstract get endAt(): T | null;\n\n public abstract get opened(): boolean;\n\n public abstract get pickerType(): PickerType;\n\n public abstract get isInSingleMode(): boolean;\n\n public abstract get isInRangeMode(): boolean;\n\n public abstract select(date: T | Array<T>): void;\n\n public abstract yearSelected: OutputRef<T>;\n\n public abstract monthSelected: OutputRef<T>;\n\n public abstract dateSelected: OutputRef<T>;\n\n public abstract selectYear(normalizedYear: T): void;\n\n public abstract selectMonth(normalizedMonth: T): void;\n\n public abstract selectDate(normalizedDate: T): void;\n\n public get displayFormat(): Partial<Intl.DateTimeFormatOptions> {\n if (this.pickerType === 'both') {\n return this.dateTimeFormats.fullPickerInput;\n }\n\n if (this.pickerType === 'calendar') {\n return this.dateTimeFormats.datePickerInput;\n }\n\n return this.dateTimeFormats.timePickerInput;\n }\n\n /**\n * Date Time Checker to check if the give dateTime is selectable\n */\n public dateTimeChecker = (dateTime: T): boolean => {\n return (\n !!dateTime &&\n (!this.dateTimeFilter || this.dateTimeFilter(dateTime)) &&\n (!this.minDateTime || this.dateTimeAdapter.compare(dateTime, this.minDateTime) >= 0) &&\n (!this.maxDateTime || this.dateTimeAdapter.compare(dateTime, this.maxDateTime) <= 0)\n );\n };\n\n constructor() {\n if (!this.dateTimeAdapter) {\n throw Error(\n `OwlDateTimePicker: No provider found for DateTimeAdapter. You must import one of the following ` +\n `modules at your application root: OwlNativeDateTimeModule, OwlMomentDateTimeModule, or provide a ` +\n `custom implementation.`\n );\n }\n\n if (!this.dateTimeFormats) {\n throw Error(\n `OwlDateTimePicker: No provider found for OWL_DATE_TIME_FORMATS. You must import one of the following ` +\n `modules at your application root: OwlNativeDateTimeModule, OwlMomentDateTimeModule, or provide a ` +\n `custom implementation.`\n );\n }\n }\n\n protected getValidDate(obj: unknown): T | null {\n return this.dateTimeAdapter.isDateInstance(obj) && this.dateTimeAdapter.isValid(obj) ? obj : null;\n }\n}\n","import {\n AfterContentInit,\n AfterViewChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n inject,\n Input,\n NgZone,\n output\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { take } from 'rxjs';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport { OWL_DATE_TIME_FORMATS } from './adapter/date-time-format.class';\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\nimport { DateView, DateViewType, SelectMode } from './date-time.class';\n\n@Component({\n standalone: false,\n selector: 'owl-date-time-calendar',\n exportAs: 'owlDateTimeCalendar',\n templateUrl: './calendar.component.html',\n host: { 'class': 'owl-dt-calendar' },\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OwlCalendarComponent<T> implements AfterContentInit, AfterViewChecked {\n private readonly elmRef = inject(ElementRef);\n private readonly pickerIntl = inject(OwlDateTimeIntl);\n private readonly ngZone = inject(NgZone);\n private readonly cdRef = inject(ChangeDetectorRef);\n private readonly dateTimeAdapter = inject(DateTimeAdapter<T>, { optional: true });\n private readonly dateTimeFormats = inject(OWL_DATE_TIME_FORMATS, { optional: true });\n\n DateView = DateView;\n\n @Input()\n get minDate(): T | null {\n return this._minDate;\n }\n\n set minDate(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n value = this.getValidDate(value);\n\n this._minDate =\n value ?\n this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(value),\n this.dateTimeAdapter.getMonth(value),\n this.dateTimeAdapter.getDate(value)\n )\n : null;\n }\n\n @Input()\n get maxDate(): T | null {\n return this._maxDate;\n }\n\n set maxDate(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n value = this.getValidDate(value);\n\n this._maxDate =\n value ?\n this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(value),\n this.dateTimeAdapter.getMonth(value),\n this.dateTimeAdapter.getDate(value)\n )\n : null;\n }\n\n @Input()\n get pickerMoment(): T {\n return this._pickerMoment;\n }\n\n set pickerMoment(value: T) {\n value = this.dateTimeAdapter.deserialize(value);\n this._pickerMoment = this.getValidDate(value) || this.dateTimeAdapter.now();\n }\n\n @Input()\n get selected(): T | null {\n return this._selected;\n }\n\n set selected(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._selected = this.getValidDate(value);\n }\n\n @Input()\n get selecteds(): Array<T> {\n return this._selecteds;\n }\n\n set selecteds(values: Array<T>) {\n this._selecteds = values.map((v) => {\n v = this.dateTimeAdapter.deserialize(v);\n return this.getValidDate(v);\n });\n }\n\n get periodButtonText(): string {\n return this.isMonthView ?\n this.dateTimeAdapter.format(this.pickerMoment, this.dateTimeFormats.monthYearLabel)\n : this.dateTimeAdapter.getYearName(this.pickerMoment);\n }\n\n get periodButtonLabel(): string {\n return this.isMonthView ? this.pickerIntl.switchToMultiYearViewLabel : this.pickerIntl.switchToMonthViewLabel;\n }\n\n get todayButtonLabel(): string {\n return this.pickerIntl.todayButtonLabel;\n }\n\n get prevButtonLabel(): string {\n if (this._currentView === DateView.MONTH) {\n return this.pickerIntl.prevMonthLabel;\n } else if (this._currentView === DateView.YEAR) {\n return this.pickerIntl.prevYearLabel;\n } else {\n return null;\n }\n }\n\n get nextButtonLabel(): string {\n if (this._currentView === DateView.MONTH) {\n return this.pickerIntl.nextMonthLabel;\n } else if (this._currentView === DateView.YEAR) {\n return this.pickerIntl.nextYearLabel;\n } else {\n return null;\n }\n }\n\n get currentView(): DateViewType {\n return this._currentView;\n }\n\n set currentView(view: DateViewType) {\n this._currentView = view;\n this.moveFocusOnNextTick = true;\n }\n\n get isInSingleMode(): boolean {\n return this.selectMode === 'single';\n }\n\n get isInRangeMode(): boolean {\n return this.selectMode === 'range' || this.selectMode === 'rangeFrom' || this.selectMode === 'rangeTo';\n }\n\n get showControlArrows(): boolean {\n return this._currentView !== DateView.MULTI_YEARS;\n }\n\n get isMonthView(): boolean {\n return this._currentView === DateView.MONTH;\n }\n\n public get isTodayAllowed(): boolean {\n if (!this.dateTimeAdapter) {\n return false;\n }\n const now = this.dateTimeAdapter.now();\n // Normalize 'today' to the start of the day, how minDate and maxDate are stored\n const today = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(now),\n this.dateTimeAdapter.getMonth(now),\n this.dateTimeAdapter.getDate(now)\n );\n\n if (this.minDate && this.dateTimeAdapter.compare(today, this.minDate) < 0) {\n return false;\n }\n\n if (this.maxDate && this.dateTimeAdapter.compare(today, this.maxDate) > 0) {\n return false;\n }\n\n return true;\n }\n\n /**\n * Date filter for the month and year view\n */\n @Input()\n public dateFilter: (date: T) => boolean;\n\n /**\n * Set the first day of week\n */\n @Input()\n public firstDayOfWeek: number;\n\n /** The minimum selectable date. */\n private _minDate: T | null;\n\n /** The maximum selectable date. */\n private _maxDate: T | null;\n\n /** The current picker moment */\n private _pickerMoment: T;\n\n @Input()\n public selectMode: SelectMode;\n\n /** The currently selected moment. */\n private _selected: T | null;\n\n private _selecteds: Array<T> = [];\n\n /**\n * The view that the calendar should start in.\n */\n @Input()\n public startView: DateViewType = DateView.MONTH;\n\n /**\n * Whether to should only the year and multi-year views.\n */\n @Input()\n public yearOnly = false;\n\n /**\n * Whether to should only the multi-year view.\n */\n @Input()\n public multiyearOnly = false;\n\n /**\n * Whether to hide dates in other months at the start or end of the current month.\n */\n @Input()\n public hideOtherMonths: boolean;\n\n /**\n * Flag to show today button to jump to today's date. Defaults to `false`.\n */\n @Input()\n public showTodayButton: boolean = false;\n\n /**\n * Emits when the currently picker moment changes.\n */\n public readonly pickerMomentChange = output<T>();\n\n /**\n * Emits when the selected date changes.\n */\n public readonly dateClicked = output<T>();\n\n /**\n * Emits when the currently selected date changes.\n */\n public readonly selectedChange = output<T>();\n\n /**\n * Emits when any date is selected.\n */\n public readonly userSelection = output<void>();\n\n /**\n * Emits the selected year. This doesn't imply a change on the selected date\n */\n public readonly yearSelected = output<T>();\n\n /**\n * Emits the selected month. This doesn't imply a change on the selected date\n */\n public readonly monthSelected = output<T>();\n\n private _currentView: DateViewType;\n\n constructor() {\n this.pickerIntl.changes.pipe(takeUntilDestroyed()).subscribe(() => {\n this.cdRef.markForCheck();\n });\n }\n\n /**\n * Used for scheduling that focus should be moved to the active cell on the next tick.\n * We need to schedule it, rather than do it immediately, because we have to wait\n * for Angular to re-evaluate the view children.\n */\n private moveFocusOnNextTick = false;\n\n /**\n * Date filter for the month and year view\n */\n public dateFilterForViews: (date: T | null) => boolean = (date: T) => {\n return (\n !!date &&\n (!this.dateFilter || this.dateFilter(date)) &&\n (!this.minDate || this.dateTimeAdapter.compare(date, this.minDate) >= 0) &&\n (!this.maxDate || this.dateTimeAdapter.compare(date, this.maxDate) <= 0)\n );\n };\n\n public ngAfterContentInit(): void {\n this._currentView = this.startView;\n }\n\n public ngAfterViewChecked(): void {\n if (this.moveFocusOnNextTick) {\n this.moveFocusOnNextTick = false;\n this.focusActiveCell();\n }\n }\n\n /**\n * Toggle between month view and year view\n */\n public toggleViews(): void {\n let nextView = null;\n if (this._currentView === DateView.MONTH) {\n nextView = DateView.MULTI_YEARS;\n } else {\n if (this.multiyearOnly) {\n nextView = DateView.MULTI_YEARS;\n } else if (this.yearOnly) {\n nextView = this._currentView === DateView.YEAR ? DateView.MULTI_YEARS : DateView.YEAR;\n } else {\n nextView = DateView.MONTH;\n }\n }\n this.currentView = nextView;\n }\n\n /**\n * Handles user clicks on the previous button.\n */\n public previousClicked(): void {\n this.pickerMoment =\n this.isMonthView ?\n this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, -1)\n : this.dateTimeAdapter.addCalendarYears(this.pickerMoment, -1);\n\n this.pickerMomentChange.emit(this.pickerMoment);\n }\n\n /**\n * Handles user clicks on the next button.\n */\n public nextClicked(): void {\n this.pickerMoment =\n this.isMonthView ?\n this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, 1)\n : this.dateTimeAdapter.addCalendarYears(this.pickerMoment, 1);\n\n this.pickerMomentChange.emit(this.pickerMoment);\n }\n\n public jumpToToday(): void {\n const now = this.dateTimeAdapter.now();\n let today = this.dateTimeAdapter.setHours(now, 0);\n today = this.dateTimeAdapter.setMinutes(today, 0);\n today = this.dateTimeAdapter.setSeconds(today, 0);\n\n this.handlePickerMomentChange(today);\n this.dateSelected(today);\n }\n\n public dateSelected(date: T): void {\n if (!this.dateFilterForViews(date)) {\n return;\n }\n\n this.dateClicked.emit(date);\n this.selectedChange.emit(date);\n\n /*if ((this.isInSingleMode && !this.dateTimeAdapter.isSameDay(date, this.selected)) ||\n this.isInRangeMode) {\n this.selectedChange.emit(date);\n }*/\n }\n\n /**\n * Change the pickerMoment value and switch to a specific view\n */\n public goToDateInView(date: T, view: DateViewType): void {\n this.handlePickerMomentChange(date);\n if (\n (!this.yearOnly && !this.multiyearOnly) ||\n (this.multiyearOnly && view !== DateView.MONTH && view !== DateView.YEAR) ||\n (this.yearOnly && view !== DateView.MONTH)\n ) {\n this.currentView = view;\n }\n return;\n }\n\n /**\n * Change the pickerMoment value\n */\n public handlePickerMomentChange(date: T): void {\n this.pickerMoment = this.dateTimeAdapter.clampDate(date, this.minDate, this.maxDate);\n this.pickerMomentChange.emit(this.pickerMoment);\n return;\n }\n\n public userSelected(): void {\n this.userSelection.emit();\n }\n\n /**\n * Whether the previous period button is enabled.\n */\n public prevButtonEnabled(): boolean {\n return !this.minDate || !this.isSameView(this.pickerMoment, this.minDate);\n }\n\n /**\n * Whether the next period button is enabled.\n */\n public nextButtonEnabled(): boolean {\n return !this.maxDate || !this.isSameView(this.pickerMoment, this.maxDate);\n }\n\n /**\n * Focus to the host element\n */\n public focusActiveCell(): void {\n this.ngZone.runOutsideAngular(() => {\n this.ngZone.onStable\n .asObservable()\n .pipe(take(1))\n .subscribe(() => {\n this.elmRef.nativeElement.querySelector('.owl-dt-calendar-cell-active').focus();\n });\n });\n }\n\n public selectYearInMultiYearView(normalizedYear: T): void {\n this.yearSelected.emit(normalizedYear);\n }\n\n public selectMonthInYearView(normalizedMonth: T): void {\n this.monthSelected.emit(normalizedMonth);\n }\n\n /**\n * Whether the two dates represent the same view in the current view mode (month or year).\n */\n private isSameView(date1: T, date2: T): boolean {\n if (this._currentView === DateView.MONTH) {\n return !!(\n date1 &&\n date2 &&\n this.dateTimeAdapter.getYear(date1) === this.dateTimeAdapter.getYear(date2) &&\n this.dateTimeAdapter.getMonth(date1) === this.dateTimeAdapter.getMonth(date2)\n );\n } else if (this._currentView === DateView.YEAR) {\n return !!(date1 && date2 && this.dateTimeAdapter.getYear(date1) === this.dateTimeAdapter.getYear(date2));\n } else {\n return false;\n }\n }\n\n /**\n * Get a valid date object\n */\n private getValidDate(obj: unknown): T | null {\n return this.dateTimeAdapter.isDateInstance(obj) && this.dateTimeAdapter.isValid(obj) ? obj : null;\n }\n}\n","<div class=\"owl-dt-calendar-control\">\n <!-- focus when keyboard tab (http://kizu.ru/en/blog/keyboard-only-focus/#x) -->\n <div class=\"owl-dt-calendar-control-content\">\n <button\n [attr.aria-label]=\"periodButtonLabel\"\n (click)=\"toggleViews()\"\n class=\"owl-dt-control owl-dt-control-button owl-dt-control-period-button\"\n tabindex=\"0\"\n type=\"button\">\n <span\n class=\"owl-dt-control-content owl-dt-control-button-content\"\n tabindex=\"-1\">\n {{ periodButtonText }}\n\n <span\n [style.transform]=\"'rotate(' + (isMonthView ? 0 : 180) + 'deg)'\"\n class=\"owl-dt-control-button-arrow\">\n <svg\n xml:space=\"preserve\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n height=\"50%\"\n style=\"enable-background: new 0 0 292.362 292.362\"\n version=\"1.1\"\n viewBox=\"0 0 292.362 292.362\"\n width=\"50%\"\n x=\"0px\"\n xmlns=\"http://www.w3.org/2000/svg\"\n y=\"0px\">\n <g>\n <path\n d=\"M286.935,69.377c-3.614-3.617-7.898-5.424-12.848-5.424H18.274c-4.952,0-9.233,1.807-12.85,5.424\n C1.807,72.998,0,77.279,0,82.228c0,4.948,1.807,9.229,5.424,12.847l127.907,127.907c3.621,3.617,7.902,5.428,12.85,5.428\n s9.233-1.811,12.847-5.428L286.935,95.074c3.613-3.617,5.427-7.898,5.427-12.847C292.362,77.279,290.548,72.998,286.935,69.377z\" />\n </g>\n </svg>\n </span>\n </span>\n </button>\n @if (currentView === DateView.MONTH && showTodayButton) {\n <button\n [disabled]=\"!isTodayAllowed\"\n (click)=\"jumpToToday()\"\n class=\"owl-dt-control owl-dt-control-button owl-dt-control-today-button\"\n type=\"button\">\n {{ todayButtonLabel }}\n </button>\n }\n </div>\n <button\n [attr.aria-label]=\"prevButtonLabel\"\n [disabled]=\"!prevButtonEnabled()\"\n [style.visibility]=\"showControlArrows ? 'visible' : 'hidden'\"\n (click)=\"previousClicked()\"\n class=\"owl-dt-control owl-dt-control-button owl-dt-control-arrow-button\"\n tabindex=\"0\"\n type=\"button\">\n <span\n class=\"owl-dt-control-content owl-dt-control-button-content\"\n tabindex=\"-1\">\n <svg\n xml:space=\"preserve\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n height=\"100%\"\n style=\"enable-background: new 0 0 250.738 250.738\"\n version=\"1.1\"\n viewBox=\"0 0 250.738 250.738\"\n width=\"100%\"\n x=\"0px\"\n xmlns=\"http://www.w3.org/2000/svg\"\n y=\"0px\">\n <path\n d=\"M96.633,125.369l95.053-94.533c7.101-7.055,7.101-18.492,0-25.546 c-7.1-7.054-18.613-7.054-25.714,0L58.989,111.689c-3.784,3.759-5.487,8.759-5.238,13.68c-0.249,4.922,1.454,9.921,5.238,13.681 l106.983,106.398c7.101,7.055,18.613,7.055,25.714,0c7.101-7.054,7.101-18.491,0-25.544L96.633,125.369z\"\n style=\"fill-rule: evenodd; clip-rule: evenodd\" />\n </svg>\n </span>\n </button>\n <button\n [attr.aria-label]=\"nextButtonLabel\"\n [disabled]=\"!nextButtonEnabled()\"\n [style.visibility]=\"showControlArrows ? 'visible' : 'hidden'\"\n (click)=\"nextClicked()\"\n class=\"owl-dt-control owl-dt-control-button owl-dt-control-arrow-button\"\n tabindex=\"0\"\n type=\"button\">\n <span\n class=\"owl-dt-control-content owl-dt-control-button-content\"\n tabindex=\"-1\">\n <svg\n xml:space=\"preserve\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n style=\"enable-background: new 0 0 250.738 250.738\"\n version=\"1.1\"\n viewBox=\"0 0 250.738 250.738\"\n x=\"0px\"\n xmlns=\"http://www.w3.org/2000/svg\"\n y=\"0px\">\n <path\n d=\"M191.75,111.689L84.766,5.291c-7.1-7.055-18.613-7.055-25.713,0\n c-7.101,7.054-7.101,18.49,0,25.544l95.053,94.534l-95.053,94.533c-7.101,7.054-7.101,18.491,0,25.545\n c7.1,7.054,18.613,7.054,25.713,0L191.75,139.05c3.784-3.759,5.487-8.759,5.238-13.681\n C197.237,120.447,195.534,115.448,191.75,111.689z\"\n style=\"fill-rule: evenodd; clip-rule: evenodd\" />\n </svg>\n </span>\n </button>\n</div>\n<div\n cdkMonitorSubtreeFocus\n class=\"owl-dt-calendar-main\"\n tabindex=\"-1\">\n @switch (currentView) {\n @case (DateView.MONTH) {\n <owl-date-time-month-view\n [dateFilter]=\"dateFilter\"\n [firstDayOfWeek]=\"firstDayOfWeek\"\n [hideOtherMonths]=\"hideOtherMonths\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [pickerMoment]=\"pickerMoment\"\n [selectMode]=\"selectMode\"\n [selected]=\"selected\"\n [selecteds]=\"selecteds\"\n (pickerMomentChange)=\"handlePickerMomentChange($event)\"\n (selectedChange)=\"dateSelected($event)\"\n (userSelection)=\"userSelected()\"></owl-date-time-month-view>\n }\n\n @case (DateView.YEAR) {\n <owl-date-time-year-view\n [dateFilter]=\"dateFilter\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [pickerMoment]=\"pickerMoment\"\n [selectMode]=\"selectMode\"\n [selected]=\"selected\"\n [selecteds]=\"selecteds\"\n (changeMonth)=\"goToDateInView($event, DateView.MONTH)\"\n (keyboardEnter)=\"focusActiveCell()\"\n (monthSelected)=\"selectMonthInYearView($event)\"\n (pickerMomentChange)=\"handlePickerMomentChange($event)\"></owl-date-time-year-view>\n }\n\n @case (DateView.MULTI_YEARS) {\n <owl-date-time-multi-year-view\n [dateFilter]=\"dateFilter\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [pickerMoment]=\"pickerMoment\"\n [selectMode]=\"selectMode\"\n [selected]=\"selected\"\n [selecteds]=\"selecteds\"\n (changeYear)=\"goToDateInView($event, DateView.YEAR)\"\n (keyboardEnter)=\"focusActiveCell()\"\n (pickerMomentChange)=\"handlePickerMomentChange($event)\"\n (yearSelected)=\"selectYearInMultiYearView($event)\"></owl-date-time-multi-year-view>\n }\n }\n</div>\n","import { coerceNumberProperty } from '@angular/cdk/coercion';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n ViewChild,\n output\n} from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n@Component({\n standalone: false,\n exportAs: 'owlDateTimeTimerBox',\n selector: 'owl-date-time-timer-box',\n templateUrl: './timer-box.component.html',\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { 'class': 'owl-dt-timer-box' }\n})\nexport class OwlTimerBoxComponent implements OnInit, OnDestroy {\n @Input() public showDivider = false;\n\n @Input() public upBtnAriaLabel: string;\n\n @Input() public upBtnDisabled: boolean;\n\n @Input() public downBtnAriaLabel: string;\n\n @Input() public downBtnDisabled: boolean;\n\n /**\n * Value would be displayed in the box\n * If it is null, the box would display [value]\n */\n @Input() public boxValue: number;\n\n @Input() public value: number;\n\n @Input() public min: number;\n\n @Input() public max: number;\n\n @Input() public step = 1;\n\n @Input() public inputLabel: string;\n\n public readonly valueChange = output<number>();\n\n public readonly inputChange = output<number>();\n\n private inputStream = new Subject<string>();\n\n private inputStreamSub = Subscription.EMPTY;\n\n private hasFocus = false;\n\n protected get displayValue(): string {\n if (this.hasFocus) {\n // Don't try to reformat the value that user is currently editing\n return this.valueInput.nativeElement.value;\n }\n\n const value = this.boxValue || this.value;\n\n if (value === null || isNaN(value)) {\n return '';\n }\n\n return value < 10 ? `0${value.toString()}` : value.toString();\n }\n\n @ViewChild('valueInput', { static: true })\n private valueInput: ElementRef<HTMLInputElement>;\n private onValueInputMouseWheelBind = this.onValueInputMouseWheel.bind(this);\n\n public ngOnInit(): void {\n this.inputStreamSub = this.inputStream.pipe(debounceTime(750)).subscribe((val: string) => {\n if (val) {\n const inputValue = coerceNumberProperty(val, 0);\n this.updateValueViaInput(inputValue);\n }\n });\n this.bindValueInputMouseWheel();\n }\n\n public ngOnDestroy(): void {\n this.unbindValueInputMouseWheel();\n this.inputStreamSub.unsubscribe();\n }\n\n public upBtnClicked(): void {\n this.updateValue(this.value + this.step);\n }\n\n public downBtnClicked(): void {\n this.updateValue(this.value - this.step);\n }\n\n public handleInputChange(val: string): void {\n this.inputStream.next(val);\n }\n\n public focusIn(): void {\n this.hasFocus = true;\n }\n\n public focusOut(value: string): void {\n this.hasFocus = false;\n if (value) {\n const inputValue = coerceNumberProperty(value, 0);\n this.updateValueViaInput(inputValue);\n }\n }\n\n private updateValue(value: number): void {\n this.valueChange.emit(value);\n }\n\n private updateValueViaInput(value: number): void {\n if (value > this.max || value < this.min) {\n return;\n }\n this.inputChange.emit(value);\n }\n\n private onValueInputMouseWheel(event: WheelEvent): void {\n const delta = -event.deltaY || -event.detail;\n\n if (delta > 0) {\n if (!this.upBtnDisabled) {\n this.upBtnClicked();\n }\n } else if (delta < 0) {\n if (!this.downBtnDisabled) {\n this.downBtnClicked();\n }\n }\n\n if (event.preventDefault) {\n event.preventDefault();\n } else {\n event.returnValue = false;\n }\n }\n\n private bindValueInputMouseWheel(): void {\n this.valueInput.nativeElement.addEventListener(\n 'onwheel' in document ? 'wheel' : 'mousewheel',\n this.onValueInputMouseWheelBind\n );\n }\n\n private unbindValueInputMouseWheel(): void {\n this.valueInput.nativeElement.removeEventListener(\n 'onwheel' in document ? 'wheel' : 'mousewheel',\n this.onValueInputMouseWheelBind\n );\n }\n}\n","@if (showDivider) {\n <div\n aria-hidden=\"true\"\n class=\"owl-dt-timer-divider\"></div>\n}\n<button\n [attr.aria-label]=\"upBtnAriaLabel\"\n [disabled]=\"upBtnDisabled\"\n (click)=\"upBtnClicked()\"\n class=\"owl-dt-control-button owl-dt-control-arrow-button\"\n tabindex=\"-1\"\n type=\"button\">\n <span\n class=\"owl-dt-control-button-content\"\n tabindex=\"-1\">\n <svg\n xml:space=\"preserve\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n height=\"100%\"\n style=\"enable-background: new 0 0 451.847 451.846\"\n version=\"1.1\"\n viewBox=\"0 0 451.847 451.846\"\n width=\"100%\"\n x=\"0px\"\n xmlns=\"http://www.w3.org/2000/svg\"\n y=\"0px\">\n <path\n d=\"M248.292,106.406l194.281,194.29c12.365,12.359,12.365,32.391,0,44.744c-12.354,12.354-32.391,12.354-44.744,0\n L225.923,173.529L54.018,345.44c-12.36,12.354-32.395,12.354-44.748,0c-12.359-12.354-12.359-32.391,0-44.75L203.554,106.4\n c6.18-6.174,14.271-9.259,22.369-9.259C234.018,97.141,242.115,100.232,248.292,106.406z\" />\n </svg>\n </span>\n</button>\n<label class=\"owl-dt-timer-content\">\n <input\n #valueInput\n [value]=\"displayValue\"\n (focusin)=\"focusIn()\"\n (focusout)=\"focusOut(valueInput.value)\"\n (input)=\"handleInputChange(valueInput.value)\"\n (keydown.arrowdown)=\"!downBtnDisabled && downBtnClicked()\"\n (keydown.arrowup)=\"!upBtnDisabled && upBtnClicked()\"\n class=\"owl-dt-timer-input\"\n maxlength=\"2\" />\n <span class=\"owl-hidden-accessible\">{{ inputLabel }}</span>\n</label>\n<button\n [attr.aria-label]=\"downBtnAriaLabel\"\n [disabled]=\"downBtnDisabled\"\n (click)=\"downBtnClicked()\"\n class=\"owl-dt-control-button owl-dt-control-arrow-button\"\n tabindex=\"-1\"\n type=\"button\">\n <span\n class=\"owl-dt-control-button-content\"\n tabindex=\"-1\">\n <svg\n xml:space=\"preserve\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n height=\"100%\"\n style=\"enable-background: new 0 0 451.847 451.846\"\n version=\"1.1\"\n viewBox=\"0 0 451.847 451.846\"\n width=\"100%\"\n x=\"0px\"\n xmlns=\"http://www.w3.org/2000/svg\"\n y=\"0px\">\n <path\n d=\"M225.923,354.706c-8.098,0-16.195-3.092-22.369-9.263L9.27,151.157c-12.359-12.359-12.359-32.397,0-44.751\n c12.354-12.354,32.388-12.354,44.748,0l171.905,171.915l171.906-171.909c12.359-12.354,32.391-12.354,44.744,0\n c12.365,12.354,12.365,32.392,0,44.751L248.292,345.449C242.115,351.621,234.018,354.706,225.923,354.706z\" />\n </svg>\n </span>\n</button>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n inject,\n Input,\n input,\n NgZone,\n output\n} from '@angular/core';\nimport { take } from 'rxjs/operators';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\n\n@Component({\n standalone: false,\n exportAs: 'owlDateTimeTimer',\n selector: 'owl-date-time-timer',\n templateUrl: './timer.component.html',\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.tabindex]': '-1',\n 'class': 'owl-dt-timer'\n }\n})\nexport class OwlTimerComponent<T> {\n private readonly ngZone = inject(NgZone);\n private readonly elmRef = inject(ElementRef);\n private readonly pickerIntl = inject(OwlDateTimeIntl);\n private readonly cdRef = inject(ChangeDetectorRef);\n private readonly dateTimeAdapter = inject(DateTimeAdapter<T>, { optional: true });\n\n /** The current picker moment */\n private _pickerMoment: T;\n @Input()\n public get pickerMoment(): T {\n return this._pickerMoment;\n }\n public set pickerMoment(value: T) {\n value = this.dateTimeAdapter.deserialize(value);\n this._pickerMoment = this.getValidDate(value) || this.dateTimeAdapter.now();\n }\n\n /** The minimum selectable date time. */\n private _minDateTime: T | null;\n @Input()\n public get minDateTime(): T | null {\n return this._minDateTime;\n }\n public set minDateTime(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._minDateTime = this.getValidDate(value);\n }\n\n /** The maximum selectable date time. */\n private _maxDateTime: T | null;\n @Input()\n public get maxDateTime(): T | null {\n return this._maxDateTime;\n }\n public set maxDateTime(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._maxDateTime = this.getValidDate(value);\n }\n\n private isPM = false; // a flag indicates the current timer moment is in PM or AM\n\n /**\n * Whether to show the second's timer\n */\n public readonly showSecondsTimer = input<boolean>(undefined);\n\n /**\n * Whether the timer is in hour12 format\n */\n public readonly hour12Timer = input<boolean>(undefined);\n\n /**\n * Hours to change per step\n */\n public readonly stepHour = input(1);\n\n /**\n * Minutes to change per step\n */\n public readonly stepMinute = input(1);\n\n /**\n * Seconds to change per step\n */\n public readonly stepSecond = input(1);\n\n public readonly selectedChange = output<T>();\n\n protected get hourValue(): number {\n return this.dateTimeAdapter.getHours(this.pickerMoment);\n }\n\n /**\n * The value would be displayed in hourBox.\n * We need this because the value displayed in hourBox it not\n * the same as the hourValue when the timer is in hour12Timer mode.\n */\n protected get hourBoxValue(): number {\n let hours = this.hourValue;\n\n if (!this.hour12Timer()) {\n return hours;\n } else {\n if (hours === 0) {\n hours = 12;\n this.isPM = false;\n } else if (hours > 0 && hours < 12) {\n this.isPM = false;\n } else if (hours === 12) {\n this.isPM = true;\n } else if (hours > 12 && hours < 24) {\n hours = hours - 12;\n this.isPM = true;\n }\n\n return hours;\n }\n }\n\n protected get minuteValue(): number {\n return this.dateTimeAdapter.getMinutes(this.pickerMoment);\n }\n\n protected get secondValue(): number {\n return this.dateTimeAdapter.getSeconds(this.pickerMoment);\n }\n\n protected get upHourButtonLabel(): string {\n return this.pickerIntl.upHourLabel;\n }\n\n protected get downHourButtonLabel(): string {\n return this.pickerIntl.downHourLabel;\n }\n\n protected get upMinuteButtonLabel(): string {\n return this.pickerIntl.upMinuteLabel;\n }\n\n protected get downMinuteButtonLabel(): string {\n return this.pickerIntl.downMinuteLabel;\n }\n\n protected get upSecondButtonLabel(): string {\n return this.pickerIntl.upSecondLabel;\n }\n\n protected get downSecondButtonLabel(): string {\n return this.pickerIntl.downSecondLabel;\n }\n\n protected get hour12ButtonLabel(): string {\n return this.isPM ? this.pickerIntl.hour12PMLabel : this.pickerIntl.hour12AMLabel;\n }\n\n /**\n * Focus to the host element\n */\n public focus(): void {\n this.ngZone.runOutsideAngular(() => {\n this.ngZone.onStable\n .asObservable()\n .pipe(take(1))\n .subscribe(() => {\n this.elmRef.nativeElement.focus();\n });\n });\n }\n\n /**\n * Set the hour value via typing into timer box input\n * We need this to handle the hour value when the timer is in hour12 mode\n */\n public setHourValueViaInput(hours: number): void {\n const hour12Timer = this.hour12Timer();\n if (hour12Timer && this.isPM && hours >= 1 && hours <= 11) {\n hours = hours + 12;\n } else if (hour12Timer && !this.isPM && hours === 12) {\n hours = 0;\n }\n\n this.setHourValue(hours);\n }\n\n public setHourValue(hours: number): void {\n const m = this.dateTimeAdapter.setHours(this.pickerMoment, hours);\n this.selectedChange.emit(m);\n this.cdRef.markForCheck();\n }\n\n public setMinuteValue(minutes: number): void {\n const m = this.dateTimeAdapter.setMinutes(this.pickerMoment, minutes);\n this.selectedChange.emit(m);\n this.cdRef.markForCheck();\n }\n\n public setSecondValue(seconds: number): void {\n const m = this.dateTimeAdapter.setSeconds(this.pickerMoment, seconds);\n this.selectedChange.emit(m);\n this.cdRef.markForCheck();\n }\n\n public setMeridiem(event: Event): void {\n this.isPM = !this.isPM;\n\n let hours = this.hourValue;\n if (this.isPM) {\n hours = hours + 12;\n } else {\n hours = hours - 12;\n }\n\n if (hours >= 0 && hours <= 23) {\n this.setHourValue(hours);\n }\n\n this.cdRef.markForCheck();\n event.preventDefault();\n }\n\n /**\n * Check if the up hour button is enabled\n */\n public upHourEnabled(): boolean {\n return !this.maxDateTime || this.compareHours(this.stepHour(), this.maxDateTime) < 1;\n }\n\n /**\n * Check if the down hour button is enabled\n */\n public downHourEnabled(): boolean {\n return !this.minDateTime || this.compareHours(-this.stepHour(), this.minDateTime) > -1;\n }\n\n /**\n * Check if the up minute button is enabled\n */\n public upMinuteEnabled(): boolean {\n return !this.maxDateTime || this.compareMinutes(this.stepMinute(), this.maxDateTime) < 1;\n }\n\n /**\n * Check if the down minute button is enabled\n */\n public downMinuteEnabled(): boolean {\n return !this.minDateTime || this.compareMinutes(-this.stepMinute(), this.minDateTime) > -1;\n }\n\n /**\n * Check if the up second button is enabled\n */\n public upSecondEnabled(): boolean {\n return !this.maxDateTime || this.compareSeconds(this.stepSecond(), this.maxDateTime) < 1;\n }\n\n /**\n * Check if the down second button is enabled\n */\n public downSecondEnabled(): boolean {\n return !this.minDateTime || this.compareSeconds(-this.stepSecond(), this.minDateTime) > -1;\n }\n\n /**\n * PickerMoment's hour value +/- certain amount and compare it to the give date\n * 1 is after the comparedDate\n * -1 is before the comparedDate\n * 0 is equal the comparedDate\n */\n private compareHours(amount: number, comparedDate: T): number {\n const hours = this.dateTimeAdapter.getHours(this.pickerMoment) + amount;\n const result = this.dateTimeAdapter.setHours(this.pickerMoment, hours);\n return this.dateTimeAdapter.compare(result, comparedDate);\n }\n\n /**\n * PickerMoment's minute value +/- certain amount and compare it to the give date\n * 1 is after the comparedDate\n * -1 is before the comparedDate\n * 0 is equal the comparedDate\n */\n private compareMinutes(amount: number, comparedDate: T): number {\n const minutes = this.dateTimeAdapter.getMinutes(this.pickerMoment) + amount;\n const result = this.dateTimeAdapter.setMinutes(this.pickerMoment, minutes);\n return this.dateTimeAdapter.compare(result, comparedDate);\n }\n\n /**\n * PickerMoment's second value +/- certain amount and compare it to the give date\n * 1 is after the comparedDate\n * -1 is before the comparedDate\n * 0 is equal the comparedDate\n */\n private compareSeconds(amount: number, comparedDate: T): number {\n const seconds = this.dateTimeAdapter.getSeconds(this.pickerMoment) + amount;\n const result = this.dateTimeAdapter.setSeconds(this.pickerMoment, seconds);\n return this.dateTimeAdapter.compare(result, comparedDate);\n }\n\n /**\n * Get a valid date object\n */\n private getValidDate(obj: unknown): T | null {\n return this.dateTimeAdapter.isDateInstance(obj) && this.dateTimeAdapter.isValid(obj) ? obj : null;\n }\n}\n","<owl-date-time-timer-box\n [boxValue]=\"hourBoxValue\"\n [downBtnAriaLabel]=\"downHourButtonLabel\"\n [downBtnDisabled]=\"!downHourEnabled()\"\n [inputLabel]=\"'Hour'\"\n [max]=\"23\"\n [min]=\"0\"\n [step]=\"stepHour()\"\n [upBtnAriaLabel]=\"upHourButtonLabel\"\n [upBtnDisabled]=\"!upHourEnabled()\"\n [value]=\"hourValue\"\n (inputChange)=\"setHourValueViaInput($event)\"\n (valueChange)=\"setHourValue($event)\"></owl-date-time-timer-box>\n<owl-date-time-timer-box\n [downBtnAriaLabel]=\"downMinuteButtonLabel\"\n [downBtnDisabled]=\"!downMinuteEnabled()\"\n [inputLabel]=\"'Minute'\"\n [max]=\"59\"\n [min]=\"0\"\n [showDivider]=\"true\"\n [step]=\"stepMinute()\"\n [upBtnAriaLabel]=\"upMinuteButtonLabel\"\n [upBtnDisabled]=\"!upMinuteEnabled()\"\n [value]=\"minuteValue\"\n (inputChange)=\"setMinuteValue($event)\"\n (valueChange)=\"setMinuteValue($event)\"></owl-date-time-timer-box>\n\n@if (showSecondsTimer()) {\n <owl-date-time-timer-box\n [downBtnAriaLabel]=\"downSecondButtonLabel\"\n [downBtnDisabled]=\"!downSecondEnabled()\"\n [inputLabel]=\"'Second'\"\n [max]=\"59\"\n [min]=\"0\"\n [showDivider]=\"true\"\n [step]=\"stepSecond()\"\n [upBtnAriaLabel]=\"upSecondButtonLabel\"\n [upBtnDisabled]=\"!upSecondEnabled()\"\n [value]=\"secondValue\"\n (inputChange)=\"setSecondValue($event)\"\n (valueChange)=\"setSecondValue($event)\"></owl-date-time-timer-box>\n}\n\n@if (hour12Timer()) {\n <div class=\"owl-dt-timer-hour12\">\n <button\n (click)=\"setMeridiem($event)\"\n class=\"owl-dt-control-button owl-dt-timer-hour12-box\"\n tabindex=\"0\"\n type=\"button\">\n <span\n class=\"owl-dt-control-button-content\"\n tabindex=\"-1\">\n {{ hour12ButtonLabel }}\n </span>\n </button>\n </div>\n}\n","import { DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, SPACE, UP_ARROW } from '@angular/cdk/keycodes';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n inject,\n Input,\n OnInit,\n ViewChild\n} from '@angular/core';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport { OwlCalendarComponent } from './calendar.component';\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\nimport { OwlDateTime, PickerType } from './date-time.class';\nimport { OwlTimerComponent } from './timer.component';\n\n@Component({\n standalone: false,\n exportAs: 'owlDateTimeContainer',\n selector: 'owl-date-time-container',\n templateUrl: './date-time-picker-container.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n host: {\n '[attr.id]': 'picker.id',\n '[class.owl-dt-container-disabled]': 'picker.disabled',\n 'class': 'owl-dt-container owl-dt-inline-container'\n }\n})\nexport class OwlDateTimeContainerComponent<T> implements OnInit, AfterContentInit {\n private readonly cdRef = inject(ChangeDetectorRef);\n private readonly elmRef = inject(ElementRef);\n private readonly pickerIntl = inject(OwlDateTimeIntl);\n private readonly dateTimeAdapter = inject(DateTimeAdapter, { optional: true });\n\n @ViewChild(OwlCalendarComponent)\n protected calendar: OwlCalendarComponent<T>;\n\n @ViewChild(OwlTimerComponent)\n protected timer: OwlTimerComponent<T>;\n\n public picker: OwlDateTime<T>;\n public activeSelectedIndex = 0; // The current active SelectedIndex in range select mode (0: 'from', 1: 'to')\n\n // retain start and end time\n private retainStartTime: T;\n private retainEndTime: T;\n\n @Input()\n public showTodayButton: boolean = false;\n\n /**\n * The current picker moment. This determines which time period is shown and which date is\n * highlighted when using keyboard navigation.\n */\n private _clamPickerMoment: T;\n\n get pickerMoment(): T {\n return this._clamPickerMoment;\n }\n\n set pickerMoment(value: T) {\n if (value) {\n this._clamPickerMoment = this.dateTimeAdapter.clampDate(value, this.picker.minDateTime, this.picker.maxDateTime);\n }\n this.cdRef.markForCheck();\n }\n\n get pickerType(): PickerType {\n return this.picker.pickerType;\n }\n\n /**\n * The range 'from' label\n */\n get fromLabel(): string {\n return this.pickerIntl.rangeFromLabel;\n }\n\n /**\n * The range 'to' label\n */\n get toLabel(): string {\n return this.pickerIntl.rangeToLabel;\n }\n\n /**\n * The range 'from' formatted value\n */\n get fromFormattedValue(): string {\n const value = this.picker.selecteds[0];\n return value ? this.dateTimeAdapter.format(value, this.picker.displayFormat) : '';\n }\n\n /**\n * The range 'to' formatted value\n */\n get toFormattedValue(): string {\n const value = this.picker.selecteds[1];\n return value ? this.dateTimeAdapter.format(value, this.picker.displayFormat) : '';\n }\n\n get containerElm(): HTMLElement {\n return this.elmRef.nativeElement;\n }\n\n public ngOnInit(): void {\n if (this.picker.selectMode === 'range') {\n if (this.picker.selecteds[0]) {\n this.retainStartTime = this.dateTimeAdapter.clone(this.picker.selecteds[0]);\n }\n if (this.picker.selecteds[1]) {\n this.retainEndTime = this.dateTimeAdapter.clone(this.picker.selecteds[1]);\n }\n }\n }\n\n public ngAfterContentInit(): void {\n this.initPicker();\n }\n\n public dateSelected(date: T): void {\n let result;\n\n if (this.picker.isInSingleMode) {\n result = this.dateSelectedInSingleMode(date);\n if (result) {\n this.pickerMoment = result;\n this.picker.select(result);\n }\n return;\n }\n\n if (this.picker.isInRangeMode) {\n result = this.dateSelectedInRangeMode(date);\n if (result) {\n this.pickerMoment = result[this.activeSelectedIndex];\n this.picker.select(result);\n }\n }\n }\n\n public timeSelected(time: T): void {\n this.pickerMoment = this.dateTimeAdapter.clone(time);\n\n if (!this.picker.dateTimeChecker(this.pickerMoment)) {\n return;\n }\n\n if (this.picker.isInSingleMode) {\n this.picker.select(this.pickerMoment);\n return;\n }\n\n if (this.picker.isInRangeMode) {\n const selecteds = [...this.picker.selecteds];\n\n // check if the 'from' is after 'to' or 'to'is before 'from'\n // In this case, we set both the 'from' and 'to' the same value\n if (\n (this.activeSelectedIndex === 0 &&\n selecteds[1] &&\n this.dateTimeAdapter.compare(this.pickerMoment, selecteds[1]) === 1) ||\n (this.activeSelectedIndex === 1 &&\n selecteds[0] &&\n this.dateTimeAdapter.compare(this.pickerMoment, selecteds[0]) === -1)\n ) {\n selecteds[0] = this.pickerMoment;\n selecteds[1] = this.pickerMoment;\n } else {\n selecteds[this.activeSelectedIndex] = this.pickerMoment;\n }\n\n if (selecteds[0]) {\n this.retainStartTime = this.dateTimeAdapter.clone(selecteds[0]);\n }\n if (selecteds[1]) {\n this.retainEndTime = this.dateTimeAdapter.clone(selecteds[1]);\n }\n this.picker.select(selecteds);\n }\n }\n\n /**\n * Handle click on inform radio group\n */\n public handleClickOnInfoGroup(event: Event, index: number): void {\n this.setActiveSelectedIndex(index);\n event.preventDefault();\n event.stopPropagation();\n }\n\n /**\n * Handle click on inform radio group\n */\n public handleKeydownOnInfoGroup(event: KeyboardEvent, next: HTMLElement, index: number): void {\n switch (event.keyCode) {\n case DOWN_ARROW:\n case RIGHT_ARROW:\n case UP_ARROW:\n case LEFT_ARROW:\n next.focus();\n this.setActiveSelectedIndex(index === 0 ? 1 : 0);\n event.preventDefault();\n event.stopPropagation();\n break;\n\n case SPACE:\n this.setActiveSelectedIndex(index);\n event.preventDefault();\n event.stopPropagation();\n break;\n\n default:\n return;\n }\n }\n\n /**\n * Set the value of activeSelectedIndex\n */\n private setActiveSelectedIndex(index: number): void {\n if (this.picker.selectMode === 'range' && this.activeSelectedIndex !== index) {\n this.activeSelectedIndex = index;\n\n const selected = this.picker.selecteds[this.activeSelectedIndex];\n if (this.picker.selecteds && selected) {\n this.pickerMoment = this.dateTimeAdapter.clone(selected);\n }\n }\n return;\n }\n\n private initPicker(): void {\n this.pickerMoment = this.picker.startAt || this.dateTimeAdapter.now();\n this.activeSelectedIndex = this.picker.selectMode === 'rangeTo' ? 1 : 0;\n }\n\n /**\n * Select calendar date in single mode,\n * it returns null when date is not selected.\n */\n private dateSelectedInSingleMode(date: T): T | null {\n if (this.dateTimeAdapter.isSameDay(date, this.picker.selected)) {\n return null;\n }\n\n return this.updateAndCheckCalendarDate(date);\n }\n\n /**\n * Select dates in range Mode\n */\n private dateSelectedInRangeMode(date: T): Array<T> | null {\n let from = this.picker.selecteds[0];\n let to = this.picker.selecteds[1];\n\n const result = this.updateAndCheckCalendarDate(date);\n\n if (!result) {\n return null;\n }\n\n // if the given calendar day is after or equal to 'from',\n // set ths given date as 'to'\n // otherwise, set it as 'from' and set 'to' to null\n if (this.picker.selectMode === 'range') {\n if (\n this.picker.selecteds?.length &&\n !to &&\n from &&\n this.dateTimeAdapter.differenceInCalendarDays(result, from) >= 0\n ) {\n if (this.picker.endAt && !this.retainEndTime) {\n to = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(result),\n this.dateTimeAdapter.getMonth(result),\n this.dateTimeAdapter.getDate(result),\n this.dateTimeAdapter.getHours(this.picker.endAt),\n this.dateTimeAdapter.getMinutes(this.picker.endAt),\n this.dateTimeAdapter.getSeconds(this.picker.endAt)\n );\n } else if (this.retainEndTime) {\n to = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(result),\n this.dateTimeAdapter.getMonth(result),\n this.dateTimeAdapter.getDate(result),\n this.dateTimeAdapter.getHours(this.retainEndTime),\n this.dateTimeAdapter.getMinutes(this.retainEndTime),\n this.dateTimeAdapter.getSeconds(this.retainEndTime)\n );\n } else {\n to = result;\n }\n this.activeSelectedIndex = 1;\n } else {\n if (this.picker.startAt && !this.retainStartTime) {\n from = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(result),\n this.dateTimeAdapter.getMonth(result),\n this.dateTimeAdapter.getDate(result),\n this.dateTimeAdapter.getHours(this.picker.startAt),\n this.dateTimeAdapter.getMinutes(this.picker.startAt),\n this.dateTimeAdapter.getSeconds(this.picker.startAt)\n );\n } else if (this.retainStartTime) {\n from = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(result),\n this.dateTimeAdapter.getMonth(result),\n this.dateTimeAdapter.getDate(result),\n this.dateTimeAdapter.getHours(this.retainStartTime),\n this.dateTimeAdapter.getMinutes(this.retainStartTime),\n this.dateTimeAdapter.getSeconds(this.retainStartTime)\n );\n } else {\n from = result;\n }\n to = null;\n this.activeSelectedIndex = 0;\n }\n } else if (this.picker.selectMode === 'rangeFrom') {\n from = result;\n\n // if the from value is after the to value, set the to value as null\n if (to && this.dateTimeAdapter.compare(from, to) > 0) {\n to = null;\n }\n } else if (this.picker.selectMode === 'rangeTo') {\n to = result;\n\n // if the from value is after the to value, set the from value as null\n if (from && this.dateTimeAdapter.compare(from, to) > 0) {\n from = null;\n }\n }\n\n return [from, to];\n }\n\n /**\n * Update the given calendar date's time and check if it is valid\n * Because the calendar date has 00:00:00 as default time, if the picker type is 'both',\n * we need to update the given calendar date's time before selecting it.\n * if it is valid, return the updated dateTime\n * if it is not valid, return null\n */\n private updateAndCheckCalendarDate(date: T): T {\n let result;\n\n // if the picker is 'both', update the calendar date's time value\n if (this.picker.pickerType === 'both') {\n result = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(date),\n this.dateTimeAdapter.getMonth(date),\n this.dateTimeAdapter.getDate(date),\n this.dateTimeAdapter.getHours(this.pickerMoment),\n this.dateTimeAdapter.getMinutes(this.pickerMoment),\n this.dateTimeAdapter.getSeconds(this.pickerMoment)\n );\n result = this.dateTimeAdapter.clampDate(result, this.picker.minDateTime, this.picker.maxDateTime);\n } else {\n result = this.dateTimeAdapter.clone(date);\n }\n\n // check the updated dateTime\n return this.picker.dateTimeChecker(result) ? result : null;\n }\n}\n","<div class=\"owl-dt-container-inner\">\n @if (pickerType === 'both' || pickerType === 'calendar') {\n <owl-date-time-calendar\n [dateFilter]=\"picker.dateTimeFilter\"\n [firstDayOfWeek]=\"picker.firstDayOfWeek\"\n [hideOtherMonths]=\"picker.hideOtherMonths\"\n [maxDate]=\"picker.maxDateTime\"\n [minDate]=\"picker.minDateTime\"\n [multiyearOnly]=\"picker.multiyearOnly\"\n [selectMode]=\"picker.selectMode\"\n [selected]=\"picker.selected\"\n [selecteds]=\"picker.selecteds\"\n [showTodayButton]=\"showTodayButton\"\n [startView]=\"picker.startView\"\n [yearOnly]=\"picker.yearOnly\"\n [(pickerMoment)]=\"pickerMoment\"\n (dateClicked)=\"picker.selectDate($event)\"\n (monthSelected)=\"picker.selectMonth($event)\"\n (selectedChange)=\"dateSelected($event)\"\n (yearSelected)=\"picker.selectYear($event)\"\n class=\"owl-dt-container-row\"></owl-date-time-calendar>\n }\n\n @if (pickerType === 'both' || pickerType === 'timer') {\n <owl-date-time-timer\n [hour12Timer]=\"picker.hour12Timer\"\n [maxDateTime]=\"picker.maxDateTime\"\n [minDateTime]=\"picker.minDateTime\"\n [pickerMoment]=\"pickerMoment\"\n [showSecondsTimer]=\"picker.showSecondsTimer\"\n [stepHour]=\"picker.stepHour\"\n [stepMinute]=\"picker.stepMinute\"\n [stepSecond]=\"picker.stepSecond\"\n (selectedChange)=\"timeSelected($event)\"\n class=\"owl-dt-container-row\"></owl-date-time-timer>\n }\n\n @if (picker.isInRangeMode) {\n <div\n class=\"owl-dt-container-info owl-dt-container-row\"\n role=\"radiogroup\">\n <div\n #from\n [attr.aria-checked]=\"activeSelectedIndex === 0\"\n [class.owl-dt-container-info-active]=\"activeSelectedIndex === 0\"\n [tabindex]=\"activeSelectedIndex === 0 ? 0 : -1\"\n (click)=\"handleClickOnInfoGroup($event, 0)\"\n (keydown)=\"handleKeydownOnInfoGroup($event, to, 0)\"\n class=\"owl-dt-control owl-dt-container-range owl-dt-container-from\"\n role=\"radio\">\n <span\n class=\"owl-dt-control-content owl-dt-container-range-content\"\n tabindex=\"-1\">\n <span class=\"owl-dt-container-info-label\">{{ fromLabel }}:</span>\n <span class=\"owl-dt-container-info-value\">{{ fromFormattedValue }}</span>\n </span>\n </div>\n <div\n #to\n [attr.aria-checked]=\"activeSelectedIndex === 1\"\n [class.owl-dt-container-info-active]=\"activeSelectedIndex === 1\"\n [tabindex]=\"activeSelectedIndex === 1 ? 0 : -1\"\n (click)=\"handleClickOnInfoGroup($event, 1)\"\n (keydown)=\"handleKeydownOnInfoGroup($event, from, 1)\"\n class=\"owl-dt-control owl-dt-container-range owl-dt-container-to\"\n role=\"radio\">\n <span\n class=\"owl-dt-control-content owl-dt-container-range-content\"\n tabindex=\"-1\">\n <span class=\"owl-dt-container-info-label\">{{ toLabel }}:</span>\n <span class=\"owl-dt-container-info-value\">{{ toFormattedValue }}</span>\n </span>\n </div>\n </div>\n }\n</div>\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n inject,\n Input,\n OnInit,\n output,\n type Provider,\n viewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { OwlDateTimeContainerComponent } from './date-time-picker-container.component';\nimport { OwlDateTime, PickerType, SelectMode } from './date-time.class';\n\nconst OWL_DATETIME_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => OwlDateTimeInlineComponent),\n multi: true\n};\n\n@Component({\n standalone: false,\n selector: 'owl-date-time-inline',\n templateUrl: './date-time-inline.component.html',\n host: { 'class': 'owl-dt-inline' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n providers: [OWL_DATETIME_VALUE_ACCESSOR]\n})\nexport class OwlDateTimeInlineComponent<T> extends OwlDateTime<T> implements OnInit, ControlValueAccessor {\n readonly #changeDetector = inject(ChangeDetectorRef);\n\n protected readonly container = viewChild(OwlDateTimeContainerComponent);\n\n /**\n * Set the type of the dateTime picker\n * 'both' -- show both calendar and timer\n * 'calendar' -- show only calendar\n * 'timer' -- show only timer\n */\n @Input()\n public pickerType: PickerType;\n\n @Input({ transform: booleanAttribute })\n public disabled: boolean = false;\n\n private _selectMode: SelectMode = 'single';\n @Input()\n public get selectMode(): SelectMode {\n return this._selectMode;\n }\n public set selectMode(mode: SelectMode) {\n if (mode !== 'single' && mode !== 'range' && mode !== 'rangeFrom' && mode !== 'rangeTo') {\n mode = 'single';\n }\n this._selectMode = mode;\n }\n\n /** The date to open the calendar to initially. */\n private _startAt: T | null;\n @Input()\n public get startAt(): T | null {\n if (this._startAt) {\n return this._startAt;\n }\n\n if (this.selectMode === 'single') {\n return this.value || null;\n } else if (this.selectMode === 'range' || this.selectMode === 'rangeFrom') {\n return this.values[0] || null;\n } else if (this.selectMode === 'rangeTo') {\n return this.values[1] || null;\n } else {\n return null;\n }\n }\n public set startAt(date: T | null) {\n this._startAt = this.getValidDate(this.dateTimeAdapter.deserialize(date));\n }\n\n /** The date to open for range calendar. */\n private _endAt: T | null;\n @Input()\n public get endAt(): T | null {\n if (this._endAt) {\n return this._endAt;\n }\n\n if (this.selectMode === 'single') {\n return this.value || null;\n } else if (this.selectMode === 'range' || this.selectMode === 'rangeFrom') {\n return this.values[1] || null;\n } else {\n return null;\n }\n }\n public set endAt(date: T | null) {\n this._endAt = this.getValidDate(this.dateTimeAdapter.deserialize(date));\n }\n\n private _dateTimeFilter: (date: T | null) => boolean;\n @Input('owlDateTimeFilter')\n public get dateTimeFilter(): (date: T | null) => boolean {\n return this._dateTimeFilter;\n }\n public set dateTimeFilter(filter: (date: T | null) => boolean) {\n this._dateTimeFilter = filter;\n }\n\n /** The minimum valid date. */\n private _min: T | null;\n\n @Input('min')\n public get minDateTime(): T | null {\n return this._min || null;\n }\n public set minDateTime(value: T | null) {\n this._min = this.getValidDate(this.dateTimeAdapter.deserialize(value));\n this.#changeDetector.markForCheck();\n }\n\n /** The maximum valid date. */\n private _max: T | null;\n\n @Input('max')\n public get maxDateTime(): T | null {\n return this._max || null;\n }\n public set maxDateTime(value: T | null) {\n this._max = this.getValidDate(this.dateTimeAdapter.deserialize(value));\n this.#changeDetector.markForCheck();\n }\n\n private _value: T | null;\n @Input()\n public get value(): T | null {\n return this._value;\n }\n public set value(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n value = this.getValidDate(value);\n this._value = value;\n this.selected = value;\n }\n\n private _values: Array<T> = [];\n @Input()\n public get values(): Array<T> {\n return this._values;\n }\n public set values(values: Array<T>) {\n if (values && values.length > 0) {\n values = values.map((v) => {\n v = this.dateTimeAdapter.deserialize(v);\n v = this.getValidDate(v);\n return v ? this.dateTimeAdapter.clone(v) : null;\n });\n this._values = [...values];\n this.selecteds = [...values];\n } else {\n this._values = [];\n this.selecteds = [];\n }\n }\n\n /**\n * Limit to the amount of days that can be selected at once.\n */\n @Input()\n public rangeLimit: number | null = null;\n\n /**\n * Flag to show today button to jump to today's date. Defaults to `false`.\n */\n @Input({ transform: booleanAttribute })\n public showTodayButton = false;\n\n /**\n * Variable to hold the old max date time value for when we override it with rangeLimit\n */\n private _initialMaxDateTime: T | null;\n\n /**\n * Emits selected year in multi-year view\n * This doesn't imply a change on the selected date.\n */\n public readonly yearSelected = output<T>();\n\n /**\n * Emits selected month in year view\n * This doesn't imply a change on the selected date.\n */\n public readonly monthSelected = output<T>();\n\n /**\n * Emits selected date\n */\n public readonly dateSelected = output<T>();\n\n private _selected: T | null;\n public get selected(): T | null {\n return this._selected;\n }\n public set selected(value: T | null) {\n this._selected = value;\n this.#changeDetector.markForCheck();\n }\n\n private _selecteds: Array<T> = [];\n public get selecteds(): Array<T> {\n return this._selecteds;\n }\n\n public set selecteds(values: Array<T>) {\n this._selecteds = values;\n this.#changeDetector.markForCheck();\n }\n\n public override readonly opened = true;\n\n public get isInSingleMode(): boolean {\n return this._selectMode === 'single';\n }\n\n public get isInRangeMode(): boolean {\n return this._selectMode === 'range' || this._selectMode === 'rangeFrom' || this._selectMode === 'rangeTo';\n }\n\n private onModelChange: (v: T | Array<T>) => void = () => {\n /* noop */\n };\n\n private onModelTouched: () => void = () => {\n /* noop */\n };\n\n public ngOnInit(): void {\n this.container().picker = this;\n }\n\n public writeValue(value: unknown): void {\n if (this.isInSingleMode) {\n this.value = value as T;\n this.container().pickerMoment = value as T;\n } else {\n this.values = value as Array<T>;\n this.container().pickerMoment = this._values[this.container().activeSelectedIndex];\n }\n }\n\n public registerOnChange(fn: (v: T | Array<T>) => void): void {\n this.onModelChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this.onModelTouched = fn;\n }\n\n public select(date: Array<T> | T): void {\n if (this.disabled) {\n return;\n }\n\n if (Array.isArray(date)) {\n this.values = [...date];\n } else {\n this.value = date;\n }\n\n // If range limit is set, we need to set the max date time to the range limit, so days after the max range are not selectable\n if (this.rangeLimit && !this.values[1] && this.values[0]) {\n const rangeLimitDate = this.dateTimeAdapter.addCalendarDays(this.values[0], this.rangeLimit - 1);\n if (!this.maxDateTime || this.dateTimeAdapter.compare(this.maxDateTime, rangeLimitDate) > 0) {\n this._initialMaxDateTime = this.maxDateTime;\n this.maxDateTime = rangeLimitDate;\n }\n }\n\n // Reset the max date time to the initial value after a full range is selected\n if (this.rangeLimit && this.values[1]) {\n this.maxDateTime = this._initialMaxDateTime;\n }\n\n this.onModelChange(date);\n this.onModelTouched();\n }\n\n /**\n * Emits the selected year in multi-year view\n */\n public selectYear(normalizedYear: T): void {\n this.yearSelected.emit(normalizedYear);\n }\n\n /**\n * Emits selected month in year view\n */\n public selectMonth(normalizedMonth: T): void {\n this.monthSelected.emit(normalizedMonth);\n }\n\n /**\n * Emits the selected date\n */\n public selectDate(normalizedDate: T): void {\n this.dateSelected.emit(normalizedDate);\n }\n}\n","<owl-date-time-container [showTodayButton]=\"showTodayButton\"></owl-date-time-container>\n","/**\n * date-time.module\n */\n\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { NgModule } from '@angular/core';\nimport { OwlCalendarBodyComponent } from './calendar-body.component';\nimport { OwlMonthViewComponent } from './calendar-month-view.component';\nimport { OwlMultiYearViewComponent } from './calendar-multi-year-view.component';\nimport { OwlYearViewComponent } from './calendar-year-view.component';\nimport { OwlCalendarComponent } from './calendar.component';\nimport { OwlDateTimeInlineComponent } from './date-time-inline.component';\nimport { OwlDateTimeContainerComponent } from './date-time-picker-container.component';\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\nimport { optionsProviders } from './options-provider';\nimport { OwlTimerBoxComponent } from './timer-box.component';\nimport { OwlTimerComponent } from './timer.component';\n\n@NgModule({\n imports: [A11yModule],\n exports: [\n OwlCalendarComponent,\n OwlDateTimeInlineComponent,\n OwlMonthViewComponent,\n OwlMultiYearViewComponent,\n OwlTimerComponent,\n OwlYearViewComponent\n ],\n declarations: [\n OwlCalendarBodyComponent,\n OwlCalendarComponent,\n OwlDateTimeContainerComponent,\n OwlDateTimeInlineComponent,\n OwlMonthViewComponent,\n OwlMultiYearViewComponent,\n OwlTimerBoxComponent,\n OwlTimerComponent,\n OwlYearViewComponent\n ],\n providers: [OwlDateTimeIntl, ...optionsProviders]\n})\nexport class OwlDateTimeModule {}\n","/**\n * unix-timestamp-date-time-adapter.class\n */\n\nimport { Platform } from '@angular/cdk/platform';\nimport { inject, Injectable } from '@angular/core';\nimport { range } from '../../../utils/array.utils';\nimport {\n DEFAULT_DATE_NAMES,\n DEFAULT_DAY_OF_WEEK_NAMES,\n DEFAULT_MONTH_NAMES,\n SUPPORTS_INTL_API\n} from '../../../utils/constants';\nimport { createDate, getNumDaysInMonth } from '../../../utils/date.utils';\nimport { DateTimeAdapter, OWL_DATE_TIME_LOCALE } from '../date-time-adapter.class';\n\n@Injectable()\nexport class UnixTimestampDateTimeAdapter extends DateTimeAdapter<number> {\n private readonly owlDateTimeLocale = inject(OWL_DATE_TIME_LOCALE, { optional: true });\n private readonly platform = inject(Platform);\n\n constructor() {\n super();\n super.setLocale(this.owlDateTimeLocale);\n\n // IE does its own time zone correction, so we disable this on IE.\n this.useUtcForDisplay = !this.platform.TRIDENT;\n this._clampDate = this.platform.TRIDENT || this.platform.EDGE;\n }\n\n /** Whether to clamp the date between 1 and 9999 to avoid IE and Edge errors. */\n private readonly _clampDate: boolean;\n\n /**\n * Whether to use `timeZone: 'utc'` with `Intl.DateTimeFormat` when formatting dates.\n * Without this `Intl.DateTimeFormat` sometimes chooses the wrong timeZone, which can throw off\n * the result. (e.g. in the en-US locale `new Date(1800, 7, 14).toLocaleDateString()`\n * will produce `'8/13/1800'`.\n */\n public useUtcForDisplay: boolean;\n\n /**\n * Strip out unicode LTR and RTL characters. Edge and IE insert these into formatted dates while\n * other browsers do not. We remove them to make output consistent and because they interfere with\n * date parsing.\n */\n private static search_ltr_rtl_pattern = '/[\\u200e\\u200f]/g';\n private static stripDirectionalityCharacters(str: string): string {\n return str.replace(UnixTimestampDateTimeAdapter.search_ltr_rtl_pattern, '');\n }\n\n /**\n * When converting Date object to string, javascript built-in functions may return wrong\n * results because it applies its internal DST rules. The DST rules around the world change\n * very frequently, and the current valid rule is not always valid in previous years though.\n * We work around this problem building a new Date object which has its internal UTC\n * representation with the local date and time.\n */\n private static _format(dtf: Intl.DateTimeFormat, date: Date): string {\n const d = new Date(\n Date.UTC(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds()\n )\n );\n return dtf.format(d);\n }\n\n public addCalendarDays(date: number, amount: number): number {\n const result = new Date(date);\n amount = Number(amount);\n result.setDate(result.getDate() + amount);\n return result.getTime();\n }\n\n public addCalendarMonths(date: number, amount: number): number {\n const result = new Date(date);\n amount = Number(amount);\n\n const desiredMonth = result.getMonth() + amount;\n const dateWithDesiredMonth = new Date(0);\n dateWithDesiredMonth.setFullYear(result.getFullYear(), desiredMonth, 1);\n dateWithDesiredMonth.setHours(0, 0, 0, 0);\n\n const daysInMonth = this.getNumDaysInMonth(dateWithDesiredMonth.getTime());\n // Set the last day of the new month\n // if the original date was the last day of the longer month\n result.setMonth(desiredMonth, Math.min(daysInMonth, result.getDate()));\n return result.getTime();\n }\n\n public addCalendarYears(date: number, amount: number): number {\n return this.addCalendarMonths(date, amount * 12);\n }\n\n public clone(date: number): number {\n return date;\n }\n\n public createDate(\n year: number,\n month: number,\n date: number,\n hours: number = 0,\n minutes: number = 0,\n seconds: number = 0\n ): number {\n return createDate(year, month, date, hours, minutes, seconds).getTime();\n }\n\n public differenceInCalendarDays(dateLeft: number, dateRight: number): number {\n if (this.isValid(dateLeft) && this.isValid(dateRight)) {\n const dateLeftStartOfDay = this.createDate(\n this.getYear(dateLeft),\n this.getMonth(dateLeft),\n this.getDate(dateLeft)\n );\n const dateRightStartOfDay = this.createDate(\n this.getYear(dateRight),\n this.getMonth(dateRight),\n this.getDate(dateRight)\n );\n\n const timeStampLeft =\n this.getTime(dateLeftStartOfDay) - new Date(dateLeftStartOfDay).getTimezoneOffset() * this.milliseondsInMinute;\n const timeStampRight =\n this.getTime(dateRightStartOfDay) -\n new Date(dateRightStartOfDay).getTimezoneOffset() * this.milliseondsInMinute;\n return Math.round((timeStampLeft - timeStampRight) / this.millisecondsInDay);\n } else {\n return null;\n }\n }\n\n public format(date: number, displayFormat: Intl.DateTimeFormatOptions): string {\n if (!this.isValid(date)) {\n throw Error('JSNativeDate: Cannot format invalid date.');\n }\n\n const jsDate = new Date(date);\n\n if (SUPPORTS_INTL_API) {\n if (this._clampDate && (jsDate.getFullYear() < 1 || jsDate.getFullYear() > 9999)) {\n jsDate.setFullYear(Math.max(1, Math.min(9999, jsDate.getFullYear())));\n }\n\n displayFormat = { ...displayFormat, timeZone: 'utc' };\n const dtf = new Intl.DateTimeFormat(this.locale, displayFormat);\n return UnixTimestampDateTimeAdapter.stripDirectionalityCharacters(\n UnixTimestampDateTimeAdapter._format(dtf, jsDate)\n );\n }\n\n return UnixTimestampDateTimeAdapter.stripDirectionalityCharacters(jsDate.toDateString());\n }\n\n public getDate(date: number): number {\n return new Date(date).getDate();\n }\n\n public getDateNames(): Array<string> {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.locale, {\n day: 'numeric',\n timeZone: 'utc'\n });\n return range(31, (i) =>\n UnixTimestampDateTimeAdapter.stripDirectionalityCharacters(\n UnixTimestampDateTimeAdapter._format(dtf, new Date(2017, 0, i + 1))\n )\n );\n }\n return DEFAULT_DATE_NAMES;\n }\n\n public getDay(date: number): number {\n return new Date(date).getDay();\n }\n\n public getDayOfWeekNames(style: Intl.DateTimeFormatOptions['weekday']): Array<string> {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.locale, {\n weekday: style,\n timeZone: 'utc'\n });\n return range(7, (i) =>\n UnixTimestampDateTimeAdapter.stripDirectionalityCharacters(\n UnixTimestampDateTimeAdapter._format(dtf, new Date(2017, 0, i + 1))\n )\n );\n }\n\n return DEFAULT_DAY_OF_WEEK_NAMES[style];\n }\n\n public getHours(date: number): number {\n return new Date(date).getHours();\n }\n\n public getMinutes(date: number): number {\n return new Date(date).getMinutes();\n }\n\n public getMonth(date: number): number {\n return new Date(date).getMonth();\n }\n\n public getMonthNames(style: Intl.DateTimeFormatOptions['month']): Array<string> {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.locale, { month: style, timeZone: 'utc' });\n return range(12, (i) => {\n return UnixTimestampDateTimeAdapter.stripDirectionalityCharacters(\n UnixTimestampDateTimeAdapter._format(dtf, new Date(2017, i, 1))\n );\n });\n }\n return DEFAULT_MONTH_NAMES[style];\n }\n\n public getNumDaysInMonth(date: number): number {\n return getNumDaysInMonth(new Date(date));\n }\n\n public getSeconds(date: number): number {\n return new Date(date).getSeconds();\n }\n\n public getTime(date: number): number {\n return date;\n }\n\n public getYear(date: number): number {\n return new Date(date).getFullYear();\n }\n\n public getYearName(date: number): string {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.locale, {\n year: 'numeric',\n timeZone: 'utc'\n });\n return UnixTimestampDateTimeAdapter.stripDirectionalityCharacters(\n UnixTimestampDateTimeAdapter._format(dtf, new Date(date))\n );\n }\n return String(this.getYear(date));\n }\n\n public invalid(): number {\n return NaN;\n }\n\n public isDateInstance(obj: unknown): obj is number {\n return typeof obj === 'number';\n }\n\n public isEqual(dateLeft: number, dateRight: number): boolean {\n if (this.isValid(dateLeft) && this.isValid(dateRight)) {\n return dateLeft === dateRight;\n } else {\n return false;\n }\n }\n\n public isSameDay(dateLeft: number, dateRight: number): boolean {\n if (this.isValid(dateLeft) && this.isValid(dateRight)) {\n const dateLeftStartOfDay = new Date(dateLeft);\n const dateRightStartOfDay = new Date(dateRight);\n dateLeftStartOfDay.setHours(0, 0, 0, 0);\n dateRightStartOfDay.setHours(0, 0, 0, 0);\n return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime();\n } else {\n return false;\n }\n }\n\n public isValid(date: number): boolean {\n return (date || date === 0) && !isNaN(date);\n }\n\n public now(): number {\n return new Date().getTime();\n }\n\n public parse(value: number | string | null): number {\n // There is no way using the native JS Date to set the parse format or locale\n if (typeof value === 'number') {\n return value;\n }\n return value ? new Date(Date.parse(value)).getTime() : null;\n }\n\n public setHours(date: number, amount: number): number {\n const result = new Date(date);\n result.setHours(amount);\n return result.getTime();\n }\n\n public setMinutes(date: number, amount: number): number {\n const result = new Date(date);\n result.setMinutes(amount);\n return result.getTime();\n }\n\n public setSeconds(date: number, amount: number): number {\n const result = new Date(date);\n result.setSeconds(amount);\n return result.getTime();\n }\n\n public toIso8601(date: number): string {\n return new Date(date).toISOString();\n }\n}\n","/**\n * unix-timestamp-date-time-format.class\n */\nimport { OwlDateTimeFormats } from '../date-time-format.class';\n\nexport const OWL_UNIX_TIMESTAMP_DATE_TIME_FORMATS: OwlDateTimeFormats = {\n fullPickerInput: {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric'\n },\n datePickerInput: { year: 'numeric', month: 'numeric', day: 'numeric' },\n timePickerInput: { hour: 'numeric', minute: 'numeric' },\n monthYearLabel: { year: 'numeric', month: 'short' },\n dateA11yLabel: { year: 'numeric', month: 'long', day: 'numeric' },\n monthYearA11yLabel: { year: 'numeric', month: 'long' }\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.OwlCalendarBodyComponent","take","i2.OwlMonthViewComponent","i3.OwlMultiYearViewComponent","i4.OwlYearViewComponent","i1.OwlTimerBoxComponent","i1.OwlCalendarComponent","i2.OwlTimerComponent","i1.OwlDateTimeContainerComponent"],"mappings":"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"}
1
+ {"version":3,"file":"netwin-angular-datetime-picker.mjs","sources":["../../../projects/picker/src/lib/date-time/adapter/date-time-adapter.class.ts","../../../projects/picker/src/lib/date-time/adapter/date-time-format.class.ts","../../../projects/picker/src/lib/utils/array.utils.ts","../../../projects/picker/src/lib/utils/constants.ts","../../../projects/picker/src/lib/utils/date.utils.ts","../../../projects/picker/src/lib/date-time/adapter/native-date-time-adapter.class.ts","../../../projects/picker/src/lib/date-time/adapter/native-date-time-format.class.ts","../../../projects/picker/src/lib/date-time/adapter/native-date-time.module.ts","../../../projects/picker/src/lib/date-time/calendar-body.component.ts","../../../projects/picker/src/lib/date-time/calendar-body.component.html","../../../projects/picker/src/lib/date-time/calendar-month-view.component.ts","../../../projects/picker/src/lib/date-time/calendar-month-view.component.html","../../../projects/picker/src/lib/date-time/date-time-picker-intl.service.ts","../../../projects/picker/src/lib/date-time/options-provider.ts","../../../projects/picker/src/lib/date-time/calendar-multi-year-view.component.ts","../../../projects/picker/src/lib/date-time/calendar-multi-year-view.component.html","../../../projects/picker/src/lib/date-time/calendar-year-view.component.ts","../../../projects/picker/src/lib/date-time/calendar-year-view.component.html","../../../projects/picker/src/lib/date-time/date-time.class.ts","../../../projects/picker/src/lib/date-time/calendar.component.ts","../../../projects/picker/src/lib/date-time/calendar.component.html","../../../projects/picker/src/lib/date-time/timer-box.component.ts","../../../projects/picker/src/lib/date-time/timer-box.component.html","../../../projects/picker/src/lib/date-time/timer.component.ts","../../../projects/picker/src/lib/date-time/timer.component.html","../../../projects/picker/src/lib/date-time/date-time-picker-container.component.ts","../../../projects/picker/src/lib/date-time/date-time-picker-container.component.html","../../../projects/picker/src/lib/date-time/date-time-inline.component.ts","../../../projects/picker/src/lib/date-time/date-time-inline.component.html","../../../projects/picker/src/lib/date-time/date-time.module.ts","../../../projects/picker/src/lib/date-time/adapter/unix-timestamp-adapter/unix-timestamp-date-time-adapter.class.ts","../../../projects/picker/src/lib/date-time/adapter/unix-timestamp-adapter/unix-timestamp-date-time-format.class.ts","../../../projects/picker/src/netwin-angular-datetime-picker.ts"],"sourcesContent":["/**\n * date-time-adapter.class\n */\nimport { InjectionToken, LOCALE_ID, inject } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n/** InjectionToken for date time picker that can be used to override default locale code. */\nexport const OWL_DATE_TIME_LOCALE = new InjectionToken<string>('OWL_DATE_TIME_LOCALE', {\n providedIn: 'root',\n factory: OWL_DATE_TIME_LOCALE_FACTORY\n});\n\n/** @docs-private */\nexport function OWL_DATE_TIME_LOCALE_FACTORY(): string {\n return inject(LOCALE_ID);\n}\n\n/** Provider for OWL_DATE_TIME_LOCALE injection token. */\nexport const OWL_DATE_TIME_LOCALE_PROVIDER = {\n provide: OWL_DATE_TIME_LOCALE,\n useExisting: LOCALE_ID\n};\n\nexport abstract class DateTimeAdapter<T> {\n /** The locale to use for all dates. */\n protected locale: string;\n\n /** A stream that emits when the locale changes. */\n protected _localeChanges = new Subject<string>();\n public localeChanges = this._localeChanges.asObservable();\n\n /** total milliseconds in a day. */\n protected readonly millisecondsInDay = 86400000;\n\n /** total milliseconds in a minute. */\n protected readonly milliseondsInMinute = 60000;\n\n /**\n * Get the year of the given date\n */\n public abstract getYear(date: T): number;\n\n /**\n * Get the month of the given date\n * 0 -- January\n * 11 -- December\n */\n public abstract getMonth(date: T): number;\n\n /**\n * Get the day of the week of the given date\n * 0 -- Sunday\n * 6 -- Saturday\n */\n public abstract getDay(date: T): number;\n\n /**\n * Get the day num of the given date\n */\n public abstract getDate(date: T): number;\n\n /**\n * Get the hours of the given date\n */\n public abstract getHours(date: T): number;\n\n /**\n * Get the minutes of the given date\n */\n public abstract getMinutes(date: T): number;\n\n /**\n * Get the seconds of the given date\n */\n public abstract getSeconds(date: T): number;\n\n /**\n * Get the milliseconds timestamp of the given date\n */\n public abstract getTime(date: T): number;\n\n /**\n * Gets the number of days in the month of the given date.\n */\n public abstract getNumDaysInMonth(date: T): number;\n\n /**\n * Get the number of calendar days between the given dates.\n * If dateLeft is before dateRight, it would return positive value\n * If dateLeft is after dateRight, it would return negative value\n */\n public abstract differenceInCalendarDays(dateLeft: T, dateRight: T): number;\n\n /**\n * Gets the name for the year of the given date.\n */\n public abstract getYearName(date: T): string;\n\n /**\n * Get a list of month names\n */\n public abstract getMonthNames(style: Intl.DateTimeFormatOptions['month']): Array<string>;\n\n /**\n * Get a list of week names\n */\n public abstract getDayOfWeekNames(style: Intl.DateTimeFormatOptions['weekday']): Array<string>;\n\n /**\n * Gets a list of names for the dates of the month.\n */\n public abstract getDateNames(): Array<string>;\n\n /**\n * Return a Date object as a string, using the ISO standard\n */\n public abstract toIso8601(date: T): string;\n\n /**\n * Check if the give dates are equal\n */\n public abstract isEqual(dateLeft: T, dateRight: T): boolean;\n\n /**\n * Check if the give dates are the same day\n */\n public abstract isSameDay(dateLeft: T, dateRight: T): boolean;\n\n /**\n * Checks whether the given date is valid.\n */\n public abstract isValid(date: T): boolean;\n\n /**\n * Gets date instance that is not valid.\n */\n public abstract invalid(): T;\n\n /**\n * Checks whether the given object is considered a date instance by this DateTimeAdapter.\n */\n public abstract isDateInstance(obj: unknown): obj is T;\n\n /**\n * Add the specified number of years to the given date\n */\n public abstract addCalendarYears(date: T, amount: number): T;\n\n /**\n * Add the specified number of months to the given date\n */\n public abstract addCalendarMonths(date: T, amount: number): T;\n\n /**\n * Add the specified number of days to the given date\n */\n public abstract addCalendarDays(date: T, amount: number): T;\n\n /**\n * Set the hours to the given date.\n */\n public abstract setHours(date: T, amount: number): T;\n\n /**\n * Set the minutes to the given date.\n */\n public abstract setMinutes(date: T, amount: number): T;\n\n /**\n * Set the seconds to the given date.\n */\n public abstract setSeconds(date: T, amount: number): T;\n\n /**\n * Creates a date with the given year, month, date, hour, minute and second. Does not allow over/under-flow of the\n * month and date.\n */\n public abstract createDate(year: number, month: number, date: number): T;\n public abstract createDate(\n year: number,\n month: number,\n date: number,\n hours: number,\n minutes: number,\n seconds: number\n ): T;\n\n /**\n * Clone the given date\n */\n public abstract clone(date: T): T;\n\n /**\n * Get a new moment\n */\n public abstract now(): T;\n\n /**\n * Formats a date as a string according to the given format.\n */\n public abstract format(date: T, displayFormat: Intl.DateTimeFormatOptions): string;\n\n /**\n * Parse a user-provided value to a Date Object\n */\n public abstract parse(value: unknown): T | null;\n\n /**\n * Compare two given dates\n * 1 if the first date is after the second,\n * -1 if the first date is before the second\n * 0 if dates are equal.\n */\n public compare(first: T, second: T): number {\n if (!this.isValid(first) || !this.isValid(second)) {\n throw Error('JSNativeDate: Cannot compare invalid dates.');\n }\n\n const dateFirst = this.clone(first);\n const dateSecond = this.clone(second);\n\n const diff = this.getTime(dateFirst) - this.getTime(dateSecond);\n\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1;\n } else {\n // Return 0 if diff is 0; return NaN if diff is NaN\n return diff;\n }\n }\n\n /**\n * Check if two given dates are in the same year\n * 1 if the first date's year is after the second,\n * -1 if the first date's year is before the second\n * 0 if two given dates are in the same year\n */\n public compareYear(first: T, second: T): number {\n if (!this.isValid(first) || !this.isValid(second)) {\n throw Error('JSNativeDate: Cannot compare invalid dates.');\n }\n\n const yearLeft = this.getYear(first);\n const yearRight = this.getYear(second);\n\n const diff = yearLeft - yearRight;\n\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1;\n } else {\n return 0;\n }\n }\n\n /**\n * Attempts to deserialize a value to a valid date object. This is different from parsing in that\n * deserialize should only accept non-ambiguous, locale-independent formats (e.g. a ISO 8601\n * string). The default implementation does not allow any deserialization, it simply checks that\n * the given value is already a valid date object or null. The `<mat-datepicker>` will call this\n * method on all of it's `@Input()` properties that accept dates. It is therefore possible to\n * support passing values from your backend directly to these properties by overriding this method\n * to also deserialize the format used by your backend.\n */\n public deserialize(value: T | null): T | null {\n if (value == null || (this.isDateInstance(value) && this.isValid(value))) {\n return value;\n }\n return this.invalid();\n }\n\n /**\n * Sets the locale used for all dates.\n */\n public setLocale(locale: string): void {\n this.locale = locale;\n this._localeChanges.next(locale);\n }\n\n /**\n * Get the locale used for all dates.\n */\n public getLocale(): string {\n return this.locale;\n }\n\n /**\n * Clamp the given date between min and max dates.\n */\n public clampDate(date: T, min?: T | null, max?: T | null): T {\n if (min && this.compare(date, min) < 0) {\n return min;\n }\n if (max && this.compare(date, max) > 0) {\n return max;\n }\n return date;\n }\n}\n","/**\n * date-time-format.class\n */\n\nimport { InjectionToken } from '@angular/core';\n\nexport type OwlDateTimeFormats = {\n fullPickerInput: Partial<Intl.DateTimeFormatOptions>;\n datePickerInput: Partial<Intl.DateTimeFormatOptions>;\n timePickerInput: Partial<Intl.DateTimeFormatOptions>;\n monthYearLabel: Partial<Intl.DateTimeFormatOptions>;\n dateA11yLabel: Partial<Intl.DateTimeFormatOptions>;\n monthYearA11yLabel: Partial<Intl.DateTimeFormatOptions>;\n};\n\n/** InjectionToken for date time picker that can be used to override default format. */\nexport const OWL_DATE_TIME_FORMATS = new InjectionToken<OwlDateTimeFormats>('OWL_DATE_TIME_FORMATS');\n","/** Creates an array and fills it with values. */\nexport function range<T>(length: number, valueFunction: (index: number) => T): Array<T> {\n return new Array<T>(length).fill(null).map((_, index) => valueFunction(index));\n}\n","import { range } from './array.utils';\n\n/** Whether the browser supports the Intl API. */\nexport const SUPPORTS_INTL_API = typeof Intl !== 'undefined';\n\n/** The default month names to use if Intl API is not available. */\nexport const DEFAULT_MONTH_NAMES = {\n long: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December'\n ],\n short: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D']\n};\n\n/** The default day of the week names to use if Intl API is not available. */\nexport const DEFAULT_DAY_OF_WEEK_NAMES = {\n long: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S']\n};\n\n/** The default date names to use if Intl API is not available. */\nexport const DEFAULT_DATE_NAMES = range(31, (i) => String(i + 1));\n","/**\n * Creates a date with the given year, month, date, hour, minute and second. Does not allow over/under-flow of the\n * month and date.\n */\nexport function createDate(\n year: number,\n month: number,\n date: number,\n hours: number = 0,\n minutes: number = 0,\n seconds: number = 0\n): Date {\n if (month < 0 || month > 11) {\n throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\n }\n\n if (date < 1) {\n throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\n }\n\n if (hours < 0 || hours > 23) {\n throw Error(`Invalid hours \"${hours}\". Hours has to be between 0 and 23.`);\n }\n\n if (minutes < 0 || minutes > 59) {\n throw Error(`Invalid minutes \"${minutes}\". Minutes has to between 0 and 59.`);\n }\n\n if (seconds < 0 || seconds > 59) {\n throw Error(`Invalid seconds \"${seconds}\". Seconds has to be between 0 and 59.`);\n }\n\n const result = createDateWithOverflow(year, month, date, hours, minutes, seconds);\n\n // Check that the date wasn't above the upper bound for the month, causing the month to overflow\n // For example, createDate(2017, 1, 31) would try to create a date 2017/02/31 which is invalid\n if (result.getMonth() !== month) {\n throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\n }\n\n return result;\n}\n\n/**\n * Gets the number of days in the month of the given date.\n */\nexport function getNumDaysInMonth(date: Date): number {\n const lastDateOfMonth = createDateWithOverflow(date.getFullYear(), date.getMonth() + 1, 0);\n\n return lastDateOfMonth.getDate();\n}\n\n/**\n * Creates a date but allows the month and date to overflow.\n */\nfunction createDateWithOverflow(\n year: number,\n month: number,\n date: number,\n hours: number = 0,\n minutes: number = 0,\n seconds: number = 0\n): Date {\n const result = new Date(year, month, date, hours, minutes, seconds);\n\n if (year >= 0 && year < 100) {\n result.setFullYear(result.getFullYear() - 1900);\n }\n return result;\n}\n","/**\n * native-date-time-adapter.class\n */\n\nimport { Platform } from '@angular/cdk/platform';\nimport { inject, Injectable } from '@angular/core';\nimport { range } from '../../utils/array.utils';\nimport {\n DEFAULT_DATE_NAMES,\n DEFAULT_DAY_OF_WEEK_NAMES,\n DEFAULT_MONTH_NAMES,\n SUPPORTS_INTL_API\n} from '../../utils/constants';\nimport { createDate, getNumDaysInMonth } from '../../utils/date.utils';\nimport { DateTimeAdapter, OWL_DATE_TIME_LOCALE } from './date-time-adapter.class';\n\n/**\n * Matches strings that have the form of a valid RFC 3339 string\n * (https://tools.ietf.org/html/rfc3339). Note that the string may not actually be a valid date\n * because the regex will match strings an with out of bounds month, date, etc.\n */\nconst ISO_8601_REGEX = /^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|(?:[+-]\\d{2}:\\d{2}))?)?$/;\n\n@Injectable()\nexport class NativeDateTimeAdapter extends DateTimeAdapter<Date> {\n private readonly owlDateTimeLocale = inject(OWL_DATE_TIME_LOCALE, { optional: true });\n private readonly platform = inject(Platform);\n\n /** Whether to clamp the date between 1 and 9999 to avoid IE and Edge errors. */\n private readonly _clampDate: boolean;\n\n /**\n * Whether to use `timeZone: 'utc'` with `Intl.DateTimeFormat` when formatting dates.\n * Without this `Intl.DateTimeFormat` sometimes chooses the wrong timeZone, which can throw off\n * the result. (e.g. in the en-US locale `new Date(1800, 7, 14).toLocaleDateString()`\n * will produce `'8/13/1800'`.\n */\n public useUtcForDisplay: boolean;\n\n constructor() {\n super();\n super.setLocale(this.owlDateTimeLocale);\n\n // IE does its own time zone correction, so we disable this on IE.\n this.useUtcForDisplay = !this.platform.TRIDENT;\n this._clampDate = this.platform.TRIDENT || this.platform.EDGE;\n }\n\n public getYear(date: Date): number {\n return date.getFullYear();\n }\n\n public getMonth(date: Date): number {\n return date.getMonth();\n }\n\n public getDay(date: Date): number {\n return date.getDay();\n }\n\n public getDate(date: Date): number {\n return date.getDate();\n }\n\n public getHours(date: Date): number {\n return date.getHours();\n }\n\n public getMinutes(date: Date): number {\n return date.getMinutes();\n }\n\n public getSeconds(date: Date): number {\n return date.getSeconds();\n }\n\n public getTime(date: Date): number {\n return date.getTime();\n }\n\n public getNumDaysInMonth(date: Date): number {\n return getNumDaysInMonth(date);\n }\n\n public differenceInCalendarDays(dateLeft: Date, dateRight: Date): number {\n if (this.isValid(dateLeft) && this.isValid(dateRight)) {\n const dateLeftStartOfDay = this.createDate(\n this.getYear(dateLeft),\n this.getMonth(dateLeft),\n this.getDate(dateLeft)\n );\n const dateRightStartOfDay = this.createDate(\n this.getYear(dateRight),\n this.getMonth(dateRight),\n this.getDate(dateRight)\n );\n\n const timeStampLeft =\n this.getTime(dateLeftStartOfDay) - dateLeftStartOfDay.getTimezoneOffset() * this.milliseondsInMinute;\n const timeStampRight =\n this.getTime(dateRightStartOfDay) - dateRightStartOfDay.getTimezoneOffset() * this.milliseondsInMinute;\n return Math.round((timeStampLeft - timeStampRight) / this.millisecondsInDay);\n } else {\n return null;\n }\n }\n\n public getYearName(date: Date): string {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.getLocale(), {\n year: 'numeric',\n timeZone: 'utc'\n });\n return this.stripDirectionalityCharacters(this._format(dtf, date));\n }\n return String(this.getYear(date));\n }\n\n public getMonthNames(style: Intl.DateTimeFormatOptions['month']): Array<string> {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.getLocale(), { month: style, timeZone: 'utc' });\n return range(12, (i) => this.stripDirectionalityCharacters(this._format(dtf, new Date(2017, i, 1))));\n }\n return DEFAULT_MONTH_NAMES[style];\n }\n\n public getDayOfWeekNames(style: Intl.DateTimeFormatOptions['weekday']): Array<string> {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.getLocale(), { weekday: style, timeZone: 'utc' });\n return range(7, (i) => this.stripDirectionalityCharacters(this._format(dtf, new Date(2017, 0, i + 1))));\n }\n\n return DEFAULT_DAY_OF_WEEK_NAMES[style];\n }\n\n public getDateNames(): Array<string> {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.getLocale(), { day: 'numeric', timeZone: 'utc' });\n return range(31, (i) => this.stripDirectionalityCharacters(this._format(dtf, new Date(2017, 0, i + 1))));\n }\n return DEFAULT_DATE_NAMES;\n }\n\n public toIso8601(date: Date): string {\n return date.toISOString();\n }\n\n public isEqual(dateLeft: Date, dateRight: Date): boolean {\n if (this.isValid(dateLeft) && this.isValid(dateRight)) {\n return dateLeft.getTime() === dateRight.getTime();\n }\n return false;\n }\n\n public isSameDay(dateLeft: Date, dateRight: Date): boolean {\n if (this.isValid(dateLeft) && this.isValid(dateRight)) {\n const dateLeftStartOfDay = this.clone(dateLeft);\n const dateRightStartOfDay = this.clone(dateRight);\n dateLeftStartOfDay.setHours(0, 0, 0, 0);\n dateRightStartOfDay.setHours(0, 0, 0, 0);\n return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime();\n }\n return false;\n }\n\n public isValid(date: Date): boolean {\n return date && !isNaN(date.getTime());\n }\n\n public invalid(): Date {\n return new Date(NaN);\n }\n\n public isDateInstance(obj: unknown): obj is Date {\n return obj instanceof Date;\n }\n\n public addCalendarYears(date: Date, amount: number): Date {\n return this.addCalendarMonths(date, amount * 12);\n }\n\n public addCalendarMonths(date: Date, amount: number): Date {\n const result = this.clone(date);\n amount = Number(amount);\n\n const desiredMonth = result.getMonth() + amount;\n const dateWithDesiredMonth = new Date(0);\n dateWithDesiredMonth.setFullYear(result.getFullYear(), desiredMonth, 1);\n dateWithDesiredMonth.setHours(0, 0, 0, 0);\n\n const daysInMonth = this.getNumDaysInMonth(dateWithDesiredMonth);\n // Set the last day of the new month\n // if the original date was the last day of the longer month\n result.setMonth(desiredMonth, Math.min(daysInMonth, result.getDate()));\n return result;\n }\n\n public addCalendarDays(date: Date, amount: number): Date {\n const result = this.clone(date);\n amount = Number(amount);\n result.setDate(result.getDate() + amount);\n return result;\n }\n\n public setHours(date: Date, amount: number): Date {\n const result = this.clone(date);\n result.setHours(amount);\n return result;\n }\n\n public setMinutes(date: Date, amount: number): Date {\n const result = this.clone(date);\n result.setMinutes(amount);\n return result;\n }\n\n public setSeconds(date: Date, amount: number): Date {\n const result = this.clone(date);\n result.setSeconds(amount);\n return result;\n }\n\n public createDate(\n year: number,\n month: number,\n date: number,\n hours: number = 0,\n minutes: number = 0,\n seconds: number = 0\n ): Date {\n return createDate(year, month, date, hours, minutes, seconds);\n }\n\n public clone(date: Date): Date {\n return this.createDate(\n this.getYear(date),\n this.getMonth(date),\n this.getDate(date),\n this.getHours(date),\n this.getMinutes(date),\n this.getSeconds(date)\n );\n }\n\n public now(): Date {\n return new Date();\n }\n\n public format(date: Date, displayFormat: Intl.DateTimeFormatOptions): string {\n if (!this.isValid(date)) {\n throw Error('JSNativeDate: Cannot format invalid date.');\n }\n\n if (SUPPORTS_INTL_API) {\n if (this._clampDate && (date.getFullYear() < 1 || date.getFullYear() > 9999)) {\n date = this.clone(date);\n date.setFullYear(Math.max(1, Math.min(9999, date.getFullYear())));\n }\n\n displayFormat = { ...displayFormat, timeZone: 'utc' };\n const dtf = new Intl.DateTimeFormat(this.getLocale(), displayFormat);\n return this.stripDirectionalityCharacters(this._format(dtf, date));\n }\n\n return this.stripDirectionalityCharacters(date.toDateString());\n }\n\n public parse(value: number | string): Date | null {\n // There is no way using the native JS Date to set the parse format or locale\n if (typeof value === 'number') {\n return new Date(value);\n }\n return value ? new Date(Date.parse(value)) : null;\n }\n\n /**\n * Returns the given value if given a valid Date or null. Deserializes valid ISO 8601 strings\n * (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into null. Returns an\n * invalid date for all other values.\n */\n public override deserialize(value: Date | null): Date | null {\n if (typeof value === 'string') {\n if (!value) {\n return null;\n }\n // The `Date` constructor accepts formats other than ISO 8601, so we need to make sure the\n // string is the right format first.\n if (ISO_8601_REGEX.test(value)) {\n const date = new Date(value);\n if (this.isValid(date)) {\n return date;\n }\n }\n }\n return super.deserialize(value);\n }\n\n /**\n * Strip out unicode LTR and RTL characters. Edge and IE insert these into formatted dates while\n * other browsers do not. We remove them to make output consistent and because they interfere with\n * date parsing.\n */\n private stripDirectionalityCharacters(str: string): string {\n return str.replace(/[\\u200e\\u200f]/g, '');\n }\n\n /**\n * When converting Date object to string, javascript built-in functions may return wrong\n * results because it applies its internal DST rules. The DST rules around the world change\n * very frequently, and the current valid rule is not always valid in previous years though.\n * We work around this problem building a new Date object which has its internal UTC\n * representation with the local date and time.\n */\n private _format(dtf: Intl.DateTimeFormat, date: Date): string {\n const d = new Date(\n Date.UTC(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds()\n )\n );\n return dtf.format(d);\n }\n}\n","/**\n * native-date-time-format.class\n */\nimport { OwlDateTimeFormats } from './date-time-format.class';\n\nexport const OWL_NATIVE_DATE_TIME_FORMATS: OwlDateTimeFormats = {\n fullPickerInput: {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric'\n },\n datePickerInput: { year: 'numeric', month: 'numeric', day: 'numeric' },\n timePickerInput: { hour: 'numeric', minute: 'numeric' },\n monthYearLabel: { year: 'numeric', month: 'short' },\n dateA11yLabel: { year: 'numeric', month: 'long', day: 'numeric' },\n monthYearA11yLabel: { year: 'numeric', month: 'long' }\n};\n","/**\n * native-date-time.module\n */\n\nimport { PlatformModule } from '@angular/cdk/platform';\nimport { NgModule } from '@angular/core';\nimport { DateTimeAdapter } from './date-time-adapter.class';\nimport { OWL_DATE_TIME_FORMATS } from './date-time-format.class';\nimport { NativeDateTimeAdapter } from './native-date-time-adapter.class';\nimport { OWL_NATIVE_DATE_TIME_FORMATS } from './native-date-time-format.class';\n\n@NgModule({\n imports: [PlatformModule],\n providers: [{ provide: DateTimeAdapter, useClass: NativeDateTimeAdapter }]\n})\nexport class NativeDateTimeModule {}\n\n@NgModule({\n imports: [NativeDateTimeModule],\n providers: [\n {\n provide: OWL_DATE_TIME_FORMATS,\n useValue: OWL_NATIVE_DATE_TIME_FORMATS\n }\n ]\n})\nexport class OwlNativeDateTimeModule {}\n","import { ChangeDetectionStrategy, Component, ElementRef, inject, Input, NgZone, output } from '@angular/core';\nimport { take } from 'rxjs/operators';\nimport { SelectMode } from './date-time.class';\n\nexport class CalendarCell {\n constructor(\n public value: number,\n public displayValue: string,\n public ariaLabel: string,\n public enabled: boolean,\n public out: boolean = false,\n public cellClass: string = ''\n ) {}\n}\n\n@Component({\n selector: '[owl-date-time-calendar-body]',\n exportAs: 'owlDateTimeCalendarBody',\n templateUrl: './calendar-body.component.html',\n host: { 'class': 'owl-dt-calendar-body' },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OwlCalendarBodyComponent {\n private readonly elmRef = inject(ElementRef);\n private readonly ngZone = inject(NgZone);\n\n /**\n * The cell number of the active cell in the table.\n */\n @Input()\n public activeCell = 0;\n\n /**\n * The cells to display in the table.\n */\n @Input()\n public rows: Array<Array<CalendarCell>>;\n\n /**\n * The number of columns in the table.\n */\n @Input()\n public numCols = 7;\n\n /**\n * The ratio (width / height) to use for the cells in the table.\n */\n @Input()\n public cellRatio = 1;\n\n /**\n * The value in the table that corresponds to today.\n */\n @Input()\n public todayValue: number;\n\n /**\n * The value in the table that is currently selected.\n */\n @Input()\n public selectedValues: Array<number>;\n\n /**\n * Current picker select mode\n */\n @Input()\n public selectMode: SelectMode;\n\n /**\n * Emit when a calendar cell is selected\n */\n public readonly selectCell = output<CalendarCell>();\n\n protected handleSelect(cell: CalendarCell): void {\n this.selectCell.emit(cell);\n }\n\n protected get isInSingleMode(): boolean {\n return this.selectMode === 'single';\n }\n\n protected get isInRangeMode(): boolean {\n return this.selectMode === 'range' || this.selectMode === 'rangeFrom' || this.selectMode === 'rangeTo';\n }\n\n public isActiveCell(rowIndex: number, colIndex: number): boolean {\n const cellNumber = rowIndex * this.numCols + colIndex;\n return cellNumber === this.activeCell;\n }\n\n /**\n * Check if the cell is selected\n */\n public isSelected(value: number): boolean {\n if (!this.selectedValues || this.selectedValues.length === 0) {\n return false;\n }\n\n if (this.isInSingleMode) {\n return value === this.selectedValues[0];\n }\n\n if (this.isInRangeMode) {\n const fromValue = this.selectedValues[0];\n const toValue = this.selectedValues[1];\n\n return value === fromValue || value === toValue;\n }\n\n return false;\n }\n\n /**\n * Check if the cell in the range\n */\n public isInRange(value: number): boolean {\n if (this.isInRangeMode) {\n const fromValue = this.selectedValues[0];\n const toValue = this.selectedValues[1];\n\n if (fromValue !== null && toValue !== null) {\n return value >= fromValue && value <= toValue;\n } else {\n return value === fromValue || value === toValue;\n }\n }\n return false;\n }\n\n /**\n * Check if the cell is the range from\n */\n public isRangeFrom(value: number): boolean {\n if (this.isInRangeMode) {\n const fromValue = this.selectedValues[0];\n return fromValue !== null && value === fromValue;\n }\n return false;\n }\n\n /**\n * Check if the cell is the range to\n */\n public isRangeTo(value: number): boolean {\n if (this.isInRangeMode) {\n const toValue = this.selectedValues[1];\n return toValue !== null && value === toValue;\n }\n return false;\n }\n\n /**\n * Focus to a active cell\n */\n public focusActiveCell(): void {\n this.ngZone.runOutsideAngular(() => {\n this.ngZone.onStable\n .asObservable()\n .pipe(take(1))\n .subscribe(() => {\n this.elmRef.nativeElement.querySelector('.owl-dt-calendar-cell-active').focus();\n });\n });\n }\n}\n","@for (row of rows; track rowIndex; let rowIndex = $index) {\n <tr role=\"row\">\n @for (item of row; track colIndex; let colIndex = $index) {\n <td\n [attr.aria-current]=\"item.value === todayValue ? 'date' : null\"\n [attr.aria-disabled]=\"!item.enabled || null\"\n [attr.aria-label]=\"item.ariaLabel\"\n [attr.aria-selected]=\"isSelected(item.value)\"\n [class]=\"item.cellClass\"\n [class.owl-dt-calendar-cell-active]=\"isActiveCell(rowIndex, colIndex)\"\n [class.owl-dt-calendar-cell-disabled]=\"!item.enabled\"\n [class.owl-dt-calendar-cell-in-range]=\"isInRange(item.value)\"\n [class.owl-dt-calendar-cell-range-from]=\"isRangeFrom(item.value)\"\n [class.owl-dt-calendar-cell-range-to]=\"isRangeTo(item.value)\"\n [style.paddingBottom.%]=\"(50 * cellRatio) / numCols\"\n [style.paddingTop.%]=\"(50 * cellRatio) / numCols\"\n [style.width.%]=\"100 / numCols\"\n [tabindex]=\"isActiveCell(rowIndex, colIndex) ? 0 : -1\"\n (click)=\"handleSelect(item)\"\n class=\"owl-dt-calendar-cell\">\n <span\n [class.owl-dt-calendar-cell-out]=\"item.out\"\n [class.owl-dt-calendar-cell-selected]=\"isSelected(item.value)\"\n [class.owl-dt-calendar-cell-today]=\"item.value === todayValue\"\n class=\"owl-dt-calendar-cell-content\">\n {{ item.displayValue }}\n </span>\n </td>\n }\n </tr>\n}\n","import {\n DOWN_ARROW,\n END,\n ENTER,\n HOME,\n LEFT_ARROW,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n UP_ARROW\n} from '@angular/cdk/keycodes';\nimport { getLocaleFirstDayOfWeek } from '@angular/common';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnDestroy,\n OnInit,\n ViewChild,\n inject,\n output\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport { OWL_DATE_TIME_FORMATS } from './adapter/date-time-format.class';\nimport { CalendarCell, OwlCalendarBodyComponent } from './calendar-body.component';\nimport { SelectMode } from './date-time.class';\n\nconst DAYS_PER_WEEK = 7;\nconst WEEKS_PER_VIEW = 6;\n\n@Component({\n selector: 'owl-date-time-month-view',\n exportAs: 'owlYearView',\n templateUrl: './calendar-month-view.component.html',\n imports: [OwlCalendarBodyComponent],\n host: { 'class': 'owl-dt-calendar-view' },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OwlMonthViewComponent<T> implements OnInit, AfterContentInit, OnDestroy {\n private readonly cdRef = inject(ChangeDetectorRef);\n private readonly dateTimeAdapter = inject(DateTimeAdapter<T>, { optional: true });\n private readonly dateTimeFormats = inject(OWL_DATE_TIME_FORMATS, { optional: true });\n\n /**\n * Whether to hide dates in other months at the start or end of the current month.\n */\n @Input()\n public hideOtherMonths = false;\n\n private isDefaultFirstDayOfWeek = true;\n\n /**\n * Define the first day of a week\n * Sunday: 0 - Saturday: 6\n */\n private _firstDayOfWeek: number;\n\n @Input()\n public get firstDayOfWeek(): number {\n return this._firstDayOfWeek;\n }\n\n public set firstDayOfWeek(val: number) {\n if (val >= 0 && val <= 6 && val !== this._firstDayOfWeek) {\n this._firstDayOfWeek = val;\n this.isDefaultFirstDayOfWeek = false;\n\n if (this.initiated) {\n this.generateWeekDays();\n this.generateCalendar();\n this.cdRef.markForCheck();\n }\n }\n }\n\n /**\n * The select mode of the picker;\n */\n private _selectMode: SelectMode = 'single';\n @Input()\n public get selectMode(): SelectMode {\n return this._selectMode;\n }\n\n public set selectMode(val: SelectMode) {\n this._selectMode = val;\n if (this.initiated) {\n this.generateCalendar();\n this.cdRef.markForCheck();\n }\n }\n\n /** The currently selected date. */\n private _selected: T | null;\n @Input()\n public get selected(): T | null {\n return this._selected;\n }\n\n public set selected(value: T | null) {\n const oldSelected = this._selected;\n value = this.dateTimeAdapter.deserialize(value);\n this._selected = this.getValidDate(value);\n\n if (!this.dateTimeAdapter.isSameDay(oldSelected, this._selected)) {\n this.setSelectedDates();\n }\n }\n\n private _selecteds: Array<T> = [];\n @Input()\n public get selecteds(): Array<T> {\n return this._selecteds;\n }\n\n public set selecteds(values: Array<T>) {\n this._selecteds = values.map((v) => {\n v = this.dateTimeAdapter.deserialize(v);\n return this.getValidDate(v);\n });\n this.setSelectedDates();\n }\n\n private _pickerMoment: T;\n @Input()\n public get pickerMoment(): T {\n return this._pickerMoment;\n }\n\n public set pickerMoment(value: T) {\n const oldMoment = this._pickerMoment;\n value = this.dateTimeAdapter.deserialize(value);\n this._pickerMoment = this.getValidDate(value) || this.dateTimeAdapter.now();\n\n this.firstDateOfMonth = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(this._pickerMoment),\n this.dateTimeAdapter.getMonth(this._pickerMoment),\n 1\n );\n\n if (!this.isSameMonth(oldMoment, this._pickerMoment) && this.initiated) {\n this.generateCalendar();\n }\n }\n\n /**\n * A function used to filter which dates are selectable\n */\n private _dateFilter: (date: T) => boolean;\n @Input()\n public get dateFilter(): (date: T) => boolean {\n return this._dateFilter;\n }\n\n public set dateFilter(filter: (date: T) => boolean) {\n this._dateFilter = filter;\n if (this.initiated) {\n this.generateCalendar();\n this.cdRef.markForCheck();\n }\n }\n\n /** The minimum selectable date. */\n private _minDate: T | null;\n @Input()\n public get minDate(): T | null {\n return this._minDate;\n }\n\n public set minDate(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._minDate = this.getValidDate(value);\n if (this.initiated) {\n this.generateCalendar();\n this.cdRef.markForCheck();\n }\n }\n\n /** The maximum selectable date. */\n private _maxDate: T | null;\n @Input()\n public get maxDate(): T | null {\n return this._maxDate;\n }\n\n public set maxDate(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._maxDate = this.getValidDate(value);\n\n if (this.initiated) {\n this.generateCalendar();\n this.cdRef.markForCheck();\n }\n }\n\n private _weekdays: Array<Record<Intl.DateTimeFormatOptions['weekday'], string>>;\n get weekdays(): Array<Record<Intl.DateTimeFormatOptions['weekday'], string>> {\n return this._weekdays;\n }\n\n private _days: Array<Array<CalendarCell>>;\n get days(): Array<Array<CalendarCell>> {\n return this._days;\n }\n\n get activeCell(): number {\n if (this.pickerMoment) {\n return this.dateTimeAdapter.getDate(this.pickerMoment) + this.firstRowOffset - 1;\n }\n return undefined;\n }\n\n get isInSingleMode(): boolean {\n return this.selectMode === 'single';\n }\n\n get isInRangeMode(): boolean {\n return this.selectMode === 'range' || this.selectMode === 'rangeFrom' || this.selectMode === 'rangeTo';\n }\n\n private firstDateOfMonth: T;\n\n private localeSub: Subscription = Subscription.EMPTY;\n\n private initiated = false;\n\n private dateNames: Array<string>;\n\n /**\n * The date of the month that today falls on.\n */\n public todayDate: number | null;\n\n /**\n * An array to hold all selectedDates' value\n * the value is the day number in current month\n */\n public selectedDates: Array<number> = [];\n\n // the index of cell that contains the first date of the month\n public firstRowOffset: number;\n\n /**\n * Callback to invoke when a new date is selected\n */\n public readonly selectedChange = output<T | null>();\n\n /**\n * Callback to invoke when any date is selected.\n */\n public readonly userSelection = output<void>();\n\n /** Emits when any date is activated. */\n public readonly pickerMomentChange = output<T>();\n\n /** The body of calendar table */\n @ViewChild(OwlCalendarBodyComponent, { static: true })\n calendarBodyElm: OwlCalendarBodyComponent;\n\n public ngOnInit(): void {\n this.updateFirstDayOfWeek(this.dateTimeAdapter.getLocale());\n this.generateWeekDays();\n\n this.localeSub = this.dateTimeAdapter.localeChanges.subscribe((locale) => {\n this.updateFirstDayOfWeek(locale);\n this.generateWeekDays();\n this.generateCalendar();\n this.cdRef.markForCheck();\n });\n }\n\n public ngAfterContentInit(): void {\n this.generateCalendar();\n this.initiated = true;\n }\n\n public ngOnDestroy(): void {\n this.localeSub.unsubscribe();\n }\n\n /**\n * Handle a calendarCell selected\n */\n public selectCalendarCell(cell: CalendarCell): void {\n // Cases in which the date would not be selected\n // 1, the calendar cell is NOT enabled (is NOT valid)\n // 2, the selected date is NOT in current picker's month and the hideOtherMonths is enabled\n if (!cell.enabled || (this.hideOtherMonths && cell.out)) {\n return;\n }\n\n this.selectDate(cell.value);\n }\n\n /**\n * Handle a new date selected\n */\n private selectDate(date: number): void {\n const daysDiff = date - 1;\n const selected = this.dateTimeAdapter.addCalendarDays(this.firstDateOfMonth, daysDiff);\n\n this.selectedChange.emit(selected);\n this.userSelection.emit();\n }\n\n /**\n * Handle keydown event on calendar body\n */\n public handleCalendarKeydown(event: KeyboardEvent): void {\n let moment;\n switch (event.keyCode) {\n // minus 1 day\n case LEFT_ARROW:\n moment = this.dateTimeAdapter.addCalendarDays(this.pickerMoment, -1);\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 1 day\n case RIGHT_ARROW:\n moment = this.dateTimeAdapter.addCalendarDays(this.pickerMoment, 1);\n this.pickerMomentChange.emit(moment);\n break;\n\n // minus 1 week\n case UP_ARROW:\n moment = this.dateTimeAdapter.addCalendarDays(this.pickerMoment, -7);\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 1 week\n case DOWN_ARROW:\n moment = this.dateTimeAdapter.addCalendarDays(this.pickerMoment, 7);\n this.pickerMomentChange.emit(moment);\n break;\n\n // move to first day of current month\n case HOME:\n moment = this.dateTimeAdapter.addCalendarDays(\n this.pickerMoment,\n 1 - this.dateTimeAdapter.getDate(this.pickerMoment)\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // move to last day of current month\n case END:\n moment = this.dateTimeAdapter.addCalendarDays(\n this.pickerMoment,\n this.dateTimeAdapter.getNumDaysInMonth(this.pickerMoment) - this.dateTimeAdapter.getDate(this.pickerMoment)\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // minus 1 month (or 1 year)\n case PAGE_UP:\n moment =\n event.altKey ?\n this.dateTimeAdapter.addCalendarYears(this.pickerMoment, -1)\n : this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, -1);\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 1 month (or 1 year)\n case PAGE_DOWN:\n moment =\n event.altKey ?\n this.dateTimeAdapter.addCalendarYears(this.pickerMoment, 1)\n : this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, 1);\n this.pickerMomentChange.emit(moment);\n break;\n\n // select the pickerMoment\n case ENTER:\n if (!this.dateFilter || this.dateFilter(this.pickerMoment)) {\n this.selectDate(this.dateTimeAdapter.getDate(this.pickerMoment));\n }\n break;\n default:\n return;\n }\n\n this.focusActiveCell();\n event.preventDefault();\n }\n\n /**\n * Generate the calendar weekdays array\n */\n private generateWeekDays(): void {\n const longWeekdays = this.dateTimeAdapter.getDayOfWeekNames('long');\n const shortWeekdays = this.dateTimeAdapter.getDayOfWeekNames('short');\n const narrowWeekdays = this.dateTimeAdapter.getDayOfWeekNames('narrow');\n const firstDayOfWeek = this.firstDayOfWeek;\n\n const weekdays = longWeekdays.map((long, i) => {\n return { long, short: shortWeekdays[i], narrow: narrowWeekdays[i] };\n });\n\n this._weekdays = weekdays.slice(firstDayOfWeek).concat(weekdays.slice(0, firstDayOfWeek));\n\n this.dateNames = this.dateTimeAdapter.getDateNames();\n\n return;\n }\n\n /**\n * Generate the calendar days array\n */\n private generateCalendar(): void {\n if (!this.pickerMoment) {\n return;\n }\n\n this.todayDate = null;\n\n // the first weekday of the month\n const startWeekdayOfMonth = this.dateTimeAdapter.getDay(this.firstDateOfMonth);\n const firstDayOfWeek = this.firstDayOfWeek;\n\n // the amount of days from the first date of the month\n // if it is < 0, it means the date is in previous month\n let daysDiff = 0 - ((startWeekdayOfMonth + (DAYS_PER_WEEK - firstDayOfWeek)) % DAYS_PER_WEEK);\n\n // the index of cell that contains the first date of the month\n this.firstRowOffset = Math.abs(daysDiff);\n\n this._days = [];\n for (let i = 0; i < WEEKS_PER_VIEW; i++) {\n const week = [];\n for (let j = 0; j < DAYS_PER_WEEK; j++) {\n const date = this.dateTimeAdapter.addCalendarDays(this.firstDateOfMonth, daysDiff);\n const dateCell = this.createDateCell(date, daysDiff);\n\n // check if the date is today\n if (this.dateTimeAdapter.isSameDay(this.dateTimeAdapter.now(), date)) {\n this.todayDate = daysDiff + 1;\n }\n\n week.push(dateCell);\n daysDiff += 1;\n }\n this._days.push(week);\n }\n\n this.setSelectedDates();\n }\n\n private updateFirstDayOfWeek(locale: string): void {\n if (this.isDefaultFirstDayOfWeek) {\n try {\n this._firstDayOfWeek = getLocaleFirstDayOfWeek(locale);\n } catch {\n this._firstDayOfWeek = 0;\n }\n }\n }\n\n /**\n * Creates CalendarCell for days.\n */\n private createDateCell(date: T, daysDiff: number): CalendarCell {\n // total days of the month\n const daysInMonth = this.dateTimeAdapter.getNumDaysInMonth(this.pickerMoment);\n const dateNum = this.dateTimeAdapter.getDate(date);\n // const dateName = this.dateNames[dateNum - 1];\n const dateName = dateNum.toString();\n const ariaLabel = this.dateTimeAdapter.format(date, this.dateTimeFormats.dateA11yLabel);\n\n // check if the date if selectable\n const enabled = this.isDateEnabled(date);\n\n // check if date is not in current month\n const dayValue = daysDiff + 1;\n const out = dayValue < 1 || dayValue > daysInMonth;\n const cellClass = `owl-dt-day-${this.dateTimeAdapter.getDay(date)}`;\n\n return new CalendarCell(dayValue, dateName, ariaLabel, enabled, out, cellClass);\n }\n\n /**\n * Check if the date is valid\n */\n private isDateEnabled(date: T): boolean {\n return (\n !!date &&\n (!this.dateFilter || this.dateFilter(date)) &&\n (!this.minDate || this.dateTimeAdapter.compare(date, this.minDate) >= 0) &&\n (!this.maxDate || this.dateTimeAdapter.compare(date, this.maxDate) <= 0)\n );\n }\n\n /**\n * Get a valid date object\n */\n private getValidDate(obj: any): T | null {\n return this.dateTimeAdapter.isDateInstance(obj) && this.dateTimeAdapter.isValid(obj) ? obj : null;\n }\n\n /**\n * Check if the give dates are none-null and in the same month\n */\n public isSameMonth(dateLeft: T, dateRight: T): boolean {\n return !!(\n dateLeft &&\n dateRight &&\n this.dateTimeAdapter.isValid(dateLeft) &&\n this.dateTimeAdapter.isValid(dateRight) &&\n this.dateTimeAdapter.getYear(dateLeft) === this.dateTimeAdapter.getYear(dateRight) &&\n this.dateTimeAdapter.getMonth(dateLeft) === this.dateTimeAdapter.getMonth(dateRight)\n );\n }\n\n /**\n * Set the selectedDates value.\n * In single mode, it has only one value which represent the selected date\n * In range mode, it would has two values, one for the fromValue and the other for the toValue\n */\n private setSelectedDates(): void {\n this.selectedDates = [];\n\n if (!this.firstDateOfMonth) {\n return;\n }\n\n if (this.isInSingleMode && this.selected) {\n const dayDiff = this.dateTimeAdapter.differenceInCalendarDays(this.selected, this.firstDateOfMonth);\n this.selectedDates[0] = dayDiff + 1;\n return;\n }\n\n if (this.isInRangeMode && this.selecteds) {\n this.selectedDates = this.selecteds.map((selected) => {\n if (this.dateTimeAdapter.isValid(selected)) {\n const dayDiff = this.dateTimeAdapter.differenceInCalendarDays(selected, this.firstDateOfMonth);\n return dayDiff + 1;\n } else {\n return null;\n }\n });\n }\n }\n\n private focusActiveCell(): void {\n this.calendarBodyElm.focusActiveCell();\n }\n}\n","<table\n [class.owl-dt-calendar-only-current-month]=\"hideOtherMonths\"\n class=\"owl-dt-calendar-table owl-dt-calendar-month-table\">\n <thead class=\"owl-dt-calendar-header\">\n <tr class=\"owl-dt-weekdays\">\n @for (weekday of weekdays; track weekday.short) {\n <th\n [attr.aria-label]=\"weekday.long\"\n class=\"owl-dt-weekday\"\n scope=\"col\">\n <span>{{ weekday.short }}</span>\n </th>\n }\n </tr>\n <tr>\n <th\n aria-hidden=\"true\"\n class=\"owl-dt-calendar-table-divider\"\n colspan=\"7\"></th>\n </tr>\n </thead>\n <tbody\n [activeCell]=\"activeCell\"\n [rows]=\"days\"\n [selectMode]=\"selectMode\"\n [selectedValues]=\"selectedDates\"\n [todayValue]=\"todayDate\"\n (keydown)=\"handleCalendarKeydown($event)\"\n (selectCell)=\"selectCalendarCell($event)\"\n owl-date-time-calendar-body\n role=\"grid\"></tbody>\n</table>\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class OwlDateTimeIntl {\n /**\n * Stream that emits whenever the labels here are changed. Use this to notify\n * components if the labels have changed after initialization.\n */\n public readonly changes: Subject<void> = new Subject<void>();\n\n /** A label for the up second button (used by screen readers). */\n public upSecondLabel = 'Add a second';\n\n /** A label for the down second button (used by screen readers). */\n public downSecondLabel = 'Minus a second';\n\n /** A label for the up minute button (used by screen readers). */\n public upMinuteLabel = 'Add a minute';\n\n /** A label for the down minute button (used by screen readers). */\n public downMinuteLabel = 'Minus a minute';\n\n /** A label for the up hour button (used by screen readers). */\n public upHourLabel = 'Add a hour';\n\n /** A label for the down hour button (used by screen readers). */\n public downHourLabel = 'Minus a hour';\n\n /** A label for the previous month button (used by screen readers). */\n public prevMonthLabel = 'Previous month';\n\n /** A label for the next month button (used by screen readers). */\n public nextMonthLabel = 'Next month';\n\n /** A label for the previous year button (used by screen readers). */\n public prevYearLabel = 'Previous year';\n\n /** A label for the next year button (used by screen readers). */\n public nextYearLabel = 'Next year';\n\n /** A label for the previous multi-year button (used by screen readers). */\n public prevMultiYearLabel = 'Previous 21 years';\n\n /** A label for the next multi-year button (used by screen readers). */\n public nextMultiYearLabel = 'Next 21 years';\n\n /** A label for the 'switch to month view' button (used by screen readers). */\n public switchToMonthViewLabel = 'Change to month view';\n\n /** A label for the 'switch to year view' button (used by screen readers). */\n public switchToMultiYearViewLabel = 'Choose month and year';\n\n /** A label for the range 'from' in picker info */\n public rangeFromLabel = 'From';\n\n /** A label for the range 'to' in picker info */\n public rangeToLabel = 'To';\n\n /** A label for the hour12 button (AM) */\n public hour12AMLabel = 'AM';\n\n /** A label for the hour12 button (PM) */\n public hour12PMLabel = 'PM';\n\n /** A label for the today button */\n public todayButtonLabel = 'Today';\n}\n","import { InjectionToken, Provider } from '@angular/core';\n\nexport function defaultOptionsFactory(): Options {\n return DefaultOptions.create();\n}\n\nexport function multiYearOptionsFactory(options: Options): Options['multiYear'] {\n return options.multiYear;\n}\n\nexport type Options = {\n multiYear: {\n yearsPerRow: number;\n yearRows: number;\n };\n};\n\nexport class DefaultOptions {\n public static create(): Options {\n // Always return new instance\n return {\n multiYear: {\n yearRows: 7,\n yearsPerRow: 3\n }\n };\n }\n}\n\nexport abstract class OptionsTokens {\n public static all = new InjectionToken<Options>('All options token');\n}\n\nexport const optionsProviders: Array<Provider> = [\n {\n provide: OptionsTokens.all,\n useFactory: defaultOptionsFactory\n }\n];\n","import {\n DOWN_ARROW,\n END,\n ENTER,\n HOME,\n LEFT_ARROW,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n UP_ARROW\n} from '@angular/cdk/keycodes';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n inject,\n output,\n viewChild\n} from '@angular/core';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport { CalendarCell, OwlCalendarBodyComponent } from './calendar-body.component';\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\nimport { SelectMode } from './date-time.class';\nimport { OptionsTokens } from './options-provider';\n\n@Component({\n selector: 'owl-date-time-multi-year-view',\n templateUrl: './calendar-multi-year-view.component.html',\n imports: [OwlCalendarBodyComponent],\n host: { 'class': 'owl-dt-calendar-view owl-dt-calendar-multi-year-view' },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OwlMultiYearViewComponent<T> implements AfterContentInit {\n private readonly cdRef = inject(ChangeDetectorRef);\n private readonly pickerIntl = inject(OwlDateTimeIntl);\n private readonly dateTimeAdapter = inject(DateTimeAdapter<T>, { optional: true });\n private readonly options = inject(OptionsTokens.all);\n\n /**\n * The select mode of the picker;\n */\n private _selectMode: SelectMode = 'single';\n @Input()\n public get selectMode(): SelectMode {\n return this._selectMode;\n }\n\n public set selectMode(val: SelectMode) {\n this._selectMode = val;\n if (this.initiated) {\n this.setSelectedYears();\n this.cdRef.markForCheck();\n }\n }\n\n /** The currently selected date. */\n private _selected: T | null;\n @Input()\n public get selected(): T | null {\n return this._selected;\n }\n\n public set selected(value: T | null) {\n const oldSelected = this._selected;\n value = this.dateTimeAdapter.deserialize(value);\n this._selected = this.getValidDate(value);\n\n if (!this.dateTimeAdapter.isSameDay(oldSelected, this._selected)) {\n this.setSelectedYears();\n }\n }\n\n private _selecteds: Array<T> = [];\n @Input()\n public get selecteds(): Array<T> {\n return this._selecteds;\n }\n\n public set selecteds(values: Array<T>) {\n this._selecteds = values.map((v) => {\n v = this.dateTimeAdapter.deserialize(v);\n return this.getValidDate(v);\n });\n this.setSelectedYears();\n }\n\n private _pickerMoment: T | null;\n @Input()\n public get pickerMoment(): T | null {\n return this._pickerMoment;\n }\n\n public set pickerMoment(value: T) {\n const oldMoment = this._pickerMoment;\n value = this.dateTimeAdapter.deserialize(value);\n this._pickerMoment = this.getValidDate(value) || this.dateTimeAdapter.now();\n\n if (oldMoment && this._pickerMoment && !this.isSameYearList(oldMoment, this._pickerMoment)) {\n this.generateYearList();\n }\n }\n\n /**\n * A function used to filter which dates are selectable\n */\n private _dateFilter: (date: T) => boolean;\n @Input()\n public get dateFilter(): (date: T) => boolean {\n return this._dateFilter;\n }\n\n public set dateFilter(filter: (date: T) => boolean) {\n this._dateFilter = filter;\n if (this.initiated) {\n this.generateYearList();\n }\n }\n\n /** The minimum selectable date. */\n private _minDate: T | null;\n @Input()\n public get minDate(): T | null {\n return this._minDate;\n }\n\n public set minDate(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._minDate = this.getValidDate(value);\n if (this.initiated) {\n this.generateYearList();\n }\n }\n\n /** The maximum selectable date. */\n private _maxDate: T | null;\n @Input()\n public get maxDate(): T | null {\n return this._maxDate;\n }\n\n public set maxDate(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._maxDate = this.getValidDate(value);\n if (this.initiated) {\n this.generateYearList();\n }\n }\n\n private _todayYear: number;\n protected get todayYear(): number {\n return this._todayYear;\n }\n\n private _years: Array<Array<CalendarCell>>;\n protected get years(): Array<Array<CalendarCell>> {\n return this._years;\n }\n\n private _selectedYears: Array<number>;\n protected get selectedYears(): Array<number> {\n return this._selectedYears;\n }\n\n private initiated = false;\n\n protected get isInSingleMode(): boolean {\n return this.selectMode === 'single';\n }\n\n protected get isInRangeMode(): boolean {\n return this.selectMode === 'range' || this.selectMode === 'rangeFrom' || this.selectMode === 'rangeTo';\n }\n\n protected get activeCell(): number | undefined {\n if (this._pickerMoment) {\n return (\n this.dateTimeAdapter.getYear(this._pickerMoment) %\n (this.options.multiYear.yearsPerRow * this.options.multiYear.yearRows)\n );\n }\n return undefined;\n }\n\n protected get tableHeader(): string | undefined {\n if (this._years && this._years.length > 0) {\n return `${this._years[0][0].displayValue} - ${this._years[this.options.multiYear.yearRows - 1][this.options.multiYear.yearsPerRow - 1].displayValue}`;\n }\n return undefined;\n }\n\n protected get prevButtonLabel(): string {\n return this.pickerIntl.prevMultiYearLabel;\n }\n\n protected get nextButtonLabel(): string {\n return this.pickerIntl.nextMultiYearLabel;\n }\n\n /**\n * Callback to invoke when a new month is selected\n */\n public readonly changeYear = output<T>();\n\n /**\n * Emits the selected year. This doesn't imply a change on the selected date\n */\n public readonly yearSelected = output<T>();\n\n /** Emits when any date is activated. */\n public readonly pickerMomentChange = output<T>();\n\n /** Emits when use keyboard enter to select a calendar cell */\n public readonly keyboardEnter = output<void>();\n\n /** The body of calendar table */\n protected readonly calendarBodyElm = viewChild(OwlCalendarBodyComponent);\n\n public ngAfterContentInit(): void {\n this._todayYear = this.dateTimeAdapter.getYear(this.dateTimeAdapter.now());\n this.generateYearList();\n this.initiated = true;\n }\n\n /**\n * Handle a calendarCell selected\n */\n public selectCalendarCell(cell: CalendarCell): void {\n this.selectYear(cell.value);\n }\n\n private selectYear(year: number): void {\n this.yearSelected.emit(this.dateTimeAdapter.createDate(year, 0, 1));\n const firstDateOfMonth = this.dateTimeAdapter.createDate(year, this.dateTimeAdapter.getMonth(this.pickerMoment), 1);\n const daysInMonth = this.dateTimeAdapter.getNumDaysInMonth(firstDateOfMonth);\n const selected = this.dateTimeAdapter.createDate(\n year,\n this.dateTimeAdapter.getMonth(this.pickerMoment),\n Math.min(daysInMonth, this.dateTimeAdapter.getDate(this.pickerMoment)),\n this.dateTimeAdapter.getHours(this.pickerMoment),\n this.dateTimeAdapter.getMinutes(this.pickerMoment),\n this.dateTimeAdapter.getSeconds(this.pickerMoment)\n );\n\n this.changeYear.emit(selected);\n }\n\n /**\n * Generate the previous year list\n */\n public prevYearList(event: Event): void {\n this._pickerMoment = this.dateTimeAdapter.addCalendarYears(\n this.pickerMoment,\n -1 * this.options.multiYear.yearsPerRow * this.options.multiYear.yearRows\n );\n this.generateYearList();\n event.preventDefault();\n }\n\n /**\n * Generate the next year list\n */\n public nextYearList(event: Event): void {\n this._pickerMoment = this.dateTimeAdapter.addCalendarYears(\n this.pickerMoment,\n this.options.multiYear.yearsPerRow * this.options.multiYear.yearRows\n );\n this.generateYearList();\n event.preventDefault();\n }\n\n public generateYearList(): void {\n this._years = [];\n\n const pickerMomentYear = this.dateTimeAdapter.getYear(this._pickerMoment);\n const offset = pickerMomentYear % (this.options.multiYear.yearsPerRow * this.options.multiYear.yearRows);\n\n for (let i = 0; i < this.options.multiYear.yearRows; i++) {\n const row = [];\n\n for (let j = 0; j < this.options.multiYear.yearsPerRow; j++) {\n const year = pickerMomentYear - offset + (j + i * this.options.multiYear.yearsPerRow);\n const yearCell = this.createYearCell(year);\n row.push(yearCell);\n }\n\n this._years.push(row);\n }\n\n return;\n }\n\n /** Whether the previous period button is enabled. */\n public previousEnabled(): boolean {\n if (!this.minDate) {\n return true;\n }\n return !this.minDate || !this.isSameYearList(this._pickerMoment, this.minDate);\n }\n\n /** Whether the next period button is enabled. */\n public nextEnabled(): boolean {\n return !this.maxDate || !this.isSameYearList(this._pickerMoment, this.maxDate);\n }\n\n public handleCalendarKeydown(event: KeyboardEvent): void {\n let moment;\n switch (event.keyCode) {\n // minus 1 year\n case LEFT_ARROW:\n moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment, -1);\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 1 year\n case RIGHT_ARROW:\n moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment, 1);\n this.pickerMomentChange.emit(moment);\n break;\n\n // minus 3 years\n case UP_ARROW:\n moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment, -1 * this.options.multiYear.yearsPerRow);\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 3 years\n case DOWN_ARROW:\n moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment, this.options.multiYear.yearsPerRow);\n this.pickerMomentChange.emit(moment);\n break;\n\n // go to the first year of the year page\n case HOME:\n moment = this.dateTimeAdapter.addCalendarYears(\n this._pickerMoment,\n -this.dateTimeAdapter.getYear(this._pickerMoment) %\n (this.options.multiYear.yearsPerRow * this.options.multiYear.yearRows)\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // go to the last year of the year page\n case END:\n moment = this.dateTimeAdapter.addCalendarYears(\n this._pickerMoment,\n this.options.multiYear.yearsPerRow * this.options.multiYear.yearRows -\n (this.dateTimeAdapter.getYear(this._pickerMoment) %\n (this.options.multiYear.yearsPerRow * this.options.multiYear.yearRows)) -\n 1\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // minus 1 year page (or 10 year pages)\n case PAGE_UP:\n moment = this.dateTimeAdapter.addCalendarYears(\n this.pickerMoment,\n event.altKey ?\n -10 * (this.options.multiYear.yearsPerRow * this.options.multiYear.yearRows)\n : -1 * (this.options.multiYear.yearsPerRow * this.options.multiYear.yearRows)\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 1 year page (or 10 year pages)\n case PAGE_DOWN:\n moment = this.dateTimeAdapter.addCalendarYears(\n this.pickerMoment,\n event.altKey ?\n 10 * (this.options.multiYear.yearsPerRow * this.options.multiYear.yearRows)\n : this.options.multiYear.yearsPerRow * this.options.multiYear.yearRows\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n case ENTER:\n this.selectYear(this.dateTimeAdapter.getYear(this._pickerMoment));\n this.keyboardEnter.emit();\n break;\n\n default:\n return;\n }\n\n this.focusActiveCell();\n event.preventDefault();\n }\n\n /**\n * Creates an CalendarCell for the given year.\n */\n private createYearCell(year: number): CalendarCell {\n const startDateOfYear = this.dateTimeAdapter.createDate(year, 0, 1);\n const ariaLabel = this.dateTimeAdapter.getYearName(startDateOfYear);\n const cellClass = `owl-dt-year-${year}`;\n return new CalendarCell(year, year.toString(), ariaLabel, this.isYearEnabled(year), false, cellClass);\n }\n\n private setSelectedYears(): void {\n this._selectedYears = [];\n\n if (this.isInSingleMode && this.selected) {\n this._selectedYears[0] = this.dateTimeAdapter.getYear(this.selected);\n }\n\n if (this.isInRangeMode && this.selecteds) {\n this._selectedYears = this.selecteds.map((selected) => {\n if (this.dateTimeAdapter.isValid(selected)) {\n return this.dateTimeAdapter.getYear(selected);\n } else {\n return null;\n }\n });\n }\n }\n\n /** Whether the given year is enabled. */\n private isYearEnabled(year: number): boolean {\n // disable if the year is greater than maxDate lower than minDate\n if (\n year === undefined ||\n year === null ||\n (this.maxDate && year > this.dateTimeAdapter.getYear(this.maxDate)) ||\n (this.minDate && year < this.dateTimeAdapter.getYear(this.minDate))\n ) {\n return false;\n }\n\n // enable if it reaches here and there's no filter defined\n if (!this.dateFilter) {\n return true;\n }\n\n const firstOfYear = this.dateTimeAdapter.createDate(year, 0, 1);\n\n // If any date in the year is enabled count the year as enabled.\n for (\n let date = firstOfYear;\n this.dateTimeAdapter.getYear(date) === year;\n date = this.dateTimeAdapter.addCalendarDays(date, 1)\n ) {\n if (this.dateFilter(date)) {\n return true;\n }\n }\n\n return false;\n }\n\n private isSameYearList(date1: T, date2: T): boolean {\n return (\n Math.floor(\n this.dateTimeAdapter.getYear(date1) / (this.options.multiYear.yearsPerRow * this.options.multiYear.yearRows)\n ) ===\n Math.floor(\n this.dateTimeAdapter.getYear(date2) / (this.options.multiYear.yearsPerRow * this.options.multiYear.yearRows)\n )\n );\n }\n\n /**\n * Get a valid date object\n */\n private getValidDate(obj: unknown): T | null {\n return this.dateTimeAdapter.isDateInstance(obj) && this.dateTimeAdapter.isValid(obj) ? obj : null;\n }\n\n private focusActiveCell(): void {\n this.calendarBodyElm().focusActiveCell();\n }\n}\n","<button\n [attr.aria-label]=\"prevButtonLabel\"\n [disabled]=\"!previousEnabled()\"\n (click)=\"prevYearList($event)\"\n class=\"owl-dt-control-button owl-dt-control-arrow-button\"\n tabindex=\"0\"\n type=\"button\">\n <span\n class=\"owl-dt-control-button-content\"\n tabindex=\"-1\">\n <svg\n xml:space=\"preserve\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n height=\"100%\"\n style=\"enable-background: new 0 0 250.738 250.738\"\n version=\"1.1\"\n viewBox=\"0 0 250.738 250.738\"\n width=\"100%\"\n x=\"0px\"\n xmlns=\"http://www.w3.org/2000/svg\"\n y=\"0px\">\n <path\n d=\"M96.633,125.369l95.053-94.533c7.101-7.055,7.101-18.492,0-25.546 c-7.1-7.054-18.613-7.054-25.714,0L58.989,111.689c-3.784,3.759-5.487,8.759-5.238,13.68c-0.249,4.922,1.454,9.921,5.238,13.681 l106.983,106.398c7.101,7.055,18.613,7.055,25.714,0c7.101-7.054,7.101-18.491,0-25.544L96.633,125.369z\"\n style=\"fill-rule: evenodd; clip-rule: evenodd\" />\n </svg>\n </span>\n</button>\n<table class=\"owl-dt-calendar-table owl-dt-calendar-multi-year-table\">\n <thead class=\"owl-dt-calendar-header\">\n <tr>\n <th colspan=\"3\">{{ tableHeader }}</th>\n </tr>\n </thead>\n <tbody\n [activeCell]=\"activeCell\"\n [cellRatio]=\"3 / 7\"\n [numCols]=\"3\"\n [rows]=\"years\"\n [selectMode]=\"selectMode\"\n [selectedValues]=\"selectedYears\"\n [todayValue]=\"todayYear\"\n (keydown)=\"handleCalendarKeydown($event)\"\n (selectCell)=\"selectCalendarCell($event)\"\n owl-date-time-calendar-body\n role=\"grid\"></tbody>\n</table>\n<button\n [attr.aria-label]=\"nextButtonLabel\"\n [disabled]=\"!nextEnabled()\"\n (click)=\"nextYearList($event)\"\n class=\"owl-dt-control-button owl-dt-control-arrow-button\"\n tabindex=\"0\"\n type=\"button\">\n <span\n class=\"owl-dt-control-button-content\"\n tabindex=\"-1\">\n <svg\n xml:space=\"preserve\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n style=\"enable-background: new 0 0 250.738 250.738\"\n version=\"1.1\"\n viewBox=\"0 0 250.738 250.738\"\n x=\"0px\"\n xmlns=\"http://www.w3.org/2000/svg\"\n y=\"0px\">\n <path\n d=\"M191.75,111.689L84.766,5.291c-7.1-7.055-18.613-7.055-25.713,0\n c-7.101,7.054-7.101,18.49,0,25.544l95.053,94.534l-95.053,94.533c-7.101,7.054-7.101,18.491,0,25.545\n c7.1,7.054,18.613,7.054,25.713,0L191.75,139.05c3.784-3.759,5.487-8.759,5.238-13.681\n C197.237,120.447,195.534,115.448,191.75,111.689z\"\n style=\"fill-rule: evenodd; clip-rule: evenodd\" />\n </svg>\n </span>\n</button>\n","import {\n DOWN_ARROW,\n END,\n ENTER,\n HOME,\n LEFT_ARROW,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n UP_ARROW\n} from '@angular/cdk/keycodes';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n Input,\n OnDestroy,\n OnInit,\n ViewChild,\n inject,\n output\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport { OWL_DATE_TIME_FORMATS } from './adapter/date-time-format.class';\nimport { CalendarCell, OwlCalendarBodyComponent } from './calendar-body.component';\nimport { SelectMode } from './date-time.class';\n\nconst MONTHS_PER_YEAR = 12;\nconst MONTHS_PER_ROW = 3;\n\n@Component({\n imports: [OwlCalendarBodyComponent],\n selector: 'owl-date-time-year-view',\n exportAs: 'owlMonthView',\n templateUrl: './calendar-year-view.component.html',\n host: { 'class': 'owl-dt-calendar-view' },\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OwlYearViewComponent<T> implements OnInit, AfterContentInit, OnDestroy {\n private readonly cdRef = inject(ChangeDetectorRef);\n private readonly dateTimeAdapter = inject<DateTimeAdapter<T>>(DateTimeAdapter<T>, { optional: true });\n private readonly dateTimeFormats = inject(OWL_DATE_TIME_FORMATS, { optional: true });\n\n /**\n * The select mode of the picker;\n */\n private _selectMode: SelectMode = 'single';\n @Input()\n public get selectMode(): SelectMode {\n return this._selectMode;\n }\n\n public set selectMode(val: SelectMode) {\n this._selectMode = val;\n if (this.initiated) {\n this.generateMonthList();\n this.cdRef.markForCheck();\n }\n }\n\n /** The currently selected date. */\n private _selected: T | null;\n @Input()\n public get selected(): T | null {\n return this._selected;\n }\n\n public set selected(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._selected = this.getValidDate(value);\n this.setSelectedMonths();\n }\n\n private _selecteds: Array<T> = [];\n @Input()\n public get selecteds(): Array<T> {\n return this._selecteds;\n }\n\n public set selecteds(values: Array<T>) {\n this._selecteds = [];\n for (const val of values) {\n const value = this.dateTimeAdapter.deserialize(val);\n this._selecteds.push(this.getValidDate(value));\n }\n\n this.setSelectedMonths();\n }\n\n private _pickerMoment: T | null;\n @Input()\n public get pickerMoment(): T | null {\n return this._pickerMoment;\n }\n\n public set pickerMoment(value: T) {\n const oldMoment = this._pickerMoment;\n value = this.dateTimeAdapter.deserialize(value);\n this._pickerMoment = this.getValidDate(value) || this.dateTimeAdapter.now();\n\n if (!this.hasSameYear(oldMoment, this._pickerMoment) && this.initiated) {\n this.generateMonthList();\n }\n }\n\n /**\n * A function used to filter which dates are selectable\n */\n private _dateFilter: (date: T) => boolean;\n @Input()\n public get dateFilter(): (date: T) => boolean {\n return this._dateFilter;\n }\n\n public set dateFilter(filter: (date: T) => boolean) {\n this._dateFilter = filter;\n if (this.initiated) {\n this.generateMonthList();\n }\n }\n\n /** The minimum selectable date. */\n private _minDate: T | null;\n @Input()\n public get minDate(): T | null {\n return this._minDate;\n }\n\n public set minDate(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._minDate = this.getValidDate(value);\n if (this.initiated) {\n this.generateMonthList();\n }\n }\n\n /** The maximum selectable date. */\n private _maxDate: T | null;\n @Input()\n public get maxDate(): T | null {\n return this._maxDate;\n }\n\n public set maxDate(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._maxDate = this.getValidDate(value);\n if (this.initiated) {\n this.generateMonthList();\n }\n }\n\n private readonly monthNames = this.dateTimeAdapter.getMonthNames('short');\n\n private _months: Array<Array<CalendarCell>>;\n protected get months(): Array<Array<CalendarCell>> {\n return this._months;\n }\n\n protected get activeCell(): number {\n if (this._pickerMoment) {\n return this.dateTimeAdapter.getMonth(this._pickerMoment);\n }\n return undefined;\n }\n\n protected get isInSingleMode(): boolean {\n return this.selectMode === 'single';\n }\n\n protected get isInRangeMode(): boolean {\n return this.selectMode === 'range' || this.selectMode === 'rangeFrom' || this.selectMode === 'rangeTo';\n }\n\n private localeSub: Subscription = Subscription.EMPTY;\n\n private initiated = false;\n\n public todayMonth: number | null;\n\n /**\n * An array to hold all selectedDates' month value\n * the value is the month number in current year\n */\n public selectedMonths: Array<number> = [];\n\n /**\n * Callback to invoke when a new month is selected\n */\n public readonly changeMonth = output<T>();\n\n /**\n * Emits the selected year. This doesn't imply a change on the selected date\n */\n public readonly monthSelected = output<T>();\n\n /** Emits when any date is activated. */\n public readonly pickerMomentChange = output<T>();\n\n /** Emits when use keyboard enter to select a calendar cell */\n public readonly keyboardEnter = output<void>();\n\n /** The body of calendar table */\n @ViewChild(OwlCalendarBodyComponent, { static: true })\n protected calendarBodyElm: OwlCalendarBodyComponent;\n\n public ngOnInit(): void {\n this.localeSub = this.dateTimeAdapter.localeChanges.subscribe(() => {\n this.generateMonthList();\n this.cdRef.markForCheck();\n });\n }\n\n public ngAfterContentInit(): void {\n this.generateMonthList();\n this.initiated = true;\n }\n\n public ngOnDestroy(): void {\n this.localeSub.unsubscribe();\n }\n\n /**\n * Handle a calendarCell selected\n */\n public selectCalendarCell(cell: CalendarCell): void {\n this.selectMonth(cell.value);\n }\n\n /**\n * Handle a new month selected\n */\n private selectMonth(month: number): void {\n const firstDateOfMonth = this.dateTimeAdapter.createDate(this.dateTimeAdapter.getYear(this.pickerMoment), month, 1);\n\n this.monthSelected.emit(firstDateOfMonth);\n\n const daysInMonth = this.dateTimeAdapter.getNumDaysInMonth(firstDateOfMonth);\n const result = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(this.pickerMoment),\n month,\n Math.min(daysInMonth, this.dateTimeAdapter.getDate(this.pickerMoment)),\n this.dateTimeAdapter.getHours(this.pickerMoment),\n this.dateTimeAdapter.getMinutes(this.pickerMoment),\n this.dateTimeAdapter.getSeconds(this.pickerMoment)\n );\n\n this.changeMonth.emit(result);\n }\n\n /**\n * Handle keydown event on calendar body\n */\n public handleCalendarKeydown(event: KeyboardEvent): void {\n let moment;\n switch (event.keyCode) {\n // minus 1 month\n case LEFT_ARROW:\n moment = this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, -1);\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 1 month\n case RIGHT_ARROW:\n moment = this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, 1);\n this.pickerMomentChange.emit(moment);\n break;\n\n // minus 3 months\n case UP_ARROW:\n moment = this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, -3);\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 3 months\n case DOWN_ARROW:\n moment = this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, 3);\n this.pickerMomentChange.emit(moment);\n break;\n\n // move to first month of current year\n case HOME:\n moment = this.dateTimeAdapter.addCalendarMonths(\n this.pickerMoment,\n -this.dateTimeAdapter.getMonth(this.pickerMoment)\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // move to last month of current year\n case END:\n moment = this.dateTimeAdapter.addCalendarMonths(\n this.pickerMoment,\n 11 - this.dateTimeAdapter.getMonth(this.pickerMoment)\n );\n this.pickerMomentChange.emit(moment);\n break;\n\n // minus 1 year (or 10 year)\n case PAGE_UP:\n moment = this.dateTimeAdapter.addCalendarYears(this.pickerMoment, event.altKey ? -10 : -1);\n this.pickerMomentChange.emit(moment);\n break;\n\n // add 1 year (or 10 year)\n case PAGE_DOWN:\n moment = this.dateTimeAdapter.addCalendarYears(this.pickerMoment, event.altKey ? 10 : 1);\n this.pickerMomentChange.emit(moment);\n break;\n\n // Select current month\n case ENTER:\n this.selectMonth(this.dateTimeAdapter.getMonth(this.pickerMoment));\n this.keyboardEnter.emit();\n break;\n default:\n return;\n }\n\n this.focusActiveCell();\n event.preventDefault();\n }\n\n /**\n * Generate the calendar month list\n */\n private generateMonthList(): void {\n if (!this.pickerMoment) {\n return;\n }\n\n this.setSelectedMonths();\n this.todayMonth = this.getMonthInCurrentYear(this.dateTimeAdapter.now());\n\n this._months = [];\n for (let i = 0; i < MONTHS_PER_YEAR / MONTHS_PER_ROW; i++) {\n const row = [];\n\n for (let j = 0; j < MONTHS_PER_ROW; j++) {\n const month = j + i * MONTHS_PER_ROW;\n const monthCell = this.createMonthCell(month);\n row.push(monthCell);\n }\n\n this._months.push(row);\n }\n\n return;\n }\n\n /**\n * Creates an CalendarCell for the given month.\n */\n private createMonthCell(month: number): CalendarCell {\n const startDateOfMonth = this.dateTimeAdapter.createDate(this.dateTimeAdapter.getYear(this.pickerMoment), month, 1);\n const ariaLabel = this.dateTimeAdapter.format(startDateOfMonth, this.dateTimeFormats.monthYearA11yLabel);\n const cellClass = `owl-dt-month-${month}`;\n return new CalendarCell(month, this.monthNames[month], ariaLabel, this.isMonthEnabled(month), false, cellClass);\n }\n\n /**\n * Check if the given month is enable\n */\n private isMonthEnabled(month: number): boolean {\n const firstDateOfMonth = this.dateTimeAdapter.createDate(this.dateTimeAdapter.getYear(this.pickerMoment), month, 1);\n\n // If any date in the month is selectable,\n // we count the month as enable\n for (\n let date = firstDateOfMonth;\n this.dateTimeAdapter.getMonth(date) === month;\n date = this.dateTimeAdapter.addCalendarDays(date, 1)\n ) {\n if (\n !!date &&\n (!this.dateFilter || this.dateFilter(date)) &&\n (!this.minDate || this.dateTimeAdapter.compare(date, this.minDate) >= 0) &&\n (!this.maxDate || this.dateTimeAdapter.compare(date, this.maxDate) <= 0)\n ) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Gets the month in this year that the given Date falls on.\n * Returns null if the given Date is in another year.\n */\n private getMonthInCurrentYear(date: T | null): number {\n if (this.getValidDate(date) && this.getValidDate(this._pickerMoment)) {\n const result = this.dateTimeAdapter.compareYear(date, this._pickerMoment);\n\n // < 0 : the given date's year is before pickerMoment's year, we return -1 as selected month value.\n // > 0 : the given date's year is after pickerMoment's year, we return 12 as selected month value.\n // 0 : the give date's year is same as the pickerMoment's year, we return the actual month value.\n if (result < 0) {\n return -1;\n } else if (result > 0) {\n return 12;\n } else {\n return this.dateTimeAdapter.getMonth(date);\n }\n } else {\n return null;\n }\n }\n\n /**\n * Set the selectedMonths value\n * In single mode, it has only one value which represent the month the selected date in\n * In range mode, it would has two values, one for the month the fromValue in and the other for the month the toValue in\n */\n private setSelectedMonths(): void {\n this.selectedMonths = [];\n if (this.isInSingleMode && this.selected) {\n this.selectedMonths[0] = this.getMonthInCurrentYear(this.selected);\n }\n\n if (this.isInRangeMode && this.selecteds) {\n this.selectedMonths[0] = this.getMonthInCurrentYear(this.selecteds[0]);\n this.selectedMonths[1] = this.getMonthInCurrentYear(this.selecteds[1]);\n }\n }\n\n /**\n * Check the given dates are in the same year\n */\n private hasSameYear(dateLeft: T, dateRight: T): boolean {\n return !!(\n dateLeft &&\n dateRight &&\n this.dateTimeAdapter.getYear(dateLeft) === this.dateTimeAdapter.getYear(dateRight)\n );\n }\n\n /**\n * Get a valid date object\n */\n private getValidDate(obj: unknown): T | null {\n return this.dateTimeAdapter.isDateInstance(obj) && this.dateTimeAdapter.isValid(obj) ? obj : null;\n }\n\n private focusActiveCell(): void {\n this.calendarBodyElm.focusActiveCell();\n }\n}\n","<table class=\"owl-dt-calendar-table owl-dt-calendar-year-table\">\n <thead class=\"owl-dt-calendar-header\">\n <tr>\n <th\n aria-hidden=\"true\"\n class=\"owl-dt-calendar-table-divider\"\n colspan=\"3\"></th>\n </tr>\n </thead>\n <tbody\n [activeCell]=\"activeCell\"\n [cellRatio]=\"3 / 7\"\n [numCols]=\"3\"\n [rows]=\"months\"\n [selectMode]=\"selectMode\"\n [selectedValues]=\"selectedMonths\"\n [todayValue]=\"todayMonth\"\n (keydown)=\"handleCalendarKeydown($event)\"\n (selectCell)=\"selectCalendarCell($event)\"\n owl-date-time-calendar-body\n role=\"grid\"></tbody>\n</table>\n","/**\n * date-time.class\n */\nimport { booleanAttribute, Directive, inject, Input, numberAttribute, type OutputRef } from '@angular/core';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport { OWL_DATE_TIME_FORMATS, OwlDateTimeFormats } from './adapter/date-time-format.class';\n\nlet nextUniqueId = 0;\n\nexport const PickerType = {\n /**\n * Shows both calendar and timer views.\n */\n Both: 'both',\n /**\n * Shows only the calendar view.\n */\n Calendar: 'calendar',\n /**\n * Shows only the timer view.\n */\n Timer: 'timer'\n} as const;\n\nexport type PickerType = (typeof PickerType)[keyof typeof PickerType];\n\nexport const SelectMode = {\n /**\n * Selects a single date.\n */\n Single: 'single',\n /**\n * Selects a date range.\n */\n Range: 'range',\n /**\n * Selects a date range from a specific date.\n * The end date (range[1]) will always be `null` in this mode.\n */\n RangeFrom: 'rangeFrom',\n /**\n * Selects a date range up to a specific date.\n * The start date (range[0]) will always be `null` in this mode.\n */\n RangeTo: 'rangeTo'\n} as const;\n\nexport type SelectMode = (typeof SelectMode)[keyof typeof SelectMode];\n\nexport const DateView = {\n /**\n * Shows all days of a month in a grid.\n */\n MONTH: 'month',\n /**\n * Shows all months of a year in a grid.\n */\n YEAR: 'year',\n /**\n * Shows a list of years.\n */\n MULTI_YEARS: 'multi-years'\n} as const;\n\nexport type DateViewType = (typeof DateView)[keyof typeof DateView];\n\n@Directive()\nexport abstract class OwlDateTime<T> {\n protected readonly dateTimeAdapter = inject<DateTimeAdapter<T>>(DateTimeAdapter, { optional: true });\n\n protected readonly dateTimeFormats = inject<OwlDateTimeFormats>(OWL_DATE_TIME_FORMATS, { optional: true });\n\n /**\n * Whether to show the second's timer\n */\n @Input({ transform: booleanAttribute })\n public showSecondsTimer: boolean = false;\n\n /**\n * Whether the timer is in hour12 format\n */\n @Input({ transform: booleanAttribute })\n public hour12Timer: boolean = false;\n\n /**\n * The view that the calendar should start in.\n */\n @Input()\n public startView: DateViewType = DateView.MONTH;\n\n /**\n * Whether to should only the year and multi-year views.\n */\n @Input()\n public yearOnly = false;\n\n /**\n * Whether to should only the multi-year view.\n */\n @Input()\n public multiyearOnly = false;\n\n /**\n * Hours to change per step\n */\n @Input({ transform: (v: unknown) => numberAttribute(v, 1) })\n public stepHour: number = 1;\n\n /**\n * Minutes to change per step\n */\n @Input({ transform: (v: unknown) => numberAttribute(v, 1) })\n public stepMinute: number = 1;\n\n /**\n * Seconds to change per step\n */\n @Input({ transform: (v: unknown) => numberAttribute(v, 1) })\n public stepSecond: number = 1;\n\n /**\n * Set the first day of week\n */\n @Input({\n transform: (v: unknown) => {\n const value = numberAttribute(v);\n return value >= 0 && value <= 6 ? value : undefined;\n }\n })\n public firstDayOfWeek: number | undefined;\n\n /**\n * Whether to hide dates in other months at the start or end of the current month.\n */\n @Input({ transform: booleanAttribute })\n public hideOtherMonths: boolean = false;\n\n public readonly id = `owl-dt-picker-${nextUniqueId++}`;\n\n public abstract disabled: boolean;\n\n public abstract get selected(): T | null;\n\n public abstract get selecteds(): Array<T> | null;\n\n public abstract get dateTimeFilter(): (date: T | null) => boolean;\n\n public abstract get maxDateTime(): T | null;\n\n public abstract get minDateTime(): T | null;\n\n public abstract get selectMode(): SelectMode;\n\n public abstract get startAt(): T | null;\n\n public abstract get endAt(): T | null;\n\n public abstract get opened(): boolean;\n\n public abstract get pickerType(): PickerType;\n\n public abstract get isInSingleMode(): boolean;\n\n public abstract get isInRangeMode(): boolean;\n\n public abstract select(date: T | Array<T>): void;\n\n public abstract yearSelected: OutputRef<T>;\n\n public abstract monthSelected: OutputRef<T>;\n\n public abstract dateSelected: OutputRef<T>;\n\n public abstract selectYear(normalizedYear: T): void;\n\n public abstract selectMonth(normalizedMonth: T): void;\n\n public abstract selectDate(normalizedDate: T): void;\n\n public get displayFormat(): Partial<Intl.DateTimeFormatOptions> {\n if (this.pickerType === 'both') {\n return this.dateTimeFormats.fullPickerInput;\n }\n\n if (this.pickerType === 'calendar') {\n return this.dateTimeFormats.datePickerInput;\n }\n\n return this.dateTimeFormats.timePickerInput;\n }\n\n /**\n * Date Time Checker to check if the give dateTime is selectable\n */\n public dateTimeChecker = (dateTime: T): boolean => {\n return (\n !!dateTime &&\n (!this.dateTimeFilter || this.dateTimeFilter(dateTime)) &&\n (!this.minDateTime || this.dateTimeAdapter.compare(dateTime, this.minDateTime) >= 0) &&\n (!this.maxDateTime || this.dateTimeAdapter.compare(dateTime, this.maxDateTime) <= 0)\n );\n };\n\n constructor() {\n if (!this.dateTimeAdapter) {\n throw Error(\n `OwlDateTimePicker: No provider found for DateTimeAdapter. You must import one of the following ` +\n `modules at your application root: OwlNativeDateTimeModule, OwlMomentDateTimeModule, or provide a ` +\n `custom implementation.`\n );\n }\n\n if (!this.dateTimeFormats) {\n throw Error(\n `OwlDateTimePicker: No provider found for OWL_DATE_TIME_FORMATS. You must import one of the following ` +\n `modules at your application root: OwlNativeDateTimeModule, OwlMomentDateTimeModule, or provide a ` +\n `custom implementation.`\n );\n }\n }\n\n protected getValidDate(obj: unknown): T | null {\n return this.dateTimeAdapter.isDateInstance(obj) && this.dateTimeAdapter.isValid(obj) ? obj : null;\n }\n}\n","import { A11yModule } from '@angular/cdk/a11y';\nimport {\n AfterContentInit,\n AfterViewChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n inject,\n Input,\n NgZone,\n output\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { take } from 'rxjs';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport { OWL_DATE_TIME_FORMATS } from './adapter/date-time-format.class';\nimport { OwlMonthViewComponent } from './calendar-month-view.component';\nimport { OwlMultiYearViewComponent } from './calendar-multi-year-view.component';\nimport { OwlYearViewComponent } from './calendar-year-view.component';\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\nimport { DateView, DateViewType, SelectMode } from './date-time.class';\n\n@Component({\n selector: 'owl-date-time-calendar',\n exportAs: 'owlDateTimeCalendar',\n templateUrl: './calendar.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [A11yModule, OwlMonthViewComponent, OwlYearViewComponent, OwlMultiYearViewComponent],\n host: { 'class': 'owl-dt-calendar' }\n})\nexport class OwlCalendarComponent<T> implements AfterContentInit, AfterViewChecked {\n private readonly elmRef = inject(ElementRef);\n private readonly pickerIntl = inject(OwlDateTimeIntl);\n private readonly ngZone = inject(NgZone);\n private readonly cdRef = inject(ChangeDetectorRef);\n private readonly dateTimeAdapter = inject(DateTimeAdapter<T>, { optional: true });\n private readonly dateTimeFormats = inject(OWL_DATE_TIME_FORMATS, { optional: true });\n\n protected readonly DateView = DateView;\n\n @Input()\n get minDate(): T | null {\n return this._minDate;\n }\n\n set minDate(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n value = this.getValidDate(value);\n\n this._minDate =\n value ?\n this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(value),\n this.dateTimeAdapter.getMonth(value),\n this.dateTimeAdapter.getDate(value)\n )\n : null;\n }\n\n @Input()\n get maxDate(): T | null {\n return this._maxDate;\n }\n\n set maxDate(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n value = this.getValidDate(value);\n\n this._maxDate =\n value ?\n this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(value),\n this.dateTimeAdapter.getMonth(value),\n this.dateTimeAdapter.getDate(value)\n )\n : null;\n }\n\n @Input()\n get pickerMoment(): T {\n return this._pickerMoment;\n }\n\n set pickerMoment(value: T) {\n value = this.dateTimeAdapter.deserialize(value);\n this._pickerMoment = this.getValidDate(value) || this.dateTimeAdapter.now();\n }\n\n @Input()\n get selected(): T | null {\n return this._selected;\n }\n\n set selected(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._selected = this.getValidDate(value);\n }\n\n @Input()\n get selecteds(): Array<T> {\n return this._selecteds;\n }\n\n set selecteds(values: Array<T>) {\n this._selecteds = values.map((v) => {\n v = this.dateTimeAdapter.deserialize(v);\n return this.getValidDate(v);\n });\n }\n\n get periodButtonText(): string {\n return this.isMonthView ?\n this.dateTimeAdapter.format(this.pickerMoment, this.dateTimeFormats.monthYearLabel)\n : this.dateTimeAdapter.getYearName(this.pickerMoment);\n }\n\n get periodButtonLabel(): string {\n return this.isMonthView ? this.pickerIntl.switchToMultiYearViewLabel : this.pickerIntl.switchToMonthViewLabel;\n }\n\n get todayButtonLabel(): string {\n return this.pickerIntl.todayButtonLabel;\n }\n\n get prevButtonLabel(): string {\n if (this._currentView === DateView.MONTH) {\n return this.pickerIntl.prevMonthLabel;\n } else if (this._currentView === DateView.YEAR) {\n return this.pickerIntl.prevYearLabel;\n } else {\n return null;\n }\n }\n\n get nextButtonLabel(): string {\n if (this._currentView === DateView.MONTH) {\n return this.pickerIntl.nextMonthLabel;\n } else if (this._currentView === DateView.YEAR) {\n return this.pickerIntl.nextYearLabel;\n } else {\n return null;\n }\n }\n\n get currentView(): DateViewType {\n return this._currentView;\n }\n\n set currentView(view: DateViewType) {\n this._currentView = view;\n this.moveFocusOnNextTick = true;\n }\n\n get isInSingleMode(): boolean {\n return this.selectMode === 'single';\n }\n\n get isInRangeMode(): boolean {\n return this.selectMode === 'range' || this.selectMode === 'rangeFrom' || this.selectMode === 'rangeTo';\n }\n\n get showControlArrows(): boolean {\n return this._currentView !== DateView.MULTI_YEARS;\n }\n\n get isMonthView(): boolean {\n return this._currentView === DateView.MONTH;\n }\n\n public get isTodayAllowed(): boolean {\n if (!this.dateTimeAdapter) {\n return false;\n }\n const now = this.dateTimeAdapter.now();\n // Normalize 'today' to the start of the day, how minDate and maxDate are stored\n const today = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(now),\n this.dateTimeAdapter.getMonth(now),\n this.dateTimeAdapter.getDate(now)\n );\n\n if (this.minDate && this.dateTimeAdapter.compare(today, this.minDate) < 0) {\n return false;\n }\n\n if (this.maxDate && this.dateTimeAdapter.compare(today, this.maxDate) > 0) {\n return false;\n }\n\n return true;\n }\n\n /**\n * Date filter for the month and year view\n */\n @Input()\n public dateFilter: (date: T) => boolean;\n\n /**\n * Set the first day of week\n */\n @Input()\n public firstDayOfWeek: number;\n\n /** The minimum selectable date. */\n private _minDate: T | null;\n\n /** The maximum selectable date. */\n private _maxDate: T | null;\n\n /** The current picker moment */\n private _pickerMoment: T;\n\n @Input()\n public selectMode: SelectMode;\n\n /** The currently selected moment. */\n private _selected: T | null;\n\n private _selecteds: Array<T> = [];\n\n /**\n * The view that the calendar should start in.\n */\n @Input()\n public startView: DateViewType = DateView.MONTH;\n\n /**\n * Whether to should only the year and multi-year views.\n */\n @Input()\n public yearOnly = false;\n\n /**\n * Whether to should only the multi-year view.\n */\n @Input()\n public multiyearOnly = false;\n\n /**\n * Whether to hide dates in other months at the start or end of the current month.\n */\n @Input()\n public hideOtherMonths: boolean;\n\n /**\n * Flag to show today button to jump to today's date. Defaults to `false`.\n */\n @Input()\n public showTodayButton: boolean = false;\n\n /**\n * Emits when the currently picker moment changes.\n */\n public readonly pickerMomentChange = output<T>();\n\n /**\n * Emits when the selected date changes.\n */\n public readonly dateClicked = output<T>();\n\n /**\n * Emits when the currently selected date changes.\n */\n public readonly selectedChange = output<T>();\n\n /**\n * Emits when any date is selected.\n */\n public readonly userSelection = output<void>();\n\n /**\n * Emits the selected year. This doesn't imply a change on the selected date\n */\n public readonly yearSelected = output<T>();\n\n /**\n * Emits the selected month. This doesn't imply a change on the selected date\n */\n public readonly monthSelected = output<T>();\n\n private _currentView: DateViewType;\n\n constructor() {\n this.pickerIntl.changes.pipe(takeUntilDestroyed()).subscribe(() => {\n this.cdRef.markForCheck();\n });\n }\n\n /**\n * Used for scheduling that focus should be moved to the active cell on the next tick.\n * We need to schedule it, rather than do it immediately, because we have to wait\n * for Angular to re-evaluate the view children.\n */\n private moveFocusOnNextTick = false;\n\n /**\n * Date filter for the month and year view\n */\n public dateFilterForViews: (date: T | null) => boolean = (date: T) => {\n return (\n !!date &&\n (!this.dateFilter || this.dateFilter(date)) &&\n (!this.minDate || this.dateTimeAdapter.compare(date, this.minDate) >= 0) &&\n (!this.maxDate || this.dateTimeAdapter.compare(date, this.maxDate) <= 0)\n );\n };\n\n public ngAfterContentInit(): void {\n this._currentView = this.startView;\n }\n\n public ngAfterViewChecked(): void {\n if (this.moveFocusOnNextTick) {\n this.moveFocusOnNextTick = false;\n this.focusActiveCell();\n }\n }\n\n /**\n * Toggle between month view and year view\n */\n public toggleViews(): void {\n let nextView = null;\n if (this._currentView === DateView.MONTH) {\n nextView = DateView.MULTI_YEARS;\n } else {\n if (this.multiyearOnly) {\n nextView = DateView.MULTI_YEARS;\n } else if (this.yearOnly) {\n nextView = this._currentView === DateView.YEAR ? DateView.MULTI_YEARS : DateView.YEAR;\n } else {\n nextView = DateView.MONTH;\n }\n }\n this.currentView = nextView;\n }\n\n /**\n * Handles user clicks on the previous button.\n */\n public previousClicked(): void {\n this.pickerMoment =\n this.isMonthView ?\n this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, -1)\n : this.dateTimeAdapter.addCalendarYears(this.pickerMoment, -1);\n\n this.pickerMomentChange.emit(this.pickerMoment);\n }\n\n /**\n * Handles user clicks on the next button.\n */\n public nextClicked(): void {\n this.pickerMoment =\n this.isMonthView ?\n this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, 1)\n : this.dateTimeAdapter.addCalendarYears(this.pickerMoment, 1);\n\n this.pickerMomentChange.emit(this.pickerMoment);\n }\n\n public jumpToToday(): void {\n const now = this.dateTimeAdapter.now();\n let today = this.dateTimeAdapter.setHours(now, 0);\n today = this.dateTimeAdapter.setMinutes(today, 0);\n today = this.dateTimeAdapter.setSeconds(today, 0);\n\n this.handlePickerMomentChange(today);\n this.dateSelected(today);\n }\n\n public dateSelected(date: T): void {\n if (!this.dateFilterForViews(date)) {\n return;\n }\n\n this.dateClicked.emit(date);\n this.selectedChange.emit(date);\n\n /*if ((this.isInSingleMode && !this.dateTimeAdapter.isSameDay(date, this.selected)) ||\n this.isInRangeMode) {\n this.selectedChange.emit(date);\n }*/\n }\n\n /**\n * Change the pickerMoment value and switch to a specific view\n */\n public goToDateInView(date: T, view: DateViewType): void {\n this.handlePickerMomentChange(date);\n if (\n (!this.yearOnly && !this.multiyearOnly) ||\n (this.multiyearOnly && view !== DateView.MONTH && view !== DateView.YEAR) ||\n (this.yearOnly && view !== DateView.MONTH)\n ) {\n this.currentView = view;\n }\n return;\n }\n\n /**\n * Change the pickerMoment value\n */\n public handlePickerMomentChange(date: T): void {\n this.pickerMoment = this.dateTimeAdapter.clampDate(date, this.minDate, this.maxDate);\n this.pickerMomentChange.emit(this.pickerMoment);\n return;\n }\n\n public userSelected(): void {\n this.userSelection.emit();\n }\n\n /**\n * Whether the previous period button is enabled.\n */\n public prevButtonEnabled(): boolean {\n return !this.minDate || !this.isSameView(this.pickerMoment, this.minDate);\n }\n\n /**\n * Whether the next period button is enabled.\n */\n public nextButtonEnabled(): boolean {\n return !this.maxDate || !this.isSameView(this.pickerMoment, this.maxDate);\n }\n\n /**\n * Focus to the host element\n */\n public focusActiveCell(): void {\n this.ngZone.runOutsideAngular(() => {\n this.ngZone.onStable\n .asObservable()\n .pipe(take(1))\n .subscribe(() => {\n this.elmRef.nativeElement.querySelector('.owl-dt-calendar-cell-active').focus();\n });\n });\n }\n\n public selectYearInMultiYearView(normalizedYear: T): void {\n this.yearSelected.emit(normalizedYear);\n }\n\n public selectMonthInYearView(normalizedMonth: T): void {\n this.monthSelected.emit(normalizedMonth);\n }\n\n /**\n * Whether the two dates represent the same view in the current view mode (month or year).\n */\n private isSameView(date1: T, date2: T): boolean {\n if (this._currentView === DateView.MONTH) {\n return !!(\n date1 &&\n date2 &&\n this.dateTimeAdapter.getYear(date1) === this.dateTimeAdapter.getYear(date2) &&\n this.dateTimeAdapter.getMonth(date1) === this.dateTimeAdapter.getMonth(date2)\n );\n } else if (this._currentView === DateView.YEAR) {\n return !!(date1 && date2 && this.dateTimeAdapter.getYear(date1) === this.dateTimeAdapter.getYear(date2));\n } else {\n return false;\n }\n }\n\n /**\n * Get a valid date object\n */\n private getValidDate(obj: unknown): T | null {\n return this.dateTimeAdapter.isDateInstance(obj) && this.dateTimeAdapter.isValid(obj) ? obj : null;\n }\n}\n","<div class=\"owl-dt-calendar-control\">\n <!-- focus when keyboard tab (http://kizu.ru/en/blog/keyboard-only-focus/#x) -->\n <div class=\"owl-dt-calendar-control-content\">\n <button\n [attr.aria-label]=\"periodButtonLabel\"\n (click)=\"toggleViews()\"\n class=\"owl-dt-control owl-dt-control-button owl-dt-control-period-button\"\n tabindex=\"0\"\n type=\"button\">\n <span\n class=\"owl-dt-control-content owl-dt-control-button-content\"\n tabindex=\"-1\">\n {{ periodButtonText }}\n\n <span\n [style.transform]=\"'rotate(' + (isMonthView ? 0 : 180) + 'deg)'\"\n class=\"owl-dt-control-button-arrow\">\n <svg\n xml:space=\"preserve\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n height=\"50%\"\n style=\"enable-background: new 0 0 292.362 292.362\"\n version=\"1.1\"\n viewBox=\"0 0 292.362 292.362\"\n width=\"50%\"\n x=\"0px\"\n xmlns=\"http://www.w3.org/2000/svg\"\n y=\"0px\">\n <g>\n <path\n d=\"M286.935,69.377c-3.614-3.617-7.898-5.424-12.848-5.424H18.274c-4.952,0-9.233,1.807-12.85,5.424\n C1.807,72.998,0,77.279,0,82.228c0,4.948,1.807,9.229,5.424,12.847l127.907,127.907c3.621,3.617,7.902,5.428,12.85,5.428\n s9.233-1.811,12.847-5.428L286.935,95.074c3.613-3.617,5.427-7.898,5.427-12.847C292.362,77.279,290.548,72.998,286.935,69.377z\" />\n </g>\n </svg>\n </span>\n </span>\n </button>\n @if (currentView === DateView.MONTH && showTodayButton) {\n <button\n [disabled]=\"!isTodayAllowed\"\n (click)=\"jumpToToday()\"\n class=\"owl-dt-control owl-dt-control-button owl-dt-control-today-button\"\n type=\"button\">\n {{ todayButtonLabel }}\n </button>\n }\n </div>\n <button\n [attr.aria-label]=\"prevButtonLabel\"\n [disabled]=\"!prevButtonEnabled()\"\n [style.visibility]=\"showControlArrows ? 'visible' : 'hidden'\"\n (click)=\"previousClicked()\"\n class=\"owl-dt-control owl-dt-control-button owl-dt-control-arrow-button\"\n tabindex=\"0\"\n type=\"button\">\n <span\n class=\"owl-dt-control-content owl-dt-control-button-content\"\n tabindex=\"-1\">\n <svg\n xml:space=\"preserve\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n height=\"100%\"\n style=\"enable-background: new 0 0 250.738 250.738\"\n version=\"1.1\"\n viewBox=\"0 0 250.738 250.738\"\n width=\"100%\"\n x=\"0px\"\n xmlns=\"http://www.w3.org/2000/svg\"\n y=\"0px\">\n <path\n d=\"M96.633,125.369l95.053-94.533c7.101-7.055,7.101-18.492,0-25.546 c-7.1-7.054-18.613-7.054-25.714,0L58.989,111.689c-3.784,3.759-5.487,8.759-5.238,13.68c-0.249,4.922,1.454,9.921,5.238,13.681 l106.983,106.398c7.101,7.055,18.613,7.055,25.714,0c7.101-7.054,7.101-18.491,0-25.544L96.633,125.369z\"\n style=\"fill-rule: evenodd; clip-rule: evenodd\" />\n </svg>\n </span>\n </button>\n <button\n [attr.aria-label]=\"nextButtonLabel\"\n [disabled]=\"!nextButtonEnabled()\"\n [style.visibility]=\"showControlArrows ? 'visible' : 'hidden'\"\n (click)=\"nextClicked()\"\n class=\"owl-dt-control owl-dt-control-button owl-dt-control-arrow-button\"\n tabindex=\"0\"\n type=\"button\">\n <span\n class=\"owl-dt-control-content owl-dt-control-button-content\"\n tabindex=\"-1\">\n <svg\n xml:space=\"preserve\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n style=\"enable-background: new 0 0 250.738 250.738\"\n version=\"1.1\"\n viewBox=\"0 0 250.738 250.738\"\n x=\"0px\"\n xmlns=\"http://www.w3.org/2000/svg\"\n y=\"0px\">\n <path\n d=\"M191.75,111.689L84.766,5.291c-7.1-7.055-18.613-7.055-25.713,0\n c-7.101,7.054-7.101,18.49,0,25.544l95.053,94.534l-95.053,94.533c-7.101,7.054-7.101,18.491,0,25.545\n c7.1,7.054,18.613,7.054,25.713,0L191.75,139.05c3.784-3.759,5.487-8.759,5.238-13.681\n C197.237,120.447,195.534,115.448,191.75,111.689z\"\n style=\"fill-rule: evenodd; clip-rule: evenodd\" />\n </svg>\n </span>\n </button>\n</div>\n<div\n cdkMonitorSubtreeFocus\n class=\"owl-dt-calendar-main\"\n tabindex=\"-1\">\n @switch (currentView) {\n @case (DateView.MONTH) {\n <owl-date-time-month-view\n [dateFilter]=\"dateFilter\"\n [firstDayOfWeek]=\"firstDayOfWeek\"\n [hideOtherMonths]=\"hideOtherMonths\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [pickerMoment]=\"pickerMoment\"\n [selectMode]=\"selectMode\"\n [selected]=\"selected\"\n [selecteds]=\"selecteds\"\n (pickerMomentChange)=\"handlePickerMomentChange($event)\"\n (selectedChange)=\"dateSelected($event)\"\n (userSelection)=\"userSelected()\"></owl-date-time-month-view>\n }\n\n @case (DateView.YEAR) {\n <owl-date-time-year-view\n [dateFilter]=\"dateFilter\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [pickerMoment]=\"pickerMoment\"\n [selectMode]=\"selectMode\"\n [selected]=\"selected\"\n [selecteds]=\"selecteds\"\n (changeMonth)=\"goToDateInView($event, DateView.MONTH)\"\n (keyboardEnter)=\"focusActiveCell()\"\n (monthSelected)=\"selectMonthInYearView($event)\"\n (pickerMomentChange)=\"handlePickerMomentChange($event)\"></owl-date-time-year-view>\n }\n\n @case (DateView.MULTI_YEARS) {\n <owl-date-time-multi-year-view\n [dateFilter]=\"dateFilter\"\n [maxDate]=\"maxDate\"\n [minDate]=\"minDate\"\n [pickerMoment]=\"pickerMoment\"\n [selectMode]=\"selectMode\"\n [selected]=\"selected\"\n [selecteds]=\"selecteds\"\n (changeYear)=\"goToDateInView($event, DateView.YEAR)\"\n (keyboardEnter)=\"focusActiveCell()\"\n (pickerMomentChange)=\"handlePickerMomentChange($event)\"\n (yearSelected)=\"selectYearInMultiYearView($event)\"></owl-date-time-multi-year-view>\n }\n }\n</div>\n","import { coerceNumberProperty } from '@angular/cdk/coercion';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n Input,\n OnDestroy,\n OnInit,\n ViewChild,\n output\n} from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\n@Component({\n exportAs: 'owlDateTimeTimerBox',\n selector: 'owl-date-time-timer-box',\n templateUrl: './timer-box.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { 'class': 'owl-dt-timer-box' }\n})\nexport class OwlTimerBoxComponent implements OnInit, OnDestroy {\n @Input() public showDivider = false;\n\n @Input() public upBtnAriaLabel: string;\n\n @Input() public upBtnDisabled: boolean;\n\n @Input() public downBtnAriaLabel: string;\n\n @Input() public downBtnDisabled: boolean;\n\n /**\n * Value would be displayed in the box\n * If it is null, the box would display [value]\n */\n @Input() public boxValue: number;\n\n @Input() public value: number;\n\n @Input() public min: number;\n\n @Input() public max: number;\n\n @Input() public step = 1;\n\n @Input() public inputLabel: string;\n\n public readonly valueChange = output<number>();\n\n public readonly inputChange = output<number>();\n\n private inputStream = new Subject<string>();\n\n private inputStreamSub = Subscription.EMPTY;\n\n private hasFocus = false;\n\n protected get displayValue(): string {\n if (this.hasFocus) {\n // Don't try to reformat the value that user is currently editing\n return this.valueInput.nativeElement.value;\n }\n\n const value = this.boxValue || this.value;\n\n if (value === null || isNaN(value)) {\n return '';\n }\n\n return value < 10 ? `0${value.toString()}` : value.toString();\n }\n\n @ViewChild('valueInput', { static: true })\n private valueInput: ElementRef<HTMLInputElement>;\n private onValueInputMouseWheelBind = this.onValueInputMouseWheel.bind(this);\n\n public ngOnInit(): void {\n this.inputStreamSub = this.inputStream.pipe(debounceTime(750)).subscribe((val: string) => {\n if (val) {\n const inputValue = coerceNumberProperty(val, 0);\n this.updateValueViaInput(inputValue);\n }\n });\n this.bindValueInputMouseWheel();\n }\n\n public ngOnDestroy(): void {\n this.unbindValueInputMouseWheel();\n this.inputStreamSub.unsubscribe();\n }\n\n public upBtnClicked(): void {\n this.updateValue(this.value + this.step);\n }\n\n public downBtnClicked(): void {\n this.updateValue(this.value - this.step);\n }\n\n public handleInputChange(val: string): void {\n this.inputStream.next(val);\n }\n\n public focusIn(): void {\n this.hasFocus = true;\n }\n\n public focusOut(value: string): void {\n this.hasFocus = false;\n if (value) {\n const inputValue = coerceNumberProperty(value, 0);\n this.updateValueViaInput(inputValue);\n }\n }\n\n private updateValue(value: number): void {\n this.valueChange.emit(value);\n }\n\n private updateValueViaInput(value: number): void {\n if (value > this.max || value < this.min) {\n return;\n }\n this.inputChange.emit(value);\n }\n\n private onValueInputMouseWheel(event: WheelEvent): void {\n const delta = -event.deltaY || -event.detail;\n\n if (delta > 0) {\n if (!this.upBtnDisabled) {\n this.upBtnClicked();\n }\n } else if (delta < 0) {\n if (!this.downBtnDisabled) {\n this.downBtnClicked();\n }\n }\n\n if (event.preventDefault) {\n event.preventDefault();\n } else {\n event.returnValue = false;\n }\n }\n\n private bindValueInputMouseWheel(): void {\n this.valueInput.nativeElement.addEventListener(\n 'onwheel' in document ? 'wheel' : 'mousewheel',\n this.onValueInputMouseWheelBind\n );\n }\n\n private unbindValueInputMouseWheel(): void {\n this.valueInput.nativeElement.removeEventListener(\n 'onwheel' in document ? 'wheel' : 'mousewheel',\n this.onValueInputMouseWheelBind\n );\n }\n}\n","@if (showDivider) {\n <div\n aria-hidden=\"true\"\n class=\"owl-dt-timer-divider\"></div>\n}\n<button\n [attr.aria-label]=\"upBtnAriaLabel\"\n [disabled]=\"upBtnDisabled\"\n (click)=\"upBtnClicked()\"\n class=\"owl-dt-control-button owl-dt-control-arrow-button\"\n tabindex=\"-1\"\n type=\"button\">\n <span\n class=\"owl-dt-control-button-content\"\n tabindex=\"-1\">\n <svg\n xml:space=\"preserve\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n height=\"100%\"\n style=\"enable-background: new 0 0 451.847 451.846\"\n version=\"1.1\"\n viewBox=\"0 0 451.847 451.846\"\n width=\"100%\"\n x=\"0px\"\n xmlns=\"http://www.w3.org/2000/svg\"\n y=\"0px\">\n <path\n d=\"M248.292,106.406l194.281,194.29c12.365,12.359,12.365,32.391,0,44.744c-12.354,12.354-32.391,12.354-44.744,0\n L225.923,173.529L54.018,345.44c-12.36,12.354-32.395,12.354-44.748,0c-12.359-12.354-12.359-32.391,0-44.75L203.554,106.4\n c6.18-6.174,14.271-9.259,22.369-9.259C234.018,97.141,242.115,100.232,248.292,106.406z\" />\n </svg>\n </span>\n</button>\n<label class=\"owl-dt-timer-content\">\n <input\n #valueInput\n [value]=\"displayValue\"\n (focusin)=\"focusIn()\"\n (focusout)=\"focusOut(valueInput.value)\"\n (input)=\"handleInputChange(valueInput.value)\"\n (keydown.arrowdown)=\"!downBtnDisabled && downBtnClicked()\"\n (keydown.arrowup)=\"!upBtnDisabled && upBtnClicked()\"\n class=\"owl-dt-timer-input\"\n maxlength=\"2\" />\n <span class=\"owl-hidden-accessible\">{{ inputLabel }}</span>\n</label>\n<button\n [attr.aria-label]=\"downBtnAriaLabel\"\n [disabled]=\"downBtnDisabled\"\n (click)=\"downBtnClicked()\"\n class=\"owl-dt-control-button owl-dt-control-arrow-button\"\n tabindex=\"-1\"\n type=\"button\">\n <span\n class=\"owl-dt-control-button-content\"\n tabindex=\"-1\">\n <svg\n xml:space=\"preserve\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n height=\"100%\"\n style=\"enable-background: new 0 0 451.847 451.846\"\n version=\"1.1\"\n viewBox=\"0 0 451.847 451.846\"\n width=\"100%\"\n x=\"0px\"\n xmlns=\"http://www.w3.org/2000/svg\"\n y=\"0px\">\n <path\n d=\"M225.923,354.706c-8.098,0-16.195-3.092-22.369-9.263L9.27,151.157c-12.359-12.359-12.359-32.397,0-44.751\n c12.354-12.354,32.388-12.354,44.748,0l171.905,171.915l171.906-171.909c12.359-12.354,32.391-12.354,44.744,0\n c12.365,12.354,12.365,32.392,0,44.751L248.292,345.449C242.115,351.621,234.018,354.706,225.923,354.706z\" />\n </svg>\n </span>\n</button>\n","import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n inject,\n Input,\n input,\n NgZone,\n output\n} from '@angular/core';\nimport { take } from 'rxjs/operators';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\nimport { OwlTimerBoxComponent } from './timer-box.component';\n\n@Component({\n exportAs: 'owlDateTimeTimer',\n selector: 'owl-date-time-timer',\n templateUrl: './timer.component.html',\n imports: [OwlTimerBoxComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[attr.tabindex]': '-1',\n 'class': 'owl-dt-timer'\n }\n})\nexport class OwlTimerComponent<T> {\n private readonly ngZone = inject(NgZone);\n private readonly elmRef = inject(ElementRef);\n private readonly pickerIntl = inject(OwlDateTimeIntl);\n private readonly cdRef = inject(ChangeDetectorRef);\n private readonly dateTimeAdapter = inject(DateTimeAdapter<T>, { optional: true });\n\n /** The current picker moment */\n private _pickerMoment: T;\n @Input()\n public get pickerMoment(): T {\n return this._pickerMoment;\n }\n public set pickerMoment(value: T) {\n value = this.dateTimeAdapter.deserialize(value);\n this._pickerMoment = this.getValidDate(value) || this.dateTimeAdapter.now();\n }\n\n /** The minimum selectable date time. */\n private _minDateTime: T | null;\n @Input()\n public get minDateTime(): T | null {\n return this._minDateTime;\n }\n public set minDateTime(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._minDateTime = this.getValidDate(value);\n }\n\n /** The maximum selectable date time. */\n private _maxDateTime: T | null;\n @Input()\n public get maxDateTime(): T | null {\n return this._maxDateTime;\n }\n public set maxDateTime(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._maxDateTime = this.getValidDate(value);\n }\n\n private isPM = false; // a flag indicates the current timer moment is in PM or AM\n\n /**\n * Whether to show the second's timer\n */\n public readonly showSecondsTimer = input<boolean>(undefined);\n\n /**\n * Whether the timer is in hour12 format\n */\n public readonly hour12Timer = input<boolean>(undefined);\n\n /**\n * Hours to change per step\n */\n public readonly stepHour = input(1);\n\n /**\n * Minutes to change per step\n */\n public readonly stepMinute = input(1);\n\n /**\n * Seconds to change per step\n */\n public readonly stepSecond = input(1);\n\n public readonly selectedChange = output<T>();\n\n protected get hourValue(): number {\n return this.dateTimeAdapter.getHours(this.pickerMoment);\n }\n\n /**\n * The value would be displayed in hourBox.\n * We need this because the value displayed in hourBox it not\n * the same as the hourValue when the timer is in hour12Timer mode.\n */\n protected get hourBoxValue(): number {\n let hours = this.hourValue;\n\n if (!this.hour12Timer()) {\n return hours;\n } else {\n if (hours === 0) {\n hours = 12;\n this.isPM = false;\n } else if (hours > 0 && hours < 12) {\n this.isPM = false;\n } else if (hours === 12) {\n this.isPM = true;\n } else if (hours > 12 && hours < 24) {\n hours = hours - 12;\n this.isPM = true;\n }\n\n return hours;\n }\n }\n\n protected get minuteValue(): number {\n return this.dateTimeAdapter.getMinutes(this.pickerMoment);\n }\n\n protected get secondValue(): number {\n return this.dateTimeAdapter.getSeconds(this.pickerMoment);\n }\n\n protected get upHourButtonLabel(): string {\n return this.pickerIntl.upHourLabel;\n }\n\n protected get downHourButtonLabel(): string {\n return this.pickerIntl.downHourLabel;\n }\n\n protected get upMinuteButtonLabel(): string {\n return this.pickerIntl.upMinuteLabel;\n }\n\n protected get downMinuteButtonLabel(): string {\n return this.pickerIntl.downMinuteLabel;\n }\n\n protected get upSecondButtonLabel(): string {\n return this.pickerIntl.upSecondLabel;\n }\n\n protected get downSecondButtonLabel(): string {\n return this.pickerIntl.downSecondLabel;\n }\n\n protected get hour12ButtonLabel(): string {\n return this.isPM ? this.pickerIntl.hour12PMLabel : this.pickerIntl.hour12AMLabel;\n }\n\n /**\n * Focus to the host element\n */\n public focus(): void {\n this.ngZone.runOutsideAngular(() => {\n this.ngZone.onStable\n .asObservable()\n .pipe(take(1))\n .subscribe(() => {\n this.elmRef.nativeElement.focus();\n });\n });\n }\n\n /**\n * Set the hour value via typing into timer box input\n * We need this to handle the hour value when the timer is in hour12 mode\n */\n public setHourValueViaInput(hours: number): void {\n const hour12Timer = this.hour12Timer();\n if (hour12Timer && this.isPM && hours >= 1 && hours <= 11) {\n hours = hours + 12;\n } else if (hour12Timer && !this.isPM && hours === 12) {\n hours = 0;\n }\n\n this.setHourValue(hours);\n }\n\n public setHourValue(hours: number): void {\n const m = this.dateTimeAdapter.setHours(this.pickerMoment, hours);\n this.selectedChange.emit(m);\n this.cdRef.markForCheck();\n }\n\n public setMinuteValue(minutes: number): void {\n const m = this.dateTimeAdapter.setMinutes(this.pickerMoment, minutes);\n this.selectedChange.emit(m);\n this.cdRef.markForCheck();\n }\n\n public setSecondValue(seconds: number): void {\n const m = this.dateTimeAdapter.setSeconds(this.pickerMoment, seconds);\n this.selectedChange.emit(m);\n this.cdRef.markForCheck();\n }\n\n public setMeridiem(event: Event): void {\n this.isPM = !this.isPM;\n\n let hours = this.hourValue;\n if (this.isPM) {\n hours = hours + 12;\n } else {\n hours = hours - 12;\n }\n\n if (hours >= 0 && hours <= 23) {\n this.setHourValue(hours);\n }\n\n this.cdRef.markForCheck();\n event.preventDefault();\n }\n\n /**\n * Check if the up hour button is enabled\n */\n public upHourEnabled(): boolean {\n return !this.maxDateTime || this.compareHours(this.stepHour(), this.maxDateTime) < 1;\n }\n\n /**\n * Check if the down hour button is enabled\n */\n public downHourEnabled(): boolean {\n return !this.minDateTime || this.compareHours(-this.stepHour(), this.minDateTime) > -1;\n }\n\n /**\n * Check if the up minute button is enabled\n */\n public upMinuteEnabled(): boolean {\n return !this.maxDateTime || this.compareMinutes(this.stepMinute(), this.maxDateTime) < 1;\n }\n\n /**\n * Check if the down minute button is enabled\n */\n public downMinuteEnabled(): boolean {\n return !this.minDateTime || this.compareMinutes(-this.stepMinute(), this.minDateTime) > -1;\n }\n\n /**\n * Check if the up second button is enabled\n */\n public upSecondEnabled(): boolean {\n return !this.maxDateTime || this.compareSeconds(this.stepSecond(), this.maxDateTime) < 1;\n }\n\n /**\n * Check if the down second button is enabled\n */\n public downSecondEnabled(): boolean {\n return !this.minDateTime || this.compareSeconds(-this.stepSecond(), this.minDateTime) > -1;\n }\n\n /**\n * PickerMoment's hour value +/- certain amount and compare it to the give date\n * 1 is after the comparedDate\n * -1 is before the comparedDate\n * 0 is equal the comparedDate\n */\n private compareHours(amount: number, comparedDate: T): number {\n const hours = this.dateTimeAdapter.getHours(this.pickerMoment) + amount;\n const result = this.dateTimeAdapter.setHours(this.pickerMoment, hours);\n return this.dateTimeAdapter.compare(result, comparedDate);\n }\n\n /**\n * PickerMoment's minute value +/- certain amount and compare it to the give date\n * 1 is after the comparedDate\n * -1 is before the comparedDate\n * 0 is equal the comparedDate\n */\n private compareMinutes(amount: number, comparedDate: T): number {\n const minutes = this.dateTimeAdapter.getMinutes(this.pickerMoment) + amount;\n const result = this.dateTimeAdapter.setMinutes(this.pickerMoment, minutes);\n return this.dateTimeAdapter.compare(result, comparedDate);\n }\n\n /**\n * PickerMoment's second value +/- certain amount and compare it to the give date\n * 1 is after the comparedDate\n * -1 is before the comparedDate\n * 0 is equal the comparedDate\n */\n private compareSeconds(amount: number, comparedDate: T): number {\n const seconds = this.dateTimeAdapter.getSeconds(this.pickerMoment) + amount;\n const result = this.dateTimeAdapter.setSeconds(this.pickerMoment, seconds);\n return this.dateTimeAdapter.compare(result, comparedDate);\n }\n\n /**\n * Get a valid date object\n */\n private getValidDate(obj: unknown): T | null {\n return this.dateTimeAdapter.isDateInstance(obj) && this.dateTimeAdapter.isValid(obj) ? obj : null;\n }\n}\n","<owl-date-time-timer-box\n [boxValue]=\"hourBoxValue\"\n [downBtnAriaLabel]=\"downHourButtonLabel\"\n [downBtnDisabled]=\"!downHourEnabled()\"\n [inputLabel]=\"'Hour'\"\n [max]=\"23\"\n [min]=\"0\"\n [step]=\"stepHour()\"\n [upBtnAriaLabel]=\"upHourButtonLabel\"\n [upBtnDisabled]=\"!upHourEnabled()\"\n [value]=\"hourValue\"\n (inputChange)=\"setHourValueViaInput($event)\"\n (valueChange)=\"setHourValue($event)\"></owl-date-time-timer-box>\n<owl-date-time-timer-box\n [downBtnAriaLabel]=\"downMinuteButtonLabel\"\n [downBtnDisabled]=\"!downMinuteEnabled()\"\n [inputLabel]=\"'Minute'\"\n [max]=\"59\"\n [min]=\"0\"\n [showDivider]=\"true\"\n [step]=\"stepMinute()\"\n [upBtnAriaLabel]=\"upMinuteButtonLabel\"\n [upBtnDisabled]=\"!upMinuteEnabled()\"\n [value]=\"minuteValue\"\n (inputChange)=\"setMinuteValue($event)\"\n (valueChange)=\"setMinuteValue($event)\"></owl-date-time-timer-box>\n\n@if (showSecondsTimer()) {\n <owl-date-time-timer-box\n [downBtnAriaLabel]=\"downSecondButtonLabel\"\n [downBtnDisabled]=\"!downSecondEnabled()\"\n [inputLabel]=\"'Second'\"\n [max]=\"59\"\n [min]=\"0\"\n [showDivider]=\"true\"\n [step]=\"stepSecond()\"\n [upBtnAriaLabel]=\"upSecondButtonLabel\"\n [upBtnDisabled]=\"!upSecondEnabled()\"\n [value]=\"secondValue\"\n (inputChange)=\"setSecondValue($event)\"\n (valueChange)=\"setSecondValue($event)\"></owl-date-time-timer-box>\n}\n\n@if (hour12Timer()) {\n <div class=\"owl-dt-timer-hour12\">\n <button\n (click)=\"setMeridiem($event)\"\n class=\"owl-dt-control-button owl-dt-timer-hour12-box\"\n tabindex=\"0\"\n type=\"button\">\n <span\n class=\"owl-dt-control-button-content\"\n tabindex=\"-1\">\n {{ hour12ButtonLabel }}\n </span>\n </button>\n </div>\n}\n","import { DOWN_ARROW, LEFT_ARROW, RIGHT_ARROW, SPACE, UP_ARROW } from '@angular/cdk/keycodes';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n inject,\n Input,\n OnInit,\n ViewChild\n} from '@angular/core';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport { OwlCalendarComponent } from './calendar.component';\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\nimport { OwlDateTime, PickerType } from './date-time.class';\nimport { OwlTimerComponent } from './timer.component';\n\n@Component({\n selector: 'owl-date-time-container',\n exportAs: 'owlDateTimeContainer',\n templateUrl: './date-time-picker-container.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [OwlCalendarComponent, OwlTimerComponent],\n host: {\n '[attr.id]': 'picker.id',\n '[class.owl-dt-container-disabled]': 'picker.disabled',\n 'class': 'owl-dt-container owl-dt-inline-container'\n }\n})\nexport class OwlDateTimeContainerComponent<T> implements OnInit, AfterContentInit {\n private readonly cdRef = inject(ChangeDetectorRef);\n private readonly elmRef = inject(ElementRef);\n private readonly pickerIntl = inject(OwlDateTimeIntl);\n private readonly dateTimeAdapter = inject(DateTimeAdapter, { optional: true });\n\n @ViewChild(OwlCalendarComponent)\n protected calendar: OwlCalendarComponent<T>;\n\n @ViewChild(OwlTimerComponent)\n protected timer: OwlTimerComponent<T>;\n\n public picker: OwlDateTime<T>;\n public activeSelectedIndex = 0; // The current active SelectedIndex in range select mode (0: 'from', 1: 'to')\n\n // retain start and end time\n private retainStartTime: T;\n private retainEndTime: T;\n\n @Input()\n public showTodayButton: boolean = false;\n\n /**\n * The current picker moment. This determines which time period is shown and which date is\n * highlighted when using keyboard navigation.\n */\n private _clamPickerMoment: T;\n\n get pickerMoment(): T {\n return this._clamPickerMoment;\n }\n\n set pickerMoment(value: T) {\n if (value) {\n this._clamPickerMoment = this.dateTimeAdapter.clampDate(value, this.picker.minDateTime, this.picker.maxDateTime);\n }\n this.cdRef.markForCheck();\n }\n\n get pickerType(): PickerType {\n return this.picker.pickerType;\n }\n\n /**\n * The range 'from' label\n */\n get fromLabel(): string {\n return this.pickerIntl.rangeFromLabel;\n }\n\n /**\n * The range 'to' label\n */\n get toLabel(): string {\n return this.pickerIntl.rangeToLabel;\n }\n\n /**\n * The range 'from' formatted value\n */\n get fromFormattedValue(): string {\n const value = this.picker.selecteds[0];\n return value ? this.dateTimeAdapter.format(value, this.picker.displayFormat) : '';\n }\n\n /**\n * The range 'to' formatted value\n */\n get toFormattedValue(): string {\n const value = this.picker.selecteds[1];\n return value ? this.dateTimeAdapter.format(value, this.picker.displayFormat) : '';\n }\n\n get containerElm(): HTMLElement {\n return this.elmRef.nativeElement;\n }\n\n public ngOnInit(): void {\n if (this.picker.selectMode === 'range') {\n if (this.picker.selecteds[0]) {\n this.retainStartTime = this.dateTimeAdapter.clone(this.picker.selecteds[0]);\n }\n if (this.picker.selecteds[1]) {\n this.retainEndTime = this.dateTimeAdapter.clone(this.picker.selecteds[1]);\n }\n }\n }\n\n public ngAfterContentInit(): void {\n this.initPicker();\n }\n\n public dateSelected(date: T): void {\n let result;\n\n if (this.picker.isInSingleMode) {\n result = this.dateSelectedInSingleMode(date);\n if (result) {\n this.pickerMoment = result;\n this.picker.select(result);\n }\n return;\n }\n\n if (this.picker.isInRangeMode) {\n result = this.dateSelectedInRangeMode(date);\n if (result) {\n this.pickerMoment = result[this.activeSelectedIndex];\n this.picker.select(result);\n }\n }\n }\n\n public timeSelected(time: T): void {\n this.pickerMoment = this.dateTimeAdapter.clone(time);\n\n if (!this.picker.dateTimeChecker(this.pickerMoment)) {\n return;\n }\n\n if (this.picker.isInSingleMode) {\n this.picker.select(this.pickerMoment);\n return;\n }\n\n if (this.picker.isInRangeMode) {\n const selecteds = [...this.picker.selecteds];\n\n // check if the 'from' is after 'to' or 'to'is before 'from'\n // In this case, we set both the 'from' and 'to' the same value\n if (\n (this.activeSelectedIndex === 0 &&\n selecteds[1] &&\n this.dateTimeAdapter.compare(this.pickerMoment, selecteds[1]) === 1) ||\n (this.activeSelectedIndex === 1 &&\n selecteds[0] &&\n this.dateTimeAdapter.compare(this.pickerMoment, selecteds[0]) === -1)\n ) {\n selecteds[0] = this.pickerMoment;\n selecteds[1] = this.pickerMoment;\n } else {\n selecteds[this.activeSelectedIndex] = this.pickerMoment;\n }\n\n if (selecteds[0]) {\n this.retainStartTime = this.dateTimeAdapter.clone(selecteds[0]);\n }\n if (selecteds[1]) {\n this.retainEndTime = this.dateTimeAdapter.clone(selecteds[1]);\n }\n this.picker.select(selecteds);\n }\n }\n\n /**\n * Handle click on inform radio group\n */\n public handleClickOnInfoGroup(event: Event, index: number): void {\n this.setActiveSelectedIndex(index);\n event.preventDefault();\n event.stopPropagation();\n }\n\n /**\n * Handle click on inform radio group\n */\n public handleKeydownOnInfoGroup(event: KeyboardEvent, next: HTMLElement, index: number): void {\n switch (event.keyCode) {\n case DOWN_ARROW:\n case RIGHT_ARROW:\n case UP_ARROW:\n case LEFT_ARROW:\n next.focus();\n this.setActiveSelectedIndex(index === 0 ? 1 : 0);\n event.preventDefault();\n event.stopPropagation();\n break;\n\n case SPACE:\n this.setActiveSelectedIndex(index);\n event.preventDefault();\n event.stopPropagation();\n break;\n\n default:\n return;\n }\n }\n\n /**\n * Set the value of activeSelectedIndex\n */\n private setActiveSelectedIndex(index: number): void {\n if (this.picker.selectMode === 'range' && this.activeSelectedIndex !== index) {\n this.activeSelectedIndex = index;\n\n const selected = this.picker.selecteds[this.activeSelectedIndex];\n if (this.picker.selecteds && selected) {\n this.pickerMoment = this.dateTimeAdapter.clone(selected);\n }\n }\n return;\n }\n\n private initPicker(): void {\n this.pickerMoment = this.picker.startAt || this.dateTimeAdapter.now();\n this.activeSelectedIndex = this.picker.selectMode === 'rangeTo' ? 1 : 0;\n }\n\n /**\n * Select calendar date in single mode,\n * it returns null when date is not selected.\n */\n private dateSelectedInSingleMode(date: T): T | null {\n if (this.dateTimeAdapter.isSameDay(date, this.picker.selected)) {\n return null;\n }\n\n return this.updateAndCheckCalendarDate(date);\n }\n\n /**\n * Select dates in range Mode\n */\n private dateSelectedInRangeMode(date: T): Array<T> | null {\n let from = this.picker.selecteds[0];\n let to = this.picker.selecteds[1];\n\n const result = this.updateAndCheckCalendarDate(date);\n\n if (!result) {\n return null;\n }\n\n // if the given calendar day is after or equal to 'from',\n // set ths given date as 'to'\n // otherwise, set it as 'from' and set 'to' to null\n if (this.picker.selectMode === 'range') {\n if (\n this.picker.selecteds?.length &&\n !to &&\n from &&\n this.dateTimeAdapter.differenceInCalendarDays(result, from) >= 0\n ) {\n if (this.picker.endAt && !this.retainEndTime) {\n to = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(result),\n this.dateTimeAdapter.getMonth(result),\n this.dateTimeAdapter.getDate(result),\n this.dateTimeAdapter.getHours(this.picker.endAt),\n this.dateTimeAdapter.getMinutes(this.picker.endAt),\n this.dateTimeAdapter.getSeconds(this.picker.endAt)\n );\n } else if (this.retainEndTime) {\n to = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(result),\n this.dateTimeAdapter.getMonth(result),\n this.dateTimeAdapter.getDate(result),\n this.dateTimeAdapter.getHours(this.retainEndTime),\n this.dateTimeAdapter.getMinutes(this.retainEndTime),\n this.dateTimeAdapter.getSeconds(this.retainEndTime)\n );\n } else {\n to = result;\n }\n this.activeSelectedIndex = 1;\n } else {\n if (this.picker.startAt && !this.retainStartTime) {\n from = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(result),\n this.dateTimeAdapter.getMonth(result),\n this.dateTimeAdapter.getDate(result),\n this.dateTimeAdapter.getHours(this.picker.startAt),\n this.dateTimeAdapter.getMinutes(this.picker.startAt),\n this.dateTimeAdapter.getSeconds(this.picker.startAt)\n );\n } else if (this.retainStartTime) {\n from = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(result),\n this.dateTimeAdapter.getMonth(result),\n this.dateTimeAdapter.getDate(result),\n this.dateTimeAdapter.getHours(this.retainStartTime),\n this.dateTimeAdapter.getMinutes(this.retainStartTime),\n this.dateTimeAdapter.getSeconds(this.retainStartTime)\n );\n } else {\n from = result;\n }\n to = null;\n this.activeSelectedIndex = 0;\n }\n } else if (this.picker.selectMode === 'rangeFrom') {\n from = result;\n\n // if the from value is after the to value, set the to value as null\n if (to && this.dateTimeAdapter.compare(from, to) > 0) {\n to = null;\n }\n } else if (this.picker.selectMode === 'rangeTo') {\n to = result;\n\n // if the from value is after the to value, set the from value as null\n if (from && this.dateTimeAdapter.compare(from, to) > 0) {\n from = null;\n }\n }\n\n return [from, to];\n }\n\n /**\n * Update the given calendar date's time and check if it is valid\n * Because the calendar date has 00:00:00 as default time, if the picker type is 'both',\n * we need to update the given calendar date's time before selecting it.\n * if it is valid, return the updated dateTime\n * if it is not valid, return null\n */\n private updateAndCheckCalendarDate(date: T): T {\n let result;\n\n // if the picker is 'both', update the calendar date's time value\n if (this.picker.pickerType === 'both') {\n result = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(date),\n this.dateTimeAdapter.getMonth(date),\n this.dateTimeAdapter.getDate(date),\n this.dateTimeAdapter.getHours(this.pickerMoment),\n this.dateTimeAdapter.getMinutes(this.pickerMoment),\n this.dateTimeAdapter.getSeconds(this.pickerMoment)\n );\n result = this.dateTimeAdapter.clampDate(result, this.picker.minDateTime, this.picker.maxDateTime);\n } else {\n result = this.dateTimeAdapter.clone(date);\n }\n\n // check the updated dateTime\n return this.picker.dateTimeChecker(result) ? result : null;\n }\n}\n","<div class=\"owl-dt-container-inner\">\n @if (pickerType === 'both' || pickerType === 'calendar') {\n <owl-date-time-calendar\n [dateFilter]=\"picker.dateTimeFilter\"\n [firstDayOfWeek]=\"picker.firstDayOfWeek\"\n [hideOtherMonths]=\"picker.hideOtherMonths\"\n [maxDate]=\"picker.maxDateTime\"\n [minDate]=\"picker.minDateTime\"\n [multiyearOnly]=\"picker.multiyearOnly\"\n [selectMode]=\"picker.selectMode\"\n [selected]=\"picker.selected\"\n [selecteds]=\"picker.selecteds\"\n [showTodayButton]=\"showTodayButton\"\n [startView]=\"picker.startView\"\n [yearOnly]=\"picker.yearOnly\"\n [(pickerMoment)]=\"pickerMoment\"\n (dateClicked)=\"picker.selectDate($event)\"\n (monthSelected)=\"picker.selectMonth($event)\"\n (selectedChange)=\"dateSelected($event)\"\n (yearSelected)=\"picker.selectYear($event)\"\n class=\"owl-dt-container-row\"></owl-date-time-calendar>\n }\n\n @if (pickerType === 'both' || pickerType === 'timer') {\n <owl-date-time-timer\n [hour12Timer]=\"picker.hour12Timer\"\n [maxDateTime]=\"picker.maxDateTime\"\n [minDateTime]=\"picker.minDateTime\"\n [pickerMoment]=\"pickerMoment\"\n [showSecondsTimer]=\"picker.showSecondsTimer\"\n [stepHour]=\"picker.stepHour\"\n [stepMinute]=\"picker.stepMinute\"\n [stepSecond]=\"picker.stepSecond\"\n (selectedChange)=\"timeSelected($event)\"\n class=\"owl-dt-container-row\"></owl-date-time-timer>\n }\n\n @if (picker.isInRangeMode) {\n <div\n class=\"owl-dt-container-info owl-dt-container-row\"\n role=\"radiogroup\">\n <div\n #from\n [attr.aria-checked]=\"activeSelectedIndex === 0\"\n [class.owl-dt-container-info-active]=\"activeSelectedIndex === 0\"\n [tabindex]=\"activeSelectedIndex === 0 ? 0 : -1\"\n (click)=\"handleClickOnInfoGroup($event, 0)\"\n (keydown)=\"handleKeydownOnInfoGroup($event, to, 0)\"\n class=\"owl-dt-control owl-dt-container-range owl-dt-container-from\"\n role=\"radio\">\n <span\n class=\"owl-dt-control-content owl-dt-container-range-content\"\n tabindex=\"-1\">\n <span class=\"owl-dt-container-info-label\">{{ fromLabel }}:</span>\n <span class=\"owl-dt-container-info-value\">{{ fromFormattedValue }}</span>\n </span>\n </div>\n <div\n #to\n [attr.aria-checked]=\"activeSelectedIndex === 1\"\n [class.owl-dt-container-info-active]=\"activeSelectedIndex === 1\"\n [tabindex]=\"activeSelectedIndex === 1 ? 0 : -1\"\n (click)=\"handleClickOnInfoGroup($event, 1)\"\n (keydown)=\"handleKeydownOnInfoGroup($event, from, 1)\"\n class=\"owl-dt-control owl-dt-container-range owl-dt-container-to\"\n role=\"radio\">\n <span\n class=\"owl-dt-control-content owl-dt-container-range-content\"\n tabindex=\"-1\">\n <span class=\"owl-dt-container-info-label\">{{ toLabel }}:</span>\n <span class=\"owl-dt-container-info-value\">{{ toFormattedValue }}</span>\n </span>\n </div>\n </div>\n }\n</div>\n","import {\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n forwardRef,\n inject,\n Input,\n OnInit,\n output,\n type Provider,\n viewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { OwlDateTimeContainerComponent } from './date-time-picker-container.component';\nimport { OwlDateTime, PickerType, SelectMode } from './date-time.class';\n\nconst OWL_DATETIME_VALUE_ACCESSOR: Provider = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => OwlDateTimeInlineComponent),\n multi: true\n};\n\n@Component({\n selector: 'owl-date-time-inline',\n templateUrl: './date-time-inline.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [OWL_DATETIME_VALUE_ACCESSOR],\n imports: [OwlDateTimeContainerComponent],\n host: { 'class': 'owl-dt-inline' }\n})\nexport class OwlDateTimeInlineComponent<T> extends OwlDateTime<T> implements OnInit, ControlValueAccessor {\n readonly #changeDetector = inject(ChangeDetectorRef);\n\n protected readonly container = viewChild(OwlDateTimeContainerComponent);\n\n /**\n * Set the type of the dateTime picker\n * 'both' -- show both calendar and timer\n * 'calendar' -- show only calendar\n * 'timer' -- show only timer\n */\n @Input()\n public pickerType: PickerType;\n\n @Input({ transform: booleanAttribute })\n public disabled: boolean = false;\n\n private _selectMode: SelectMode = 'single';\n @Input()\n public get selectMode(): SelectMode {\n return this._selectMode;\n }\n public set selectMode(mode: SelectMode) {\n if (mode !== 'single' && mode !== 'range' && mode !== 'rangeFrom' && mode !== 'rangeTo') {\n mode = 'single';\n }\n this._selectMode = mode;\n }\n\n /** The date to open the calendar to initially. */\n private _startAt: T | null;\n @Input()\n public get startAt(): T | null {\n if (this._startAt) {\n return this._startAt;\n }\n\n if (this.selectMode === 'single') {\n return this.value || null;\n } else if (this.selectMode === 'range' || this.selectMode === 'rangeFrom') {\n return this.values[0] || null;\n } else if (this.selectMode === 'rangeTo') {\n return this.values[1] || null;\n } else {\n return null;\n }\n }\n public set startAt(date: T | null) {\n this._startAt = this.getValidDate(this.dateTimeAdapter.deserialize(date));\n }\n\n /** The date to open for range calendar. */\n private _endAt: T | null;\n @Input()\n public get endAt(): T | null {\n if (this._endAt) {\n return this._endAt;\n }\n\n if (this.selectMode === 'single') {\n return this.value || null;\n } else if (this.selectMode === 'range' || this.selectMode === 'rangeFrom') {\n return this.values[1] || null;\n } else {\n return null;\n }\n }\n public set endAt(date: T | null) {\n this._endAt = this.getValidDate(this.dateTimeAdapter.deserialize(date));\n }\n\n private _dateTimeFilter: (date: T | null) => boolean;\n @Input('owlDateTimeFilter')\n public get dateTimeFilter(): (date: T | null) => boolean {\n return this._dateTimeFilter;\n }\n public set dateTimeFilter(filter: (date: T | null) => boolean) {\n this._dateTimeFilter = filter;\n }\n\n /** The minimum valid date. */\n private _min: T | null;\n\n @Input('min')\n public get minDateTime(): T | null {\n return this._min || null;\n }\n public set minDateTime(value: T | null) {\n this._min = this.getValidDate(this.dateTimeAdapter.deserialize(value));\n this.#changeDetector.markForCheck();\n }\n\n /** The maximum valid date. */\n private _max: T | null;\n\n @Input('max')\n public get maxDateTime(): T | null {\n return this._max || null;\n }\n public set maxDateTime(value: T | null) {\n this._max = this.getValidDate(this.dateTimeAdapter.deserialize(value));\n this.#changeDetector.markForCheck();\n }\n\n private _value: T | null;\n @Input()\n public get value(): T | null {\n return this._value;\n }\n public set value(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n value = this.getValidDate(value);\n this._value = value;\n this.selected = value;\n }\n\n private _values: Array<T> = [];\n @Input()\n public get values(): Array<T> {\n return this._values;\n }\n public set values(values: Array<T>) {\n if (values && values.length > 0) {\n values = values.map((v) => {\n v = this.dateTimeAdapter.deserialize(v);\n v = this.getValidDate(v);\n return v ? this.dateTimeAdapter.clone(v) : null;\n });\n this._values = [...values];\n this.selecteds = [...values];\n } else {\n this._values = [];\n this.selecteds = [];\n }\n }\n\n /**\n * Limit to the amount of days that can be selected at once.\n */\n @Input()\n public rangeLimit: number | null = null;\n\n /**\n * Flag to show today button to jump to today's date. Defaults to `false`.\n */\n @Input({ transform: booleanAttribute })\n public showTodayButton = false;\n\n /**\n * Variable to hold the old max date time value for when we override it with rangeLimit\n */\n private _initialMaxDateTime: T | null;\n\n /**\n * Emits selected year in multi-year view\n * This doesn't imply a change on the selected date.\n */\n public readonly yearSelected = output<T>();\n\n /**\n * Emits selected month in year view\n * This doesn't imply a change on the selected date.\n */\n public readonly monthSelected = output<T>();\n\n /**\n * Emits selected date\n */\n public readonly dateSelected = output<T>();\n\n private _selected: T | null;\n public get selected(): T | null {\n return this._selected;\n }\n public set selected(value: T | null) {\n this._selected = value;\n this.#changeDetector.markForCheck();\n }\n\n private _selecteds: Array<T> = [];\n public get selecteds(): Array<T> {\n return this._selecteds;\n }\n\n public set selecteds(values: Array<T>) {\n this._selecteds = values;\n this.#changeDetector.markForCheck();\n }\n\n public override readonly opened = true;\n\n public get isInSingleMode(): boolean {\n return this._selectMode === 'single';\n }\n\n public get isInRangeMode(): boolean {\n return this._selectMode === 'range' || this._selectMode === 'rangeFrom' || this._selectMode === 'rangeTo';\n }\n\n private onModelChange: (v: T | Array<T>) => void = () => {\n /* noop */\n };\n\n private onModelTouched: () => void = () => {\n /* noop */\n };\n\n public ngOnInit(): void {\n this.container().picker = this;\n }\n\n public writeValue(value: unknown): void {\n if (this.isInSingleMode) {\n this.value = value as T;\n this.container().pickerMoment = value as T;\n } else {\n this.values = value as Array<T>;\n this.container().pickerMoment = this._values[this.container().activeSelectedIndex];\n }\n }\n\n public registerOnChange(fn: (v: T | Array<T>) => void): void {\n this.onModelChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this.onModelTouched = fn;\n }\n\n public select(date: Array<T> | T): void {\n if (this.disabled) {\n return;\n }\n\n if (Array.isArray(date)) {\n this.values = [...date];\n } else {\n this.value = date;\n }\n\n // If range limit is set, we need to set the max date time to the range limit, so days after the max range are not selectable\n if (this.rangeLimit && !this.values[1] && this.values[0]) {\n const rangeLimitDate = this.dateTimeAdapter.addCalendarDays(this.values[0], this.rangeLimit - 1);\n if (!this.maxDateTime || this.dateTimeAdapter.compare(this.maxDateTime, rangeLimitDate) > 0) {\n this._initialMaxDateTime = this.maxDateTime;\n this.maxDateTime = rangeLimitDate;\n }\n }\n\n // Reset the max date time to the initial value after a full range is selected\n if (this.rangeLimit && this.values[1]) {\n this.maxDateTime = this._initialMaxDateTime;\n }\n\n this.onModelChange(date);\n this.onModelTouched();\n }\n\n /**\n * Emits the selected year in multi-year view\n */\n public selectYear(normalizedYear: T): void {\n this.yearSelected.emit(normalizedYear);\n }\n\n /**\n * Emits selected month in year view\n */\n public selectMonth(normalizedMonth: T): void {\n this.monthSelected.emit(normalizedMonth);\n }\n\n /**\n * Emits the selected date\n */\n public selectDate(normalizedDate: T): void {\n this.dateSelected.emit(normalizedDate);\n }\n}\n","<owl-date-time-container [showTodayButton]=\"showTodayButton\"></owl-date-time-container>\n","import { NgModule } from '@angular/core';\nimport { OwlCalendarBodyComponent } from './calendar-body.component';\nimport { OwlMonthViewComponent } from './calendar-month-view.component';\nimport { OwlMultiYearViewComponent } from './calendar-multi-year-view.component';\nimport { OwlYearViewComponent } from './calendar-year-view.component';\nimport { OwlCalendarComponent } from './calendar.component';\nimport { OwlDateTimeInlineComponent } from './date-time-inline.component';\nimport { OwlDateTimeContainerComponent } from './date-time-picker-container.component';\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\nimport { optionsProviders } from './options-provider';\nimport { OwlTimerBoxComponent } from './timer-box.component';\nimport { OwlTimerComponent } from './timer.component';\n\n@NgModule({\n imports: [\n OwlCalendarBodyComponent,\n OwlCalendarComponent,\n OwlDateTimeContainerComponent,\n OwlDateTimeInlineComponent,\n OwlMonthViewComponent,\n OwlMultiYearViewComponent,\n OwlTimerBoxComponent,\n OwlTimerComponent,\n OwlYearViewComponent\n ],\n exports: [\n OwlCalendarComponent,\n OwlDateTimeInlineComponent,\n OwlMonthViewComponent,\n OwlMultiYearViewComponent,\n OwlTimerComponent,\n OwlYearViewComponent\n ],\n providers: [OwlDateTimeIntl, ...optionsProviders]\n})\nexport class OwlDateTimeModule {}\n","/**\n * unix-timestamp-date-time-adapter.class\n */\n\nimport { Platform } from '@angular/cdk/platform';\nimport { inject, Injectable } from '@angular/core';\nimport { range } from '../../../utils/array.utils';\nimport {\n DEFAULT_DATE_NAMES,\n DEFAULT_DAY_OF_WEEK_NAMES,\n DEFAULT_MONTH_NAMES,\n SUPPORTS_INTL_API\n} from '../../../utils/constants';\nimport { createDate, getNumDaysInMonth } from '../../../utils/date.utils';\nimport { DateTimeAdapter, OWL_DATE_TIME_LOCALE } from '../date-time-adapter.class';\n\n@Injectable()\nexport class UnixTimestampDateTimeAdapter extends DateTimeAdapter<number> {\n private readonly owlDateTimeLocale = inject(OWL_DATE_TIME_LOCALE, { optional: true });\n private readonly platform = inject(Platform);\n\n constructor() {\n super();\n super.setLocale(this.owlDateTimeLocale);\n\n // IE does its own time zone correction, so we disable this on IE.\n this.useUtcForDisplay = !this.platform.TRIDENT;\n this._clampDate = this.platform.TRIDENT || this.platform.EDGE;\n }\n\n /** Whether to clamp the date between 1 and 9999 to avoid IE and Edge errors. */\n private readonly _clampDate: boolean;\n\n /**\n * Whether to use `timeZone: 'utc'` with `Intl.DateTimeFormat` when formatting dates.\n * Without this `Intl.DateTimeFormat` sometimes chooses the wrong timeZone, which can throw off\n * the result. (e.g. in the en-US locale `new Date(1800, 7, 14).toLocaleDateString()`\n * will produce `'8/13/1800'`.\n */\n public useUtcForDisplay: boolean;\n\n /**\n * Strip out unicode LTR and RTL characters. Edge and IE insert these into formatted dates while\n * other browsers do not. We remove them to make output consistent and because they interfere with\n * date parsing.\n */\n private static search_ltr_rtl_pattern = '/[\\u200e\\u200f]/g';\n private static stripDirectionalityCharacters(str: string): string {\n return str.replace(UnixTimestampDateTimeAdapter.search_ltr_rtl_pattern, '');\n }\n\n /**\n * When converting Date object to string, javascript built-in functions may return wrong\n * results because it applies its internal DST rules. The DST rules around the world change\n * very frequently, and the current valid rule is not always valid in previous years though.\n * We work around this problem building a new Date object which has its internal UTC\n * representation with the local date and time.\n */\n private static _format(dtf: Intl.DateTimeFormat, date: Date): string {\n const d = new Date(\n Date.UTC(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds()\n )\n );\n return dtf.format(d);\n }\n\n public addCalendarDays(date: number, amount: number): number {\n const result = new Date(date);\n amount = Number(amount);\n result.setDate(result.getDate() + amount);\n return result.getTime();\n }\n\n public addCalendarMonths(date: number, amount: number): number {\n const result = new Date(date);\n amount = Number(amount);\n\n const desiredMonth = result.getMonth() + amount;\n const dateWithDesiredMonth = new Date(0);\n dateWithDesiredMonth.setFullYear(result.getFullYear(), desiredMonth, 1);\n dateWithDesiredMonth.setHours(0, 0, 0, 0);\n\n const daysInMonth = this.getNumDaysInMonth(dateWithDesiredMonth.getTime());\n // Set the last day of the new month\n // if the original date was the last day of the longer month\n result.setMonth(desiredMonth, Math.min(daysInMonth, result.getDate()));\n return result.getTime();\n }\n\n public addCalendarYears(date: number, amount: number): number {\n return this.addCalendarMonths(date, amount * 12);\n }\n\n public clone(date: number): number {\n return date;\n }\n\n public createDate(\n year: number,\n month: number,\n date: number,\n hours: number = 0,\n minutes: number = 0,\n seconds: number = 0\n ): number {\n return createDate(year, month, date, hours, minutes, seconds).getTime();\n }\n\n public differenceInCalendarDays(dateLeft: number, dateRight: number): number {\n if (this.isValid(dateLeft) && this.isValid(dateRight)) {\n const dateLeftStartOfDay = this.createDate(\n this.getYear(dateLeft),\n this.getMonth(dateLeft),\n this.getDate(dateLeft)\n );\n const dateRightStartOfDay = this.createDate(\n this.getYear(dateRight),\n this.getMonth(dateRight),\n this.getDate(dateRight)\n );\n\n const timeStampLeft =\n this.getTime(dateLeftStartOfDay) - new Date(dateLeftStartOfDay).getTimezoneOffset() * this.milliseondsInMinute;\n const timeStampRight =\n this.getTime(dateRightStartOfDay) -\n new Date(dateRightStartOfDay).getTimezoneOffset() * this.milliseondsInMinute;\n return Math.round((timeStampLeft - timeStampRight) / this.millisecondsInDay);\n } else {\n return null;\n }\n }\n\n public format(date: number, displayFormat: Intl.DateTimeFormatOptions): string {\n if (!this.isValid(date)) {\n throw Error('JSNativeDate: Cannot format invalid date.');\n }\n\n const jsDate = new Date(date);\n\n if (SUPPORTS_INTL_API) {\n if (this._clampDate && (jsDate.getFullYear() < 1 || jsDate.getFullYear() > 9999)) {\n jsDate.setFullYear(Math.max(1, Math.min(9999, jsDate.getFullYear())));\n }\n\n displayFormat = { ...displayFormat, timeZone: 'utc' };\n const dtf = new Intl.DateTimeFormat(this.locale, displayFormat);\n return UnixTimestampDateTimeAdapter.stripDirectionalityCharacters(\n UnixTimestampDateTimeAdapter._format(dtf, jsDate)\n );\n }\n\n return UnixTimestampDateTimeAdapter.stripDirectionalityCharacters(jsDate.toDateString());\n }\n\n public getDate(date: number): number {\n return new Date(date).getDate();\n }\n\n public getDateNames(): Array<string> {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.locale, {\n day: 'numeric',\n timeZone: 'utc'\n });\n return range(31, (i) =>\n UnixTimestampDateTimeAdapter.stripDirectionalityCharacters(\n UnixTimestampDateTimeAdapter._format(dtf, new Date(2017, 0, i + 1))\n )\n );\n }\n return DEFAULT_DATE_NAMES;\n }\n\n public getDay(date: number): number {\n return new Date(date).getDay();\n }\n\n public getDayOfWeekNames(style: Intl.DateTimeFormatOptions['weekday']): Array<string> {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.locale, {\n weekday: style,\n timeZone: 'utc'\n });\n return range(7, (i) =>\n UnixTimestampDateTimeAdapter.stripDirectionalityCharacters(\n UnixTimestampDateTimeAdapter._format(dtf, new Date(2017, 0, i + 1))\n )\n );\n }\n\n return DEFAULT_DAY_OF_WEEK_NAMES[style];\n }\n\n public getHours(date: number): number {\n return new Date(date).getHours();\n }\n\n public getMinutes(date: number): number {\n return new Date(date).getMinutes();\n }\n\n public getMonth(date: number): number {\n return new Date(date).getMonth();\n }\n\n public getMonthNames(style: Intl.DateTimeFormatOptions['month']): Array<string> {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.locale, { month: style, timeZone: 'utc' });\n return range(12, (i) => {\n return UnixTimestampDateTimeAdapter.stripDirectionalityCharacters(\n UnixTimestampDateTimeAdapter._format(dtf, new Date(2017, i, 1))\n );\n });\n }\n return DEFAULT_MONTH_NAMES[style];\n }\n\n public getNumDaysInMonth(date: number): number {\n return getNumDaysInMonth(new Date(date));\n }\n\n public getSeconds(date: number): number {\n return new Date(date).getSeconds();\n }\n\n public getTime(date: number): number {\n return date;\n }\n\n public getYear(date: number): number {\n return new Date(date).getFullYear();\n }\n\n public getYearName(date: number): string {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.locale, {\n year: 'numeric',\n timeZone: 'utc'\n });\n return UnixTimestampDateTimeAdapter.stripDirectionalityCharacters(\n UnixTimestampDateTimeAdapter._format(dtf, new Date(date))\n );\n }\n return String(this.getYear(date));\n }\n\n public invalid(): number {\n return NaN;\n }\n\n public isDateInstance(obj: unknown): obj is number {\n return typeof obj === 'number';\n }\n\n public isEqual(dateLeft: number, dateRight: number): boolean {\n if (this.isValid(dateLeft) && this.isValid(dateRight)) {\n return dateLeft === dateRight;\n } else {\n return false;\n }\n }\n\n public isSameDay(dateLeft: number, dateRight: number): boolean {\n if (this.isValid(dateLeft) && this.isValid(dateRight)) {\n const dateLeftStartOfDay = new Date(dateLeft);\n const dateRightStartOfDay = new Date(dateRight);\n dateLeftStartOfDay.setHours(0, 0, 0, 0);\n dateRightStartOfDay.setHours(0, 0, 0, 0);\n return dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime();\n } else {\n return false;\n }\n }\n\n public isValid(date: number): boolean {\n return (date || date === 0) && !isNaN(date);\n }\n\n public now(): number {\n return new Date().getTime();\n }\n\n public parse(value: number | string | null): number {\n // There is no way using the native JS Date to set the parse format or locale\n if (typeof value === 'number') {\n return value;\n }\n return value ? new Date(Date.parse(value)).getTime() : null;\n }\n\n public setHours(date: number, amount: number): number {\n const result = new Date(date);\n result.setHours(amount);\n return result.getTime();\n }\n\n public setMinutes(date: number, amount: number): number {\n const result = new Date(date);\n result.setMinutes(amount);\n return result.getTime();\n }\n\n public setSeconds(date: number, amount: number): number {\n const result = new Date(date);\n result.setSeconds(amount);\n return result.getTime();\n }\n\n public toIso8601(date: number): string {\n return new Date(date).toISOString();\n }\n}\n","/**\n * unix-timestamp-date-time-format.class\n */\nimport { OwlDateTimeFormats } from '../date-time-format.class';\n\nexport const OWL_UNIX_TIMESTAMP_DATE_TIME_FORMATS: OwlDateTimeFormats = {\n fullPickerInput: {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour: 'numeric',\n minute: 'numeric'\n },\n datePickerInput: { year: 'numeric', month: 'numeric', day: 'numeric' },\n timePickerInput: { hour: 'numeric', minute: 'numeric' },\n monthYearLabel: { year: 'numeric', month: 'short' },\n dateA11yLabel: { year: 'numeric', month: 'long', day: 'numeric' },\n monthYearA11yLabel: { year: 'numeric', month: 'long' }\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["take"],"mappings":"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"}