nxt-pick-datetime 19.0.0 → 20.0.0

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.
Files changed (45) hide show
  1. package/assets/picker.scss +21 -21
  2. package/fesm2022/nxt-pick-datetime-moment-adapter.mjs +8 -8
  3. package/fesm2022/nxt-pick-datetime-moment-adapter.mjs.map +1 -1
  4. package/fesm2022/nxt-pick-datetime-native-adapter.mjs +8 -8
  5. package/fesm2022/nxt-pick-datetime-native-adapter.mjs.map +1 -1
  6. package/fesm2022/nxt-pick-datetime.mjs +62 -62
  7. package/fesm2022/nxt-pick-datetime.mjs.map +1 -1
  8. package/index.d.ts +1888 -5
  9. package/moment-adapter/index.d.ts +24 -5
  10. package/native-adapter/index.d.ts +12 -5
  11. package/package.json +8 -8
  12. package/lib/class/date-time-adapter.class.d.ts +0 -176
  13. package/lib/class/date-time-format.class.d.ts +0 -12
  14. package/lib/class/date-time.class.d.ts +0 -76
  15. package/lib/class/dialog-config.class.d.ts +0 -90
  16. package/lib/class/dialog-ref.class.d.ts +0 -50
  17. package/lib/date-time/calendar/calendar.component.d.ts +0 -147
  18. package/lib/date-time/calendar-body/calendar-body.component.d.ts +0 -79
  19. package/lib/date-time/calendar-month-view/calendar-month-view.component.d.ts +0 -139
  20. package/lib/date-time/calendar-multi-year-view/calendar-multi-year-view.component.d.ts +0 -115
  21. package/lib/date-time/calendar-year-view/calendar-year-view.component.d.ts +0 -123
  22. package/lib/date-time/date-time-inline/date-time-inline.component.d.ts +0 -106
  23. package/lib/date-time/date-time-picker/date-time-picker.component.d.ts +0 -172
  24. package/lib/date-time/date-time-picker-container/date-time-picker-container.animations.d.ts +0 -6
  25. package/lib/date-time/date-time-picker-container/date-time-picker-container.component.d.ts +0 -129
  26. package/lib/date-time/date-time-picker-input.directive.d.ts +0 -167
  27. package/lib/date-time/date-time-picker-intl.service.d.ts +0 -51
  28. package/lib/date-time/date-time-picker-trigger.directive.d.ts +0 -22
  29. package/lib/date-time/date-time.module.d.ts +0 -23
  30. package/lib/date-time/number-fixed-len.pipe.d.ts +0 -8
  31. package/lib/date-time/timer/timer.component.d.ts +0 -131
  32. package/lib/date-time/timer-box/timer-box.component.d.ts +0 -37
  33. package/lib/dialog/dialog-container/dialog-container.component.d.ts +0 -69
  34. package/lib/dialog/dialog.module.d.ts +0 -12
  35. package/lib/dialog/dialog.service.d.ts +0 -78
  36. package/lib/utils/object.d.ts +0 -9
  37. package/moment-adapter/date-time-adapter.class.d.ts +0 -64
  38. package/moment-adapter/date-time-format.class.d.ts +0 -5
  39. package/moment-adapter/moment-adapter.module.d.ts +0 -8
  40. package/moment-adapter/public-api.d.ts +0 -2
  41. package/native-adapter/date-time-adapter.class.d.ts +0 -72
  42. package/native-adapter/date-time-format.class.d.ts +0 -5
  43. package/native-adapter/native-adapter.module.d.ts +0 -9
  44. package/native-adapter/public-api.d.ts +0 -1
  45. package/public-api.d.ts +0 -14
@@ -1 +1 @@
1
- {"version":3,"file":"nxt-pick-datetime.mjs","sources":["../../../packages/pick-datetime/src/lib/class/date-time-adapter.class.ts","../../../packages/pick-datetime/src/lib/class/date-time-format.class.ts","../../../packages/pick-datetime/src/lib/date-time/calendar-body/calendar-body.component.ts","../../../packages/pick-datetime/src/lib/date-time/calendar-body/calendar-body.component.html","../../../packages/pick-datetime/src/lib/date-time/calendar-month-view/calendar-month-view.component.ts","../../../packages/pick-datetime/src/lib/date-time/calendar-month-view/calendar-month-view.component.html","../../../packages/pick-datetime/src/lib/date-time/date-time-picker-intl.service.ts","../../../packages/pick-datetime/src/lib/date-time/calendar-multi-year-view/calendar-multi-year-view.component.ts","../../../packages/pick-datetime/src/lib/date-time/calendar-multi-year-view/calendar-multi-year-view.component.html","../../../packages/pick-datetime/src/lib/date-time/calendar-year-view/calendar-year-view.component.ts","../../../packages/pick-datetime/src/lib/date-time/calendar-year-view/calendar-year-view.component.html","../../../packages/pick-datetime/src/lib/date-time/calendar/calendar.component.ts","../../../packages/pick-datetime/src/lib/date-time/calendar/calendar.component.html","../../../packages/pick-datetime/src/lib/class/date-time.class.ts","../../../packages/pick-datetime/src/lib/date-time/number-fixed-len.pipe.ts","../../../packages/pick-datetime/src/lib/date-time/timer-box/timer-box.component.ts","../../../packages/pick-datetime/src/lib/date-time/timer-box/timer-box.component.html","../../../packages/pick-datetime/src/lib/date-time/timer/timer.component.ts","../../../packages/pick-datetime/src/lib/date-time/timer/timer.component.html","../../../packages/pick-datetime/src/lib/date-time/date-time-picker-container/date-time-picker-container.animations.ts","../../../packages/pick-datetime/src/lib/date-time/date-time-picker-container/date-time-picker-container.component.ts","../../../packages/pick-datetime/src/lib/date-time/date-time-picker-container/date-time-picker-container.component.html","../../../packages/pick-datetime/src/lib/date-time/date-time-inline/date-time-inline.component.ts","../../../packages/pick-datetime/src/lib/date-time/date-time-inline/date-time-inline.component.html","../../../packages/pick-datetime/src/lib/date-time/date-time-picker-input.directive.ts","../../../packages/pick-datetime/src/lib/date-time/date-time-picker-trigger.directive.ts","../../../packages/pick-datetime/src/lib/class/dialog-config.class.ts","../../../packages/pick-datetime/src/lib/class/dialog-ref.class.ts","../../../packages/pick-datetime/src/lib/utils/object.ts","../../../packages/pick-datetime/src/lib/dialog/dialog-container/dialog-container.component.ts","../../../packages/pick-datetime/src/lib/dialog/dialog-container/dialog-container.component.html","../../../packages/pick-datetime/src/lib/dialog/dialog.service.ts","../../../packages/pick-datetime/src/lib/date-time/date-time-picker/date-time-picker.component.ts","../../../packages/pick-datetime/src/lib/date-time/date-time-picker/date-time-picker.component.html","../../../packages/pick-datetime/src/lib/dialog/dialog.module.ts","../../../packages/pick-datetime/src/lib/date-time/date-time.module.ts","../../../packages/pick-datetime/src/nxt-pick-datetime.ts"],"sourcesContent":["import { Observable, Subject } from 'rxjs'\r\n\r\nexport abstract class DateTimeAdapter<T> {\r\n /** The locale to use for all dates */\r\n protected locale: any\r\n\r\n /** A stream that emits when the locale changes */\r\n protected _localeChanges = new Subject<void>()\r\n get localeChanges(): Observable<void> {\r\n return this._localeChanges\r\n }\r\n\r\n /** total milliseconds in a day */\r\n protected readonly millisecondsInDay = 86400000\r\n\r\n /** total milliseconds in a minute */\r\n protected readonly milliseondsInMinute = 60000\r\n\r\n /**\r\n * Get the year of the given date\r\n */\r\n abstract getYear(date?: T): number\r\n\r\n /**\r\n * Get the month of the given date\r\n * 0 -- January\r\n * 11 -- December\r\n * */\r\n abstract getMonth(date?: T): number\r\n\r\n /**\r\n * Get the day of the week of the given date\r\n * 0 -- Sunday\r\n * 6 -- Saturday\r\n * */\r\n abstract getDay(date?: T): number\r\n\r\n /**\r\n * Get the day num of the given date\r\n */\r\n abstract getDate(date?: T): number\r\n\r\n /**\r\n * Get the hours of the given date\r\n */\r\n abstract getHours(date?: T): number\r\n\r\n /**\r\n * Get the minutes of the given date\r\n */\r\n abstract getMinutes(date?: T): number\r\n\r\n /**\r\n * Get the seconds of the given date\r\n */\r\n abstract getSeconds(date?: T): number\r\n\r\n /**\r\n * Get the milliseconds timestamp of the given date\r\n */\r\n abstract getTime(date?: T): number\r\n\r\n /**\r\n * Gets the number of days in the month of the given date.\r\n */\r\n abstract getNumDaysInMonth(date?: T): number\r\n\r\n /**\r\n * Get the number of calendar days between the given dates.\r\n * If dateLeft is before dateRight, it would return positive value\r\n * If dateLeft is after dateRight, it would return negative value\r\n */\r\n abstract differenceInCalendarDays(dateLeft?: T, dateRight?: T): number | undefined\r\n\r\n /**\r\n * Gets the name for the year of the given date.\r\n */\r\n abstract getYearName(date?: T): string\r\n\r\n /**\r\n * Get a list of month names\r\n */\r\n abstract getMonthNames(style: 'long' | 'short' | 'narrow'): string[]\r\n\r\n /**\r\n * Get a list of week names\r\n */\r\n abstract getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[]\r\n\r\n /**\r\n * Gets a list of names for the dates of the month.\r\n */\r\n abstract getDateNames(): string[]\r\n\r\n /**\r\n * Return a Date object as a string, using the ISO standard\r\n */\r\n abstract toIso8601(date: T): string\r\n\r\n /**\r\n * Check if the give dates are equal\r\n */\r\n abstract isEqual(dateLeft?: T, dateRight?: T): boolean\r\n\r\n /**\r\n * Check if the give dates are the same day\r\n */\r\n abstract isSameDay(dateLeft?: T, dateRight?: T): boolean\r\n\r\n /**\r\n * Checks whether the given date is valid.\r\n */\r\n abstract isValid(date?: T): boolean\r\n\r\n /**\r\n * Gets date instance that is not valid.\r\n */\r\n abstract invalid(): T\r\n\r\n /**\r\n * Checks whether the given object is considered a date instance by this DateTimeAdapter.\r\n */\r\n abstract isDateInstance(obj: any): boolean\r\n\r\n /**\r\n * Add the specified number of years to the given date\r\n */\r\n abstract addCalendarYears(date: T | undefined, amount: number): T\r\n\r\n /**\r\n * Add the specified number of months to the given date\r\n */\r\n abstract addCalendarMonths(date: T | undefined, amount: number): T\r\n\r\n /**\r\n * Add the specified number of days to the given date\r\n */\r\n abstract addCalendarDays(date: T | undefined, amount: number): T\r\n\r\n /**\r\n * Set the hours to the given date.\r\n */\r\n abstract setHours(date: T | undefined, amount: number): T\r\n\r\n /**\r\n * Set the minutes to the given date.\r\n */\r\n abstract setMinutes(date: T | undefined, amount: number): T\r\n\r\n /**\r\n * Set the seconds to the given date.\r\n */\r\n abstract setSeconds(date: T | undefined, amount: number): T\r\n\r\n /**\r\n * Creates a date with the given year, month, date, hour, minute and second. Does not allow over/under-flow of the\r\n * month and date.\r\n */\r\n abstract createDate(year: number, month: number, date: number): T\r\n abstract createDate(\r\n year: number,\r\n month: number,\r\n date: number,\r\n hours: number,\r\n minutes: number,\r\n seconds: number\r\n ): T\r\n\r\n /**\r\n * Clone the given date\r\n */\r\n abstract clone(date?: T): T\r\n\r\n /**\r\n * Get a new moment\r\n * */\r\n abstract now(): T\r\n\r\n /**\r\n * Formats a date as a string according to the given format.\r\n */\r\n abstract format(date: T | undefined, displayFormat: any): string\r\n\r\n /**\r\n * Parse a user-provided value to a Date Object\r\n */\r\n abstract parse(value: any, parseFormat: any): T | undefined\r\n\r\n /**\r\n * Compare two given dates\r\n * 1 if the first date is after the second,\r\n * -1 if the first date is before the second\r\n * 0 if dates are equal.\r\n * */\r\n compare(first?: T, second?: T): number {\r\n if (!this.isValid(first) || !this.isValid(second)) {\r\n throw Error('JSNativeDate: Cannot compare invalid dates.')\r\n }\r\n\r\n const dateFirst = this.clone(first)\r\n const dateSecond = this.clone(second)\r\n\r\n const diff = this.getTime(dateFirst) - this.getTime(dateSecond)\r\n\r\n if (diff < 0) {\r\n return -1\r\n } else if (diff > 0) {\r\n return 1\r\n } else {\r\n // Return 0 if diff is 0; return NaN if diff is NaN\r\n return diff\r\n }\r\n }\r\n\r\n /**\r\n * Check if two given dates are in the same year\r\n * 1 if the first date's year is after the second,\r\n * -1 if the first date's year is before the second\r\n * 0 if two given dates are in the same year\r\n * */\r\n compareYear(first?: T, second?: T): number {\r\n if (!this.isValid(first) || !this.isValid(second)) {\r\n throw Error('JSNativeDate: Cannot compare invalid dates.')\r\n }\r\n\r\n const yearLeft = this.getYear(first)\r\n const yearRight = this.getYear(second)\r\n\r\n const diff = yearLeft - yearRight\r\n\r\n if (diff < 0) {\r\n return -1\r\n } else if (diff > 0) {\r\n return 1\r\n } else {\r\n return 0\r\n }\r\n }\r\n\r\n /**\r\n * Attempts to deserialize a value to a valid date object. This is different from parsing in that\r\n * deserialize should only accept non-ambiguous, locale-independent formats (e.g. a ISO 8601\r\n * string). The default implementation does not allow any deserialization, it simply checks that\r\n * the given value is already a valid date object or null. The `<mat-datepicker>` will call this\r\n * method on all of it's `@Input()` properties that accept dates. It is therefore possible to\r\n * support passing values from your backend directly to these properties by overriding this method\r\n * to also deserialize the format used by your backend.\r\n */\r\n deserialize(value: any): T | undefined {\r\n if (\r\n value == null || value == undefined ||\r\n (this.isDateInstance(value) && this.isValid(value))\r\n ) {\r\n return value\r\n }\r\n return this.invalid()\r\n }\r\n\r\n /**\r\n * Sets the locale used for all dates.\r\n */\r\n setLocale(locale: any) {\r\n this.locale = locale\r\n this._localeChanges.next()\r\n }\r\n\r\n /**\r\n * Clamp the given date between min and max dates.\r\n */\r\n clampDate(date: T, min?: T, max?: T): T {\r\n if (min && this.compare(date, min) < 0) {\r\n return min\r\n }\r\n if (max && this.compare(date, max) > 0) {\r\n return max\r\n }\r\n return date\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core'\r\n\r\nexport interface DateTimeFormats {\r\n parseInput: any\r\n fullPickerInput: any\r\n datePickerInput: any\r\n timePickerInput: any\r\n monthYearLabel: any\r\n dateA11yLabel: any\r\n monthYearA11yLabel: any\r\n}\r\n\r\n/** InjectionToken for date time picker that can be used to override default format */\r\nexport const NXT_DATE_TIME_FORMATS = new InjectionToken<DateTimeFormats>('NXT_DATE_TIME_FORMATS')\r\n","import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, HostBinding, Input, NgZone, OnInit, Output } from '@angular/core'\r\nimport { take } from 'rxjs/operators'\r\nimport { SelectMode } from '../../class/date-time.class'\r\n\r\nexport class CalendarCell {\r\n constructor(\r\n public value: number,\r\n public displayValue: string,\r\n public ariaLabel: string,\r\n public enabled: boolean,\r\n public out: boolean = false,\r\n public cellClass: string = ''\r\n ) { }\r\n}\r\n\r\n/** @internal */\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: '[nxtDateTimeCalendarBody]',\r\n exportAs: 'nxtDateTimeCalendarBody',\r\n templateUrl: './calendar-body.component.html',\r\n styleUrls: ['./calendar-body.component.scss'],\r\n preserveWhitespaces: false,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class CalendarBodyComponent implements OnInit {\r\n /**\r\n * The cell number of the active cell in the table.\r\n */\r\n @Input()\r\n activeCell = 0\r\n\r\n /**\r\n * The cells to display in the table.\r\n */\r\n @Input()\r\n rows?: CalendarCell[][]\r\n\r\n /**\r\n * The number of columns in the table.\r\n */\r\n @Input()\r\n numCols = 7\r\n\r\n /**\r\n * The ratio (width / height) to use for the cells in the table.\r\n */\r\n @Input()\r\n cellRatio = 1\r\n\r\n /**\r\n * The value in the table that corresponds to today.\r\n */\r\n @Input()\r\n todayValue?: number\r\n\r\n /**\r\n * The value in the table that is currently selected.\r\n */\r\n @Input()\r\n selectedValues?: Array<number | undefined>\r\n\r\n /**\r\n * Current picker select mode\r\n */\r\n @Input()\r\n selectMode?: SelectMode\r\n\r\n /**\r\n * Emit when a calendar cell is selected\r\n */\r\n @Output()\r\n\r\n readonly select = new EventEmitter<CalendarCell>()\r\n\r\n /** @internal */\r\n @HostBinding('class.nxt-dt-calendar-body')\r\n get calendarBodyClass(): boolean {\r\n return true\r\n }\r\n\r\n get isInSingleMode(): boolean {\r\n return this.selectMode === 'single'\r\n }\r\n\r\n get isInRangeMode(): boolean {\r\n return (\r\n this.selectMode === 'range' ||\r\n this.selectMode === 'rangeFrom' ||\r\n this.selectMode === 'rangeTo'\r\n )\r\n }\r\n\r\n constructor(\r\n private readonly elmRef: ElementRef<HTMLElement>,\r\n private readonly ngZone: NgZone\r\n ) { }\r\n\r\n ngOnInit() { }\r\n\r\n selectCell(cell: CalendarCell): void {\r\n this.select.emit(cell)\r\n }\r\n\r\n isActiveCell(rowIndex: number, colIndex: number): boolean {\r\n const cellNumber = rowIndex * this.numCols + colIndex\r\n return cellNumber === this.activeCell\r\n }\r\n\r\n /**\r\n * Check if the cell is selected\r\n */\r\n isSelected(value: number): boolean {\r\n if (!this.selectedValues || this.selectedValues.length === 0) {\r\n return false\r\n }\r\n\r\n if (this.isInSingleMode) {\r\n return value === this.selectedValues[0]\r\n }\r\n\r\n if (this.isInRangeMode) {\r\n const fromValue = this.selectedValues[0]\r\n const toValue = this.selectedValues[1]\r\n\r\n return value === fromValue || value === toValue\r\n }\r\n return false\r\n }\r\n\r\n /**\r\n * Check if the cell in the range\r\n */\r\n isInRange(value: number): boolean {\r\n if (this.isInRangeMode) {\r\n const fromValue = this.selectedValues?.[0]\r\n const toValue = this.selectedValues?.[1]\r\n\r\n if (fromValue !== undefined && toValue !== undefined) {\r\n return value >= fromValue && value <= toValue\r\n } else {\r\n return value === fromValue || value === toValue\r\n }\r\n }\r\n return false\r\n }\r\n\r\n /**\r\n * Check if the cell is the range from\r\n */\r\n isRangeFrom(value: number): boolean {\r\n if (this.isInRangeMode) {\r\n const fromValue = this.selectedValues?.[0]\r\n return fromValue !== undefined && value === fromValue\r\n }\r\n return false\r\n }\r\n\r\n /**\r\n * Check if the cell is the range to\r\n */\r\n isRangeTo(value: number): boolean {\r\n if (this.isInRangeMode) {\r\n const toValue = this.selectedValues?.[1]\r\n return toValue !== undefined && value === toValue\r\n }\r\n return false\r\n }\r\n\r\n /**\r\n * Focus to a active cell\r\n */\r\n focusActiveCell(): void {\r\n this.ngZone.runOutsideAngular(() => {\r\n this.ngZone.onStable\r\n .asObservable()\r\n .pipe(take(1))\r\n .subscribe(() => {\r\n this.elmRef.nativeElement\r\n ?.querySelector<HTMLElement>('.nxt-dt-calendar-cell-active')\r\n ?.focus()\r\n })\r\n })\r\n }\r\n}\r\n","<tr *ngFor=\"let row of rows; let rowIndex = index\"\r\n role=\"row\">\r\n <td *ngFor=\"let item of row; let colIndex = index\"\r\n class=\"nxt-dt-calendar-cell {{item.cellClass}}\"\r\n [tabindex]=\"isActiveCell(rowIndex, colIndex) ? 0 : -1\"\r\n [class.nxt-dt-calendar-cell-active]=\"isActiveCell(rowIndex, colIndex)\"\r\n [class.nxt-dt-calendar-cell-disabled]=\"!item.enabled\"\r\n [class.nxt-dt-calendar-cell-in-range]=\"isInRange(item.value)\"\r\n [class.nxt-dt-calendar-cell-range-from]=\"isRangeFrom(item.value)\"\r\n [class.nxt-dt-calendar-cell-range-from-long]=\"isInRange(item.value + 7)\"\r\n [class.nxt-dt-calendar-cell-range-to]=\"isRangeTo(item.value)\"\r\n [class.nxt-dt-calendar-cell-range-to-long]=\"isInRange(item.value - 7)\"\r\n [attr.aria-label]=\"item.ariaLabel\"\r\n [attr.aria-disabled]=\"!item.enabled || null\"\r\n [style.width.%]=\"100 / numCols\"\r\n [style.paddingTop.%]=\"50 * cellRatio / numCols\"\r\n [style.paddingBottom.%]=\"50 * cellRatio / numCols\"\r\n (click)=\"selectCell(item)\">\r\n <span class=\"nxt-dt-calendar-cell-content\"\r\n [ngClass]=\"{\r\n 'nxt-dt-calendar-cell-out': item.out,\r\n 'nxt-dt-calendar-cell-today': item.value === todayValue,\r\n 'nxt-dt-calendar-cell-selected': isSelected(item.value)\r\n }\">\r\n {{item.displayValue}}\r\n </span>\r\n </td>\r\n</tr>\r\n","import { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, HostBinding, Inject, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core'\r\nimport { Subscription } from 'rxjs'\r\nimport { DateTimeAdapter } from '../../class/date-time-adapter.class'\r\nimport { DateTimeFormats, NXT_DATE_TIME_FORMATS } from '../../class/date-time-format.class'\r\nimport { DateFilter, SelectMode } from '../../class/date-time.class'\r\nimport { CalendarBodyComponent, CalendarCell } from '../calendar-body/calendar-body.component'\r\n\r\n/** @internal */\r\nconst DAYS_PER_WEEK = 7\r\n\r\n/** @internal */\r\nconst WEEKS_PER_VIEW = 6\r\n\r\n@Component({\r\n selector: 'nxt-date-time-month-view',\r\n templateUrl: './calendar-month-view.component.html',\r\n styleUrls: ['./calendar-month-view.component.scss'],\r\n preserveWhitespaces: false,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class MonthViewComponent<T> implements OnInit, AfterContentInit, OnDestroy {\r\n /**\r\n * Whether to hide dates in other months at the start or end of the current month\r\n */\r\n @Input()\r\n hideOtherMonths: boolean = false\r\n\r\n /**\r\n * Define the first day of a week\r\n * Sunday: 0 ~ Saturday: 6\r\n */\r\n private _firstDayOfWeek: number = 0\r\n @Input()\r\n get firstDayOfWeek(): number {\r\n return this._firstDayOfWeek\r\n }\r\n\r\n set firstDayOfWeek(val: number) {\r\n if (val >= 0 && val <= 6 && val !== this._firstDayOfWeek) {\r\n this._firstDayOfWeek = val\r\n\r\n if (this.initiated) {\r\n this.generateWeekDays()\r\n this.generateCalendar()\r\n this.cdRef.markForCheck()\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * The select mode of the picker;\r\n */\r\n private _selectMode: SelectMode = 'single'\r\n @Input()\r\n get selectMode(): SelectMode {\r\n return this._selectMode\r\n }\r\n\r\n set selectMode(val: SelectMode) {\r\n this._selectMode = val\r\n if (this.initiated) {\r\n this.generateCalendar()\r\n this.cdRef.markForCheck()\r\n }\r\n }\r\n\r\n /** The currently selected date */\r\n private _selected?: T\r\n @Input()\r\n get selected() {\r\n return this._selected\r\n }\r\n\r\n set selected(value: T | undefined) {\r\n const oldSelected = this._selected\r\n value = this.dateTimeAdapter.deserialize(value)\r\n this._selected = this.getValidDate(value)\r\n\r\n if (!this.dateTimeAdapter.isSameDay(oldSelected, this._selected)) {\r\n this.setSelectedDates()\r\n }\r\n }\r\n\r\n private _selecteds = new Array<T | undefined>()\r\n @Input()\r\n get selecteds() {\r\n return this._selecteds || []\r\n }\r\n\r\n set selecteds(values: Array<T | undefined>) {\r\n this._selecteds = values.map(v => {\r\n v = this.dateTimeAdapter.deserialize(v)\r\n return this.getValidDate(v)\r\n })\r\n this.setSelectedDates()\r\n }\r\n\r\n private _pickerMoment?: T\r\n @Input()\r\n get pickerMoment() {\r\n return this._pickerMoment\r\n }\r\n\r\n set pickerMoment(value: T | undefined) {\r\n const oldMoment = this._pickerMoment\r\n value = this.dateTimeAdapter.deserialize(value)\r\n this._pickerMoment =\r\n this.getValidDate(value) || this.dateTimeAdapter.now()\r\n\r\n this.firstDateOfMonth = this.dateTimeAdapter.createDate(\r\n this.dateTimeAdapter.getYear(this._pickerMoment),\r\n this.dateTimeAdapter.getMonth(this._pickerMoment),\r\n 1\r\n )\r\n\r\n if (\r\n !this.isSameMonth(oldMoment, this._pickerMoment) &&\r\n this.initiated\r\n ) {\r\n this.generateCalendar()\r\n }\r\n }\r\n\r\n /**\r\n * A function used to filter which dates are selectable\r\n */\r\n private _dateTimeFilter?: DateFilter<T>\r\n @Input()\r\n get dateTimeFilter() {\r\n return this._dateTimeFilter\r\n }\r\n\r\n set dateTimeFilter(filter: DateFilter<T> | undefined) {\r\n this._dateTimeFilter = filter\r\n if (this.initiated) {\r\n this.generateCalendar()\r\n this.cdRef.markForCheck()\r\n }\r\n }\r\n\r\n /** The minimum selectable date */\r\n private _minDate?: T\r\n @Input()\r\n get min() {\r\n return this._minDate\r\n }\r\n\r\n set min(value: T | undefined) {\r\n value = this.dateTimeAdapter.deserialize(value)\r\n this._minDate = this.getValidDate(value)\r\n if (this.initiated) {\r\n this.generateCalendar()\r\n this.cdRef.markForCheck()\r\n }\r\n }\r\n\r\n /** The maximum selectable date */\r\n private _maxDate?: T\r\n @Input()\r\n get max() {\r\n return this._maxDate\r\n }\r\n\r\n set max(value: T | undefined) {\r\n value = this.dateTimeAdapter.deserialize(value)\r\n this._maxDate = this.getValidDate(value)\r\n\r\n if (this.initiated) {\r\n this.generateCalendar()\r\n this.cdRef.markForCheck()\r\n }\r\n }\r\n\r\n private _weekdays?: Array<{ long: string, short: string, narrow: string }>\r\n get weekdays() {\r\n return this._weekdays\r\n }\r\n\r\n private _days?: CalendarCell[][]\r\n get days() {\r\n return this._days\r\n }\r\n\r\n get activeCell() {\r\n if (this.pickerMoment) {\r\n return (\r\n this.dateTimeAdapter.getDate(this.pickerMoment) +\r\n this.firstRowOffset -\r\n 1\r\n )\r\n }\r\n return\r\n }\r\n\r\n get isInSingleMode(): boolean {\r\n return this.selectMode === 'single'\r\n }\r\n\r\n get isInRangeMode(): boolean {\r\n return (\r\n this.selectMode === 'range' ||\r\n this.selectMode === 'rangeFrom' ||\r\n this.selectMode === 'rangeTo'\r\n )\r\n }\r\n\r\n private firstDateOfMonth?: T\r\n\r\n private localeSub?: Subscription\r\n\r\n private initiated = false\r\n\r\n /**\r\n * The date of the month that today falls on.\r\n */\r\n todayDate?: number\r\n\r\n /**\r\n * An array to hold all selectedDates' value\r\n * the value is the day number in current month\r\n */\r\n selectedDates?: Array<number | undefined>\r\n\r\n // the index of cell that contains the first date of the month\r\n firstRowOffset: number = 0\r\n\r\n /**\r\n * Callback to invoke when a new date is selected\r\n */\r\n @Output()\r\n readonly selectedChange = new EventEmitter<T | undefined>()\r\n\r\n /**\r\n * Callback to invoke when any date is selected.\r\n */\r\n @Output()\r\n readonly userSelection = new EventEmitter<void>()\r\n\r\n /** Emits when any date is activated */\r\n @Output()\r\n readonly pickerMomentChange = new EventEmitter<T>()\r\n\r\n /** The body of calendar table */\r\n @ViewChild(CalendarBodyComponent, { static: true })\r\n private calendarBodyElm?: CalendarBodyComponent\r\n\r\n /** @internal */\r\n @HostBinding('class.nxt-dt-calendar-view')\r\n get calendarView(): boolean {\r\n return true\r\n }\r\n\r\n constructor(\r\n private readonly cdRef: ChangeDetectorRef,\r\n private readonly dateTimeAdapter: DateTimeAdapter<T>,\r\n @Inject(NXT_DATE_TIME_FORMATS)\r\n private readonly dateTimeFormats: DateTimeFormats\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.generateWeekDays()\r\n\r\n this.localeSub = this.dateTimeAdapter.localeChanges.subscribe(() => {\r\n this.generateWeekDays()\r\n this.generateCalendar()\r\n this.cdRef.markForCheck()\r\n })\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.generateCalendar()\r\n this.initiated = true\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.localeSub?.unsubscribe()\r\n this.localeSub = undefined\r\n }\r\n\r\n /**\r\n * Handle a calendarCell selected\r\n */\r\n selectCalendarCell(cell: CalendarCell): void {\r\n // Cases in which the date would not be selected\r\n // 1, the calendar cell is NOT enabled (is NOT valid)\r\n // 2, the selected date is NOT in current picker's month and the hideOtherMonths is enabled\r\n if (!cell.enabled || (this.hideOtherMonths && cell.out)) {\r\n return\r\n }\r\n\r\n this.selectDate(cell.value)\r\n }\r\n\r\n /**\r\n * Handle a new date selected\r\n */\r\n private selectDate(date: number): void {\r\n const daysDiff = date - 1\r\n const selected = this.dateTimeAdapter.addCalendarDays(\r\n this.firstDateOfMonth,\r\n daysDiff\r\n )\r\n\r\n this.selectedChange.emit(selected)\r\n this.userSelection.emit()\r\n }\r\n\r\n /**\r\n * Handle keydown event on calendar body\r\n */\r\n handleCalendarKeydown(event: KeyboardEvent): void {\r\n let moment\r\n switch (event.code.toLowerCase()) {\r\n // minus 1 day\r\n case 'arrowleft':\r\n moment = this.dateTimeAdapter.addCalendarDays(\r\n this.pickerMoment,\r\n -1\r\n )\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // add 1 day\r\n case 'arrowright':\r\n moment = this.dateTimeAdapter.addCalendarDays(\r\n this.pickerMoment,\r\n 1\r\n )\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // minus 1 week\r\n case 'arrowup':\r\n moment = this.dateTimeAdapter.addCalendarDays(\r\n this.pickerMoment,\r\n -7\r\n )\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // add 1 week\r\n case 'arrowdown':\r\n moment = this.dateTimeAdapter.addCalendarDays(\r\n this.pickerMoment,\r\n 7\r\n )\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // move to first day of current month\r\n case 'home':\r\n moment = this.dateTimeAdapter.addCalendarDays(\r\n this.pickerMoment,\r\n 1 - this.dateTimeAdapter.getDate(this.pickerMoment)\r\n )\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // move to last day of current month\r\n case 'end':\r\n moment = this.dateTimeAdapter.addCalendarDays(\r\n this.pickerMoment,\r\n this.dateTimeAdapter.getNumDaysInMonth(this.pickerMoment) -\r\n this.dateTimeAdapter.getDate(this.pickerMoment)\r\n )\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // minus 1 month (or 1 year)\r\n case 'pageup':\r\n moment = event.altKey\r\n ? this.dateTimeAdapter.addCalendarYears(\r\n this.pickerMoment,\r\n -1\r\n )\r\n : this.dateTimeAdapter.addCalendarMonths(\r\n this.pickerMoment,\r\n -1\r\n )\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // add 1 month (or 1 year)\r\n case 'pagedown':\r\n moment = event.altKey\r\n ? this.dateTimeAdapter.addCalendarYears(\r\n this.pickerMoment,\r\n 1\r\n )\r\n : this.dateTimeAdapter.addCalendarMonths(\r\n this.pickerMoment,\r\n 1\r\n )\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // select the pickerMoment\r\n case 'enter':\r\n if (!this.dateTimeFilter || this.dateTimeFilter(this.pickerMoment, 'date')) {\r\n this.selectDate(\r\n this.dateTimeAdapter.getDate(this.pickerMoment)\r\n )\r\n }\r\n break\r\n default:\r\n return\r\n }\r\n\r\n this.focusActiveCell()\r\n event.preventDefault()\r\n }\r\n\r\n /**\r\n * Generate the calendar weekdays array\r\n */\r\n private generateWeekDays(): void {\r\n const longWeekdays = this.dateTimeAdapter.getDayOfWeekNames('long')\r\n const shortWeekdays = this.dateTimeAdapter.getDayOfWeekNames('short')\r\n const narrowWeekdays = this.dateTimeAdapter.getDayOfWeekNames('narrow')\r\n const firstDayOfWeek = this.firstDayOfWeek\r\n\r\n const weekdays = longWeekdays.map((long, i) => ({ long, short: shortWeekdays[i], narrow: narrowWeekdays[i] }))\r\n\r\n this._weekdays = weekdays\r\n .slice(firstDayOfWeek)\r\n .concat(weekdays.slice(0, firstDayOfWeek))\r\n\r\n return\r\n }\r\n\r\n /**\r\n * Generate the calendar days array\r\n */\r\n private generateCalendar(): void {\r\n if (!this.pickerMoment) {\r\n return\r\n }\r\n\r\n this.todayDate = undefined\r\n\r\n // the first weekday of the month\r\n const startWeekdayOfMonth = this.dateTimeAdapter.getDay(\r\n this.firstDateOfMonth\r\n )\r\n const firstDayOfWeek = this.firstDayOfWeek\r\n\r\n // the amount of days from the first date of the month\r\n // if it is < 0, it means the date is in previous month\r\n let daysDiff =\r\n 0 -\r\n ((startWeekdayOfMonth + (DAYS_PER_WEEK - firstDayOfWeek)) %\r\n DAYS_PER_WEEK)\r\n\r\n // the index of cell that contains the first date of the month\r\n this.firstRowOffset = Math.abs(daysDiff)\r\n\r\n this._days = []\r\n for (let i = 0; i < WEEKS_PER_VIEW; i++) {\r\n const week = []\r\n for (let j = 0; j < DAYS_PER_WEEK; j++) {\r\n const date = this.dateTimeAdapter.addCalendarDays(\r\n this.firstDateOfMonth,\r\n daysDiff\r\n )\r\n const dateCell = this.createDateCell(date, daysDiff)\r\n\r\n // check if the date is today\r\n if (\r\n this.dateTimeAdapter.isSameDay(\r\n this.dateTimeAdapter.now(),\r\n date\r\n )\r\n ) {\r\n this.todayDate = daysDiff + 1\r\n }\r\n\r\n week.push(dateCell)\r\n daysDiff += 1\r\n }\r\n this._days.push(week)\r\n }\r\n\r\n this.setSelectedDates()\r\n }\r\n\r\n /**\r\n * Creates CalendarCell for days.\r\n */\r\n private createDateCell(date: T, daysDiff: number): CalendarCell {\r\n // total days of the month\r\n const daysInMonth = this.dateTimeAdapter.getNumDaysInMonth(\r\n this.pickerMoment\r\n )\r\n const dateNum = this.dateTimeAdapter.getDate(date)\r\n // const dateName = this.dateNames[dateNum - 1];\r\n const dateName = dateNum.toString()\r\n const ariaLabel = this.dateTimeAdapter.format(\r\n date,\r\n this.dateTimeFormats.dateA11yLabel\r\n )\r\n\r\n // check if the date if selectable\r\n const enabled = this.isDateEnabled(date)\r\n\r\n // check if date is not in current month\r\n const dayValue = daysDiff + 1\r\n const out = dayValue < 1 || dayValue > daysInMonth\r\n const cellClass = 'nxt-dt-day-' + this.dateTimeAdapter.getDay(date)\r\n\r\n return new CalendarCell(\r\n dayValue,\r\n dateName,\r\n ariaLabel,\r\n enabled,\r\n out,\r\n cellClass\r\n )\r\n }\r\n\r\n /**\r\n * Check if the date is valid\r\n */\r\n private isDateEnabled(date: T): boolean {\r\n return (\r\n !!date &&\r\n (!this.dateTimeFilter || this.dateTimeFilter(date, 'date')) &&\r\n (!this.min ||\r\n this.dateTimeAdapter.compare(date, this.min) >= 0) &&\r\n (!this.max ||\r\n this.dateTimeAdapter.compare(date, this.max) <= 0)\r\n )\r\n }\r\n\r\n /**\r\n * Get a valid date object\r\n */\r\n private getValidDate(obj: any): T | undefined {\r\n return this.dateTimeAdapter.isDateInstance(obj) &&\r\n this.dateTimeAdapter.isValid(obj)\r\n ? obj\r\n : undefined\r\n }\r\n\r\n /**\r\n * Check if the give dates are defined and in the same month\r\n */\r\n isSameMonth(dateLeft?: T, dateRight?: T): boolean {\r\n return !!(\r\n dateLeft &&\r\n dateRight &&\r\n this.dateTimeAdapter.isValid(dateLeft) &&\r\n this.dateTimeAdapter.isValid(dateRight) &&\r\n this.dateTimeAdapter.getYear(dateLeft) ===\r\n this.dateTimeAdapter.getYear(dateRight) &&\r\n this.dateTimeAdapter.getMonth(dateLeft) ===\r\n this.dateTimeAdapter.getMonth(dateRight)\r\n )\r\n }\r\n\r\n /**\r\n * Set the selectedDates value.\r\n * In single mode, it has only one value which represent the selected date\r\n * In range mode, it would has two values, one for the fromValue and the other for the toValue\r\n */\r\n private setSelectedDates(): void {\r\n this.selectedDates = []\r\n\r\n if (!this.firstDateOfMonth) {\r\n return\r\n }\r\n\r\n if (this.isInSingleMode && this.selected) {\r\n const dayDiff = this.dateTimeAdapter.differenceInCalendarDays(\r\n this.selected,\r\n this.firstDateOfMonth\r\n ) ?? 0\r\n this.selectedDates[0] = dayDiff + 1\r\n return\r\n }\r\n\r\n if (this.isInRangeMode && this.selecteds) {\r\n this.selectedDates = this.selecteds.map(selected => {\r\n if (this.dateTimeAdapter.isValid(selected)) {\r\n const dayDiff = this.dateTimeAdapter.differenceInCalendarDays(\r\n selected,\r\n this.firstDateOfMonth\r\n ) ?? 0\r\n return dayDiff + 1\r\n }\r\n return\r\n })\r\n }\r\n }\r\n\r\n private focusActiveCell() {\r\n this.calendarBodyElm?.focusActiveCell()\r\n }\r\n}\r\n","<table class=\"nxt-dt-calendar-table nxt-dt-calendar-month-table\"\r\n [class.nxt-dt-calendar-only-current-month]=\"hideOtherMonths\">\r\n <thead class=\"nxt-dt-calendar-header\">\r\n <tr class=\"nxt-dt-weekdays\">\r\n <th *ngFor=\"let weekday of weekdays\"\r\n [attr.aria-label]=\"weekday.long\"\r\n class=\"nxt-dt-weekday\"\r\n scope=\"col\">\r\n <span>{{weekday.short}}</span>\r\n </th>\r\n </tr>\r\n <tr>\r\n <th class=\"nxt-dt-calendar-table-divider\"\r\n aria-hidden=\"true\"\r\n colspan=\"7\"></th>\r\n </tr>\r\n </thead>\r\n <!-- eslint-disable-next-line @angular-eslint/template/interactive-supports-focus -->\r\n <tbody nxtDateTimeCalendarBody\r\n role=\"grid\"\r\n [rows]=\"days\"\r\n [todayValue]=\"todayDate ?? undefined\"\r\n [selectedValues]=\"selectedDates\"\r\n [selectMode]=\"selectMode\"\r\n [activeCell]=\"activeCell ?? 0\"\r\n (keydown)=\"handleCalendarKeydown($event)\"\r\n (select)=\"selectCalendarCell($event)\">\r\n </tbody>\r\n</table>\r\n","import { Injectable } from '@angular/core'\r\nimport { LocalizeFn } from '@angular/localize/init'\r\nimport { Subject } from 'rxjs'\r\n\r\n/** @internal */\r\ndeclare const $localize: LocalizeFn\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DateTimeIntl {\r\n\r\n /**\r\n * Stream that emits whenever the labels here are changed. Use this to notify\r\n * components if the labels have changed after initialization.\r\n */\r\n readonly changes: Subject<void> = new Subject<void>()\r\n\r\n /** A label for the up second button (used by screen readers). */\r\n upSecondLabel = $localize`:@@nxt-pick-datetime.up-second:Add a second`\r\n\r\n /** A label for the down second button (used by screen readers). */\r\n downSecondLabel = $localize`:@@nxt-pick-datetime.down-second:Minus a second`\r\n\r\n /** A label for the up minute button (used by screen readers). */\r\n upMinuteLabel = $localize`:@@nxt-pick-datetime.up-minute:Add a minute`\r\n\r\n /** A label for the down minute button (used by screen readers). */\r\n downMinuteLabel = $localize`:@@nxt-pick-datetime.down-minute:Minus a minute`\r\n\r\n /** A label for the up hour button (used by screen readers). */\r\n upHourLabel = $localize`:@@nxt-pick-datetime.up-hour:Add a hour`\r\n\r\n /** A label for the down hour button (used by screen readers). */\r\n downHourLabel = $localize`:@@nxt-pick-datetime.down-hour:Minus a hour`\r\n\r\n /** A label for the previous month button (used by screen readers) */\r\n prevMonthLabel = $localize`:@@nxt-pick-datetime.prev-month:Previous month`\r\n\r\n /** A label for the next month button (used by screen readers) */\r\n nextMonthLabel = $localize`:@@nxt-pick-datetime.next-month:Next month`\r\n\r\n /** A label for the previous year button (used by screen readers) */\r\n prevYearLabel = $localize`:@@nxt-pick-datetime.prev-year:Previous year`\r\n\r\n /** A label for the next year button (used by screen readers) */\r\n nextYearLabel = $localize`:@@nxt-pick-datetime.next-year:Next year`\r\n\r\n /** A label for the previous multi-year button (used by screen readers) */\r\n prevMultiYearLabel = $localize`:@@nxt-pick-datetime.prev-multi-year:Previous 21 years`\r\n\r\n /** A label for the next multi-year button (used by screen readers) */\r\n nextMultiYearLabel = $localize`:@@nxt-pick-datetime.next-multi-year:Next 21 years`\r\n\r\n /** A label for the 'switch to month view' button (used by screen readers) */\r\n switchToMonthViewLabel = $localize`:@@nxt-pick-datetime.switch-to-month:Change to month view`\r\n\r\n /** A label for the 'switch to year view' button (used by screen readers) */\r\n switchToMultiYearViewLabel = $localize`:@@nxt-pick-datetime.switch-to-year-month:Choose month and year`\r\n\r\n /** A label for the cancel button */\r\n cancelBtnLabel = $localize`:@@nxt-pick-datetime.cancel:Cancel`\r\n\r\n /** A label for the set button */\r\n setBtnLabel = $localize`:@@nxt-pick-datetime.set:Set`\r\n\r\n /** A label for the range 'from' in picker info */\r\n rangeFromLabel = $localize`:@@nxt-pick-datetime.from:From`\r\n\r\n /** A label for the range 'to' in picker info */\r\n rangeToLabel = $localize`:@@nxt-pick-datetime.to:To`\r\n\r\n /** A label for the hour12 button (AM) */\r\n hour12AMLabel = $localize`:@@nxt-pick-datetime.time-am:AM`\r\n\r\n /** A label for the hour12 button (PM) */\r\n hour12PMLabel = $localize`:@@nxt-pick-datetime.time-pm:PM`\r\n}\r\n","import { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, HostBinding, Input, OnInit, Output, ViewChild } from '@angular/core'\r\nimport { DateTimeAdapter } from '../../class/date-time-adapter.class'\r\nimport { DateFilter, SelectMode } from '../../class/date-time.class'\r\nimport { CalendarCell, CalendarBodyComponent } from '../calendar-body/calendar-body.component'\r\nimport { DateTimeIntl } from '../date-time-picker-intl.service'\r\n\r\n/** @internal */\r\nexport const YEARS_PER_ROW = 3\r\n\r\n/** @internal */\r\nexport const YEAR_ROWS = 7\r\n\r\n@Component({\r\n selector: 'nxt-date-time-multi-year-view',\r\n templateUrl: './calendar-multi-year-view.component.html',\r\n styleUrls: ['./calendar-multi-year-view.component.scss'],\r\n preserveWhitespaces: false,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\n\r\nexport class MultiYearViewComponent<T> implements OnInit, AfterContentInit {\r\n\r\n /**\r\n * The select mode of the picker;\r\n */\r\n private _selectMode: SelectMode = 'single'\r\n @Input()\r\n get selectMode(): SelectMode {\r\n return this._selectMode\r\n }\r\n\r\n set selectMode(val: SelectMode) {\r\n this._selectMode = val\r\n if (this.initiated) {\r\n this.setSelectedYears()\r\n this.cdRef.markForCheck()\r\n }\r\n }\r\n\r\n /** The currently selected date */\r\n private _selected?: T\r\n @Input()\r\n get selected() {\r\n return this._selected\r\n }\r\n\r\n set selected(value: T | undefined) {\r\n const oldSelected = this._selected\r\n value = this.dateTimeAdapter.deserialize(value)\r\n this._selected = this.getValidDate(value)\r\n\r\n if (!this.dateTimeAdapter.isSameDay(oldSelected, this._selected)) {\r\n this.setSelectedYears()\r\n }\r\n }\r\n\r\n private _selecteds = new Array<T | undefined>()\r\n @Input()\r\n get selecteds() {\r\n return this._selecteds\r\n }\r\n\r\n set selecteds(values: Array<T | undefined>) {\r\n this._selecteds = values.map((v) => {\r\n v = this.dateTimeAdapter.deserialize(v)\r\n return this.getValidDate(v)\r\n })\r\n this.setSelectedYears()\r\n }\r\n\r\n private _pickerMoment?: T\r\n @Input()\r\n get pickerMoment() {\r\n return this._pickerMoment\r\n }\r\n\r\n set pickerMoment(value: T | undefined) {\r\n const oldMoment = this._pickerMoment\r\n value = this.dateTimeAdapter.deserialize(value)\r\n this._pickerMoment = this.getValidDate(value) || this.dateTimeAdapter.now()\r\n\r\n if (oldMoment && this._pickerMoment &&\r\n !this.isSameYearList(oldMoment, this._pickerMoment)) {\r\n this.generateYearList()\r\n }\r\n }\r\n\r\n /**\r\n * A function used to filter which dates are selectable\r\n */\r\n private _dateTimeFilter?: DateFilter<T>\r\n @Input()\r\n get dateTimeFilter() {\r\n return this._dateTimeFilter\r\n }\r\n\r\n set dateTimeFilter(filter: DateFilter<T> | undefined) {\r\n this._dateTimeFilter = filter\r\n if (this.initiated) {\r\n this.generateYearList()\r\n }\r\n }\r\n\r\n /** The minimum selectable date */\r\n private _minDate?: T\r\n @Input()\r\n get min() {\r\n return this._minDate\r\n }\r\n\r\n set min(value: T | undefined) {\r\n value = this.dateTimeAdapter.deserialize(value)\r\n this._minDate = this.getValidDate(value)\r\n if (this.initiated) {\r\n this.generateYearList()\r\n }\r\n }\r\n\r\n /** The maximum selectable date */\r\n private _maxDate?: T\r\n @Input()\r\n get max() {\r\n return this._maxDate\r\n }\r\n\r\n set max(value: T | undefined) {\r\n value = this.dateTimeAdapter.deserialize(value)\r\n this._maxDate = this.getValidDate(value)\r\n if (this.initiated) {\r\n this.generateYearList()\r\n }\r\n }\r\n\r\n private _todayYear?: number\r\n get todayYear() {\r\n return this._todayYear\r\n }\r\n\r\n private _years?: CalendarCell[][]\r\n get years() {\r\n return this._years\r\n }\r\n\r\n private _selectedYears?: Array<number | undefined>\r\n get selectedYears() {\r\n return this._selectedYears\r\n }\r\n\r\n private initiated = false\r\n\r\n get isInSingleMode(): boolean {\r\n return this.selectMode === 'single'\r\n }\r\n\r\n get isInRangeMode(): boolean {\r\n return this.selectMode === 'range' || this.selectMode === 'rangeFrom'\r\n || this.selectMode === 'rangeTo'\r\n }\r\n\r\n get activeCell(): number | undefined {\r\n if (this._pickerMoment) {\r\n return this.dateTimeAdapter.getYear(this._pickerMoment) % (YEARS_PER_ROW * YEAR_ROWS)\r\n }\r\n return\r\n }\r\n\r\n get tableHeader(): string | undefined {\r\n if (this._years && this._years.length > 0) {\r\n return `${this._years[0][0].displayValue} ~ ${this._years[YEAR_ROWS - 1][YEARS_PER_ROW - 1].displayValue}`\r\n }\r\n return\r\n }\r\n\r\n get prevButtonLabel(): string {\r\n return this.pickerIntl.prevMultiYearLabel\r\n }\r\n\r\n get nextButtonLabel(): string {\r\n return this.pickerIntl.nextMultiYearLabel\r\n }\r\n\r\n /**\r\n * Callback to invoke when a new month is selected\r\n */\r\n\r\n @Output()\r\n readonly change = new EventEmitter<T>()\r\n\r\n /**\r\n * Emits the selected year\r\n *\r\n * This doesn't imply a change on the selected date.\r\n */\r\n @Output()\r\n readonly yearSelected = new EventEmitter<T>()\r\n\r\n /** Emits when any date is activated */\r\n @Output()\r\n readonly pickerMomentChange: EventEmitter<T> = new EventEmitter<T>()\r\n\r\n /** Emits when use keyboard enter to select a calendar cell */\r\n @Output()\r\n readonly keyboardEnter = new EventEmitter<void>()\r\n\r\n /** The body of calendar table */\r\n @ViewChild(CalendarBodyComponent, { static: true })\r\n private calendarBodyElm?: CalendarBodyComponent\r\n\r\n /** @internal */\r\n @HostBinding('class.nxt-dt-calendar-view')\r\n get calendarView(): boolean {\r\n return true\r\n }\r\n\r\n /** @internal */\r\n @HostBinding('class.nxt-dt-calendar-multi-year-view')\r\n get calendarMultiYearView(): boolean {\r\n return true\r\n }\r\n\r\n constructor(\r\n private readonly cdRef: ChangeDetectorRef,\r\n private readonly pickerIntl: DateTimeIntl,\r\n private readonly dateTimeAdapter: DateTimeAdapter<T>\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this._todayYear = this.dateTimeAdapter.getYear(this.dateTimeAdapter.now())\r\n this.generateYearList()\r\n this.initiated = true\r\n }\r\n\r\n /**\r\n * Handle a calendarCell selected\r\n */\r\n selectCalendarCell(cell: CalendarCell): void {\r\n this.selectYear(cell.value)\r\n }\r\n\r\n private selectYear(year: number): void {\r\n this.yearSelected.emit(this.dateTimeAdapter.createDate(year, 0, 1))\r\n const firstDateOfMonth = this.dateTimeAdapter.createDate(\r\n year,\r\n this.dateTimeAdapter.getMonth(this.pickerMoment),\r\n 1\r\n )\r\n const daysInMonth = this.dateTimeAdapter.getNumDaysInMonth(firstDateOfMonth)\r\n const selected = this.dateTimeAdapter.createDate(\r\n year,\r\n this.dateTimeAdapter.getMonth(this.pickerMoment),\r\n Math.min(daysInMonth, this.dateTimeAdapter.getDate(this.pickerMoment)),\r\n this.dateTimeAdapter.getHours(this.pickerMoment),\r\n this.dateTimeAdapter.getMinutes(this.pickerMoment),\r\n this.dateTimeAdapter.getSeconds(this.pickerMoment)\r\n )\r\n\r\n this.change.emit(selected)\r\n }\r\n\r\n /**\r\n * Generate the previous year list\r\n */\r\n prevYearList(event: any): void {\r\n this._pickerMoment = this.dateTimeAdapter.addCalendarYears(this.pickerMoment, -1 * YEAR_ROWS * YEARS_PER_ROW)\r\n this.generateYearList()\r\n event.preventDefault()\r\n }\r\n\r\n /**\r\n * Generate the next year list\r\n */\r\n nextYearList(event: any): void {\r\n this._pickerMoment = this.dateTimeAdapter.addCalendarYears(this.pickerMoment, YEAR_ROWS * YEARS_PER_ROW)\r\n this.generateYearList()\r\n event.preventDefault()\r\n }\r\n\r\n generateYearList(): void {\r\n this._years = []\r\n\r\n const pickerMomentYear = this.dateTimeAdapter.getYear(this._pickerMoment)\r\n const offset = pickerMomentYear % (YEARS_PER_ROW * YEAR_ROWS)\r\n\r\n for (let i = 0; i < YEAR_ROWS; i++) {\r\n const row = []\r\n\r\n for (let j = 0; j < YEARS_PER_ROW; j++) {\r\n const year = pickerMomentYear - offset + (j + i * YEARS_PER_ROW)\r\n const yearCell = this.createYearCell(year)\r\n row.push(yearCell)\r\n }\r\n\r\n this._years.push(row)\r\n }\r\n\r\n return\r\n\r\n }\r\n\r\n /** Whether the previous period button is enabled */\r\n previousEnabled(): boolean {\r\n if (!this.min) {\r\n return true\r\n }\r\n return !this.min || !this.isSameYearList(this._pickerMoment, this.min)\r\n }\r\n\r\n /** Whether the next period button is enabled */\r\n nextEnabled(): boolean {\r\n return !this.max || !this.isSameYearList(this._pickerMoment, this.max)\r\n }\r\n\r\n handleCalendarKeydown(event: KeyboardEvent): void {\r\n let moment\r\n switch (event.code.toLowerCase()) {\r\n // minus 1 year\r\n case 'arrowleft':\r\n moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment, -1)\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // add 1 year\r\n case 'arrowright':\r\n moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment, 1)\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // minus 3 years\r\n case 'arrowup':\r\n moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment, -1 * YEARS_PER_ROW)\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // add 3 years\r\n case 'arrowdown':\r\n moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment, YEARS_PER_ROW)\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // go to the first year of the year page\r\n case 'home':\r\n moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment,\r\n -this.dateTimeAdapter.getYear(this._pickerMoment) % (YEARS_PER_ROW * YEAR_ROWS))\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // go to the last year of the year page\r\n case 'end':\r\n moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment,\r\n (YEARS_PER_ROW * YEAR_ROWS) - this.dateTimeAdapter.getYear(this._pickerMoment) % (YEARS_PER_ROW * YEAR_ROWS) - 1)\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // minus 1 year page (or 10 year pages)\r\n case 'pageup':\r\n moment = this.dateTimeAdapter.addCalendarYears(this.pickerMoment, event.altKey ? -10 * (YEARS_PER_ROW * YEAR_ROWS) : -1 * (YEARS_PER_ROW * YEAR_ROWS))\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // add 1 year page (or 10 year pages)\r\n case 'pagedown':\r\n moment = this.dateTimeAdapter.addCalendarYears(this.pickerMoment, event.altKey ? 10 * (YEARS_PER_ROW * YEAR_ROWS) : (YEARS_PER_ROW * YEAR_ROWS))\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n case 'enter':\r\n this.selectYear(this.dateTimeAdapter.getYear(this._pickerMoment))\r\n this.keyboardEnter.emit()\r\n break\r\n\r\n default:\r\n return\r\n }\r\n\r\n this.focusActiveCell()\r\n event.preventDefault()\r\n }\r\n\r\n /**\r\n * Creates an CalendarCell for the given year.\r\n */\r\n private createYearCell(year: number): CalendarCell {\r\n const startDateOfYear = this.dateTimeAdapter.createDate(year, 0, 1)\r\n const ariaLabel = this.dateTimeAdapter.getYearName(startDateOfYear)\r\n const cellClass = 'nxt-dt-year-' + year\r\n return new CalendarCell(year, year.toString(), ariaLabel, this.isYearEnabled(year), false, cellClass)\r\n }\r\n\r\n private setSelectedYears(): void {\r\n\r\n this._selectedYears = []\r\n\r\n if (this.isInSingleMode && this.selected) {\r\n this._selectedYears[0] = this.dateTimeAdapter.getYear(this.selected)\r\n }\r\n\r\n if (this.isInRangeMode && this.selecteds) {\r\n this._selectedYears = this.selecteds.map((selected) => {\r\n if (this.dateTimeAdapter.isValid(selected)) {\r\n return this.dateTimeAdapter.getYear(selected)\r\n }\r\n return\r\n })\r\n }\r\n }\r\n\r\n /** Whether the given year is enabled */\r\n private isYearEnabled(year: number) {\r\n\r\n // enable if it reaches here and there's no filter defined\r\n if (!this.dateTimeFilter) {\r\n return true\r\n }\r\n\r\n const firstOfYear = this.dateTimeAdapter.createDate(year, 0, 1)\r\n\r\n // If any date in the year is enabled count the year as enabled.\r\n for (let date = firstOfYear; this.dateTimeAdapter.getYear(date) == year;\r\n date = this.dateTimeAdapter.addCalendarDays(date, 1)) {\r\n if (this.dateTimeFilter(date, 'year')) {\r\n return true\r\n }\r\n }\r\n\r\n return false\r\n }\r\n\r\n private isSameYearList(date1?: T, date2?: T): boolean {\r\n return Math.floor(this.dateTimeAdapter.getYear(date1) / (YEARS_PER_ROW * YEAR_ROWS)) ===\r\n Math.floor(this.dateTimeAdapter.getYear(date2) / (YEARS_PER_ROW * YEAR_ROWS))\r\n }\r\n\r\n /**\r\n * Get a valid date object\r\n */\r\n private getValidDate(obj: any): T | undefined {\r\n return (this.dateTimeAdapter.isDateInstance(obj) && this.dateTimeAdapter.isValid(obj))\r\n ? obj\r\n : undefined\r\n }\r\n\r\n private focusActiveCell() {\r\n this.calendarBodyElm?.focusActiveCell()\r\n }\r\n}\r\n","<button class=\"nxt-dt-control-button nxt-dt-control-arrow-button\"\r\n [disabled]=\"!previousEnabled()\"\r\n [attr.aria-label]=\"prevButtonLabel\"\r\n type=\"button\"\r\n tabindex=\"0\"\r\n (click)=\"prevYearList($event)\">\r\n <span class=\"nxt-dt-control-button-content\"\r\n tabindex=\"-1\">\r\n <!-- <editor-fold desc=\"SVG Arrow Left\"> -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n version=\"1.1\"\r\n x=\"0px\"\r\n y=\"0px\"\r\n viewBox=\"0 0 250.738 250.738\"\r\n style=\"enable-background:new 0 0 250.738 250.738;\"\r\n xml:space=\"preserve\"\r\n width=\"100%\"\r\n height=\"100%\">\r\n <path style=\"fill-rule: evenodd; clip-rule: evenodd;\"\r\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\" />\r\n </svg>\r\n <!-- </editor-fold> -->\r\n </span>\r\n</button>\r\n<table class=\"nxt-dt-calendar-table nxt-dt-calendar-multi-year-table\">\r\n <thead class=\"nxt-dt-calendar-header\">\r\n <tr>\r\n <th colspan=\"3\">{{tableHeader}}</th>\r\n </tr>\r\n </thead>\r\n <!-- eslint-disable-next-line @angular-eslint/template/interactive-supports-focus -->\r\n <tbody nxtDateTimeCalendarBody\r\n role=\"grid\"\r\n [rows]=\"years\"\r\n [numCols]=\"3\"\r\n [cellRatio]=\"3 / 7\"\r\n [activeCell]=\"activeCell ?? 0\"\r\n [todayValue]=\"todayYear\"\r\n [selectedValues]=\"selectedYears\"\r\n [selectMode]=\"selectMode\"\r\n (keydown)=\"handleCalendarKeydown($event)\"\r\n (select)=\"selectCalendarCell($event)\"></tbody>\r\n</table>\r\n<button class=\"nxt-dt-control-button nxt-dt-control-arrow-button\"\r\n [disabled]=\"!nextEnabled()\"\r\n [attr.aria-label]=\"nextButtonLabel\"\r\n type=\"button\"\r\n tabindex=\"0\"\r\n (click)=\"nextYearList($event)\">\r\n <span class=\"nxt-dt-control-button-content\"\r\n tabindex=\"-1\">\r\n <!-- <editor-fold desc=\"SVG Arrow Right\"> -->\r\n <svg version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n x=\"0px\"\r\n y=\"0px\"\r\n viewBox=\"0 0 250.738 250.738\"\r\n style=\"enable-background:new 0 0 250.738 250.738;\"\r\n xml:space=\"preserve\">\r\n <path style=\"fill-rule:evenodd;clip-rule:evenodd;\"\r\n d=\"M191.75,111.689L84.766,5.291c-7.1-7.055-18.613-7.055-25.713,0\r\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\r\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\r\n C197.237,120.447,195.534,115.448,191.75,111.689z\" />\r\n </svg>\r\n <!-- </editor-fold> -->\r\n </span>\r\n</button>\r\n","import { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, HostBinding, Inject, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core'\r\nimport { Subscription } from 'rxjs'\r\nimport { DateTimeAdapter } from '../../class/date-time-adapter.class'\r\nimport { DateTimeFormats, NXT_DATE_TIME_FORMATS } from '../../class/date-time-format.class'\r\nimport { DateFilter, SelectMode } from '../../class/date-time.class'\r\nimport { CalendarCell, CalendarBodyComponent } from '../calendar-body/calendar-body.component'\r\n\r\n/** @internal */\r\nconst MONTHS_PER_YEAR = 12\r\n\r\n/** @internal */\r\nconst MONTHS_PER_ROW = 3\r\n\r\n@Component({\r\n selector: 'nxt-date-time-year-view',\r\n templateUrl: './calendar-year-view.component.html',\r\n styleUrls: ['./calendar-year-view.component.scss'],\r\n preserveWhitespaces: false,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class YearViewComponent<T> implements OnInit, AfterContentInit, OnDestroy {\r\n /**\r\n * The select mode of the picker;\r\n */\r\n private _selectMode: SelectMode = 'single'\r\n @Input()\r\n get selectMode(): SelectMode {\r\n return this._selectMode\r\n }\r\n\r\n set selectMode(val: SelectMode) {\r\n this._selectMode = val\r\n if (this.initiated) {\r\n this.generateMonthList()\r\n this.cdRef.markForCheck()\r\n }\r\n }\r\n\r\n /** The currently selected date */\r\n private _selected?: T\r\n @Input()\r\n get selected() {\r\n return this._selected\r\n }\r\n\r\n set selected(value: T | undefined) {\r\n value = this.dateTimeAdapter.deserialize(value)\r\n this._selected = this.getValidDate(value)\r\n this.setSelectedMonths()\r\n }\r\n\r\n private _selecteds = new Array<T | undefined>()\r\n @Input()\r\n get selecteds() {\r\n return this._selecteds\r\n }\r\n\r\n set selecteds(values: Array<T | undefined>) {\r\n this._selecteds = []\r\n values.forEach(val => {\r\n const value = this.dateTimeAdapter.deserialize(val)\r\n this._selecteds!.push(this.getValidDate(value))\r\n })\r\n\r\n this.setSelectedMonths()\r\n }\r\n\r\n private _pickerMoment?: T\r\n @Input()\r\n get pickerMoment() {\r\n return this._pickerMoment\r\n }\r\n\r\n set pickerMoment(value: T | undefined) {\r\n const oldMoment = this._pickerMoment\r\n value = this.dateTimeAdapter.deserialize(value)\r\n this._pickerMoment =\r\n this.getValidDate(value) || this.dateTimeAdapter.now()\r\n\r\n if (\r\n !this.hasSameYear(oldMoment, this._pickerMoment) &&\r\n this.initiated\r\n ) {\r\n this.generateMonthList()\r\n }\r\n }\r\n\r\n /**\r\n * A function used to filter which dates are selectable\r\n */\r\n private _dateTimeFilter?: DateFilter<T>\r\n @Input()\r\n get dateTimeFilter() {\r\n return this._dateTimeFilter\r\n }\r\n\r\n set dateTimeFilter(filter: DateFilter<T> | undefined) {\r\n this._dateTimeFilter = filter\r\n if (this.initiated) {\r\n this.generateMonthList()\r\n }\r\n }\r\n\r\n /** The minimum selectable date */\r\n private _minDate?: T\r\n @Input()\r\n get min() {\r\n return this._minDate\r\n }\r\n\r\n set min(value: T | undefined) {\r\n value = this.dateTimeAdapter.deserialize(value)\r\n this._minDate = this.getValidDate(value)\r\n if (this.initiated) {\r\n this.generateMonthList()\r\n }\r\n }\r\n\r\n /** The maximum selectable date */\r\n private _maxDate?: T\r\n @Input()\r\n get max() {\r\n return this._maxDate\r\n }\r\n\r\n set max(value: T | undefined) {\r\n value = this.dateTimeAdapter.deserialize(value)\r\n this._maxDate = this.getValidDate(value)\r\n if (this.initiated) {\r\n this.generateMonthList()\r\n }\r\n }\r\n\r\n private readonly monthNames: string[]\r\n\r\n private _months?: CalendarCell[][]\r\n get months() {\r\n return this._months\r\n }\r\n\r\n get activeCell(): number | undefined {\r\n if (this._pickerMoment) {\r\n return this.dateTimeAdapter.getMonth(this._pickerMoment)\r\n }\r\n return\r\n }\r\n\r\n get isInSingleMode(): boolean {\r\n return this.selectMode === 'single'\r\n }\r\n\r\n get isInRangeMode(): boolean {\r\n return (\r\n this.selectMode === 'range' ||\r\n this.selectMode === 'rangeFrom' ||\r\n this.selectMode === 'rangeTo'\r\n )\r\n }\r\n\r\n private localeSub?: Subscription\r\n\r\n private initiated = false\r\n\r\n todayMonth?: number\r\n\r\n /**\r\n * An array to hold all selectedDates' month value\r\n * the value is the month number in current year\r\n */\r\n selectedMonths?: Array<number | undefined>\r\n\r\n /**\r\n * Callback to invoke when a new month is selected\r\n */\r\n @Output()\r\n\r\n readonly change = new EventEmitter<T>()\r\n\r\n /**\r\n * Emits the selected year\r\n *\r\n * This doesn't imply a change on the selected date.\r\n */\r\n @Output()\r\n readonly monthSelected = new EventEmitter<T>()\r\n\r\n /** Emits when any date is activated */\r\n @Output()\r\n readonly pickerMomentChange = new EventEmitter<T>()\r\n\r\n /** Emits when use keyboard enter to select a calendar cell */\r\n @Output()\r\n readonly keyboardEnter = new EventEmitter<void>()\r\n\r\n /** The body of calendar table */\r\n @ViewChild(CalendarBodyComponent, { static: true })\r\n private calendarBodyElm?: CalendarBodyComponent\r\n\r\n /** @internal */\r\n @HostBinding('class.nxt-dt-calendar-view')\r\n get calendarView(): boolean {\r\n return true\r\n }\r\n\r\n constructor(\r\n private readonly cdRef: ChangeDetectorRef,\r\n private readonly dateTimeAdapter: DateTimeAdapter<T>,\r\n @Inject(NXT_DATE_TIME_FORMATS)\r\n private readonly dateTimeFormats: DateTimeFormats\r\n ) {\r\n this.monthNames = this.dateTimeAdapter.getMonthNames('short')\r\n }\r\n\r\n ngOnInit() {\r\n this.localeSub = this.dateTimeAdapter.localeChanges.subscribe(() => {\r\n this.generateMonthList()\r\n this.cdRef.markForCheck()\r\n })\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.generateMonthList()\r\n this.initiated = true\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.localeSub?.unsubscribe()\r\n this.localeSub = undefined\r\n }\r\n\r\n /**\r\n * Handle a calendarCell selected\r\n */\r\n selectCalendarCell(cell: CalendarCell): void {\r\n this.selectMonth(cell.value)\r\n }\r\n\r\n /**\r\n * Handle a new month selected\r\n */\r\n private selectMonth(month: number): void {\r\n const firstDateOfMonth = this.dateTimeAdapter.createDate(\r\n this.dateTimeAdapter.getYear(this.pickerMoment),\r\n month,\r\n 1\r\n )\r\n\r\n this.monthSelected.emit(firstDateOfMonth)\r\n\r\n const daysInMonth = this.dateTimeAdapter.getNumDaysInMonth(\r\n firstDateOfMonth\r\n )\r\n const result = this.dateTimeAdapter.createDate(\r\n this.dateTimeAdapter.getYear(this.pickerMoment),\r\n month,\r\n Math.min(\r\n daysInMonth,\r\n this.dateTimeAdapter.getDate(this.pickerMoment)\r\n ),\r\n this.dateTimeAdapter.getHours(this.pickerMoment),\r\n this.dateTimeAdapter.getMinutes(this.pickerMoment),\r\n this.dateTimeAdapter.getSeconds(this.pickerMoment)\r\n )\r\n\r\n this.change.emit(result)\r\n }\r\n\r\n /**\r\n * Handle keydown event on calendar body\r\n */\r\n handleCalendarKeydown(event: KeyboardEvent): void {\r\n let moment\r\n switch (event.code.toLowerCase()) {\r\n // minus 1 month\r\n case 'arrowleft':\r\n moment = this.dateTimeAdapter.addCalendarMonths(\r\n this.pickerMoment,\r\n -1\r\n )\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // add 1 month\r\n case 'arrowright':\r\n moment = this.dateTimeAdapter.addCalendarMonths(\r\n this.pickerMoment,\r\n 1\r\n )\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // minus 3 months\r\n case 'arrowup':\r\n moment = this.dateTimeAdapter.addCalendarMonths(\r\n this.pickerMoment,\r\n -3\r\n )\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // add 3 months\r\n case 'arrowdown':\r\n moment = this.dateTimeAdapter.addCalendarMonths(\r\n this.pickerMoment,\r\n 3\r\n )\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // move to first month of current year\r\n case 'home':\r\n moment = this.dateTimeAdapter.addCalendarMonths(\r\n this.pickerMoment,\r\n -this.dateTimeAdapter.getMonth(this.pickerMoment)\r\n )\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // move to last month of current year\r\n case 'end':\r\n moment = this.dateTimeAdapter.addCalendarMonths(\r\n this.pickerMoment,\r\n 11 - this.dateTimeAdapter.getMonth(this.pickerMoment)\r\n )\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // minus 1 year (or 10 year)\r\n case 'pageup':\r\n moment = this.dateTimeAdapter.addCalendarYears(\r\n this.pickerMoment,\r\n event.altKey ? -10 : -1\r\n )\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // add 1 year (or 10 year)\r\n case 'pagedown':\r\n moment = this.dateTimeAdapter.addCalendarYears(\r\n this.pickerMoment,\r\n event.altKey ? 10 : 1\r\n )\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // Select current month\r\n case 'enter':\r\n this.selectMonth(\r\n this.dateTimeAdapter.getMonth(this.pickerMoment)\r\n )\r\n this.keyboardEnter.emit()\r\n break\r\n default:\r\n return\r\n }\r\n\r\n this.focusActiveCell()\r\n event.preventDefault()\r\n }\r\n\r\n /**\r\n * Generate the calendar month list\r\n */\r\n private generateMonthList(): void {\r\n if (!this.pickerMoment) {\r\n return\r\n }\r\n\r\n this.setSelectedMonths()\r\n this.todayMonth = this.getMonthInCurrentYear(\r\n this.dateTimeAdapter.now()\r\n )\r\n\r\n this._months = []\r\n for (let i = 0; i < MONTHS_PER_YEAR / MONTHS_PER_ROW; i++) {\r\n const row = []\r\n\r\n for (let j = 0; j < MONTHS_PER_ROW; j++) {\r\n const month = j + i * MONTHS_PER_ROW\r\n const monthCell = this.createMonthCell(month)\r\n row.push(monthCell)\r\n }\r\n\r\n this._months.push(row)\r\n }\r\n\r\n return\r\n }\r\n\r\n /**\r\n * Creates an CalendarCell for the given month.\r\n */\r\n private createMonthCell(month: number): CalendarCell {\r\n const startDateOfMonth = this.dateTimeAdapter.createDate(\r\n this.dateTimeAdapter.getYear(this.pickerMoment),\r\n month,\r\n 1\r\n )\r\n const ariaLabel = this.dateTimeAdapter.format(\r\n startDateOfMonth,\r\n this.dateTimeFormats.monthYearA11yLabel\r\n )\r\n const cellClass = 'nxt-dt-month-' + month\r\n return new CalendarCell(\r\n month,\r\n this.monthNames[month],\r\n ariaLabel,\r\n this.isMonthEnabled(month),\r\n false,\r\n cellClass\r\n )\r\n }\r\n\r\n /**\r\n * Check if the given month is enable\r\n */\r\n private isMonthEnabled(month: number): boolean {\r\n const firstDateOfMonth = this.dateTimeAdapter.createDate(\r\n this.dateTimeAdapter.getYear(this.pickerMoment),\r\n month,\r\n 1\r\n )\r\n\r\n // If any date in the month is selectable,\r\n // we count the month as enable\r\n for (\r\n let date = firstDateOfMonth;\r\n this.dateTimeAdapter.getMonth(date) === month;\r\n date = this.dateTimeAdapter.addCalendarDays(date, 1)\r\n ) {\r\n if (\r\n !!date &&\r\n (!this.dateTimeFilter || this.dateTimeFilter(date, 'month')) &&\r\n (!this.min ||\r\n this.dateTimeAdapter.compare(date, this.min) >= 0) &&\r\n (!this.max ||\r\n this.dateTimeAdapter.compare(date, this.max) <= 0)\r\n ) {\r\n return true\r\n }\r\n }\r\n\r\n return false\r\n }\r\n\r\n /**\r\n * Gets the month in this year that the given Date falls on.\r\n * Returns undefined if the given Date is in another year.\r\n */\r\n private getMonthInCurrentYear(date?: T): number | undefined {\r\n if (this.getValidDate(date) && this.getValidDate(this._pickerMoment)) {\r\n const result = this.dateTimeAdapter.compareYear(\r\n date,\r\n this._pickerMoment\r\n )\r\n\r\n // < 0 : the given date's year is before pickerMoment's year, we return -1 as selected month value.\r\n // > 0 : the given date's year is after pickerMoment's year, we return 12 as selected month value.\r\n // 0 : the give date's year is same as the pickerMoment's year, we return the actual month value.\r\n if (result < 0) {\r\n return -1\r\n } else if (result > 0) {\r\n return 12\r\n } else {\r\n return this.dateTimeAdapter.getMonth(date)\r\n }\r\n }\r\n return\r\n }\r\n\r\n /**\r\n * Set the selectedMonths value\r\n * In single mode, it has only one value which represent the month the selected date in\r\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\r\n */\r\n private setSelectedMonths(): void {\r\n this.selectedMonths = []\r\n if (this.isInSingleMode && this.selected) {\r\n this.selectedMonths[0] = this.getMonthInCurrentYear(this.selected)\r\n }\r\n\r\n if (this.isInRangeMode && this.selecteds) {\r\n this.selectedMonths[0] = this.getMonthInCurrentYear(\r\n this.selecteds[0]\r\n )\r\n this.selectedMonths[1] = this.getMonthInCurrentYear(\r\n this.selecteds[1]\r\n )\r\n }\r\n }\r\n\r\n /**\r\n * Check the given dates are in the same year\r\n */\r\n private hasSameYear(dateLeft?: T, dateRight?: T) {\r\n return !!(\r\n dateLeft &&\r\n dateRight &&\r\n this.dateTimeAdapter.getYear(dateLeft) ===\r\n this.dateTimeAdapter.getYear(dateRight)\r\n )\r\n }\r\n\r\n /**\r\n * Get a valid date object\r\n */\r\n private getValidDate(obj: any): T | undefined {\r\n return this.dateTimeAdapter.isDateInstance(obj) &&\r\n this.dateTimeAdapter.isValid(obj)\r\n ? obj\r\n : undefined\r\n }\r\n\r\n private focusActiveCell() {\r\n this.calendarBodyElm?.focusActiveCell()\r\n }\r\n}\r\n","<table class=\"nxt-dt-calendar-table nxt-dt-calendar-year-table\">\r\n <thead class=\"nxt-dt-calendar-header\">\r\n <tr>\r\n <th class=\"nxt-dt-calendar-table-divider\"\r\n aria-hidden=\"true\"\r\n colspan=\"3\"></th>\r\n </tr>\r\n </thead>\r\n <!-- eslint-disable-next-line @angular-eslint/template/interactive-supports-focus -->\r\n <tbody nxtDateTimeCalendarBody\r\n role=\"grid\"\r\n [rows]=\"months\"\r\n [numCols]=\"3\"\r\n [cellRatio]=\"3 / 7\"\r\n [activeCell]=\"activeCell ?? 0\"\r\n [todayValue]=\"todayMonth??undefined\"\r\n [selectedValues]=\"selectedMonths\"\r\n [selectMode]=\"selectMode\"\r\n (keydown)=\"handleCalendarKeydown($event)\"\r\n (select)=\"selectCalendarCell($event)\">\r\n </tbody>\r\n</table>\r\n","import { AfterContentInit, AfterViewChecked, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostBinding, Inject, Input, NgZone, OnDestroy, OnInit, Output } from '@angular/core'\r\nimport { Subscription } from 'rxjs'\r\nimport { take } from 'rxjs/operators'\r\nimport { DateTimeAdapter } from '../../class/date-time-adapter.class'\r\nimport { DateTimeFormats, NXT_DATE_TIME_FORMATS } from '../../class/date-time-format.class'\r\nimport { DateFilter, SelectMode } from '../../class/date-time.class'\r\nimport { DateTimeIntl } from '../date-time-picker-intl.service'\r\n\r\n@Component({\r\n selector: 'nxt-date-time-calendar',\r\n templateUrl: './calendar.component.html',\r\n styleUrls: ['./calendar.component.scss'],\r\n preserveWhitespaces: false,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class CalendarComponent<T> implements OnInit, AfterContentInit, AfterViewChecked, OnDestroy {\r\n /**\r\n * Date filter for the month and year view\r\n */\r\n @Input()\r\n dateTimeFilter?: DateFilter<T>\r\n\r\n /**\r\n * Set the first day of week\r\n */\r\n @Input()\r\n firstDayOfWeek = 0\r\n\r\n /** The minimum selectable date */\r\n private _minDate?: T\r\n @Input()\r\n get min() {\r\n return this._minDate\r\n }\r\n\r\n set min(value: T | undefined) {\r\n value = this.dateTimeAdapter.deserialize(value)\r\n value = this.getValidDate(value)\r\n\r\n this._minDate = value\r\n ? this.dateTimeAdapter.createDate(\r\n this.dateTimeAdapter.getYear(value),\r\n this.dateTimeAdapter.getMonth(value),\r\n this.dateTimeAdapter.getDate(value)\r\n )\r\n : undefined\r\n }\r\n\r\n /** The maximum selectable date */\r\n private _maxDate?: T\r\n @Input()\r\n get max() {\r\n return this._maxDate\r\n }\r\n\r\n set max(value: T | undefined) {\r\n value = this.dateTimeAdapter.deserialize(value)\r\n value = this.getValidDate(value)\r\n\r\n this._maxDate = value\r\n ? this.dateTimeAdapter.createDate(\r\n this.dateTimeAdapter.getYear(value),\r\n this.dateTimeAdapter.getMonth(value),\r\n this.dateTimeAdapter.getDate(value)\r\n )\r\n : undefined\r\n }\r\n\r\n /** The current picker moment */\r\n private _pickerMoment?: T\r\n @Input()\r\n get pickerMoment() {\r\n return this._pickerMoment\r\n }\r\n\r\n set pickerMoment(value: T | undefined) {\r\n value = this.dateTimeAdapter.deserialize(value)\r\n this._pickerMoment =\r\n this.getValidDate(value) || this.dateTimeAdapter.now()\r\n }\r\n\r\n @Input()\r\n selectMode?: SelectMode\r\n\r\n /** The currently selected moment */\r\n private _selected?: T\r\n @Input()\r\n get selected() {\r\n return this._selected\r\n }\r\n\r\n set selected(value: T | undefined) {\r\n value = this.dateTimeAdapter.deserialize(value)\r\n this._selected = this.getValidDate(value)\r\n }\r\n\r\n private _selecteds = new Array<T | undefined>()\r\n @Input()\r\n get selecteds() {\r\n return this._selecteds\r\n }\r\n\r\n set selecteds(values: Array<T | undefined>) {\r\n this._selecteds = values.map(v => {\r\n v = this.dateTimeAdapter.deserialize(v)\r\n return this.getValidDate(v)\r\n })\r\n }\r\n\r\n /**\r\n * The view that the calendar should start in\r\n */\r\n @Input()\r\n startView: 'month' | 'year' | 'multi-years' = 'month'\r\n\r\n /**\r\n * Whether to hide dates in other months at the start or end of the current month\r\n */\r\n @Input()\r\n hideOtherMonths: boolean = false\r\n\r\n /** Emits when the currently picker moment changes */\r\n @Output()\r\n readonly pickerMomentChange = new EventEmitter<T>()\r\n\r\n /** Emits when the currently selected date changes */\r\n @Output()\r\n readonly selectedChange = new EventEmitter<T | undefined>()\r\n\r\n /** Emits when any date is selected */\r\n @Output()\r\n readonly userSelection = new EventEmitter<void>()\r\n\r\n /**\r\n * Emits the selected year\r\n *\r\n * This doesn't imply a change on the selected date.\r\n */\r\n @Output()\r\n readonly yearSelected = new EventEmitter<T>()\r\n\r\n /**\r\n * Emits the selected month\r\n *\r\n * This doesn't imply a change on the selected date.\r\n */\r\n @Output()\r\n readonly monthSelected = new EventEmitter<T>()\r\n\r\n get periodButtonText(): string {\r\n return this.isMonthView\r\n ? this.dateTimeAdapter.format(\r\n this.pickerMoment,\r\n this.dateTimeFormats.monthYearLabel\r\n )\r\n : this.dateTimeAdapter.getYearName(this.pickerMoment)\r\n }\r\n\r\n get periodButtonLabel(): string {\r\n return this.isMonthView\r\n ? this.pickerIntl.switchToMultiYearViewLabel\r\n : this.pickerIntl.switchToMonthViewLabel\r\n }\r\n\r\n get prevButtonLabel() {\r\n if (this._currentView === 'month') {\r\n return this.pickerIntl.prevMonthLabel\r\n } else if (this._currentView === 'year') {\r\n return this.pickerIntl.prevYearLabel\r\n }\r\n return\r\n }\r\n\r\n get nextButtonLabel() {\r\n if (this._currentView === 'month') {\r\n return this.pickerIntl.nextMonthLabel\r\n } else if (this._currentView === 'year') {\r\n return this.pickerIntl.nextYearLabel\r\n }\r\n return\r\n }\r\n\r\n private _currentView?: 'month' | 'year' | 'multi-years'\r\n get currentView() {\r\n return this._currentView\r\n }\r\n\r\n set currentView(view: 'month' | 'year' | 'multi-years' | undefined) {\r\n this._currentView = view\r\n this.moveFocusOnNextTick = true\r\n }\r\n\r\n get isInSingleMode(): boolean {\r\n return this.selectMode === 'single'\r\n }\r\n\r\n get isInRangeMode(): boolean {\r\n return (\r\n this.selectMode === 'range' ||\r\n this.selectMode === 'rangeFrom' ||\r\n this.selectMode === 'rangeTo'\r\n )\r\n }\r\n\r\n get showControlArrows(): boolean {\r\n return this._currentView !== 'multi-years'\r\n }\r\n\r\n get isMonthView() {\r\n return this._currentView === 'month'\r\n }\r\n\r\n /**\r\n * Date filter for the month and year view\r\n */\r\n dateTimeFilterForViews = (date?: T) => (\r\n !!date &&\r\n (!this.dateTimeFilter || this.dateTimeFilter(date, 'date')) &&\r\n (!this.min ||\r\n this.dateTimeAdapter.compare(date, this.min) >= 0) &&\r\n (!this.max ||\r\n this.dateTimeAdapter.compare(date, this.max) <= 0)\r\n )\r\n\r\n /**\r\n * Bind class 'nxt-dt-calendar' to host\r\n *\r\n * @internal\r\n */\r\n @HostBinding('class.nxt-dt-calendar')\r\n get calendarClass(): boolean {\r\n return true\r\n }\r\n\r\n private intlChangesSub?: Subscription\r\n\r\n /**\r\n * Used for scheduling that focus should be moved to the active cell on the next tick.\r\n * We need to schedule it, rather than do it immediately, because we have to wait\r\n * for Angular to re-evaluate the view children.\r\n */\r\n private moveFocusOnNextTick = false\r\n\r\n constructor(\r\n private readonly elmRef: ElementRef<HTMLElement>,\r\n private readonly pickerIntl: DateTimeIntl,\r\n private readonly ngZone: NgZone,\r\n private readonly cdRef: ChangeDetectorRef,\r\n private readonly dateTimeAdapter: DateTimeAdapter<T>,\r\n @Inject(NXT_DATE_TIME_FORMATS)\r\n private readonly dateTimeFormats: DateTimeFormats\r\n ) {\r\n this.intlChangesSub = this.pickerIntl.changes.subscribe(() => {\r\n this.cdRef.markForCheck()\r\n })\r\n }\r\n\r\n ngOnInit() { }\r\n\r\n ngAfterContentInit(): void {\r\n this._currentView = this.startView\r\n }\r\n\r\n ngAfterViewChecked() {\r\n if (this.moveFocusOnNextTick) {\r\n this.moveFocusOnNextTick = false\r\n this.focusActiveCell()\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.intlChangesSub?.unsubscribe()\r\n this.intlChangesSub = undefined\r\n }\r\n\r\n /**\r\n * Toggle between month view and year view\r\n */\r\n toggleViews(): void {\r\n this.currentView =\r\n this._currentView == 'month' ? 'multi-years' : 'month'\r\n }\r\n\r\n /**\r\n * Handles user clicks on the previous button.\r\n */\r\n previousClicked(): void {\r\n this.pickerMoment = this.isMonthView\r\n ? this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, -1)\r\n : this.dateTimeAdapter.addCalendarYears(this.pickerMoment, -1)\r\n\r\n this.pickerMomentChange.emit(this.pickerMoment)\r\n }\r\n\r\n /**\r\n * Handles user clicks on the next button.\r\n */\r\n nextClicked(): void {\r\n this.pickerMoment = this.isMonthView\r\n ? this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, 1)\r\n : this.dateTimeAdapter.addCalendarYears(this.pickerMoment, 1)\r\n\r\n this.pickerMomentChange.emit(this.pickerMoment)\r\n }\r\n\r\n dateSelected(date?: T): void {\r\n if (!this.dateTimeFilterForViews(date)) {\r\n return\r\n }\r\n\r\n this.selectedChange.emit(date)\r\n\r\n /*if ((this.isInSingleMode && !this.dateTimeAdapter.isSameDay(date, this.selected)) ||\r\n this.isInRangeMode) {\r\n this.selectedChange.emit(date);\r\n }*/\r\n }\r\n\r\n /**\r\n * Change the pickerMoment value and switch to a specific view\r\n */\r\n goToDateInView(\r\n date: T,\r\n view: 'month' | 'year' | 'multi-years'\r\n ): void {\r\n this.handlePickerMomentChange(date)\r\n this.currentView = view\r\n return\r\n }\r\n\r\n /**\r\n * Change the pickerMoment value\r\n */\r\n handlePickerMomentChange(date: T): void {\r\n this.pickerMoment = this.dateTimeAdapter.clampDate(\r\n date,\r\n this.min,\r\n this.max\r\n )\r\n this.pickerMomentChange.emit(this.pickerMoment)\r\n return\r\n }\r\n\r\n userSelected(): void {\r\n this.userSelection.emit()\r\n }\r\n\r\n /**\r\n * Whether the previous period button is enabled.\r\n */\r\n prevButtonEnabled(): boolean {\r\n return (\r\n !this.min || !this.isSameView(this.pickerMoment, this.min)\r\n )\r\n }\r\n\r\n /**\r\n * Whether the next period button is enabled.\r\n */\r\n nextButtonEnabled(): boolean {\r\n return (\r\n !this.max || !this.isSameView(this.pickerMoment, this.max)\r\n )\r\n }\r\n\r\n /**\r\n * Focus to the host element\r\n */\r\n focusActiveCell() {\r\n this.ngZone.runOutsideAngular(() => {\r\n this.ngZone.onStable\r\n .asObservable()\r\n .pipe(take(1))\r\n .subscribe(() => {\r\n this.elmRef.nativeElement\r\n ?.querySelector<HTMLElement>('.nxt-dt-calendar-cell-active')\r\n ?.focus()\r\n })\r\n })\r\n }\r\n\r\n selectYearInMultiYearView(normalizedYear: T): void {\r\n this.yearSelected.emit(normalizedYear)\r\n }\r\n\r\n selectMonthInYearView(normalizedMonth: T): void {\r\n this.monthSelected.emit(normalizedMonth)\r\n }\r\n\r\n /**\r\n * Whether the two dates represent the same view in the current view mode (month or year).\r\n */\r\n private isSameView(date1?: T, date2?: T): boolean {\r\n if (this._currentView === 'month') {\r\n return !!(\r\n date1 &&\r\n date2 &&\r\n this.dateTimeAdapter.getYear(date1) ===\r\n this.dateTimeAdapter.getYear(date2) &&\r\n this.dateTimeAdapter.getMonth(date1) ===\r\n this.dateTimeAdapter.getMonth(date2)\r\n )\r\n } else if (this._currentView === 'year') {\r\n return !!(\r\n date1 &&\r\n date2 &&\r\n this.dateTimeAdapter.getYear(date1) ===\r\n this.dateTimeAdapter.getYear(date2)\r\n )\r\n } else {\r\n return false\r\n }\r\n }\r\n\r\n /**\r\n * Get a valid date object\r\n */\r\n private getValidDate(obj: any): T | undefined {\r\n return this.dateTimeAdapter.isDateInstance(obj) &&\r\n this.dateTimeAdapter.isValid(obj)\r\n ? obj\r\n : undefined\r\n }\r\n}\r\n","<div class=\"nxt-dt-calendar-control\">\r\n <!-- focus when keyboard tab (http://kizu.ru/en/blog/keyboard-only-focus/#x) -->\r\n <button class=\"nxt-dt-control nxt-dt-control-button nxt-dt-control-arrow-button\"\r\n type=\"button\"\r\n tabindex=\"0\"\r\n [style.visibility]=\"showControlArrows? 'visible': 'hidden'\"\r\n [disabled]=\"!prevButtonEnabled()\"\r\n [attr.aria-label]=\"prevButtonLabel\"\r\n (click)=\"previousClicked()\">\r\n <span class=\"nxt-dt-control-content nxt-dt-control-button-content\"\r\n tabindex=\"-1\">\r\n <!-- <editor-fold desc=\"SVG Arrow Left\"> -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n version=\"1.1\"\r\n x=\"0px\"\r\n y=\"0px\"\r\n viewBox=\"0 0 250.738 250.738\"\r\n style=\"enable-background:new 0 0 250.738 250.738;\"\r\n xml:space=\"preserve\"\r\n width=\"100%\"\r\n height=\"100%\">\r\n <path style=\"fill-rule: evenodd; clip-rule: evenodd;\"\r\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\" />\r\n </svg>\r\n <!-- </editor-fold> -->\r\n </span>\r\n </button>\r\n <div class=\"nxt-dt-calendar-control-content\">\r\n <button class=\"nxt-dt-control nxt-dt-control-button nxt-dt-control-period-button\"\r\n type=\"button\"\r\n tabindex=\"0\"\r\n [attr.aria-label]=\"periodButtonLabel\"\r\n (click)=\"toggleViews()\">\r\n <span class=\"nxt-dt-control-content nxt-dt-control-button-content\"\r\n tabindex=\"-1\">\r\n {{periodButtonText}}\r\n\r\n <span class=\"nxt-dt-control-button-arrow\"\r\n [style.transform]=\"'rotate(' + (isMonthView? 0 : 180) +'deg)'\">\r\n <!-- <editor-fold desc=\"SVG Arrow\"> -->\r\n <svg version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n x=\"0px\"\r\n y=\"0px\"\r\n width=\"50%\"\r\n height=\"50%\"\r\n viewBox=\"0 0 292.362 292.362\"\r\n style=\"enable-background:new 0 0 292.362 292.362;\"\r\n xml:space=\"preserve\">\r\n <g>\r\n <path 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\r\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\r\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\" />\r\n </g>\r\n </svg>\r\n <!-- </editor-fold> -->\r\n </span>\r\n </span>\r\n </button>\r\n </div>\r\n <button class=\"nxt-dt-control nxt-dt-control-button nxt-dt-control-arrow-button\"\r\n type=\"button\"\r\n tabindex=\"0\"\r\n [style.visibility]=\"showControlArrows? 'visible': 'hidden'\"\r\n [disabled]=\"!nextButtonEnabled()\"\r\n [attr.aria-label]=\"nextButtonLabel\"\r\n (click)=\"nextClicked()\">\r\n <span class=\"nxt-dt-control-content nxt-dt-control-button-content\"\r\n tabindex=\"-1\">\r\n <!-- <editor-fold desc=\"SVG Arrow Right\"> -->\r\n <svg version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n x=\"0px\"\r\n y=\"0px\"\r\n viewBox=\"0 0 250.738 250.738\"\r\n style=\"enable-background:new 0 0 250.738 250.738;\"\r\n xml:space=\"preserve\">\r\n <path style=\"fill-rule:evenodd;clip-rule:evenodd;\"\r\n d=\"M191.75,111.689L84.766,5.291c-7.1-7.055-18.613-7.055-25.713,0\r\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\r\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\r\n C197.237,120.447,195.534,115.448,191.75,111.689z\" />\r\n </svg>\r\n <!-- </editor-fold> -->\r\n </span>\r\n </button>\r\n</div>\r\n<div class=\"nxt-dt-calendar-main\"\r\n cdkMonitorSubtreeFocus\r\n [ngSwitch]=\"currentView\"\r\n tabindex=\"-1\">\r\n <nxt-date-time-month-view *ngSwitchCase=\"'month'\"\r\n [pickerMoment]=\"pickerMoment\"\r\n [firstDayOfWeek]=\"firstDayOfWeek\"\r\n [selected]=\"selected\"\r\n [selecteds]=\"selecteds\"\r\n [selectMode]=\"selectMode ?? 'single'\"\r\n [min]=\"min\"\r\n [max]=\"max\"\r\n [dateTimeFilter]=\"dateTimeFilter\"\r\n [hideOtherMonths]=\"hideOtherMonths\"\r\n (pickerMomentChange)=\"handlePickerMomentChange($event)\"\r\n (selectedChange)=\"dateSelected($event)\"\r\n (userSelection)=\"userSelected()\"></nxt-date-time-month-view>\r\n\r\n <nxt-date-time-year-view *ngSwitchCase=\"'year'\"\r\n [pickerMoment]=\"pickerMoment\"\r\n [selected]=\"selected\"\r\n [selecteds]=\"selecteds\"\r\n [selectMode]=\"selectMode ?? 'single'\"\r\n [min]=\"min\"\r\n [max]=\"max\"\r\n [dateTimeFilter]=\"dateTimeFilter\"\r\n (keyboardEnter)=\"focusActiveCell()\"\r\n (pickerMomentChange)=\"handlePickerMomentChange($event)\"\r\n (monthSelected)=\"selectMonthInYearView($event)\"\r\n (change)=\"goToDateInView($event, 'month')\"></nxt-date-time-year-view>\r\n\r\n <nxt-date-time-multi-year-view *ngSwitchCase=\"'multi-years'\"\r\n [pickerMoment]=\"pickerMoment\"\r\n [selected]=\"selected\"\r\n [selecteds]=\"selecteds\"\r\n [selectMode]=\"selectMode ?? 'single'\"\r\n [min]=\"min\"\r\n [max]=\"max\"\r\n [dateTimeFilter]=\"dateTimeFilter\"\r\n (keyboardEnter)=\"focusActiveCell()\"\r\n (pickerMomentChange)=\"handlePickerMomentChange($event)\"\r\n (yearSelected)=\"selectYearInMultiYearView($event)\"\r\n (change)=\"goToDateInView($event, 'year')\"></nxt-date-time-multi-year-view>\r\n</div>\r\n","import { Directive, EventEmitter, Inject, Input } from '@angular/core'\r\nimport { DateTimeAdapter } from './date-time-adapter.class'\r\nimport { DateTimeFormats, NXT_DATE_TIME_FORMATS } from './date-time-format.class'\r\n\r\n/** @internal */\r\nlet nextUniqueId = 0\r\n\r\nexport type PickerType = 'both' | 'calendar' | 'timer'\r\n\r\nexport type PickerMode = 'popup' | 'dialog' | 'inline'\r\n\r\nexport type SelectMode = 'single' | 'range' | 'rangeFrom' | 'rangeTo'\r\n\r\nexport type RenderItem = 'year' | 'month' | 'date'\r\n\r\nexport type ViewType = 'month' | 'year' | 'multi-years'\r\n\r\nexport type DateFilter<T> = (date?: T, forRender?: RenderItem) => boolean\r\n\r\n@Directive()\r\nexport abstract class DateTimeDirective<T> {\r\n /**\r\n * When true, shows a timer to configure the seconds value\r\n */\r\n @Input() showSecondsTimer = false\r\n\r\n /**\r\n * When true, the timer will be in 12-hour format mode\r\n */\r\n @Input() hour12Timer = false\r\n\r\n /**\r\n * The view that the calendar should start on\r\n */\r\n @Input() startView: ViewType = 'month'\r\n\r\n /**\r\n * Hours to change per step\r\n */\r\n @Input() stepHour = 1\r\n\r\n /**\r\n * Minutes to change per step\r\n */\r\n @Input() stepMinute = 1\r\n\r\n /**\r\n * Seconds to change per step\r\n */\r\n @Input() stepSecond = 1\r\n\r\n /**\r\n * Set the first day of week\r\n *\r\n * Valid values are from 0 [Sunday] to 6 [Saturday]\r\n */\r\n @Input() firstDayOfWeek = 0\r\n\r\n /**\r\n * If true, don't show dates from preious / next month on the calendar month view\r\n */\r\n @Input() hideOtherMonths = false\r\n\r\n readonly id = `nxt-dt-picker-${nextUniqueId++}`\r\n\r\n abstract get selected(): T | undefined\r\n\r\n abstract get selecteds(): Array<T | undefined>\r\n\r\n abstract get dateTimeFilter(): DateFilter<T> | undefined\r\n\r\n abstract get max(): T | undefined\r\n\r\n abstract get min(): T | undefined\r\n\r\n abstract get selectMode(): SelectMode | undefined\r\n\r\n abstract get startAt(): T | undefined\r\n\r\n abstract get isOpen(): boolean\r\n\r\n abstract get pickerMode(): PickerMode\r\n\r\n abstract get pickerType(): PickerType\r\n\r\n abstract get isInSingleMode(): boolean\r\n\r\n abstract get isInRangeMode(): boolean\r\n\r\n abstract select(date: T | Array<T | undefined>): void\r\n\r\n abstract yearSelected: EventEmitter<T>\r\n\r\n abstract monthSelected: EventEmitter<T>\r\n\r\n abstract selectYear(normalizedYear: T): void\r\n\r\n abstract selectMonth(normalizedMonth: T): void\r\n\r\n get formatString(): string {\r\n return this.pickerType === 'both'\r\n ? this.dateTimeFormats.fullPickerInput\r\n : this.pickerType === 'calendar'\r\n ? this.dateTimeFormats.datePickerInput\r\n : this.dateTimeFormats.timePickerInput\r\n }\r\n\r\n /**\r\n * Date Time Checker to check if the give dateTime is selectable\r\n */\r\n dateTimeChecker = (dateTime: T | undefined) => (\r\n !!dateTime &&\r\n (!this.dateTimeFilter || this.dateTimeFilter(dateTime)) &&\r\n (!this.min || this.dateTimeAdapter.compare(dateTime, this.min) >= 0) &&\r\n (!this.max || this.dateTimeAdapter.compare(dateTime, this.max) <= 0)\r\n )\r\n\r\n get disabled(): boolean {\r\n return false\r\n }\r\n\r\n constructor(\r\n protected readonly dateTimeAdapter: DateTimeAdapter<T>,\r\n @Inject(NXT_DATE_TIME_FORMATS)\r\n protected readonly dateTimeFormats: DateTimeFormats\r\n ) { }\r\n\r\n protected getValidDate(obj: any): T | undefined {\r\n return this.dateTimeAdapter.isDateInstance(obj) &&\r\n this.dateTimeAdapter.isValid(obj)\r\n ? obj\r\n : undefined\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core'\r\n\r\n/** @internal */\r\n@Pipe({\r\n name: 'numberFixedLen',\r\n standalone: false\r\n})\r\nexport class NumberFixedLenPipe implements PipeTransform {\r\n transform(num: number | undefined, len: number | undefined) {\r\n if (num == undefined || !Number.isFinite(num))\r\n return undefined\r\n\r\n const number = Math.floor(num)\r\n\r\n if (len == undefined || !Number.isFinite(len))\r\n return number\r\n\r\n return number.toFixed(0).padStart(Math.floor(len), '0')\r\n }\r\n}\r\n","import { coerceNumberProperty } from '@angular/cdk/coercion'\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, OnDestroy, OnInit, Output } from '@angular/core'\r\nimport { Subject, Subscription } from 'rxjs'\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators'\r\n\r\n/** @internal */\r\n@Component({\r\n selector: 'nxt-date-time-timer-box',\r\n templateUrl: './timer-box.component.html',\r\n styleUrls: ['./timer-box.component.scss'],\r\n preserveWhitespaces: false,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\n\r\nexport class TimerBoxComponent implements OnInit, OnDestroy {\r\n\r\n @Input() showDivider = false\r\n\r\n @Input() upBtnAriaLabel?: string\r\n\r\n @Input() upBtnDisabled: boolean = false\r\n\r\n @Input() downBtnAriaLabel?: string\r\n\r\n @Input() downBtnDisabled: boolean = false\r\n\r\n /**\r\n * Value would be displayed in the box\r\n * If it is undefiend, the box would display [value]\r\n */\r\n @Input() boxValue?: number\r\n\r\n @Input() value: number = 0\r\n\r\n @Input() min: number = 0\r\n\r\n @Input() max: number = 0\r\n\r\n @Input() step = 1\r\n\r\n @Input() inputLabel?: string\r\n\r\n @Output() valueChange = new EventEmitter<number>()\r\n\r\n @Output() inputChange = new EventEmitter<number>()\r\n\r\n private inputStream = new Subject<string>()\r\n\r\n private inputStreamSub?: Subscription\r\n\r\n get displayValue(): number {\r\n return this.boxValue || this.value\r\n }\r\n\r\n /** @internal */\r\n @HostBinding('class.nxt-dt-timer-box')\r\n get timerBoxClass(): boolean {\r\n return true\r\n }\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnInit() {\r\n this.inputStreamSub = this.inputStream.pipe(\r\n debounceTime(500),\r\n distinctUntilChanged()\r\n ).subscribe((val: string) => {\r\n if (val) {\r\n const inputValue = coerceNumberProperty(val, 0)\r\n this.updateValueViaInput(inputValue)\r\n }\r\n })\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.inputStreamSub?.unsubscribe()\r\n this.inputStreamSub = undefined\r\n }\r\n\r\n upBtnClicked(): void {\r\n this.updateValue(this.value + this.step)\r\n }\r\n\r\n downBtnClicked(): void {\r\n this.updateValue(this.value - this.step)\r\n }\r\n\r\n handleInputChange(val: string): void {\r\n this.inputStream.next(val)\r\n }\r\n\r\n private updateValue(value: number): void {\r\n this.valueChange.emit(value)\r\n }\r\n\r\n private updateValueViaInput(value: number): void {\r\n if (value > this.max || value < this.min) {\r\n return\r\n }\r\n this.inputChange.emit(value)\r\n }\r\n}\r\n","<div *ngIf=\"showDivider\"\r\n class=\"nxt-dt-timer-divider\"\r\n aria-hidden=\"true\"></div>\r\n<button class=\"nxt-dt-control-button nxt-dt-control-arrow-button\"\r\n type=\"button\"\r\n tabindex=\"-1\"\r\n [disabled]=\"upBtnDisabled\"\r\n [attr.aria-label]=\"upBtnAriaLabel\"\r\n (click)=\"upBtnClicked()\">\r\n <span class=\"nxt-dt-control-button-content\"\r\n tabindex=\"-1\">\r\n <!-- <editor-fold desc=\"SVG Arrow Up\"> -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n version=\"1.1\"\r\n x=\"0px\"\r\n y=\"0px\"\r\n viewBox=\"0 0 451.847 451.846\"\r\n style=\"enable-background:new 0 0 451.847 451.846;\"\r\n xml:space=\"preserve\"\r\n width=\"100%\"\r\n height=\"100%\">\r\n <path 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\r\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\r\n c6.18-6.174,14.271-9.259,22.369-9.259C234.018,97.141,242.115,100.232,248.292,106.406z\" />\r\n </svg>\r\n <!-- </editor-fold> -->\r\n </span>\r\n</button>\r\n<label class=\"nxt-dt-timer-content\">\r\n <input class=\"nxt-dt-timer-input\"\r\n maxlength=\"2\"\r\n [value]=\"displayValue | numberFixedLen : 2\"\r\n (input)=\"handleInputChange(valueInput.value)\"\r\n #valueInput>\r\n <span class=\"nxt-hidden-accessible\">{{inputLabel}}</span>\r\n</label>\r\n<button class=\"nxt-dt-control-button nxt-dt-control-arrow-button\"\r\n type=\"button\"\r\n tabindex=\"-1\"\r\n [disabled]=\"downBtnDisabled\"\r\n [attr.aria-label]=\"downBtnAriaLabel\"\r\n (click)=\"downBtnClicked()\">\r\n <span class=\"nxt-dt-control-button-content\"\r\n tabindex=\"-1\">\r\n <!-- <editor-fold desc=\"SVG Arrow Down\"> -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n version=\"1.1\"\r\n x=\"0px\"\r\n y=\"0px\"\r\n viewBox=\"0 0 451.847 451.846\"\r\n style=\"enable-background:new 0 0 451.847 451.846;\"\r\n xml:space=\"preserve\"\r\n width=\"100%\"\r\n height=\"100%\">\r\n <path 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\r\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\r\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\" />\r\n </svg>\r\n <!-- </editor-fold> -->\r\n </span>\r\n</button>\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostBinding, Input, NgZone, OnInit, Output } from '@angular/core'\r\nimport { take } from 'rxjs/operators'\r\nimport { DateTimeAdapter } from '../../class/date-time-adapter.class'\r\nimport { DateTimeIntl } from '../date-time-picker-intl.service'\r\n\r\n@Component({\r\n selector: 'nxt-date-time-timer',\r\n templateUrl: './timer.component.html',\r\n styleUrls: ['./timer.component.scss'],\r\n preserveWhitespaces: false,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class TimerComponent<T> implements OnInit {\r\n /** The current picker moment */\r\n private _pickerMoment?: T\r\n @Input()\r\n get pickerMoment() {\r\n return this._pickerMoment\r\n }\r\n\r\n set pickerMoment(value: T | undefined) {\r\n value = this.dateTimeAdapter.deserialize(value)\r\n this._pickerMoment = this.getValidDate(value) || this.dateTimeAdapter.now()\r\n }\r\n\r\n /** The minimum selectable date time */\r\n private _minDateTime?: T\r\n @Input()\r\n get min() {\r\n return this._minDateTime\r\n }\r\n\r\n set min(value: T | undefined) {\r\n value = this.dateTimeAdapter.deserialize(value)\r\n this._minDateTime = this.getValidDate(value)\r\n }\r\n\r\n /** The maximum selectable date time */\r\n private _maxDateTime?: T\r\n @Input()\r\n get max() {\r\n return this._maxDateTime\r\n }\r\n\r\n set max(value: T | undefined) {\r\n value = this.dateTimeAdapter.deserialize(value)\r\n this._maxDateTime = this.getValidDate(value)\r\n }\r\n\r\n private isPM: boolean = false // a flag indicates the current timer moment is in PM or AM\r\n\r\n /**\r\n * Whether to show the second's timer\r\n */\r\n @Input()\r\n showSecondsTimer: boolean = false\r\n\r\n /**\r\n * Whether the timer is in hour12 format\r\n */\r\n @Input()\r\n hour12Timer: boolean = false\r\n\r\n /**\r\n * Hours to change per step\r\n */\r\n @Input()\r\n stepHour = 1\r\n\r\n /**\r\n * Minutes to change per step\r\n */\r\n @Input()\r\n stepMinute = 1\r\n\r\n /**\r\n * Seconds to change per step\r\n */\r\n @Input()\r\n stepSecond = 1\r\n\r\n get hourValue(): number {\r\n return this.dateTimeAdapter.getHours(this.pickerMoment)\r\n }\r\n\r\n /**\r\n * The value would be displayed in hourBox.\r\n * We need this because the value displayed in hourBox it not\r\n * the same as the hourValue when the timer is in hour12Timer mode.\r\n */\r\n get hourBoxValue(): number {\r\n let hours = this.hourValue\r\n\r\n if (!this.hour12Timer) {\r\n return hours\r\n } else {\r\n if (hours === 0) {\r\n hours = 12\r\n this.isPM = false\r\n } else if (hours > 0 && hours < 12) {\r\n this.isPM = false\r\n } else if (hours === 12) {\r\n this.isPM = true\r\n } else if (hours > 12 && hours < 24) {\r\n hours = hours - 12\r\n this.isPM = true\r\n }\r\n\r\n return hours\r\n }\r\n }\r\n\r\n get minuteValue(): number {\r\n return this.dateTimeAdapter.getMinutes(this.pickerMoment)\r\n }\r\n\r\n get secondValue(): number {\r\n return this.dateTimeAdapter.getSeconds(this.pickerMoment)\r\n }\r\n\r\n get upHourButtonLabel(): string {\r\n return this.pickerIntl.upHourLabel\r\n }\r\n\r\n get downHourButtonLabel(): string {\r\n return this.pickerIntl.downHourLabel\r\n }\r\n\r\n get upMinuteButtonLabel(): string {\r\n return this.pickerIntl.upMinuteLabel\r\n }\r\n\r\n get downMinuteButtonLabel(): string {\r\n return this.pickerIntl.downMinuteLabel\r\n }\r\n\r\n get upSecondButtonLabel(): string {\r\n return this.pickerIntl.upSecondLabel\r\n }\r\n\r\n get downSecondButtonLabel(): string {\r\n return this.pickerIntl.downSecondLabel\r\n }\r\n\r\n get hour12ButtonLabel(): string {\r\n return this.isPM\r\n ? this.pickerIntl.hour12PMLabel\r\n : this.pickerIntl.hour12AMLabel\r\n }\r\n\r\n @Output()\r\n readonly selectedChange = new EventEmitter<T>()\r\n\r\n /** @internal */\r\n @HostBinding('class.nxt-dt-timer')\r\n get timerClass(): boolean {\r\n return true\r\n }\r\n\r\n /** @internal */\r\n @HostBinding('attr.tabindex')\r\n get timeTabIndex(): number {\r\n return -1\r\n }\r\n\r\n constructor(\r\n private readonly ngZone: NgZone,\r\n private readonly elmRef: ElementRef<HTMLElement>,\r\n private readonly pickerIntl: DateTimeIntl,\r\n private readonly cdRef: ChangeDetectorRef,\r\n private readonly dateTimeAdapter: DateTimeAdapter<T>\r\n ) { }\r\n\r\n ngOnInit() { }\r\n\r\n /**\r\n * Focus to the host element\r\n */\r\n focus() {\r\n this.ngZone.runOutsideAngular(() => {\r\n this.ngZone.onStable\r\n .asObservable()\r\n .pipe(take(1))\r\n .subscribe(() => {\r\n this.elmRef.nativeElement.focus()\r\n })\r\n })\r\n }\r\n\r\n /**\r\n * Set the hour value via typing into timer box input\r\n * We need this to handle the hour value when the timer is in hour12 mode\r\n */\r\n setHourValueViaInput(hours: number): void {\r\n if (this.hour12Timer && this.isPM && hours >= 1 && hours <= 11) {\r\n hours = hours + 12\r\n } else if (this.hour12Timer && !this.isPM && hours === 12) {\r\n hours = 0\r\n }\r\n\r\n this.setHourValue(hours)\r\n }\r\n\r\n setHourValue(hours: number): void {\r\n const m = this.dateTimeAdapter.setHours(this.pickerMoment, hours)\r\n this.selectedChange.emit(m)\r\n this.cdRef.markForCheck()\r\n }\r\n\r\n setMinuteValue(minutes: number): void {\r\n const m = this.dateTimeAdapter.setMinutes(this.pickerMoment, minutes)\r\n this.selectedChange.emit(m)\r\n this.cdRef.markForCheck()\r\n }\r\n\r\n setSecondValue(seconds: number): void {\r\n const m = this.dateTimeAdapter.setSeconds(this.pickerMoment, seconds)\r\n this.selectedChange.emit(m)\r\n this.cdRef.markForCheck()\r\n }\r\n\r\n setMeridiem(event: any): void {\r\n this.isPM = !this.isPM\r\n\r\n let hours = this.hourValue\r\n if (this.isPM) {\r\n hours = hours + 12\r\n } else {\r\n hours = hours - 12\r\n }\r\n\r\n if (hours >= 0 && hours <= 23) {\r\n this.setHourValue(hours)\r\n }\r\n\r\n this.cdRef.markForCheck()\r\n event.preventDefault()\r\n }\r\n\r\n /**\r\n * Check if the up hour button is enabled\r\n */\r\n upHourEnabled(): boolean {\r\n return (\r\n !this.max ||\r\n this.compareHours(this.stepHour, this.max) < 1\r\n )\r\n }\r\n\r\n /**\r\n * Check if the down hour button is enabled\r\n */\r\n downHourEnabled(): boolean {\r\n return (\r\n !this.min ||\r\n this.compareHours(-this.stepHour, this.min) > -1\r\n )\r\n }\r\n\r\n /**\r\n * Check if the up minute button is enabled\r\n */\r\n upMinuteEnabled(): boolean {\r\n return (\r\n !this.max ||\r\n this.compareMinutes(this.stepMinute, this.max) < 1\r\n )\r\n }\r\n\r\n /**\r\n * Check if the down minute button is enabled\r\n */\r\n downMinuteEnabled(): boolean {\r\n return (\r\n !this.min ||\r\n this.compareMinutes(-this.stepMinute, this.min) > -1\r\n )\r\n }\r\n\r\n /**\r\n * Check if the up second button is enabled\r\n */\r\n upSecondEnabled(): boolean {\r\n return (\r\n !this.max ||\r\n this.compareSeconds(this.stepSecond, this.max) < 1\r\n )\r\n }\r\n\r\n /**\r\n * Check if the down second button is enabled\r\n */\r\n downSecondEnabled(): boolean {\r\n return (\r\n !this.min ||\r\n this.compareSeconds(-this.stepSecond, this.min) > -1\r\n )\r\n }\r\n\r\n /**\r\n * PickerMoment's hour value +/- certain amount and compare it to the give date\r\n * 1 is after the comparedDate\r\n * -1 is before the comparedDate\r\n * 0 is equal the comparedDate\r\n */\r\n private compareHours(amount: number, comparedDate: T): number {\r\n const hours = this.dateTimeAdapter.getHours(this.pickerMoment) + amount\r\n const result = this.dateTimeAdapter.setHours(this.pickerMoment, hours)\r\n return this.dateTimeAdapter.compare(result, comparedDate)\r\n }\r\n\r\n /**\r\n * PickerMoment's minute value +/- certain amount and compare it to the give date\r\n * 1 is after the comparedDate\r\n * -1 is before the comparedDate\r\n * 0 is equal the comparedDate\r\n */\r\n private compareMinutes(amount: number, comparedDate: T): number {\r\n const minutes =\r\n this.dateTimeAdapter.getMinutes(this.pickerMoment) + amount\r\n const result = this.dateTimeAdapter.setMinutes(\r\n this.pickerMoment,\r\n minutes\r\n )\r\n return this.dateTimeAdapter.compare(result, comparedDate)\r\n }\r\n\r\n /**\r\n * PickerMoment's second value +/- certain amount and compare it to the give date\r\n * 1 is after the comparedDate\r\n * -1 is before the comparedDate\r\n * 0 is equal the comparedDate\r\n */\r\n private compareSeconds(amount: number, comparedDate: T): number {\r\n const seconds =\r\n this.dateTimeAdapter.getSeconds(this.pickerMoment) + amount\r\n const result = this.dateTimeAdapter.setSeconds(\r\n this.pickerMoment,\r\n seconds\r\n )\r\n return this.dateTimeAdapter.compare(result, comparedDate)\r\n }\r\n\r\n /**\r\n * Get a valid date object\r\n */\r\n private getValidDate(obj: any): T | undefined {\r\n return this.dateTimeAdapter.isDateInstance(obj) &&\r\n this.dateTimeAdapter.isValid(obj)\r\n ? obj\r\n : undefined\r\n }\r\n}\r\n","<nxt-date-time-timer-box [upBtnAriaLabel]=\"upHourButtonLabel\"\r\n [downBtnAriaLabel]=\"downHourButtonLabel\"\r\n [upBtnDisabled]=\"!upHourEnabled()\"\r\n [downBtnDisabled]=\"!downHourEnabled()\"\r\n [boxValue]=\"hourBoxValue\"\r\n [value]=\"hourValue\"\r\n [min]=\"0\"\r\n [max]=\"23\"\r\n [step]=\"stepHour\"\r\n inputLabel=\"Hour\"\r\n (inputChange)=\"setHourValueViaInput($event)\"\r\n (valueChange)=\"setHourValue($event)\"></nxt-date-time-timer-box>\r\n<nxt-date-time-timer-box [showDivider]=\"true\"\r\n [upBtnAriaLabel]=\"upMinuteButtonLabel\"\r\n [downBtnAriaLabel]=\"downMinuteButtonLabel\"\r\n [upBtnDisabled]=\"!upMinuteEnabled()\"\r\n [downBtnDisabled]=\"!downMinuteEnabled()\"\r\n [value]=\"minuteValue\"\r\n [min]=\"0\"\r\n [max]=\"59\"\r\n [step]=\"stepMinute\"\r\n inputLabel=\"Minute\"\r\n (inputChange)=\"setMinuteValue($event)\"\r\n (valueChange)=\"setMinuteValue($event)\"></nxt-date-time-timer-box>\r\n<nxt-date-time-timer-box *ngIf=\"showSecondsTimer\"\r\n [showDivider]=\"true\"\r\n [upBtnAriaLabel]=\"upSecondButtonLabel\"\r\n [downBtnAriaLabel]=\"downSecondButtonLabel\"\r\n [upBtnDisabled]=\"!upSecondEnabled()\"\r\n [downBtnDisabled]=\"!downSecondEnabled()\"\r\n [value]=\"secondValue\"\r\n [min]=\"0\"\r\n [max]=\"59\"\r\n [step]=\"stepSecond\"\r\n inputLabel=\"Second\"\r\n (inputChange)=\"setSecondValue($event)\"\r\n (valueChange)=\"setSecondValue($event)\"></nxt-date-time-timer-box>\r\n\r\n<div *ngIf=\"hour12Timer\"\r\n class=\"nxt-dt-timer-hour12\">\r\n <button class=\"nxt-dt-control-button nxt-dt-timer-hour12-box\"\r\n type=\"button\"\r\n tabindex=\"0\"\r\n (click)=\"setMeridiem($event)\">\r\n <span class=\"nxt-dt-control-button-content\"\r\n tabindex=\"-1\">\r\n {{hour12ButtonLabel}}\r\n </span>\r\n </button>\r\n</div>\r\n","import { animate, animateChild, AnimationTriggerMetadata, group, query, state, style, transition, trigger } from '@angular/animations'\r\n\r\n/** @internal */\r\nexport const dateTimePickerAnimations: {\r\n readonly transformPicker: AnimationTriggerMetadata\r\n readonly fadeInPicker: AnimationTriggerMetadata\r\n} = {\r\n\r\n transformPicker: trigger('transformPicker', [\r\n state('void', style({ opacity: 0, transform: 'scale(1, 0)' })),\r\n state('enter', style({ opacity: 1, transform: 'scale(1, 1)' })),\r\n transition('void => enter', group([\r\n query('@fadeInPicker', animateChild(), { optional: true }),\r\n animate('400ms cubic-bezier(0.25, 0.8, 0.25, 1)')\r\n ])),\r\n transition('enter => void', animate('100ms linear', style({ opacity: 0 })))\r\n ]),\r\n\r\n fadeInPicker: trigger('fadeInPicker', [\r\n state('enter', style({ opacity: 1 })),\r\n state('void', style({ opacity: 0 })),\r\n transition('void => enter', animate('400ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)'))\r\n ])\r\n}\r\n","import { AnimationEvent } from '@angular/animations'\r\nimport { AfterContentInit, AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, HostBinding, HostListener, OnInit, ViewChild } from '@angular/core'\r\nimport { Subject } from 'rxjs'\r\nimport { DateTimeAdapter } from '../../class/date-time-adapter.class'\r\nimport { DateTimeDirective } from '../../class/date-time.class'\r\nimport { CalendarComponent } from '../calendar/calendar.component'\r\nimport { DateTimeIntl } from '../date-time-picker-intl.service'\r\nimport { TimerComponent } from '../timer/timer.component'\r\nimport { dateTimePickerAnimations } from './date-time-picker-container.animations'\r\n\r\n/** @internal */\r\n@Component({\r\n selector: 'nxt-date-time-container',\r\n templateUrl: './date-time-picker-container.component.html',\r\n styleUrls: ['./date-time-picker-container.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n preserveWhitespaces: false,\r\n animations: [\r\n dateTimePickerAnimations.transformPicker,\r\n dateTimePickerAnimations.fadeInPicker\r\n ],\r\n standalone: false\r\n})\r\nexport class DateTimeContainerComponent<T> implements OnInit, AfterContentInit, AfterViewInit {\r\n\r\n @ViewChild(CalendarComponent)\r\n calendar?: CalendarComponent<T>\r\n\r\n @ViewChild(TimerComponent)\r\n timer?: TimerComponent<T>\r\n\r\n picker?: DateTimeDirective<T>\r\n activeSelectedIndex = 0 // The current active SelectedIndex in range select mode (0: 'from', 1: 'to')\r\n\r\n /**\r\n * Stream emits when try to hide picker\r\n */\r\n private readonly hidePicker$ = new Subject<void>()\r\n\r\n readonly hidePickerStream = this.hidePicker$.asObservable()\r\n\r\n /**\r\n * Stream emits when try to confirm the selected value\r\n */\r\n private readonly confirmSelected$ = new Subject<Event>()\r\n\r\n readonly confirmSelectedStream = this.confirmSelected$.asObservable()\r\n\r\n private readonly pickerOpened$ = new Subject<void>()\r\n\r\n readonly pickerOpenedStream = this.pickerOpened$.asObservable()\r\n\r\n /**\r\n * The current picker moment. This determines which time period is shown and which date is\r\n * highlighted when using keyboard navigation.\r\n */\r\n private _clamPickerMoment?: T\r\n\r\n get pickerMoment() {\r\n return this._clamPickerMoment\r\n }\r\n\r\n set pickerMoment(value: T | undefined) {\r\n if (value) {\r\n this._clamPickerMoment = this.dateTimeAdapter.clampDate(\r\n value,\r\n this.picker?.min,\r\n this.picker?.max\r\n )\r\n }\r\n this.cdRef.markForCheck()\r\n }\r\n\r\n get pickerType() {\r\n return this.picker?.pickerType\r\n }\r\n\r\n get cancelLabel(): string {\r\n return this.pickerIntl.cancelBtnLabel\r\n }\r\n\r\n get setLabel(): string {\r\n return this.pickerIntl.setBtnLabel\r\n }\r\n\r\n /**\r\n * The range 'from' label\r\n */\r\n get fromLabel(): string {\r\n return this.pickerIntl.rangeFromLabel\r\n }\r\n\r\n /**\r\n * The range 'to' label\r\n */\r\n get toLabel(): string {\r\n return this.pickerIntl.rangeToLabel\r\n }\r\n\r\n /**\r\n * The range 'from' formatted value\r\n */\r\n get fromFormattedValue(): string {\r\n const value = this.picker?.selecteds[0]\r\n return value\r\n ? this.dateTimeAdapter.format(value, this.picker?.formatString)\r\n : ''\r\n }\r\n\r\n /**\r\n * The range 'to' formatted value\r\n */\r\n get toFormattedValue(): string {\r\n const value = this.picker?.selecteds[1]\r\n return value\r\n ? this.dateTimeAdapter.format(value, this.picker?.formatString)\r\n : ''\r\n }\r\n\r\n /**\r\n * Cases in which the control buttons show in the picker\r\n * 1) picker mode is 'dialog'\r\n * 2) picker type is NOT 'calendar' and the picker mode is NOT 'inline'\r\n */\r\n get showControlButtons(): boolean {\r\n return (\r\n this.picker?.pickerMode === 'dialog' ||\r\n (this.picker?.pickerType !== 'calendar' &&\r\n this.picker?.pickerMode !== 'inline')\r\n )\r\n }\r\n\r\n get containerElm(): HTMLElement {\r\n return this.elmRef.nativeElement\r\n }\r\n\r\n /** @internal */\r\n @HostBinding('class.nxt-dt-container')\r\n get containerClass(): boolean {\r\n return true\r\n }\r\n\r\n /** @internal */\r\n @HostBinding('class.nxt-dt-popup-container')\r\n get popupContainerClass(): boolean {\r\n return this.picker?.pickerMode === 'popup'\r\n }\r\n\r\n /** @internal */\r\n @HostBinding('class.nxt-dt-dialog-container')\r\n get dialogContainerClass(): boolean {\r\n return this.picker?.pickerMode === 'dialog'\r\n }\r\n\r\n /** @internal */\r\n @HostBinding('class.nxt-dt-inline-container')\r\n get inlineContainerClass(): boolean {\r\n return this.picker?.pickerMode === 'inline'\r\n }\r\n\r\n /** @internal */\r\n @HostBinding('class.nxt-dt-container-disabled')\r\n get containerDisabledClass(): boolean {\r\n return !!this.picker?.disabled\r\n }\r\n\r\n /** @internal */\r\n @HostBinding('attr.id')\r\n get containerId(): string | undefined {\r\n return this.picker?.id\r\n }\r\n\r\n /** @internal */\r\n @HostBinding('@transformPicker')\r\n get containerAnimation(): any {\r\n return this.picker?.pickerMode === 'inline' ? '' : 'enter'\r\n }\r\n\r\n constructor(\r\n private readonly cdRef: ChangeDetectorRef,\r\n private readonly elmRef: ElementRef<HTMLElement>,\r\n private readonly pickerIntl: DateTimeIntl,\r\n private readonly dateTimeAdapter: DateTimeAdapter<T>\r\n ) { }\r\n\r\n ngOnInit() { }\r\n\r\n ngAfterContentInit(): void {\r\n this.initPicker()\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.focusPicker()\r\n }\r\n\r\n @HostListener('@transformPicker.done', ['$event'])\r\n handleContainerAnimationDone(event: AnimationEvent): void {\r\n const toState = event.toState\r\n if (toState === 'enter') {\r\n this.pickerOpened$.next()\r\n }\r\n }\r\n\r\n dateSelected(date?: T): void {\r\n let result\r\n\r\n if (this.picker?.isInSingleMode) {\r\n result = this.dateSelectedInSingleMode(date)\r\n if (result) {\r\n this.pickerMoment = result\r\n this.picker.select(result)\r\n } else {\r\n // we close the picker when result is undefined and pickerType is calendar.\r\n if (this.pickerType === 'calendar') {\r\n this.hidePicker$.next()\r\n }\r\n }\r\n return\r\n }\r\n\r\n if (this.picker?.isInRangeMode) {\r\n result = this.dateSelectedInRangeMode(date)\r\n if (result) {\r\n this.pickerMoment = result[this.activeSelectedIndex]\r\n this.picker.select(result)\r\n }\r\n }\r\n }\r\n\r\n timeSelected(time?: T): void {\r\n this.pickerMoment = this.dateTimeAdapter.clone(time)\r\n\r\n if (!this.picker?.dateTimeChecker(this.pickerMoment)) {\r\n return\r\n }\r\n\r\n if (this.picker.isInSingleMode) {\r\n this.picker.select(this.pickerMoment)\r\n return\r\n }\r\n\r\n if (this.picker.isInRangeMode) {\r\n const selecteds = [...this.picker?.selecteds || []]\r\n\r\n // check if the 'from' is after 'to' or 'to'is before 'from'\r\n // In this case, we set both the 'from' and 'to' the same value\r\n if (\r\n (this.activeSelectedIndex === 0 &&\r\n selecteds[1] &&\r\n this.dateTimeAdapter.compare(\r\n this.pickerMoment,\r\n selecteds[1]\r\n ) === 1) ||\r\n (this.activeSelectedIndex === 1 &&\r\n selecteds[0] &&\r\n this.dateTimeAdapter.compare(\r\n this.pickerMoment,\r\n selecteds[0]\r\n ) === -1)\r\n ) {\r\n selecteds[0] = this.pickerMoment\r\n selecteds[1] = this.pickerMoment\r\n } else {\r\n selecteds[this.activeSelectedIndex] = this.pickerMoment\r\n }\r\n\r\n this.picker.select(selecteds)\r\n }\r\n }\r\n\r\n /**\r\n * Handle click on cancel button\r\n */\r\n onCancelClicked(event: Event): void {\r\n this.hidePicker$.next()\r\n event.preventDefault()\r\n return\r\n }\r\n\r\n /**\r\n * Handle click on set button\r\n */\r\n onSetClicked(event: Event): void {\r\n if (!this.picker?.dateTimeChecker?.(this.pickerMoment)) {\r\n this.hidePicker$.next()\r\n event.preventDefault()\r\n return\r\n }\r\n\r\n this.confirmSelected$.next(event)\r\n event.preventDefault()\r\n return\r\n }\r\n\r\n /**\r\n * Handle click on inform radio group\r\n */\r\n handleClickOnInfoGroup(event: any, index: number): void {\r\n this.setActiveSelectedIndex(index)\r\n event.preventDefault()\r\n event.stopPropagation()\r\n }\r\n\r\n /**\r\n * Handle click on inform radio group\r\n */\r\n handleKeydownOnInfoGroup(\r\n event: any,\r\n next: any,\r\n index: number\r\n ): void {\r\n switch (event.keyCode) {\r\n case 'ArrowDown':\r\n case 'ArrowRight':\r\n case 'ArrowUp':\r\n case 'ArrowLeft':\r\n next.focus()\r\n this.setActiveSelectedIndex(index === 0 ? 1 : 0)\r\n event.preventDefault()\r\n event.stopPropagation()\r\n break\r\n\r\n case 'Space':\r\n this.setActiveSelectedIndex(index)\r\n event.preventDefault()\r\n event.stopPropagation()\r\n break\r\n\r\n default:\r\n return\r\n }\r\n }\r\n\r\n /**\r\n * Set the value of activeSelectedIndex\r\n */\r\n private setActiveSelectedIndex(index: number): void {\r\n if (\r\n this.picker?.selectMode === 'range' &&\r\n this.activeSelectedIndex !== index\r\n ) {\r\n this.activeSelectedIndex = index\r\n\r\n const selected = this.picker?.selecteds[this.activeSelectedIndex]\r\n if (this.picker.selecteds && selected) {\r\n this.pickerMoment = this.dateTimeAdapter.clone(selected)\r\n }\r\n }\r\n return\r\n }\r\n\r\n private initPicker(): void {\r\n this.pickerMoment = this.picker?.startAt || this.dateTimeAdapter.now()\r\n this.activeSelectedIndex = this.picker?.selectMode === 'rangeTo' ? 1 : 0\r\n }\r\n\r\n /**\r\n * Select calendar date in single mode,\r\n * it returns undefined when date is not selected.\r\n */\r\n private dateSelectedInSingleMode(date?: T): T | undefined {\r\n if (this.dateTimeAdapter.isSameDay(date, this.picker?.selected)) {\r\n return undefined\r\n }\r\n\r\n return this.updateAndCheckCalendarDate(date)\r\n }\r\n\r\n /**\r\n * Select dates in range Mode\r\n */\r\n private dateSelectedInRangeMode(date?: T): Array<T | undefined> | undefined {\r\n let from = this.picker?.selecteds[0]\r\n let to = this.picker?.selecteds[1]\r\n\r\n const result = this.updateAndCheckCalendarDate(date)\r\n\r\n if (!result) {\r\n return\r\n }\r\n\r\n // if the given calendar day is after or equal to 'from',\r\n // set ths given date as 'to'\r\n // otherwise, set it as 'from' and set 'to' to undefined\r\n if (this.picker?.selectMode === 'range') {\r\n if (\r\n this.picker.selecteds &&\r\n this.picker.selecteds.length &&\r\n !to &&\r\n from &&\r\n (this.dateTimeAdapter.differenceInCalendarDays(result, from) ?? 0) >= 0\r\n ) {\r\n to = result\r\n this.activeSelectedIndex = 1\r\n } else {\r\n from = result\r\n to = undefined\r\n this.activeSelectedIndex = 0\r\n }\r\n } else if (this.picker?.selectMode === 'rangeFrom') {\r\n from = result\r\n\r\n // if the from value is after the to value, set the to value as undefined\r\n if (to && this.dateTimeAdapter.compare(from, to) > 0) {\r\n to = undefined\r\n }\r\n } else if (this.picker?.selectMode === 'rangeTo') {\r\n to = result\r\n\r\n // if the from value is after the to value, set the from value as undefined\r\n if (from && this.dateTimeAdapter.compare(from, to) > 0) {\r\n from = undefined\r\n }\r\n }\r\n\r\n return [from, to]\r\n }\r\n\r\n /**\r\n * Update the given calendar date's time and check if it is valid\r\n * Because the calendar date has 00:00:00 as default time, if the picker type is 'both',\r\n * we need to update the given calendar date's time before selecting it.\r\n * if it is valid, return the updated dateTime\r\n * if it is not valid, return undefined\r\n */\r\n private updateAndCheckCalendarDate(date?: T): T | undefined {\r\n let result\r\n\r\n // if the picker is 'both', update the calendar date's time value\r\n if (this.picker?.pickerType === 'both') {\r\n result = this.dateTimeAdapter.createDate(\r\n this.dateTimeAdapter.getYear(date),\r\n this.dateTimeAdapter.getMonth(date),\r\n this.dateTimeAdapter.getDate(date),\r\n this.dateTimeAdapter.getHours(this.pickerMoment),\r\n this.dateTimeAdapter.getMinutes(this.pickerMoment),\r\n this.dateTimeAdapter.getSeconds(this.pickerMoment)\r\n )\r\n result = this.dateTimeAdapter.clampDate(\r\n result,\r\n this.picker.min,\r\n this.picker.max\r\n )\r\n } else {\r\n result = this.dateTimeAdapter.clone(date)\r\n }\r\n\r\n // check the updated dateTime\r\n return this.picker?.dateTimeChecker(result) ? result : undefined\r\n }\r\n\r\n /**\r\n * Focus to the picker\r\n */\r\n private focusPicker(): void {\r\n if (this.picker?.pickerMode === 'inline') {\r\n return\r\n }\r\n\r\n if (this.calendar) {\r\n this.calendar.focusActiveCell()\r\n } else if (this.timer) {\r\n this.timer.focus()\r\n }\r\n }\r\n}\r\n","<div [cdkTrapFocus]=\"picker?.pickerMode !== 'inline'\"\r\n [@fadeInPicker]=\"picker?.pickerMode === 'inline'? '' : 'enter'\"\r\n class=\"nxt-dt-container-inner\">\r\n\r\n <nxt-date-time-calendar *ngIf=\"pickerType === 'both' || pickerType === 'calendar'\"\r\n class=\"nxt-dt-container-row\"\r\n [firstDayOfWeek]=\"picker?.firstDayOfWeek ?? 0\"\r\n [(pickerMoment)]=\"pickerMoment\"\r\n [selected]=\"picker?.selected\"\r\n [selecteds]=\"picker?.selecteds ?? []\"\r\n [selectMode]=\"picker?.selectMode\"\r\n [min]=\"picker?.min\"\r\n [max]=\"picker?.max\"\r\n [dateTimeFilter]=\"picker?.dateTimeFilter\"\r\n [startView]=\"picker?.startView ?? 'month'\"\r\n [hideOtherMonths]=\"!!picker?.hideOtherMonths\"\r\n (yearSelected)=\"picker?.selectYear($event)\"\r\n (monthSelected)=\"picker?.selectMonth($event)\"\r\n (selectedChange)=\"dateSelected($event)\"></nxt-date-time-calendar>\r\n\r\n <nxt-date-time-timer *ngIf=\"pickerType === 'both' || pickerType === 'timer'\"\r\n class=\"nxt-dt-container-row\"\r\n [pickerMoment]=\"pickerMoment\"\r\n [min]=\"picker?.min\"\r\n [max]=\"picker?.max\"\r\n [showSecondsTimer]=\"!!picker?.showSecondsTimer\"\r\n [hour12Timer]=\"!!picker?.hour12Timer\"\r\n [stepHour]=\"picker?.stepHour ?? 1\"\r\n [stepMinute]=\"picker?.stepMinute ?? 1\"\r\n [stepSecond]=\"picker?.stepSecond ?? 1\"\r\n (selectedChange)=\"timeSelected($event)\"></nxt-date-time-timer>\r\n\r\n <div *ngIf=\"picker?.isInRangeMode\"\r\n role=\"radiogroup\"\r\n class=\"nxt-dt-container-info nxt-dt-container-row\">\r\n <div role=\"radio\"\r\n [tabindex]=\"activeSelectedIndex === 0 ? 0 : -1\"\r\n [attr.aria-checked]=\"activeSelectedIndex === 0\"\r\n class=\"nxt-dt-control nxt-dt-container-range nxt-dt-container-from\"\r\n [ngClass]=\"{'nxt-dt-container-info-active': activeSelectedIndex === 0}\"\r\n (click)=\"handleClickOnInfoGroup($event, 0)\"\r\n (keydown)=\"handleKeydownOnInfoGroup($event, to, 0)\"\r\n #from>\r\n <span class=\"nxt-dt-control-content nxt-dt-container-range-content\"\r\n tabindex=\"-1\">\r\n <span class=\"nxt-dt-container-info-label\">{{fromLabel}}:</span>\r\n <span class=\"nxt-dt-container-info-value\">{{fromFormattedValue}}</span>\r\n </span>\r\n </div>\r\n <div role=\"radio\"\r\n [tabindex]=\"activeSelectedIndex === 1 ? 0 : -1\"\r\n [attr.aria-checked]=\"activeSelectedIndex === 1\"\r\n class=\"nxt-dt-control nxt-dt-container-range nxt-dt-container-to\"\r\n [ngClass]=\"{'nxt-dt-container-info-active': activeSelectedIndex === 1}\"\r\n (click)=\"handleClickOnInfoGroup($event, 1)\"\r\n (keydown)=\"handleKeydownOnInfoGroup($event, from, 1)\"\r\n #to>\r\n <span class=\"nxt-dt-control-content nxt-dt-container-range-content\"\r\n tabindex=\"-1\">\r\n <span class=\"nxt-dt-container-info-label\">{{toLabel}}:</span>\r\n <span class=\"nxt-dt-container-info-value\">{{toFormattedValue}}</span>\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showControlButtons\"\r\n class=\"nxt-dt-container-buttons nxt-dt-container-row\">\r\n <button class=\"nxt-dt-control nxt-dt-control-button nxt-dt-container-control-button\"\r\n type=\"button\"\r\n tabindex=\"0\"\r\n (click)=\"onCancelClicked($event)\">\r\n <span class=\"nxt-dt-control-content nxt-dt-control-button-content\"\r\n tabindex=\"-1\">\r\n {{cancelLabel}}\r\n </span>\r\n </button>\r\n <button class=\"nxt-dt-control nxt-dt-control-button nxt-dt-container-control-button\"\r\n type=\"button\"\r\n tabindex=\"0\"\r\n (click)=\"onSetClicked($event)\">\r\n <span class=\"nxt-dt-control-content nxt-dt-control-button-content\"\r\n tabindex=\"-1\">\r\n {{setLabel}}\r\n </span>\r\n </button>\r\n </div>\r\n</div>\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, forwardRef, HostBinding, Inject, Input, OnInit, Output, Provider, ViewChild } from '@angular/core'\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\r\nimport { DateTimeAdapter } from '../../class/date-time-adapter.class'\r\nimport { DateTimeFormats, NXT_DATE_TIME_FORMATS } from '../../class/date-time-format.class'\r\nimport { DateFilter, DateTimeDirective, PickerMode, PickerType, SelectMode } from '../../class/date-time.class'\r\nimport { DateTimeContainerComponent } from '../date-time-picker-container/date-time-picker-container.component'\r\n\r\n/** @internal */\r\nexport const NXT_DATETIME_VALUE_ACCESSOR: Provider = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => DateTimeInlineComponent),\r\n multi: true\r\n}\r\n\r\n@Component({\r\n selector: 'nxt-date-time-inline',\r\n templateUrl: './date-time-inline.component.html',\r\n styleUrls: ['./date-time-inline.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n preserveWhitespaces: false,\r\n providers: [NXT_DATETIME_VALUE_ACCESSOR],\r\n standalone: false\r\n})\r\nexport class DateTimeInlineComponent<T> extends DateTimeDirective<T> implements OnInit, ControlValueAccessor {\r\n\r\n @ViewChild(DateTimeContainerComponent, { static: true })\r\n private container?: DateTimeContainerComponent<T>\r\n\r\n private _pickerType: PickerType = 'both'\r\n /**\r\n * Set the type of the dateTime picker\r\n *\r\n * - `'both'` - show both calendar and timer\r\n * - `'calendar'` - show only calendar\r\n * - `'timer'` - show only timer\r\n */\r\n @Input()\r\n get pickerType(): PickerType {\r\n return this._pickerType\r\n }\r\n\r\n set pickerType(val: PickerType) {\r\n if (val !== this._pickerType) {\r\n this._pickerType = val\r\n }\r\n }\r\n\r\n private _disabled = false\r\n /** Whether the date time picker should be disabled */\r\n @Input()\r\n override get disabled(): boolean {\r\n return !!this._disabled\r\n }\r\n\r\n override set disabled(value: boolean) {\r\n this._disabled = !!value\r\n }\r\n\r\n private _selectMode: SelectMode = 'single'\r\n /**\r\n * The picker select mode\r\n *\r\n * - `'single'` - select a single date\r\n * - `'range'` - select a range [from, to]\r\n * - `'rangeFrom'` - an open range with a fixed start date\r\n * - `'rangeTo'` - an open range with a fixed end date\r\n */\r\n @Input()\r\n get selectMode() {\r\n return this._selectMode\r\n }\r\n\r\n set selectMode(mode: SelectMode) {\r\n if (\r\n mode !== 'single' &&\r\n mode !== 'range' &&\r\n mode !== 'rangeFrom' &&\r\n mode !== 'rangeTo'\r\n ) {\r\n throw Error('DateTime Error: invalid selectMode value!')\r\n }\r\n\r\n this._selectMode = mode\r\n }\r\n\r\n private _startAt?: T\r\n /**\r\n * The date to show when picker opens\r\n *\r\n * Defaults to selected date (if available) or current date.\r\n */\r\n @Input()\r\n get startAt() {\r\n if (this._startAt) {\r\n return this._startAt\r\n }\r\n\r\n if (this.selectMode === 'single') {\r\n return this.value\r\n } else if (\r\n this.selectMode === 'range' ||\r\n this.selectMode === 'rangeFrom'\r\n ) {\r\n return this.values?.[0]\r\n } else if (this.selectMode === 'rangeTo') {\r\n return this.values?.[1]\r\n } else {\r\n return\r\n }\r\n }\r\n\r\n set startAt(date: T | undefined) {\r\n this._startAt = this.getValidDate(\r\n this.dateTimeAdapter.deserialize(date)\r\n )\r\n }\r\n\r\n private _dateTimeFilter?: DateFilter<T>\r\n /** A function to filter available date & time */\r\n @Input()\r\n get dateTimeFilter() {\r\n return this._dateTimeFilter\r\n }\r\n\r\n set dateTimeFilter(filter: DateFilter<T> | undefined) {\r\n this._dateTimeFilter = filter\r\n }\r\n\r\n private _min?: T\r\n /** The minimum valid date */\r\n @Input()\r\n set min(value: T | undefined) {\r\n this._min = this.getValidDate(this.dateTimeAdapter.deserialize(value))\r\n this.changeDetector.markForCheck()\r\n }\r\n\r\n get min() {\r\n return this._min\r\n }\r\n\r\n private _max?: T\r\n /** The maximum valid date */\r\n @Input()\r\n set max(value: T | undefined) {\r\n this._max = this.getValidDate(this.dateTimeAdapter.deserialize(value))\r\n this.changeDetector.markForCheck()\r\n }\r\n\r\n get max() {\r\n return this._max\r\n }\r\n\r\n private _value?: T\r\n @Input()\r\n get value() {\r\n return this._value\r\n }\r\n\r\n set value(value: T | undefined) {\r\n value = this.dateTimeAdapter.deserialize(value)\r\n value = this.getValidDate(value)\r\n this._value = value\r\n this.selected = value\r\n }\r\n\r\n private _values?: Array<T | undefined>\r\n @Input()\r\n get values() {\r\n return this._values\r\n }\r\n\r\n set values(values: Array<T | undefined> | undefined) {\r\n if (values && values.length > 0) {\r\n values = values.map(v => {\r\n v = this.dateTimeAdapter.deserialize(v)\r\n v = this.getValidDate(v)\r\n return (v && this.dateTimeAdapter.clone(v))\r\n })\r\n this._values = [...values]\r\n this.selecteds = [...values]\r\n } else {\r\n this._values = []\r\n this.selecteds = []\r\n }\r\n }\r\n\r\n /**\r\n * Emits selected year in multi-year view\r\n *\r\n * This doesn't imply a change on the selected date.\r\n */\r\n @Output()\r\n readonly yearSelected = new EventEmitter<T>()\r\n\r\n /**\r\n * Emits selected month in year view\r\n *\r\n * This doesn't imply a change on the selected date.\r\n */\r\n @Output()\r\n readonly monthSelected = new EventEmitter<T>()\r\n\r\n private _selected?: T\r\n get selected() {\r\n return this._selected\r\n }\r\n\r\n set selected(value: T | undefined) {\r\n this._selected = value\r\n this.changeDetector.markForCheck()\r\n }\r\n\r\n private _selecteds = new Array<T | undefined>()\r\n get selecteds() {\r\n return this._selecteds\r\n }\r\n\r\n set selecteds(values: Array<T | undefined>) {\r\n this._selecteds = values\r\n this.changeDetector.markForCheck()\r\n }\r\n\r\n get isOpen(): boolean {\r\n return true\r\n }\r\n\r\n get pickerMode(): PickerMode {\r\n return 'inline'\r\n }\r\n\r\n get isInSingleMode(): boolean {\r\n return this._selectMode === 'single'\r\n }\r\n\r\n get isInRangeMode(): boolean {\r\n return (\r\n this._selectMode === 'range' ||\r\n this._selectMode === 'rangeFrom' ||\r\n this._selectMode === 'rangeTo'\r\n )\r\n }\r\n\r\n /** @internal */\r\n @HostBinding('class.nxt-dt-inline')\r\n get inlineClass(): boolean {\r\n return true\r\n }\r\n\r\n private onModelChange?: (date: T | T[]) => void\r\n private onModelTouched?: () => void\r\n\r\n constructor(\r\n protected readonly changeDetector: ChangeDetectorRef,\r\n dateTimeAdapter: DateTimeAdapter<T>,\r\n @Inject(NXT_DATE_TIME_FORMATS)\r\n dateTimeFormats: DateTimeFormats\r\n ) {\r\n super(dateTimeAdapter, dateTimeFormats)\r\n }\r\n\r\n ngOnInit() {\r\n if (this.container)\r\n this.container.picker = this\r\n }\r\n\r\n writeValue(value: any): void {\r\n value = value ?? undefined\r\n if (this.isInSingleMode) {\r\n this.value = value\r\n if (this.container)\r\n this.container.pickerMoment = value\r\n } else {\r\n this.values = value\r\n if (this.container)\r\n this.container.pickerMoment = this._values?.[\r\n this.container.activeSelectedIndex\r\n ]\r\n }\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onModelChange = fn\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onModelTouched = fn\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled\r\n }\r\n\r\n select(date: T[] | T): void {\r\n if (this.disabled) {\r\n return\r\n }\r\n\r\n if (Array.isArray(date)) {\r\n this.values = [...date]\r\n } else {\r\n this.value = date\r\n }\r\n this.onModelChange?.(date)\r\n this.onModelTouched?.()\r\n }\r\n\r\n /**\r\n * Emits the selected year in multi-year view\r\n */\r\n selectYear(normalizedYear: T): void {\r\n this.yearSelected.emit(normalizedYear)\r\n }\r\n\r\n /**\r\n * Emits selected month in year view\r\n */\r\n selectMonth(normalizedMonth: T): void {\r\n this.monthSelected.emit(normalizedMonth)\r\n }\r\n}\r\n","<nxt-date-time-container></nxt-date-time-container>\r\n","import { AfterContentInit, Directive, ElementRef, EventEmitter, forwardRef, HostBinding, HostListener, Inject, Input, OnDestroy, OnInit, Output, Provider, Renderer2 } from '@angular/core'\r\nimport { AbstractControl, ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator, ValidatorFn, Validators } from '@angular/forms'\r\nimport { Subscription } from 'rxjs'\r\nimport { DateTimeAdapter } from '../class/date-time-adapter.class'\r\nimport { DateTimeFormats, NXT_DATE_TIME_FORMATS } from '../class/date-time-format.class'\r\nimport { DateFilter, SelectMode } from '../class/date-time.class'\r\nimport { DateTimeComponent } from './date-time-picker/date-time-picker.component'\r\n\r\n/** @internal */\r\nexport const NXT_DATETIME_VALUE_ACCESSOR: Provider = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => DateTimeInputDirective),\r\n multi: true\r\n}\r\n\r\n/** @internal */\r\nexport const NXT_DATETIME_VALIDATORS: Provider = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => DateTimeInputDirective),\r\n multi: true\r\n}\r\n\r\nexport interface DateTimeInputEvent<T> {\r\n source: DateTimeInputDirective<T>\r\n value?: T | Array<T | undefined>\r\n input: HTMLInputElement\r\n}\r\n\r\n@Directive({\r\n selector: 'input[nxtDateTime]',\r\n exportAs: 'nxtDateTimeInput',\r\n providers: [\r\n NXT_DATETIME_VALUE_ACCESSOR,\r\n NXT_DATETIME_VALIDATORS\r\n ],\r\n standalone: false\r\n})\r\nexport class DateTimeInputDirective<T> implements OnInit, AfterContentInit, OnDestroy, ControlValueAccessor, Validator {\r\n /**\r\n * The date & time picker this input is associated with\r\n */\r\n @Input('nxtDateTime')\r\n set dateTime(value: DateTimeComponent<T>) {\r\n this.registerDateTimePicker(value)\r\n }\r\n\r\n private _dateTimeFilter?: DateFilter<T>\r\n /**\r\n * A function to filter available date & time\r\n */\r\n @Input()\r\n set dateTimeFilter(filter: DateFilter<T> | undefined) {\r\n this._dateTimeFilter = filter\r\n this.validatorOnChange?.()\r\n }\r\n get dateTimeFilter() {\r\n return this._dateTimeFilter\r\n }\r\n\r\n private _disabled = false\r\n /** Whether the date & time picker input is disabled */\r\n @Input()\r\n get disabled() {\r\n return this._disabled\r\n }\r\n\r\n set disabled(value: boolean) {\r\n const newValue = !!value\r\n const element = this.elmRef.nativeElement\r\n\r\n if (this._disabled !== newValue) {\r\n this._disabled = newValue\r\n this.disabledChange.emit(newValue)\r\n }\r\n\r\n if (newValue) {\r\n element.blur?.()\r\n }\r\n }\r\n\r\n private _min?: T\r\n /** The minimum valid date */\r\n @Input()\r\n get min() {\r\n return this._min\r\n }\r\n\r\n set min(value: T | undefined) {\r\n this._min = this.getValidDate(this.dateTimeAdapter.deserialize(value))\r\n this.validatorOnChange?.()\r\n }\r\n\r\n private _max?: T\r\n /** The maximum valid date */\r\n @Input()\r\n get max() {\r\n return this._max\r\n }\r\n\r\n set max(value: T | undefined) {\r\n this._max = this.getValidDate(this.dateTimeAdapter.deserialize(value))\r\n this.validatorOnChange?.()\r\n }\r\n\r\n private _selectMode: SelectMode = 'single'\r\n /**\r\n * The picker select mode\r\n *\r\n * - `'single'` - select a single date\r\n * - `'range'` - select a range [from, to]\r\n * - `'rangeFrom'` - an open range with a fixed start date\r\n * - `'rangeTo'` - an open range with a fixed end date\r\n */\r\n @Input()\r\n get selectMode() {\r\n return this._selectMode\r\n }\r\n\r\n set selectMode(mode: SelectMode) {\r\n if (\r\n mode !== 'single' &&\r\n mode !== 'range' &&\r\n mode !== 'rangeFrom' &&\r\n mode !== 'rangeTo'\r\n ) {\r\n throw Error('DateTime Error: invalid selectMode value!')\r\n }\r\n\r\n this._selectMode = mode\r\n }\r\n\r\n /**\r\n * The character to separate the 'from' and 'to' in input value\r\n */\r\n @Input()\r\n rangeSeparator = '~'\r\n\r\n private _value?: T\r\n @Input()\r\n get value() {\r\n return this._value\r\n }\r\n\r\n set value(value: T | undefined) {\r\n value = this.dateTimeAdapter.deserialize(value)\r\n this.lastValueValid = !value || !!this.dateTimeAdapter.isValid(value)\r\n value = this.getValidDate(value)\r\n const oldDate = this._value\r\n this._value = value\r\n\r\n // set the input property 'value'\r\n this.formatNativeInputValue()\r\n\r\n // check if the input value changed\r\n if (!this.dateTimeAdapter.isEqual(oldDate, value)) {\r\n this.valueChange.emit(value)\r\n }\r\n }\r\n\r\n private _values: Array<T | undefined> = []\r\n @Input()\r\n get values() {\r\n return this._values\r\n }\r\n\r\n set values(values: Array<T | undefined>) {\r\n if (values && values.length > 0) {\r\n this._values = values.map(v => {\r\n v = this.dateTimeAdapter.deserialize(v)\r\n return this.getValidDate(v)\r\n })\r\n this.lastValueValid =\r\n (!this._values[0] ||\r\n this.dateTimeAdapter.isValid(this._values[0])) &&\r\n (!this._values[1] ||\r\n this.dateTimeAdapter.isValid(this._values[1]))\r\n } else {\r\n this._values = []\r\n this.lastValueValid = true\r\n }\r\n\r\n // set the input property 'value'\r\n this.formatNativeInputValue()\r\n\r\n this.valueChange.emit(this._values)\r\n }\r\n\r\n /**\r\n * Callback to invoke when `change` event is fired on this `<input>`\r\n */\r\n @Output()\r\n readonly dateTimeChange = new EventEmitter<DateTimeInputEvent<T>>()\r\n\r\n /**\r\n * Callback to invoke when an `input` event is fired on this `<input>`.\r\n */\r\n @Output()\r\n readonly dateTimeInput = new EventEmitter<DateTimeInputEvent<T>>()\r\n\r\n get elementRef() {\r\n return this.elmRef\r\n }\r\n\r\n get isInSingleMode(): boolean {\r\n return this._selectMode === 'single'\r\n }\r\n\r\n get isInRangeMode(): boolean {\r\n return (\r\n this._selectMode === 'range' ||\r\n this._selectMode === 'rangeFrom' ||\r\n this._selectMode === 'rangeTo'\r\n )\r\n }\r\n\r\n /** The date-time-picker that this input is associated with */\r\n dtPicker?: DateTimeComponent<T>\r\n\r\n private dtPickerSub?: Subscription\r\n private localeSub?: Subscription\r\n\r\n private lastValueValid = true\r\n\r\n private onModelChange?: (date: T | Array<T | undefined> | undefined) => void\r\n private onModelTouched?: () => void\r\n private validatorOnChange?: () => void\r\n\r\n /** The form control validator for whether the input parses */\r\n private readonly parseValidator: ValidatorFn = () => this.lastValueValid\r\n ? null\r\n : { dateTimeParse: { text: this.elmRef.nativeElement.value } }\r\n\r\n /** The form control validator for the min date */\r\n private readonly minValidator: ValidatorFn = (\r\n control\r\n ) => {\r\n if (this.isInSingleMode) {\r\n const controlValue = this.getValidDate(\r\n this.dateTimeAdapter.deserialize(control.value)\r\n )\r\n return !this.min ||\r\n !controlValue ||\r\n this.dateTimeAdapter.compare(this.min, controlValue) <= 0\r\n ? null\r\n : { dateTimeMin: { min: this.min, actual: controlValue } }\r\n } else if (this.isInRangeMode && control.value) {\r\n const controlValueFrom = this.getValidDate(\r\n this.dateTimeAdapter.deserialize(control.value[0])\r\n )\r\n const controlValueTo = this.getValidDate(\r\n this.dateTimeAdapter.deserialize(control.value[1])\r\n )\r\n return !this.min ||\r\n !controlValueFrom ||\r\n !controlValueTo ||\r\n this.dateTimeAdapter.compare(this.min, controlValueFrom) <= 0\r\n ? null\r\n : {\r\n dateTimeMin: {\r\n min: this.min,\r\n actual: [controlValueFrom, controlValueTo]\r\n }\r\n }\r\n }\r\n return null\r\n }\r\n\r\n /** The form control validator for the max date */\r\n private readonly maxValidator: ValidatorFn = (\r\n control\r\n ) => {\r\n if (this.isInSingleMode) {\r\n const controlValue = this.getValidDate(\r\n this.dateTimeAdapter.deserialize(control.value)\r\n )\r\n return !this.max ||\r\n !controlValue ||\r\n this.dateTimeAdapter.compare(this.max, controlValue) >= 0\r\n ? null\r\n : { dateTimeMax: { max: this.max, actual: controlValue } }\r\n } else if (this.isInRangeMode && control.value) {\r\n const controlValueFrom = this.getValidDate(\r\n this.dateTimeAdapter.deserialize(control.value[0])\r\n )\r\n const controlValueTo = this.getValidDate(\r\n this.dateTimeAdapter.deserialize(control.value[1])\r\n )\r\n return !this.max ||\r\n !controlValueFrom ||\r\n !controlValueTo ||\r\n this.dateTimeAdapter.compare(this.max, controlValueTo) >= 0\r\n ? null\r\n : {\r\n dateTimeMax: {\r\n max: this.max,\r\n actual: [controlValueFrom, controlValueTo]\r\n }\r\n }\r\n }\r\n return null\r\n }\r\n\r\n /** The form control validator for the date filter */\r\n private readonly filterValidator: ValidatorFn = (\r\n control: AbstractControl\r\n ): ValidationErrors | null => {\r\n const controlValue = this.getValidDate(\r\n this.dateTimeAdapter.deserialize(control.value)\r\n )\r\n return !this._dateTimeFilter ||\r\n !controlValue ||\r\n this._dateTimeFilter(controlValue)\r\n ? null\r\n : { dateTimeFilter: true }\r\n }\r\n\r\n /**\r\n * The form control validator for the range.\r\n * Check whether the 'before' value is before the 'to' value\r\n */\r\n private readonly rangeValidator: ValidatorFn = (\r\n control\r\n ) => {\r\n if (this.isInSingleMode || !control.value) {\r\n return null\r\n }\r\n\r\n const controlValueFrom = this.getValidDate(\r\n this.dateTimeAdapter.deserialize(control.value[0])\r\n )\r\n const controlValueTo = this.getValidDate(\r\n this.dateTimeAdapter.deserialize(control.value[1])\r\n )\r\n\r\n return !controlValueFrom ||\r\n !controlValueTo ||\r\n this.dateTimeAdapter.compare(controlValueFrom, controlValueTo) <= 0\r\n ? null\r\n : { dateTimeRange: true }\r\n }\r\n\r\n /** The combined form control validator for this input */\r\n private readonly validator = Validators.compose([\r\n this.parseValidator,\r\n this.minValidator,\r\n this.maxValidator,\r\n this.filterValidator,\r\n this.rangeValidator\r\n ])\r\n\r\n /** Emits when the value changes (either due to user input or programmatic change) */\r\n readonly valueChange = new EventEmitter<Array<T | undefined> | T | undefined>()\r\n\r\n /** Emits when the disabled state has changed */\r\n readonly disabledChange = new EventEmitter<boolean>()\r\n\r\n /** @internal */\r\n @HostBinding('attr.aria-haspopup')\r\n get inputAriaHaspopup(): boolean {\r\n return true\r\n }\r\n\r\n /** @internal */\r\n @HostBinding('attr.aria-owns')\r\n get inputAriaOwns() {\r\n return (this.dtPicker?.isOpen && this.dtPicker.id) || undefined\r\n }\r\n\r\n /** @internal */\r\n @HostBinding('attr.min')\r\n get minIso8601() {\r\n return this.min ? this.dateTimeAdapter.toIso8601(this.min) : undefined\r\n }\r\n\r\n /** @internal */\r\n @HostBinding('attr.max')\r\n get maxIso8601() {\r\n return this.max ? this.dateTimeAdapter.toIso8601(this.max) : undefined\r\n }\r\n\r\n /** @internal */\r\n @HostBinding('disabled')\r\n get inputDisabled(): boolean {\r\n return this.disabled\r\n }\r\n\r\n constructor(\r\n private readonly elmRef: ElementRef<HTMLInputElement>,\r\n private readonly renderer: Renderer2,\r\n private readonly dateTimeAdapter: DateTimeAdapter<T>,\r\n @Inject(NXT_DATE_TIME_FORMATS)\r\n private readonly dateTimeFormats: DateTimeFormats\r\n ) {\r\n this.localeSub = this.dateTimeAdapter.localeChanges.subscribe(() => {\r\n this.value = this.value\r\n })\r\n }\r\n\r\n ngOnInit(): void {\r\n if (!this.dtPicker) {\r\n throw Error(\r\n 'DateTimePicker: the picker input doesn\\'t have any associated nxt-date-time component'\r\n )\r\n }\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.dtPickerSub = this.dtPicker?.confirmSelectedChange.subscribe(\r\n (selecteds: T[] | T) => {\r\n if (Array.isArray(selecteds)) {\r\n this.values = selecteds\r\n } else {\r\n this.value = selecteds\r\n }\r\n\r\n this.onModelChange?.(selecteds)\r\n this.onModelTouched?.()\r\n this.dateTimeChange.emit({\r\n source: this,\r\n value: selecteds,\r\n input: this.elmRef.nativeElement\r\n })\r\n this.dateTimeInput.emit({\r\n source: this,\r\n value: selecteds,\r\n input: this.elmRef.nativeElement\r\n })\r\n }\r\n )\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.dtPickerSub?.unsubscribe()\r\n this.dtPickerSub = undefined\r\n this.localeSub?.unsubscribe()\r\n this.localeSub = undefined\r\n this.valueChange.complete()\r\n this.disabledChange.complete()\r\n }\r\n\r\n writeValue(value: any): void {\r\n value = value ?? undefined\r\n if (this.isInSingleMode) {\r\n this.value = value\r\n } else {\r\n this.values = value\r\n }\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onModelChange = fn\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onModelTouched = fn\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled\r\n }\r\n\r\n validate(c: AbstractControl) {\r\n return this.validator ? this.validator(c) : null\r\n }\r\n\r\n registerOnValidatorChange(fn: () => void): void {\r\n this.validatorOnChange = fn\r\n }\r\n\r\n /**\r\n * Open the picker when user hold alt + ArrowDown\r\n */\r\n @HostListener('keydown', ['$event'])\r\n handleKeydownOnHost(event: KeyboardEvent): void {\r\n if (event.altKey && event.code.toLowerCase() === 'arrowdown') {\r\n this.dtPicker?.open()\r\n event.preventDefault()\r\n }\r\n }\r\n\r\n @HostListener('blur', ['$event'])\r\n handleBlurOnHost(_event: Event): void {\r\n this.onModelTouched?.()\r\n }\r\n\r\n @HostListener('input', ['$event'])\r\n handleInputOnHost(event: any): void {\r\n const value = event.target.value\r\n if (this._selectMode === 'single') {\r\n this.changeInputInSingleMode(value)\r\n } else if (this._selectMode === 'range') {\r\n this.changeInputInRangeMode(value)\r\n } else {\r\n this.changeInputInRangeFromToMode(value)\r\n }\r\n }\r\n\r\n @HostListener('change', ['$event'])\r\n handleChangeOnHost(_event: any): void {\r\n\r\n let v\r\n if (this.isInSingleMode) {\r\n v = this.value\r\n } else if (this.isInRangeMode) {\r\n v = this.values\r\n }\r\n\r\n this.dateTimeChange.emit({\r\n source: this,\r\n value: v,\r\n input: this.elmRef.nativeElement\r\n })\r\n }\r\n\r\n /**\r\n * Set the native input property 'value'\r\n */\r\n formatNativeInputValue(): void {\r\n if (this.isInSingleMode) {\r\n this.renderer.setProperty(\r\n this.elmRef.nativeElement,\r\n 'value',\r\n this._value\r\n ? this.dateTimeAdapter.format(\r\n this._value,\r\n this.dtPicker?.formatString\r\n )\r\n : ''\r\n )\r\n } else if (this.isInRangeMode) {\r\n if (this._values && this.values.length > 0) {\r\n const from = this._values[0]\r\n const to = this._values[1]\r\n\r\n const fromFormatted = from\r\n ? this.dateTimeAdapter.format(\r\n from,\r\n this.dtPicker?.formatString\r\n )\r\n : ''\r\n const toFormatted = to\r\n ? this.dateTimeAdapter.format(\r\n to,\r\n this.dtPicker?.formatString\r\n )\r\n : ''\r\n\r\n if (!fromFormatted && !toFormatted) {\r\n this.renderer.setProperty(\r\n this.elmRef.nativeElement,\r\n 'value',\r\n undefined\r\n )\r\n } else {\r\n if (this._selectMode === 'range') {\r\n this.renderer.setProperty(\r\n this.elmRef.nativeElement,\r\n 'value',\r\n fromFormatted +\r\n ' ' +\r\n this.rangeSeparator +\r\n ' ' +\r\n toFormatted\r\n )\r\n } else if (this._selectMode === 'rangeFrom') {\r\n this.renderer.setProperty(\r\n this.elmRef.nativeElement,\r\n 'value',\r\n fromFormatted\r\n )\r\n } else if (this._selectMode === 'rangeTo') {\r\n this.renderer.setProperty(\r\n this.elmRef.nativeElement,\r\n 'value',\r\n toFormatted\r\n )\r\n }\r\n }\r\n } else {\r\n this.renderer.setProperty(\r\n this.elmRef.nativeElement,\r\n 'value',\r\n ''\r\n )\r\n }\r\n }\r\n\r\n return\r\n }\r\n\r\n /**\r\n * Register the relationship between this input and its picker component\r\n */\r\n private registerDateTimePicker(picker: DateTimeComponent<T>) {\r\n if (picker) {\r\n this.dtPicker = picker\r\n this.dtPicker.registerInput(this)\r\n }\r\n }\r\n\r\n /**\r\n * Convert a given obj to a valid date object\r\n */\r\n private getValidDate(obj: any): T | undefined {\r\n return this.dateTimeAdapter.isDateInstance(obj) &&\r\n this.dateTimeAdapter.isValid(obj)\r\n ? obj\r\n : undefined\r\n }\r\n\r\n /**\r\n * Convert a time string to a date-time string\r\n * When pickerType is 'timer', the value in the picker's input is a time string.\r\n * The dateTimeAdapter parse fn could not parse a time string to a Date Object.\r\n * Therefore we need this fn to convert a time string to a date-time string.\r\n */\r\n private convertTimeStringToDateTimeString(\r\n timeString?: string,\r\n dateTime?: T\r\n ) {\r\n if (timeString) {\r\n const v = dateTime || this.dateTimeAdapter.now()\r\n const dateString = this.dateTimeAdapter.format(\r\n v,\r\n this.dateTimeFormats.datePickerInput\r\n )\r\n return dateString + ' ' + timeString\r\n }\r\n return undefined\r\n }\r\n\r\n /**\r\n * Handle input change in single mode\r\n */\r\n private changeInputInSingleMode(inputValue: string): void {\r\n let value: string | undefined = inputValue\r\n if (this.dtPicker?.pickerType === 'timer') {\r\n value = this.convertTimeStringToDateTimeString(value, this.value)\r\n }\r\n\r\n let result = this.dateTimeAdapter.parse(\r\n value,\r\n this.dateTimeFormats.parseInput\r\n )\r\n this.lastValueValid = !result || this.dateTimeAdapter.isValid(result)\r\n result = this.getValidDate(result)\r\n\r\n // if the newValue is the same as the oldValue, we intend to not fire the valueChange event\r\n // result equals to undefined means there is input event, but the input value is invalid\r\n if (!this.isSameValue(result, this._value) || result === undefined) {\r\n this._value = result\r\n this.valueChange.emit(result)\r\n this.onModelChange?.(result)\r\n this.dateTimeInput.emit({\r\n source: this,\r\n value: result,\r\n input: this.elmRef.nativeElement\r\n })\r\n }\r\n }\r\n\r\n /**\r\n * Handle input change in rangeFrom or rangeTo mode\r\n */\r\n private changeInputInRangeFromToMode(inputValue?: string): void {\r\n const originalValue =\r\n this._selectMode === 'rangeFrom'\r\n ? this._values[0]\r\n : this._values[1]\r\n\r\n if (this.dtPicker?.pickerType === 'timer') {\r\n inputValue = this.convertTimeStringToDateTimeString(\r\n inputValue,\r\n originalValue\r\n )\r\n }\r\n\r\n let result = this.dateTimeAdapter.parse(\r\n inputValue,\r\n this.dateTimeFormats.parseInput\r\n )\r\n this.lastValueValid = !result || this.dateTimeAdapter.isValid(result)\r\n result = this.getValidDate(result)\r\n\r\n // if the newValue is the same as the oldValue, we intend to not fire the valueChange event\r\n if (\r\n (this._selectMode === 'rangeFrom' &&\r\n this.isSameValue(result, this._values[0]) &&\r\n result) ||\r\n (this._selectMode === 'rangeTo' &&\r\n this.isSameValue(result, this._values[1]) &&\r\n result)\r\n ) {\r\n return\r\n }\r\n\r\n this._values =\r\n this._selectMode === 'rangeFrom'\r\n ? [result, this._values[1]]\r\n : [this._values[0], result]\r\n this.valueChange.emit(this._values)\r\n this.onModelChange?.(this._values)\r\n this.dateTimeInput.emit({\r\n source: this,\r\n value: this._values,\r\n input: this.elmRef.nativeElement\r\n })\r\n }\r\n\r\n /**\r\n * Handle input change in range mode\r\n */\r\n private changeInputInRangeMode(inputValue: string): void {\r\n const selecteds = inputValue.split(this.rangeSeparator)\r\n let fromString: string | undefined = selecteds[0]\r\n let toString: string | undefined = selecteds[1]\r\n\r\n if (this.dtPicker?.pickerType === 'timer') {\r\n fromString = this.convertTimeStringToDateTimeString(\r\n fromString,\r\n this.values[0]\r\n )\r\n toString = this.convertTimeStringToDateTimeString(\r\n toString,\r\n this.values[1]\r\n )\r\n }\r\n\r\n let from = this.dateTimeAdapter.parse(\r\n fromString,\r\n this.dateTimeFormats.parseInput\r\n )\r\n let to = this.dateTimeAdapter.parse(\r\n toString,\r\n this.dateTimeFormats.parseInput\r\n )\r\n this.lastValueValid =\r\n (!from || this.dateTimeAdapter.isValid(from)) &&\r\n (!to || this.dateTimeAdapter.isValid(to))\r\n from = this.getValidDate(from)\r\n to = this.getValidDate(to)\r\n\r\n // if the newValue is the same as the oldValue, we intend to not fire the valueChange event\r\n if (\r\n !this.isSameValue(from, this._values[0]) ||\r\n !this.isSameValue(to, this._values[1]) ||\r\n (!from && !to)\r\n ) {\r\n this._values = [from, to]\r\n this.valueChange.emit(this._values)\r\n this.onModelChange?.(this._values)\r\n this.dateTimeInput.emit({\r\n source: this,\r\n value: this._values,\r\n input: this.elmRef.nativeElement\r\n })\r\n }\r\n }\r\n\r\n /**\r\n * Check if the two value is the same\r\n */\r\n private isSameValue(first?: T, second?: T): boolean {\r\n if (first && second) {\r\n return this.dateTimeAdapter.compare(first, second) === 0\r\n }\r\n\r\n return first == second\r\n }\r\n}\r\n","import { AfterContentInit, ChangeDetectorRef, Directive, HostBinding, HostListener, Input, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core'\r\nimport { merge, Observable, of as observableOf, Subscription } from 'rxjs'\r\nimport { DateTimeComponent } from './date-time-picker/date-time-picker.component'\r\n\r\n@Directive({\r\n selector: '[nxtDateTimeTrigger]',\r\n standalone: false\r\n})\r\nexport class DateTimeTriggerDirective<T> implements OnInit, OnChanges, AfterContentInit, OnDestroy {\r\n\r\n @Input('nxtDateTimeTrigger')\r\n dtPicker?: DateTimeComponent<T>\r\n\r\n private _disabled?: boolean\r\n @Input()\r\n get disabled(): boolean {\r\n return this._disabled ?? !!this.dtPicker?.disabled\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = value\r\n }\r\n\r\n /** @internal */\r\n @HostBinding('class.nxt-dt-trigger-disabled')\r\n get triggerDisabledClass(): boolean {\r\n return this.disabled\r\n }\r\n\r\n private stateChanges?: Subscription\r\n\r\n constructor(\r\n protected readonly changeDetector: ChangeDetectorRef\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if ('datepicker' in changes) {\r\n this.watchStateChanges()\r\n }\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.watchStateChanges()\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.stateChanges?.unsubscribe()\r\n this.stateChanges = undefined\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n handleClickOnHost(event: Event): void {\r\n if (this.dtPicker) {\r\n this.dtPicker.open()\r\n event.stopPropagation()\r\n }\r\n }\r\n\r\n private watchStateChanges(): void {\r\n this.stateChanges?.unsubscribe()\r\n this.stateChanges = undefined\r\n\r\n const inputDisabled = this.dtPicker && this.dtPicker.dtInput ?\r\n this.dtPicker.dtInput.disabledChange : observableOf()\r\n\r\n const pickerDisabled = this.dtPicker ?\r\n this.dtPicker.disabledChange : observableOf()\r\n\r\n this.stateChanges = merge(pickerDisabled as Observable<boolean>, inputDisabled as Observable<boolean>)\r\n .subscribe(() => {\r\n this.changeDetector.markForCheck()\r\n })\r\n }\r\n}\r\n","import { NoopScrollStrategy, ScrollStrategy } from '@angular/cdk/overlay'\r\nimport { ViewContainerRef } from '@angular/core'\r\n\r\n/** @internal */\r\nlet uniqueId = 0\r\n\r\n/** Possible overrides for a dialog's position */\r\nexport interface DialogPosition {\r\n /** Override for the dialog's top position */\r\n top?: string\r\n\r\n /** Override for the dialog's bottom position */\r\n bottom?: string\r\n\r\n /** Override for the dialog's left position */\r\n left?: string\r\n\r\n /** Override for the dialog's right position */\r\n right?: string\r\n}\r\n\r\nexport class DialogConfig {\r\n /**\r\n * ID of the element that describes the dialog.\r\n */\r\n ariaDescribedBy?: string\r\n\r\n /**\r\n * Whether to focus the dialog when the dialog is isOpen\r\n */\r\n autoFocus = true\r\n\r\n /** Whether the dialog has a backdrop */\r\n hasBackdrop?= true\r\n\r\n /**\r\n * Custom style for the backdrop\r\n */\r\n backdropStyle?: any\r\n\r\n /** Data being injected into the child component */\r\n data?: any\r\n\r\n /** Whether the user can use escape or clicking outside to close a modal */\r\n disableClose?= false\r\n\r\n /**\r\n * ID for the modal. If omitted, a unique one will be generated.\r\n */\r\n id?: string\r\n\r\n /**\r\n * The ARIA role of the dialog element.\r\n */\r\n role?: 'dialog' | 'alertdialog' = 'dialog'\r\n\r\n /**\r\n * Custom class for the pane\r\n */\r\n paneClass?: string | string[] = ''\r\n\r\n /**\r\n * Mouse Event\r\n */\r\n event?: MouseEvent\r\n\r\n /**\r\n * Custom class for the backdrop\r\n */\r\n backdropClass?: string | string[] = ''\r\n\r\n /**\r\n * Whether the dialog should close when the user goes backwards/forwards in history.\r\n */\r\n closeOnNavigation?: boolean = true\r\n\r\n /** Width of the dialog */\r\n width?: string = ''\r\n\r\n /** Height of the dialog */\r\n height?: string = ''\r\n\r\n /**\r\n * The min-width of the overlay panel.\r\n * If a number is provided, pixel units are assumed.\r\n */\r\n minWidth?: number | string\r\n\r\n /**\r\n * The min-height of the overlay panel.\r\n * If a number is provided, pixel units are assumed.\r\n */\r\n minHeight?: number | string\r\n\r\n /**\r\n * The max-width of the overlay panel.\r\n * If a number is provided, pixel units are assumed.\r\n */\r\n maxWidth?: number | string = '85vw'\r\n\r\n /**\r\n * The max-height of the overlay panel.\r\n * If a number is provided, pixel units are assumed.\r\n */\r\n maxHeight?: number | string\r\n\r\n /** Position overrides */\r\n position?: DialogPosition\r\n\r\n /**\r\n * The scroll strategy when the dialog is open\r\n * Learn more this from https://material.angular.io/cdk/overlay/overview#scroll-strategies\r\n */\r\n scrollStrategy?: ScrollStrategy = new NoopScrollStrategy()\r\n\r\n viewContainerRef?: ViewContainerRef\r\n\r\n constructor() {\r\n this.id = `nxt-dialog-${uniqueId++}`\r\n }\r\n}\r\n","import { AnimationEvent } from '@angular/animations'\r\nimport { GlobalPositionStrategy, OverlayRef } from '@angular/cdk/overlay'\r\nimport { Location } from '@angular/common'\r\nimport { Subject, SubscriptionLike as ISubscription } from 'rxjs'\r\nimport { filter, take } from 'rxjs/operators'\r\nimport { DialogContainerComponent } from '../dialog/dialog-container/dialog-container.component'\r\nimport { DialogPosition } from './dialog-config.class'\r\n\r\nexport class DialogRef<T> {\r\n\r\n private result: any\r\n\r\n private readonly _beforeClose$ = new Subject<void>()\r\n\r\n private readonly _afterOpen$ = new Subject<void>()\r\n\r\n private readonly _afterClosed$ = new Subject<void>()\r\n\r\n /** Subscription to changes in the user's location */\r\n private locationChanged?: ISubscription\r\n\r\n /**\r\n * The instance of component isOpen into modal\r\n */\r\n componentInstance?: T\r\n\r\n /** Whether the user is allowed to close the dialog */\r\n disableClose = !!this.container.config?.disableClose\r\n\r\n constructor(\r\n private readonly overlayRef: OverlayRef,\r\n private readonly container: DialogContainerComponent,\r\n readonly id?: string,\r\n location?: Location\r\n ) {\r\n this.container.animationStateChanged\r\n .pipe(\r\n filter((event: AnimationEvent) => event.phaseName === 'done' && event.toState === 'enter'),\r\n take(1)\r\n )\r\n .subscribe(() => {\r\n this._afterOpen$.next(undefined)\r\n this._afterOpen$.complete()\r\n })\r\n\r\n this.container.animationStateChanged\r\n .pipe(\r\n filter((event: AnimationEvent) => event.phaseName === 'done' && event.toState === 'exit'),\r\n take(1)\r\n )\r\n .subscribe(() => {\r\n this.overlayRef.dispose()\r\n this.locationChanged?.unsubscribe()\r\n this.locationChanged = undefined\r\n this._afterClosed$.next(this.result)\r\n this._afterClosed$.complete()\r\n this.componentInstance = undefined\r\n })\r\n\r\n this.overlayRef.keydownEvents()\r\n .pipe(filter(event => event.code.toLowerCase() === 'escape' && !this.disableClose))\r\n .subscribe(() => this.close())\r\n\r\n if (location) {\r\n this.locationChanged = location.subscribe(() => {\r\n if (this.container.config?.closeOnNavigation) {\r\n this.close()\r\n }\r\n })\r\n }\r\n }\r\n\r\n close(dialogResult?: any) {\r\n this.result = dialogResult\r\n\r\n this.container.animationStateChanged\r\n .pipe(\r\n filter((event: AnimationEvent) => event.phaseName === 'start'),\r\n take(1)\r\n )\r\n .subscribe(() => {\r\n this._beforeClose$.next(dialogResult)\r\n this._beforeClose$.complete()\r\n this.overlayRef.detachBackdrop()\r\n })\r\n\r\n this.container.startExitAnimation()\r\n }\r\n\r\n /**\r\n * Gets an observable that emits when the overlay's backdrop has been clicked.\r\n */\r\n backdropClick() {\r\n return this.overlayRef.backdropClick()\r\n }\r\n\r\n /**\r\n * Gets an observable that emits when keydown events are targeted on the overlay.\r\n */\r\n keydownEvents() {\r\n return this.overlayRef.keydownEvents()\r\n }\r\n\r\n /**\r\n * Updates the dialog's position.\r\n *\r\n * @param position New dialog position.\r\n */\r\n updatePosition(position?: DialogPosition): this {\r\n const strategy = this.getPositionStrategy()\r\n\r\n if (position && (position.left || position.right)) {\r\n if (position.left)\r\n strategy.left(position.left)\r\n else\r\n strategy.right(position.right)\r\n } else {\r\n strategy.centerHorizontally()\r\n }\r\n\r\n if (position && (position.top || position.bottom)) {\r\n if (position.top)\r\n strategy.top(position.top)\r\n else\r\n strategy.bottom(position.bottom)\r\n } else {\r\n strategy.centerVertically()\r\n }\r\n\r\n this.overlayRef.updatePosition()\r\n\r\n return this\r\n }\r\n\r\n /**\r\n * Updates the dialog's width and height.\r\n *\r\n * @param width New width of the dialog.\r\n * @param height New height of the dialog.\r\n */\r\n updateSize(width: string = 'auto', height: string = 'auto'): this {\r\n this.overlayRef.updateSize({ width, height })\r\n this.overlayRef.updatePosition()\r\n return this\r\n }\r\n\r\n isAnimating(): boolean {\r\n return this.container.isAnimating\r\n }\r\n\r\n afterOpen() {\r\n return this._afterOpen$.asObservable()\r\n }\r\n\r\n beforeClose() {\r\n return this._beforeClose$.asObservable()\r\n }\r\n\r\n afterClosed() {\r\n return this._afterClosed$.asObservable()\r\n }\r\n\r\n /** Fetches the position strategy object from the overlay ref */\r\n private getPositionStrategy(): GlobalPositionStrategy {\r\n return this.overlayRef.getConfig().positionStrategy as GlobalPositionStrategy\r\n }\r\n}\r\n","/**\r\n * Extends an object with the *enumerable* and *own* properties of one or more source objects,\r\n * similar to Object.assign.\r\n *\r\n * @param dest The object which will have properties copied to it.\r\n * @param sources The source objects from which properties will be copied.\r\n * @internal\r\n */\r\nexport function extendObject(dest: any, ...sources: any[]): any {\r\n if (dest == null || dest == undefined) {\r\n throw TypeError('Cannot convert undefined or null to object')\r\n }\r\n\r\n for (const source of sources) {\r\n if (source != null && source != undefined) {\r\n for (const key in source) {\r\n if (source.hasOwnProperty(key)) {\r\n dest[key] = source[key]\r\n }\r\n }\r\n }\r\n }\r\n\r\n return dest\r\n}\r\n","import { animate, animateChild, AnimationEvent, keyframes, style, transition, trigger } from '@angular/animations'\r\nimport { ConfigurableFocusTrap, ConfigurableFocusTrapFactory } from '@angular/cdk/a11y'\r\nimport { BasePortalOutlet, CdkPortalOutlet, ComponentPortal, TemplatePortal } from '@angular/cdk/portal'\r\nimport { DOCUMENT } from '@angular/common'\r\nimport { ChangeDetectorRef, Component, ComponentRef, ElementRef, EmbeddedViewRef, EventEmitter, HostBinding, HostListener, Inject, OnInit, Optional, ViewChild } from '@angular/core'\r\nimport { DialogConfig } from '../../class/dialog-config.class'\r\n\r\n/** @internal */\r\nexport type DialogContainerState = 'void' | 'enter' | 'exit'\r\n\r\n/** @internal */\r\nconst zoomFadeIn = {\r\n opacity: 0,\r\n transform: 'translateX({{ x }}) translateY({{ y }}) scale({{scale}})'\r\n}\r\n\r\n/** @internal */\r\nconst zoomFadeInFrom = {\r\n opacity: 0,\r\n transform: 'translateX({{ x }}) translateY({{ y }}) scale({{scale}})',\r\n transformOrigin: '{{ ox }} {{ oy }}'\r\n}\r\n\r\n/** @internal */\r\n@Component({\r\n selector: 'nxt-dialog-container',\r\n templateUrl: './dialog-container.component.html',\r\n animations: [\r\n trigger('slideModal', [\r\n transition('void => enter', [\r\n style(zoomFadeInFrom),\r\n animate('300ms cubic-bezier(0.35, 0, 0.25, 1)', style('*')),\r\n animate('150ms', keyframes([\r\n style({ transform: 'scale(1)', offset: 0 }),\r\n style({ transform: 'scale(1.05)', offset: 0.3 }),\r\n style({ transform: 'scale(.95)', offset: 0.8 }),\r\n style({ transform: 'scale(1)', offset: 1.0 })\r\n ])),\r\n animateChild()\r\n ], {\r\n params: {\r\n x: '0px',\r\n y: '0px',\r\n ox: '50%',\r\n oy: '50%',\r\n scale: 1\r\n }\r\n }),\r\n transition('enter => exit', [animateChild(), animate(200, style(zoomFadeIn))], { params: { x: '0px', y: '0px', ox: '50%', oy: '50%' } })\r\n ])\r\n ],\r\n standalone: false\r\n})\r\nexport class DialogContainerComponent extends BasePortalOutlet implements OnInit {\r\n @ViewChild(CdkPortalOutlet, { static: true })\r\n portalOutlet?: CdkPortalOutlet\r\n\r\n /** The class that traps and manages focus within the dialog */\r\n private focusTrap?: ConfigurableFocusTrap\r\n\r\n /** ID of the element that should be considered as the dialog's label */\r\n ariaLabelledBy?: string\r\n\r\n /** Emits when an animation state changes */\r\n readonly animationStateChanged = new EventEmitter<AnimationEvent>()\r\n\r\n isAnimating = false\r\n\r\n private _config?: DialogConfig\r\n get config() {\r\n return this._config\r\n }\r\n\r\n private state: DialogContainerState = 'enter'\r\n\r\n // for animation purpose\r\n private params: any = {\r\n x: '0px',\r\n y: '0px',\r\n ox: '50%',\r\n oy: '50%',\r\n scale: 0\r\n }\r\n\r\n // A variable to hold the focused element before the dialog was open.\r\n // This would help us to refocus back to element when the dialog was closed.\r\n private elementFocusedBeforeDialogWasOpened?: HTMLElement\r\n\r\n /** @internal */\r\n @HostBinding('class.nxt-dialog-container')\r\n get dialogContainerClass(): boolean {\r\n return true\r\n }\r\n\r\n /** @internal */\r\n @HostBinding('attr.tabindex')\r\n get dialogContainerTabIndex(): number {\r\n return -1\r\n }\r\n\r\n /** @internal */\r\n @HostBinding('attr.id')\r\n get dialogContainerId() {\r\n return this._config?.id\r\n }\r\n\r\n /** @internal */\r\n @HostBinding('attr.role')\r\n get dialogContainerRole() {\r\n return this._config?.role\r\n }\r\n\r\n /** @internal */\r\n @HostBinding('attr.aria-labelledby')\r\n get dialogContainerAriaLabelledby() {\r\n return this.ariaLabelledBy\r\n }\r\n\r\n /** @internal */\r\n @HostBinding('attr.aria-describedby')\r\n get dialogContainerAriaDescribedby() {\r\n return this._config?.ariaDescribedBy\r\n }\r\n\r\n /** @internal */\r\n @HostBinding('@slideModal')\r\n get dialogContainerAnimation() {\r\n return { value: this.state, params: this.params }\r\n }\r\n\r\n constructor(\r\n private readonly changeDetector: ChangeDetectorRef,\r\n private readonly elementRef: ElementRef<HTMLElement>,\r\n private readonly focusTrapFactory: ConfigurableFocusTrapFactory,\r\n @Optional()\r\n @Inject(DOCUMENT)\r\n private readonly document?: Document\r\n ) {\r\n super()\r\n }\r\n\r\n ngOnInit() { }\r\n\r\n /**\r\n * Attach a ComponentPortal as content to this dialog container.\r\n */\r\n attachComponentPortal<T>(\r\n portal: ComponentPortal<T>\r\n ): ComponentRef<T> {\r\n if (this.portalOutlet?.hasAttached()) {\r\n throw Error(\r\n 'Attempting to attach dialog content after content is already attached'\r\n )\r\n }\r\n\r\n this.savePreviouslyFocusedElement()\r\n return this.portalOutlet!.attachComponentPortal(portal)\r\n }\r\n\r\n attachTemplatePortal<C>(\r\n _portal: TemplatePortal<C>\r\n ): EmbeddedViewRef<C> {\r\n throw new Error('Method not implemented.')\r\n }\r\n\r\n setConfig(config: DialogConfig): void {\r\n this._config = config\r\n\r\n if (config.event) {\r\n this.calculateZoomOrigin(config.event)\r\n }\r\n }\r\n\r\n @HostListener('@slideModal.start', ['$event'])\r\n onAnimationStart(event: AnimationEvent): void {\r\n this.isAnimating = true\r\n this.animationStateChanged.emit(event)\r\n }\r\n\r\n @HostListener('@slideModal.done', ['$event'])\r\n onAnimationDone(event: AnimationEvent): void {\r\n if (event.toState === 'enter') {\r\n this.trapFocus()\r\n } else if (event.toState === 'exit') {\r\n this.restoreFocus()\r\n }\r\n\r\n this.animationStateChanged.emit(event)\r\n this.isAnimating = false\r\n }\r\n\r\n startExitAnimation() {\r\n this.state = 'exit'\r\n this.changeDetector.markForCheck()\r\n }\r\n\r\n /**\r\n * Calculate origin used in the `zoomFadeInFrom()`\r\n * for animation purpose\r\n */\r\n private calculateZoomOrigin(event: any): void {\r\n if (!event) {\r\n return\r\n }\r\n\r\n const clientX = event.clientX\r\n const clientY = event.clientY\r\n\r\n const wh = window.innerWidth / 2\r\n const hh = window.innerHeight / 2\r\n const x = clientX - wh\r\n const y = clientY - hh\r\n const ox = clientX / window.innerWidth\r\n const oy = clientY / window.innerHeight\r\n\r\n this.params.x = `${x}px`\r\n this.params.y = `${y}px`\r\n this.params.ox = `${ox * 100}%`\r\n this.params.oy = `${oy * 100}%`\r\n this.params.scale = 0\r\n\r\n return\r\n }\r\n\r\n /**\r\n * Save the focused element before dialog was open\r\n */\r\n private savePreviouslyFocusedElement(): void {\r\n if (this.document) {\r\n this.elementFocusedBeforeDialogWasOpened = this.document\r\n .activeElement as HTMLElement\r\n\r\n Promise.resolve().then(() => this.elementRef.nativeElement.focus()).catch(() => { })\r\n }\r\n }\r\n\r\n private trapFocus(): void {\r\n if (!this.focusTrap) {\r\n this.focusTrap = this.focusTrapFactory.create(\r\n this.elementRef.nativeElement\r\n )\r\n }\r\n\r\n if (this._config?.autoFocus) {\r\n this.focusTrap?.focusInitialElementWhenReady().catch(() => { })\r\n }\r\n }\r\n\r\n private restoreFocus(): void {\r\n const toFocus = this.elementFocusedBeforeDialogWasOpened\r\n\r\n if (toFocus && typeof toFocus.focus === 'function') {\r\n toFocus.focus()\r\n }\r\n\r\n if (this.focusTrap) {\r\n this.focusTrap.destroy()\r\n this.focusTrap = undefined\r\n }\r\n }\r\n}\r\n","<ng-template cdkPortalOutlet></ng-template>\r\n","import { Overlay, OverlayConfig, OverlayContainer, OverlayRef, ScrollStrategy } from '@angular/cdk/overlay'\r\nimport { ComponentPortal, ComponentType } from '@angular/cdk/portal'\r\nimport { Location } from '@angular/common'\r\nimport { ComponentRef, Inject, Injectable, InjectionToken, Injector, Optional, SkipSelf, TemplateRef } from '@angular/core'\r\nimport { defer, of, Subject } from 'rxjs'\r\nimport { concatAll } from 'rxjs/operators'\r\nimport { DialogConfig } from '../class/dialog-config.class'\r\nimport { DialogRef } from '../class/dialog-ref.class'\r\nimport { extendObject } from '../utils/object'\r\nimport { DialogContainerComponent } from './dialog-container/dialog-container.component'\r\n\r\n/** @internal */\r\nexport const NXT_DIALOG_DATA = new InjectionToken<any>('NXT_DIALOG_DATA')\r\n\r\n/**\r\n * Injection token that determines the scroll handling while the dialog is open.\r\n *\r\n * @internal\r\n */\r\nexport const NXT_DIALOG_SCROLL_STRATEGY = new InjectionToken<\r\n () => ScrollStrategy\r\n>('NXT_DIALOG_SCROLL_STRATEGY')\r\n\r\n/** @internal */\r\nexport function NXT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY(\r\n overlay: Overlay\r\n): () => ScrollStrategy {\r\n const fn = () => overlay.scrollStrategies.block()\r\n return fn\r\n}\r\n\r\n/** @internal */\r\nexport const NXT_DIALOG_SCROLL_STRATEGY_PROVIDER = {\r\n provide: NXT_DIALOG_SCROLL_STRATEGY,\r\n deps: [Overlay],\r\n useFactory: NXT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY\r\n}\r\n\r\n/**\r\n * Injection token that can be used to specify default dialog options.\r\n *\r\n * @internal\r\n */\r\nexport const NXT_DIALOG_DEFAULT_OPTIONS = new InjectionToken<DialogConfig>(\r\n 'NXT_DIALOG_DEFAULT_OPTIONS'\r\n)\r\n\r\n/** @internal */\r\n@Injectable()\r\nexport class DialogService {\r\n private readonly ariaHiddenElements = new Map<Element, string | null>()\r\n\r\n private readonly _openDialogsAtThisLevel: Array<DialogRef<any>> = []\r\n private readonly _afterOpenAtThisLevel = new Subject<DialogRef<any>>()\r\n private readonly _afterAllClosedAtThisLevel = new Subject<void>()\r\n\r\n /** Keeps track of the currently-open dialogs */\r\n get openDialogs(): Array<DialogRef<any>> {\r\n return this.parentDialog\r\n ? this.parentDialog.openDialogs\r\n : this._openDialogsAtThisLevel\r\n }\r\n\r\n /** Stream that emits when a dialog has been isOpen */\r\n get afterOpen(): Subject<DialogRef<any>> {\r\n return this.parentDialog\r\n ? this.parentDialog.afterOpen\r\n : this._afterOpenAtThisLevel\r\n }\r\n\r\n get _afterAllClosed(): Subject<void> {\r\n const parent = this.parentDialog\r\n return parent\r\n ? parent._afterAllClosed\r\n : this._afterAllClosedAtThisLevel\r\n }\r\n\r\n /**\r\n * Stream that emits when all open dialog have finished closing.\r\n * Will emit on subscribe if there are no open dialogs to begin with.\r\n */\r\n\r\n readonly afterAllClosed = defer(\r\n () =>\r\n this._openDialogsAtThisLevel.length\r\n ? this._afterAllClosed\r\n : of([undefined], this._afterAllClosed).pipe(concatAll())\r\n )\r\n\r\n private scrollStrategy: () => ScrollStrategy\r\n\r\n constructor(\r\n private readonly overlay: Overlay,\r\n private readonly injector: Injector,\r\n @Optional()\r\n @Inject(Location)\r\n private readonly location: Location | undefined,\r\n @Inject(NXT_DIALOG_SCROLL_STRATEGY)\r\n scrollStrategy: () => ScrollStrategy,\r\n @Optional()\r\n @Inject(NXT_DIALOG_DEFAULT_OPTIONS)\r\n private readonly defaultOptions: DialogConfig | undefined,\r\n @Optional()\r\n @SkipSelf()\r\n @Inject(DialogService)\r\n private readonly parentDialog: DialogService | undefined,\r\n private readonly overlayContainer: OverlayContainer\r\n ) {\r\n this.scrollStrategy = scrollStrategy\r\n if (!parentDialog && location) {\r\n location.subscribe(() => this.closeAll())\r\n }\r\n }\r\n\r\n open<T>(\r\n componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\r\n config?: DialogConfig\r\n ): DialogRef<any> {\r\n config = applyConfigDefaults(config, this.defaultOptions)\r\n\r\n if (config.id && this.getDialogById(config.id)) {\r\n throw Error(`Dialog with id \"${config.id}\" exists already. The dialog id must be unique.`)\r\n }\r\n\r\n const overlayRef = this.createOverlay(config)\r\n const dialogContainer = this.attachDialogContainer(overlayRef, config)\r\n const dialogRef = this.attachDialogContent<T>(\r\n componentOrTemplateRef,\r\n dialogContainer,\r\n overlayRef,\r\n config\r\n )\r\n\r\n if (!this.openDialogs.length) {\r\n this.hideNonDialogContentFromAssistiveTechnology()\r\n }\r\n\r\n this.openDialogs.push(dialogRef)\r\n dialogRef\r\n .afterClosed()\r\n .subscribe(() => this.removeOpenDialog(dialogRef))\r\n this.afterOpen.next(dialogRef)\r\n return dialogRef\r\n }\r\n\r\n /**\r\n * Closes all of the currently-open dialogs.\r\n */\r\n closeAll(): void {\r\n let i = this.openDialogs.length\r\n\r\n while (i--) {\r\n this.openDialogs[i].close()\r\n }\r\n }\r\n\r\n /**\r\n * Finds an open dialog by its id.\r\n *\r\n * @param id ID to use when looking up the dialog.\r\n */\r\n getDialogById(id: string): DialogRef<any> | undefined {\r\n return this.openDialogs.find(dialog => dialog.id === id)\r\n }\r\n\r\n private attachDialogContent<T>(\r\n componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\r\n dialogContainer: DialogContainerComponent,\r\n overlayRef: OverlayRef,\r\n config: DialogConfig\r\n ) {\r\n const dialogRef = new DialogRef<T>(\r\n overlayRef,\r\n dialogContainer,\r\n config.id,\r\n this.location\r\n )\r\n\r\n if (config.hasBackdrop) {\r\n overlayRef.backdropClick().subscribe(() => {\r\n if (!dialogRef.disableClose) {\r\n dialogRef.close()\r\n }\r\n })\r\n }\r\n\r\n if (!(componentOrTemplateRef instanceof TemplateRef)) {\r\n const injector = this.createInjector<T>(\r\n config,\r\n dialogRef,\r\n dialogContainer\r\n )\r\n const contentRef = dialogContainer.attachComponentPortal(\r\n new ComponentPortal(componentOrTemplateRef, undefined, injector)\r\n )\r\n dialogRef.componentInstance = contentRef.instance\r\n }\r\n\r\n dialogRef\r\n .updateSize(config.width, config.height)\r\n .updatePosition(config.position)\r\n\r\n return dialogRef\r\n }\r\n\r\n private createInjector<T>(\r\n config: DialogConfig,\r\n dialogRef: DialogRef<T>,\r\n dialogContainer: DialogContainerComponent\r\n ) {\r\n const userInjector =\r\n config &&\r\n config.viewContainerRef &&\r\n config.viewContainerRef.injector\r\n\r\n return Injector.create({\r\n providers: [\r\n { provide: DialogRef, useValue: dialogRef },\r\n { provide: DialogContainerComponent, useValue: dialogContainer },\r\n { provide: NXT_DIALOG_DATA, useValue: config.data }\r\n ],\r\n parent: userInjector || this.injector\r\n })\r\n }\r\n\r\n private createOverlay(config: DialogConfig): OverlayRef {\r\n const overlayConfig = this.getOverlayConfig(config)\r\n return this.overlay.create(overlayConfig)\r\n }\r\n\r\n private attachDialogContainer(\r\n overlayRef: OverlayRef,\r\n config: DialogConfig\r\n ): DialogContainerComponent {\r\n const containerPortal = new ComponentPortal(\r\n DialogContainerComponent,\r\n config.viewContainerRef\r\n )\r\n const containerRef: ComponentRef<\r\n DialogContainerComponent\r\n > = overlayRef.attach(containerPortal)\r\n containerRef.instance.setConfig(config)\r\n\r\n return containerRef.instance\r\n }\r\n\r\n private getOverlayConfig(dialogConfig: DialogConfig): OverlayConfig {\r\n const state = new OverlayConfig({\r\n positionStrategy: this.overlay.position().global(),\r\n scrollStrategy:\r\n dialogConfig.scrollStrategy || this.scrollStrategy(),\r\n panelClass: dialogConfig.paneClass,\r\n hasBackdrop: dialogConfig.hasBackdrop,\r\n minWidth: dialogConfig.minWidth,\r\n minHeight: dialogConfig.minHeight,\r\n maxWidth: dialogConfig.maxWidth,\r\n maxHeight: dialogConfig.maxHeight\r\n })\r\n\r\n if (dialogConfig.backdropClass) {\r\n state.backdropClass = dialogConfig.backdropClass\r\n }\r\n\r\n return state\r\n }\r\n\r\n private removeOpenDialog(dialogRef: DialogRef<any>): void {\r\n const index = this._openDialogsAtThisLevel.indexOf(dialogRef)\r\n\r\n if (index > -1) {\r\n this.openDialogs.splice(index, 1)\r\n // If all the dialogs were closed, remove/restore the `aria-hidden`\r\n // to a the siblings and emit to the `afterAllClosed` stream.\r\n if (!this.openDialogs.length) {\r\n this.ariaHiddenElements.forEach((previousValue, element) => {\r\n if (previousValue) {\r\n element.setAttribute('aria-hidden', previousValue)\r\n } else {\r\n element.removeAttribute('aria-hidden')\r\n }\r\n })\r\n\r\n this.ariaHiddenElements.clear()\r\n this._afterAllClosed.next()\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Hides all of the content that isn't an overlay from assistive technology.\r\n */\r\n private hideNonDialogContentFromAssistiveTechnology() {\r\n const overlayContainer = this.overlayContainer.getContainerElement()\r\n\r\n // Ensure that the overlay container is attached to the DOM.\r\n if (overlayContainer.parentElement) {\r\n const siblings = overlayContainer.parentElement.children\r\n\r\n for (let i = siblings.length - 1; i > -1; i--) {\r\n const sibling = siblings[i]\r\n\r\n if (\r\n sibling !== overlayContainer &&\r\n sibling.nodeName !== 'SCRIPT' &&\r\n sibling.nodeName !== 'STYLE' &&\r\n !sibling.hasAttribute('aria-live')\r\n ) {\r\n this.ariaHiddenElements.set(\r\n sibling,\r\n sibling.getAttribute('aria-hidden')\r\n )\r\n sibling.setAttribute('aria-hidden', 'true')\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Applies default options to the dialog config.\r\n *\r\n * @param config Config to be modified.\r\n * @param defaultOptions Default config setting\r\n * @returns The new configuration object.\r\n * @internal\r\n */\r\nfunction applyConfigDefaults(\r\n config?: DialogConfig,\r\n defaultOptions?: DialogConfig\r\n): DialogConfig {\r\n return extendObject(new DialogConfig(), config, defaultOptions)\r\n}\r\n","import { coerceArray } from '@angular/cdk/coercion'\r\nimport { BlockScrollStrategy, Overlay, OverlayConfig, OverlayRef, PositionStrategy, ScrollStrategy } from '@angular/cdk/overlay'\r\nimport { ComponentPortal } from '@angular/cdk/portal'\r\nimport { DOCUMENT } from '@angular/common'\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ComponentRef, EventEmitter, Inject, InjectionToken, Input, NgZone, OnDestroy, OnInit, Optional, Output, ViewContainerRef } from '@angular/core'\r\nimport { merge, Subscription } from 'rxjs'\r\nimport { filter, take } from 'rxjs/operators'\r\nimport { DateTimeAdapter } from '../../class/date-time-adapter.class'\r\nimport { DateTimeFormats, NXT_DATE_TIME_FORMATS } from '../../class/date-time-format.class'\r\nimport { DateTimeDirective, PickerMode, PickerType } from '../../class/date-time.class'\r\nimport { DialogRef } from '../../class/dialog-ref.class'\r\nimport { DialogService } from '../../dialog/dialog.service'\r\nimport { DateTimeContainerComponent } from '../date-time-picker-container/date-time-picker-container.component'\r\nimport { DateTimeInputDirective } from '../date-time-picker-input.directive'\r\n\r\n/**\r\n * Injection token that determines the scroll handling while the dtPicker is open.\r\n *\r\n * @internal\r\n */\r\nexport const NXT_DTPICKER_SCROLL_STRATEGY = new InjectionToken<\r\n () => ScrollStrategy\r\n>('NXT_DTPICKER_SCROLL_STRATEGY')\r\n\r\n/** @internal */\r\nexport function NXT_DTPICKER_SCROLL_STRATEGY_PROVIDER_FACTORY(\r\n overlay: Overlay\r\n): () => BlockScrollStrategy {\r\n const fn = () => overlay.scrollStrategies.block()\r\n return fn\r\n}\r\n\r\n/** @internal */\r\nexport const NXT_DTPICKER_SCROLL_STRATEGY_PROVIDER = {\r\n provide: NXT_DTPICKER_SCROLL_STRATEGY,\r\n deps: [Overlay],\r\n useFactory: NXT_DTPICKER_SCROLL_STRATEGY_PROVIDER_FACTORY\r\n}\r\n\r\n@Component({\r\n selector: 'nxt-date-time',\r\n templateUrl: './date-time-picker.component.html',\r\n styleUrls: ['./date-time-picker.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n preserveWhitespaces: false,\r\n standalone: false\r\n})\r\nexport class DateTimeComponent<T> extends DateTimeDirective<T> implements OnInit, OnDestroy {\r\n /** Custom class for the picker backdrop */\r\n @Input()\r\n backdropClass?: string | string[]\r\n\r\n /** Custom class for the picker overlay pane */\r\n @Input()\r\n panelClass?: string | string[]\r\n\r\n private _startAt?: T\r\n /**\r\n * The date to show when picker opens\r\n *\r\n * Defaults to selected date (if available) or current date.\r\n */\r\n @Input()\r\n get startAt() {\r\n // If an explicit startAt is set we start there, otherwise we start at whatever the currently\r\n // selected value is.\r\n if (this._startAt) {\r\n return this._startAt\r\n }\r\n\r\n if (this._dtInput) {\r\n if (this._dtInput.selectMode === 'single') {\r\n return this._dtInput.value\r\n } else if (\r\n this._dtInput.selectMode === 'range' ||\r\n this._dtInput.selectMode === 'rangeFrom'\r\n ) {\r\n return this._dtInput.values[0]\r\n } else if (this._dtInput.selectMode === 'rangeTo') {\r\n return this._dtInput.values[1]\r\n }\r\n }\r\n return\r\n }\r\n\r\n set startAt(date: T | undefined) {\r\n this._startAt = this.getValidDate(\r\n this.dateTimeAdapter.deserialize(date)\r\n )\r\n }\r\n\r\n private _pickerType: PickerType = 'both'\r\n /**\r\n * Set the type of the dateTime picker\r\n *\r\n * - `'both'` - show both calendar and timer\r\n * - `'calendar'` - show only calendar\r\n * - `'timer'` - show only timer\r\n */\r\n @Input()\r\n get pickerType(): PickerType {\r\n return this._pickerType\r\n }\r\n\r\n set pickerType(val: PickerType) {\r\n if (val !== this._pickerType) {\r\n this._pickerType = val\r\n if (this._dtInput) {\r\n this._dtInput.formatNativeInputValue()\r\n }\r\n }\r\n }\r\n\r\n private _pickerMode: PickerMode = 'popup'\r\n /**\r\n * The style the picker would open as\r\n *\r\n * - `'popup'` - display picker attached to the trigger element\r\n * - `'dialog'` - display picker as a dialog\r\n */\r\n @Input()\r\n get pickerMode() {\r\n return this._pickerMode\r\n }\r\n\r\n set pickerMode(mode: PickerMode) {\r\n if (mode === 'popup') {\r\n this._pickerMode = mode\r\n } else {\r\n this._pickerMode = 'dialog'\r\n }\r\n }\r\n\r\n private _disabled?: boolean\r\n /** Whether the date time picker should be disabled */\r\n @Input()\r\n override get disabled(): boolean {\r\n return this._disabled ?? !!this._dtInput?.disabled\r\n }\r\n\r\n override set disabled(value: boolean) {\r\n value = !!value\r\n if (value !== this._disabled) {\r\n this._disabled = value\r\n this.disabledChange.next(value)\r\n }\r\n }\r\n\r\n private _isOpen: boolean = false\r\n /** Whether the calendar is open */\r\n @Input()\r\n get isOpen(): boolean {\r\n return this._isOpen\r\n }\r\n\r\n set isOpen(val: boolean) {\r\n if (val)\r\n this.open()\r\n else\r\n this.close()\r\n }\r\n\r\n /**\r\n * The scroll strategy when the picker is open (see [CDK documentation](https://material.angular.io/cdk/overlay/overview#scroll-strategies))\r\n */\r\n @Input()\r\n scrollStrategy?: ScrollStrategy\r\n\r\n /**\r\n * Callback when the picker is opened\r\n */\r\n // eslint-disable-next-line @angular-eslint/no-output-rename\r\n @Output('open')\r\n readonly afterPickerOpened = new EventEmitter<void>()\r\n\r\n /**\r\n * Callback when the picker is closed\r\n */\r\n // eslint-disable-next-line @angular-eslint/no-output-rename\r\n @Output('close')\r\n readonly afterPickerClosed = new EventEmitter<void>()\r\n\r\n /**\r\n * Emits selected year in multi-year view\r\n *\r\n * This doesn't imply a change on the selected date.\r\n */\r\n @Output()\r\n readonly yearSelected = new EventEmitter<T>()\r\n\r\n /**\r\n * Emits selected month in year view\r\n *\r\n * This doesn't imply a change on the selected date.\r\n */\r\n @Output()\r\n readonly monthSelected = new EventEmitter<T>()\r\n\r\n /**\r\n * Emits when picker open state changes\r\n */\r\n @Output()\r\n readonly isOpenChange = new EventEmitter<boolean>()\r\n\r\n /**\r\n * Emit when the selected value has been confirmed\r\n */\r\n readonly confirmSelectedChange = new EventEmitter<Array<T | undefined> | T>()\r\n\r\n /**\r\n * Emits when the date time picker is disabled\r\n */\r\n readonly disabledChange = new EventEmitter<boolean>()\r\n\r\n private pickerContainerPortal?: ComponentPortal<\r\n DateTimeContainerComponent<T>\r\n >\r\n private pickerContainer?: DateTimeContainerComponent<T>\r\n private popupRef?: OverlayRef\r\n private dialogRef?: DialogRef<DateTimeContainerComponent<T>>\r\n private dtInputSub?: Subscription\r\n private hidePickerStreamSub?: Subscription\r\n private confirmSelectedStreamSub?: Subscription\r\n private pickerOpenedStreamSub?: Subscription\r\n\r\n /** The element that was focused before the date time picker was isOpen */\r\n private focusedElementBeforeOpen?: HTMLElement\r\n\r\n private _dtInput?: DateTimeInputDirective<T>\r\n get dtInput() {\r\n return this._dtInput\r\n }\r\n\r\n private _selected?: T\r\n get selected() {\r\n return this._selected\r\n }\r\n\r\n set selected(value: T | undefined) {\r\n this._selected = value\r\n this.changeDetector.markForCheck()\r\n }\r\n\r\n private _selecteds = new Array<T | undefined>()\r\n get selecteds() {\r\n return this._selecteds || []\r\n }\r\n\r\n set selecteds(values: Array<T | undefined>) {\r\n this._selecteds = values\r\n this.changeDetector.markForCheck()\r\n }\r\n\r\n /** The minimum selectable date */\r\n get min() {\r\n return (this._dtInput && this._dtInput.min)\r\n }\r\n\r\n /** The maximum selectable date */\r\n get max() {\r\n return (this._dtInput && this._dtInput.max)\r\n }\r\n\r\n get dateTimeFilter() {\r\n return this._dtInput?.dateTimeFilter\r\n }\r\n\r\n get selectMode() {\r\n return this._dtInput?.selectMode\r\n }\r\n\r\n get isInSingleMode() {\r\n return !!this._dtInput?.isInSingleMode\r\n }\r\n\r\n get isInRangeMode() {\r\n return !!this._dtInput?.isInRangeMode\r\n }\r\n\r\n constructor(\r\n private readonly overlay: Overlay,\r\n private readonly viewContainerRef: ViewContainerRef,\r\n private readonly dialogService: DialogService,\r\n private readonly ngZone: NgZone,\r\n protected readonly changeDetector: ChangeDetectorRef,\r\n dateTimeAdapter: DateTimeAdapter<T>,\r\n @Inject(NXT_DTPICKER_SCROLL_STRATEGY)\r\n private readonly defaultScrollStrategy: () => ScrollStrategy,\r\n @Inject(NXT_DATE_TIME_FORMATS)\r\n dateTimeFormats: DateTimeFormats,\r\n @Optional()\r\n @Inject(DOCUMENT)\r\n private readonly document?: Document\r\n ) {\r\n super(dateTimeAdapter, dateTimeFormats)\r\n }\r\n\r\n ngOnInit() { }\r\n\r\n ngOnDestroy(): void {\r\n this.close()\r\n this.dtInputSub?.unsubscribe()\r\n this.dtInputSub = undefined\r\n this.disabledChange.complete()\r\n\r\n if (this.popupRef) {\r\n this.popupRef.dispose()\r\n }\r\n }\r\n\r\n registerInput(input: DateTimeInputDirective<T>): void {\r\n if (this._dtInput) {\r\n throw Error(\r\n 'A Nxt DateTimePicker can only be associated with a single input.'\r\n )\r\n }\r\n\r\n this._dtInput = input\r\n this.dtInputSub = this._dtInput.valueChange.subscribe((value) => {\r\n if (Array.isArray(value)) {\r\n this.selecteds = value\r\n } else {\r\n this.selected = value\r\n }\r\n })\r\n }\r\n\r\n open(): void {\r\n if (this._isOpen || this.disabled) {\r\n return\r\n }\r\n\r\n if (!this._dtInput) {\r\n throw Error(\r\n 'Attempted to open an DateTimePicker with no associated input.'\r\n )\r\n }\r\n\r\n if (this.document) {\r\n this.focusedElementBeforeOpen = this.document.activeElement as HTMLElement\r\n }\r\n\r\n // reset the picker selected value\r\n if (this.isInSingleMode) {\r\n this.selected = this._dtInput.value\r\n } else if (this.isInRangeMode) {\r\n this.selecteds = this._dtInput.values\r\n }\r\n\r\n // when the picker is open , we make sure the picker's current selected time value\r\n // is the same as the _startAt time value.\r\n if (this.selected && this.pickerType !== 'calendar' && this._startAt) {\r\n this.selected = this.dateTimeAdapter.createDate(\r\n this.dateTimeAdapter.getYear(this.selected),\r\n this.dateTimeAdapter.getMonth(this.selected),\r\n this.dateTimeAdapter.getDate(this.selected),\r\n this.dateTimeAdapter.getHours(this._startAt),\r\n this.dateTimeAdapter.getMinutes(this._startAt),\r\n this.dateTimeAdapter.getSeconds(this._startAt)\r\n )\r\n }\r\n\r\n if (this.pickerMode === 'dialog')\r\n this.openAsDialog()\r\n else\r\n this.openAsPopup()\r\n\r\n if (this.pickerContainer)\r\n this.pickerContainer.picker = this\r\n\r\n // Listen to picker container's hidePickerStream\r\n this.hidePickerStreamSub = this.pickerContainer?.hidePickerStream.subscribe(\r\n () => {\r\n this.close()\r\n }\r\n )\r\n\r\n // Listen to picker container's confirmSelectedStream\r\n this.confirmSelectedStreamSub = this.pickerContainer?.confirmSelectedStream.subscribe(\r\n (event: any) => {\r\n this.confirmSelect(event)\r\n }\r\n )\r\n }\r\n\r\n /**\r\n * Selects the given date\r\n */\r\n select(date: T[] | T): void {\r\n if (Array.isArray(date)) {\r\n this.selecteds = [...date]\r\n } else {\r\n this.selected = date\r\n }\r\n\r\n /**\r\n * Cases in which automatically confirm the select when date or dates are selected:\r\n * 1) picker mode is NOT 'dialog'\r\n * 2) picker type is 'calendar' and selectMode is 'single'.\r\n * 3) picker type is 'calendar' and selectMode is 'range' and\r\n * the 'selecteds' has 'from'(selecteds[0]) and 'to'(selecteds[1]) values.\r\n * 4) selectMode is 'rangeFrom' and selecteds[0] has value.\r\n * 5) selectMode is 'rangeTo' and selecteds[1] has value.\r\n */\r\n if (\r\n this.pickerMode !== 'dialog' &&\r\n this.pickerType === 'calendar' &&\r\n ((this.selectMode === 'single' && this.selected) ||\r\n (this.selectMode === 'rangeFrom' && this.selecteds[0]) ||\r\n (this.selectMode === 'rangeTo' && this.selecteds[1]) ||\r\n (this.selectMode === 'range' &&\r\n this.selecteds[0] &&\r\n this.selecteds[1]))\r\n ) {\r\n this.confirmSelect()\r\n }\r\n }\r\n\r\n /**\r\n * Emits the selected year in multi-year view\r\n */\r\n selectYear(normalizedYear: T): void {\r\n this.yearSelected.emit(normalizedYear)\r\n }\r\n\r\n /**\r\n * Emits selected month in year view\r\n */\r\n selectMonth(normalizedMonth: T): void {\r\n this.monthSelected.emit(normalizedMonth)\r\n }\r\n\r\n /**\r\n * Hide the picker\r\n */\r\n close(): void {\r\n if (!this._isOpen) {\r\n return\r\n }\r\n\r\n if (this.popupRef && this.popupRef.hasAttached()) {\r\n this.popupRef.detach()\r\n }\r\n\r\n if (\r\n this.pickerContainerPortal &&\r\n this.pickerContainerPortal.isAttached\r\n ) {\r\n this.pickerContainerPortal.detach()\r\n }\r\n\r\n this.hidePickerStreamSub?.unsubscribe()\r\n this.hidePickerStreamSub = undefined\r\n\r\n this.confirmSelectedStreamSub?.unsubscribe()\r\n this.confirmSelectedStreamSub = undefined\r\n\r\n this.pickerOpenedStreamSub?.unsubscribe()\r\n this.pickerOpenedStreamSub = undefined\r\n\r\n if (this.dialogRef) {\r\n this.dialogRef.close()\r\n this.dialogRef = undefined\r\n }\r\n\r\n const completeClose = () => {\r\n if (this._isOpen) {\r\n this._isOpen = false\r\n this.isOpenChange.emit(this._isOpen)\r\n this.afterPickerClosed.emit()\r\n this.focusedElementBeforeOpen = undefined\r\n }\r\n }\r\n\r\n if (\r\n this.focusedElementBeforeOpen &&\r\n typeof this.focusedElementBeforeOpen.focus === 'function'\r\n ) {\r\n // Because IE moves focus asynchronously, we can't count on it being restored before we've\r\n // marked the datepicker as closed. If the event fires out of sequence and the element that\r\n // we're refocusing opens the datepicker on focus, the user could be stuck with not being\r\n // able to close the calendar at all. We work around it by making the logic, that marks\r\n // the datepicker as closed, async as well.\r\n this.focusedElementBeforeOpen.focus()\r\n setTimeout(completeClose)\r\n } else {\r\n completeClose()\r\n }\r\n }\r\n\r\n /**\r\n * Confirm the selected value\r\n */\r\n confirmSelect(_event?: any): void {\r\n if (this.isInSingleMode) {\r\n const selected =\r\n this.selected || this.startAt || this.dateTimeAdapter.now()\r\n this.confirmSelectedChange.emit(selected)\r\n } else if (this.isInRangeMode) {\r\n this.confirmSelectedChange.emit(this.selecteds)\r\n }\r\n\r\n this.close()\r\n return\r\n }\r\n\r\n /**\r\n * Open the picker as a dialog\r\n */\r\n private openAsDialog(): void {\r\n this.dialogRef = this.dialogService.open(\r\n DateTimeContainerComponent,\r\n {\r\n autoFocus: false,\r\n backdropClass: [\r\n 'cdk-overlay-dark-backdrop',\r\n ...this.backdropClass ? coerceArray(this.backdropClass) : []\r\n ],\r\n paneClass: [\r\n 'nxt-dt-dialog',\r\n ...this.panelClass ? coerceArray(this.panelClass) : []\r\n ],\r\n viewContainerRef: this.viewContainerRef,\r\n scrollStrategy: this.scrollStrategy || this.defaultScrollStrategy()\r\n }\r\n )\r\n this.pickerContainer = this.dialogRef.componentInstance\r\n\r\n this.dialogRef.afterOpen().subscribe(() => {\r\n this._isOpen = true\r\n this.isOpenChange.emit(this._isOpen)\r\n this.afterPickerOpened.emit()\r\n })\r\n this.dialogRef.afterClosed().subscribe(() => this.close())\r\n }\r\n\r\n /**\r\n * Open the picker as popup\r\n */\r\n private openAsPopup(): void {\r\n if (!this.pickerContainerPortal) {\r\n this.pickerContainerPortal = new ComponentPortal<\r\n DateTimeContainerComponent<T>\r\n >(DateTimeContainerComponent, this.viewContainerRef)\r\n }\r\n\r\n if (!this.popupRef) {\r\n this.createPopup()\r\n }\r\n\r\n if (!this.popupRef?.hasAttached()) {\r\n const componentRef: ComponentRef<\r\n DateTimeContainerComponent<T>\r\n > | undefined = this.popupRef?.attach(this.pickerContainerPortal)\r\n this.pickerContainer = componentRef?.instance\r\n\r\n // Update the position once the calendar has rendered.\r\n this.ngZone.onStable\r\n .asObservable()\r\n .pipe(take(1))\r\n .subscribe(() => {\r\n this.popupRef?.updatePosition()\r\n })\r\n\r\n // emit open stream\r\n this.pickerOpenedStreamSub = this.pickerContainer?.pickerOpenedStream\r\n .pipe(take(1))\r\n .subscribe(() => {\r\n this._isOpen = true\r\n this.isOpenChange.emit(this._isOpen)\r\n this.afterPickerOpened.emit()\r\n })\r\n }\r\n }\r\n\r\n private createPopup(): void {\r\n const overlayConfig = new OverlayConfig({\r\n positionStrategy: this.createPopupPositionStrategy(),\r\n hasBackdrop: true,\r\n backdropClass: [\r\n 'cdk-overlay-transparent-backdrop',\r\n ...this.backdropClass ? coerceArray(this.backdropClass) : []\r\n ],\r\n scrollStrategy: this.scrollStrategy || this.defaultScrollStrategy(),\r\n panelClass: [\r\n 'nxt-dt-popup',\r\n ...this.panelClass ? coerceArray(this.panelClass) : []\r\n ]\r\n })\r\n\r\n this.popupRef = this.overlay.create(overlayConfig)\r\n\r\n merge(\r\n this.popupRef.backdropClick(),\r\n this.popupRef.detachments(),\r\n this.popupRef\r\n .keydownEvents()\r\n .pipe(\r\n filter(\r\n event =>\r\n !!(event.code.toLowerCase() === 'escape' ||\r\n (this._dtInput &&\r\n event.altKey &&\r\n event.code.toLowerCase() === 'arrowup'))\r\n )\r\n )\r\n ).subscribe(() => this.close())\r\n }\r\n\r\n /**\r\n * Create the popup PositionStrategy.\r\n */\r\n private createPopupPositionStrategy(): PositionStrategy | undefined {\r\n if (this._dtInput)\r\n return this.overlay\r\n .position()\r\n .flexibleConnectedTo(this._dtInput.elementRef)\r\n .withTransformOriginOn('.nxt-dt-container')\r\n .withFlexibleDimensions(false)\r\n .withPush(false)\r\n .withPositions([\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top'\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'bottom'\r\n },\r\n {\r\n originX: 'end',\r\n originY: 'bottom',\r\n overlayX: 'end',\r\n overlayY: 'top'\r\n },\r\n {\r\n originX: 'end',\r\n originY: 'top',\r\n overlayX: 'end',\r\n overlayY: 'bottom'\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n offsetY: -176\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n offsetY: -352\r\n }\r\n ])\r\n return\r\n }\r\n}\r\n","\r\n","import { A11yModule } from '@angular/cdk/a11y'\r\nimport { OverlayModule } from '@angular/cdk/overlay'\r\nimport { PortalModule } from '@angular/cdk/portal'\r\nimport { CommonModule } from '@angular/common'\r\nimport { NgModule } from '@angular/core'\r\nimport { DialogContainerComponent } from './dialog-container/dialog-container.component'\r\nimport { DialogService, NXT_DIALOG_SCROLL_STRATEGY_PROVIDER } from './dialog.service'\r\n\r\n/** @internal */\r\n@NgModule({\r\n declarations: [\r\n DialogContainerComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n A11yModule,\r\n OverlayModule,\r\n PortalModule\r\n ],\r\n providers: [\r\n NXT_DIALOG_SCROLL_STRATEGY_PROVIDER,\r\n DialogService\r\n ]\r\n})\r\nexport class DialogModule { }\r\n","import { A11yModule } from '@angular/cdk/a11y'\r\nimport { OverlayModule } from '@angular/cdk/overlay'\r\nimport { CommonModule } from '@angular/common'\r\nimport { NgModule } from '@angular/core'\r\nimport { DialogModule } from '../dialog/dialog.module'\r\nimport { CalendarBodyComponent } from './calendar-body/calendar-body.component'\r\nimport { MonthViewComponent } from './calendar-month-view/calendar-month-view.component'\r\nimport { MultiYearViewComponent } from './calendar-multi-year-view/calendar-multi-year-view.component'\r\nimport { YearViewComponent } from './calendar-year-view/calendar-year-view.component'\r\nimport { CalendarComponent } from './calendar/calendar.component'\r\nimport { DateTimeInlineComponent } from './date-time-inline/date-time-inline.component'\r\nimport { DateTimeContainerComponent } from './date-time-picker-container/date-time-picker-container.component'\r\nimport { DateTimeInputDirective } from './date-time-picker-input.directive'\r\nimport { DateTimeIntl } from './date-time-picker-intl.service'\r\nimport { DateTimeTriggerDirective } from './date-time-picker-trigger.directive'\r\nimport { DateTimeComponent, NXT_DTPICKER_SCROLL_STRATEGY_PROVIDER } from './date-time-picker/date-time-picker.component'\r\nimport { NumberFixedLenPipe } from './number-fixed-len.pipe'\r\nimport { TimerBoxComponent } from './timer-box/timer-box.component'\r\nimport { TimerComponent } from './timer/timer.component'\r\n\r\n@NgModule({\r\n declarations: [\r\n DateTimeTriggerDirective,\r\n DateTimeInputDirective,\r\n DateTimeComponent,\r\n DateTimeContainerComponent,\r\n MultiYearViewComponent,\r\n YearViewComponent,\r\n MonthViewComponent,\r\n TimerComponent,\r\n TimerBoxComponent,\r\n CalendarComponent,\r\n CalendarBodyComponent,\r\n NumberFixedLenPipe,\r\n DateTimeInlineComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n OverlayModule,\r\n DialogModule,\r\n A11yModule\r\n ],\r\n exports: [\r\n CalendarComponent,\r\n TimerComponent,\r\n DateTimeTriggerDirective,\r\n DateTimeInputDirective,\r\n DateTimeComponent,\r\n DateTimeInlineComponent,\r\n MultiYearViewComponent,\r\n YearViewComponent,\r\n MonthViewComponent\r\n ],\r\n providers: [\r\n DateTimeIntl,\r\n NXT_DTPICKER_SCROLL_STRATEGY_PROVIDER\r\n ]\r\n})\r\nexport class DateTimeModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3.CalendarBodyComponent","i1.DateTimeIntl","i2.DateTimeAdapter","i2.CalendarBodyComponent","i5.MultiYearViewComponent","i6.YearViewComponent","i7.MonthViewComponent","i2.NumberFixedLenPipe","i4.TimerBoxComponent","i5.TimerComponent","i6.CalendarComponent","NXT_DATETIME_VALUE_ACCESSOR","i2.DateTimeContainerComponent","observableOf","i2.DialogService","i3.DateTimeAdapter"],"mappings":"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"}
1
+ {"version":3,"file":"nxt-pick-datetime.mjs","sources":["../../../packages/pick-datetime/src/lib/class/date-time-adapter.class.ts","../../../packages/pick-datetime/src/lib/class/date-time-format.class.ts","../../../packages/pick-datetime/src/lib/date-time/calendar-body/calendar-body.component.ts","../../../packages/pick-datetime/src/lib/date-time/calendar-body/calendar-body.component.html","../../../packages/pick-datetime/src/lib/date-time/calendar-month-view/calendar-month-view.component.ts","../../../packages/pick-datetime/src/lib/date-time/calendar-month-view/calendar-month-view.component.html","../../../packages/pick-datetime/src/lib/date-time/date-time-picker-intl.service.ts","../../../packages/pick-datetime/src/lib/date-time/calendar-multi-year-view/calendar-multi-year-view.component.ts","../../../packages/pick-datetime/src/lib/date-time/calendar-multi-year-view/calendar-multi-year-view.component.html","../../../packages/pick-datetime/src/lib/date-time/calendar-year-view/calendar-year-view.component.ts","../../../packages/pick-datetime/src/lib/date-time/calendar-year-view/calendar-year-view.component.html","../../../packages/pick-datetime/src/lib/date-time/calendar/calendar.component.ts","../../../packages/pick-datetime/src/lib/date-time/calendar/calendar.component.html","../../../packages/pick-datetime/src/lib/class/date-time.class.ts","../../../packages/pick-datetime/src/lib/date-time/number-fixed-len.pipe.ts","../../../packages/pick-datetime/src/lib/date-time/timer-box/timer-box.component.ts","../../../packages/pick-datetime/src/lib/date-time/timer-box/timer-box.component.html","../../../packages/pick-datetime/src/lib/date-time/timer/timer.component.ts","../../../packages/pick-datetime/src/lib/date-time/timer/timer.component.html","../../../packages/pick-datetime/src/lib/date-time/date-time-picker-container/date-time-picker-container.animations.ts","../../../packages/pick-datetime/src/lib/date-time/date-time-picker-container/date-time-picker-container.component.ts","../../../packages/pick-datetime/src/lib/date-time/date-time-picker-container/date-time-picker-container.component.html","../../../packages/pick-datetime/src/lib/date-time/date-time-inline/date-time-inline.component.ts","../../../packages/pick-datetime/src/lib/date-time/date-time-inline/date-time-inline.component.html","../../../packages/pick-datetime/src/lib/date-time/date-time-picker-input.directive.ts","../../../packages/pick-datetime/src/lib/date-time/date-time-picker-trigger.directive.ts","../../../packages/pick-datetime/src/lib/class/dialog-config.class.ts","../../../packages/pick-datetime/src/lib/class/dialog-ref.class.ts","../../../packages/pick-datetime/src/lib/utils/object.ts","../../../packages/pick-datetime/src/lib/dialog/dialog-container/dialog-container.component.ts","../../../packages/pick-datetime/src/lib/dialog/dialog-container/dialog-container.component.html","../../../packages/pick-datetime/src/lib/dialog/dialog.service.ts","../../../packages/pick-datetime/src/lib/date-time/date-time-picker/date-time-picker.component.ts","../../../packages/pick-datetime/src/lib/date-time/date-time-picker/date-time-picker.component.html","../../../packages/pick-datetime/src/lib/dialog/dialog.module.ts","../../../packages/pick-datetime/src/lib/date-time/date-time.module.ts","../../../packages/pick-datetime/src/nxt-pick-datetime.ts"],"sourcesContent":["import { Observable, Subject } from 'rxjs'\r\n\r\nexport abstract class DateTimeAdapter<T> {\r\n /** The locale to use for all dates */\r\n protected locale: any\r\n\r\n /** A stream that emits when the locale changes */\r\n protected _localeChanges = new Subject<void>()\r\n get localeChanges(): Observable<void> {\r\n return this._localeChanges\r\n }\r\n\r\n /** total milliseconds in a day */\r\n protected readonly millisecondsInDay = 86400000\r\n\r\n /** total milliseconds in a minute */\r\n protected readonly milliseondsInMinute = 60000\r\n\r\n /**\r\n * Get the year of the given date\r\n */\r\n abstract getYear(date?: T): number\r\n\r\n /**\r\n * Get the month of the given date\r\n * 0 -- January\r\n * 11 -- December\r\n * */\r\n abstract getMonth(date?: T): number\r\n\r\n /**\r\n * Get the day of the week of the given date\r\n * 0 -- Sunday\r\n * 6 -- Saturday\r\n * */\r\n abstract getDay(date?: T): number\r\n\r\n /**\r\n * Get the day num of the given date\r\n */\r\n abstract getDate(date?: T): number\r\n\r\n /**\r\n * Get the hours of the given date\r\n */\r\n abstract getHours(date?: T): number\r\n\r\n /**\r\n * Get the minutes of the given date\r\n */\r\n abstract getMinutes(date?: T): number\r\n\r\n /**\r\n * Get the seconds of the given date\r\n */\r\n abstract getSeconds(date?: T): number\r\n\r\n /**\r\n * Get the milliseconds timestamp of the given date\r\n */\r\n abstract getTime(date?: T): number\r\n\r\n /**\r\n * Gets the number of days in the month of the given date.\r\n */\r\n abstract getNumDaysInMonth(date?: T): number\r\n\r\n /**\r\n * Get the number of calendar days between the given dates.\r\n * If dateLeft is before dateRight, it would return positive value\r\n * If dateLeft is after dateRight, it would return negative value\r\n */\r\n abstract differenceInCalendarDays(dateLeft?: T, dateRight?: T): number | undefined\r\n\r\n /**\r\n * Gets the name for the year of the given date.\r\n */\r\n abstract getYearName(date?: T): string\r\n\r\n /**\r\n * Get a list of month names\r\n */\r\n abstract getMonthNames(style: 'long' | 'short' | 'narrow'): string[]\r\n\r\n /**\r\n * Get a list of week names\r\n */\r\n abstract getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[]\r\n\r\n /**\r\n * Gets a list of names for the dates of the month.\r\n */\r\n abstract getDateNames(): string[]\r\n\r\n /**\r\n * Return a Date object as a string, using the ISO standard\r\n */\r\n abstract toIso8601(date: T): string\r\n\r\n /**\r\n * Check if the give dates are equal\r\n */\r\n abstract isEqual(dateLeft?: T, dateRight?: T): boolean\r\n\r\n /**\r\n * Check if the give dates are the same day\r\n */\r\n abstract isSameDay(dateLeft?: T, dateRight?: T): boolean\r\n\r\n /**\r\n * Checks whether the given date is valid.\r\n */\r\n abstract isValid(date?: T): boolean\r\n\r\n /**\r\n * Gets date instance that is not valid.\r\n */\r\n abstract invalid(): T\r\n\r\n /**\r\n * Checks whether the given object is considered a date instance by this DateTimeAdapter.\r\n */\r\n abstract isDateInstance(obj: any): boolean\r\n\r\n /**\r\n * Add the specified number of years to the given date\r\n */\r\n abstract addCalendarYears(date: T | undefined, amount: number): T\r\n\r\n /**\r\n * Add the specified number of months to the given date\r\n */\r\n abstract addCalendarMonths(date: T | undefined, amount: number): T\r\n\r\n /**\r\n * Add the specified number of days to the given date\r\n */\r\n abstract addCalendarDays(date: T | undefined, amount: number): T\r\n\r\n /**\r\n * Set the hours to the given date.\r\n */\r\n abstract setHours(date: T | undefined, amount: number): T\r\n\r\n /**\r\n * Set the minutes to the given date.\r\n */\r\n abstract setMinutes(date: T | undefined, amount: number): T\r\n\r\n /**\r\n * Set the seconds to the given date.\r\n */\r\n abstract setSeconds(date: T | undefined, amount: number): T\r\n\r\n /**\r\n * Creates a date with the given year, month, date, hour, minute and second. Does not allow over/under-flow of the\r\n * month and date.\r\n */\r\n abstract createDate(year: number, month: number, date: number): T\r\n abstract createDate(\r\n year: number,\r\n month: number,\r\n date: number,\r\n hours: number,\r\n minutes: number,\r\n seconds: number\r\n ): T\r\n\r\n /**\r\n * Clone the given date\r\n */\r\n abstract clone(date?: T): T\r\n\r\n /**\r\n * Get a new moment\r\n * */\r\n abstract now(): T\r\n\r\n /**\r\n * Formats a date as a string according to the given format.\r\n */\r\n abstract format(date: T | undefined, displayFormat: any): string\r\n\r\n /**\r\n * Parse a user-provided value to a Date Object\r\n */\r\n abstract parse(value: any, parseFormat: any): T | undefined\r\n\r\n /**\r\n * Compare two given dates\r\n * 1 if the first date is after the second,\r\n * -1 if the first date is before the second\r\n * 0 if dates are equal.\r\n * */\r\n compare(first?: T, second?: T): number {\r\n if (!this.isValid(first) || !this.isValid(second)) {\r\n throw Error('JSNativeDate: Cannot compare invalid dates.')\r\n }\r\n\r\n const dateFirst = this.clone(first)\r\n const dateSecond = this.clone(second)\r\n\r\n const diff = this.getTime(dateFirst) - this.getTime(dateSecond)\r\n\r\n if (diff < 0) {\r\n return -1\r\n } else if (diff > 0) {\r\n return 1\r\n } else {\r\n // Return 0 if diff is 0; return NaN if diff is NaN\r\n return diff\r\n }\r\n }\r\n\r\n /**\r\n * Check if two given dates are in the same year\r\n * 1 if the first date's year is after the second,\r\n * -1 if the first date's year is before the second\r\n * 0 if two given dates are in the same year\r\n * */\r\n compareYear(first?: T, second?: T): number {\r\n if (!this.isValid(first) || !this.isValid(second)) {\r\n throw Error('JSNativeDate: Cannot compare invalid dates.')\r\n }\r\n\r\n const yearLeft = this.getYear(first)\r\n const yearRight = this.getYear(second)\r\n\r\n const diff = yearLeft - yearRight\r\n\r\n if (diff < 0) {\r\n return -1\r\n } else if (diff > 0) {\r\n return 1\r\n } else {\r\n return 0\r\n }\r\n }\r\n\r\n /**\r\n * Attempts to deserialize a value to a valid date object. This is different from parsing in that\r\n * deserialize should only accept non-ambiguous, locale-independent formats (e.g. a ISO 8601\r\n * string). The default implementation does not allow any deserialization, it simply checks that\r\n * the given value is already a valid date object or null. The `<mat-datepicker>` will call this\r\n * method on all of it's `@Input()` properties that accept dates. It is therefore possible to\r\n * support passing values from your backend directly to these properties by overriding this method\r\n * to also deserialize the format used by your backend.\r\n */\r\n deserialize(value: any): T | undefined {\r\n if (\r\n value == null || value == undefined ||\r\n (this.isDateInstance(value) && this.isValid(value))\r\n ) {\r\n return value\r\n }\r\n return this.invalid()\r\n }\r\n\r\n /**\r\n * Sets the locale used for all dates.\r\n */\r\n setLocale(locale: any) {\r\n this.locale = locale\r\n this._localeChanges.next()\r\n }\r\n\r\n /**\r\n * Clamp the given date between min and max dates.\r\n */\r\n clampDate(date: T, min?: T, max?: T): T {\r\n if (min && this.compare(date, min) < 0) {\r\n return min\r\n }\r\n if (max && this.compare(date, max) > 0) {\r\n return max\r\n }\r\n return date\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core'\r\n\r\nexport interface DateTimeFormats {\r\n parseInput: any\r\n fullPickerInput: any\r\n datePickerInput: any\r\n timePickerInput: any\r\n monthYearLabel: any\r\n dateA11yLabel: any\r\n monthYearA11yLabel: any\r\n}\r\n\r\n/** InjectionToken for date time picker that can be used to override default format */\r\nexport const NXT_DATE_TIME_FORMATS = new InjectionToken<DateTimeFormats>('NXT_DATE_TIME_FORMATS')\r\n","import { ChangeDetectionStrategy, Component, ElementRef, EventEmitter, HostBinding, Input, NgZone, OnInit, Output } from '@angular/core'\r\nimport { take } from 'rxjs/operators'\r\nimport { SelectMode } from '../../class/date-time.class'\r\n\r\nexport class CalendarCell {\r\n constructor(\r\n public value: number,\r\n public displayValue: string,\r\n public ariaLabel: string,\r\n public enabled: boolean,\r\n public out: boolean = false,\r\n public cellClass: string = ''\r\n ) { }\r\n}\r\n\r\n/** @internal */\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: '[nxtDateTimeCalendarBody]',\r\n exportAs: 'nxtDateTimeCalendarBody',\r\n templateUrl: './calendar-body.component.html',\r\n styleUrls: ['./calendar-body.component.scss'],\r\n preserveWhitespaces: false,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class CalendarBodyComponent implements OnInit {\r\n /**\r\n * The cell number of the active cell in the table.\r\n */\r\n @Input()\r\n activeCell = 0\r\n\r\n /**\r\n * The cells to display in the table.\r\n */\r\n @Input()\r\n rows?: CalendarCell[][]\r\n\r\n /**\r\n * The number of columns in the table.\r\n */\r\n @Input()\r\n numCols = 7\r\n\r\n /**\r\n * The ratio (width / height) to use for the cells in the table.\r\n */\r\n @Input()\r\n cellRatio = 1\r\n\r\n /**\r\n * The value in the table that corresponds to today.\r\n */\r\n @Input()\r\n todayValue?: number\r\n\r\n /**\r\n * The value in the table that is currently selected.\r\n */\r\n @Input()\r\n selectedValues?: Array<number | undefined>\r\n\r\n /**\r\n * Current picker select mode\r\n */\r\n @Input()\r\n selectMode?: SelectMode\r\n\r\n /**\r\n * Emit when a calendar cell is selected\r\n */\r\n @Output()\r\n\r\n readonly select = new EventEmitter<CalendarCell>()\r\n\r\n /** @internal */\r\n @HostBinding('class.nxt-dt-calendar-body')\r\n get calendarBodyClass(): boolean {\r\n return true\r\n }\r\n\r\n get isInSingleMode(): boolean {\r\n return this.selectMode === 'single'\r\n }\r\n\r\n get isInRangeMode(): boolean {\r\n return (\r\n this.selectMode === 'range' ||\r\n this.selectMode === 'rangeFrom' ||\r\n this.selectMode === 'rangeTo'\r\n )\r\n }\r\n\r\n constructor(\r\n private readonly elmRef: ElementRef<HTMLElement>,\r\n private readonly ngZone: NgZone\r\n ) { }\r\n\r\n ngOnInit() { }\r\n\r\n selectCell(cell: CalendarCell): void {\r\n this.select.emit(cell)\r\n }\r\n\r\n isActiveCell(rowIndex: number, colIndex: number): boolean {\r\n const cellNumber = rowIndex * this.numCols + colIndex\r\n return cellNumber === this.activeCell\r\n }\r\n\r\n /**\r\n * Check if the cell is selected\r\n */\r\n isSelected(value: number): boolean {\r\n if (!this.selectedValues || this.selectedValues.length === 0) {\r\n return false\r\n }\r\n\r\n if (this.isInSingleMode) {\r\n return value === this.selectedValues[0]\r\n }\r\n\r\n if (this.isInRangeMode) {\r\n const fromValue = this.selectedValues[0]\r\n const toValue = this.selectedValues[1]\r\n\r\n return value === fromValue || value === toValue\r\n }\r\n return false\r\n }\r\n\r\n /**\r\n * Check if the cell in the range\r\n */\r\n isInRange(value: number): boolean {\r\n if (this.isInRangeMode) {\r\n const fromValue = this.selectedValues?.[0]\r\n const toValue = this.selectedValues?.[1]\r\n\r\n if (fromValue !== undefined && toValue !== undefined) {\r\n return value >= fromValue && value <= toValue\r\n } else {\r\n return value === fromValue || value === toValue\r\n }\r\n }\r\n return false\r\n }\r\n\r\n /**\r\n * Check if the cell is the range from\r\n */\r\n isRangeFrom(value: number): boolean {\r\n if (this.isInRangeMode) {\r\n const fromValue = this.selectedValues?.[0]\r\n return fromValue !== undefined && value === fromValue\r\n }\r\n return false\r\n }\r\n\r\n /**\r\n * Check if the cell is the range to\r\n */\r\n isRangeTo(value: number): boolean {\r\n if (this.isInRangeMode) {\r\n const toValue = this.selectedValues?.[1]\r\n return toValue !== undefined && value === toValue\r\n }\r\n return false\r\n }\r\n\r\n /**\r\n * Focus to a active cell\r\n */\r\n focusActiveCell(): void {\r\n this.ngZone.runOutsideAngular(() => {\r\n this.ngZone.onStable\r\n .asObservable()\r\n .pipe(take(1))\r\n .subscribe(() => {\r\n this.elmRef.nativeElement\r\n ?.querySelector<HTMLElement>('.nxt-dt-calendar-cell-active')\r\n ?.focus()\r\n })\r\n })\r\n }\r\n}\r\n","<tr *ngFor=\"let row of rows; let rowIndex = index\"\r\n role=\"row\">\r\n <td *ngFor=\"let item of row; let colIndex = index\"\r\n class=\"nxt-dt-calendar-cell {{item.cellClass}}\"\r\n [tabindex]=\"isActiveCell(rowIndex, colIndex) ? 0 : -1\"\r\n [class.nxt-dt-calendar-cell-active]=\"isActiveCell(rowIndex, colIndex)\"\r\n [class.nxt-dt-calendar-cell-disabled]=\"!item.enabled\"\r\n [class.nxt-dt-calendar-cell-in-range]=\"isInRange(item.value)\"\r\n [class.nxt-dt-calendar-cell-range-from]=\"isRangeFrom(item.value)\"\r\n [class.nxt-dt-calendar-cell-range-from-long]=\"isInRange(item.value + 7)\"\r\n [class.nxt-dt-calendar-cell-range-to]=\"isRangeTo(item.value)\"\r\n [class.nxt-dt-calendar-cell-range-to-long]=\"isInRange(item.value - 7)\"\r\n [attr.aria-label]=\"item.ariaLabel\"\r\n [attr.aria-disabled]=\"!item.enabled || null\"\r\n [style.width.%]=\"100 / numCols\"\r\n [style.paddingTop.%]=\"50 * cellRatio / numCols\"\r\n [style.paddingBottom.%]=\"50 * cellRatio / numCols\"\r\n (click)=\"selectCell(item)\">\r\n <span class=\"nxt-dt-calendar-cell-content\"\r\n [ngClass]=\"{\r\n 'nxt-dt-calendar-cell-out': item.out,\r\n 'nxt-dt-calendar-cell-today': item.value === todayValue,\r\n 'nxt-dt-calendar-cell-selected': isSelected(item.value)\r\n }\">\r\n {{item.displayValue}}\r\n </span>\r\n </td>\r\n</tr>\r\n","import { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, HostBinding, Inject, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core'\r\nimport { Subscription } from 'rxjs'\r\nimport { DateTimeAdapter } from '../../class/date-time-adapter.class'\r\nimport { DateTimeFormats, NXT_DATE_TIME_FORMATS } from '../../class/date-time-format.class'\r\nimport { DateFilter, SelectMode } from '../../class/date-time.class'\r\nimport { CalendarBodyComponent, CalendarCell } from '../calendar-body/calendar-body.component'\r\n\r\n/** @internal */\r\nconst DAYS_PER_WEEK = 7\r\n\r\n/** @internal */\r\nconst WEEKS_PER_VIEW = 6\r\n\r\n@Component({\n selector: 'nxt-date-time-month-view',\n templateUrl: './calendar-month-view.component.html',\n styleUrls: ['./calendar-month-view.component.scss'],\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\r\nexport class MonthViewComponent<T> implements OnInit, AfterContentInit, OnDestroy {\r\n /**\r\n * Whether to hide dates in other months at the start or end of the current month\r\n */\r\n @Input()\r\n hideOtherMonths: boolean = false\r\n\r\n /**\r\n * Define the first day of a week\r\n * Sunday: 0 ~ Saturday: 6\r\n */\r\n private _firstDayOfWeek: number = 0\r\n @Input()\r\n get firstDayOfWeek(): number {\r\n return this._firstDayOfWeek\r\n }\r\n\r\n set firstDayOfWeek(val: number) {\r\n if (val >= 0 && val <= 6 && val !== this._firstDayOfWeek) {\r\n this._firstDayOfWeek = val\r\n\r\n if (this.initiated) {\r\n this.generateWeekDays()\r\n this.generateCalendar()\r\n this.cdRef.markForCheck()\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * The select mode of the picker;\r\n */\r\n private _selectMode: SelectMode = 'single'\r\n @Input()\r\n get selectMode(): SelectMode {\r\n return this._selectMode\r\n }\r\n\r\n set selectMode(val: SelectMode) {\r\n this._selectMode = val\r\n if (this.initiated) {\r\n this.generateCalendar()\r\n this.cdRef.markForCheck()\r\n }\r\n }\r\n\r\n /** The currently selected date */\r\n private _selected?: T\r\n @Input()\r\n get selected() {\r\n return this._selected\r\n }\r\n\r\n set selected(value: T | undefined) {\r\n const oldSelected = this._selected\r\n value = this.dateTimeAdapter.deserialize(value)\r\n this._selected = this.getValidDate(value)\r\n\r\n if (!this.dateTimeAdapter.isSameDay(oldSelected, this._selected)) {\r\n this.setSelectedDates()\r\n }\r\n }\r\n\r\n private _selecteds = new Array<T | undefined>()\r\n @Input()\r\n get selecteds() {\r\n return this._selecteds || []\r\n }\r\n\r\n set selecteds(values: Array<T | undefined>) {\r\n this._selecteds = values.map(v => {\r\n v = this.dateTimeAdapter.deserialize(v)\r\n return this.getValidDate(v)\r\n })\r\n this.setSelectedDates()\r\n }\r\n\r\n private _pickerMoment?: T\r\n @Input()\r\n get pickerMoment() {\r\n return this._pickerMoment\r\n }\r\n\r\n set pickerMoment(value: T | undefined) {\r\n const oldMoment = this._pickerMoment\r\n value = this.dateTimeAdapter.deserialize(value)\r\n this._pickerMoment =\r\n this.getValidDate(value) || this.dateTimeAdapter.now()\r\n\r\n this.firstDateOfMonth = this.dateTimeAdapter.createDate(\r\n this.dateTimeAdapter.getYear(this._pickerMoment),\r\n this.dateTimeAdapter.getMonth(this._pickerMoment),\r\n 1\r\n )\r\n\r\n if (\r\n !this.isSameMonth(oldMoment, this._pickerMoment) &&\r\n this.initiated\r\n ) {\r\n this.generateCalendar()\r\n }\r\n }\r\n\r\n /**\r\n * A function used to filter which dates are selectable\r\n */\r\n private _dateTimeFilter?: DateFilter<T>\r\n @Input()\r\n get dateTimeFilter() {\r\n return this._dateTimeFilter\r\n }\r\n\r\n set dateTimeFilter(filter: DateFilter<T> | undefined) {\r\n this._dateTimeFilter = filter\r\n if (this.initiated) {\r\n this.generateCalendar()\r\n this.cdRef.markForCheck()\r\n }\r\n }\r\n\r\n /** The minimum selectable date */\r\n private _minDate?: T\r\n @Input()\r\n get min() {\r\n return this._minDate\r\n }\r\n\r\n set min(value: T | undefined) {\r\n value = this.dateTimeAdapter.deserialize(value)\r\n this._minDate = this.getValidDate(value)\r\n if (this.initiated) {\r\n this.generateCalendar()\r\n this.cdRef.markForCheck()\r\n }\r\n }\r\n\r\n /** The maximum selectable date */\r\n private _maxDate?: T\r\n @Input()\r\n get max() {\r\n return this._maxDate\r\n }\r\n\r\n set max(value: T | undefined) {\r\n value = this.dateTimeAdapter.deserialize(value)\r\n this._maxDate = this.getValidDate(value)\r\n\r\n if (this.initiated) {\r\n this.generateCalendar()\r\n this.cdRef.markForCheck()\r\n }\r\n }\r\n\r\n private _weekdays?: Array<{ long: string, short: string, narrow: string }>\r\n get weekdays() {\r\n return this._weekdays\r\n }\r\n\r\n private _days?: CalendarCell[][]\r\n get days() {\r\n return this._days\r\n }\r\n\r\n get activeCell() {\r\n if (this.pickerMoment) {\r\n return (\r\n this.dateTimeAdapter.getDate(this.pickerMoment) +\r\n this.firstRowOffset -\r\n 1\r\n )\r\n }\r\n return\r\n }\r\n\r\n get isInSingleMode(): boolean {\r\n return this.selectMode === 'single'\r\n }\r\n\r\n get isInRangeMode(): boolean {\r\n return (\r\n this.selectMode === 'range' ||\r\n this.selectMode === 'rangeFrom' ||\r\n this.selectMode === 'rangeTo'\r\n )\r\n }\r\n\r\n private firstDateOfMonth?: T\r\n\r\n private localeSub?: Subscription\r\n\r\n private initiated = false\r\n\r\n /**\r\n * The date of the month that today falls on.\r\n */\r\n todayDate?: number\r\n\r\n /**\r\n * An array to hold all selectedDates' value\r\n * the value is the day number in current month\r\n */\r\n selectedDates?: Array<number | undefined>\r\n\r\n // the index of cell that contains the first date of the month\r\n firstRowOffset: number = 0\r\n\r\n /**\r\n * Callback to invoke when a new date is selected\r\n */\r\n @Output()\r\n readonly selectedChange = new EventEmitter<T | undefined>()\r\n\r\n /**\r\n * Callback to invoke when any date is selected.\r\n */\r\n @Output()\r\n readonly userSelection = new EventEmitter<void>()\r\n\r\n /** Emits when any date is activated */\r\n @Output()\r\n readonly pickerMomentChange = new EventEmitter<T>()\r\n\r\n /** The body of calendar table */\r\n @ViewChild(CalendarBodyComponent, { static: true })\r\n private calendarBodyElm?: CalendarBodyComponent\r\n\r\n /** @internal */\r\n @HostBinding('class.nxt-dt-calendar-view')\r\n get calendarView(): boolean {\r\n return true\r\n }\r\n\r\n constructor(\r\n private readonly cdRef: ChangeDetectorRef,\r\n private readonly dateTimeAdapter: DateTimeAdapter<T>,\r\n @Inject(NXT_DATE_TIME_FORMATS)\r\n private readonly dateTimeFormats: DateTimeFormats\r\n ) { }\r\n\r\n ngOnInit() {\r\n this.generateWeekDays()\r\n\r\n this.localeSub = this.dateTimeAdapter.localeChanges.subscribe(() => {\r\n this.generateWeekDays()\r\n this.generateCalendar()\r\n this.cdRef.markForCheck()\r\n })\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.generateCalendar()\r\n this.initiated = true\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.localeSub?.unsubscribe()\r\n this.localeSub = undefined\r\n }\r\n\r\n /**\r\n * Handle a calendarCell selected\r\n */\r\n selectCalendarCell(cell: CalendarCell): void {\r\n // Cases in which the date would not be selected\r\n // 1, the calendar cell is NOT enabled (is NOT valid)\r\n // 2, the selected date is NOT in current picker's month and the hideOtherMonths is enabled\r\n if (!cell.enabled || (this.hideOtherMonths && cell.out)) {\r\n return\r\n }\r\n\r\n this.selectDate(cell.value)\r\n }\r\n\r\n /**\r\n * Handle a new date selected\r\n */\r\n private selectDate(date: number): void {\r\n const daysDiff = date - 1\r\n const selected = this.dateTimeAdapter.addCalendarDays(\r\n this.firstDateOfMonth,\r\n daysDiff\r\n )\r\n\r\n this.selectedChange.emit(selected)\r\n this.userSelection.emit()\r\n }\r\n\r\n /**\r\n * Handle keydown event on calendar body\r\n */\r\n handleCalendarKeydown(event: KeyboardEvent): void {\r\n let moment\r\n switch (event.code.toLowerCase()) {\r\n // minus 1 day\r\n case 'arrowleft':\r\n moment = this.dateTimeAdapter.addCalendarDays(\r\n this.pickerMoment,\r\n -1\r\n )\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // add 1 day\r\n case 'arrowright':\r\n moment = this.dateTimeAdapter.addCalendarDays(\r\n this.pickerMoment,\r\n 1\r\n )\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // minus 1 week\r\n case 'arrowup':\r\n moment = this.dateTimeAdapter.addCalendarDays(\r\n this.pickerMoment,\r\n -7\r\n )\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // add 1 week\r\n case 'arrowdown':\r\n moment = this.dateTimeAdapter.addCalendarDays(\r\n this.pickerMoment,\r\n 7\r\n )\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // move to first day of current month\r\n case 'home':\r\n moment = this.dateTimeAdapter.addCalendarDays(\r\n this.pickerMoment,\r\n 1 - this.dateTimeAdapter.getDate(this.pickerMoment)\r\n )\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // move to last day of current month\r\n case 'end':\r\n moment = this.dateTimeAdapter.addCalendarDays(\r\n this.pickerMoment,\r\n this.dateTimeAdapter.getNumDaysInMonth(this.pickerMoment) -\r\n this.dateTimeAdapter.getDate(this.pickerMoment)\r\n )\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // minus 1 month (or 1 year)\r\n case 'pageup':\r\n moment = event.altKey\r\n ? this.dateTimeAdapter.addCalendarYears(\r\n this.pickerMoment,\r\n -1\r\n )\r\n : this.dateTimeAdapter.addCalendarMonths(\r\n this.pickerMoment,\r\n -1\r\n )\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // add 1 month (or 1 year)\r\n case 'pagedown':\r\n moment = event.altKey\r\n ? this.dateTimeAdapter.addCalendarYears(\r\n this.pickerMoment,\r\n 1\r\n )\r\n : this.dateTimeAdapter.addCalendarMonths(\r\n this.pickerMoment,\r\n 1\r\n )\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // select the pickerMoment\r\n case 'enter':\r\n if (!this.dateTimeFilter || this.dateTimeFilter(this.pickerMoment, 'date')) {\r\n this.selectDate(\r\n this.dateTimeAdapter.getDate(this.pickerMoment)\r\n )\r\n }\r\n break\r\n default:\r\n return\r\n }\r\n\r\n this.focusActiveCell()\r\n event.preventDefault()\r\n }\r\n\r\n /**\r\n * Generate the calendar weekdays array\r\n */\r\n private generateWeekDays(): void {\r\n const longWeekdays = this.dateTimeAdapter.getDayOfWeekNames('long')\r\n const shortWeekdays = this.dateTimeAdapter.getDayOfWeekNames('short')\r\n const narrowWeekdays = this.dateTimeAdapter.getDayOfWeekNames('narrow')\r\n const firstDayOfWeek = this.firstDayOfWeek\r\n\r\n const weekdays = longWeekdays.map((long, i) => ({ long, short: shortWeekdays[i], narrow: narrowWeekdays[i] }))\r\n\r\n this._weekdays = weekdays\r\n .slice(firstDayOfWeek)\r\n .concat(weekdays.slice(0, firstDayOfWeek))\r\n\r\n return\r\n }\r\n\r\n /**\r\n * Generate the calendar days array\r\n */\r\n private generateCalendar(): void {\r\n if (!this.pickerMoment) {\r\n return\r\n }\r\n\r\n this.todayDate = undefined\r\n\r\n // the first weekday of the month\r\n const startWeekdayOfMonth = this.dateTimeAdapter.getDay(\r\n this.firstDateOfMonth\r\n )\r\n const firstDayOfWeek = this.firstDayOfWeek\r\n\r\n // the amount of days from the first date of the month\r\n // if it is < 0, it means the date is in previous month\r\n let daysDiff =\r\n 0 -\r\n ((startWeekdayOfMonth + (DAYS_PER_WEEK - firstDayOfWeek)) %\r\n DAYS_PER_WEEK)\r\n\r\n // the index of cell that contains the first date of the month\r\n this.firstRowOffset = Math.abs(daysDiff)\r\n\r\n this._days = []\r\n for (let i = 0; i < WEEKS_PER_VIEW; i++) {\r\n const week = []\r\n for (let j = 0; j < DAYS_PER_WEEK; j++) {\r\n const date = this.dateTimeAdapter.addCalendarDays(\r\n this.firstDateOfMonth,\r\n daysDiff\r\n )\r\n const dateCell = this.createDateCell(date, daysDiff)\r\n\r\n // check if the date is today\r\n if (\r\n this.dateTimeAdapter.isSameDay(\r\n this.dateTimeAdapter.now(),\r\n date\r\n )\r\n ) {\r\n this.todayDate = daysDiff + 1\r\n }\r\n\r\n week.push(dateCell)\r\n daysDiff += 1\r\n }\r\n this._days.push(week)\r\n }\r\n\r\n this.setSelectedDates()\r\n }\r\n\r\n /**\r\n * Creates CalendarCell for days.\r\n */\r\n private createDateCell(date: T, daysDiff: number): CalendarCell {\r\n // total days of the month\r\n const daysInMonth = this.dateTimeAdapter.getNumDaysInMonth(\r\n this.pickerMoment\r\n )\r\n const dateNum = this.dateTimeAdapter.getDate(date)\r\n // const dateName = this.dateNames[dateNum - 1];\r\n const dateName = dateNum.toString()\r\n const ariaLabel = this.dateTimeAdapter.format(\r\n date,\r\n this.dateTimeFormats.dateA11yLabel\r\n )\r\n\r\n // check if the date if selectable\r\n const enabled = this.isDateEnabled(date)\r\n\r\n // check if date is not in current month\r\n const dayValue = daysDiff + 1\r\n const out = dayValue < 1 || dayValue > daysInMonth\r\n const cellClass = 'nxt-dt-day-' + this.dateTimeAdapter.getDay(date)\r\n\r\n return new CalendarCell(\r\n dayValue,\r\n dateName,\r\n ariaLabel,\r\n enabled,\r\n out,\r\n cellClass\r\n )\r\n }\r\n\r\n /**\r\n * Check if the date is valid\r\n */\r\n private isDateEnabled(date: T): boolean {\r\n return (\r\n !!date &&\r\n (!this.dateTimeFilter || this.dateTimeFilter(date, 'date')) &&\r\n (!this.min ||\r\n this.dateTimeAdapter.compare(date, this.min) >= 0) &&\r\n (!this.max ||\r\n this.dateTimeAdapter.compare(date, this.max) <= 0)\r\n )\r\n }\r\n\r\n /**\r\n * Get a valid date object\r\n */\r\n private getValidDate(obj: any): T | undefined {\r\n return this.dateTimeAdapter.isDateInstance(obj) &&\r\n this.dateTimeAdapter.isValid(obj)\r\n ? obj\r\n : undefined\r\n }\r\n\r\n /**\r\n * Check if the give dates are defined and in the same month\r\n */\r\n isSameMonth(dateLeft?: T, dateRight?: T): boolean {\r\n return !!(\r\n dateLeft &&\r\n dateRight &&\r\n this.dateTimeAdapter.isValid(dateLeft) &&\r\n this.dateTimeAdapter.isValid(dateRight) &&\r\n this.dateTimeAdapter.getYear(dateLeft) ===\r\n this.dateTimeAdapter.getYear(dateRight) &&\r\n this.dateTimeAdapter.getMonth(dateLeft) ===\r\n this.dateTimeAdapter.getMonth(dateRight)\r\n )\r\n }\r\n\r\n /**\r\n * Set the selectedDates value.\r\n * In single mode, it has only one value which represent the selected date\r\n * In range mode, it would has two values, one for the fromValue and the other for the toValue\r\n */\r\n private setSelectedDates(): void {\r\n this.selectedDates = []\r\n\r\n if (!this.firstDateOfMonth) {\r\n return\r\n }\r\n\r\n if (this.isInSingleMode && this.selected) {\r\n const dayDiff = this.dateTimeAdapter.differenceInCalendarDays(\r\n this.selected,\r\n this.firstDateOfMonth\r\n ) ?? 0\r\n this.selectedDates[0] = dayDiff + 1\r\n return\r\n }\r\n\r\n if (this.isInRangeMode && this.selecteds) {\r\n this.selectedDates = this.selecteds.map(selected => {\r\n if (this.dateTimeAdapter.isValid(selected)) {\r\n const dayDiff = this.dateTimeAdapter.differenceInCalendarDays(\r\n selected,\r\n this.firstDateOfMonth\r\n ) ?? 0\r\n return dayDiff + 1\r\n }\r\n return\r\n })\r\n }\r\n }\r\n\r\n private focusActiveCell() {\r\n this.calendarBodyElm?.focusActiveCell()\r\n }\r\n}\r\n","<table class=\"nxt-dt-calendar-table nxt-dt-calendar-month-table\"\r\n [class.nxt-dt-calendar-only-current-month]=\"hideOtherMonths\">\r\n <thead class=\"nxt-dt-calendar-header\">\r\n <tr class=\"nxt-dt-weekdays\">\r\n <th *ngFor=\"let weekday of weekdays\"\r\n [attr.aria-label]=\"weekday.long\"\r\n class=\"nxt-dt-weekday\"\r\n scope=\"col\">\r\n <span>{{weekday.short}}</span>\r\n </th>\r\n </tr>\r\n <tr>\r\n <th class=\"nxt-dt-calendar-table-divider\"\r\n aria-hidden=\"true\"\r\n colspan=\"7\"></th>\r\n </tr>\r\n </thead>\r\n <!-- eslint-disable-next-line @angular-eslint/template/interactive-supports-focus -->\r\n <tbody nxtDateTimeCalendarBody\r\n role=\"grid\"\r\n [rows]=\"days\"\r\n [todayValue]=\"todayDate ?? undefined\"\r\n [selectedValues]=\"selectedDates\"\r\n [selectMode]=\"selectMode\"\r\n [activeCell]=\"activeCell ?? 0\"\r\n (keydown)=\"handleCalendarKeydown($event)\"\r\n (select)=\"selectCalendarCell($event)\">\r\n </tbody>\r\n</table>\r\n","import { Injectable } from '@angular/core'\r\nimport { LocalizeFn } from '@angular/localize/init'\r\nimport { Subject } from 'rxjs'\r\n\r\n/** @internal */\r\ndeclare const $localize: LocalizeFn\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DateTimeIntl {\r\n\r\n /**\r\n * Stream that emits whenever the labels here are changed. Use this to notify\r\n * components if the labels have changed after initialization.\r\n */\r\n readonly changes: Subject<void> = new Subject<void>()\r\n\r\n /** A label for the up second button (used by screen readers). */\r\n upSecondLabel = $localize`:@@nxt-pick-datetime.up-second:Add a second`\r\n\r\n /** A label for the down second button (used by screen readers). */\r\n downSecondLabel = $localize`:@@nxt-pick-datetime.down-second:Minus a second`\r\n\r\n /** A label for the up minute button (used by screen readers). */\r\n upMinuteLabel = $localize`:@@nxt-pick-datetime.up-minute:Add a minute`\r\n\r\n /** A label for the down minute button (used by screen readers). */\r\n downMinuteLabel = $localize`:@@nxt-pick-datetime.down-minute:Minus a minute`\r\n\r\n /** A label for the up hour button (used by screen readers). */\r\n upHourLabel = $localize`:@@nxt-pick-datetime.up-hour:Add a hour`\r\n\r\n /** A label for the down hour button (used by screen readers). */\r\n downHourLabel = $localize`:@@nxt-pick-datetime.down-hour:Minus a hour`\r\n\r\n /** A label for the previous month button (used by screen readers) */\r\n prevMonthLabel = $localize`:@@nxt-pick-datetime.prev-month:Previous month`\r\n\r\n /** A label for the next month button (used by screen readers) */\r\n nextMonthLabel = $localize`:@@nxt-pick-datetime.next-month:Next month`\r\n\r\n /** A label for the previous year button (used by screen readers) */\r\n prevYearLabel = $localize`:@@nxt-pick-datetime.prev-year:Previous year`\r\n\r\n /** A label for the next year button (used by screen readers) */\r\n nextYearLabel = $localize`:@@nxt-pick-datetime.next-year:Next year`\r\n\r\n /** A label for the previous multi-year button (used by screen readers) */\r\n prevMultiYearLabel = $localize`:@@nxt-pick-datetime.prev-multi-year:Previous 21 years`\r\n\r\n /** A label for the next multi-year button (used by screen readers) */\r\n nextMultiYearLabel = $localize`:@@nxt-pick-datetime.next-multi-year:Next 21 years`\r\n\r\n /** A label for the 'switch to month view' button (used by screen readers) */\r\n switchToMonthViewLabel = $localize`:@@nxt-pick-datetime.switch-to-month:Change to month view`\r\n\r\n /** A label for the 'switch to year view' button (used by screen readers) */\r\n switchToMultiYearViewLabel = $localize`:@@nxt-pick-datetime.switch-to-year-month:Choose month and year`\r\n\r\n /** A label for the cancel button */\r\n cancelBtnLabel = $localize`:@@nxt-pick-datetime.cancel:Cancel`\r\n\r\n /** A label for the set button */\r\n setBtnLabel = $localize`:@@nxt-pick-datetime.set:Set`\r\n\r\n /** A label for the range 'from' in picker info */\r\n rangeFromLabel = $localize`:@@nxt-pick-datetime.from:From`\r\n\r\n /** A label for the range 'to' in picker info */\r\n rangeToLabel = $localize`:@@nxt-pick-datetime.to:To`\r\n\r\n /** A label for the hour12 button (AM) */\r\n hour12AMLabel = $localize`:@@nxt-pick-datetime.time-am:AM`\r\n\r\n /** A label for the hour12 button (PM) */\r\n hour12PMLabel = $localize`:@@nxt-pick-datetime.time-pm:PM`\r\n}\r\n","import { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, HostBinding, Input, OnInit, Output, ViewChild } from '@angular/core'\r\nimport { DateTimeAdapter } from '../../class/date-time-adapter.class'\r\nimport { DateFilter, SelectMode } from '../../class/date-time.class'\r\nimport { CalendarCell, CalendarBodyComponent } from '../calendar-body/calendar-body.component'\r\nimport { DateTimeIntl } from '../date-time-picker-intl.service'\r\n\r\n/** @internal */\r\nexport const YEARS_PER_ROW = 3\r\n\r\n/** @internal */\r\nexport const YEAR_ROWS = 7\r\n\r\n@Component({\r\n selector: 'nxt-date-time-multi-year-view',\r\n templateUrl: './calendar-multi-year-view.component.html',\r\n styleUrls: ['./calendar-multi-year-view.component.scss'],\r\n preserveWhitespaces: false,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\n\r\nexport class MultiYearViewComponent<T> implements OnInit, AfterContentInit {\r\n\r\n /**\r\n * The select mode of the picker;\r\n */\r\n private _selectMode: SelectMode = 'single'\r\n @Input()\r\n get selectMode(): SelectMode {\r\n return this._selectMode\r\n }\r\n\r\n set selectMode(val: SelectMode) {\r\n this._selectMode = val\r\n if (this.initiated) {\r\n this.setSelectedYears()\r\n this.cdRef.markForCheck()\r\n }\r\n }\r\n\r\n /** The currently selected date */\r\n private _selected?: T\r\n @Input()\r\n get selected() {\r\n return this._selected\r\n }\r\n\r\n set selected(value: T | undefined) {\r\n const oldSelected = this._selected\r\n value = this.dateTimeAdapter.deserialize(value)\r\n this._selected = this.getValidDate(value)\r\n\r\n if (!this.dateTimeAdapter.isSameDay(oldSelected, this._selected)) {\r\n this.setSelectedYears()\r\n }\r\n }\r\n\r\n private _selecteds = new Array<T | undefined>()\r\n @Input()\r\n get selecteds() {\r\n return this._selecteds\r\n }\r\n\r\n set selecteds(values: Array<T | undefined>) {\r\n this._selecteds = values.map((v) => {\r\n v = this.dateTimeAdapter.deserialize(v)\r\n return this.getValidDate(v)\r\n })\r\n this.setSelectedYears()\r\n }\r\n\r\n private _pickerMoment?: T\r\n @Input()\r\n get pickerMoment() {\r\n return this._pickerMoment\r\n }\r\n\r\n set pickerMoment(value: T | undefined) {\r\n const oldMoment = this._pickerMoment\r\n value = this.dateTimeAdapter.deserialize(value)\r\n this._pickerMoment = this.getValidDate(value) || this.dateTimeAdapter.now()\r\n\r\n if (oldMoment && this._pickerMoment &&\r\n !this.isSameYearList(oldMoment, this._pickerMoment)) {\r\n this.generateYearList()\r\n }\r\n }\r\n\r\n /**\r\n * A function used to filter which dates are selectable\r\n */\r\n private _dateTimeFilter?: DateFilter<T>\r\n @Input()\r\n get dateTimeFilter() {\r\n return this._dateTimeFilter\r\n }\r\n\r\n set dateTimeFilter(filter: DateFilter<T> | undefined) {\r\n this._dateTimeFilter = filter\r\n if (this.initiated) {\r\n this.generateYearList()\r\n }\r\n }\r\n\r\n /** The minimum selectable date */\r\n private _minDate?: T\r\n @Input()\r\n get min() {\r\n return this._minDate\r\n }\r\n\r\n set min(value: T | undefined) {\r\n value = this.dateTimeAdapter.deserialize(value)\r\n this._minDate = this.getValidDate(value)\r\n if (this.initiated) {\r\n this.generateYearList()\r\n }\r\n }\r\n\r\n /** The maximum selectable date */\r\n private _maxDate?: T\r\n @Input()\r\n get max() {\r\n return this._maxDate\r\n }\r\n\r\n set max(value: T | undefined) {\r\n value = this.dateTimeAdapter.deserialize(value)\r\n this._maxDate = this.getValidDate(value)\r\n if (this.initiated) {\r\n this.generateYearList()\r\n }\r\n }\r\n\r\n private _todayYear?: number\r\n get todayYear() {\r\n return this._todayYear\r\n }\r\n\r\n private _years?: CalendarCell[][]\r\n get years() {\r\n return this._years\r\n }\r\n\r\n private _selectedYears?: Array<number | undefined>\r\n get selectedYears() {\r\n return this._selectedYears\r\n }\r\n\r\n private initiated = false\r\n\r\n get isInSingleMode(): boolean {\r\n return this.selectMode === 'single'\r\n }\r\n\r\n get isInRangeMode(): boolean {\r\n return this.selectMode === 'range' || this.selectMode === 'rangeFrom'\r\n || this.selectMode === 'rangeTo'\r\n }\r\n\r\n get activeCell(): number | undefined {\r\n if (this._pickerMoment) {\r\n return this.dateTimeAdapter.getYear(this._pickerMoment) % (YEARS_PER_ROW * YEAR_ROWS)\r\n }\r\n return\r\n }\r\n\r\n get tableHeader(): string | undefined {\r\n if (this._years && this._years.length > 0) {\r\n return `${this._years[0][0].displayValue} ~ ${this._years[YEAR_ROWS - 1][YEARS_PER_ROW - 1].displayValue}`\r\n }\r\n return\r\n }\r\n\r\n get prevButtonLabel(): string {\r\n return this.pickerIntl.prevMultiYearLabel\r\n }\r\n\r\n get nextButtonLabel(): string {\r\n return this.pickerIntl.nextMultiYearLabel\r\n }\r\n\r\n /**\r\n * Callback to invoke when a new month is selected\r\n */\r\n\r\n @Output()\r\n readonly change = new EventEmitter<T>()\r\n\r\n /**\r\n * Emits the selected year\r\n *\r\n * This doesn't imply a change on the selected date.\r\n */\r\n @Output()\r\n readonly yearSelected = new EventEmitter<T>()\r\n\r\n /** Emits when any date is activated */\r\n @Output()\r\n readonly pickerMomentChange: EventEmitter<T> = new EventEmitter<T>()\r\n\r\n /** Emits when use keyboard enter to select a calendar cell */\r\n @Output()\r\n readonly keyboardEnter = new EventEmitter<void>()\r\n\r\n /** The body of calendar table */\r\n @ViewChild(CalendarBodyComponent, { static: true })\r\n private calendarBodyElm?: CalendarBodyComponent\r\n\r\n /** @internal */\r\n @HostBinding('class.nxt-dt-calendar-view')\r\n get calendarView(): boolean {\r\n return true\r\n }\r\n\r\n /** @internal */\r\n @HostBinding('class.nxt-dt-calendar-multi-year-view')\r\n get calendarMultiYearView(): boolean {\r\n return true\r\n }\r\n\r\n constructor(\r\n private readonly cdRef: ChangeDetectorRef,\r\n private readonly pickerIntl: DateTimeIntl,\r\n private readonly dateTimeAdapter: DateTimeAdapter<T>\r\n ) { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this._todayYear = this.dateTimeAdapter.getYear(this.dateTimeAdapter.now())\r\n this.generateYearList()\r\n this.initiated = true\r\n }\r\n\r\n /**\r\n * Handle a calendarCell selected\r\n */\r\n selectCalendarCell(cell: CalendarCell): void {\r\n this.selectYear(cell.value)\r\n }\r\n\r\n private selectYear(year: number): void {\r\n this.yearSelected.emit(this.dateTimeAdapter.createDate(year, 0, 1))\r\n const firstDateOfMonth = this.dateTimeAdapter.createDate(\r\n year,\r\n this.dateTimeAdapter.getMonth(this.pickerMoment),\r\n 1\r\n )\r\n const daysInMonth = this.dateTimeAdapter.getNumDaysInMonth(firstDateOfMonth)\r\n const selected = this.dateTimeAdapter.createDate(\r\n year,\r\n this.dateTimeAdapter.getMonth(this.pickerMoment),\r\n Math.min(daysInMonth, this.dateTimeAdapter.getDate(this.pickerMoment)),\r\n this.dateTimeAdapter.getHours(this.pickerMoment),\r\n this.dateTimeAdapter.getMinutes(this.pickerMoment),\r\n this.dateTimeAdapter.getSeconds(this.pickerMoment)\r\n )\r\n\r\n this.change.emit(selected)\r\n }\r\n\r\n /**\r\n * Generate the previous year list\r\n */\r\n prevYearList(event: any): void {\r\n this._pickerMoment = this.dateTimeAdapter.addCalendarYears(this.pickerMoment, -1 * YEAR_ROWS * YEARS_PER_ROW)\r\n this.generateYearList()\r\n event.preventDefault()\r\n }\r\n\r\n /**\r\n * Generate the next year list\r\n */\r\n nextYearList(event: any): void {\r\n this._pickerMoment = this.dateTimeAdapter.addCalendarYears(this.pickerMoment, YEAR_ROWS * YEARS_PER_ROW)\r\n this.generateYearList()\r\n event.preventDefault()\r\n }\r\n\r\n generateYearList(): void {\r\n this._years = []\r\n\r\n const pickerMomentYear = this.dateTimeAdapter.getYear(this._pickerMoment)\r\n const offset = pickerMomentYear % (YEARS_PER_ROW * YEAR_ROWS)\r\n\r\n for (let i = 0; i < YEAR_ROWS; i++) {\r\n const row = []\r\n\r\n for (let j = 0; j < YEARS_PER_ROW; j++) {\r\n const year = pickerMomentYear - offset + (j + i * YEARS_PER_ROW)\r\n const yearCell = this.createYearCell(year)\r\n row.push(yearCell)\r\n }\r\n\r\n this._years.push(row)\r\n }\r\n\r\n return\r\n\r\n }\r\n\r\n /** Whether the previous period button is enabled */\r\n previousEnabled(): boolean {\r\n if (!this.min) {\r\n return true\r\n }\r\n return !this.min || !this.isSameYearList(this._pickerMoment, this.min)\r\n }\r\n\r\n /** Whether the next period button is enabled */\r\n nextEnabled(): boolean {\r\n return !this.max || !this.isSameYearList(this._pickerMoment, this.max)\r\n }\r\n\r\n handleCalendarKeydown(event: KeyboardEvent): void {\r\n let moment\r\n switch (event.code.toLowerCase()) {\r\n // minus 1 year\r\n case 'arrowleft':\r\n moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment, -1)\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // add 1 year\r\n case 'arrowright':\r\n moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment, 1)\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // minus 3 years\r\n case 'arrowup':\r\n moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment, -1 * YEARS_PER_ROW)\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // add 3 years\r\n case 'arrowdown':\r\n moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment, YEARS_PER_ROW)\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // go to the first year of the year page\r\n case 'home':\r\n moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment,\r\n -this.dateTimeAdapter.getYear(this._pickerMoment) % (YEARS_PER_ROW * YEAR_ROWS))\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // go to the last year of the year page\r\n case 'end':\r\n moment = this.dateTimeAdapter.addCalendarYears(this._pickerMoment,\r\n (YEARS_PER_ROW * YEAR_ROWS) - this.dateTimeAdapter.getYear(this._pickerMoment) % (YEARS_PER_ROW * YEAR_ROWS) - 1)\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // minus 1 year page (or 10 year pages)\r\n case 'pageup':\r\n moment = this.dateTimeAdapter.addCalendarYears(this.pickerMoment, event.altKey ? -10 * (YEARS_PER_ROW * YEAR_ROWS) : -1 * (YEARS_PER_ROW * YEAR_ROWS))\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // add 1 year page (or 10 year pages)\r\n case 'pagedown':\r\n moment = this.dateTimeAdapter.addCalendarYears(this.pickerMoment, event.altKey ? 10 * (YEARS_PER_ROW * YEAR_ROWS) : (YEARS_PER_ROW * YEAR_ROWS))\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n case 'enter':\r\n this.selectYear(this.dateTimeAdapter.getYear(this._pickerMoment))\r\n this.keyboardEnter.emit()\r\n break\r\n\r\n default:\r\n return\r\n }\r\n\r\n this.focusActiveCell()\r\n event.preventDefault()\r\n }\r\n\r\n /**\r\n * Creates an CalendarCell for the given year.\r\n */\r\n private createYearCell(year: number): CalendarCell {\r\n const startDateOfYear = this.dateTimeAdapter.createDate(year, 0, 1)\r\n const ariaLabel = this.dateTimeAdapter.getYearName(startDateOfYear)\r\n const cellClass = 'nxt-dt-year-' + year\r\n return new CalendarCell(year, year.toString(), ariaLabel, this.isYearEnabled(year), false, cellClass)\r\n }\r\n\r\n private setSelectedYears(): void {\r\n\r\n this._selectedYears = []\r\n\r\n if (this.isInSingleMode && this.selected) {\r\n this._selectedYears[0] = this.dateTimeAdapter.getYear(this.selected)\r\n }\r\n\r\n if (this.isInRangeMode && this.selecteds) {\r\n this._selectedYears = this.selecteds.map((selected) => {\r\n if (this.dateTimeAdapter.isValid(selected)) {\r\n return this.dateTimeAdapter.getYear(selected)\r\n }\r\n return\r\n })\r\n }\r\n }\r\n\r\n /** Whether the given year is enabled */\r\n private isYearEnabled(year: number) {\r\n\r\n // enable if it reaches here and there's no filter defined\r\n if (!this.dateTimeFilter) {\r\n return true\r\n }\r\n\r\n const firstOfYear = this.dateTimeAdapter.createDate(year, 0, 1)\r\n\r\n // If any date in the year is enabled count the year as enabled.\r\n for (let date = firstOfYear; this.dateTimeAdapter.getYear(date) == year;\r\n date = this.dateTimeAdapter.addCalendarDays(date, 1)) {\r\n if (this.dateTimeFilter(date, 'year')) {\r\n return true\r\n }\r\n }\r\n\r\n return false\r\n }\r\n\r\n private isSameYearList(date1?: T, date2?: T): boolean {\r\n return Math.floor(this.dateTimeAdapter.getYear(date1) / (YEARS_PER_ROW * YEAR_ROWS)) ===\r\n Math.floor(this.dateTimeAdapter.getYear(date2) / (YEARS_PER_ROW * YEAR_ROWS))\r\n }\r\n\r\n /**\r\n * Get a valid date object\r\n */\r\n private getValidDate(obj: any): T | undefined {\r\n return (this.dateTimeAdapter.isDateInstance(obj) && this.dateTimeAdapter.isValid(obj))\r\n ? obj\r\n : undefined\r\n }\r\n\r\n private focusActiveCell() {\r\n this.calendarBodyElm?.focusActiveCell()\r\n }\r\n}\r\n","<button class=\"nxt-dt-control-button nxt-dt-control-arrow-button\"\r\n [disabled]=\"!previousEnabled()\"\r\n [attr.aria-label]=\"prevButtonLabel\"\r\n type=\"button\"\r\n tabindex=\"0\"\r\n (click)=\"prevYearList($event)\">\r\n <span class=\"nxt-dt-control-button-content\"\r\n tabindex=\"-1\">\r\n <!-- <editor-fold desc=\"SVG Arrow Left\"> -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n version=\"1.1\"\r\n x=\"0px\"\r\n y=\"0px\"\r\n viewBox=\"0 0 250.738 250.738\"\r\n style=\"enable-background:new 0 0 250.738 250.738;\"\r\n xml:space=\"preserve\"\r\n width=\"100%\"\r\n height=\"100%\">\r\n <path style=\"fill-rule: evenodd; clip-rule: evenodd;\"\r\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\" />\r\n </svg>\r\n <!-- </editor-fold> -->\r\n </span>\r\n</button>\r\n<table class=\"nxt-dt-calendar-table nxt-dt-calendar-multi-year-table\">\r\n <thead class=\"nxt-dt-calendar-header\">\r\n <tr>\r\n <th colspan=\"3\">{{tableHeader}}</th>\r\n </tr>\r\n </thead>\r\n <!-- eslint-disable-next-line @angular-eslint/template/interactive-supports-focus -->\r\n <tbody nxtDateTimeCalendarBody\r\n role=\"grid\"\r\n [rows]=\"years\"\r\n [numCols]=\"3\"\r\n [cellRatio]=\"3 / 7\"\r\n [activeCell]=\"activeCell ?? 0\"\r\n [todayValue]=\"todayYear\"\r\n [selectedValues]=\"selectedYears\"\r\n [selectMode]=\"selectMode\"\r\n (keydown)=\"handleCalendarKeydown($event)\"\r\n (select)=\"selectCalendarCell($event)\"></tbody>\r\n</table>\r\n<button class=\"nxt-dt-control-button nxt-dt-control-arrow-button\"\r\n [disabled]=\"!nextEnabled()\"\r\n [attr.aria-label]=\"nextButtonLabel\"\r\n type=\"button\"\r\n tabindex=\"0\"\r\n (click)=\"nextYearList($event)\">\r\n <span class=\"nxt-dt-control-button-content\"\r\n tabindex=\"-1\">\r\n <!-- <editor-fold desc=\"SVG Arrow Right\"> -->\r\n <svg version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n x=\"0px\"\r\n y=\"0px\"\r\n viewBox=\"0 0 250.738 250.738\"\r\n style=\"enable-background:new 0 0 250.738 250.738;\"\r\n xml:space=\"preserve\">\r\n <path style=\"fill-rule:evenodd;clip-rule:evenodd;\"\r\n d=\"M191.75,111.689L84.766,5.291c-7.1-7.055-18.613-7.055-25.713,0\r\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\r\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\r\n C197.237,120.447,195.534,115.448,191.75,111.689z\" />\r\n </svg>\r\n <!-- </editor-fold> -->\r\n </span>\r\n</button>\r\n","import { AfterContentInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, HostBinding, Inject, Input, OnDestroy, OnInit, Output, ViewChild } from '@angular/core'\r\nimport { Subscription } from 'rxjs'\r\nimport { DateTimeAdapter } from '../../class/date-time-adapter.class'\r\nimport { DateTimeFormats, NXT_DATE_TIME_FORMATS } from '../../class/date-time-format.class'\r\nimport { DateFilter, SelectMode } from '../../class/date-time.class'\r\nimport { CalendarCell, CalendarBodyComponent } from '../calendar-body/calendar-body.component'\r\n\r\n/** @internal */\r\nconst MONTHS_PER_YEAR = 12\r\n\r\n/** @internal */\r\nconst MONTHS_PER_ROW = 3\r\n\r\n@Component({\r\n selector: 'nxt-date-time-year-view',\r\n templateUrl: './calendar-year-view.component.html',\r\n styleUrls: ['./calendar-year-view.component.scss'],\r\n preserveWhitespaces: false,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: false\r\n})\r\nexport class YearViewComponent<T> implements OnInit, AfterContentInit, OnDestroy {\r\n /**\r\n * The select mode of the picker;\r\n */\r\n private _selectMode: SelectMode = 'single'\r\n @Input()\r\n get selectMode(): SelectMode {\r\n return this._selectMode\r\n }\r\n\r\n set selectMode(val: SelectMode) {\r\n this._selectMode = val\r\n if (this.initiated) {\r\n this.generateMonthList()\r\n this.cdRef.markForCheck()\r\n }\r\n }\r\n\r\n /** The currently selected date */\r\n private _selected?: T\r\n @Input()\r\n get selected() {\r\n return this._selected\r\n }\r\n\r\n set selected(value: T | undefined) {\r\n value = this.dateTimeAdapter.deserialize(value)\r\n this._selected = this.getValidDate(value)\r\n this.setSelectedMonths()\r\n }\r\n\r\n private _selecteds = new Array<T | undefined>()\r\n @Input()\r\n get selecteds() {\r\n return this._selecteds\r\n }\r\n\r\n set selecteds(values: Array<T | undefined>) {\r\n this._selecteds = []\r\n values.forEach(val => {\r\n const value = this.dateTimeAdapter.deserialize(val)\r\n this._selecteds!.push(this.getValidDate(value))\r\n })\r\n\r\n this.setSelectedMonths()\r\n }\r\n\r\n private _pickerMoment?: T\r\n @Input()\r\n get pickerMoment() {\r\n return this._pickerMoment\r\n }\r\n\r\n set pickerMoment(value: T | undefined) {\r\n const oldMoment = this._pickerMoment\r\n value = this.dateTimeAdapter.deserialize(value)\r\n this._pickerMoment =\r\n this.getValidDate(value) || this.dateTimeAdapter.now()\r\n\r\n if (\r\n !this.hasSameYear(oldMoment, this._pickerMoment) &&\r\n this.initiated\r\n ) {\r\n this.generateMonthList()\r\n }\r\n }\r\n\r\n /**\r\n * A function used to filter which dates are selectable\r\n */\r\n private _dateTimeFilter?: DateFilter<T>\r\n @Input()\r\n get dateTimeFilter() {\r\n return this._dateTimeFilter\r\n }\r\n\r\n set dateTimeFilter(filter: DateFilter<T> | undefined) {\r\n this._dateTimeFilter = filter\r\n if (this.initiated) {\r\n this.generateMonthList()\r\n }\r\n }\r\n\r\n /** The minimum selectable date */\r\n private _minDate?: T\r\n @Input()\r\n get min() {\r\n return this._minDate\r\n }\r\n\r\n set min(value: T | undefined) {\r\n value = this.dateTimeAdapter.deserialize(value)\r\n this._minDate = this.getValidDate(value)\r\n if (this.initiated) {\r\n this.generateMonthList()\r\n }\r\n }\r\n\r\n /** The maximum selectable date */\r\n private _maxDate?: T\r\n @Input()\r\n get max() {\r\n return this._maxDate\r\n }\r\n\r\n set max(value: T | undefined) {\r\n value = this.dateTimeAdapter.deserialize(value)\r\n this._maxDate = this.getValidDate(value)\r\n if (this.initiated) {\r\n this.generateMonthList()\r\n }\r\n }\r\n\r\n private readonly monthNames: string[]\r\n\r\n private _months?: CalendarCell[][]\r\n get months() {\r\n return this._months\r\n }\r\n\r\n get activeCell(): number | undefined {\r\n if (this._pickerMoment) {\r\n return this.dateTimeAdapter.getMonth(this._pickerMoment)\r\n }\r\n return\r\n }\r\n\r\n get isInSingleMode(): boolean {\r\n return this.selectMode === 'single'\r\n }\r\n\r\n get isInRangeMode(): boolean {\r\n return (\r\n this.selectMode === 'range' ||\r\n this.selectMode === 'rangeFrom' ||\r\n this.selectMode === 'rangeTo'\r\n )\r\n }\r\n\r\n private localeSub?: Subscription\r\n\r\n private initiated = false\r\n\r\n todayMonth?: number\r\n\r\n /**\r\n * An array to hold all selectedDates' month value\r\n * the value is the month number in current year\r\n */\r\n selectedMonths?: Array<number | undefined>\r\n\r\n /**\r\n * Callback to invoke when a new month is selected\r\n */\r\n @Output()\r\n\r\n readonly change = new EventEmitter<T>()\r\n\r\n /**\r\n * Emits the selected year\r\n *\r\n * This doesn't imply a change on the selected date.\r\n */\r\n @Output()\r\n readonly monthSelected = new EventEmitter<T>()\r\n\r\n /** Emits when any date is activated */\r\n @Output()\r\n readonly pickerMomentChange = new EventEmitter<T>()\r\n\r\n /** Emits when use keyboard enter to select a calendar cell */\r\n @Output()\r\n readonly keyboardEnter = new EventEmitter<void>()\r\n\r\n /** The body of calendar table */\r\n @ViewChild(CalendarBodyComponent, { static: true })\r\n private calendarBodyElm?: CalendarBodyComponent\r\n\r\n /** @internal */\r\n @HostBinding('class.nxt-dt-calendar-view')\r\n get calendarView(): boolean {\r\n return true\r\n }\r\n\r\n constructor(\r\n private readonly cdRef: ChangeDetectorRef,\r\n private readonly dateTimeAdapter: DateTimeAdapter<T>,\r\n @Inject(NXT_DATE_TIME_FORMATS)\r\n private readonly dateTimeFormats: DateTimeFormats\r\n ) {\r\n this.monthNames = this.dateTimeAdapter.getMonthNames('short')\r\n }\r\n\r\n ngOnInit() {\r\n this.localeSub = this.dateTimeAdapter.localeChanges.subscribe(() => {\r\n this.generateMonthList()\r\n this.cdRef.markForCheck()\r\n })\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.generateMonthList()\r\n this.initiated = true\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.localeSub?.unsubscribe()\r\n this.localeSub = undefined\r\n }\r\n\r\n /**\r\n * Handle a calendarCell selected\r\n */\r\n selectCalendarCell(cell: CalendarCell): void {\r\n this.selectMonth(cell.value)\r\n }\r\n\r\n /**\r\n * Handle a new month selected\r\n */\r\n private selectMonth(month: number): void {\r\n const firstDateOfMonth = this.dateTimeAdapter.createDate(\r\n this.dateTimeAdapter.getYear(this.pickerMoment),\r\n month,\r\n 1\r\n )\r\n\r\n this.monthSelected.emit(firstDateOfMonth)\r\n\r\n const daysInMonth = this.dateTimeAdapter.getNumDaysInMonth(\r\n firstDateOfMonth\r\n )\r\n const result = this.dateTimeAdapter.createDate(\r\n this.dateTimeAdapter.getYear(this.pickerMoment),\r\n month,\r\n Math.min(\r\n daysInMonth,\r\n this.dateTimeAdapter.getDate(this.pickerMoment)\r\n ),\r\n this.dateTimeAdapter.getHours(this.pickerMoment),\r\n this.dateTimeAdapter.getMinutes(this.pickerMoment),\r\n this.dateTimeAdapter.getSeconds(this.pickerMoment)\r\n )\r\n\r\n this.change.emit(result)\r\n }\r\n\r\n /**\r\n * Handle keydown event on calendar body\r\n */\r\n handleCalendarKeydown(event: KeyboardEvent): void {\r\n let moment\r\n switch (event.code.toLowerCase()) {\r\n // minus 1 month\r\n case 'arrowleft':\r\n moment = this.dateTimeAdapter.addCalendarMonths(\r\n this.pickerMoment,\r\n -1\r\n )\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // add 1 month\r\n case 'arrowright':\r\n moment = this.dateTimeAdapter.addCalendarMonths(\r\n this.pickerMoment,\r\n 1\r\n )\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // minus 3 months\r\n case 'arrowup':\r\n moment = this.dateTimeAdapter.addCalendarMonths(\r\n this.pickerMoment,\r\n -3\r\n )\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // add 3 months\r\n case 'arrowdown':\r\n moment = this.dateTimeAdapter.addCalendarMonths(\r\n this.pickerMoment,\r\n 3\r\n )\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // move to first month of current year\r\n case 'home':\r\n moment = this.dateTimeAdapter.addCalendarMonths(\r\n this.pickerMoment,\r\n -this.dateTimeAdapter.getMonth(this.pickerMoment)\r\n )\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // move to last month of current year\r\n case 'end':\r\n moment = this.dateTimeAdapter.addCalendarMonths(\r\n this.pickerMoment,\r\n 11 - this.dateTimeAdapter.getMonth(this.pickerMoment)\r\n )\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // minus 1 year (or 10 year)\r\n case 'pageup':\r\n moment = this.dateTimeAdapter.addCalendarYears(\r\n this.pickerMoment,\r\n event.altKey ? -10 : -1\r\n )\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // add 1 year (or 10 year)\r\n case 'pagedown':\r\n moment = this.dateTimeAdapter.addCalendarYears(\r\n this.pickerMoment,\r\n event.altKey ? 10 : 1\r\n )\r\n this.pickerMomentChange.emit(moment)\r\n break\r\n\r\n // Select current month\r\n case 'enter':\r\n this.selectMonth(\r\n this.dateTimeAdapter.getMonth(this.pickerMoment)\r\n )\r\n this.keyboardEnter.emit()\r\n break\r\n default:\r\n return\r\n }\r\n\r\n this.focusActiveCell()\r\n event.preventDefault()\r\n }\r\n\r\n /**\r\n * Generate the calendar month list\r\n */\r\n private generateMonthList(): void {\r\n if (!this.pickerMoment) {\r\n return\r\n }\r\n\r\n this.setSelectedMonths()\r\n this.todayMonth = this.getMonthInCurrentYear(\r\n this.dateTimeAdapter.now()\r\n )\r\n\r\n this._months = []\r\n for (let i = 0; i < MONTHS_PER_YEAR / MONTHS_PER_ROW; i++) {\r\n const row = []\r\n\r\n for (let j = 0; j < MONTHS_PER_ROW; j++) {\r\n const month = j + i * MONTHS_PER_ROW\r\n const monthCell = this.createMonthCell(month)\r\n row.push(monthCell)\r\n }\r\n\r\n this._months.push(row)\r\n }\r\n\r\n return\r\n }\r\n\r\n /**\r\n * Creates an CalendarCell for the given month.\r\n */\r\n private createMonthCell(month: number): CalendarCell {\r\n const startDateOfMonth = this.dateTimeAdapter.createDate(\r\n this.dateTimeAdapter.getYear(this.pickerMoment),\r\n month,\r\n 1\r\n )\r\n const ariaLabel = this.dateTimeAdapter.format(\r\n startDateOfMonth,\r\n this.dateTimeFormats.monthYearA11yLabel\r\n )\r\n const cellClass = 'nxt-dt-month-' + month\r\n return new CalendarCell(\r\n month,\r\n this.monthNames[month],\r\n ariaLabel,\r\n this.isMonthEnabled(month),\r\n false,\r\n cellClass\r\n )\r\n }\r\n\r\n /**\r\n * Check if the given month is enable\r\n */\r\n private isMonthEnabled(month: number): boolean {\r\n const firstDateOfMonth = this.dateTimeAdapter.createDate(\r\n this.dateTimeAdapter.getYear(this.pickerMoment),\r\n month,\r\n 1\r\n )\r\n\r\n // If any date in the month is selectable,\r\n // we count the month as enable\r\n for (\r\n let date = firstDateOfMonth;\r\n this.dateTimeAdapter.getMonth(date) === month;\r\n date = this.dateTimeAdapter.addCalendarDays(date, 1)\r\n ) {\r\n if (\r\n !!date &&\r\n (!this.dateTimeFilter || this.dateTimeFilter(date, 'month')) &&\r\n (!this.min ||\r\n this.dateTimeAdapter.compare(date, this.min) >= 0) &&\r\n (!this.max ||\r\n this.dateTimeAdapter.compare(date, this.max) <= 0)\r\n ) {\r\n return true\r\n }\r\n }\r\n\r\n return false\r\n }\r\n\r\n /**\r\n * Gets the month in this year that the given Date falls on.\r\n * Returns undefined if the given Date is in another year.\r\n */\r\n private getMonthInCurrentYear(date?: T): number | undefined {\r\n if (this.getValidDate(date) && this.getValidDate(this._pickerMoment)) {\r\n const result = this.dateTimeAdapter.compareYear(\r\n date,\r\n this._pickerMoment\r\n )\r\n\r\n // < 0 : the given date's year is before pickerMoment's year, we return -1 as selected month value.\r\n // > 0 : the given date's year is after pickerMoment's year, we return 12 as selected month value.\r\n // 0 : the give date's year is same as the pickerMoment's year, we return the actual month value.\r\n if (result < 0) {\r\n return -1\r\n } else if (result > 0) {\r\n return 12\r\n } else {\r\n return this.dateTimeAdapter.getMonth(date)\r\n }\r\n }\r\n return\r\n }\r\n\r\n /**\r\n * Set the selectedMonths value\r\n * In single mode, it has only one value which represent the month the selected date in\r\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\r\n */\r\n private setSelectedMonths(): void {\r\n this.selectedMonths = []\r\n if (this.isInSingleMode && this.selected) {\r\n this.selectedMonths[0] = this.getMonthInCurrentYear(this.selected)\r\n }\r\n\r\n if (this.isInRangeMode && this.selecteds) {\r\n this.selectedMonths[0] = this.getMonthInCurrentYear(\r\n this.selecteds[0]\r\n )\r\n this.selectedMonths[1] = this.getMonthInCurrentYear(\r\n this.selecteds[1]\r\n )\r\n }\r\n }\r\n\r\n /**\r\n * Check the given dates are in the same year\r\n */\r\n private hasSameYear(dateLeft?: T, dateRight?: T) {\r\n return !!(\r\n dateLeft &&\r\n dateRight &&\r\n this.dateTimeAdapter.getYear(dateLeft) ===\r\n this.dateTimeAdapter.getYear(dateRight)\r\n )\r\n }\r\n\r\n /**\r\n * Get a valid date object\r\n */\r\n private getValidDate(obj: any): T | undefined {\r\n return this.dateTimeAdapter.isDateInstance(obj) &&\r\n this.dateTimeAdapter.isValid(obj)\r\n ? obj\r\n : undefined\r\n }\r\n\r\n private focusActiveCell() {\r\n this.calendarBodyElm?.focusActiveCell()\r\n }\r\n}\r\n","<table class=\"nxt-dt-calendar-table nxt-dt-calendar-year-table\">\r\n <thead class=\"nxt-dt-calendar-header\">\r\n <tr>\r\n <th class=\"nxt-dt-calendar-table-divider\"\r\n aria-hidden=\"true\"\r\n colspan=\"3\"></th>\r\n </tr>\r\n </thead>\r\n <!-- eslint-disable-next-line @angular-eslint/template/interactive-supports-focus -->\r\n <tbody nxtDateTimeCalendarBody\r\n role=\"grid\"\r\n [rows]=\"months\"\r\n [numCols]=\"3\"\r\n [cellRatio]=\"3 / 7\"\r\n [activeCell]=\"activeCell ?? 0\"\r\n [todayValue]=\"todayMonth??undefined\"\r\n [selectedValues]=\"selectedMonths\"\r\n [selectMode]=\"selectMode\"\r\n (keydown)=\"handleCalendarKeydown($event)\"\r\n (select)=\"selectCalendarCell($event)\">\r\n </tbody>\r\n</table>\r\n","import { AfterContentInit, AfterViewChecked, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostBinding, Inject, Input, NgZone, OnDestroy, OnInit, Output } from '@angular/core'\r\nimport { Subscription } from 'rxjs'\r\nimport { take } from 'rxjs/operators'\r\nimport { DateTimeAdapter } from '../../class/date-time-adapter.class'\r\nimport { DateTimeFormats, NXT_DATE_TIME_FORMATS } from '../../class/date-time-format.class'\r\nimport { DateFilter, SelectMode } from '../../class/date-time.class'\r\nimport { DateTimeIntl } from '../date-time-picker-intl.service'\r\n\r\n@Component({\n selector: 'nxt-date-time-calendar',\n templateUrl: './calendar.component.html',\n styleUrls: ['./calendar.component.scss'],\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\r\nexport class CalendarComponent<T> implements OnInit, AfterContentInit, AfterViewChecked, OnDestroy {\r\n /**\r\n * Date filter for the month and year view\r\n */\r\n @Input()\r\n dateTimeFilter?: DateFilter<T>\r\n\r\n /**\r\n * Set the first day of week\r\n */\r\n @Input()\r\n firstDayOfWeek = 0\r\n\r\n /** The minimum selectable date */\r\n private _minDate?: T\r\n @Input()\r\n get min() {\r\n return this._minDate\r\n }\r\n\r\n set min(value: T | undefined) {\r\n value = this.dateTimeAdapter.deserialize(value)\r\n value = this.getValidDate(value)\r\n\r\n this._minDate = value\r\n ? this.dateTimeAdapter.createDate(\r\n this.dateTimeAdapter.getYear(value),\r\n this.dateTimeAdapter.getMonth(value),\r\n this.dateTimeAdapter.getDate(value)\r\n )\r\n : undefined\r\n }\r\n\r\n /** The maximum selectable date */\r\n private _maxDate?: T\r\n @Input()\r\n get max() {\r\n return this._maxDate\r\n }\r\n\r\n set max(value: T | undefined) {\r\n value = this.dateTimeAdapter.deserialize(value)\r\n value = this.getValidDate(value)\r\n\r\n this._maxDate = value\r\n ? this.dateTimeAdapter.createDate(\r\n this.dateTimeAdapter.getYear(value),\r\n this.dateTimeAdapter.getMonth(value),\r\n this.dateTimeAdapter.getDate(value)\r\n )\r\n : undefined\r\n }\r\n\r\n /** The current picker moment */\r\n private _pickerMoment?: T\r\n @Input()\r\n get pickerMoment() {\r\n return this._pickerMoment\r\n }\r\n\r\n set pickerMoment(value: T | undefined) {\r\n value = this.dateTimeAdapter.deserialize(value)\r\n this._pickerMoment =\r\n this.getValidDate(value) || this.dateTimeAdapter.now()\r\n }\r\n\r\n @Input()\r\n selectMode?: SelectMode\r\n\r\n /** The currently selected moment */\r\n private _selected?: T\r\n @Input()\r\n get selected() {\r\n return this._selected\r\n }\r\n\r\n set selected(value: T | undefined) {\r\n value = this.dateTimeAdapter.deserialize(value)\r\n this._selected = this.getValidDate(value)\r\n }\r\n\r\n private _selecteds = new Array<T | undefined>()\r\n @Input()\r\n get selecteds() {\r\n return this._selecteds\r\n }\r\n\r\n set selecteds(values: Array<T | undefined>) {\r\n this._selecteds = values.map(v => {\r\n v = this.dateTimeAdapter.deserialize(v)\r\n return this.getValidDate(v)\r\n })\r\n }\r\n\r\n /**\r\n * The view that the calendar should start in\r\n */\r\n @Input()\r\n startView: 'month' | 'year' | 'multi-years' = 'month'\r\n\r\n /**\r\n * Whether to hide dates in other months at the start or end of the current month\r\n */\r\n @Input()\r\n hideOtherMonths: boolean = false\r\n\r\n /** Emits when the currently picker moment changes */\r\n @Output()\r\n readonly pickerMomentChange = new EventEmitter<T>()\r\n\r\n /** Emits when the currently selected date changes */\r\n @Output()\r\n readonly selectedChange = new EventEmitter<T | undefined>()\r\n\r\n /** Emits when any date is selected */\r\n @Output()\r\n readonly userSelection = new EventEmitter<void>()\r\n\r\n /**\r\n * Emits the selected year\r\n *\r\n * This doesn't imply a change on the selected date.\r\n */\r\n @Output()\r\n readonly yearSelected = new EventEmitter<T>()\r\n\r\n /**\r\n * Emits the selected month\r\n *\r\n * This doesn't imply a change on the selected date.\r\n */\r\n @Output()\r\n readonly monthSelected = new EventEmitter<T>()\r\n\r\n get periodButtonText(): string {\r\n return this.isMonthView\r\n ? this.dateTimeAdapter.format(\r\n this.pickerMoment,\r\n this.dateTimeFormats.monthYearLabel\r\n )\r\n : this.dateTimeAdapter.getYearName(this.pickerMoment)\r\n }\r\n\r\n get periodButtonLabel(): string {\r\n return this.isMonthView\r\n ? this.pickerIntl.switchToMultiYearViewLabel\r\n : this.pickerIntl.switchToMonthViewLabel\r\n }\r\n\r\n get prevButtonLabel() {\r\n if (this._currentView === 'month') {\r\n return this.pickerIntl.prevMonthLabel\r\n } else if (this._currentView === 'year') {\r\n return this.pickerIntl.prevYearLabel\r\n }\r\n return\r\n }\r\n\r\n get nextButtonLabel() {\r\n if (this._currentView === 'month') {\r\n return this.pickerIntl.nextMonthLabel\r\n } else if (this._currentView === 'year') {\r\n return this.pickerIntl.nextYearLabel\r\n }\r\n return\r\n }\r\n\r\n private _currentView?: 'month' | 'year' | 'multi-years'\r\n get currentView() {\r\n return this._currentView\r\n }\r\n\r\n set currentView(view: 'month' | 'year' | 'multi-years' | undefined) {\r\n this._currentView = view\r\n this.moveFocusOnNextTick = true\r\n }\r\n\r\n get isInSingleMode(): boolean {\r\n return this.selectMode === 'single'\r\n }\r\n\r\n get isInRangeMode(): boolean {\r\n return (\r\n this.selectMode === 'range' ||\r\n this.selectMode === 'rangeFrom' ||\r\n this.selectMode === 'rangeTo'\r\n )\r\n }\r\n\r\n get showControlArrows(): boolean {\r\n return this._currentView !== 'multi-years'\r\n }\r\n\r\n get isMonthView() {\r\n return this._currentView === 'month'\r\n }\r\n\r\n /**\r\n * Date filter for the month and year view\r\n */\r\n dateTimeFilterForViews = (date?: T) => (\r\n !!date &&\r\n (!this.dateTimeFilter || this.dateTimeFilter(date, 'date')) &&\r\n (!this.min ||\r\n this.dateTimeAdapter.compare(date, this.min) >= 0) &&\r\n (!this.max ||\r\n this.dateTimeAdapter.compare(date, this.max) <= 0)\r\n )\r\n\r\n /**\r\n * Bind class 'nxt-dt-calendar' to host\r\n *\r\n * @internal\r\n */\r\n @HostBinding('class.nxt-dt-calendar')\r\n get calendarClass(): boolean {\r\n return true\r\n }\r\n\r\n private intlChangesSub?: Subscription\r\n\r\n /**\r\n * Used for scheduling that focus should be moved to the active cell on the next tick.\r\n * We need to schedule it, rather than do it immediately, because we have to wait\r\n * for Angular to re-evaluate the view children.\r\n */\r\n private moveFocusOnNextTick = false\r\n\r\n constructor(\r\n private readonly elmRef: ElementRef<HTMLElement>,\r\n private readonly pickerIntl: DateTimeIntl,\r\n private readonly ngZone: NgZone,\r\n private readonly cdRef: ChangeDetectorRef,\r\n private readonly dateTimeAdapter: DateTimeAdapter<T>,\r\n @Inject(NXT_DATE_TIME_FORMATS)\r\n private readonly dateTimeFormats: DateTimeFormats\r\n ) {\r\n this.intlChangesSub = this.pickerIntl.changes.subscribe(() => {\r\n this.cdRef.markForCheck()\r\n })\r\n }\r\n\r\n ngOnInit() { }\r\n\r\n ngAfterContentInit(): void {\r\n this._currentView = this.startView\r\n }\r\n\r\n ngAfterViewChecked() {\r\n if (this.moveFocusOnNextTick) {\r\n this.moveFocusOnNextTick = false\r\n this.focusActiveCell()\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.intlChangesSub?.unsubscribe()\r\n this.intlChangesSub = undefined\r\n }\r\n\r\n /**\r\n * Toggle between month view and year view\r\n */\r\n toggleViews(): void {\r\n this.currentView =\r\n this._currentView == 'month' ? 'multi-years' : 'month'\r\n }\r\n\r\n /**\r\n * Handles user clicks on the previous button.\r\n */\r\n previousClicked(): void {\r\n this.pickerMoment = this.isMonthView\r\n ? this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, -1)\r\n : this.dateTimeAdapter.addCalendarYears(this.pickerMoment, -1)\r\n\r\n this.pickerMomentChange.emit(this.pickerMoment)\r\n }\r\n\r\n /**\r\n * Handles user clicks on the next button.\r\n */\r\n nextClicked(): void {\r\n this.pickerMoment = this.isMonthView\r\n ? this.dateTimeAdapter.addCalendarMonths(this.pickerMoment, 1)\r\n : this.dateTimeAdapter.addCalendarYears(this.pickerMoment, 1)\r\n\r\n this.pickerMomentChange.emit(this.pickerMoment)\r\n }\r\n\r\n dateSelected(date?: T): void {\r\n if (!this.dateTimeFilterForViews(date)) {\r\n return\r\n }\r\n\r\n this.selectedChange.emit(date)\r\n\r\n /*if ((this.isInSingleMode && !this.dateTimeAdapter.isSameDay(date, this.selected)) ||\r\n this.isInRangeMode) {\r\n this.selectedChange.emit(date);\r\n }*/\r\n }\r\n\r\n /**\r\n * Change the pickerMoment value and switch to a specific view\r\n */\r\n goToDateInView(\r\n date: T,\r\n view: 'month' | 'year' | 'multi-years'\r\n ): void {\r\n this.handlePickerMomentChange(date)\r\n this.currentView = view\r\n return\r\n }\r\n\r\n /**\r\n * Change the pickerMoment value\r\n */\r\n handlePickerMomentChange(date: T): void {\r\n this.pickerMoment = this.dateTimeAdapter.clampDate(\r\n date,\r\n this.min,\r\n this.max\r\n )\r\n this.pickerMomentChange.emit(this.pickerMoment)\r\n return\r\n }\r\n\r\n userSelected(): void {\r\n this.userSelection.emit()\r\n }\r\n\r\n /**\r\n * Whether the previous period button is enabled.\r\n */\r\n prevButtonEnabled(): boolean {\r\n return (\r\n !this.min || !this.isSameView(this.pickerMoment, this.min)\r\n )\r\n }\r\n\r\n /**\r\n * Whether the next period button is enabled.\r\n */\r\n nextButtonEnabled(): boolean {\r\n return (\r\n !this.max || !this.isSameView(this.pickerMoment, this.max)\r\n )\r\n }\r\n\r\n /**\r\n * Focus to the host element\r\n */\r\n focusActiveCell() {\r\n this.ngZone.runOutsideAngular(() => {\r\n this.ngZone.onStable\r\n .asObservable()\r\n .pipe(take(1))\r\n .subscribe(() => {\r\n this.elmRef.nativeElement\r\n ?.querySelector<HTMLElement>('.nxt-dt-calendar-cell-active')\r\n ?.focus()\r\n })\r\n })\r\n }\r\n\r\n selectYearInMultiYearView(normalizedYear: T): void {\r\n this.yearSelected.emit(normalizedYear)\r\n }\r\n\r\n selectMonthInYearView(normalizedMonth: T): void {\r\n this.monthSelected.emit(normalizedMonth)\r\n }\r\n\r\n /**\r\n * Whether the two dates represent the same view in the current view mode (month or year).\r\n */\r\n private isSameView(date1?: T, date2?: T): boolean {\r\n if (this._currentView === 'month') {\r\n return !!(\r\n date1 &&\r\n date2 &&\r\n this.dateTimeAdapter.getYear(date1) ===\r\n this.dateTimeAdapter.getYear(date2) &&\r\n this.dateTimeAdapter.getMonth(date1) ===\r\n this.dateTimeAdapter.getMonth(date2)\r\n )\r\n } else if (this._currentView === 'year') {\r\n return !!(\r\n date1 &&\r\n date2 &&\r\n this.dateTimeAdapter.getYear(date1) ===\r\n this.dateTimeAdapter.getYear(date2)\r\n )\r\n } else {\r\n return false\r\n }\r\n }\r\n\r\n /**\r\n * Get a valid date object\r\n */\r\n private getValidDate(obj: any): T | undefined {\r\n return this.dateTimeAdapter.isDateInstance(obj) &&\r\n this.dateTimeAdapter.isValid(obj)\r\n ? obj\r\n : undefined\r\n }\r\n}\r\n","<div class=\"nxt-dt-calendar-control\">\r\n <!-- focus when keyboard tab (http://kizu.ru/en/blog/keyboard-only-focus/#x) -->\r\n <button class=\"nxt-dt-control nxt-dt-control-button nxt-dt-control-arrow-button\"\r\n type=\"button\"\r\n tabindex=\"0\"\r\n [style.visibility]=\"showControlArrows? 'visible': 'hidden'\"\r\n [disabled]=\"!prevButtonEnabled()\"\r\n [attr.aria-label]=\"prevButtonLabel\"\r\n (click)=\"previousClicked()\">\r\n <span class=\"nxt-dt-control-content nxt-dt-control-button-content\"\r\n tabindex=\"-1\">\r\n <!-- <editor-fold desc=\"SVG Arrow Left\"> -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n version=\"1.1\"\r\n x=\"0px\"\r\n y=\"0px\"\r\n viewBox=\"0 0 250.738 250.738\"\r\n style=\"enable-background:new 0 0 250.738 250.738;\"\r\n xml:space=\"preserve\"\r\n width=\"100%\"\r\n height=\"100%\">\r\n <path style=\"fill-rule: evenodd; clip-rule: evenodd;\"\r\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\" />\r\n </svg>\r\n <!-- </editor-fold> -->\r\n </span>\r\n </button>\r\n <div class=\"nxt-dt-calendar-control-content\">\r\n <button class=\"nxt-dt-control nxt-dt-control-button nxt-dt-control-period-button\"\r\n type=\"button\"\r\n tabindex=\"0\"\r\n [attr.aria-label]=\"periodButtonLabel\"\r\n (click)=\"toggleViews()\">\r\n <span class=\"nxt-dt-control-content nxt-dt-control-button-content\"\r\n tabindex=\"-1\">\r\n {{periodButtonText}}\r\n\r\n <span class=\"nxt-dt-control-button-arrow\"\r\n [style.transform]=\"'rotate(' + (isMonthView? 0 : 180) +'deg)'\">\r\n <!-- <editor-fold desc=\"SVG Arrow\"> -->\r\n <svg version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n x=\"0px\"\r\n y=\"0px\"\r\n width=\"50%\"\r\n height=\"50%\"\r\n viewBox=\"0 0 292.362 292.362\"\r\n style=\"enable-background:new 0 0 292.362 292.362;\"\r\n xml:space=\"preserve\">\r\n <g>\r\n <path 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\r\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\r\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\" />\r\n </g>\r\n </svg>\r\n <!-- </editor-fold> -->\r\n </span>\r\n </span>\r\n </button>\r\n </div>\r\n <button class=\"nxt-dt-control nxt-dt-control-button nxt-dt-control-arrow-button\"\r\n type=\"button\"\r\n tabindex=\"0\"\r\n [style.visibility]=\"showControlArrows? 'visible': 'hidden'\"\r\n [disabled]=\"!nextButtonEnabled()\"\r\n [attr.aria-label]=\"nextButtonLabel\"\r\n (click)=\"nextClicked()\">\r\n <span class=\"nxt-dt-control-content nxt-dt-control-button-content\"\r\n tabindex=\"-1\">\r\n <!-- <editor-fold desc=\"SVG Arrow Right\"> -->\r\n <svg version=\"1.1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n x=\"0px\"\r\n y=\"0px\"\r\n viewBox=\"0 0 250.738 250.738\"\r\n style=\"enable-background:new 0 0 250.738 250.738;\"\r\n xml:space=\"preserve\">\r\n <path style=\"fill-rule:evenodd;clip-rule:evenodd;\"\r\n d=\"M191.75,111.689L84.766,5.291c-7.1-7.055-18.613-7.055-25.713,0\r\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\r\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\r\n C197.237,120.447,195.534,115.448,191.75,111.689z\" />\r\n </svg>\r\n <!-- </editor-fold> -->\r\n </span>\r\n </button>\r\n</div>\r\n<div class=\"nxt-dt-calendar-main\"\r\n cdkMonitorSubtreeFocus\r\n [ngSwitch]=\"currentView\"\r\n tabindex=\"-1\">\r\n <nxt-date-time-month-view *ngSwitchCase=\"'month'\"\r\n [pickerMoment]=\"pickerMoment\"\r\n [firstDayOfWeek]=\"firstDayOfWeek\"\r\n [selected]=\"selected\"\r\n [selecteds]=\"selecteds\"\r\n [selectMode]=\"selectMode ?? 'single'\"\r\n [min]=\"min\"\r\n [max]=\"max\"\r\n [dateTimeFilter]=\"dateTimeFilter\"\r\n [hideOtherMonths]=\"hideOtherMonths\"\r\n (pickerMomentChange)=\"handlePickerMomentChange($event)\"\r\n (selectedChange)=\"dateSelected($event)\"\r\n (userSelection)=\"userSelected()\"></nxt-date-time-month-view>\r\n\r\n <nxt-date-time-year-view *ngSwitchCase=\"'year'\"\r\n [pickerMoment]=\"pickerMoment\"\r\n [selected]=\"selected\"\r\n [selecteds]=\"selecteds\"\r\n [selectMode]=\"selectMode ?? 'single'\"\r\n [min]=\"min\"\r\n [max]=\"max\"\r\n [dateTimeFilter]=\"dateTimeFilter\"\r\n (keyboardEnter)=\"focusActiveCell()\"\r\n (pickerMomentChange)=\"handlePickerMomentChange($event)\"\r\n (monthSelected)=\"selectMonthInYearView($event)\"\r\n (change)=\"goToDateInView($event, 'month')\"></nxt-date-time-year-view>\r\n\r\n <nxt-date-time-multi-year-view *ngSwitchCase=\"'multi-years'\"\r\n [pickerMoment]=\"pickerMoment\"\r\n [selected]=\"selected\"\r\n [selecteds]=\"selecteds\"\r\n [selectMode]=\"selectMode ?? 'single'\"\r\n [min]=\"min\"\r\n [max]=\"max\"\r\n [dateTimeFilter]=\"dateTimeFilter\"\r\n (keyboardEnter)=\"focusActiveCell()\"\r\n (pickerMomentChange)=\"handlePickerMomentChange($event)\"\r\n (yearSelected)=\"selectYearInMultiYearView($event)\"\r\n (change)=\"goToDateInView($event, 'year')\"></nxt-date-time-multi-year-view>\r\n</div>\r\n","import { Directive, EventEmitter, Inject, Input } from '@angular/core'\r\nimport { DateTimeAdapter } from './date-time-adapter.class'\r\nimport { DateTimeFormats, NXT_DATE_TIME_FORMATS } from './date-time-format.class'\r\n\r\n/** @internal */\r\nlet nextUniqueId = 0\r\n\r\nexport type PickerType = 'both' | 'calendar' | 'timer'\r\n\r\nexport type PickerMode = 'popup' | 'dialog' | 'inline'\r\n\r\nexport type SelectMode = 'single' | 'range' | 'rangeFrom' | 'rangeTo'\r\n\r\nexport type RenderItem = 'year' | 'month' | 'date'\r\n\r\nexport type ViewType = 'month' | 'year' | 'multi-years'\r\n\r\nexport type DateFilter<T> = (date?: T, forRender?: RenderItem) => boolean\r\n\r\n@Directive()\r\nexport abstract class DateTimeDirective<T> {\r\n /**\r\n * When true, shows a timer to configure the seconds value\r\n */\r\n @Input() showSecondsTimer = false\r\n\r\n /**\r\n * When true, the timer will be in 12-hour format mode\r\n */\r\n @Input() hour12Timer = false\r\n\r\n /**\r\n * The view that the calendar should start on\r\n */\r\n @Input() startView: ViewType = 'month'\r\n\r\n /**\r\n * Hours to change per step\r\n */\r\n @Input() stepHour = 1\r\n\r\n /**\r\n * Minutes to change per step\r\n */\r\n @Input() stepMinute = 1\r\n\r\n /**\r\n * Seconds to change per step\r\n */\r\n @Input() stepSecond = 1\r\n\r\n /**\r\n * Set the first day of week\r\n *\r\n * Valid values are from 0 [Sunday] to 6 [Saturday]\r\n */\r\n @Input() firstDayOfWeek = 0\r\n\r\n /**\r\n * If true, don't show dates from preious / next month on the calendar month view\r\n */\r\n @Input() hideOtherMonths = false\r\n\r\n readonly id = `nxt-dt-picker-${nextUniqueId++}`\r\n\r\n abstract get selected(): T | undefined\r\n\r\n abstract get selecteds(): Array<T | undefined>\r\n\r\n abstract get dateTimeFilter(): DateFilter<T> | undefined\r\n\r\n abstract get max(): T | undefined\r\n\r\n abstract get min(): T | undefined\r\n\r\n abstract get selectMode(): SelectMode | undefined\r\n\r\n abstract get startAt(): T | undefined\r\n\r\n abstract get isOpen(): boolean\r\n\r\n abstract get pickerMode(): PickerMode\r\n\r\n abstract get pickerType(): PickerType\r\n\r\n abstract get isInSingleMode(): boolean\r\n\r\n abstract get isInRangeMode(): boolean\r\n\r\n abstract select(date: T | Array<T | undefined>): void\r\n\r\n abstract yearSelected: EventEmitter<T>\r\n\r\n abstract monthSelected: EventEmitter<T>\r\n\r\n abstract selectYear(normalizedYear: T): void\r\n\r\n abstract selectMonth(normalizedMonth: T): void\r\n\r\n get formatString(): string {\r\n return this.pickerType === 'both'\r\n ? this.dateTimeFormats.fullPickerInput\r\n : this.pickerType === 'calendar'\r\n ? this.dateTimeFormats.datePickerInput\r\n : this.dateTimeFormats.timePickerInput\r\n }\r\n\r\n /**\r\n * Date Time Checker to check if the give dateTime is selectable\r\n */\r\n dateTimeChecker = (dateTime: T | undefined) => (\r\n !!dateTime &&\r\n (!this.dateTimeFilter || this.dateTimeFilter(dateTime)) &&\r\n (!this.min || this.dateTimeAdapter.compare(dateTime, this.min) >= 0) &&\r\n (!this.max || this.dateTimeAdapter.compare(dateTime, this.max) <= 0)\r\n )\r\n\r\n get disabled(): boolean {\r\n return false\r\n }\r\n\r\n constructor(\r\n protected readonly dateTimeAdapter: DateTimeAdapter<T>,\r\n @Inject(NXT_DATE_TIME_FORMATS)\r\n protected readonly dateTimeFormats: DateTimeFormats\r\n ) { }\r\n\r\n protected getValidDate(obj: any): T | undefined {\r\n return this.dateTimeAdapter.isDateInstance(obj) &&\r\n this.dateTimeAdapter.isValid(obj)\r\n ? obj\r\n : undefined\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core'\r\n\r\n/** @internal */\r\n@Pipe({\n name: 'numberFixedLen',\n standalone: false\n})\r\nexport class NumberFixedLenPipe implements PipeTransform {\r\n transform(num: number | undefined, len: number | undefined) {\r\n if (num == undefined || !Number.isFinite(num))\r\n return undefined\r\n\r\n const number = Math.floor(num)\r\n\r\n if (len == undefined || !Number.isFinite(len))\r\n return number\r\n\r\n return number.toFixed(0).padStart(Math.floor(len), '0')\r\n }\r\n}\r\n","import { coerceNumberProperty } from '@angular/cdk/coercion'\r\nimport { ChangeDetectionStrategy, Component, EventEmitter, HostBinding, Input, OnDestroy, OnInit, Output } from '@angular/core'\r\nimport { Subject, Subscription } from 'rxjs'\r\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators'\r\n\r\n/** @internal */\r\n@Component({\n selector: 'nxt-date-time-timer-box',\n templateUrl: './timer-box.component.html',\n styleUrls: ['./timer-box.component.scss'],\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\r\n\r\nexport class TimerBoxComponent implements OnInit, OnDestroy {\r\n\r\n @Input() showDivider = false\r\n\r\n @Input() upBtnAriaLabel?: string\r\n\r\n @Input() upBtnDisabled: boolean = false\r\n\r\n @Input() downBtnAriaLabel?: string\r\n\r\n @Input() downBtnDisabled: boolean = false\r\n\r\n /**\r\n * Value would be displayed in the box\r\n * If it is undefiend, the box would display [value]\r\n */\r\n @Input() boxValue?: number\r\n\r\n @Input() value: number = 0\r\n\r\n @Input() min: number = 0\r\n\r\n @Input() max: number = 0\r\n\r\n @Input() step = 1\r\n\r\n @Input() inputLabel?: string\r\n\r\n @Output() valueChange = new EventEmitter<number>()\r\n\r\n @Output() inputChange = new EventEmitter<number>()\r\n\r\n private inputStream = new Subject<string>()\r\n\r\n private inputStreamSub?: Subscription\r\n\r\n get displayValue(): number {\r\n return this.boxValue || this.value\r\n }\r\n\r\n /** @internal */\r\n @HostBinding('class.nxt-dt-timer-box')\r\n get timerBoxClass(): boolean {\r\n return true\r\n }\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnInit() {\r\n this.inputStreamSub = this.inputStream.pipe(\r\n debounceTime(500),\r\n distinctUntilChanged()\r\n ).subscribe((val: string) => {\r\n if (val) {\r\n const inputValue = coerceNumberProperty(val, 0)\r\n this.updateValueViaInput(inputValue)\r\n }\r\n })\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.inputStreamSub?.unsubscribe()\r\n this.inputStreamSub = undefined\r\n }\r\n\r\n upBtnClicked(): void {\r\n this.updateValue(this.value + this.step)\r\n }\r\n\r\n downBtnClicked(): void {\r\n this.updateValue(this.value - this.step)\r\n }\r\n\r\n handleInputChange(val: string): void {\r\n this.inputStream.next(val)\r\n }\r\n\r\n private updateValue(value: number): void {\r\n this.valueChange.emit(value)\r\n }\r\n\r\n private updateValueViaInput(value: number): void {\r\n if (value > this.max || value < this.min) {\r\n return\r\n }\r\n this.inputChange.emit(value)\r\n }\r\n}\r\n","<div *ngIf=\"showDivider\"\r\n class=\"nxt-dt-timer-divider\"\r\n aria-hidden=\"true\"></div>\r\n<button class=\"nxt-dt-control-button nxt-dt-control-arrow-button\"\r\n type=\"button\"\r\n tabindex=\"-1\"\r\n [disabled]=\"upBtnDisabled\"\r\n [attr.aria-label]=\"upBtnAriaLabel\"\r\n (click)=\"upBtnClicked()\">\r\n <span class=\"nxt-dt-control-button-content\"\r\n tabindex=\"-1\">\r\n <!-- <editor-fold desc=\"SVG Arrow Up\"> -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n version=\"1.1\"\r\n x=\"0px\"\r\n y=\"0px\"\r\n viewBox=\"0 0 451.847 451.846\"\r\n style=\"enable-background:new 0 0 451.847 451.846;\"\r\n xml:space=\"preserve\"\r\n width=\"100%\"\r\n height=\"100%\">\r\n <path 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\r\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\r\n c6.18-6.174,14.271-9.259,22.369-9.259C234.018,97.141,242.115,100.232,248.292,106.406z\" />\r\n </svg>\r\n <!-- </editor-fold> -->\r\n </span>\r\n</button>\r\n<label class=\"nxt-dt-timer-content\">\r\n <input class=\"nxt-dt-timer-input\"\r\n maxlength=\"2\"\r\n [value]=\"displayValue | numberFixedLen : 2\"\r\n (input)=\"handleInputChange(valueInput.value)\"\r\n #valueInput>\r\n <span class=\"nxt-hidden-accessible\">{{inputLabel}}</span>\r\n</label>\r\n<button class=\"nxt-dt-control-button nxt-dt-control-arrow-button\"\r\n type=\"button\"\r\n tabindex=\"-1\"\r\n [disabled]=\"downBtnDisabled\"\r\n [attr.aria-label]=\"downBtnAriaLabel\"\r\n (click)=\"downBtnClicked()\">\r\n <span class=\"nxt-dt-control-button-content\"\r\n tabindex=\"-1\">\r\n <!-- <editor-fold desc=\"SVG Arrow Down\"> -->\r\n <svg xmlns=\"http://www.w3.org/2000/svg\"\r\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\r\n version=\"1.1\"\r\n x=\"0px\"\r\n y=\"0px\"\r\n viewBox=\"0 0 451.847 451.846\"\r\n style=\"enable-background:new 0 0 451.847 451.846;\"\r\n xml:space=\"preserve\"\r\n width=\"100%\"\r\n height=\"100%\">\r\n <path 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\r\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\r\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\" />\r\n </svg>\r\n <!-- </editor-fold> -->\r\n </span>\r\n</button>\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, HostBinding, Input, NgZone, OnInit, Output } from '@angular/core'\r\nimport { take } from 'rxjs/operators'\r\nimport { DateTimeAdapter } from '../../class/date-time-adapter.class'\r\nimport { DateTimeIntl } from '../date-time-picker-intl.service'\r\n\r\n@Component({\n selector: 'nxt-date-time-timer',\n templateUrl: './timer.component.html',\n styleUrls: ['./timer.component.scss'],\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false\n})\r\nexport class TimerComponent<T> implements OnInit {\r\n /** The current picker moment */\r\n private _pickerMoment?: T\r\n @Input()\r\n get pickerMoment() {\r\n return this._pickerMoment\r\n }\r\n\r\n set pickerMoment(value: T | undefined) {\r\n value = this.dateTimeAdapter.deserialize(value)\r\n this._pickerMoment = this.getValidDate(value) || this.dateTimeAdapter.now()\r\n }\r\n\r\n /** The minimum selectable date time */\r\n private _minDateTime?: T\r\n @Input()\r\n get min() {\r\n return this._minDateTime\r\n }\r\n\r\n set min(value: T | undefined) {\r\n value = this.dateTimeAdapter.deserialize(value)\r\n this._minDateTime = this.getValidDate(value)\r\n }\r\n\r\n /** The maximum selectable date time */\r\n private _maxDateTime?: T\r\n @Input()\r\n get max() {\r\n return this._maxDateTime\r\n }\r\n\r\n set max(value: T | undefined) {\r\n value = this.dateTimeAdapter.deserialize(value)\r\n this._maxDateTime = this.getValidDate(value)\r\n }\r\n\r\n private isPM: boolean = false // a flag indicates the current timer moment is in PM or AM\r\n\r\n /**\r\n * Whether to show the second's timer\r\n */\r\n @Input()\r\n showSecondsTimer: boolean = false\r\n\r\n /**\r\n * Whether the timer is in hour12 format\r\n */\r\n @Input()\r\n hour12Timer: boolean = false\r\n\r\n /**\r\n * Hours to change per step\r\n */\r\n @Input()\r\n stepHour = 1\r\n\r\n /**\r\n * Minutes to change per step\r\n */\r\n @Input()\r\n stepMinute = 1\r\n\r\n /**\r\n * Seconds to change per step\r\n */\r\n @Input()\r\n stepSecond = 1\r\n\r\n get hourValue(): number {\r\n return this.dateTimeAdapter.getHours(this.pickerMoment)\r\n }\r\n\r\n /**\r\n * The value would be displayed in hourBox.\r\n * We need this because the value displayed in hourBox it not\r\n * the same as the hourValue when the timer is in hour12Timer mode.\r\n */\r\n get hourBoxValue(): number {\r\n let hours = this.hourValue\r\n\r\n if (!this.hour12Timer) {\r\n return hours\r\n } else {\r\n if (hours === 0) {\r\n hours = 12\r\n this.isPM = false\r\n } else if (hours > 0 && hours < 12) {\r\n this.isPM = false\r\n } else if (hours === 12) {\r\n this.isPM = true\r\n } else if (hours > 12 && hours < 24) {\r\n hours = hours - 12\r\n this.isPM = true\r\n }\r\n\r\n return hours\r\n }\r\n }\r\n\r\n get minuteValue(): number {\r\n return this.dateTimeAdapter.getMinutes(this.pickerMoment)\r\n }\r\n\r\n get secondValue(): number {\r\n return this.dateTimeAdapter.getSeconds(this.pickerMoment)\r\n }\r\n\r\n get upHourButtonLabel(): string {\r\n return this.pickerIntl.upHourLabel\r\n }\r\n\r\n get downHourButtonLabel(): string {\r\n return this.pickerIntl.downHourLabel\r\n }\r\n\r\n get upMinuteButtonLabel(): string {\r\n return this.pickerIntl.upMinuteLabel\r\n }\r\n\r\n get downMinuteButtonLabel(): string {\r\n return this.pickerIntl.downMinuteLabel\r\n }\r\n\r\n get upSecondButtonLabel(): string {\r\n return this.pickerIntl.upSecondLabel\r\n }\r\n\r\n get downSecondButtonLabel(): string {\r\n return this.pickerIntl.downSecondLabel\r\n }\r\n\r\n get hour12ButtonLabel(): string {\r\n return this.isPM\r\n ? this.pickerIntl.hour12PMLabel\r\n : this.pickerIntl.hour12AMLabel\r\n }\r\n\r\n @Output()\r\n readonly selectedChange = new EventEmitter<T>()\r\n\r\n /** @internal */\r\n @HostBinding('class.nxt-dt-timer')\r\n get timerClass(): boolean {\r\n return true\r\n }\r\n\r\n /** @internal */\r\n @HostBinding('attr.tabindex')\r\n get timeTabIndex(): number {\r\n return -1\r\n }\r\n\r\n constructor(\r\n private readonly ngZone: NgZone,\r\n private readonly elmRef: ElementRef<HTMLElement>,\r\n private readonly pickerIntl: DateTimeIntl,\r\n private readonly cdRef: ChangeDetectorRef,\r\n private readonly dateTimeAdapter: DateTimeAdapter<T>\r\n ) { }\r\n\r\n ngOnInit() { }\r\n\r\n /**\r\n * Focus to the host element\r\n */\r\n focus() {\r\n this.ngZone.runOutsideAngular(() => {\r\n this.ngZone.onStable\r\n .asObservable()\r\n .pipe(take(1))\r\n .subscribe(() => {\r\n this.elmRef.nativeElement.focus()\r\n })\r\n })\r\n }\r\n\r\n /**\r\n * Set the hour value via typing into timer box input\r\n * We need this to handle the hour value when the timer is in hour12 mode\r\n */\r\n setHourValueViaInput(hours: number): void {\r\n if (this.hour12Timer && this.isPM && hours >= 1 && hours <= 11) {\r\n hours = hours + 12\r\n } else if (this.hour12Timer && !this.isPM && hours === 12) {\r\n hours = 0\r\n }\r\n\r\n this.setHourValue(hours)\r\n }\r\n\r\n setHourValue(hours: number): void {\r\n const m = this.dateTimeAdapter.setHours(this.pickerMoment, hours)\r\n this.selectedChange.emit(m)\r\n this.cdRef.markForCheck()\r\n }\r\n\r\n setMinuteValue(minutes: number): void {\r\n const m = this.dateTimeAdapter.setMinutes(this.pickerMoment, minutes)\r\n this.selectedChange.emit(m)\r\n this.cdRef.markForCheck()\r\n }\r\n\r\n setSecondValue(seconds: number): void {\r\n const m = this.dateTimeAdapter.setSeconds(this.pickerMoment, seconds)\r\n this.selectedChange.emit(m)\r\n this.cdRef.markForCheck()\r\n }\r\n\r\n setMeridiem(event: any): void {\r\n this.isPM = !this.isPM\r\n\r\n let hours = this.hourValue\r\n if (this.isPM) {\r\n hours = hours + 12\r\n } else {\r\n hours = hours - 12\r\n }\r\n\r\n if (hours >= 0 && hours <= 23) {\r\n this.setHourValue(hours)\r\n }\r\n\r\n this.cdRef.markForCheck()\r\n event.preventDefault()\r\n }\r\n\r\n /**\r\n * Check if the up hour button is enabled\r\n */\r\n upHourEnabled(): boolean {\r\n return (\r\n !this.max ||\r\n this.compareHours(this.stepHour, this.max) < 1\r\n )\r\n }\r\n\r\n /**\r\n * Check if the down hour button is enabled\r\n */\r\n downHourEnabled(): boolean {\r\n return (\r\n !this.min ||\r\n this.compareHours(-this.stepHour, this.min) > -1\r\n )\r\n }\r\n\r\n /**\r\n * Check if the up minute button is enabled\r\n */\r\n upMinuteEnabled(): boolean {\r\n return (\r\n !this.max ||\r\n this.compareMinutes(this.stepMinute, this.max) < 1\r\n )\r\n }\r\n\r\n /**\r\n * Check if the down minute button is enabled\r\n */\r\n downMinuteEnabled(): boolean {\r\n return (\r\n !this.min ||\r\n this.compareMinutes(-this.stepMinute, this.min) > -1\r\n )\r\n }\r\n\r\n /**\r\n * Check if the up second button is enabled\r\n */\r\n upSecondEnabled(): boolean {\r\n return (\r\n !this.max ||\r\n this.compareSeconds(this.stepSecond, this.max) < 1\r\n )\r\n }\r\n\r\n /**\r\n * Check if the down second button is enabled\r\n */\r\n downSecondEnabled(): boolean {\r\n return (\r\n !this.min ||\r\n this.compareSeconds(-this.stepSecond, this.min) > -1\r\n )\r\n }\r\n\r\n /**\r\n * PickerMoment's hour value +/- certain amount and compare it to the give date\r\n * 1 is after the comparedDate\r\n * -1 is before the comparedDate\r\n * 0 is equal the comparedDate\r\n */\r\n private compareHours(amount: number, comparedDate: T): number {\r\n const hours = this.dateTimeAdapter.getHours(this.pickerMoment) + amount\r\n const result = this.dateTimeAdapter.setHours(this.pickerMoment, hours)\r\n return this.dateTimeAdapter.compare(result, comparedDate)\r\n }\r\n\r\n /**\r\n * PickerMoment's minute value +/- certain amount and compare it to the give date\r\n * 1 is after the comparedDate\r\n * -1 is before the comparedDate\r\n * 0 is equal the comparedDate\r\n */\r\n private compareMinutes(amount: number, comparedDate: T): number {\r\n const minutes =\r\n this.dateTimeAdapter.getMinutes(this.pickerMoment) + amount\r\n const result = this.dateTimeAdapter.setMinutes(\r\n this.pickerMoment,\r\n minutes\r\n )\r\n return this.dateTimeAdapter.compare(result, comparedDate)\r\n }\r\n\r\n /**\r\n * PickerMoment's second value +/- certain amount and compare it to the give date\r\n * 1 is after the comparedDate\r\n * -1 is before the comparedDate\r\n * 0 is equal the comparedDate\r\n */\r\n private compareSeconds(amount: number, comparedDate: T): number {\r\n const seconds =\r\n this.dateTimeAdapter.getSeconds(this.pickerMoment) + amount\r\n const result = this.dateTimeAdapter.setSeconds(\r\n this.pickerMoment,\r\n seconds\r\n )\r\n return this.dateTimeAdapter.compare(result, comparedDate)\r\n }\r\n\r\n /**\r\n * Get a valid date object\r\n */\r\n private getValidDate(obj: any): T | undefined {\r\n return this.dateTimeAdapter.isDateInstance(obj) &&\r\n this.dateTimeAdapter.isValid(obj)\r\n ? obj\r\n : undefined\r\n }\r\n}\r\n","<nxt-date-time-timer-box [upBtnAriaLabel]=\"upHourButtonLabel\"\r\n [downBtnAriaLabel]=\"downHourButtonLabel\"\r\n [upBtnDisabled]=\"!upHourEnabled()\"\r\n [downBtnDisabled]=\"!downHourEnabled()\"\r\n [boxValue]=\"hourBoxValue\"\r\n [value]=\"hourValue\"\r\n [min]=\"0\"\r\n [max]=\"23\"\r\n [step]=\"stepHour\"\r\n inputLabel=\"Hour\"\r\n (inputChange)=\"setHourValueViaInput($event)\"\r\n (valueChange)=\"setHourValue($event)\"></nxt-date-time-timer-box>\r\n<nxt-date-time-timer-box [showDivider]=\"true\"\r\n [upBtnAriaLabel]=\"upMinuteButtonLabel\"\r\n [downBtnAriaLabel]=\"downMinuteButtonLabel\"\r\n [upBtnDisabled]=\"!upMinuteEnabled()\"\r\n [downBtnDisabled]=\"!downMinuteEnabled()\"\r\n [value]=\"minuteValue\"\r\n [min]=\"0\"\r\n [max]=\"59\"\r\n [step]=\"stepMinute\"\r\n inputLabel=\"Minute\"\r\n (inputChange)=\"setMinuteValue($event)\"\r\n (valueChange)=\"setMinuteValue($event)\"></nxt-date-time-timer-box>\r\n<nxt-date-time-timer-box *ngIf=\"showSecondsTimer\"\r\n [showDivider]=\"true\"\r\n [upBtnAriaLabel]=\"upSecondButtonLabel\"\r\n [downBtnAriaLabel]=\"downSecondButtonLabel\"\r\n [upBtnDisabled]=\"!upSecondEnabled()\"\r\n [downBtnDisabled]=\"!downSecondEnabled()\"\r\n [value]=\"secondValue\"\r\n [min]=\"0\"\r\n [max]=\"59\"\r\n [step]=\"stepSecond\"\r\n inputLabel=\"Second\"\r\n (inputChange)=\"setSecondValue($event)\"\r\n (valueChange)=\"setSecondValue($event)\"></nxt-date-time-timer-box>\r\n\r\n<div *ngIf=\"hour12Timer\"\r\n class=\"nxt-dt-timer-hour12\">\r\n <button class=\"nxt-dt-control-button nxt-dt-timer-hour12-box\"\r\n type=\"button\"\r\n tabindex=\"0\"\r\n (click)=\"setMeridiem($event)\">\r\n <span class=\"nxt-dt-control-button-content\"\r\n tabindex=\"-1\">\r\n {{hour12ButtonLabel}}\r\n </span>\r\n </button>\r\n</div>\r\n","import { animate, animateChild, AnimationTriggerMetadata, group, query, state, style, transition, trigger } from '@angular/animations'\r\n\r\n/** @internal */\r\nexport const dateTimePickerAnimations: {\r\n readonly transformPicker: AnimationTriggerMetadata\r\n readonly fadeInPicker: AnimationTriggerMetadata\r\n} = {\r\n\r\n transformPicker: trigger('transformPicker', [\r\n state('void', style({ opacity: 0, transform: 'scale(1, 0)' })),\r\n state('enter', style({ opacity: 1, transform: 'scale(1, 1)' })),\r\n transition('void => enter', group([\r\n query('@fadeInPicker', animateChild(), { optional: true }),\r\n animate('400ms cubic-bezier(0.25, 0.8, 0.25, 1)')\r\n ])),\r\n transition('enter => void', animate('100ms linear', style({ opacity: 0 })))\r\n ]),\r\n\r\n fadeInPicker: trigger('fadeInPicker', [\r\n state('enter', style({ opacity: 1 })),\r\n state('void', style({ opacity: 0 })),\r\n transition('void => enter', animate('400ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)'))\r\n ])\r\n}\r\n","import { AnimationEvent } from '@angular/animations'\r\nimport { AfterContentInit, AfterViewInit, ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, HostBinding, HostListener, OnInit, ViewChild } from '@angular/core'\r\nimport { Subject } from 'rxjs'\r\nimport { DateTimeAdapter } from '../../class/date-time-adapter.class'\r\nimport { DateTimeDirective } from '../../class/date-time.class'\r\nimport { CalendarComponent } from '../calendar/calendar.component'\r\nimport { DateTimeIntl } from '../date-time-picker-intl.service'\r\nimport { TimerComponent } from '../timer/timer.component'\r\nimport { dateTimePickerAnimations } from './date-time-picker-container.animations'\r\n\r\n/** @internal */\r\n@Component({\n selector: 'nxt-date-time-container',\n templateUrl: './date-time-picker-container.component.html',\n styleUrls: ['./date-time-picker-container.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n animations: [\n dateTimePickerAnimations.transformPicker,\n dateTimePickerAnimations.fadeInPicker\n ],\n standalone: false\n})\r\nexport class DateTimeContainerComponent<T> implements OnInit, AfterContentInit, AfterViewInit {\r\n\r\n @ViewChild(CalendarComponent)\r\n calendar?: CalendarComponent<T>\r\n\r\n @ViewChild(TimerComponent)\r\n timer?: TimerComponent<T>\r\n\r\n picker?: DateTimeDirective<T>\r\n activeSelectedIndex = 0 // The current active SelectedIndex in range select mode (0: 'from', 1: 'to')\r\n\r\n /**\r\n * Stream emits when try to hide picker\r\n */\r\n private readonly hidePicker$ = new Subject<void>()\r\n\r\n readonly hidePickerStream = this.hidePicker$.asObservable()\r\n\r\n /**\r\n * Stream emits when try to confirm the selected value\r\n */\r\n private readonly confirmSelected$ = new Subject<Event>()\r\n\r\n readonly confirmSelectedStream = this.confirmSelected$.asObservable()\r\n\r\n private readonly pickerOpened$ = new Subject<void>()\r\n\r\n readonly pickerOpenedStream = this.pickerOpened$.asObservable()\r\n\r\n /**\r\n * The current picker moment. This determines which time period is shown and which date is\r\n * highlighted when using keyboard navigation.\r\n */\r\n private _clamPickerMoment?: T\r\n\r\n get pickerMoment() {\r\n return this._clamPickerMoment\r\n }\r\n\r\n set pickerMoment(value: T | undefined) {\r\n if (value) {\r\n this._clamPickerMoment = this.dateTimeAdapter.clampDate(\r\n value,\r\n this.picker?.min,\r\n this.picker?.max\r\n )\r\n }\r\n this.cdRef.markForCheck()\r\n }\r\n\r\n get pickerType() {\r\n return this.picker?.pickerType\r\n }\r\n\r\n get cancelLabel(): string {\r\n return this.pickerIntl.cancelBtnLabel\r\n }\r\n\r\n get setLabel(): string {\r\n return this.pickerIntl.setBtnLabel\r\n }\r\n\r\n /**\r\n * The range 'from' label\r\n */\r\n get fromLabel(): string {\r\n return this.pickerIntl.rangeFromLabel\r\n }\r\n\r\n /**\r\n * The range 'to' label\r\n */\r\n get toLabel(): string {\r\n return this.pickerIntl.rangeToLabel\r\n }\r\n\r\n /**\r\n * The range 'from' formatted value\r\n */\r\n get fromFormattedValue(): string {\r\n const value = this.picker?.selecteds[0]\r\n return value\r\n ? this.dateTimeAdapter.format(value, this.picker?.formatString)\r\n : ''\r\n }\r\n\r\n /**\r\n * The range 'to' formatted value\r\n */\r\n get toFormattedValue(): string {\r\n const value = this.picker?.selecteds[1]\r\n return value\r\n ? this.dateTimeAdapter.format(value, this.picker?.formatString)\r\n : ''\r\n }\r\n\r\n /**\r\n * Cases in which the control buttons show in the picker\r\n * 1) picker mode is 'dialog'\r\n * 2) picker type is NOT 'calendar' and the picker mode is NOT 'inline'\r\n */\r\n get showControlButtons(): boolean {\r\n return (\r\n this.picker?.pickerMode === 'dialog' ||\r\n (this.picker?.pickerType !== 'calendar' &&\r\n this.picker?.pickerMode !== 'inline')\r\n )\r\n }\r\n\r\n get containerElm(): HTMLElement {\r\n return this.elmRef.nativeElement\r\n }\r\n\r\n /** @internal */\r\n @HostBinding('class.nxt-dt-container')\r\n get containerClass(): boolean {\r\n return true\r\n }\r\n\r\n /** @internal */\r\n @HostBinding('class.nxt-dt-popup-container')\r\n get popupContainerClass(): boolean {\r\n return this.picker?.pickerMode === 'popup'\r\n }\r\n\r\n /** @internal */\r\n @HostBinding('class.nxt-dt-dialog-container')\r\n get dialogContainerClass(): boolean {\r\n return this.picker?.pickerMode === 'dialog'\r\n }\r\n\r\n /** @internal */\r\n @HostBinding('class.nxt-dt-inline-container')\r\n get inlineContainerClass(): boolean {\r\n return this.picker?.pickerMode === 'inline'\r\n }\r\n\r\n /** @internal */\r\n @HostBinding('class.nxt-dt-container-disabled')\r\n get containerDisabledClass(): boolean {\r\n return !!this.picker?.disabled\r\n }\r\n\r\n /** @internal */\r\n @HostBinding('attr.id')\r\n get containerId(): string | undefined {\r\n return this.picker?.id\r\n }\r\n\r\n /** @internal */\r\n @HostBinding('@transformPicker')\r\n get containerAnimation(): any {\r\n return this.picker?.pickerMode === 'inline' ? '' : 'enter'\r\n }\r\n\r\n constructor(\r\n private readonly cdRef: ChangeDetectorRef,\r\n private readonly elmRef: ElementRef<HTMLElement>,\r\n private readonly pickerIntl: DateTimeIntl,\r\n private readonly dateTimeAdapter: DateTimeAdapter<T>\r\n ) { }\r\n\r\n ngOnInit() { }\r\n\r\n ngAfterContentInit(): void {\r\n this.initPicker()\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.focusPicker()\r\n }\r\n\r\n @HostListener('@transformPicker.done', ['$event'])\r\n handleContainerAnimationDone(event: AnimationEvent): void {\r\n const toState = event.toState\r\n if (toState === 'enter') {\r\n this.pickerOpened$.next()\r\n }\r\n }\r\n\r\n dateSelected(date?: T): void {\r\n let result\r\n\r\n if (this.picker?.isInSingleMode) {\r\n result = this.dateSelectedInSingleMode(date)\r\n if (result) {\r\n this.pickerMoment = result\r\n this.picker.select(result)\r\n } else {\r\n // we close the picker when result is undefined and pickerType is calendar.\r\n if (this.pickerType === 'calendar') {\r\n this.hidePicker$.next()\r\n }\r\n }\r\n return\r\n }\r\n\r\n if (this.picker?.isInRangeMode) {\r\n result = this.dateSelectedInRangeMode(date)\r\n if (result) {\r\n this.pickerMoment = result[this.activeSelectedIndex]\r\n this.picker.select(result)\r\n }\r\n }\r\n }\r\n\r\n timeSelected(time?: T): void {\r\n this.pickerMoment = this.dateTimeAdapter.clone(time)\r\n\r\n if (!this.picker?.dateTimeChecker(this.pickerMoment)) {\r\n return\r\n }\r\n\r\n if (this.picker.isInSingleMode) {\r\n this.picker.select(this.pickerMoment)\r\n return\r\n }\r\n\r\n if (this.picker.isInRangeMode) {\r\n const selecteds = [...this.picker?.selecteds || []]\r\n\r\n // check if the 'from' is after 'to' or 'to'is before 'from'\r\n // In this case, we set both the 'from' and 'to' the same value\r\n if (\r\n (this.activeSelectedIndex === 0 &&\r\n selecteds[1] &&\r\n this.dateTimeAdapter.compare(\r\n this.pickerMoment,\r\n selecteds[1]\r\n ) === 1) ||\r\n (this.activeSelectedIndex === 1 &&\r\n selecteds[0] &&\r\n this.dateTimeAdapter.compare(\r\n this.pickerMoment,\r\n selecteds[0]\r\n ) === -1)\r\n ) {\r\n selecteds[0] = this.pickerMoment\r\n selecteds[1] = this.pickerMoment\r\n } else {\r\n selecteds[this.activeSelectedIndex] = this.pickerMoment\r\n }\r\n\r\n this.picker.select(selecteds)\r\n }\r\n }\r\n\r\n /**\r\n * Handle click on cancel button\r\n */\r\n onCancelClicked(event: Event): void {\r\n this.hidePicker$.next()\r\n event.preventDefault()\r\n return\r\n }\r\n\r\n /**\r\n * Handle click on set button\r\n */\r\n onSetClicked(event: Event): void {\r\n if (!this.picker?.dateTimeChecker?.(this.pickerMoment)) {\r\n this.hidePicker$.next()\r\n event.preventDefault()\r\n return\r\n }\r\n\r\n this.confirmSelected$.next(event)\r\n event.preventDefault()\r\n return\r\n }\r\n\r\n /**\r\n * Handle click on inform radio group\r\n */\r\n handleClickOnInfoGroup(event: any, index: number): void {\r\n this.setActiveSelectedIndex(index)\r\n event.preventDefault()\r\n event.stopPropagation()\r\n }\r\n\r\n /**\r\n * Handle click on inform radio group\r\n */\r\n handleKeydownOnInfoGroup(\r\n event: any,\r\n next: any,\r\n index: number\r\n ): void {\r\n switch (event.keyCode) {\r\n case 'ArrowDown':\r\n case 'ArrowRight':\r\n case 'ArrowUp':\r\n case 'ArrowLeft':\r\n next.focus()\r\n this.setActiveSelectedIndex(index === 0 ? 1 : 0)\r\n event.preventDefault()\r\n event.stopPropagation()\r\n break\r\n\r\n case 'Space':\r\n this.setActiveSelectedIndex(index)\r\n event.preventDefault()\r\n event.stopPropagation()\r\n break\r\n\r\n default:\r\n return\r\n }\r\n }\r\n\r\n /**\r\n * Set the value of activeSelectedIndex\r\n */\r\n private setActiveSelectedIndex(index: number): void {\r\n if (\r\n this.picker?.selectMode === 'range' &&\r\n this.activeSelectedIndex !== index\r\n ) {\r\n this.activeSelectedIndex = index\r\n\r\n const selected = this.picker?.selecteds[this.activeSelectedIndex]\r\n if (this.picker.selecteds && selected) {\r\n this.pickerMoment = this.dateTimeAdapter.clone(selected)\r\n }\r\n }\r\n return\r\n }\r\n\r\n private initPicker(): void {\r\n this.pickerMoment = this.picker?.startAt || this.dateTimeAdapter.now()\r\n this.activeSelectedIndex = this.picker?.selectMode === 'rangeTo' ? 1 : 0\r\n }\r\n\r\n /**\r\n * Select calendar date in single mode,\r\n * it returns undefined when date is not selected.\r\n */\r\n private dateSelectedInSingleMode(date?: T): T | undefined {\r\n if (this.dateTimeAdapter.isSameDay(date, this.picker?.selected)) {\r\n return undefined\r\n }\r\n\r\n return this.updateAndCheckCalendarDate(date)\r\n }\r\n\r\n /**\r\n * Select dates in range Mode\r\n */\r\n private dateSelectedInRangeMode(date?: T): Array<T | undefined> | undefined {\r\n let from = this.picker?.selecteds[0]\r\n let to = this.picker?.selecteds[1]\r\n\r\n const result = this.updateAndCheckCalendarDate(date)\r\n\r\n if (!result) {\r\n return\r\n }\r\n\r\n // if the given calendar day is after or equal to 'from',\r\n // set ths given date as 'to'\r\n // otherwise, set it as 'from' and set 'to' to undefined\r\n if (this.picker?.selectMode === 'range') {\r\n if (\r\n this.picker.selecteds &&\r\n this.picker.selecteds.length &&\r\n !to &&\r\n from &&\r\n (this.dateTimeAdapter.differenceInCalendarDays(result, from) ?? 0) >= 0\r\n ) {\r\n to = result\r\n this.activeSelectedIndex = 1\r\n } else {\r\n from = result\r\n to = undefined\r\n this.activeSelectedIndex = 0\r\n }\r\n } else if (this.picker?.selectMode === 'rangeFrom') {\r\n from = result\r\n\r\n // if the from value is after the to value, set the to value as undefined\r\n if (to && this.dateTimeAdapter.compare(from, to) > 0) {\r\n to = undefined\r\n }\r\n } else if (this.picker?.selectMode === 'rangeTo') {\r\n to = result\r\n\r\n // if the from value is after the to value, set the from value as undefined\r\n if (from && this.dateTimeAdapter.compare(from, to) > 0) {\r\n from = undefined\r\n }\r\n }\r\n\r\n return [from, to]\r\n }\r\n\r\n /**\r\n * Update the given calendar date's time and check if it is valid\r\n * Because the calendar date has 00:00:00 as default time, if the picker type is 'both',\r\n * we need to update the given calendar date's time before selecting it.\r\n * if it is valid, return the updated dateTime\r\n * if it is not valid, return undefined\r\n */\r\n private updateAndCheckCalendarDate(date?: T): T | undefined {\r\n let result\r\n\r\n // if the picker is 'both', update the calendar date's time value\r\n if (this.picker?.pickerType === 'both') {\r\n result = this.dateTimeAdapter.createDate(\r\n this.dateTimeAdapter.getYear(date),\r\n this.dateTimeAdapter.getMonth(date),\r\n this.dateTimeAdapter.getDate(date),\r\n this.dateTimeAdapter.getHours(this.pickerMoment),\r\n this.dateTimeAdapter.getMinutes(this.pickerMoment),\r\n this.dateTimeAdapter.getSeconds(this.pickerMoment)\r\n )\r\n result = this.dateTimeAdapter.clampDate(\r\n result,\r\n this.picker.min,\r\n this.picker.max\r\n )\r\n } else {\r\n result = this.dateTimeAdapter.clone(date)\r\n }\r\n\r\n // check the updated dateTime\r\n return this.picker?.dateTimeChecker(result) ? result : undefined\r\n }\r\n\r\n /**\r\n * Focus to the picker\r\n */\r\n private focusPicker(): void {\r\n if (this.picker?.pickerMode === 'inline') {\r\n return\r\n }\r\n\r\n if (this.calendar) {\r\n this.calendar.focusActiveCell()\r\n } else if (this.timer) {\r\n this.timer.focus()\r\n }\r\n }\r\n}\r\n","<div [cdkTrapFocus]=\"picker?.pickerMode !== 'inline'\"\r\n [@fadeInPicker]=\"picker?.pickerMode === 'inline'? '' : 'enter'\"\r\n class=\"nxt-dt-container-inner\">\r\n\r\n <nxt-date-time-calendar *ngIf=\"pickerType === 'both' || pickerType === 'calendar'\"\r\n class=\"nxt-dt-container-row\"\r\n [firstDayOfWeek]=\"picker?.firstDayOfWeek ?? 0\"\r\n [(pickerMoment)]=\"pickerMoment\"\r\n [selected]=\"picker?.selected\"\r\n [selecteds]=\"picker?.selecteds ?? []\"\r\n [selectMode]=\"picker?.selectMode\"\r\n [min]=\"picker?.min\"\r\n [max]=\"picker?.max\"\r\n [dateTimeFilter]=\"picker?.dateTimeFilter\"\r\n [startView]=\"picker?.startView ?? 'month'\"\r\n [hideOtherMonths]=\"!!picker?.hideOtherMonths\"\r\n (yearSelected)=\"picker?.selectYear($event)\"\r\n (monthSelected)=\"picker?.selectMonth($event)\"\r\n (selectedChange)=\"dateSelected($event)\"></nxt-date-time-calendar>\r\n\r\n <nxt-date-time-timer *ngIf=\"pickerType === 'both' || pickerType === 'timer'\"\r\n class=\"nxt-dt-container-row\"\r\n [pickerMoment]=\"pickerMoment\"\r\n [min]=\"picker?.min\"\r\n [max]=\"picker?.max\"\r\n [showSecondsTimer]=\"!!picker?.showSecondsTimer\"\r\n [hour12Timer]=\"!!picker?.hour12Timer\"\r\n [stepHour]=\"picker?.stepHour ?? 1\"\r\n [stepMinute]=\"picker?.stepMinute ?? 1\"\r\n [stepSecond]=\"picker?.stepSecond ?? 1\"\r\n (selectedChange)=\"timeSelected($event)\"></nxt-date-time-timer>\r\n\r\n <div *ngIf=\"picker?.isInRangeMode\"\r\n role=\"radiogroup\"\r\n class=\"nxt-dt-container-info nxt-dt-container-row\">\r\n <div role=\"radio\"\r\n [tabindex]=\"activeSelectedIndex === 0 ? 0 : -1\"\r\n [attr.aria-checked]=\"activeSelectedIndex === 0\"\r\n class=\"nxt-dt-control nxt-dt-container-range nxt-dt-container-from\"\r\n [ngClass]=\"{'nxt-dt-container-info-active': activeSelectedIndex === 0}\"\r\n (click)=\"handleClickOnInfoGroup($event, 0)\"\r\n (keydown)=\"handleKeydownOnInfoGroup($event, to, 0)\"\r\n #from>\r\n <span class=\"nxt-dt-control-content nxt-dt-container-range-content\"\r\n tabindex=\"-1\">\r\n <span class=\"nxt-dt-container-info-label\">{{fromLabel}}:</span>\r\n <span class=\"nxt-dt-container-info-value\">{{fromFormattedValue}}</span>\r\n </span>\r\n </div>\r\n <div role=\"radio\"\r\n [tabindex]=\"activeSelectedIndex === 1 ? 0 : -1\"\r\n [attr.aria-checked]=\"activeSelectedIndex === 1\"\r\n class=\"nxt-dt-control nxt-dt-container-range nxt-dt-container-to\"\r\n [ngClass]=\"{'nxt-dt-container-info-active': activeSelectedIndex === 1}\"\r\n (click)=\"handleClickOnInfoGroup($event, 1)\"\r\n (keydown)=\"handleKeydownOnInfoGroup($event, from, 1)\"\r\n #to>\r\n <span class=\"nxt-dt-control-content nxt-dt-container-range-content\"\r\n tabindex=\"-1\">\r\n <span class=\"nxt-dt-container-info-label\">{{toLabel}}:</span>\r\n <span class=\"nxt-dt-container-info-value\">{{toFormattedValue}}</span>\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <div *ngIf=\"showControlButtons\"\r\n class=\"nxt-dt-container-buttons nxt-dt-container-row\">\r\n <button class=\"nxt-dt-control nxt-dt-control-button nxt-dt-container-control-button\"\r\n type=\"button\"\r\n tabindex=\"0\"\r\n (click)=\"onCancelClicked($event)\">\r\n <span class=\"nxt-dt-control-content nxt-dt-control-button-content\"\r\n tabindex=\"-1\">\r\n {{cancelLabel}}\r\n </span>\r\n </button>\r\n <button class=\"nxt-dt-control nxt-dt-control-button nxt-dt-container-control-button\"\r\n type=\"button\"\r\n tabindex=\"0\"\r\n (click)=\"onSetClicked($event)\">\r\n <span class=\"nxt-dt-control-content nxt-dt-control-button-content\"\r\n tabindex=\"-1\">\r\n {{setLabel}}\r\n </span>\r\n </button>\r\n </div>\r\n</div>\r\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, forwardRef, HostBinding, Inject, Input, OnInit, Output, Provider, ViewChild } from '@angular/core'\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'\r\nimport { DateTimeAdapter } from '../../class/date-time-adapter.class'\r\nimport { DateTimeFormats, NXT_DATE_TIME_FORMATS } from '../../class/date-time-format.class'\r\nimport { DateFilter, DateTimeDirective, PickerMode, PickerType, SelectMode } from '../../class/date-time.class'\r\nimport { DateTimeContainerComponent } from '../date-time-picker-container/date-time-picker-container.component'\r\n\r\n/** @internal */\r\nexport const NXT_DATETIME_VALUE_ACCESSOR: Provider = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => DateTimeInlineComponent),\r\n multi: true\r\n}\r\n\r\n@Component({\n selector: 'nxt-date-time-inline',\n templateUrl: './date-time-inline.component.html',\n styleUrls: ['./date-time-inline.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n providers: [NXT_DATETIME_VALUE_ACCESSOR],\n standalone: false\n})\r\nexport class DateTimeInlineComponent<T> extends DateTimeDirective<T> implements OnInit, ControlValueAccessor {\r\n\r\n @ViewChild(DateTimeContainerComponent, { static: true })\r\n private container?: DateTimeContainerComponent<T>\r\n\r\n private _pickerType: PickerType = 'both'\r\n /**\r\n * Set the type of the dateTime picker\r\n *\r\n * - `'both'` - show both calendar and timer\r\n * - `'calendar'` - show only calendar\r\n * - `'timer'` - show only timer\r\n */\r\n @Input()\r\n get pickerType(): PickerType {\r\n return this._pickerType\r\n }\r\n\r\n set pickerType(val: PickerType) {\r\n if (val !== this._pickerType) {\r\n this._pickerType = val\r\n }\r\n }\r\n\r\n private _disabled = false\r\n /** Whether the date time picker should be disabled */\r\n @Input()\r\n override get disabled(): boolean {\r\n return !!this._disabled\r\n }\r\n\r\n override set disabled(value: boolean) {\r\n this._disabled = !!value\r\n }\r\n\r\n private _selectMode: SelectMode = 'single'\r\n /**\r\n * The picker select mode\r\n *\r\n * - `'single'` - select a single date\r\n * - `'range'` - select a range [from, to]\r\n * - `'rangeFrom'` - an open range with a fixed start date\r\n * - `'rangeTo'` - an open range with a fixed end date\r\n */\r\n @Input()\r\n get selectMode() {\r\n return this._selectMode\r\n }\r\n\r\n set selectMode(mode: SelectMode) {\r\n if (\r\n mode !== 'single' &&\r\n mode !== 'range' &&\r\n mode !== 'rangeFrom' &&\r\n mode !== 'rangeTo'\r\n ) {\r\n throw Error('DateTime Error: invalid selectMode value!')\r\n }\r\n\r\n this._selectMode = mode\r\n }\r\n\r\n private _startAt?: T\r\n /**\r\n * The date to show when picker opens\r\n *\r\n * Defaults to selected date (if available) or current date.\r\n */\r\n @Input()\r\n get startAt() {\r\n if (this._startAt) {\r\n return this._startAt\r\n }\r\n\r\n if (this.selectMode === 'single') {\r\n return this.value\r\n } else if (\r\n this.selectMode === 'range' ||\r\n this.selectMode === 'rangeFrom'\r\n ) {\r\n return this.values?.[0]\r\n } else if (this.selectMode === 'rangeTo') {\r\n return this.values?.[1]\r\n } else {\r\n return\r\n }\r\n }\r\n\r\n set startAt(date: T | undefined) {\r\n this._startAt = this.getValidDate(\r\n this.dateTimeAdapter.deserialize(date)\r\n )\r\n }\r\n\r\n private _dateTimeFilter?: DateFilter<T>\r\n /** A function to filter available date & time */\r\n @Input()\r\n get dateTimeFilter() {\r\n return this._dateTimeFilter\r\n }\r\n\r\n set dateTimeFilter(filter: DateFilter<T> | undefined) {\r\n this._dateTimeFilter = filter\r\n }\r\n\r\n private _min?: T\r\n /** The minimum valid date */\r\n @Input()\r\n set min(value: T | undefined) {\r\n this._min = this.getValidDate(this.dateTimeAdapter.deserialize(value))\r\n this.changeDetector.markForCheck()\r\n }\r\n\r\n get min() {\r\n return this._min\r\n }\r\n\r\n private _max?: T\r\n /** The maximum valid date */\r\n @Input()\r\n set max(value: T | undefined) {\r\n this._max = this.getValidDate(this.dateTimeAdapter.deserialize(value))\r\n this.changeDetector.markForCheck()\r\n }\r\n\r\n get max() {\r\n return this._max\r\n }\r\n\r\n private _value?: T\r\n @Input()\r\n get value() {\r\n return this._value\r\n }\r\n\r\n set value(value: T | undefined) {\r\n value = this.dateTimeAdapter.deserialize(value)\r\n value = this.getValidDate(value)\r\n this._value = value\r\n this.selected = value\r\n }\r\n\r\n private _values?: Array<T | undefined>\r\n @Input()\r\n get values() {\r\n return this._values\r\n }\r\n\r\n set values(values: Array<T | undefined> | undefined) {\r\n if (values && values.length > 0) {\r\n values = values.map(v => {\r\n v = this.dateTimeAdapter.deserialize(v)\r\n v = this.getValidDate(v)\r\n return (v && this.dateTimeAdapter.clone(v))\r\n })\r\n this._values = [...values]\r\n this.selecteds = [...values]\r\n } else {\r\n this._values = []\r\n this.selecteds = []\r\n }\r\n }\r\n\r\n /**\r\n * Emits selected year in multi-year view\r\n *\r\n * This doesn't imply a change on the selected date.\r\n */\r\n @Output()\r\n readonly yearSelected = new EventEmitter<T>()\r\n\r\n /**\r\n * Emits selected month in year view\r\n *\r\n * This doesn't imply a change on the selected date.\r\n */\r\n @Output()\r\n readonly monthSelected = new EventEmitter<T>()\r\n\r\n private _selected?: T\r\n get selected() {\r\n return this._selected\r\n }\r\n\r\n set selected(value: T | undefined) {\r\n this._selected = value\r\n this.changeDetector.markForCheck()\r\n }\r\n\r\n private _selecteds = new Array<T | undefined>()\r\n get selecteds() {\r\n return this._selecteds\r\n }\r\n\r\n set selecteds(values: Array<T | undefined>) {\r\n this._selecteds = values\r\n this.changeDetector.markForCheck()\r\n }\r\n\r\n get isOpen(): boolean {\r\n return true\r\n }\r\n\r\n get pickerMode(): PickerMode {\r\n return 'inline'\r\n }\r\n\r\n get isInSingleMode(): boolean {\r\n return this._selectMode === 'single'\r\n }\r\n\r\n get isInRangeMode(): boolean {\r\n return (\r\n this._selectMode === 'range' ||\r\n this._selectMode === 'rangeFrom' ||\r\n this._selectMode === 'rangeTo'\r\n )\r\n }\r\n\r\n /** @internal */\r\n @HostBinding('class.nxt-dt-inline')\r\n get inlineClass(): boolean {\r\n return true\r\n }\r\n\r\n private onModelChange?: (date: T | T[]) => void\r\n private onModelTouched?: () => void\r\n\r\n constructor(\r\n protected readonly changeDetector: ChangeDetectorRef,\r\n dateTimeAdapter: DateTimeAdapter<T>,\r\n @Inject(NXT_DATE_TIME_FORMATS)\r\n dateTimeFormats: DateTimeFormats\r\n ) {\r\n super(dateTimeAdapter, dateTimeFormats)\r\n }\r\n\r\n ngOnInit() {\r\n if (this.container)\r\n this.container.picker = this\r\n }\r\n\r\n writeValue(value: any): void {\r\n value = value ?? undefined\r\n if (this.isInSingleMode) {\r\n this.value = value\r\n if (this.container)\r\n this.container.pickerMoment = value\r\n } else {\r\n this.values = value\r\n if (this.container)\r\n this.container.pickerMoment = this._values?.[\r\n this.container.activeSelectedIndex\r\n ]\r\n }\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onModelChange = fn\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onModelTouched = fn\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled\r\n }\r\n\r\n select(date: T[] | T): void {\r\n if (this.disabled) {\r\n return\r\n }\r\n\r\n if (Array.isArray(date)) {\r\n this.values = [...date]\r\n } else {\r\n this.value = date\r\n }\r\n this.onModelChange?.(date)\r\n this.onModelTouched?.()\r\n }\r\n\r\n /**\r\n * Emits the selected year in multi-year view\r\n */\r\n selectYear(normalizedYear: T): void {\r\n this.yearSelected.emit(normalizedYear)\r\n }\r\n\r\n /**\r\n * Emits selected month in year view\r\n */\r\n selectMonth(normalizedMonth: T): void {\r\n this.monthSelected.emit(normalizedMonth)\r\n }\r\n}\r\n","<nxt-date-time-container></nxt-date-time-container>\r\n","import { AfterContentInit, Directive, ElementRef, EventEmitter, forwardRef, HostBinding, HostListener, Inject, Input, OnDestroy, OnInit, Output, Provider, Renderer2 } from '@angular/core'\r\nimport { AbstractControl, ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator, ValidatorFn, Validators } from '@angular/forms'\r\nimport { Subscription } from 'rxjs'\r\nimport { DateTimeAdapter } from '../class/date-time-adapter.class'\r\nimport { DateTimeFormats, NXT_DATE_TIME_FORMATS } from '../class/date-time-format.class'\r\nimport { DateFilter, SelectMode } from '../class/date-time.class'\r\nimport { DateTimeComponent } from './date-time-picker/date-time-picker.component'\r\n\r\n/** @internal */\r\nexport const NXT_DATETIME_VALUE_ACCESSOR: Provider = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => DateTimeInputDirective),\r\n multi: true\r\n}\r\n\r\n/** @internal */\r\nexport const NXT_DATETIME_VALIDATORS: Provider = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => DateTimeInputDirective),\r\n multi: true\r\n}\r\n\r\nexport interface DateTimeInputEvent<T> {\r\n source: DateTimeInputDirective<T>\r\n value?: T | Array<T | undefined>\r\n input: HTMLInputElement\r\n}\r\n\r\n@Directive({\n selector: 'input[nxtDateTime]',\n exportAs: 'nxtDateTimeInput',\n providers: [\n NXT_DATETIME_VALUE_ACCESSOR,\n NXT_DATETIME_VALIDATORS\n ],\n standalone: false\n})\r\nexport class DateTimeInputDirective<T> implements OnInit, AfterContentInit, OnDestroy, ControlValueAccessor, Validator {\r\n /**\r\n * The date & time picker this input is associated with\r\n */\r\n @Input('nxtDateTime')\r\n set dateTime(value: DateTimeComponent<T>) {\r\n this.registerDateTimePicker(value)\r\n }\r\n\r\n private _dateTimeFilter?: DateFilter<T>\r\n /**\r\n * A function to filter available date & time\r\n */\r\n @Input()\r\n set dateTimeFilter(filter: DateFilter<T> | undefined) {\r\n this._dateTimeFilter = filter\r\n this.validatorOnChange?.()\r\n }\r\n get dateTimeFilter() {\r\n return this._dateTimeFilter\r\n }\r\n\r\n private _disabled = false\r\n /** Whether the date & time picker input is disabled */\r\n @Input()\r\n get disabled() {\r\n return this._disabled\r\n }\r\n\r\n set disabled(value: boolean) {\r\n const newValue = !!value\r\n const element = this.elmRef.nativeElement\r\n\r\n if (this._disabled !== newValue) {\r\n this._disabled = newValue\r\n this.disabledChange.emit(newValue)\r\n }\r\n\r\n if (newValue) {\r\n element.blur?.()\r\n }\r\n }\r\n\r\n private _min?: T\r\n /** The minimum valid date */\r\n @Input()\r\n get min() {\r\n return this._min\r\n }\r\n\r\n set min(value: T | undefined) {\r\n this._min = this.getValidDate(this.dateTimeAdapter.deserialize(value))\r\n this.validatorOnChange?.()\r\n }\r\n\r\n private _max?: T\r\n /** The maximum valid date */\r\n @Input()\r\n get max() {\r\n return this._max\r\n }\r\n\r\n set max(value: T | undefined) {\r\n this._max = this.getValidDate(this.dateTimeAdapter.deserialize(value))\r\n this.validatorOnChange?.()\r\n }\r\n\r\n private _selectMode: SelectMode = 'single'\r\n /**\r\n * The picker select mode\r\n *\r\n * - `'single'` - select a single date\r\n * - `'range'` - select a range [from, to]\r\n * - `'rangeFrom'` - an open range with a fixed start date\r\n * - `'rangeTo'` - an open range with a fixed end date\r\n */\r\n @Input()\r\n get selectMode() {\r\n return this._selectMode\r\n }\r\n\r\n set selectMode(mode: SelectMode) {\r\n if (\r\n mode !== 'single' &&\r\n mode !== 'range' &&\r\n mode !== 'rangeFrom' &&\r\n mode !== 'rangeTo'\r\n ) {\r\n throw Error('DateTime Error: invalid selectMode value!')\r\n }\r\n\r\n this._selectMode = mode\r\n }\r\n\r\n /**\r\n * The character to separate the 'from' and 'to' in input value\r\n */\r\n @Input()\r\n rangeSeparator = '~'\r\n\r\n private _value?: T\r\n @Input()\r\n get value() {\r\n return this._value\r\n }\r\n\r\n set value(value: T | undefined) {\r\n value = this.dateTimeAdapter.deserialize(value)\r\n this.lastValueValid = !value || !!this.dateTimeAdapter.isValid(value)\r\n value = this.getValidDate(value)\r\n const oldDate = this._value\r\n this._value = value\r\n\r\n // set the input property 'value'\r\n this.formatNativeInputValue()\r\n\r\n // check if the input value changed\r\n if (!this.dateTimeAdapter.isEqual(oldDate, value)) {\r\n this.valueChange.emit(value)\r\n }\r\n }\r\n\r\n private _values: Array<T | undefined> = []\r\n @Input()\r\n get values() {\r\n return this._values\r\n }\r\n\r\n set values(values: Array<T | undefined>) {\r\n if (values && values.length > 0) {\r\n this._values = values.map(v => {\r\n v = this.dateTimeAdapter.deserialize(v)\r\n return this.getValidDate(v)\r\n })\r\n this.lastValueValid =\r\n (!this._values[0] ||\r\n this.dateTimeAdapter.isValid(this._values[0])) &&\r\n (!this._values[1] ||\r\n this.dateTimeAdapter.isValid(this._values[1]))\r\n } else {\r\n this._values = []\r\n this.lastValueValid = true\r\n }\r\n\r\n // set the input property 'value'\r\n this.formatNativeInputValue()\r\n\r\n this.valueChange.emit(this._values)\r\n }\r\n\r\n /**\r\n * Callback to invoke when `change` event is fired on this `<input>`\r\n */\r\n @Output()\r\n readonly dateTimeChange = new EventEmitter<DateTimeInputEvent<T>>()\r\n\r\n /**\r\n * Callback to invoke when an `input` event is fired on this `<input>`.\r\n */\r\n @Output()\r\n readonly dateTimeInput = new EventEmitter<DateTimeInputEvent<T>>()\r\n\r\n get elementRef() {\r\n return this.elmRef\r\n }\r\n\r\n get isInSingleMode(): boolean {\r\n return this._selectMode === 'single'\r\n }\r\n\r\n get isInRangeMode(): boolean {\r\n return (\r\n this._selectMode === 'range' ||\r\n this._selectMode === 'rangeFrom' ||\r\n this._selectMode === 'rangeTo'\r\n )\r\n }\r\n\r\n /** The date-time-picker that this input is associated with */\r\n dtPicker?: DateTimeComponent<T>\r\n\r\n private dtPickerSub?: Subscription\r\n private localeSub?: Subscription\r\n\r\n private lastValueValid = true\r\n\r\n private onModelChange?: (date: T | Array<T | undefined> | undefined) => void\r\n private onModelTouched?: () => void\r\n private validatorOnChange?: () => void\r\n\r\n /** The form control validator for whether the input parses */\r\n private readonly parseValidator: ValidatorFn = () => this.lastValueValid\r\n ? null\r\n : { dateTimeParse: { text: this.elmRef.nativeElement.value } }\r\n\r\n /** The form control validator for the min date */\r\n private readonly minValidator: ValidatorFn = (\r\n control\r\n ) => {\r\n if (this.isInSingleMode) {\r\n const controlValue = this.getValidDate(\r\n this.dateTimeAdapter.deserialize(control.value)\r\n )\r\n return !this.min ||\r\n !controlValue ||\r\n this.dateTimeAdapter.compare(this.min, controlValue) <= 0\r\n ? null\r\n : { dateTimeMin: { min: this.min, actual: controlValue } }\r\n } else if (this.isInRangeMode && control.value) {\r\n const controlValueFrom = this.getValidDate(\r\n this.dateTimeAdapter.deserialize(control.value[0])\r\n )\r\n const controlValueTo = this.getValidDate(\r\n this.dateTimeAdapter.deserialize(control.value[1])\r\n )\r\n return !this.min ||\r\n !controlValueFrom ||\r\n !controlValueTo ||\r\n this.dateTimeAdapter.compare(this.min, controlValueFrom) <= 0\r\n ? null\r\n : {\r\n dateTimeMin: {\r\n min: this.min,\r\n actual: [controlValueFrom, controlValueTo]\r\n }\r\n }\r\n }\r\n return null\r\n }\r\n\r\n /** The form control validator for the max date */\r\n private readonly maxValidator: ValidatorFn = (\r\n control\r\n ) => {\r\n if (this.isInSingleMode) {\r\n const controlValue = this.getValidDate(\r\n this.dateTimeAdapter.deserialize(control.value)\r\n )\r\n return !this.max ||\r\n !controlValue ||\r\n this.dateTimeAdapter.compare(this.max, controlValue) >= 0\r\n ? null\r\n : { dateTimeMax: { max: this.max, actual: controlValue } }\r\n } else if (this.isInRangeMode && control.value) {\r\n const controlValueFrom = this.getValidDate(\r\n this.dateTimeAdapter.deserialize(control.value[0])\r\n )\r\n const controlValueTo = this.getValidDate(\r\n this.dateTimeAdapter.deserialize(control.value[1])\r\n )\r\n return !this.max ||\r\n !controlValueFrom ||\r\n !controlValueTo ||\r\n this.dateTimeAdapter.compare(this.max, controlValueTo) >= 0\r\n ? null\r\n : {\r\n dateTimeMax: {\r\n max: this.max,\r\n actual: [controlValueFrom, controlValueTo]\r\n }\r\n }\r\n }\r\n return null\r\n }\r\n\r\n /** The form control validator for the date filter */\r\n private readonly filterValidator: ValidatorFn = (\r\n control: AbstractControl\r\n ): ValidationErrors | null => {\r\n const controlValue = this.getValidDate(\r\n this.dateTimeAdapter.deserialize(control.value)\r\n )\r\n return !this._dateTimeFilter ||\r\n !controlValue ||\r\n this._dateTimeFilter(controlValue)\r\n ? null\r\n : { dateTimeFilter: true }\r\n }\r\n\r\n /**\r\n * The form control validator for the range.\r\n * Check whether the 'before' value is before the 'to' value\r\n */\r\n private readonly rangeValidator: ValidatorFn = (\r\n control\r\n ) => {\r\n if (this.isInSingleMode || !control.value) {\r\n return null\r\n }\r\n\r\n const controlValueFrom = this.getValidDate(\r\n this.dateTimeAdapter.deserialize(control.value[0])\r\n )\r\n const controlValueTo = this.getValidDate(\r\n this.dateTimeAdapter.deserialize(control.value[1])\r\n )\r\n\r\n return !controlValueFrom ||\r\n !controlValueTo ||\r\n this.dateTimeAdapter.compare(controlValueFrom, controlValueTo) <= 0\r\n ? null\r\n : { dateTimeRange: true }\r\n }\r\n\r\n /** The combined form control validator for this input */\r\n private readonly validator = Validators.compose([\r\n this.parseValidator,\r\n this.minValidator,\r\n this.maxValidator,\r\n this.filterValidator,\r\n this.rangeValidator\r\n ])\r\n\r\n /** Emits when the value changes (either due to user input or programmatic change) */\r\n readonly valueChange = new EventEmitter<Array<T | undefined> | T | undefined>()\r\n\r\n /** Emits when the disabled state has changed */\r\n readonly disabledChange = new EventEmitter<boolean>()\r\n\r\n /** @internal */\r\n @HostBinding('attr.aria-haspopup')\r\n get inputAriaHaspopup(): boolean {\r\n return true\r\n }\r\n\r\n /** @internal */\r\n @HostBinding('attr.aria-owns')\r\n get inputAriaOwns() {\r\n return (this.dtPicker?.isOpen && this.dtPicker.id) || undefined\r\n }\r\n\r\n /** @internal */\r\n @HostBinding('attr.min')\r\n get minIso8601() {\r\n return this.min ? this.dateTimeAdapter.toIso8601(this.min) : undefined\r\n }\r\n\r\n /** @internal */\r\n @HostBinding('attr.max')\r\n get maxIso8601() {\r\n return this.max ? this.dateTimeAdapter.toIso8601(this.max) : undefined\r\n }\r\n\r\n /** @internal */\r\n @HostBinding('disabled')\r\n get inputDisabled(): boolean {\r\n return this.disabled\r\n }\r\n\r\n constructor(\r\n private readonly elmRef: ElementRef<HTMLInputElement>,\r\n private readonly renderer: Renderer2,\r\n private readonly dateTimeAdapter: DateTimeAdapter<T>,\r\n @Inject(NXT_DATE_TIME_FORMATS)\r\n private readonly dateTimeFormats: DateTimeFormats\r\n ) {\r\n this.localeSub = this.dateTimeAdapter.localeChanges.subscribe(() => {\r\n this.value = this.value\r\n })\r\n }\r\n\r\n ngOnInit(): void {\r\n if (!this.dtPicker) {\r\n throw Error(\r\n 'DateTimePicker: the picker input doesn\\'t have any associated nxt-date-time component'\r\n )\r\n }\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.dtPickerSub = this.dtPicker?.confirmSelectedChange.subscribe(\r\n (selecteds: T[] | T) => {\r\n if (Array.isArray(selecteds)) {\r\n this.values = selecteds\r\n } else {\r\n this.value = selecteds\r\n }\r\n\r\n this.onModelChange?.(selecteds)\r\n this.onModelTouched?.()\r\n this.dateTimeChange.emit({\r\n source: this,\r\n value: selecteds,\r\n input: this.elmRef.nativeElement\r\n })\r\n this.dateTimeInput.emit({\r\n source: this,\r\n value: selecteds,\r\n input: this.elmRef.nativeElement\r\n })\r\n }\r\n )\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.dtPickerSub?.unsubscribe()\r\n this.dtPickerSub = undefined\r\n this.localeSub?.unsubscribe()\r\n this.localeSub = undefined\r\n this.valueChange.complete()\r\n this.disabledChange.complete()\r\n }\r\n\r\n writeValue(value: any): void {\r\n value = value ?? undefined\r\n if (this.isInSingleMode) {\r\n this.value = value\r\n } else {\r\n this.values = value\r\n }\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onModelChange = fn\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onModelTouched = fn\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.disabled = isDisabled\r\n }\r\n\r\n validate(c: AbstractControl) {\r\n return this.validator ? this.validator(c) : null\r\n }\r\n\r\n registerOnValidatorChange(fn: () => void): void {\r\n this.validatorOnChange = fn\r\n }\r\n\r\n /**\r\n * Open the picker when user hold alt + ArrowDown\r\n */\r\n @HostListener('keydown', ['$event'])\r\n handleKeydownOnHost(event: KeyboardEvent): void {\r\n if (event.altKey && event.code.toLowerCase() === 'arrowdown') {\r\n this.dtPicker?.open()\r\n event.preventDefault()\r\n }\r\n }\r\n\r\n @HostListener('blur', ['$event'])\r\n handleBlurOnHost(_event: Event): void {\r\n this.onModelTouched?.()\r\n }\r\n\r\n @HostListener('input', ['$event'])\r\n handleInputOnHost(event: any): void {\r\n const value = event.target.value\r\n if (this._selectMode === 'single') {\r\n this.changeInputInSingleMode(value)\r\n } else if (this._selectMode === 'range') {\r\n this.changeInputInRangeMode(value)\r\n } else {\r\n this.changeInputInRangeFromToMode(value)\r\n }\r\n }\r\n\r\n @HostListener('change', ['$event'])\r\n handleChangeOnHost(_event: any): void {\r\n\r\n let v\r\n if (this.isInSingleMode) {\r\n v = this.value\r\n } else if (this.isInRangeMode) {\r\n v = this.values\r\n }\r\n\r\n this.dateTimeChange.emit({\r\n source: this,\r\n value: v,\r\n input: this.elmRef.nativeElement\r\n })\r\n }\r\n\r\n /**\r\n * Set the native input property 'value'\r\n */\r\n formatNativeInputValue(): void {\r\n if (this.isInSingleMode) {\r\n this.renderer.setProperty(\r\n this.elmRef.nativeElement,\r\n 'value',\r\n this._value\r\n ? this.dateTimeAdapter.format(\r\n this._value,\r\n this.dtPicker?.formatString\r\n )\r\n : ''\r\n )\r\n } else if (this.isInRangeMode) {\r\n if (this._values && this.values.length > 0) {\r\n const from = this._values[0]\r\n const to = this._values[1]\r\n\r\n const fromFormatted = from\r\n ? this.dateTimeAdapter.format(\r\n from,\r\n this.dtPicker?.formatString\r\n )\r\n : ''\r\n const toFormatted = to\r\n ? this.dateTimeAdapter.format(\r\n to,\r\n this.dtPicker?.formatString\r\n )\r\n : ''\r\n\r\n if (!fromFormatted && !toFormatted) {\r\n this.renderer.setProperty(\r\n this.elmRef.nativeElement,\r\n 'value',\r\n undefined\r\n )\r\n } else {\r\n if (this._selectMode === 'range') {\r\n this.renderer.setProperty(\r\n this.elmRef.nativeElement,\r\n 'value',\r\n fromFormatted +\r\n ' ' +\r\n this.rangeSeparator +\r\n ' ' +\r\n toFormatted\r\n )\r\n } else if (this._selectMode === 'rangeFrom') {\r\n this.renderer.setProperty(\r\n this.elmRef.nativeElement,\r\n 'value',\r\n fromFormatted\r\n )\r\n } else if (this._selectMode === 'rangeTo') {\r\n this.renderer.setProperty(\r\n this.elmRef.nativeElement,\r\n 'value',\r\n toFormatted\r\n )\r\n }\r\n }\r\n } else {\r\n this.renderer.setProperty(\r\n this.elmRef.nativeElement,\r\n 'value',\r\n ''\r\n )\r\n }\r\n }\r\n\r\n return\r\n }\r\n\r\n /**\r\n * Register the relationship between this input and its picker component\r\n */\r\n private registerDateTimePicker(picker: DateTimeComponent<T>) {\r\n if (picker) {\r\n this.dtPicker = picker\r\n this.dtPicker.registerInput(this)\r\n }\r\n }\r\n\r\n /**\r\n * Convert a given obj to a valid date object\r\n */\r\n private getValidDate(obj: any): T | undefined {\r\n return this.dateTimeAdapter.isDateInstance(obj) &&\r\n this.dateTimeAdapter.isValid(obj)\r\n ? obj\r\n : undefined\r\n }\r\n\r\n /**\r\n * Convert a time string to a date-time string\r\n * When pickerType is 'timer', the value in the picker's input is a time string.\r\n * The dateTimeAdapter parse fn could not parse a time string to a Date Object.\r\n * Therefore we need this fn to convert a time string to a date-time string.\r\n */\r\n private convertTimeStringToDateTimeString(\r\n timeString?: string,\r\n dateTime?: T\r\n ) {\r\n if (timeString) {\r\n const v = dateTime || this.dateTimeAdapter.now()\r\n const dateString = this.dateTimeAdapter.format(\r\n v,\r\n this.dateTimeFormats.datePickerInput\r\n )\r\n return dateString + ' ' + timeString\r\n }\r\n return undefined\r\n }\r\n\r\n /**\r\n * Handle input change in single mode\r\n */\r\n private changeInputInSingleMode(inputValue: string): void {\r\n let value: string | undefined = inputValue\r\n if (this.dtPicker?.pickerType === 'timer') {\r\n value = this.convertTimeStringToDateTimeString(value, this.value)\r\n }\r\n\r\n let result = this.dateTimeAdapter.parse(\r\n value,\r\n this.dateTimeFormats.parseInput\r\n )\r\n this.lastValueValid = !result || this.dateTimeAdapter.isValid(result)\r\n result = this.getValidDate(result)\r\n\r\n // if the newValue is the same as the oldValue, we intend to not fire the valueChange event\r\n // result equals to undefined means there is input event, but the input value is invalid\r\n if (!this.isSameValue(result, this._value) || result === undefined) {\r\n this._value = result\r\n this.valueChange.emit(result)\r\n this.onModelChange?.(result)\r\n this.dateTimeInput.emit({\r\n source: this,\r\n value: result,\r\n input: this.elmRef.nativeElement\r\n })\r\n }\r\n }\r\n\r\n /**\r\n * Handle input change in rangeFrom or rangeTo mode\r\n */\r\n private changeInputInRangeFromToMode(inputValue?: string): void {\r\n const originalValue =\r\n this._selectMode === 'rangeFrom'\r\n ? this._values[0]\r\n : this._values[1]\r\n\r\n if (this.dtPicker?.pickerType === 'timer') {\r\n inputValue = this.convertTimeStringToDateTimeString(\r\n inputValue,\r\n originalValue\r\n )\r\n }\r\n\r\n let result = this.dateTimeAdapter.parse(\r\n inputValue,\r\n this.dateTimeFormats.parseInput\r\n )\r\n this.lastValueValid = !result || this.dateTimeAdapter.isValid(result)\r\n result = this.getValidDate(result)\r\n\r\n // if the newValue is the same as the oldValue, we intend to not fire the valueChange event\r\n if (\r\n (this._selectMode === 'rangeFrom' &&\r\n this.isSameValue(result, this._values[0]) &&\r\n result) ||\r\n (this._selectMode === 'rangeTo' &&\r\n this.isSameValue(result, this._values[1]) &&\r\n result)\r\n ) {\r\n return\r\n }\r\n\r\n this._values =\r\n this._selectMode === 'rangeFrom'\r\n ? [result, this._values[1]]\r\n : [this._values[0], result]\r\n this.valueChange.emit(this._values)\r\n this.onModelChange?.(this._values)\r\n this.dateTimeInput.emit({\r\n source: this,\r\n value: this._values,\r\n input: this.elmRef.nativeElement\r\n })\r\n }\r\n\r\n /**\r\n * Handle input change in range mode\r\n */\r\n private changeInputInRangeMode(inputValue: string): void {\r\n const selecteds = inputValue.split(this.rangeSeparator)\r\n let fromString: string | undefined = selecteds[0]\r\n let toString: string | undefined = selecteds[1]\r\n\r\n if (this.dtPicker?.pickerType === 'timer') {\r\n fromString = this.convertTimeStringToDateTimeString(\r\n fromString,\r\n this.values[0]\r\n )\r\n toString = this.convertTimeStringToDateTimeString(\r\n toString,\r\n this.values[1]\r\n )\r\n }\r\n\r\n let from = this.dateTimeAdapter.parse(\r\n fromString,\r\n this.dateTimeFormats.parseInput\r\n )\r\n let to = this.dateTimeAdapter.parse(\r\n toString,\r\n this.dateTimeFormats.parseInput\r\n )\r\n this.lastValueValid =\r\n (!from || this.dateTimeAdapter.isValid(from)) &&\r\n (!to || this.dateTimeAdapter.isValid(to))\r\n from = this.getValidDate(from)\r\n to = this.getValidDate(to)\r\n\r\n // if the newValue is the same as the oldValue, we intend to not fire the valueChange event\r\n if (\r\n !this.isSameValue(from, this._values[0]) ||\r\n !this.isSameValue(to, this._values[1]) ||\r\n (!from && !to)\r\n ) {\r\n this._values = [from, to]\r\n this.valueChange.emit(this._values)\r\n this.onModelChange?.(this._values)\r\n this.dateTimeInput.emit({\r\n source: this,\r\n value: this._values,\r\n input: this.elmRef.nativeElement\r\n })\r\n }\r\n }\r\n\r\n /**\r\n * Check if the two value is the same\r\n */\r\n private isSameValue(first?: T, second?: T): boolean {\r\n if (first && second) {\r\n return this.dateTimeAdapter.compare(first, second) === 0\r\n }\r\n\r\n return first == second\r\n }\r\n}\r\n","import { AfterContentInit, ChangeDetectorRef, Directive, HostBinding, HostListener, Input, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core'\r\nimport { merge, Observable, of as observableOf, Subscription } from 'rxjs'\r\nimport { DateTimeComponent } from './date-time-picker/date-time-picker.component'\r\n\r\n@Directive({\n selector: '[nxtDateTimeTrigger]',\n standalone: false\n})\r\nexport class DateTimeTriggerDirective<T> implements OnInit, OnChanges, AfterContentInit, OnDestroy {\r\n\r\n @Input('nxtDateTimeTrigger')\r\n dtPicker?: DateTimeComponent<T>\r\n\r\n private _disabled?: boolean\r\n @Input()\r\n get disabled(): boolean {\r\n return this._disabled ?? !!this.dtPicker?.disabled\r\n }\r\n\r\n set disabled(value: boolean) {\r\n this._disabled = value\r\n }\r\n\r\n /** @internal */\r\n @HostBinding('class.nxt-dt-trigger-disabled')\r\n get triggerDisabledClass(): boolean {\r\n return this.disabled\r\n }\r\n\r\n private stateChanges?: Subscription\r\n\r\n constructor(\r\n protected readonly changeDetector: ChangeDetectorRef\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if ('datepicker' in changes) {\r\n this.watchStateChanges()\r\n }\r\n }\r\n\r\n ngAfterContentInit() {\r\n this.watchStateChanges()\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.stateChanges?.unsubscribe()\r\n this.stateChanges = undefined\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n handleClickOnHost(event: Event): void {\r\n if (this.dtPicker) {\r\n this.dtPicker.open()\r\n event.stopPropagation()\r\n }\r\n }\r\n\r\n private watchStateChanges(): void {\r\n this.stateChanges?.unsubscribe()\r\n this.stateChanges = undefined\r\n\r\n const inputDisabled = this.dtPicker && this.dtPicker.dtInput ?\r\n this.dtPicker.dtInput.disabledChange : observableOf()\r\n\r\n const pickerDisabled = this.dtPicker ?\r\n this.dtPicker.disabledChange : observableOf()\r\n\r\n this.stateChanges = merge(pickerDisabled as Observable<boolean>, inputDisabled as Observable<boolean>)\r\n .subscribe(() => {\r\n this.changeDetector.markForCheck()\r\n })\r\n }\r\n}\r\n","import { NoopScrollStrategy, ScrollStrategy } from '@angular/cdk/overlay'\r\nimport { ViewContainerRef } from '@angular/core'\r\n\r\n/** @internal */\r\nlet uniqueId = 0\r\n\r\n/** Possible overrides for a dialog's position */\r\nexport interface DialogPosition {\r\n /** Override for the dialog's top position */\r\n top?: string\r\n\r\n /** Override for the dialog's bottom position */\r\n bottom?: string\r\n\r\n /** Override for the dialog's left position */\r\n left?: string\r\n\r\n /** Override for the dialog's right position */\r\n right?: string\r\n}\r\n\r\nexport class DialogConfig {\r\n /**\r\n * ID of the element that describes the dialog.\r\n */\r\n ariaDescribedBy?: string\r\n\r\n /**\r\n * Whether to focus the dialog when the dialog is isOpen\r\n */\r\n autoFocus = true\r\n\r\n /** Whether the dialog has a backdrop */\r\n hasBackdrop?= true\r\n\r\n /**\r\n * Custom style for the backdrop\r\n */\r\n backdropStyle?: any\r\n\r\n /** Data being injected into the child component */\r\n data?: any\r\n\r\n /** Whether the user can use escape or clicking outside to close a modal */\r\n disableClose?= false\r\n\r\n /**\r\n * ID for the modal. If omitted, a unique one will be generated.\r\n */\r\n id?: string\r\n\r\n /**\r\n * The ARIA role of the dialog element.\r\n */\r\n role?: 'dialog' | 'alertdialog' = 'dialog'\r\n\r\n /**\r\n * Custom class for the pane\r\n */\r\n paneClass?: string | string[] = ''\r\n\r\n /**\r\n * Mouse Event\r\n */\r\n event?: MouseEvent\r\n\r\n /**\r\n * Custom class for the backdrop\r\n */\r\n backdropClass?: string | string[] = ''\r\n\r\n /**\r\n * Whether the dialog should close when the user goes backwards/forwards in history.\r\n */\r\n closeOnNavigation?: boolean = true\r\n\r\n /** Width of the dialog */\r\n width?: string = ''\r\n\r\n /** Height of the dialog */\r\n height?: string = ''\r\n\r\n /**\r\n * The min-width of the overlay panel.\r\n * If a number is provided, pixel units are assumed.\r\n */\r\n minWidth?: number | string\r\n\r\n /**\r\n * The min-height of the overlay panel.\r\n * If a number is provided, pixel units are assumed.\r\n */\r\n minHeight?: number | string\r\n\r\n /**\r\n * The max-width of the overlay panel.\r\n * If a number is provided, pixel units are assumed.\r\n */\r\n maxWidth?: number | string = '85vw'\r\n\r\n /**\r\n * The max-height of the overlay panel.\r\n * If a number is provided, pixel units are assumed.\r\n */\r\n maxHeight?: number | string\r\n\r\n /** Position overrides */\r\n position?: DialogPosition\r\n\r\n /**\r\n * The scroll strategy when the dialog is open\r\n * Learn more this from https://material.angular.io/cdk/overlay/overview#scroll-strategies\r\n */\r\n scrollStrategy?: ScrollStrategy = new NoopScrollStrategy()\r\n\r\n viewContainerRef?: ViewContainerRef\r\n\r\n constructor() {\r\n this.id = `nxt-dialog-${uniqueId++}`\r\n }\r\n}\r\n","import { AnimationEvent } from '@angular/animations'\r\nimport { GlobalPositionStrategy, OverlayRef } from '@angular/cdk/overlay'\r\nimport { Location } from '@angular/common'\r\nimport { Subject, SubscriptionLike as ISubscription } from 'rxjs'\r\nimport { filter, take } from 'rxjs/operators'\r\nimport { DialogContainerComponent } from '../dialog/dialog-container/dialog-container.component'\r\nimport { DialogPosition } from './dialog-config.class'\r\n\r\nexport class DialogRef<T> {\r\n\r\n private result: any\r\n\r\n private readonly _beforeClose$ = new Subject<void>()\r\n\r\n private readonly _afterOpen$ = new Subject<void>()\r\n\r\n private readonly _afterClosed$ = new Subject<void>()\r\n\r\n /** Subscription to changes in the user's location */\r\n private locationChanged?: ISubscription\r\n\r\n /**\r\n * The instance of component isOpen into modal\r\n */\r\n componentInstance?: T\r\n\r\n /** Whether the user is allowed to close the dialog */\r\n disableClose = !!this.container.config?.disableClose\r\n\r\n constructor(\r\n private readonly overlayRef: OverlayRef,\r\n private readonly container: DialogContainerComponent,\r\n readonly id?: string,\r\n location?: Location\r\n ) {\r\n this.container.animationStateChanged\r\n .pipe(\r\n filter((event: AnimationEvent) => event.phaseName === 'done' && event.toState === 'enter'),\r\n take(1)\r\n )\r\n .subscribe(() => {\r\n this._afterOpen$.next(undefined)\r\n this._afterOpen$.complete()\r\n })\r\n\r\n this.container.animationStateChanged\r\n .pipe(\r\n filter((event: AnimationEvent) => event.phaseName === 'done' && event.toState === 'exit'),\r\n take(1)\r\n )\r\n .subscribe(() => {\r\n this.overlayRef.dispose()\r\n this.locationChanged?.unsubscribe()\r\n this.locationChanged = undefined\r\n this._afterClosed$.next(this.result)\r\n this._afterClosed$.complete()\r\n this.componentInstance = undefined\r\n })\r\n\r\n this.overlayRef.keydownEvents()\r\n .pipe(filter(event => event.code.toLowerCase() === 'escape' && !this.disableClose))\r\n .subscribe(() => this.close())\r\n\r\n if (location) {\r\n this.locationChanged = location.subscribe(() => {\r\n if (this.container.config?.closeOnNavigation) {\r\n this.close()\r\n }\r\n })\r\n }\r\n }\r\n\r\n close(dialogResult?: any) {\r\n this.result = dialogResult\r\n\r\n this.container.animationStateChanged\r\n .pipe(\r\n filter((event: AnimationEvent) => event.phaseName === 'start'),\r\n take(1)\r\n )\r\n .subscribe(() => {\r\n this._beforeClose$.next(dialogResult)\r\n this._beforeClose$.complete()\r\n this.overlayRef.detachBackdrop()\r\n })\r\n\r\n this.container.startExitAnimation()\r\n }\r\n\r\n /**\r\n * Gets an observable that emits when the overlay's backdrop has been clicked.\r\n */\r\n backdropClick() {\r\n return this.overlayRef.backdropClick()\r\n }\r\n\r\n /**\r\n * Gets an observable that emits when keydown events are targeted on the overlay.\r\n */\r\n keydownEvents() {\r\n return this.overlayRef.keydownEvents()\r\n }\r\n\r\n /**\r\n * Updates the dialog's position.\r\n *\r\n * @param position New dialog position.\r\n */\r\n updatePosition(position?: DialogPosition): this {\r\n const strategy = this.getPositionStrategy()\r\n\r\n if (position && (position.left || position.right)) {\r\n if (position.left)\r\n strategy.left(position.left)\r\n else\r\n strategy.right(position.right)\r\n } else {\r\n strategy.centerHorizontally()\r\n }\r\n\r\n if (position && (position.top || position.bottom)) {\r\n if (position.top)\r\n strategy.top(position.top)\r\n else\r\n strategy.bottom(position.bottom)\r\n } else {\r\n strategy.centerVertically()\r\n }\r\n\r\n this.overlayRef.updatePosition()\r\n\r\n return this\r\n }\r\n\r\n /**\r\n * Updates the dialog's width and height.\r\n *\r\n * @param width New width of the dialog.\r\n * @param height New height of the dialog.\r\n */\r\n updateSize(width: string = 'auto', height: string = 'auto'): this {\r\n this.overlayRef.updateSize({ width, height })\r\n this.overlayRef.updatePosition()\r\n return this\r\n }\r\n\r\n isAnimating(): boolean {\r\n return this.container.isAnimating\r\n }\r\n\r\n afterOpen() {\r\n return this._afterOpen$.asObservable()\r\n }\r\n\r\n beforeClose() {\r\n return this._beforeClose$.asObservable()\r\n }\r\n\r\n afterClosed() {\r\n return this._afterClosed$.asObservable()\r\n }\r\n\r\n /** Fetches the position strategy object from the overlay ref */\r\n private getPositionStrategy(): GlobalPositionStrategy {\r\n return this.overlayRef.getConfig().positionStrategy as GlobalPositionStrategy\r\n }\r\n}\r\n","/**\r\n * Extends an object with the *enumerable* and *own* properties of one or more source objects,\r\n * similar to Object.assign.\r\n *\r\n * @param dest The object which will have properties copied to it.\r\n * @param sources The source objects from which properties will be copied.\r\n * @internal\r\n */\r\nexport function extendObject(dest: any, ...sources: any[]): any {\r\n if (dest == null || dest == undefined) {\r\n throw TypeError('Cannot convert undefined or null to object')\r\n }\r\n\r\n for (const source of sources) {\r\n if (source != null && source != undefined) {\r\n for (const key in source) {\r\n if (source.hasOwnProperty(key)) {\r\n dest[key] = source[key]\r\n }\r\n }\r\n }\r\n }\r\n\r\n return dest\r\n}\r\n","import { animate, animateChild, AnimationEvent, keyframes, style, transition, trigger } from '@angular/animations'\r\nimport { ConfigurableFocusTrap, ConfigurableFocusTrapFactory } from '@angular/cdk/a11y'\r\nimport { BasePortalOutlet, CdkPortalOutlet, ComponentPortal, TemplatePortal } from '@angular/cdk/portal'\r\nimport { ChangeDetectorRef, Component, ComponentRef, ElementRef, EmbeddedViewRef, EventEmitter, HostBinding, HostListener, Inject, OnInit, Optional, ViewChild, DOCUMENT } from '@angular/core'\r\nimport { DialogConfig } from '../../class/dialog-config.class'\r\n\r\n/** @internal */\r\nexport type DialogContainerState = 'void' | 'enter' | 'exit'\r\n\r\n/** @internal */\r\nconst zoomFadeIn = {\r\n opacity: 0,\r\n transform: 'translateX({{ x }}) translateY({{ y }}) scale({{scale}})'\r\n}\r\n\r\n/** @internal */\r\nconst zoomFadeInFrom = {\r\n opacity: 0,\r\n transform: 'translateX({{ x }}) translateY({{ y }}) scale({{scale}})',\r\n transformOrigin: '{{ ox }} {{ oy }}'\r\n}\r\n\r\n/** @internal */\r\n@Component({\r\n selector: 'nxt-dialog-container',\r\n templateUrl: './dialog-container.component.html',\r\n animations: [\r\n trigger('slideModal', [\r\n transition('void => enter', [\r\n style(zoomFadeInFrom),\r\n animate('300ms cubic-bezier(0.35, 0, 0.25, 1)', style('*')),\r\n animate('150ms', keyframes([\r\n style({ transform: 'scale(1)', offset: 0 }),\r\n style({ transform: 'scale(1.05)', offset: 0.3 }),\r\n style({ transform: 'scale(.95)', offset: 0.8 }),\r\n style({ transform: 'scale(1)', offset: 1.0 })\r\n ])),\r\n animateChild()\r\n ], {\r\n params: {\r\n x: '0px',\r\n y: '0px',\r\n ox: '50%',\r\n oy: '50%',\r\n scale: 1\r\n }\r\n }),\r\n transition('enter => exit', [animateChild(), animate(200, style(zoomFadeIn))], { params: { x: '0px', y: '0px', ox: '50%', oy: '50%' } })\r\n ])\r\n ],\r\n standalone: false\r\n})\r\nexport class DialogContainerComponent extends BasePortalOutlet implements OnInit {\r\n @ViewChild(CdkPortalOutlet, { static: true })\r\n portalOutlet?: CdkPortalOutlet\r\n\r\n /** The class that traps and manages focus within the dialog */\r\n private focusTrap?: ConfigurableFocusTrap\r\n\r\n /** ID of the element that should be considered as the dialog's label */\r\n ariaLabelledBy?: string\r\n\r\n /** Emits when an animation state changes */\r\n readonly animationStateChanged = new EventEmitter<AnimationEvent>()\r\n\r\n isAnimating = false\r\n\r\n private _config?: DialogConfig\r\n get config() {\r\n return this._config\r\n }\r\n\r\n private state: DialogContainerState = 'enter'\r\n\r\n // for animation purpose\r\n private params: any = {\r\n x: '0px',\r\n y: '0px',\r\n ox: '50%',\r\n oy: '50%',\r\n scale: 0\r\n }\r\n\r\n // A variable to hold the focused element before the dialog was open.\r\n // This would help us to refocus back to element when the dialog was closed.\r\n private elementFocusedBeforeDialogWasOpened?: HTMLElement\r\n\r\n /** @internal */\r\n @HostBinding('class.nxt-dialog-container')\r\n get dialogContainerClass(): boolean {\r\n return true\r\n }\r\n\r\n /** @internal */\r\n @HostBinding('attr.tabindex')\r\n get dialogContainerTabIndex(): number {\r\n return -1\r\n }\r\n\r\n /** @internal */\r\n @HostBinding('attr.id')\r\n get dialogContainerId() {\r\n return this._config?.id\r\n }\r\n\r\n /** @internal */\r\n @HostBinding('attr.role')\r\n get dialogContainerRole() {\r\n return this._config?.role\r\n }\r\n\r\n /** @internal */\r\n @HostBinding('attr.aria-labelledby')\r\n get dialogContainerAriaLabelledby() {\r\n return this.ariaLabelledBy\r\n }\r\n\r\n /** @internal */\r\n @HostBinding('attr.aria-describedby')\r\n get dialogContainerAriaDescribedby() {\r\n return this._config?.ariaDescribedBy\r\n }\r\n\r\n /** @internal */\r\n @HostBinding('@slideModal')\r\n get dialogContainerAnimation() {\r\n return { value: this.state, params: this.params }\r\n }\r\n\r\n constructor(\r\n private readonly changeDetector: ChangeDetectorRef,\r\n private readonly elementRef: ElementRef<HTMLElement>,\r\n private readonly focusTrapFactory: ConfigurableFocusTrapFactory,\r\n @Optional()\r\n @Inject(DOCUMENT)\r\n private readonly document?: Document\r\n ) {\r\n super()\r\n }\r\n\r\n ngOnInit() { }\r\n\r\n /**\r\n * Attach a ComponentPortal as content to this dialog container.\r\n */\r\n attachComponentPortal<T>(\r\n portal: ComponentPortal<T>\r\n ): ComponentRef<T> {\r\n if (this.portalOutlet?.hasAttached()) {\r\n throw Error(\r\n 'Attempting to attach dialog content after content is already attached'\r\n )\r\n }\r\n\r\n this.savePreviouslyFocusedElement()\r\n return this.portalOutlet!.attachComponentPortal(portal)\r\n }\r\n\r\n attachTemplatePortal<C>(\r\n _portal: TemplatePortal<C>\r\n ): EmbeddedViewRef<C> {\r\n throw new Error('Method not implemented.')\r\n }\r\n\r\n setConfig(config: DialogConfig): void {\r\n this._config = config\r\n\r\n if (config.event) {\r\n this.calculateZoomOrigin(config.event)\r\n }\r\n }\r\n\r\n @HostListener('@slideModal.start', ['$event'])\r\n onAnimationStart(event: AnimationEvent): void {\r\n this.isAnimating = true\r\n this.animationStateChanged.emit(event)\r\n }\r\n\r\n @HostListener('@slideModal.done', ['$event'])\r\n onAnimationDone(event: AnimationEvent): void {\r\n if (event.toState === 'enter') {\r\n this.trapFocus()\r\n } else if (event.toState === 'exit') {\r\n this.restoreFocus()\r\n }\r\n\r\n this.animationStateChanged.emit(event)\r\n this.isAnimating = false\r\n }\r\n\r\n startExitAnimation() {\r\n this.state = 'exit'\r\n this.changeDetector.markForCheck()\r\n }\r\n\r\n /**\r\n * Calculate origin used in the `zoomFadeInFrom()`\r\n * for animation purpose\r\n */\r\n private calculateZoomOrigin(event: any): void {\r\n if (!event) {\r\n return\r\n }\r\n\r\n const clientX = event.clientX\r\n const clientY = event.clientY\r\n\r\n const wh = window.innerWidth / 2\r\n const hh = window.innerHeight / 2\r\n const x = clientX - wh\r\n const y = clientY - hh\r\n const ox = clientX / window.innerWidth\r\n const oy = clientY / window.innerHeight\r\n\r\n this.params.x = `${x}px`\r\n this.params.y = `${y}px`\r\n this.params.ox = `${ox * 100}%`\r\n this.params.oy = `${oy * 100}%`\r\n this.params.scale = 0\r\n\r\n return\r\n }\r\n\r\n /**\r\n * Save the focused element before dialog was open\r\n */\r\n private savePreviouslyFocusedElement(): void {\r\n if (this.document) {\r\n this.elementFocusedBeforeDialogWasOpened = this.document\r\n .activeElement as HTMLElement\r\n\r\n Promise.resolve().then(() => this.elementRef.nativeElement.focus()).catch(() => { })\r\n }\r\n }\r\n\r\n private trapFocus(): void {\r\n if (!this.focusTrap) {\r\n this.focusTrap = this.focusTrapFactory.create(\r\n this.elementRef.nativeElement\r\n )\r\n }\r\n\r\n if (this._config?.autoFocus) {\r\n this.focusTrap?.focusInitialElementWhenReady().catch(() => { })\r\n }\r\n }\r\n\r\n private restoreFocus(): void {\r\n const toFocus = this.elementFocusedBeforeDialogWasOpened\r\n\r\n if (toFocus && typeof toFocus.focus === 'function') {\r\n toFocus.focus()\r\n }\r\n\r\n if (this.focusTrap) {\r\n this.focusTrap.destroy()\r\n this.focusTrap = undefined\r\n }\r\n }\r\n}\r\n","<ng-template cdkPortalOutlet></ng-template>\r\n","import { Overlay, OverlayConfig, OverlayContainer, OverlayRef, ScrollStrategy } from '@angular/cdk/overlay'\r\nimport { ComponentPortal, ComponentType } from '@angular/cdk/portal'\r\nimport { Location } from '@angular/common'\r\nimport { ComponentRef, Inject, Injectable, InjectionToken, Injector, Optional, SkipSelf, TemplateRef } from '@angular/core'\r\nimport { defer, of, Subject } from 'rxjs'\r\nimport { concatAll } from 'rxjs/operators'\r\nimport { DialogConfig } from '../class/dialog-config.class'\r\nimport { DialogRef } from '../class/dialog-ref.class'\r\nimport { extendObject } from '../utils/object'\r\nimport { DialogContainerComponent } from './dialog-container/dialog-container.component'\r\n\r\n/** @internal */\r\nexport const NXT_DIALOG_DATA = new InjectionToken<any>('NXT_DIALOG_DATA')\r\n\r\n/**\r\n * Injection token that determines the scroll handling while the dialog is open.\r\n *\r\n * @internal\r\n */\r\nexport const NXT_DIALOG_SCROLL_STRATEGY = new InjectionToken<\r\n () => ScrollStrategy\r\n>('NXT_DIALOG_SCROLL_STRATEGY')\r\n\r\n/** @internal */\r\nexport function NXT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY(\r\n overlay: Overlay\r\n): () => ScrollStrategy {\r\n const fn = () => overlay.scrollStrategies.block()\r\n return fn\r\n}\r\n\r\n/** @internal */\r\nexport const NXT_DIALOG_SCROLL_STRATEGY_PROVIDER = {\r\n provide: NXT_DIALOG_SCROLL_STRATEGY,\r\n deps: [Overlay],\r\n useFactory: NXT_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY\r\n}\r\n\r\n/**\r\n * Injection token that can be used to specify default dialog options.\r\n *\r\n * @internal\r\n */\r\nexport const NXT_DIALOG_DEFAULT_OPTIONS = new InjectionToken<DialogConfig>(\r\n 'NXT_DIALOG_DEFAULT_OPTIONS'\r\n)\r\n\r\n/** @internal */\r\n@Injectable()\r\nexport class DialogService {\r\n private readonly ariaHiddenElements = new Map<Element, string | null>()\r\n\r\n private readonly _openDialogsAtThisLevel: Array<DialogRef<any>> = []\r\n private readonly _afterOpenAtThisLevel = new Subject<DialogRef<any>>()\r\n private readonly _afterAllClosedAtThisLevel = new Subject<void>()\r\n\r\n /** Keeps track of the currently-open dialogs */\r\n get openDialogs(): Array<DialogRef<any>> {\r\n return this.parentDialog\r\n ? this.parentDialog.openDialogs\r\n : this._openDialogsAtThisLevel\r\n }\r\n\r\n /** Stream that emits when a dialog has been isOpen */\r\n get afterOpen(): Subject<DialogRef<any>> {\r\n return this.parentDialog\r\n ? this.parentDialog.afterOpen\r\n : this._afterOpenAtThisLevel\r\n }\r\n\r\n get _afterAllClosed(): Subject<void> {\r\n const parent = this.parentDialog\r\n return parent\r\n ? parent._afterAllClosed\r\n : this._afterAllClosedAtThisLevel\r\n }\r\n\r\n /**\r\n * Stream that emits when all open dialog have finished closing.\r\n * Will emit on subscribe if there are no open dialogs to begin with.\r\n */\r\n\r\n readonly afterAllClosed = defer(\r\n () =>\r\n this._openDialogsAtThisLevel.length\r\n ? this._afterAllClosed\r\n : of([undefined], this._afterAllClosed).pipe(concatAll())\r\n )\r\n\r\n private scrollStrategy: () => ScrollStrategy\r\n\r\n constructor(\r\n private readonly overlay: Overlay,\r\n private readonly injector: Injector,\r\n @Optional()\r\n @Inject(Location)\r\n private readonly location: Location | undefined,\r\n @Inject(NXT_DIALOG_SCROLL_STRATEGY)\r\n scrollStrategy: () => ScrollStrategy,\r\n @Optional()\r\n @Inject(NXT_DIALOG_DEFAULT_OPTIONS)\r\n private readonly defaultOptions: DialogConfig | undefined,\r\n @Optional()\r\n @SkipSelf()\r\n @Inject(DialogService)\r\n private readonly parentDialog: DialogService | undefined,\r\n private readonly overlayContainer: OverlayContainer\r\n ) {\r\n this.scrollStrategy = scrollStrategy\r\n if (!parentDialog && location) {\r\n location.subscribe(() => this.closeAll())\r\n }\r\n }\r\n\r\n open<T>(\r\n componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\r\n config?: DialogConfig\r\n ): DialogRef<any> {\r\n config = applyConfigDefaults(config, this.defaultOptions)\r\n\r\n if (config.id && this.getDialogById(config.id)) {\r\n throw Error(`Dialog with id \"${config.id}\" exists already. The dialog id must be unique.`)\r\n }\r\n\r\n const overlayRef = this.createOverlay(config)\r\n const dialogContainer = this.attachDialogContainer(overlayRef, config)\r\n const dialogRef = this.attachDialogContent<T>(\r\n componentOrTemplateRef,\r\n dialogContainer,\r\n overlayRef,\r\n config\r\n )\r\n\r\n if (!this.openDialogs.length) {\r\n this.hideNonDialogContentFromAssistiveTechnology()\r\n }\r\n\r\n this.openDialogs.push(dialogRef)\r\n dialogRef\r\n .afterClosed()\r\n .subscribe(() => this.removeOpenDialog(dialogRef))\r\n this.afterOpen.next(dialogRef)\r\n return dialogRef\r\n }\r\n\r\n /**\r\n * Closes all of the currently-open dialogs.\r\n */\r\n closeAll(): void {\r\n let i = this.openDialogs.length\r\n\r\n while (i--) {\r\n this.openDialogs[i].close()\r\n }\r\n }\r\n\r\n /**\r\n * Finds an open dialog by its id.\r\n *\r\n * @param id ID to use when looking up the dialog.\r\n */\r\n getDialogById(id: string): DialogRef<any> | undefined {\r\n return this.openDialogs.find(dialog => dialog.id === id)\r\n }\r\n\r\n private attachDialogContent<T>(\r\n componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\r\n dialogContainer: DialogContainerComponent,\r\n overlayRef: OverlayRef,\r\n config: DialogConfig\r\n ) {\r\n const dialogRef = new DialogRef<T>(\r\n overlayRef,\r\n dialogContainer,\r\n config.id,\r\n this.location\r\n )\r\n\r\n if (config.hasBackdrop) {\r\n overlayRef.backdropClick().subscribe(() => {\r\n if (!dialogRef.disableClose) {\r\n dialogRef.close()\r\n }\r\n })\r\n }\r\n\r\n if (!(componentOrTemplateRef instanceof TemplateRef)) {\r\n const injector = this.createInjector<T>(\r\n config,\r\n dialogRef,\r\n dialogContainer\r\n )\r\n const contentRef = dialogContainer.attachComponentPortal(\r\n new ComponentPortal(componentOrTemplateRef, undefined, injector)\r\n )\r\n dialogRef.componentInstance = contentRef.instance\r\n }\r\n\r\n dialogRef\r\n .updateSize(config.width, config.height)\r\n .updatePosition(config.position)\r\n\r\n return dialogRef\r\n }\r\n\r\n private createInjector<T>(\r\n config: DialogConfig,\r\n dialogRef: DialogRef<T>,\r\n dialogContainer: DialogContainerComponent\r\n ) {\r\n const userInjector =\r\n config &&\r\n config.viewContainerRef &&\r\n config.viewContainerRef.injector\r\n\r\n return Injector.create({\r\n providers: [\r\n { provide: DialogRef, useValue: dialogRef },\r\n { provide: DialogContainerComponent, useValue: dialogContainer },\r\n { provide: NXT_DIALOG_DATA, useValue: config.data }\r\n ],\r\n parent: userInjector || this.injector\r\n })\r\n }\r\n\r\n private createOverlay(config: DialogConfig): OverlayRef {\r\n const overlayConfig = this.getOverlayConfig(config)\r\n return this.overlay.create(overlayConfig)\r\n }\r\n\r\n private attachDialogContainer(\r\n overlayRef: OverlayRef,\r\n config: DialogConfig\r\n ): DialogContainerComponent {\r\n const containerPortal = new ComponentPortal(\r\n DialogContainerComponent,\r\n config.viewContainerRef\r\n )\r\n const containerRef: ComponentRef<\r\n DialogContainerComponent\r\n > = overlayRef.attach(containerPortal)\r\n containerRef.instance.setConfig(config)\r\n\r\n return containerRef.instance\r\n }\r\n\r\n private getOverlayConfig(dialogConfig: DialogConfig): OverlayConfig {\r\n const state = new OverlayConfig({\r\n positionStrategy: this.overlay.position().global(),\r\n scrollStrategy:\r\n dialogConfig.scrollStrategy || this.scrollStrategy(),\r\n panelClass: dialogConfig.paneClass,\r\n hasBackdrop: dialogConfig.hasBackdrop,\r\n minWidth: dialogConfig.minWidth,\r\n minHeight: dialogConfig.minHeight,\r\n maxWidth: dialogConfig.maxWidth,\r\n maxHeight: dialogConfig.maxHeight\r\n })\r\n\r\n if (dialogConfig.backdropClass) {\r\n state.backdropClass = dialogConfig.backdropClass\r\n }\r\n\r\n return state\r\n }\r\n\r\n private removeOpenDialog(dialogRef: DialogRef<any>): void {\r\n const index = this._openDialogsAtThisLevel.indexOf(dialogRef)\r\n\r\n if (index > -1) {\r\n this.openDialogs.splice(index, 1)\r\n // If all the dialogs were closed, remove/restore the `aria-hidden`\r\n // to a the siblings and emit to the `afterAllClosed` stream.\r\n if (!this.openDialogs.length) {\r\n this.ariaHiddenElements.forEach((previousValue, element) => {\r\n if (previousValue) {\r\n element.setAttribute('aria-hidden', previousValue)\r\n } else {\r\n element.removeAttribute('aria-hidden')\r\n }\r\n })\r\n\r\n this.ariaHiddenElements.clear()\r\n this._afterAllClosed.next()\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Hides all of the content that isn't an overlay from assistive technology.\r\n */\r\n private hideNonDialogContentFromAssistiveTechnology() {\r\n const overlayContainer = this.overlayContainer.getContainerElement()\r\n\r\n // Ensure that the overlay container is attached to the DOM.\r\n if (overlayContainer.parentElement) {\r\n const siblings = overlayContainer.parentElement.children\r\n\r\n for (let i = siblings.length - 1; i > -1; i--) {\r\n const sibling = siblings[i]\r\n\r\n if (\r\n sibling !== overlayContainer &&\r\n sibling.nodeName !== 'SCRIPT' &&\r\n sibling.nodeName !== 'STYLE' &&\r\n !sibling.hasAttribute('aria-live')\r\n ) {\r\n this.ariaHiddenElements.set(\r\n sibling,\r\n sibling.getAttribute('aria-hidden')\r\n )\r\n sibling.setAttribute('aria-hidden', 'true')\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Applies default options to the dialog config.\r\n *\r\n * @param config Config to be modified.\r\n * @param defaultOptions Default config setting\r\n * @returns The new configuration object.\r\n * @internal\r\n */\r\nfunction applyConfigDefaults(\r\n config?: DialogConfig,\r\n defaultOptions?: DialogConfig\r\n): DialogConfig {\r\n return extendObject(new DialogConfig(), config, defaultOptions)\r\n}\r\n","import { coerceArray } from '@angular/cdk/coercion'\r\nimport { BlockScrollStrategy, Overlay, OverlayConfig, OverlayRef, PositionStrategy, ScrollStrategy } from '@angular/cdk/overlay'\r\nimport { ComponentPortal } from '@angular/cdk/portal'\r\nimport { ChangeDetectionStrategy, ChangeDetectorRef, Component, ComponentRef, EventEmitter, Inject, InjectionToken, Input, NgZone, OnDestroy, OnInit, Optional, Output, ViewContainerRef, DOCUMENT } from '@angular/core'\r\nimport { merge, Subscription } from 'rxjs'\r\nimport { filter, take } from 'rxjs/operators'\r\nimport { DateTimeAdapter } from '../../class/date-time-adapter.class'\r\nimport { DateTimeFormats, NXT_DATE_TIME_FORMATS } from '../../class/date-time-format.class'\r\nimport { DateTimeDirective, PickerMode, PickerType } from '../../class/date-time.class'\r\nimport { DialogRef } from '../../class/dialog-ref.class'\r\nimport { DialogService } from '../../dialog/dialog.service'\r\nimport { DateTimeContainerComponent } from '../date-time-picker-container/date-time-picker-container.component'\r\nimport { DateTimeInputDirective } from '../date-time-picker-input.directive'\r\n\r\n/**\r\n * Injection token that determines the scroll handling while the dtPicker is open.\r\n *\r\n * @internal\r\n */\r\nexport const NXT_DTPICKER_SCROLL_STRATEGY = new InjectionToken<\r\n () => ScrollStrategy\r\n>('NXT_DTPICKER_SCROLL_STRATEGY')\r\n\r\n/** @internal */\r\nexport function NXT_DTPICKER_SCROLL_STRATEGY_PROVIDER_FACTORY(\r\n overlay: Overlay\r\n): () => BlockScrollStrategy {\r\n const fn = () => overlay.scrollStrategies.block()\r\n return fn\r\n}\r\n\r\n/** @internal */\r\nexport const NXT_DTPICKER_SCROLL_STRATEGY_PROVIDER = {\r\n provide: NXT_DTPICKER_SCROLL_STRATEGY,\r\n deps: [Overlay],\r\n useFactory: NXT_DTPICKER_SCROLL_STRATEGY_PROVIDER_FACTORY\r\n}\r\n\r\n@Component({\r\n selector: 'nxt-date-time',\r\n templateUrl: './date-time-picker.component.html',\r\n styleUrls: ['./date-time-picker.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n preserveWhitespaces: false,\r\n standalone: false\r\n})\r\nexport class DateTimeComponent<T> extends DateTimeDirective<T> implements OnInit, OnDestroy {\r\n /** Custom class for the picker backdrop */\r\n @Input()\r\n backdropClass?: string | string[]\r\n\r\n /** Custom class for the picker overlay pane */\r\n @Input()\r\n panelClass?: string | string[]\r\n\r\n private _startAt?: T\r\n /**\r\n * The date to show when picker opens\r\n *\r\n * Defaults to selected date (if available) or current date.\r\n */\r\n @Input()\r\n get startAt() {\r\n // If an explicit startAt is set we start there, otherwise we start at whatever the currently\r\n // selected value is.\r\n if (this._startAt) {\r\n return this._startAt\r\n }\r\n\r\n if (this._dtInput) {\r\n if (this._dtInput.selectMode === 'single') {\r\n return this._dtInput.value\r\n } else if (\r\n this._dtInput.selectMode === 'range' ||\r\n this._dtInput.selectMode === 'rangeFrom'\r\n ) {\r\n return this._dtInput.values[0]\r\n } else if (this._dtInput.selectMode === 'rangeTo') {\r\n return this._dtInput.values[1]\r\n }\r\n }\r\n return\r\n }\r\n\r\n set startAt(date: T | undefined) {\r\n this._startAt = this.getValidDate(\r\n this.dateTimeAdapter.deserialize(date)\r\n )\r\n }\r\n\r\n private _pickerType: PickerType = 'both'\r\n /**\r\n * Set the type of the dateTime picker\r\n *\r\n * - `'both'` - show both calendar and timer\r\n * - `'calendar'` - show only calendar\r\n * - `'timer'` - show only timer\r\n */\r\n @Input()\r\n get pickerType(): PickerType {\r\n return this._pickerType\r\n }\r\n\r\n set pickerType(val: PickerType) {\r\n if (val !== this._pickerType) {\r\n this._pickerType = val\r\n if (this._dtInput) {\r\n this._dtInput.formatNativeInputValue()\r\n }\r\n }\r\n }\r\n\r\n private _pickerMode: PickerMode = 'popup'\r\n /**\r\n * The style the picker would open as\r\n *\r\n * - `'popup'` - display picker attached to the trigger element\r\n * - `'dialog'` - display picker as a dialog\r\n */\r\n @Input()\r\n get pickerMode() {\r\n return this._pickerMode\r\n }\r\n\r\n set pickerMode(mode: PickerMode) {\r\n if (mode === 'popup') {\r\n this._pickerMode = mode\r\n } else {\r\n this._pickerMode = 'dialog'\r\n }\r\n }\r\n\r\n private _disabled?: boolean\r\n /** Whether the date time picker should be disabled */\r\n @Input()\r\n override get disabled(): boolean {\r\n return this._disabled ?? !!this._dtInput?.disabled\r\n }\r\n\r\n override set disabled(value: boolean) {\r\n value = !!value\r\n if (value !== this._disabled) {\r\n this._disabled = value\r\n this.disabledChange.next(value)\r\n }\r\n }\r\n\r\n private _isOpen: boolean = false\r\n /** Whether the calendar is open */\r\n @Input()\r\n get isOpen(): boolean {\r\n return this._isOpen\r\n }\r\n\r\n set isOpen(val: boolean) {\r\n if (val)\r\n this.open()\r\n else\r\n this.close()\r\n }\r\n\r\n /**\r\n * The scroll strategy when the picker is open (see [CDK documentation](https://material.angular.io/cdk/overlay/overview#scroll-strategies))\r\n */\r\n @Input()\r\n scrollStrategy?: ScrollStrategy\r\n\r\n /**\r\n * Callback when the picker is opened\r\n */\r\n // eslint-disable-next-line @angular-eslint/no-output-rename\r\n @Output('open')\r\n readonly afterPickerOpened = new EventEmitter<void>()\r\n\r\n /**\r\n * Callback when the picker is closed\r\n */\r\n // eslint-disable-next-line @angular-eslint/no-output-rename\r\n @Output('close')\r\n readonly afterPickerClosed = new EventEmitter<void>()\r\n\r\n /**\r\n * Emits selected year in multi-year view\r\n *\r\n * This doesn't imply a change on the selected date.\r\n */\r\n @Output()\r\n readonly yearSelected = new EventEmitter<T>()\r\n\r\n /**\r\n * Emits selected month in year view\r\n *\r\n * This doesn't imply a change on the selected date.\r\n */\r\n @Output()\r\n readonly monthSelected = new EventEmitter<T>()\r\n\r\n /**\r\n * Emits when picker open state changes\r\n */\r\n @Output()\r\n readonly isOpenChange = new EventEmitter<boolean>()\r\n\r\n /**\r\n * Emit when the selected value has been confirmed\r\n */\r\n readonly confirmSelectedChange = new EventEmitter<Array<T | undefined> | T>()\r\n\r\n /**\r\n * Emits when the date time picker is disabled\r\n */\r\n readonly disabledChange = new EventEmitter<boolean>()\r\n\r\n private pickerContainerPortal?: ComponentPortal<\r\n DateTimeContainerComponent<T>\r\n >\r\n private pickerContainer?: DateTimeContainerComponent<T>\r\n private popupRef?: OverlayRef\r\n private dialogRef?: DialogRef<DateTimeContainerComponent<T>>\r\n private dtInputSub?: Subscription\r\n private hidePickerStreamSub?: Subscription\r\n private confirmSelectedStreamSub?: Subscription\r\n private pickerOpenedStreamSub?: Subscription\r\n\r\n /** The element that was focused before the date time picker was isOpen */\r\n private focusedElementBeforeOpen?: HTMLElement\r\n\r\n private _dtInput?: DateTimeInputDirective<T>\r\n get dtInput() {\r\n return this._dtInput\r\n }\r\n\r\n private _selected?: T\r\n get selected() {\r\n return this._selected\r\n }\r\n\r\n set selected(value: T | undefined) {\r\n this._selected = value\r\n this.changeDetector.markForCheck()\r\n }\r\n\r\n private _selecteds = new Array<T | undefined>()\r\n get selecteds() {\r\n return this._selecteds || []\r\n }\r\n\r\n set selecteds(values: Array<T | undefined>) {\r\n this._selecteds = values\r\n this.changeDetector.markForCheck()\r\n }\r\n\r\n /** The minimum selectable date */\r\n get min() {\r\n return (this._dtInput && this._dtInput.min)\r\n }\r\n\r\n /** The maximum selectable date */\r\n get max() {\r\n return (this._dtInput && this._dtInput.max)\r\n }\r\n\r\n get dateTimeFilter() {\r\n return this._dtInput?.dateTimeFilter\r\n }\r\n\r\n get selectMode() {\r\n return this._dtInput?.selectMode\r\n }\r\n\r\n get isInSingleMode() {\r\n return !!this._dtInput?.isInSingleMode\r\n }\r\n\r\n get isInRangeMode() {\r\n return !!this._dtInput?.isInRangeMode\r\n }\r\n\r\n constructor(\r\n private readonly overlay: Overlay,\r\n private readonly viewContainerRef: ViewContainerRef,\r\n private readonly dialogService: DialogService,\r\n private readonly ngZone: NgZone,\r\n protected readonly changeDetector: ChangeDetectorRef,\r\n dateTimeAdapter: DateTimeAdapter<T>,\r\n @Inject(NXT_DTPICKER_SCROLL_STRATEGY)\r\n private readonly defaultScrollStrategy: () => ScrollStrategy,\r\n @Inject(NXT_DATE_TIME_FORMATS)\r\n dateTimeFormats: DateTimeFormats,\r\n @Optional()\r\n @Inject(DOCUMENT)\r\n private readonly document?: Document\r\n ) {\r\n super(dateTimeAdapter, dateTimeFormats)\r\n }\r\n\r\n ngOnInit() { }\r\n\r\n ngOnDestroy(): void {\r\n this.close()\r\n this.dtInputSub?.unsubscribe()\r\n this.dtInputSub = undefined\r\n this.disabledChange.complete()\r\n\r\n if (this.popupRef) {\r\n this.popupRef.dispose()\r\n }\r\n }\r\n\r\n registerInput(input: DateTimeInputDirective<T>): void {\r\n if (this._dtInput) {\r\n throw Error(\r\n 'A Nxt DateTimePicker can only be associated with a single input.'\r\n )\r\n }\r\n\r\n this._dtInput = input\r\n this.dtInputSub = this._dtInput.valueChange.subscribe((value) => {\r\n if (Array.isArray(value)) {\r\n this.selecteds = value\r\n } else {\r\n this.selected = value\r\n }\r\n })\r\n }\r\n\r\n open(): void {\r\n if (this._isOpen || this.disabled) {\r\n return\r\n }\r\n\r\n if (!this._dtInput) {\r\n throw Error(\r\n 'Attempted to open an DateTimePicker with no associated input.'\r\n )\r\n }\r\n\r\n if (this.document) {\r\n this.focusedElementBeforeOpen = this.document.activeElement as HTMLElement\r\n }\r\n\r\n // reset the picker selected value\r\n if (this.isInSingleMode) {\r\n this.selected = this._dtInput.value\r\n } else if (this.isInRangeMode) {\r\n this.selecteds = this._dtInput.values\r\n }\r\n\r\n // when the picker is open , we make sure the picker's current selected time value\r\n // is the same as the _startAt time value.\r\n if (this.selected && this.pickerType !== 'calendar' && this._startAt) {\r\n this.selected = this.dateTimeAdapter.createDate(\r\n this.dateTimeAdapter.getYear(this.selected),\r\n this.dateTimeAdapter.getMonth(this.selected),\r\n this.dateTimeAdapter.getDate(this.selected),\r\n this.dateTimeAdapter.getHours(this._startAt),\r\n this.dateTimeAdapter.getMinutes(this._startAt),\r\n this.dateTimeAdapter.getSeconds(this._startAt)\r\n )\r\n }\r\n\r\n if (this.pickerMode === 'dialog')\r\n this.openAsDialog()\r\n else\r\n this.openAsPopup()\r\n\r\n if (this.pickerContainer)\r\n this.pickerContainer.picker = this\r\n\r\n // Listen to picker container's hidePickerStream\r\n this.hidePickerStreamSub = this.pickerContainer?.hidePickerStream.subscribe(\r\n () => {\r\n this.close()\r\n }\r\n )\r\n\r\n // Listen to picker container's confirmSelectedStream\r\n this.confirmSelectedStreamSub = this.pickerContainer?.confirmSelectedStream.subscribe(\r\n (event: any) => {\r\n this.confirmSelect(event)\r\n }\r\n )\r\n }\r\n\r\n /**\r\n * Selects the given date\r\n */\r\n select(date: T[] | T): void {\r\n if (Array.isArray(date)) {\r\n this.selecteds = [...date]\r\n } else {\r\n this.selected = date\r\n }\r\n\r\n /**\r\n * Cases in which automatically confirm the select when date or dates are selected:\r\n * 1) picker mode is NOT 'dialog'\r\n * 2) picker type is 'calendar' and selectMode is 'single'.\r\n * 3) picker type is 'calendar' and selectMode is 'range' and\r\n * the 'selecteds' has 'from'(selecteds[0]) and 'to'(selecteds[1]) values.\r\n * 4) selectMode is 'rangeFrom' and selecteds[0] has value.\r\n * 5) selectMode is 'rangeTo' and selecteds[1] has value.\r\n */\r\n if (\r\n this.pickerMode !== 'dialog' &&\r\n this.pickerType === 'calendar' &&\r\n ((this.selectMode === 'single' && this.selected) ||\r\n (this.selectMode === 'rangeFrom' && this.selecteds[0]) ||\r\n (this.selectMode === 'rangeTo' && this.selecteds[1]) ||\r\n (this.selectMode === 'range' &&\r\n this.selecteds[0] &&\r\n this.selecteds[1]))\r\n ) {\r\n this.confirmSelect()\r\n }\r\n }\r\n\r\n /**\r\n * Emits the selected year in multi-year view\r\n */\r\n selectYear(normalizedYear: T): void {\r\n this.yearSelected.emit(normalizedYear)\r\n }\r\n\r\n /**\r\n * Emits selected month in year view\r\n */\r\n selectMonth(normalizedMonth: T): void {\r\n this.monthSelected.emit(normalizedMonth)\r\n }\r\n\r\n /**\r\n * Hide the picker\r\n */\r\n close(): void {\r\n if (!this._isOpen) {\r\n return\r\n }\r\n\r\n if (this.popupRef && this.popupRef.hasAttached()) {\r\n this.popupRef.detach()\r\n }\r\n\r\n if (\r\n this.pickerContainerPortal &&\r\n this.pickerContainerPortal.isAttached\r\n ) {\r\n this.pickerContainerPortal.detach()\r\n }\r\n\r\n this.hidePickerStreamSub?.unsubscribe()\r\n this.hidePickerStreamSub = undefined\r\n\r\n this.confirmSelectedStreamSub?.unsubscribe()\r\n this.confirmSelectedStreamSub = undefined\r\n\r\n this.pickerOpenedStreamSub?.unsubscribe()\r\n this.pickerOpenedStreamSub = undefined\r\n\r\n if (this.dialogRef) {\r\n this.dialogRef.close()\r\n this.dialogRef = undefined\r\n }\r\n\r\n const completeClose = () => {\r\n if (this._isOpen) {\r\n this._isOpen = false\r\n this.isOpenChange.emit(this._isOpen)\r\n this.afterPickerClosed.emit()\r\n this.focusedElementBeforeOpen = undefined\r\n }\r\n }\r\n\r\n if (\r\n this.focusedElementBeforeOpen &&\r\n typeof this.focusedElementBeforeOpen.focus === 'function'\r\n ) {\r\n // Because IE moves focus asynchronously, we can't count on it being restored before we've\r\n // marked the datepicker as closed. If the event fires out of sequence and the element that\r\n // we're refocusing opens the datepicker on focus, the user could be stuck with not being\r\n // able to close the calendar at all. We work around it by making the logic, that marks\r\n // the datepicker as closed, async as well.\r\n this.focusedElementBeforeOpen.focus()\r\n setTimeout(completeClose)\r\n } else {\r\n completeClose()\r\n }\r\n }\r\n\r\n /**\r\n * Confirm the selected value\r\n */\r\n confirmSelect(_event?: any): void {\r\n if (this.isInSingleMode) {\r\n const selected =\r\n this.selected || this.startAt || this.dateTimeAdapter.now()\r\n this.confirmSelectedChange.emit(selected)\r\n } else if (this.isInRangeMode) {\r\n this.confirmSelectedChange.emit(this.selecteds)\r\n }\r\n\r\n this.close()\r\n return\r\n }\r\n\r\n /**\r\n * Open the picker as a dialog\r\n */\r\n private openAsDialog(): void {\r\n this.dialogRef = this.dialogService.open(\r\n DateTimeContainerComponent,\r\n {\r\n autoFocus: false,\r\n backdropClass: [\r\n 'cdk-overlay-dark-backdrop',\r\n ...this.backdropClass ? coerceArray(this.backdropClass) : []\r\n ],\r\n paneClass: [\r\n 'nxt-dt-dialog',\r\n ...this.panelClass ? coerceArray(this.panelClass) : []\r\n ],\r\n viewContainerRef: this.viewContainerRef,\r\n scrollStrategy: this.scrollStrategy || this.defaultScrollStrategy()\r\n }\r\n )\r\n this.pickerContainer = this.dialogRef.componentInstance\r\n\r\n this.dialogRef.afterOpen().subscribe(() => {\r\n this._isOpen = true\r\n this.isOpenChange.emit(this._isOpen)\r\n this.afterPickerOpened.emit()\r\n })\r\n this.dialogRef.afterClosed().subscribe(() => this.close())\r\n }\r\n\r\n /**\r\n * Open the picker as popup\r\n */\r\n private openAsPopup(): void {\r\n if (!this.pickerContainerPortal) {\r\n this.pickerContainerPortal = new ComponentPortal<\r\n DateTimeContainerComponent<T>\r\n >(DateTimeContainerComponent, this.viewContainerRef)\r\n }\r\n\r\n if (!this.popupRef) {\r\n this.createPopup()\r\n }\r\n\r\n if (!this.popupRef?.hasAttached()) {\r\n const componentRef: ComponentRef<\r\n DateTimeContainerComponent<T>\r\n > | undefined = this.popupRef?.attach(this.pickerContainerPortal)\r\n this.pickerContainer = componentRef?.instance\r\n\r\n // Update the position once the calendar has rendered.\r\n this.ngZone.onStable\r\n .asObservable()\r\n .pipe(take(1))\r\n .subscribe(() => {\r\n this.popupRef?.updatePosition()\r\n })\r\n\r\n // emit open stream\r\n this.pickerOpenedStreamSub = this.pickerContainer?.pickerOpenedStream\r\n .pipe(take(1))\r\n .subscribe(() => {\r\n this._isOpen = true\r\n this.isOpenChange.emit(this._isOpen)\r\n this.afterPickerOpened.emit()\r\n })\r\n }\r\n }\r\n\r\n private createPopup(): void {\r\n const overlayConfig = new OverlayConfig({\r\n positionStrategy: this.createPopupPositionStrategy(),\r\n hasBackdrop: true,\r\n backdropClass: [\r\n 'cdk-overlay-transparent-backdrop',\r\n ...this.backdropClass ? coerceArray(this.backdropClass) : []\r\n ],\r\n scrollStrategy: this.scrollStrategy || this.defaultScrollStrategy(),\r\n panelClass: [\r\n 'nxt-dt-popup',\r\n ...this.panelClass ? coerceArray(this.panelClass) : []\r\n ]\r\n })\r\n\r\n this.popupRef = this.overlay.create(overlayConfig)\r\n\r\n merge(\r\n this.popupRef.backdropClick(),\r\n this.popupRef.detachments(),\r\n this.popupRef\r\n .keydownEvents()\r\n .pipe(\r\n filter(\r\n event =>\r\n !!(event.code.toLowerCase() === 'escape' ||\r\n (this._dtInput &&\r\n event.altKey &&\r\n event.code.toLowerCase() === 'arrowup'))\r\n )\r\n )\r\n ).subscribe(() => this.close())\r\n }\r\n\r\n /**\r\n * Create the popup PositionStrategy.\r\n */\r\n private createPopupPositionStrategy(): PositionStrategy | undefined {\r\n if (this._dtInput)\r\n return this.overlay\r\n .position()\r\n .flexibleConnectedTo(this._dtInput.elementRef)\r\n .withTransformOriginOn('.nxt-dt-container')\r\n .withFlexibleDimensions(false)\r\n .withPush(false)\r\n .withPositions([\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top'\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'bottom'\r\n },\r\n {\r\n originX: 'end',\r\n originY: 'bottom',\r\n overlayX: 'end',\r\n overlayY: 'top'\r\n },\r\n {\r\n originX: 'end',\r\n originY: 'top',\r\n overlayX: 'end',\r\n overlayY: 'bottom'\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n offsetY: -176\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n offsetY: -352\r\n }\r\n ])\r\n return\r\n }\r\n}\r\n","\r\n","import { A11yModule } from '@angular/cdk/a11y'\r\nimport { OverlayModule } from '@angular/cdk/overlay'\r\nimport { PortalModule } from '@angular/cdk/portal'\r\nimport { CommonModule } from '@angular/common'\r\nimport { NgModule } from '@angular/core'\r\nimport { DialogContainerComponent } from './dialog-container/dialog-container.component'\r\nimport { DialogService, NXT_DIALOG_SCROLL_STRATEGY_PROVIDER } from './dialog.service'\r\n\r\n/** @internal */\r\n@NgModule({\r\n declarations: [\r\n DialogContainerComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n A11yModule,\r\n OverlayModule,\r\n PortalModule\r\n ],\r\n providers: [\r\n NXT_DIALOG_SCROLL_STRATEGY_PROVIDER,\r\n DialogService\r\n ]\r\n})\r\nexport class DialogModule { }\r\n","import { A11yModule } from '@angular/cdk/a11y'\r\nimport { OverlayModule } from '@angular/cdk/overlay'\r\nimport { CommonModule } from '@angular/common'\r\nimport { NgModule } from '@angular/core'\r\nimport { DialogModule } from '../dialog/dialog.module'\r\nimport { CalendarBodyComponent } from './calendar-body/calendar-body.component'\r\nimport { MonthViewComponent } from './calendar-month-view/calendar-month-view.component'\r\nimport { MultiYearViewComponent } from './calendar-multi-year-view/calendar-multi-year-view.component'\r\nimport { YearViewComponent } from './calendar-year-view/calendar-year-view.component'\r\nimport { CalendarComponent } from './calendar/calendar.component'\r\nimport { DateTimeInlineComponent } from './date-time-inline/date-time-inline.component'\r\nimport { DateTimeContainerComponent } from './date-time-picker-container/date-time-picker-container.component'\r\nimport { DateTimeInputDirective } from './date-time-picker-input.directive'\r\nimport { DateTimeIntl } from './date-time-picker-intl.service'\r\nimport { DateTimeTriggerDirective } from './date-time-picker-trigger.directive'\r\nimport { DateTimeComponent, NXT_DTPICKER_SCROLL_STRATEGY_PROVIDER } from './date-time-picker/date-time-picker.component'\r\nimport { NumberFixedLenPipe } from './number-fixed-len.pipe'\r\nimport { TimerBoxComponent } from './timer-box/timer-box.component'\r\nimport { TimerComponent } from './timer/timer.component'\r\n\r\n@NgModule({\r\n declarations: [\r\n DateTimeTriggerDirective,\r\n DateTimeInputDirective,\r\n DateTimeComponent,\r\n DateTimeContainerComponent,\r\n MultiYearViewComponent,\r\n YearViewComponent,\r\n MonthViewComponent,\r\n TimerComponent,\r\n TimerBoxComponent,\r\n CalendarComponent,\r\n CalendarBodyComponent,\r\n NumberFixedLenPipe,\r\n DateTimeInlineComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n OverlayModule,\r\n DialogModule,\r\n A11yModule\r\n ],\r\n exports: [\r\n CalendarComponent,\r\n TimerComponent,\r\n DateTimeTriggerDirective,\r\n DateTimeInputDirective,\r\n DateTimeComponent,\r\n DateTimeInlineComponent,\r\n MultiYearViewComponent,\r\n YearViewComponent,\r\n MonthViewComponent\r\n ],\r\n providers: [\r\n DateTimeIntl,\r\n NXT_DTPICKER_SCROLL_STRATEGY_PROVIDER\r\n ]\r\n})\r\nexport class DateTimeModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3.CalendarBodyComponent","i1.DateTimeIntl","i2.DateTimeAdapter","i2.CalendarBodyComponent","i5.MultiYearViewComponent","i6.YearViewComponent","i7.MonthViewComponent","i2.NumberFixedLenPipe","i4.TimerBoxComponent","i5.TimerComponent","i6.CalendarComponent","NXT_DATETIME_VALUE_ACCESSOR","i2.DateTimeContainerComponent","observableOf","i2.DialogService","i3.DateTimeAdapter"],"mappings":"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"}