ng-pick-datetime-ex
Version:
Angular Date Time Picker
1 lines • 432 kB
Source Map (JSON)
{"version":3,"file":"ng-pick-datetime-ex.mjs","sources":["../../../projects/picker/src/lib/date-time/date-time-picker-trigger.directive.ts","../../../projects/picker/src/lib/date-time/adapter/date-time-format.class.ts","../../../projects/picker/src/lib/date-time/date-time-picker-intl.service.ts","../../../projects/picker/src/lib/date-time/adapter/date-time-adapter.class.ts","../../../projects/picker/src/lib/date-time/calendar-body.component.ts","../../../projects/picker/src/lib/date-time/calendar-body.component.html","../../../projects/picker/src/lib/date-time/calendar-multi-year-view.component.ts","../../../projects/picker/src/lib/date-time/calendar-multi-year-view.component.html","../../../projects/picker/src/lib/date-time/calendar-year-view.component.ts","../../../projects/picker/src/lib/date-time/calendar-year-view.component.html","../../../projects/picker/src/lib/date-time/calendar-month-view.component.ts","../../../projects/picker/src/lib/date-time/calendar-month-view.component.html","../../../projects/picker/src/lib/date-time/calendar.component.ts","../../../projects/picker/src/lib/date-time/calendar.component.html","../../../projects/picker/src/lib/date-time/timer-box.component.ts","../../../projects/picker/src/lib/date-time/timer-box.component.html","../../../projects/picker/src/lib/date-time/timer.component.ts","../../../projects/picker/src/lib/date-time/timer.component.html","../../../projects/picker/src/lib/date-time/date-time-picker.animations.ts","../../../projects/picker/src/lib/date-time/date-time-picker-container.component.ts","../../../projects/picker/src/lib/date-time/date-time-picker-container.component.html","../../../projects/picker/src/lib/date-time/date-time.class.ts","../../../projects/picker/src/lib/dialog/dialog-config.class.ts","../../../projects/picker/src/lib/dialog/dialog-ref.class.ts","../../../projects/picker/src/lib/dialog/dialog-container.component.ts","../../../projects/picker/src/lib/dialog/dialog-container.component.html","../../../projects/picker/src/lib/utils/object.utils.ts","../../../projects/picker/src/lib/utils/index.ts","../../../projects/picker/src/lib/dialog/dialog.service.ts","../../../projects/picker/src/lib/date-time/date-time-picker.component.ts","../../../projects/picker/src/lib/date-time/date-time-picker.component.html","../../../projects/picker/src/lib/date-time/date-time-picker-input.directive.ts","../../../projects/picker/src/lib/date-time/numberedFixLen.pipe.ts","../../../projects/picker/src/lib/date-time/date-time-inline.component.ts","../../../projects/picker/src/lib/date-time/date-time-inline.component.html","../../../projects/picker/src/lib/dialog/dialog.module.ts","../../../projects/picker/src/lib/date-time/date-time.module.ts","../../../projects/picker/src/lib/date-time/adapter/native-date-time-adapter.class.ts","../../../projects/picker/src/lib/date-time/adapter/native-date-time-format.class.ts","../../../projects/picker/src/lib/date-time/adapter/native-date-time.module.ts","../../../projects/picker/src/lib/date-time/adapter/dayjs-adapter/dayjs-date-time-adapter.class.ts","../../../projects/picker/src/lib/date-time/adapter/dayjs-adapter/dayjs-date-time-format.class.ts","../../../projects/picker/src/lib/date-time/adapter/dayjs-adapter/dayjs-date-time.module.ts","../../../projects/picker/src/public_api.ts","../../../projects/picker/src/ng-pick-datetime-ex.ts"],"sourcesContent":["/**\n * date-time-picker-trigger.directive\n */\n\n\nimport {\n AfterContentInit,\n ChangeDetectorRef,\n Directive,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n SimpleChanges\n} from '@angular/core';\nimport { OwlDateTimeComponent } from './date-time-picker.component';\nimport { merge, of as observableOf, Subscription } from 'rxjs';\n\n@Directive({\n selector: '[owlDateTimeTrigger]',\n host: {\n '(click)': 'handleClickOnHost($event)',\n '[class.owl-dt-trigger-disabled]': 'owlDTTriggerDisabledClass'\n }\n})\nexport class OwlDateTimeTriggerDirective<T> implements OnInit, OnChanges, AfterContentInit, OnDestroy {\n\n @Input('owlDateTimeTrigger') dtPicker: OwlDateTimeComponent<T>;\n\n private _disabled: boolean;\n @Input()\n get disabled(): boolean {\n return this._disabled === undefined ? this.dtPicker.disabled : !!this._disabled;\n }\n\n set disabled( value: boolean ) {\n this._disabled = value;\n }\n\n get owlDTTriggerDisabledClass(): boolean {\n return this.disabled;\n }\n\n private stateChanges = Subscription.EMPTY;\n\n constructor( protected changeDetector: ChangeDetectorRef ) {\n }\n\n public ngOnInit(): void {\n }\n\n public ngOnChanges( changes: SimpleChanges ) {\n if (changes.datepicker) {\n this.watchStateChanges();\n }\n }\n\n public ngAfterContentInit() {\n this.watchStateChanges();\n }\n\n public ngOnDestroy(): void {\n this.stateChanges.unsubscribe();\n }\n\n public handleClickOnHost( event: Event ): void {\n if (this.dtPicker) {\n this.dtPicker.open();\n event.stopPropagation();\n }\n }\n\n private watchStateChanges(): void {\n this.stateChanges.unsubscribe();\n\n const inputDisabled = this.dtPicker && this.dtPicker.dtInput ?\n this.dtPicker.dtInput.disabledChange : observableOf();\n\n const pickerDisabled = this.dtPicker ?\n this.dtPicker.disabledChange : observableOf();\n\n this.stateChanges = merge(pickerDisabled, inputDisabled)\n .subscribe(() => {\n this.changeDetector.markForCheck();\n });\n }\n}\n","/**\n * date-time-format.class\n */\n\nimport { InjectionToken } from '@angular/core';\n\nexport type OwlDateTimeFormats = {\n parseInput: any,\n fullPickerInput: any,\n datePickerInput: any,\n timePickerInput: any,\n monthYearLabel: any,\n dateA11yLabel: any,\n monthYearA11yLabel: any,\n};\n\n/** InjectionToken for date time picker that can be used to override default format. */\nexport const OWL_DATE_TIME_FORMATS = new InjectionToken<OwlDateTimeFormats>('OWL_DATE_TIME_FORMATS');\n","/**\n * date-time-picker-intl.service\n */\n\nimport { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable({providedIn: 'root'})\nexport class OwlDateTimeIntl {\n\n /**\n * Stream that emits whenever the labels here are changed. Use this to notify\n * components if the labels have changed after initialization.\n */\n readonly changes: Subject<void> = new Subject<void>();\n\n /** A label for the up second button (used by screen readers). */\n upSecondLabel = 'Add a second';\n\n /** A label for the down second button (used by screen readers). */\n downSecondLabel = 'Minus a second';\n\n /** A label for the up minute button (used by screen readers). */\n upMinuteLabel = 'Add a minute';\n\n /** A label for the down minute button (used by screen readers). */\n downMinuteLabel = 'Minus a minute';\n\n /** A label for the up hour button (used by screen readers). */\n upHourLabel = 'Add a hour';\n\n /** A label for the down hour button (used by screen readers). */\n downHourLabel = 'Minus a hour';\n\n /** A label for the previous month button (used by screen readers). */\n prevMonthLabel = 'Previous month';\n\n /** A label for the next month button (used by screen readers). */\n nextMonthLabel = 'Next month';\n\n /** A label for the previous year button (used by screen readers). */\n prevYearLabel = 'Previous year';\n\n /** A label for the next year button (used by screen readers). */\n nextYearLabel = 'Next year';\n\n /** A label for the previous multi-year button (used by screen readers). */\n prevMultiYearLabel: string = 'Previous 21 years';\n\n /** A label for the next multi-year button (used by screen readers). */\n nextMultiYearLabel: string = 'Next 21 years';\n\n /** A label for the 'switch to month view' button (used by screen readers). */\n switchToMonthViewLabel = 'Change to month view';\n\n /** A label for the 'switch to year view' button (used by screen readers). */\n switchToMultiYearViewLabel: string = 'Choose month and year';\n\n /** A label for the cancel button */\n cancelBtnLabel = 'Cancel';\n\n /** A label for the set button */\n setBtnLabel = 'Set';\n\n /** A label for the range 'from' in picker info */\n rangeFromLabel = 'From';\n\n /** A label for the range 'to' in picker info */\n rangeToLabel = 'To';\n\n /** A label for the hour12 button (AM) */\n hour12AMLabel = 'AM';\n\n /** A label for the hour12 button (PM) */\n hour12PMLabel = 'PM';\n}\n","/**\n * date-time-adapter.class\n */\nimport { Observable, Subject } from 'rxjs';\nimport { inject, InjectionToken, LOCALE_ID } from '@angular/core';\n\n/** InjectionToken for date time picker that can be used to override default locale code. */\nexport const OWL_DATE_TIME_LOCALE = new InjectionToken<string>(\n 'OWL_DATE_TIME_LOCALE',\n {\n providedIn: 'root',\n factory: OWL_DATE_TIME_LOCALE_FACTORY\n }\n);\n\n/** @docs-private */\nexport function OWL_DATE_TIME_LOCALE_FACTORY(): string {\n return inject(LOCALE_ID);\n}\n\n/** Provider for OWL_DATE_TIME_LOCALE injection token. */\nexport const OWL_DATE_TIME_LOCALE_PROVIDER = {\n provide: OWL_DATE_TIME_LOCALE,\n useExisting: LOCALE_ID\n};\n\nexport abstract class DateTimeAdapter<T> {\n /** The locale to use for all dates. */\n protected locale: any;\n\n /** A stream that emits when the locale changes. */\n protected _localeChanges = new Subject<void>();\n get localeChanges(): Observable<void> {\n return this._localeChanges;\n }\n\n /** total milliseconds in a day. */\n protected readonly millisecondsInDay = 86400000;\n\n /** total milliseconds in a minute. */\n protected readonly milliseondsInMinute = 60000;\n\n /**\n * Get the year of the given date\n */\n abstract getYear(date: T): number;\n\n /**\n * Get the month of the given date\n * 0 -- January\n * 11 -- December\n * */\n abstract getMonth(date: T): number;\n\n /**\n * Get the day of the week of the given date\n * 0 -- Sunday\n * 6 -- Saturday\n * */\n abstract getDay(date: T): number;\n\n /**\n * Get the day num of the given date\n */\n abstract getDate(date: T): number;\n\n /**\n * Get the hours of the given date\n */\n abstract getHours(date: T): number;\n\n /**\n * Get the minutes of the given date\n */\n abstract getMinutes(date: T): number;\n\n /**\n * Get the seconds of the given date\n */\n abstract getSeconds(date: T): number;\n\n /**\n * Get the milliseconds timestamp of the given date\n */\n abstract getTime(date: T): number;\n\n /**\n * Gets the number of days in the month of the given date.\n */\n abstract getNumDaysInMonth(date: T): number;\n\n /**\n * Get the number of calendar days between the given dates.\n * If dateLeft is before dateRight, it would return positive value\n * If dateLeft is after dateRight, it would return negative value\n */\n abstract differenceInCalendarDays(dateLeft: T, dateRight: T): number;\n\n /**\n * Gets the name for the year of the given date.\n */\n abstract getYearName(date: T): string;\n\n /**\n * Get a list of month names\n */\n abstract getMonthNames(style: 'long' | 'short' | 'narrow'): string[];\n\n /**\n * Get a list of week names\n */\n abstract getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[];\n\n /**\n * Gets a list of names for the dates of the month.\n */\n abstract getDateNames(): string[];\n\n /**\n * Return a Date object as a string, using the ISO standard\n */\n abstract toIso8601(date: T): string;\n\n /**\n * Check if the give dates are equal\n */\n abstract isEqual(dateLeft: T, dateRight: T): boolean;\n\n /**\n * Check if the give dates are the same day\n */\n abstract isSameDay(dateLeft: T, dateRight: T): boolean;\n\n /**\n * Checks whether the given date is valid.\n */\n abstract isValid(date: T): boolean;\n\n /**\n * Gets date instance that is not valid.\n */\n abstract invalid(): T;\n\n /**\n * Checks whether the given object is considered a date instance by this DateTimeAdapter.\n */\n abstract isDateInstance(obj: any): boolean;\n\n /**\n * Add the specified number of years to the given date\n */\n abstract addCalendarYears(date: T, amount: number): T;\n\n /**\n * Add the specified number of months to the given date\n */\n abstract addCalendarMonths(date: T, amount: number): T;\n\n /**\n * Add the specified number of days to the given date\n */\n abstract addCalendarDays(date: T, amount: number): T;\n\n /**\n * Set the hours to the given date.\n */\n abstract setHours(date: T, amount: number): T;\n\n /**\n * Set the minutes to the given date.\n */\n abstract setMinutes(date: T, amount: number): T;\n\n /**\n * Set the seconds to the given date.\n */\n abstract setSeconds(date: T, amount: number): T;\n\n /**\n * Creates a date with the given year, month, date, hour, minute and second. Does not allow over/under-flow of the\n * month and date.\n */\n abstract createDate(year: number, month: number, date: number): T;\n abstract createDate(\n year: number,\n month: number,\n date: number,\n hours: number,\n minutes: number,\n seconds: number\n ): T;\n\n /**\n * Clone the given date\n */\n abstract clone(date: T): T;\n\n /**\n * Get a new dayjs\n * */\n abstract now(): T;\n\n /**\n * Formats a date as a string according to the given format.\n */\n abstract format(date: T, displayFormat: any): string;\n\n /**\n * Parse a user-provided value to a Date Object\n */\n abstract parse(value: any, parseFormat: any): T | null;\n\n /**\n * Compare two given dates\n * 1 if the first date is after the second,\n * -1 if the first date is before the second\n * 0 if dates are equal.\n * */\n compare(first: T, second: T): number {\n if (!this.isValid(first) || !this.isValid(second)) {\n throw Error('JSNativeDate: Cannot compare invalid dates.');\n }\n\n const dateFirst = this.clone(first);\n const dateSecond = this.clone(second);\n\n const diff = this.getTime(dateFirst) - this.getTime(dateSecond);\n\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1;\n } else {\n // Return 0 if diff is 0; return NaN if diff is NaN\n return diff;\n }\n }\n\n /**\n * Check if two given dates are in the same year\n * 1 if the first date's year is after the second,\n * -1 if the first date's year is before the second\n * 0 if two given dates are in the same year\n * */\n compareYear(first: T, second: T): number {\n if (!this.isValid(first) || !this.isValid(second)) {\n throw Error('JSNativeDate: Cannot compare invalid dates.');\n }\n\n const yearLeft = this.getYear(first);\n const yearRight = this.getYear(second);\n\n const diff = yearLeft - yearRight;\n\n if (diff < 0) {\n return -1;\n } else if (diff > 0) {\n return 1;\n } else {\n return 0;\n }\n }\n\n /**\n * Attempts to deserialize a value to a valid date object. This is different from parsing in that\n * deserialize should only accept non-ambiguous, locale-independent formats (e.g. a ISO 8601\n * string). The default implementation does not allow any deserialization, it simply checks that\n * the given value is already a valid date object or null. The `<mat-datepicker>` will call this\n * method on all of it's `@Input()` properties that accept dates. It is therefore possible to\n * support passing values from your backend directly to these properties by overriding this method\n * to also deserialize the format used by your backend.\n */\n deserialize(value: any): T | null {\n if (\n value == null ||\n (this.isDateInstance(value) && this.isValid(value))\n ) {\n return value;\n }\n return this.invalid();\n }\n\n /**\n * Sets the locale used for all dates.\n */\n setLocale(locale: any) {\n this.locale = locale;\n this._localeChanges.next();\n }\n\n /**\n * Clamp the given date between min and max dates.\n */\n clampDate(date: T, min?: T | null, max?: T | null): T {\n if (min && this.compare(date, min) < 0) {\n return min;\n }\n if (max && this.compare(date, max) > 0) {\n return max;\n }\n return date;\n }\n}\n","/**\n * calendar-body.component\n */\n\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n OnInit,\n Output\n} from '@angular/core';\nimport { SelectMode } from './date-time.class';\nimport { take } from 'rxjs/operators';\n\nexport class CalendarCell {\n constructor(\n public value: number,\n public displayValue: string,\n public ariaLabel: string,\n public enabled: boolean,\n public out: boolean = false,\n public cellClass: string = ''\n ) {}\n}\n\n@Component({\n selector: '[owl-date-time-calendar-body]',\n exportAs: 'owlDateTimeCalendarBody',\n templateUrl: './calendar-body.component.html',\n styleUrls: ['./calendar-body.component.scss'],\n host:{\n '[class.owl-dt-calendar-body]': 'owlDTCalendarBodyClass'\n },\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OwlCalendarBodyComponent implements OnInit {\n /**\n * The cell number of the active cell in the table.\n */\n @Input()\n activeCell = 0;\n\n /**\n * The cells to display in the table.\n * */\n @Input()\n rows: CalendarCell[][];\n\n /**\n * The number of columns in the table.\n * */\n @Input()\n numCols = 7;\n\n /**\n * The ratio (width / height) to use for the cells in the table.\n */\n @Input()\n cellRatio = 1;\n\n /**\n * The value in the table that corresponds to today.\n * */\n @Input()\n todayValue: number;\n\n /**\n * The value in the table that is currently selected.\n * */\n @Input()\n selectedValues: number[];\n\n /**\n * Current picker select mode\n */\n @Input()\n selectMode: SelectMode;\n\n /**\n * Emit when a calendar cell is selected\n * */\n @Output()\n public readonly select = new EventEmitter<CalendarCell>();\n\n get owlDTCalendarBodyClass(): boolean {\n return true;\n }\n\n get isInSingleMode(): boolean {\n return this.selectMode === 'single';\n }\n\n get isInRangeMode(): boolean {\n return (\n this.selectMode === 'range' ||\n this.selectMode === 'rangeFrom' ||\n this.selectMode === 'rangeTo'\n );\n }\n\n constructor(private elmRef: ElementRef, private ngZone: NgZone) {}\n\n public ngOnInit() {}\n\n public selectCell(cell: CalendarCell): void {\n this.select.emit(cell);\n }\n\n public isActiveCell(rowIndex: number, colIndex: number): boolean {\n const cellNumber = rowIndex * this.numCols + colIndex;\n return cellNumber === this.activeCell;\n }\n\n /**\n * Check if the cell is selected\n */\n public isSelected(value: number): boolean {\n if (!this.selectedValues || this.selectedValues.length === 0) {\n return false;\n }\n\n if (this.isInSingleMode) {\n return value === this.selectedValues[0];\n }\n\n if (this.isInRangeMode) {\n const fromValue = this.selectedValues[0];\n const toValue = this.selectedValues[1];\n\n return value === fromValue || value === toValue;\n }\n }\n\n /**\n * Check if the cell in the range\n * */\n public isInRange(value: number): boolean {\n if (this.isInRangeMode) {\n const fromValue = this.selectedValues[0];\n const toValue = this.selectedValues[1];\n\n if (fromValue !== null && toValue !== null) {\n return value >= fromValue && value <= toValue;\n } else {\n return value === fromValue || value === toValue;\n }\n }\n }\n\n /**\n * Check if the cell is the range from\n * */\n public isRangeFrom(value: number): boolean {\n if (this.isInRangeMode) {\n const fromValue = this.selectedValues[0];\n return fromValue !== null && value === fromValue;\n }\n }\n\n /**\n * Check if the cell is the range to\n * */\n public isRangeTo(value: number): boolean {\n if (this.isInRangeMode) {\n const toValue = this.selectedValues[1];\n return toValue !== null && value === toValue;\n }\n }\n\n /**\n * Focus to a active cell\n * */\n public focusActiveCell(): void {\n this.ngZone.runOutsideAngular(() => {\n this.ngZone.onStable\n .asObservable()\n .pipe(take(1))\n .subscribe(() => {\n this.elmRef.nativeElement\n .querySelector('.owl-dt-calendar-cell-active')\n .focus();\n });\n });\n }\n}\n","<tr *ngFor=\"let row of rows; let rowIndex = index\" role=\"row\">\n <td *ngFor=\"let item of row; let colIndex = index\"\n class=\"owl-dt-calendar-cell {{item.cellClass}}\"\n [tabindex]=\"isActiveCell(rowIndex, colIndex) ? 0 : -1\"\n [class.owl-dt-calendar-cell-active]=\"isActiveCell(rowIndex, colIndex)\"\n [class.owl-dt-calendar-cell-disabled]=\"!item.enabled\"\n [class.owl-dt-calendar-cell-in-range]=\"isInRange(item.value)\"\n [class.owl-dt-calendar-cell-range-from]=\"isRangeFrom(item.value)\"\n [class.owl-dt-calendar-cell-range-to]=\"isRangeTo(item.value)\"\n [attr.aria-label]=\"item.ariaLabel\"\n [attr.aria-disabled]=\"!item.enabled || null\"\n [style.width.%]=\"100 / numCols\"\n [style.paddingTop.%]=\"50 * cellRatio / numCols\"\n [style.paddingBottom.%]=\"50 * cellRatio / numCols\"\n (click)=\"selectCell(item)\">\n <span class=\"owl-dt-calendar-cell-content\"\n [ngClass]=\"{\n 'owl-dt-calendar-cell-out': item.out,\n 'owl-dt-calendar-cell-today': item.value === todayValue,\n 'owl-dt-calendar-cell-selected': isSelected(item.value)\n }\">\n {{item.displayValue}}\n </span>\n </td>\n</tr>\n","/**\n * calendar-multi-year-view.component\n */\n\nimport {\n AfterContentInit,\n ChangeDetectionStrategy, ChangeDetectorRef,\n Component,\n EventEmitter,\n Input,\n OnInit,\n Optional,\n Output,\n ViewChild\n} from '@angular/core';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport { CalendarCell, OwlCalendarBodyComponent } from './calendar-body.component';\nimport { SelectMode } from './date-time.class';\nimport {\n DOWN_ARROW,\n END,\n ENTER,\n HOME,\n LEFT_ARROW,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n UP_ARROW\n} from '@angular/cdk/keycodes';\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\n\nexport const YEARS_PER_ROW = 3;\nexport const YEAR_ROWS = 7;\n\n@Component({\n selector: 'owl-date-time-multi-year-view',\n templateUrl: './calendar-multi-year-view.component.html',\n styleUrls: ['./calendar-multi-year-view.component.scss'],\n host:{\n '[class.owl-dt-calendar-view]': 'owlDTCalendarView',\n '[class.owl-dt-calendar-multi-year-view]': 'owlDTCalendarMultiYearView'\n },\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\n\nexport class OwlMultiYearViewComponent<T> implements OnInit, AfterContentInit {\n\n /**\n * The select mode of the picker;\n * */\n private _selectMode: SelectMode = 'single';\n @Input()\n get selectMode(): SelectMode {\n return this._selectMode;\n }\n\n set selectMode( val: SelectMode ) {\n this._selectMode = val;\n if (this.initiated) {\n this.setSelectedYears();\n this.cdRef.markForCheck();\n }\n }\n\n /** The currently selected date. */\n private _selected: T | null;\n @Input()\n get selected(): T | null {\n return this._selected;\n }\n\n set selected( value: T | null ) {\n const oldSelected = this._selected;\n value = this.dateTimeAdapter.deserialize(value);\n this._selected = this.getValidDate(value);\n\n if (!this.dateTimeAdapter.isSameDay(oldSelected, this._selected)) {\n this.setSelectedYears();\n }\n }\n\n private _selecteds: T[] = [];\n @Input()\n get selecteds(): T[] {\n return this._selecteds;\n }\n\n set selecteds( values: T[] ) {\n this._selecteds = values.map(( v ) => {\n v = this.dateTimeAdapter.deserialize(v);\n return this.getValidDate(v);\n });\n this.setSelectedYears();\n }\n\n private _pickerDayjs: T | null;\n @Input()\n get pickerDayjs() {\n return this._pickerDayjs;\n }\n\n set pickerDayjs( value: T ) {\n const oldDayjs = this._pickerDayjs;\n value = this.dateTimeAdapter.deserialize(value);\n this._pickerDayjs = this.getValidDate(value) || this.dateTimeAdapter.now();\n\n if (oldDayjs && this._pickerDayjs &&\n !this.isSameYearList(oldDayjs, this._pickerDayjs)) {\n this.generateYearList();\n }\n }\n\n /**\n * A function used to filter which dates are selectable\n * */\n private _dateFilter: ( date: T ) => boolean;\n @Input()\n get dateFilter() {\n return this._dateFilter;\n }\n\n set dateFilter( filter: ( date: T ) => boolean ) {\n this._dateFilter = filter;\n if (this.initiated) {\n this.generateYearList();\n }\n }\n\n /** The minimum selectable date. */\n private _minDate: T | null;\n @Input()\n get minDate(): T | null {\n return this._minDate;\n }\n\n set minDate( value: T | null ) {\n value = this.dateTimeAdapter.deserialize(value);\n this._minDate = this.getValidDate(value);\n if (this.initiated) {\n this.generateYearList();\n }\n }\n\n /** The maximum selectable date. */\n private _maxDate: T | null;\n @Input()\n get maxDate(): T | null {\n return this._maxDate;\n }\n\n set maxDate( value: T | null ) {\n value = this.dateTimeAdapter.deserialize(value);\n this._maxDate = this.getValidDate(value);\n if (this.initiated) {\n this.generateYearList();\n }\n }\n\n private _todayYear: number;\n get todayYear(): number {\n return this._todayYear;\n }\n\n private _years: CalendarCell[][];\n get years() {\n return this._years;\n }\n\n private _selectedYears: number[];\n get selectedYears(): number[] {\n return this._selectedYears;\n }\n\n private initiated = false;\n\n get isInSingleMode(): boolean {\n return this.selectMode === 'single';\n }\n\n get isInRangeMode(): boolean {\n return this.selectMode === 'range' || this.selectMode === 'rangeFrom'\n || this.selectMode === 'rangeTo';\n }\n\n get activeCell(): number {\n if (this._pickerDayjs) {\n return this.dateTimeAdapter.getYear(this._pickerDayjs) % (YEARS_PER_ROW * YEAR_ROWS);\n }\n }\n\n get tableHeader(): string {\n if (this._years && this._years.length > 0) {\n return `${this._years[0][0].displayValue} ~ ${this._years[YEAR_ROWS - 1][YEARS_PER_ROW - 1].displayValue}`\n }\n }\n\n get prevButtonLabel(): string {\n return this.pickerIntl.prevMultiYearLabel;\n }\n\n get nextButtonLabel(): string {\n return this.pickerIntl.nextMultiYearLabel;\n }\n\n /**\n * Callback to invoke when a new month is selected\n * */\n @Output() readonly change = new EventEmitter<T>();\n\n /**\n * Emits the selected year. This doesn't imply a change on the selected date\n * */\n @Output() readonly yearSelected = new EventEmitter<T>();\n\n /** Emits when any date is activated. */\n @Output() readonly pickerDayjsChange: EventEmitter<T> = new EventEmitter<T>();\n\n /** Emits when use keyboard enter to select a calendar cell */\n @Output() readonly keyboardEnter: EventEmitter<any> = new EventEmitter<any>();\n\n /** The body of calendar table */\n @ViewChild(OwlCalendarBodyComponent, { static: true }) calendarBodyElm: OwlCalendarBodyComponent;\n\n get owlDTCalendarView(): boolean {\n return true;\n }\n\n get owlDTCalendarMultiYearView(): boolean {\n return true;\n }\n\n constructor( private cdRef: ChangeDetectorRef,\n private pickerIntl: OwlDateTimeIntl,\n @Optional() private dateTimeAdapter: DateTimeAdapter<T> ) {\n }\n\n public ngOnInit() {\n }\n\n public ngAfterContentInit(): void {\n this._todayYear = this.dateTimeAdapter.getYear(this.dateTimeAdapter.now());\n this.generateYearList();\n this.initiated = true;\n }\n\n /**\n * Handle a calendarCell selected\n */\n public selectCalendarCell( cell: CalendarCell ): void {\n this.selectYear(cell.value);\n }\n\n private selectYear( year: number ): void {\n this.yearSelected.emit(this.dateTimeAdapter.createDate(year, 0, 1));\n const firstDateOfMonth = this.dateTimeAdapter.createDate(\n year,\n this.dateTimeAdapter.getMonth(this.pickerDayjs),\n 1\n );\n const daysInMonth = this.dateTimeAdapter.getNumDaysInMonth(firstDateOfMonth);\n const selected = this.dateTimeAdapter.createDate(\n year,\n this.dateTimeAdapter.getMonth(this.pickerDayjs),\n Math.min(daysInMonth, this.dateTimeAdapter.getDate(this.pickerDayjs)),\n this.dateTimeAdapter.getHours(this.pickerDayjs),\n this.dateTimeAdapter.getMinutes(this.pickerDayjs),\n this.dateTimeAdapter.getSeconds(this.pickerDayjs),\n );\n\n this.change.emit(selected);\n }\n\n /**\n * Generate the previous year list\n * */\n public prevYearList( event: any ): void {\n this._pickerDayjs = this.dateTimeAdapter.addCalendarYears(this.pickerDayjs, -1 * YEAR_ROWS * YEARS_PER_ROW);\n this.generateYearList();\n event.preventDefault();\n }\n\n /**\n * Generate the next year list\n * */\n public nextYearList( event: any ): void {\n this._pickerDayjs = this.dateTimeAdapter.addCalendarYears(this.pickerDayjs, YEAR_ROWS * YEARS_PER_ROW);\n this.generateYearList();\n event.preventDefault();\n }\n\n public generateYearList(): void {\n this._years = [];\n\n const pickerDayjsYear = this.dateTimeAdapter.getYear(this._pickerDayjs);\n const offset = pickerDayjsYear % (YEARS_PER_ROW * YEAR_ROWS);\n\n for (let i = 0; i < YEAR_ROWS; i++) {\n const row = [];\n\n for (let j = 0; j < YEARS_PER_ROW; j++) {\n const year = pickerDayjsYear - offset + (j + i * YEARS_PER_ROW);\n const yearCell = this.createYearCell(year);\n row.push(yearCell);\n }\n\n this._years.push(row);\n }\n\n return;\n\n }\n\n /** Whether the previous period button is enabled. */\n public previousEnabled(): boolean {\n if (!this.minDate) {\n return true;\n }\n return !this.minDate || !this.isSameYearList(this._pickerDayjs, this.minDate);\n }\n\n /** Whether the next period button is enabled. */\n public nextEnabled(): boolean {\n return !this.maxDate || !this.isSameYearList(this._pickerDayjs, this.maxDate);\n }\n\n public handleCalendarKeydown( event: KeyboardEvent ): void {\n let dayjs;\n switch (event.keyCode) {\n // minus 1 year\n case LEFT_ARROW:\n dayjs = this.dateTimeAdapter.addCalendarYears(this._pickerDayjs, -1);\n this.pickerDayjsChange.emit(dayjs);\n break;\n\n // add 1 year\n case RIGHT_ARROW:\n dayjs = this.dateTimeAdapter.addCalendarYears(this._pickerDayjs, 1);\n this.pickerDayjsChange.emit(dayjs);\n break;\n\n // minus 3 years\n case UP_ARROW:\n dayjs = this.dateTimeAdapter.addCalendarYears(this._pickerDayjs, -1 * YEARS_PER_ROW);\n this.pickerDayjsChange.emit(dayjs);\n break;\n\n // add 3 years\n case DOWN_ARROW:\n dayjs = this.dateTimeAdapter.addCalendarYears(this._pickerDayjs, YEARS_PER_ROW);\n this.pickerDayjsChange.emit(dayjs);\n break;\n\n // go to the first year of the year page\n case HOME:\n dayjs = this.dateTimeAdapter.addCalendarYears(this._pickerDayjs,\n -this.dateTimeAdapter.getYear(this._pickerDayjs) % (YEARS_PER_ROW * YEAR_ROWS));\n this.pickerDayjsChange.emit(dayjs);\n break;\n\n // go to the last year of the year page\n case END:\n dayjs = this.dateTimeAdapter.addCalendarYears(this._pickerDayjs,\n (YEARS_PER_ROW * YEAR_ROWS) - this.dateTimeAdapter.getYear(this._pickerDayjs) % (YEARS_PER_ROW * YEAR_ROWS) - 1);\n this.pickerDayjsChange.emit(dayjs);\n break;\n\n // minus 1 year page (or 10 year pages)\n case PAGE_UP:\n dayjs = this.dateTimeAdapter.addCalendarYears(this.pickerDayjs, event.altKey ? -10 * (YEARS_PER_ROW * YEAR_ROWS) : -1 * (YEARS_PER_ROW * YEAR_ROWS));\n this.pickerDayjsChange.emit(dayjs);\n break;\n\n // add 1 year page (or 10 year pages)\n case PAGE_DOWN:\n dayjs = this.dateTimeAdapter.addCalendarYears(this.pickerDayjs, event.altKey ? 10 * (YEARS_PER_ROW * YEAR_ROWS) : (YEARS_PER_ROW * YEAR_ROWS));\n this.pickerDayjsChange.emit(dayjs);\n break;\n\n case ENTER:\n this.selectYear(this.dateTimeAdapter.getYear(this._pickerDayjs));\n this.keyboardEnter.emit();\n break;\n\n default:\n return;\n }\n\n this.focusActiveCell();\n event.preventDefault();\n }\n\n /**\n * Creates an CalendarCell for the given year.\n */\n private createYearCell( year: number ): CalendarCell {\n const startDateOfYear = this.dateTimeAdapter.createDate(year, 0, 1);\n const ariaLabel = this.dateTimeAdapter.getYearName(startDateOfYear);\n const cellClass = 'owl-dt-year-' + year;\n return new CalendarCell(year, year.toString(), ariaLabel, this.isYearEnabled(year), false, cellClass);\n }\n\n private setSelectedYears(): void {\n\n this._selectedYears = [];\n\n if (this.isInSingleMode && this.selected) {\n this._selectedYears[0] = this.dateTimeAdapter.getYear(this.selected);\n }\n\n if (this.isInRangeMode && this.selecteds) {\n this._selectedYears = this.selecteds.map(( selected ) => {\n if (this.dateTimeAdapter.isValid(selected)) {\n return this.dateTimeAdapter.getYear(selected);\n } else {\n return null;\n }\n })\n }\n }\n\n /** Whether the given year is enabled. */\n private isYearEnabled( year: number ) {\n // disable if the year is greater than maxDate lower than minDate\n if (year === undefined || year === null ||\n (this.maxDate && year > this.dateTimeAdapter.getYear(this.maxDate)) ||\n (this.minDate && year < this.dateTimeAdapter.getYear(this.minDate))) {\n return false;\n }\n\n // enable if it reaches here and there's no filter defined\n if (!this.dateFilter) {\n return true;\n }\n\n const firstOfYear = this.dateTimeAdapter.createDate(year, 0, 1);\n\n // If any date in the year is enabled count the year as enabled.\n for (let date = firstOfYear; this.dateTimeAdapter.getYear(date) == year;\n date = this.dateTimeAdapter.addCalendarDays(date, 1)) {\n if (this.dateFilter(date)) {\n return true;\n }\n }\n\n return false;\n }\n\n private isSameYearList( date1: T, date2: T ): boolean {\n return Math.floor(this.dateTimeAdapter.getYear(date1) / (YEARS_PER_ROW * YEAR_ROWS)) ===\n Math.floor(this.dateTimeAdapter.getYear(date2) / (YEARS_PER_ROW * YEAR_ROWS));\n }\n\n /**\n * Get a valid date object\n */\n private getValidDate( obj: any ): T | null {\n return (this.dateTimeAdapter.isDateInstance(obj) && this.dateTimeAdapter.isValid(obj)) ? obj : null;\n }\n\n private focusActiveCell() {\n this.calendarBodyElm.focusActiveCell();\n }\n}\n","<button class=\"owl-dt-control-button owl-dt-control-arrow-button\"\n [disabled]=\"!previousEnabled()\" [attr.aria-label]=\"prevButtonLabel\"\n type=\"button\" tabindex=\"0\" (click)=\"prevYearList($event)\">\n <span class=\"owl-dt-control-button-content\" tabindex=\"-1\">\n <!-- <editor-fold desc=\"SVG Arrow Left\"> -->\n <svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n version=\"1.1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 250.738 250.738\"\n style=\"enable-background:new 0 0 250.738 250.738;\" xml:space=\"preserve\"\n width=\"100%\" height=\"100%\">\n <path style=\"fill-rule: evenodd; clip-rule: evenodd;\" d=\"M96.633,125.369l95.053-94.533c7.101-7.055,7.101-18.492,0-25.546 c-7.1-7.054-18.613-7.054-25.714,0L58.989,111.689c-3.784,3.759-5.487,8.759-5.238,13.68c-0.249,4.922,1.454,9.921,5.238,13.681 l106.983,106.398c7.101,7.055,18.613,7.055,25.714,0c7.101-7.054,7.101-18.491,0-25.544L96.633,125.369z\"/>\n </svg>\n <!-- </editor-fold> -->\n </span>\n</button>\n<table class=\"owl-dt-calendar-table owl-dt-calendar-multi-year-table\">\n <thead class=\"owl-dt-calendar-header\">\n <tr>\n <th colspan=\"3\">{{tableHeader}}</th>\n </tr>\n </thead>\n <tbody owl-date-time-calendar-body role=\"grid\"\n [rows]=\"years\" [numCols]=\"3\" [cellRatio]=\"3 / 7\"\n [activeCell]=\"activeCell\"\n [todayValue]=\"todayYear\"\n [selectedValues]=\"selectedYears\"\n [selectMode]=\"selectMode\"\n (keydown)=\"handleCalendarKeydown($event)\"\n (select)=\"selectCalendarCell($event)\"></tbody>\n</table>\n<button class=\"owl-dt-control-button owl-dt-control-arrow-button\"\n [disabled]=\"!nextEnabled()\" [attr.aria-label]=\"nextButtonLabel\"\n type=\"button\" tabindex=\"0\" (click)=\"nextYearList($event)\">\n <span class=\"owl-dt-control-button-content\" tabindex=\"-1\">\n <!-- <editor-fold desc=\"SVG Arrow Right\"> -->\n <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n viewBox=\"0 0 250.738 250.738\" style=\"enable-background:new 0 0 250.738 250.738;\" xml:space=\"preserve\">\n <path style=\"fill-rule:evenodd;clip-rule:evenodd;\" d=\"M191.75,111.689L84.766,5.291c-7.1-7.055-18.613-7.055-25.713,0\n c-7.101,7.054-7.101,18.49,0,25.544l95.053,94.534l-95.053,94.533c-7.101,7.054-7.101,18.491,0,25.545\n c7.1,7.054,18.613,7.054,25.713,0L191.75,139.05c3.784-3.759,5.487-8.759,5.238-13.681\n C197.237,120.447,195.534,115.448,191.75,111.689z\"/>\n </svg>\n <!-- </editor-fold> -->\n </span>\n</button>\n","/**\n * calendar-year-view.component\n */\n\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n ViewChild\n} from '@angular/core';\nimport {\n CalendarCell,\n OwlCalendarBodyComponent\n} from './calendar-body.component';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport {\n OWL_DATE_TIME_FORMATS,\n OwlDateTimeFormats\n} from './adapter/date-time-format.class';\nimport { Subscription } from 'rxjs';\nimport { SelectMode } from './date-time.class';\nimport {\n DOWN_ARROW,\n END,\n ENTER,\n HOME,\n LEFT_ARROW,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n UP_ARROW\n} from '@angular/cdk/keycodes';\n\nconst MONTHS_PER_YEAR = 12;\nconst MONTHS_PER_ROW = 3;\n\n@Component({\n selector: 'owl-date-time-year-view',\n exportAs: 'owlMonthView',\n templateUrl: './calendar-year-view.component.html',\n styleUrls: ['./calendar-year-view.component.scss'],\n host: {\n '[class.owl-dt-calendar-view]': 'owlDTCalendarView'\n },\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OwlYearViewComponent<T>\n implements OnInit, AfterContentInit, OnDestroy {\n /**\n * The select mode of the picker;\n * */\n private _selectMode: SelectMode = 'single';\n @Input()\n get selectMode(): SelectMode {\n return this._selectMode;\n }\n\n set selectMode(val: SelectMode) {\n this._selectMode = val;\n if (this.initiated) {\n this.generateMonthList();\n this.cdRef.markForCheck();\n }\n }\n\n /** The currently selected date. */\n private _selected: T | null;\n @Input()\n get selected(): T | null {\n return this._selected;\n }\n\n set selected(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._selected = this.getValidDate(value);\n this.setSelectedMonths();\n }\n\n private _selecteds: T[] = [];\n @Input()\n get selecteds(): T[] {\n return this._selecteds;\n }\n\n set selecteds(values: T[]) {\n this._selecteds = [];\n for (let i = 0; i < values.length; i++) {\n const value = this.dateTimeAdapter.deserialize(values[i]);\n this._selecteds.push(this.getValidDate(value));\n }\n\n this.setSelectedMonths();\n }\n\n private _pickerDayjs: T | null;\n @Input()\n get pickerDayjs() {\n return this._pickerDayjs;\n }\n\n set pickerDayjs(value: T) {\n const oldDayjs = this._pickerDayjs;\n value = this.dateTimeAdapter.deserialize(value);\n this._pickerDayjs =\n this.getValidDate(value) || this.dateTimeAdapter.now();\n\n if (\n !this.hasSameYear(oldDayjs, this._pickerDayjs) &&\n this.initiated\n ) {\n this.generateMonthList();\n }\n }\n\n /**\n * A function used to filter which dates are selectable\n * */\n private _dateFilter: (date: T) => boolean;\n @Input()\n get dateFilter() {\n return this._dateFilter;\n }\n\n set dateFilter(filter: (date: T) => boolean) {\n this._dateFilter = filter;\n if (this.initiated) {\n this.generateMonthList();\n }\n }\n\n /** The minimum selectable date. */\n private _minDate: T | null;\n @Input()\n get minDate(): T | null {\n return this._minDate;\n }\n\n set minDate(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._minDate = this.getValidDate(value);\n if (this.initiated) {\n this.generateMonthList();\n }\n }\n\n /** The maximum selectable date. */\n private _maxDate: T | null;\n @Input()\n get maxDate(): T | null {\n return this._maxDate;\n }\n\n set maxDate(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._maxDate = this.getValidDate(value);\n if (this.initiated) {\n this.generateMonthList();\n }\n }\n\n private readonly monthNames: string[];\n\n private _months: CalendarCell[][];\n get months() {\n return this._months;\n }\n\n get activeCell(): number {\n if (this._pickerDayjs) {\n return this.dateTimeAdapter.getMonth(this._pickerDayjs);\n }\n }\n\n get isInSingleMode(): boolean {\n return this.selectMode === 'single';\n }\n\n get isInRangeMode(): boolean {\n return (\n this.selectMode === 'range' ||\n this.selectMode === 'rangeFrom' ||\n this.selectMode === 'rangeTo'\n );\n }\n\n private localeSub: Subscription = Subscription.EMPTY;\n\n private initiated = false;\n\n public todayMonth: number | null;\n\n /**\n * An array to hold all selectedDates' month value\n * the value is the month number in current year\n * */\n public selectedMonths: number[] = [];\n\n /**\n * Callback to invoke when a new month is selected\n * */\n @Output()\n readonly change = new EventEmitter<T>();\n\n /**\n * Emits the selected year. This doesn't imply a change on the selected date\n * */\n @Output()\n readonly monthSelected = new EventEmitter<T>();\n\n /** Emits when any date is activated. */\n @Output()\n readonly pickerDayjsChange: EventEmitter<T> = new EventEmitter<T>();\n\n /** Emits when use keyboard enter to select a calendar cell */\n @Output()\n readonly keyboardEnter: EventEmitter<any> = new EventEmitter<any>();\n\n /** The body of calendar table */\n @ViewChild(OwlCalendarBodyComponent, { static: true })\n calendarBodyElm: OwlCalendarBodyComponent;\n\n get owlDTCalendarView(): boolean {\n return true;\n }\n\n constructor(\n private cdRef: ChangeDetectorRef,\n @Optional() private dateTimeAdapter: DateTimeAdapter<T>,\n @Optional()\n @Inject(OWL_DATE_TIME_FORMATS)\n private dateTimeFormats: OwlDateTimeFormats\n ) {\n this.monthNames = this.dateTimeAdapter.getMonthNames('short');\n }\n\n public ngOnInit() {\n this.localeSub = this.dateTimeAdapter.localeChanges.subscribe(() => {\n this.generateMonthList();\n this.cdRef.markForCheck();\n });\n }\n\n public ngAfterContentInit(): void {\n this.generateMonthList();\n this.initiated = true;\n }\n\n public ngOnDestroy(): void {\n this.localeSub.unsubscribe();\n }\n\n /**\n * Handle a calendarCell selected\n */\n public selectCalendarCell(cell: CalendarCell): void {\n this.selectMonth(cell.value);\n }\n\n /**\n * Handle a new month selected\n */\n private selectMonth(month: number): void {\n const firstDateOfMonth = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(this.pickerDayjs),\n month,\n 1\n );\n\n this.monthSelected.emit(firstDateOfMonth);\n\n const daysInMonth = this.dateTimeAdapter.getNumDaysInMonth(\n firstDateOfMonth\n );\n const result = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(this.pickerDayjs),\n month,\n Math.min(\n daysInMonth,\n this.dateTimeAdapter.getDate(this.pickerDayjs)\n ),\n this.dateTimeAdapter.getHours(this.pickerDayjs),\n this.dateTimeAdapter.getMinutes(this.pickerDayjs),\n this.dateTimeAdapter.getSeconds(this.pickerDayjs)\n );\n\n this.change.emit(result);\n }\n\n /**\n * Handle keydown event on calendar body\n */\n public handleCalendarKeydown(event: KeyboardEvent): void {\n let dayjs;\n switch (event.keyCode) {\n // minus 1 month\n case LEFT_ARROW:\n dayjs = this.dateTimeAdapter.addCalendarMonths(\n this.pickerDayjs,\n -1\n );\n this.pickerDayjsChange.emit(dayjs);\n break;\n\n // add 1 month\n case RIGHT_ARROW:\n dayjs = this.dateTimeAdapter.addCalendarMonths(\n this.pickerDayjs,\n 1\n );\n this.pickerDayjsChange.emit(dayjs);\n break;\n\n // minus 3 months\n case UP_ARROW:\n dayjs = this.dateTimeAdapter.addCalendarMonths(\n this.pickerDayjs,\n -3\n );\n this.pickerDayjsChange.emit(dayjs);\n break;\n\n // add 3 months\n case DOWN_ARROW:\n dayjs = this.dateTimeAdapter.addCalendarMonths(\n this.pickerDayjs,\n 3\n );\n this.pickerDayjsChange.emit(dayjs);\n break;\n\n // move to first month of current year\n case HOME:\n dayjs = this.dateTimeAdapter.addCalendarMonths(\n this.pickerDayjs,\n -this.dateTimeAdapter.getMonth(this.pickerDayjs)\n );\n this.pickerDayjsChange.emit(dayjs);\n break;\n\n // move to last month of current year\n case END:\n dayjs = this.dateTimeAdapter.addCalendarMonths(\n this.pickerDayjs,\n 11 - this.dateTimeAdapter.getMonth(this.pickerDayjs)\n );\n this.pickerDayjsChange.emit(dayjs);\n break;\n\n // minus 1 year (or 10 year)\n case PAGE_UP:\n dayjs = this.dateTimeAdapter.addCalendarYears(\n this.pickerDayjs,\n event.altKey ? -10 : -1\n );\n this.pickerDayjsChange.emit(dayjs);\n break;\n\n // add 1 year (or 10 year)\n case PAGE_DOWN:\n dayjs = this.dateTimeAdapter.addCalendarYears(\n this.pickerDayjs,\n event.altKey ? 10 : 1\n );\n this.pickerDayjsChange.emit(dayjs);\n break;\n\n // Select current month\n case ENTER:\n this.selectMonth(\n this.dateTimeAdapter.getMonth(this.pickerDayjs)\n );\n this.keyboardEnter.emit();\n break;\n default:\n return;\n }\n\n this.focusActiveCell();\n event.preventDefault();\n }\n\n /**\n * Generate the calendar month list\n * */\n private generateMonthList(): void {\n if (!this.pickerDayjs) {\n return;\n }\n\n this.setSelectedMonths();\n this.todayMonth = this.getMonthInCurrentYear(\n this.dateTimeAdapter.now()\n );\n\n this._months = [];\n for (let i = 0; i < MONTHS_PER_YEAR / MONTHS_PER_ROW; i++) {\n const row = [];\n\n for (let j = 0; j < MONTHS_PER_ROW; j++) {\n const month = j + i * MONTHS_PER_ROW;\n const monthCell = this.createMonthCell(month);\n row.push(monthCell);\n }\n\n this._months.push(row);\n }\n\n return;\n }\n\n /**\n * Creates an CalendarCell for the given month.\n */\n private createMonthCell(month: number): CalendarCell {\n const startDateOfMonth = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(this.pickerDayjs),\n month,\n 1\n );\n const ariaLabel = this.dateTimeAdapter.format(\n startDateOfMonth,\n this.dateTimeFormats.monthYearA11yLabel\n );\n const cellClass = 'owl-dt-month-' + month;\n return new CalendarCell(\n month,\n this.monthNames[month],\n ariaLabel,\n this.isMonthEnabled(month),\n false,\n cellClass\n );\n }\n\n /**\n * Check if the given month is enable\n */\n private isMonthEnabled(month: number): boolean {\n const firstDateOfMonth = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(this.pickerDayjs),\n month,\n 1\n );\n\n // If any date in the month is selectable,\n // we count the month as enable\n for (\n let date = firstDateOfMonth;\n this.dateTimeAdapter.getMonth(date) === month;\n date = this.dateTimeAdapter.addCalendarDays(date, 1)\n ) {\n if (\n !!date &&\n (!this.dateFilter || this.dateFilter(date)) &&\n (!this.minDate ||\n this.dateTimeAdapter.compare(date, this.minDate) >= 0) &&\n (!this.maxDate ||\n this.dateTimeAdapter.compare(date, this.maxDate) <= 0)\n ) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Gets the month in this year that the given Date falls on.\n * Returns null if the given Date is in another year.\n */\n private getMonthInCurrentYear(date: T | null): number {\n if (this.getValidDate(date) && this.getValidDate(this._pickerDayjs)) {\n const result = this.dateTimeAdapter.compareYear(\n date,\n this._pickerDayjs\n );\n\n // < 0 : the given date's year is before pickerDayjs's year, we return -1 as selected month value.\n // > 0 : the given date's year is after pickerDayjs's year, we return 12 as selected month value.\n // 0 : the give date's year is same as the pickerDayjs's year, we return the actual month value.\n if (result < 0) {\n return -1;\n } else if (result > 0) {\n return 12;\n } else {\n return this.dateTimeAdapter.getMonth(date);\n }\n } else {\n return null;\n }\n }\n\n /**\n * Set the selectedMonths value\n * In single mode, it has only one value which represent the month the selected date in\n * In range mode, it would has two values, one for the month the fromValue in and the other for the month the toValue in\n * */\n private setSelectedMonths(): void {\n this.selectedMonths = [];\n if (this.isInSingleMode && this.selected) {\n this.selectedMonths[0] = this.getMonthInCurrentYear(this.selected);\n }\n\n if (this.isInRangeMode && this.selecteds) {\n this.selectedMonths[0] = this.getMonthInCurrentYear(\n this.selecteds[0]\n );\n this.selectedMonths[1] = this.getMonthInCurrentYear(\n this.selecteds[1]\n );\n }\n }\n\n /**\n * Check the given dates are in the same year\n */\n private hasSameYear(dateLeft: T, dateRight: T) {\n return !!(\n dateLeft &&\n dateRight &&\n this.dateTimeAdapter.getYear(dateLeft) ===\n this.dateTimeAdapter.getYear(dateRight)\n );\n }\n\n /**\n * Get a valid date object\n */\n private getValidDate(obj: any): T | null {\n return this.dateTimeAdapter.isDateInstance(obj) &&\n this.dateTimeAdapter.isValid(obj)\n ? obj\n : null;\n }\n\n private focusActiveCell() {\n this.calendarBodyElm.focusActiveCell();\n }\n}\n","<table class=\"owl-dt-calendar-table owl-dt-calendar-year-table\">\n <thead class=\"owl-dt-calendar-header\">\n <tr>\n <th class=\"owl-dt-calendar-table-divider\" aria-hidden=\"true\" colspan=\"3\"></th>\n </tr>\n </thead>\n <tbody owl-date-time-calendar-body role=\"grid\"\n [rows]=\"months\" [numCols]=\"3\" [cellRatio]=\"3 / 7\"\n [activeCell]=\"activeCell\"\n [todayValue]=\"todayMonth\"\n [selectedValues]=\"selectedMonths\"\n [selectMode]=\"selectMode\"\n (keydown)=\"handleCalendarKeydown($event)\"\n (select)=\"selectCalendarCell($event)\">\n </tbody>\n</table>\n","/**\n * calendar-month-view.component\n */\n\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n ViewChild\n} from '@angular/core';\nimport {\n CalendarCell,\n OwlCalendarBodyComponent\n} from './calendar-body.component';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport {\n OWL_DATE_TIME_FORMATS,\n OwlDateTimeFormats\n} from './adapter/date-time-format.class';\nimport { Subscription } from 'rxjs';\nimport { SelectMode } from './date-time.class';\nimport {\n DOWN_ARROW,\n END,\n ENTER,\n HOME,\n LEFT_ARROW,\n PAGE_DOWN,\n PAGE_UP,\n RIGHT_ARROW,\n UP_ARROW\n} from '@angular/cdk/keycodes';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\n\nconst DAYS_PER_WEEK = 7;\nconst WEEKS_PER_VIEW = 6;\n\n@Component({\n selector: 'owl-date-time-month-view',\n exportAs: 'owlYearView',\n templateUrl: './calendar-month-view.component.html',\n styleUrls: ['./calendar-month-view.component.scss'],\n host: {\n '[class.owl-dt-calendar-view]': 'owlDTCalendarView'\n },\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OwlMonthViewComponent<T>\n implements OnInit, AfterContentInit, OnDestroy {\n /**\n * Whether to hide dates in other months at the start or end of the current month.\n * */\n @Input()\n hideOtherMonths: boolean = false;\n\n /**\n * Define the first day of a week\n * Sunday: 0 ~ Saturday: 6\n * */\n private _firstDayOfWeek: number = 0;\n @Input()\n get firstDayOfWeek(): number {\n return this._firstDayOfWeek;\n }\n\n set firstDayOfWeek(val: number) {\n val = coerceNumberProperty(val);\n if (val >= 0 && val <= 6 && val !== this._firstDayOfWeek) {\n this._firstDayOfWeek = val;\n\n if (this.initiated) {\n this.generateWeekDays();\n this.generateCalendar();\n this.cdRef.markForCheck();\n }\n }\n }\n\n /**\n * The select mode of the picker;\n * */\n private _selectMode: SelectMode = 'single';\n @Input()\n get selectMode(): SelectMode {\n return this._selectMode;\n }\n\n set selectMode(val: SelectMode) {\n this._selectMode = val;\n if (this.initiated) {\n this.generateCalendar();\n this.cdRef.markForCheck();\n }\n }\n\n /** The currently selected date. */\n private _selected: T | null;\n @Input()\n get selected(): T | null {\n return this._selected;\n }\n\n set selected(value: T | null) {\n const oldSelected = this._selected;\n value = this.dateTimeAdapter.deserialize(value);\n this._selected = this.getValidDate(value);\n\n if (!this.dateTimeAdapter.isSameDay(oldSelected, this._selected)) {\n this.setSelectedDates();\n }\n }\n\n private _selecteds: T[] = [];\n @Input()\n get selecteds(): T[] {\n return this._selecteds;\n }\n\n set selecteds(values: T[]) {\n this._selecteds = values.map(v => {\n v = this.dateTimeAdapter.deserialize(v);\n return this.getValidDate(v);\n });\n this.setSelectedDates();\n }\n\n private _pickerDayjs: T;\n @Input()\n get pickerDayjs() {\n return this._pickerDayjs;\n }\n\n set pickerDayjs(value: T) {\n const oldDayjs = this._pickerDayjs;\n value = this.dateTimeAdapter.deserialize(value);\n this._pickerDayjs =\n this.getValidDate(value) || this.dateTimeAdapter.now();\n\n this.firstDateOfMonth = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(this._pickerDayjs),\n this.dateTimeAdapter.getMonth(this._pickerDayjs),\n 1\n );\n\n if (\n !this.isSameMonth(oldDayjs, this._pickerDayjs) &&\n this.initiated\n ) {\n this.generateCalendar();\n }\n }\n\n /**\n * A function used to filter which dates are selectable\n * */\n private _dateFilter: (date: T) => boolean;\n @Input()\n get dateFilter() {\n return this._dateFilter;\n }\n\n set dateFilter(filter: (date: T) => boolean) {\n this._dateFilter = filter;\n if (this.initiated) {\n this.generateCalendar();\n this.cdRef.markForCheck();\n }\n }\n\n /** The minimum selectable date. */\n private _minDate: T | null;\n @Input()\n get minDate(): T | null {\n return this._minDate;\n }\n\n set minDate(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._minDate = this.getValidDate(value);\n if (this.initiated) {\n this.generateCalendar();\n this.cdRef.markForCheck();\n }\n }\n\n /** The maximum selectable date. */\n private _maxDate: T | null;\n @Input()\n get maxDate(): T | null {\n return this._maxDate;\n }\n\n set maxDate(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._maxDate = this.getValidDate(value);\n\n if (this.initiated) {\n this.generateCalendar();\n this.cdRef.markForCheck();\n }\n }\n\n private _weekdays: Array<{ long: string; short: string; narrow: string }>;\n get weekdays() {\n return this._weekdays;\n }\n\n private _days: CalendarCell[][];\n get days() {\n return this._days;\n }\n\n get activeCell(): number {\n if (this.pickerDayjs) {\n return (\n this.dateTimeAdapter.getDate(this.pickerDayjs) +\n this.firstRowOffset -\n 1\n );\n }\n }\n\n get isInSingleMode(): boolean {\n return this.selectMode === 'single';\n }\n\n get isInRangeMode(): boolean {\n return (\n this.selectMode === 'range' ||\n this.selectMode === 'rangeFrom' ||\n this.selectMode === 'rangeTo'\n );\n }\n\n private firstDateOfMonth: T;\n\n private localeSub: Subscription = Subscription.EMPTY;\n\n private initiated = false;\n\n private dateNames: string[];\n\n /**\n * The date of the month that today falls on.\n * */\n public todayDate: number | null;\n\n /**\n * An array to hold all selectedDates' value\n * the value is the day number in current month\n * */\n public selectedDates: number[] = [];\n\n // the index of cell that contains the first date of the month\n public firstRowOffset: number;\n\n /**\n * Callback to invoke when a new date is selected\n * */\n @Output()\n readonly selectedChange = new EventEmitter<T | null>();\n\n /**\n * Callback to invoke when any date is selected.\n * */\n @Output()\n readonly userSelection = new EventEmitter<void>();\n\n /** Emits when any date is activated. */\n @Output()\n readonly pickerDayjsChange: EventEmitter<T> = new EventEmitter<T>();\n\n /** The body of calendar table */\n @ViewChild(OwlCalendarBodyComponent, { static: true })\n calendarBodyElm: OwlCalendarBodyComponent;\n\n get owlDTCalendarView(): boolean {\n return true;\n }\n\n constructor(\n private cdRef: ChangeDetectorRef,\n @Optional() private dateTimeAdapter: DateTimeAdapter<T>,\n @Optional()\n @Inject(OWL_DATE_TIME_FORMATS)\n private dateTimeFormats: OwlDateTimeFormats\n ) {}\n\n public ngOnInit() {\n this.generateWeekDays();\n\n this.localeSub = this.dateTimeAdapter.localeChanges.subscribe(() => {\n this.generateWeekDays();\n this.generateCalendar();\n this.cdRef.markForCheck();\n });\n }\n\n public ngAfterContentInit(): void {\n this.generateCalendar();\n this.initiated = true;\n }\n\n public ngOnDestroy(): void {\n this.localeSub.unsubscribe();\n }\n\n /**\n * Handle a calendarCell selected\n */\n public selectCalendarCell(cell: CalendarCell): void {\n // Cases in which the date would not be selected\n // 1, the calendar cell is NOT enabled (is NOT valid)\n // 2, the selected date is NOT in current picker's month and the hideOtherMonths is enabled\n if (!cell.enabled || (this.hideOtherMonths && cell.out)) {\n return;\n }\n\n this.selectDate(cell.value);\n }\n\n /**\n * Handle a new date selected\n */\n private selectDate(date: number): void {\n const daysDiff = date - 1;\n const selected = this.dateTimeAdapter.addCalendarDays(\n this.firstDateOfMonth,\n daysDiff\n );\n\n this.selectedChange.emit(selected);\n this.userSelection.emit();\n }\n\n /**\n * Handle keydown event on calendar body\n */\n public handleCalendarKeydown(event: KeyboardEvent): void {\n let dayjs;\n switch (event.keyCode) {\n // minus 1 day\n case LEFT_ARROW:\n dayjs = this.dateTimeAdapter.addCalendarDays(\n this.pickerDayjs,\n -1\n );\n this.pickerDayjsChange.emit(dayjs);\n break;\n\n // add 1 day\n case RIGHT_ARROW:\n dayjs = this.dateTimeAdapter.addCalendarDays(\n this.pickerDayjs,\n 1\n );\n this.pickerDayjsChange.emit(dayjs);\n break;\n\n // minus 1 week\n case UP_ARROW:\n dayjs = this.dateTimeAdapter.addCalendarDays(\n this.pickerDayjs,\n -7\n );\n this.pickerDayjsChange.emit(dayjs);\n break;\n\n // add 1 week\n case DOWN_ARROW:\n dayjs = this.dateTimeAdapter.addCalendarDays(\n this.pickerDayjs,\n 7\n );\n this.pickerDayjsChange.emit(dayjs);\n break;\n\n // move to first day of current month\n case HOME:\n dayjs = this.dateTimeAdapter.addCalendarDays(\n this.pickerDayjs,\n 1 - this.dateTimeAdapter.getDate(this.pickerDayjs)\n );\n this.pickerDayjsChange.emit(dayjs);\n break;\n\n // move to last day of current month\n case END:\n dayjs = this.dateTimeAdapter.addCalendarDays(\n this.pickerDayjs,\n this.dateTimeAdapter.getNumDaysInMonth(this.pickerDayjs) -\n this.dateTimeAdapter.getDate(this.pickerDayjs)\n );\n this.pickerDayjsChange.emit(dayjs);\n break;\n\n // minus 1 month (or 1 year)\n case PAGE_UP:\n dayjs = event.altKey\n ? this.dateTimeAdapter.addCalendarYears(\n this.pickerDayjs,\n -1\n )\n : this.dateTimeAdapter.addCalendarMonths(\n this.pickerDayjs,\n -1\n );\n this.pickerDayjsChange.emit(dayjs);\n break;\n\n // add 1 month (or 1 year)\n case PAGE_DOWN:\n dayjs = event.altKey\n ? this.dateTimeAdapter.addCalendarYears(\n this.pickerDayjs,\n 1\n )\n : this.dateTimeAdapter.addCalendarMonths(\n this.pickerDayjs,\n 1\n );\n this.pickerDayjsChange.emit(dayjs);\n break;\n\n // select the pickerDayjs\n case ENTER:\n if (!this.dateFilter || this.dateFilter(this.pickerDayjs)) {\n this.selectDate(\n this.dateTimeAdapter.getDate(this.pickerDayjs)\n );\n }\n break;\n default:\n return;\n }\n\n this.focusActiveCell();\n event.preventDefault();\n }\n\n /**\n * Generate the calendar weekdays array\n * */\n private generateWeekDays(): void {\n const longWeekdays = this.dateTimeAdapter.getDayOfWeekNames('long');\n const shortWeekdays = this.dateTimeAdapter.getDayOfWeekNames('short');\n const narrowWeekdays = this.dateTimeAdapter.getDayOfWeekNames('narrow');\n const firstDayOfWeek = this.firstDayOfWeek;\n\n const weekdays = longWeekdays.map((long, i) => {\n return { long, short: shortWeekdays[i], narrow: narrowWeekdays[i] };\n });\n\n this._weekdays = weekdays\n .slice(firstDayOfWeek)\n .concat(weekdays.slice(0, firstDayOfWeek));\n\n this.dateNames = this.dateTimeAdapter.getDateNames();\n\n return;\n }\n\n /**\n * Generate the calendar days array\n * */\n private generateCalendar(): void {\n if (!this.pickerDayjs) {\n return;\n }\n\n this.todayDate = null;\n\n // the first weekday of the month\n const startWeekdayOfMonth = this.dateTimeAdapter.getDay(\n this.firstDateOfMonth\n );\n const firstDayOfWeek = this.firstDayOfWeek;\n\n // the amount of days from the first date of the month\n // if it is < 0, it means the date is in previous month\n let daysDiff =\n 0 -\n ((startWeekdayOfMonth + (DAYS_PER_WEEK - firstDayOfWeek)) %\n DAYS_PER_WEEK);\n\n // the index of cell that contains the first date of the month\n this.firstRowOffset = Math.abs(daysDiff);\n\n this._days = [];\n for (let i = 0; i < WEEKS_PER_VIEW; i++) {\n const week = [];\n for (let j = 0; j < DAYS_PER_WEEK; j++) {\n const date = this.dateTimeAdapter.addCalendarDays(\n this.firstDateOfMonth,\n daysDiff\n );\n const dateCell = this.createDateCell(date, daysDiff);\n\n // check if the date is today\n if (\n this.dateTimeAdapter.isSameDay(\n this.dateTimeAdapter.now(),\n date\n )\n ) {\n this.todayDate = daysDiff + 1;\n }\n\n week.push(dateCell);\n daysDiff += 1;\n }\n this._days.push(week);\n }\n\n this.setSelectedDates();\n }\n\n /**\n * Creates CalendarCell for days.\n */\n private createDateCell(date: T, daysDiff: number): CalendarCell {\n // total days of the month\n const daysInMonth = this.dateTimeAdapter.getNumDaysInMonth(\n this.pickerDayjs\n );\n const dateNum = this.dateTimeAdapter.getDate(date);\n // const dateName = this.dateNames[dateNum - 1];\n const dateName = dateNum.toString();\n const ariaLabel = this.dateTimeAdapter.format(\n date,\n this.dateTimeFormats.dateA11yLabel\n );\n\n // check if the date if selectable\n const enabled = this.isDateEnabled(date);\n\n // check if date is not in current month\n const dayValue = daysDiff + 1;\n const out = dayValue < 1 || dayValue > daysInMonth;\n const cellClass = 'owl-dt-day-' + this.dateTimeAdapter.getDay(date);\n\n return new CalendarCell(\n dayValue,\n dateName,\n ariaLabel,\n enabled,\n out,\n cellClass\n );\n }\n\n /**\n * Check if the date is valid\n */\n private isDateEnabled(date: T): boolean {\n return (\n !!date &&\n (!this.dateFilter || this.dateFilter(date)) &&\n (!this.minDate ||\n this.dateTimeAdapter.compare(date, this.minDate) >= 0) &&\n (!this.maxDate ||\n this.dateTimeAdapter.compare(date, this.maxDate) <= 0)\n );\n }\n\n /**\n * Get a valid date object\n */\n private getValidDate(obj: any): T | null {\n return this.dateTimeAdapter.isDateInstance(obj) &&\n this.dateTimeAdapter.isValid(obj)\n ? obj\n : null;\n }\n\n /**\n * Check if the give dates are none-null and in the same month\n */\n public isSameMonth(dateLeft: T, dateRight: T): boolean {\n return !!(\n dateLeft &&\n dateRight &&\n this.dateTimeAdapter.isValid(dateLeft) &&\n this.dateTimeAdapter.isValid(dateRight) &&\n this.dateTimeAdapter.getYear(dateLeft) ===\n this.dateTimeAdapter.getYear(dateRight) &&\n this.dateTimeAdapter.getMonth(dateLeft) ===\n this.dateTimeAdapter.getMonth(dateRight)\n );\n }\n\n /**\n * Set the selectedDates value.\n * In single mode, it has only one value which represent the selected date\n * In range mode, it would has two values, one for the fromValue and the other for the toValue\n * */\n private setSelectedDates(): void {\n this.selectedDates = [];\n\n if (!this.firstDateOfMonth) {\n return;\n }\n\n if (this.isInSingleMode && this.selected) {\n const dayDiff = this.dateTimeAdapter.differenceInCalendarDays(\n this.selected,\n this.firstDateOfMonth\n );\n this.selectedDates[0] = dayDiff + 1;\n return;\n }\n\n if (this.isInRangeMode && this.selecteds) {\n this.selectedDates = this.selecteds.map(selected => {\n if (this.dateTimeAdapter.isValid(selected)) {\n const dayDiff = this.dateTimeAdapter.differenceInCalendarDays(\n selected,\n this.firstDateOfMonth\n );\n return dayDiff + 1;\n } else {\n return null;\n }\n });\n }\n }\n\n private focusActiveCell() {\n this.calendarBodyElm.focusActiveCell();\n }\n}\n","<table class=\"owl-dt-calendar-table owl-dt-calendar-month-table\"\n [class.owl-dt-calendar-only-current-month]=\"hideOtherMonths\">\n <thead class=\"owl-dt-calendar-header\">\n <tr class=\"owl-dt-weekdays\">\n <th *ngFor=\"let weekday of weekdays\"\n [attr.aria-label]=\"weekday.long\"\n class=\"owl-dt-weekday\" scope=\"col\">\n <span>{{weekday.short}}</span>\n </th>\n </tr>\n <tr>\n <th class=\"owl-dt-calendar-table-divider\" aria-hidden=\"true\" colspan=\"7\"></th>\n </tr>\n </thead>\n <tbody owl-date-time-calendar-body role=\"grid\"\n [rows]=\"days\" [todayValue]=\"todayDate\"\n [selectedValues]=\"selectedDates\"\n [selectMode]=\"selectMode\"\n [activeCell]=\"activeCell\"\n (keydown)=\"handleCalendarKeydown($event)\"\n (select)=\"selectCalendarCell($event)\">\n </tbody>\n</table>\n","/**\n * calendar.component\n */\n\nimport {\n AfterContentInit,\n AfterViewChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Optional,\n Output\n} from '@angular/core';\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport {\n OWL_DATE_TIME_FORMATS,\n OwlDateTimeFormats\n} from './adapter/date-time-format.class';\nimport { SelectMode } from './date-time.class';\nimport { take } from 'rxjs/operators';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'owl-date-time-calendar',\n exportAs: 'owlDateTimeCalendar',\n templateUrl: './calendar.component.html',\n styleUrls: ['./calendar.component.scss'],\n host: {\n '[class.owl-dt-calendar]': 'owlDTCalendarClass'\n },\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class OwlCalendarComponent<T>\n implements OnInit, AfterContentInit, AfterViewChecked, OnDestroy {\n /**\n * Date filter for the month and year view\n * */\n @Input()\n dateFilter: Function;\n\n /**\n * Set the first day of week\n */\n @Input()\n firstDayOfWeek = 0;\n\n /** The minimum selectable date. */\n private _minDate: T | null;\n @Input()\n get minDate(): T | null {\n return this._minDate;\n }\n\n set minDate(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n value = this.getValidDate(value);\n\n this._minDate = value\n ? this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(value),\n this.dateTimeAdapter.getMonth(value),\n this.dateTimeAdapter.getDate(value)\n )\n : null;\n }\n\n /** The maximum selectable date. */\n private _maxDate: T | null;\n @Input()\n get maxDate(): T | null {\n return this._maxDate;\n }\n\n set maxDate(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n value = this.getValidDate(value);\n\n this._maxDate = value\n ? this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(value),\n this.dateTimeAdapter.getMonth(value),\n this.dateTimeAdapter.getDate(value)\n )\n : null;\n }\n\n /** The current picker dayjs */\n private _pickerDayjs: T;\n @Input()\n get pickerDayjs() {\n return this._pickerDayjs;\n }\n\n set pickerDayjs(value: T) {\n value = this.dateTimeAdapter.deserialize(value);\n this._pickerDayjs =\n this.getValidDate(value) || this.dateTimeAdapter.now();\n }\n\n @Input()\n selectMode: SelectMode;\n\n /** The currently selected dayjs. */\n private _selected: T | null;\n @Input()\n get selected(): T | null {\n return this._selected;\n }\n\n set selected(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._selected = this.getValidDate(value);\n }\n\n private _selecteds: T[] = [];\n @Input()\n get selecteds(): T[] {\n return this._selecteds;\n }\n\n set selecteds(values: T[]) {\n this._selecteds = values.map(v => {\n v = this.dateTimeAdapter.deserialize(v);\n return this.getValidDate(v);\n });\n }\n\n /**\n * The view that the calendar should start in.\n */\n @Input()\n startView: 'month' | 'year' | 'multi-years' = 'month';\n\n /**\n * Whether to hide dates in other months at the start or end of the current month.\n * */\n @Input()\n hideOtherMonths: boolean;\n\n /** Emits when the currently picker dayjs changes. */\n @Output()\n pickerDayjsChange = new EventEmitter<T>();\n\n /** Emits when the currently selected date changes. */\n @Output()\n selectedChange = new EventEmitter<T>();\n\n /** Emits when any date is selected. */\n @Output()\n userSelection = new EventEmitter<void>();\n\n /**\n * Emits the selected year. This doesn't imply a change on the selected date\n * */\n @Output()\n readonly yearSelected = new EventEmitter<T>();\n\n /**\n * Emits the selected month. This doesn't imply a change on the selected date\n * */\n @Output()\n readonly monthSelected = new EventEmitter<T>();\n\n get periodButtonText(): string {\n return this.isMonthView\n ? this.dateTimeAdapter.format(\n this.pickerDayjs,\n this.dateTimeFormats.monthYearLabel\n )\n : this.dateTimeAdapter.getYearName(this.pickerDayjs);\n }\n\n get periodButtonLabel(): string {\n return this.isMonthView\n ? this.pickerIntl.switchToMultiYearViewLabel\n : this.pickerIntl.switchToMonthViewLabel;\n }\n\n get prevButtonLabel(): string {\n if (this._currentView === 'month') {\n return this.pickerIntl.prevMonthLabel;\n } else if (this._currentView === 'year') {\n return this.pickerIntl.prevYearLabel;\n } else {\n return null;\n }\n }\n\n get nextButtonLabel(): string {\n if (this._currentView === 'month') {\n return this.pickerIntl.nextMonthLabel;\n } else if (this._currentView === 'year') {\n return this.pickerIntl.nextYearLabel;\n } else {\n return null;\n }\n }\n\n private _currentView: 'month' | 'year' | 'multi-years';\n get currentView(): 'month' | 'year' | 'multi-years' {\n return this._currentView;\n }\n\n set currentView(view: 'month' | 'year' | 'multi-years') {\n this._currentView = view;\n this.moveFocusOnNextTick = true;\n }\n\n get isInSingleMode(): boolean {\n return this.selectMode === 'single';\n }\n\n get isInRangeMode(): boolean {\n return (\n this.selectMode === 'range' ||\n this.selectMode === 'rangeFrom' ||\n this.selectMode === 'rangeTo'\n );\n }\n\n get showControlArrows(): boolean {\n return this._currentView !== 'multi-years';\n }\n\n get isMonthView() {\n return this._currentView === 'month';\n }\n\n /**\n * Date filter for the month and year view\n */\n public dateFilterForViews = (date: T) => {\n return (\n !!date &&\n (!this.dateFilter || this.dateFilter(date)) &&\n (!this.minDate ||\n this.dateTimeAdapter.compare(date, this.minDate) >= 0) &&\n (!this.maxDate ||\n this.dateTimeAdapter.compare(date, this.maxDate) <= 0)\n );\n };\n\n /**\n * Bind class 'owl-dt-calendar' to host\n * */\n get owlDTCalendarClass(): boolean {\n return true;\n }\n\n private intlChangesSub = Subscription.EMPTY;\n\n /**\n * Used for scheduling that focus should be moved to the active cell on the next tick.\n * We need to schedule it, rather than do it immediately, because we have to wait\n * for Angular to re-evaluate the view children.\n */\n private moveFocusOnNextTick = false;\n\n constructor(\n private elmRef: ElementRef,\n private pickerIntl: OwlDateTimeIntl,\n private ngZone: NgZone,\n private cdRef: ChangeDetectorRef,\n @Optional() private dateTimeAdapter: DateTimeAdapter<T>,\n @Optional()\n @Inject(OWL_DATE_TIME_FORMATS)\n private dateTimeFormats: OwlDateTimeFormats\n ) {\n this.intlChangesSub = this.pickerIntl.changes.subscribe(() => {\n this.cdRef.markForCheck();\n });\n }\n\n public ngOnInit() {}\n\n public ngAfterContentInit(): void {\n this._currentView = this.startView;\n }\n\n public ngAfterViewChecked() {\n if (this.moveFocusOnNextTick) {\n this.moveFocusOnNextTick = false;\n this.focusActiveCell();\n }\n }\n\n public ngOnDestroy(): void {\n this.intlChangesSub.unsubscribe();\n }\n\n /**\n * Toggle between month view and year view\n */\n public toggleViews(): void {\n this.currentView =\n this._currentView == 'month' ? 'multi-years' : 'month';\n }\n\n /**\n * Handles user clicks on the previous button.\n * */\n public previousClicked(): void {\n this.pickerDayjs = this.isMonthView\n ? this.dateTimeAdapter.addCalendarMonths(this.pickerDayjs, -1)\n : this.dateTimeAdapter.addCalendarYears(this.pickerDayjs, -1);\n\n this.pickerDayjsChange.emit(this.pickerDayjs);\n }\n\n /**\n * Handles user clicks on the next button.\n * */\n public nextClicked(): void {\n this.pickerDayjs = this.isMonthView\n ? this.dateTimeAdapter.addCalendarMonths(this.pickerDayjs, 1)\n : this.dateTimeAdapter.addCalendarYears(this.pickerDayjs, 1);\n\n this.pickerDayjsChange.emit(this.pickerDayjs);\n }\n\n public dateSelected(date: T): void {\n if (!this.dateFilterForViews(date)) {\n return;\n }\n\n this.selectedChange.emit(date);\n\n /*if ((this.isInSingleMode && !this.dateTimeAdapter.isSameDay(date, this.selected)) ||\n this.isInRangeMode) {\n this.selectedChange.emit(date);\n }*/\n }\n\n /**\n * Change the pickerDayjs value and switch to a specific view\n */\n public goToDateInView(\n date: T,\n view: 'month' | 'year' | 'multi-years'\n ): void {\n this.handlePickerDayjsChange(date);\n this.currentView = view;\n return;\n }\n\n /**\n * Change the pickerDayjs value\n */\n public handlePickerDayjsChange(date: T): void {\n this.pickerDayjs = this.dateTimeAdapter.clampDate(\n date,\n this.minDate,\n this.maxDate\n );\n this.pickerDayjsChange.emit(this.pickerDayjs);\n return;\n }\n\n public userSelected(): void {\n this.userSelection.emit();\n }\n\n /**\n * Whether the previous period button is enabled.\n */\n public prevButtonEnabled(): boolean {\n return (\n !this.minDate || !this.isSameView(this.pickerDayjs, this.minDate)\n );\n }\n\n /**\n * Whether the next period button is enabled.\n */\n public nextButtonEnabled(): boolean {\n return (\n !this.maxDate || !this.isSameView(this.pickerDayjs, this.maxDate)\n );\n }\n\n /**\n * Focus to the host element\n * */\n public focusActiveCell() {\n this.ngZone.runOutsideAngular(() => {\n this.ngZone.onStable\n .asObservable()\n .pipe(take(1))\n .subscribe(() => {\n this.elmRef.nativeElement\n .querySelector('.owl-dt-calendar-cell-active')\n .focus();\n });\n });\n }\n\n public selectYearInMultiYearView(normalizedYear: T): void {\n this.yearSelected.emit(normalizedYear);\n }\n\n public selectMonthInYearView(normalizedMonth: T): void {\n this.monthSelected.emit(normalizedMonth);\n }\n\n /**\n * Whether the two dates represent the same view in the current view mode (month or year).\n */\n private isSameView(date1: T, date2: T): boolean {\n if (this._currentView === 'month') {\n return !!(\n date1 &&\n date2 &&\n this.dateTimeAdapter.getYear(date1) ===\n this.dateTimeAdapter.getYear(date2) &&\n this.dateTimeAdapter.getMonth(date1) ===\n this.dateTimeAdapter.getMonth(date2)\n );\n } else if (this._currentView === 'year') {\n return !!(\n date1 &&\n date2 &&\n this.dateTimeAdapter.getYear(date1) ===\n this.dateTimeAdapter.getYear(date2)\n );\n } else {\n return false;\n }\n }\n\n /**\n * Get a valid date object\n */\n private getValidDate(obj: any): T | null {\n return this.dateTimeAdapter.isDateInstance(obj) &&\n this.dateTimeAdapter.isValid(obj)\n ? obj\n : null;\n }\n}\n","<div class=\"owl-dt-calendar-control\">\n <!-- focus when keyboard tab (http://kizu.ru/en/blog/keyboard-only-focus/#x) -->\n <button class=\"owl-dt-control owl-dt-control-button owl-dt-control-arrow-button\"\n type=\"button\" tabindex=\"0\"\n [style.visibility]=\"showControlArrows? 'visible': 'hidden'\"\n [disabled]=\"!prevButtonEnabled()\"\n [attr.aria-label]=\"prevButtonLabel\"\n (click)=\"previousClicked()\">\n <span class=\"owl-dt-control-content owl-dt-control-button-content\" tabindex=\"-1\">\n <!-- <editor-fold desc=\"SVG Arrow Left\"> -->\n <svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n version=\"1.1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 250.738 250.738\"\n style=\"enable-background:new 0 0 250.738 250.738;\" xml:space=\"preserve\"\n width=\"100%\" height=\"100%\">\n <path style=\"fill-rule: evenodd; clip-rule: evenodd;\" d=\"M96.633,125.369l95.053-94.533c7.101-7.055,7.101-18.492,0-25.546 c-7.1-7.054-18.613-7.054-25.714,0L58.989,111.689c-3.784,3.759-5.487,8.759-5.238,13.68c-0.249,4.922,1.454,9.921,5.238,13.681 l106.983,106.398c7.101,7.055,18.613,7.055,25.714,0c7.101-7.054,7.101-18.491,0-25.544L96.633,125.369z\"/>\n </svg>\n <!-- </editor-fold> -->\n </span>\n </button>\n <div class=\"owl-dt-calendar-control-content\">\n <button class=\"owl-dt-control owl-dt-control-button owl-dt-control-period-button\"\n type=\"button\" tabindex=\"0\"\n [attr.aria-label]=\"periodButtonLabel\"\n (click)=\"toggleViews()\">\n <span class=\"owl-dt-control-content owl-dt-control-button-content\" tabindex=\"-1\">\n {{periodButtonText}}\n\n <span class=\"owl-dt-control-button-arrow\"\n [style.transform]=\"'rotate(' + (isMonthView? 0 : 180) +'deg)'\">\n <!-- <editor-fold desc=\"SVG Arrow\"> -->\n <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n width=\"50%\" height=\"50%\" viewBox=\"0 0 292.362 292.362\" style=\"enable-background:new 0 0 292.362 292.362;\"\n xml:space=\"preserve\">\n <g>\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\n C1.807,72.998,0,77.279,0,82.228c0,4.948,1.807,9.229,5.424,12.847l127.907,127.907c3.621,3.617,7.902,5.428,12.85,5.428\n s9.233-1.811,12.847-5.428L286.935,95.074c3.613-3.617,5.427-7.898,5.427-12.847C292.362,77.279,290.548,72.998,286.935,69.377z\"/>\n </g>\n </svg>\n <!-- </editor-fold> -->\n </span>\n </span>\n </button>\n </div>\n <button class=\"owl-dt-control owl-dt-control-button owl-dt-control-arrow-button\"\n type=\"button\" tabindex=\"0\"\n [style.visibility]=\"showControlArrows? 'visible': 'hidden'\"\n [disabled]=\"!nextButtonEnabled()\"\n [attr.aria-label]=\"nextButtonLabel\"\n (click)=\"nextClicked()\">\n <span class=\"owl-dt-control-content owl-dt-control-button-content\" tabindex=\"-1\">\n <!-- <editor-fold desc=\"SVG Arrow Right\"> -->\n <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" x=\"0px\" y=\"0px\"\n viewBox=\"0 0 250.738 250.738\" style=\"enable-background:new 0 0 250.738 250.738;\" xml:space=\"preserve\">\n <path style=\"fill-rule:evenodd;clip-rule:evenodd;\" d=\"M191.75,111.689L84.766,5.291c-7.1-7.055-18.613-7.055-25.713,0\n c-7.101,7.054-7.101,18.49,0,25.544l95.053,94.534l-95.053,94.533c-7.101,7.054-7.101,18.491,0,25.545\n c7.1,7.054,18.613,7.054,25.713,0L191.75,139.05c3.784-3.759,5.487-8.759,5.238-13.681\n C197.237,120.447,195.534,115.448,191.75,111.689z\"/>\n </svg>\n <!-- </editor-fold> -->\n </span>\n </button>\n</div>\n<div class=\"owl-dt-calendar-main\" cdkMonitorSubtreeFocus [ngSwitch]=\"currentView\" tabindex=\"-1\">\n <owl-date-time-month-view\n *ngSwitchCase=\"'month'\"\n [pickerDayjs]=\"pickerDayjs\"\n [firstDayOfWeek]=\"firstDayOfWeek\"\n [selected]=\"selected\"\n [selecteds]=\"selecteds\"\n [selectMode]=\"selectMode\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [dateFilter]=\"dateFilter\"\n [hideOtherMonths]=\"hideOtherMonths\"\n (pickerDayjsChange)=\"handlePickerDayjsChange($event)\"\n (selectedChange)=\"dateSelected($event)\"\n (userSelection)=\"userSelected()\"></owl-date-time-month-view>\n\n <owl-date-time-year-view\n *ngSwitchCase=\"'year'\"\n [pickerDayjs]=\"pickerDayjs\"\n [selected]=\"selected\"\n [selecteds]=\"selecteds\"\n [selectMode]=\"selectMode\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [dateFilter]=\"dateFilter\"\n (keyboardEnter)=\"focusActiveCell()\"\n (pickerDayjsChange)=\"handlePickerDayjsChange($event)\"\n (monthSelected)=\"selectMonthInYearView($event)\"\n (change)=\"goToDateInView($event, 'month')\"></owl-date-time-year-view>\n\n <owl-date-time-multi-year-view\n *ngSwitchCase=\"'multi-years'\"\n [pickerDayjs]=\"pickerDayjs\"\n [selected]=\"selected\"\n [selecteds]=\"selecteds\"\n [selectMode]=\"selectMode\"\n [minDate]=\"minDate\"\n [maxDate]=\"maxDate\"\n [dateFilter]=\"dateFilter\"\n (keyboardEnter)=\"focusActiveCell()\"\n (pickerDayjsChange)=\"handlePickerDayjsChange($event)\"\n (yearSelected)=\"selectYearInMultiYearView($event)\"\n (change)=\"goToDateInView($event, 'year')\"></owl-date-time-multi-year-view>\n</div>\n","/**\n * timer-box.component\n */\n\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output, ViewChild\n} from '@angular/core';\nimport { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged } from 'rxjs/operators';\n\n@Component({\n exportAs: 'owlDateTimeTimerBox',\n selector: 'owl-date-time-timer-box',\n templateUrl: './timer-box.component.html',\n styleUrls: ['./timer-box.component.scss'],\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.owl-dt-timer-box]': 'owlDTTimerBoxClass'\n }\n})\n\nexport class OwlTimerBoxComponent implements OnInit, AfterViewInit, OnDestroy {\n\n @Input() showDivider = false;\n\n @Input() upBtnAriaLabel: string;\n\n @Input() upBtnDisabled: boolean;\n\n @Input() downBtnAriaLabel: string;\n\n @Input() downBtnDisabled: boolean;\n\n /**\n * Value would be displayed in the box\n * If it is null, the box would display [value]\n * */\n @Input() boxValue: number;\n\n @Input() value: number;\n\n @Input() min: number;\n\n @Input() max: number;\n\n @Input() step = 1;\n\n @Input() inputLabel: string;\n\n @Output() valueChange = new EventEmitter<number>();\n\n @Output() inputChange = new EventEmitter<number>();\n\n @ViewChild('valueInput') input: any;\n\n private inputStream = new Subject<string>();\n\n private inputStreamSub = Subscription.EMPTY;\n\n get displayValue(): number {\n return this.boxValue || this.value;\n }\n\n get owlDTTimerBoxClass(): boolean {\n return true;\n }\n\n constructor() {\n }\n\n public ngOnInit() {\n this.inputStreamSub = this.inputStream.pipe(\n distinctUntilChanged()\n ).subscribe(( val: string ) => {\n if (val) {\n const inputValue = coerceNumberProperty(val, 0);\n this.updateValueViaInput(inputValue);\n }\n });\n }\n\n ngAfterViewInit() {\n if (this.input.nativeElement.value.length < 2) {\n this.input.nativeElement.value = `0${this.input.nativeElement.value}`;\n }\n }\n\n public ngOnDestroy(): void {\n this.inputStreamSub.unsubscribe();\n }\n\n public upBtnClicked(): void {\n this.updateValue(this.value + this.step);\n }\n\n public downBtnClicked(): void {\n this.updateValue(this.value - this.step);\n }\n\n public handleInputChange( val: string, input: any ): void {\n let num = '0';\n const number = Number(val);\n if (!isNaN(number)) {\n num = number.toFixed(0);\n }\n input.value = num;\n this.inputStream.next(num);\n }\n\n public afterInputChange(input: any) {\n while (input.value.length < 2) {\n input.value = '0' + input.value;\n }\n }\n\n private updateValue( value: number ): void {\n this.valueChange.emit(value);\n }\n\n private updateValueViaInput( value: number ): void {\n if (value > this.max || value < this.min) {\n return;\n }\n this.inputChange.emit(value);\n }\n}\n","<div *ngIf=\"showDivider\" class=\"owl-dt-timer-divider\" aria-hidden=\"true\"></div>\n<button class=\"owl-dt-control-button owl-dt-control-arrow-button\"\n type=\"button\" tabindex=\"-1\"\n [disabled]=\"upBtnDisabled\"\n [attr.aria-label]=\"upBtnAriaLabel\"\n (click)=\"upBtnClicked()\">\n <span class=\"owl-dt-control-button-content\" tabindex=\"-1\">\n <!-- <editor-fold desc=\"SVG Arrow Up\"> -->\n <svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n version=\"1.1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 451.847 451.846\"\n style=\"enable-background:new 0 0 451.847 451.846;\" xml:space=\"preserve\"\n width=\"100%\" height=\"100%\">\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\n L225.923,173.529L54.018,345.44c-12.36,12.354-32.395,12.354-44.748,0c-12.359-12.354-12.359-32.391,0-44.75L203.554,106.4\n c6.18-6.174,14.271-9.259,22.369-9.259C234.018,97.141,242.115,100.232,248.292,106.406z\"/>\n </svg>\n <!-- </editor-fold> -->\n </span>\n</button>\n<label class=\"owl-dt-timer-content\">\n <input class=\"owl-dt-timer-input\" maxlength=\"2\"\n [value]=\"displayValue\"\n (click)=\"valueInput.select()\"\n (change)=\"afterInputChange(valueInput)\"\n (input)=\"handleInputChange(valueInput.value, valueInput)\" #valueInput>\n <span class=\"owl-hidden-accessible\">{{inputLabel}}</span>\n</label>\n<button class=\"owl-dt-control-button owl-dt-control-arrow-button\"\n type=\"button\" tabindex=\"-1\"\n [disabled]=\"downBtnDisabled\"\n [attr.aria-label]=\"downBtnAriaLabel\"\n (click)=\"downBtnClicked()\">\n <span class=\"owl-dt-control-button-content\" tabindex=\"-1\">\n <!-- <editor-fold desc=\"SVG Arrow Down\"> -->\n <svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n version=\"1.1\" x=\"0px\" y=\"0px\" viewBox=\"0 0 451.847 451.846\"\n style=\"enable-background:new 0 0 451.847 451.846;\" xml:space=\"preserve\"\n width=\"100%\" height=\"100%\">\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\n c12.354-12.354,32.388-12.354,44.748,0l171.905,171.915l171.906-171.909c12.359-12.354,32.391-12.354,44.744,0\n c12.365,12.354,12.365,32.392,0,44.751L248.292,345.449C242.115,351.621,234.018,354.706,225.923,354.706z\"/>\n </svg>\n <!-- </editor-fold> -->\n </span>\n</button>\n","/**\n * timer.component\n */\n\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n OnInit,\n Optional,\n Output\n} from '@angular/core';\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport { take } from 'rxjs/operators';\n\n@Component({\n exportAs: 'owlDateTimeTimer',\n selector: 'owl-date-time-timer',\n templateUrl: './timer.component.html',\n styleUrls: ['./timer.component.scss'],\n preserveWhitespaces: false,\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.owl-dt-timer]': 'owlDTTimerClass',\n '[attr.tabindex]': 'owlDTTimeTabIndex'\n }\n})\nexport class OwlTimerComponent<T> implements OnInit {\n /** The current picker dayjs */\n private _pickerDayjs: T;\n @Input()\n get pickerDayjs() {\n return this._pickerDayjs;\n }\n\n set pickerDayjs(value: T) {\n value = this.dateTimeAdapter.deserialize(value);\n this._pickerDayjs =\n this.getValidDate(value) || this.dateTimeAdapter.now();\n }\n\n /** The minimum selectable date time. */\n private _minDateTime: T | null;\n @Input()\n get minDateTime(): T | null {\n return this._minDateTime;\n }\n\n set minDateTime(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._minDateTime = this.getValidDate(value);\n }\n\n /** The maximum selectable date time. */\n private _maxDateTime: T | null;\n @Input()\n get maxDateTime(): T | null {\n return this._maxDateTime;\n }\n\n set maxDateTime(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this._maxDateTime = this.getValidDate(value);\n }\n\n private isPM: boolean = false; // a flag indicates the current timer dayjs is in PM or AM\n\n /**\n * Whether to show the second's timer\n */\n @Input()\n showSecondsTimer: boolean;\n\n /**\n * Whether the timer is in hour12 format\n */\n @Input()\n hour12Timer: boolean;\n\n /**\n * Hours to change per step\n */\n @Input()\n stepHour = 1;\n\n /**\n * Minutes to change per step\n */\n @Input()\n stepMinute = 1;\n\n /**\n * Seconds to change per step\n */\n @Input()\n stepSecond = 1;\n\n get hourValue(): number {\n return this.dateTimeAdapter.getHours(this.pickerDayjs);\n }\n\n /**\n * The value would be displayed in hourBox.\n * We need this because the value displayed in hourBox it not\n * the same as the hourValue when the timer is in hour12Timer mode.\n * */\n get hourBoxValue(): number {\n let hours = this.hourValue;\n\n if (!this.hour12Timer) {\n return hours;\n } else {\n if (hours === 0) {\n hours = 12;\n this.isPM = false;\n } else if (hours > 0 && hours < 12) {\n this.isPM = false;\n } else if (hours === 12) {\n this.isPM = true;\n } else if (hours > 12 && hours < 24) {\n hours = hours - 12;\n this.isPM = true;\n }\n\n return hours;\n }\n }\n\n get minuteValue(): number {\n return this.dateTimeAdapter.getMinutes(this.pickerDayjs);\n }\n\n get secondValue(): number {\n return this.dateTimeAdapter.getSeconds(this.pickerDayjs);\n }\n\n get upHourButtonLabel(): string {\n return this.pickerIntl.upHourLabel;\n }\n\n get downHourButtonLabel(): string {\n return this.pickerIntl.downHourLabel;\n }\n\n get upMinuteButtonLabel(): string {\n return this.pickerIntl.upMinuteLabel;\n }\n\n get downMinuteButtonLabel(): string {\n return this.pickerIntl.downMinuteLabel;\n }\n\n get upSecondButtonLabel(): string {\n return this.pickerIntl.upSecondLabel;\n }\n\n get downSecondButtonLabel(): string {\n return this.pickerIntl.downSecondLabel;\n }\n\n get hour12ButtonLabel(): string {\n return this.isPM\n ? this.pickerIntl.hour12PMLabel\n : this.pickerIntl.hour12AMLabel;\n }\n\n @Output()\n selectedChange = new EventEmitter<T>();\n\n get owlDTTimerClass(): boolean {\n return true;\n }\n\n get owlDTTimeTabIndex(): number {\n return -1;\n }\n\n constructor(\n private ngZone: NgZone,\n private elmRef: ElementRef,\n private pickerIntl: OwlDateTimeIntl,\n private cdRef: ChangeDetectorRef,\n @Optional() private dateTimeAdapter: DateTimeAdapter<T>\n ) {}\n\n public ngOnInit() {}\n\n /**\n * Focus to the host element\n * */\n public focus() {\n this.ngZone.runOutsideAngular(() => {\n this.ngZone.onStable\n .asObservable()\n .pipe(take(1))\n .subscribe(() => {\n this.elmRef.nativeElement.focus();\n });\n });\n }\n\n /**\n * Set the hour value via typing into timer box input\n * We need this to handle the hour value when the timer is in hour12 mode\n * */\n public setHourValueViaInput(hours: number): void {\n if (this.hour12Timer && this.isPM && hours >= 1 && hours <= 11) {\n hours = hours + 12;\n } else if (this.hour12Timer && !this.isPM && hours === 12) {\n hours = 0;\n }\n\n this.setHourValue(hours);\n }\n\n public setHourValue(hours: number): void {\n const m = this.dateTimeAdapter.setHours(this.pickerDayjs, hours);\n this.selectedChange.emit(m);\n this.cdRef.markForCheck();\n }\n\n public setMinuteValue(minutes: number): void {\n const m = this.dateTimeAdapter.setMinutes(this.pickerDayjs, minutes);\n this.selectedChange.emit(m);\n this.cdRef.markForCheck();\n }\n\n public setSecondValue(seconds: number): void {\n const m = this.dateTimeAdapter.setSeconds(this.pickerDayjs, seconds);\n this.selectedChange.emit(m);\n this.cdRef.markForCheck();\n }\n\n public setMeridiem(event: any): void {\n this.isPM = !this.isPM;\n\n let hours = this.hourValue;\n if (this.isPM) {\n hours = hours + 12;\n } else {\n hours = hours - 12;\n }\n\n if (hours >= 0 && hours <= 23) {\n this.setHourValue(hours);\n }\n\n this.cdRef.markForCheck();\n event.preventDefault();\n }\n\n /**\n * Check if the up hour button is enabled\n */\n public upHourEnabled(): boolean {\n return (\n !this.maxDateTime ||\n this.compareHours(this.stepHour, this.maxDateTime) < 1\n );\n }\n\n /**\n * Check if the down hour button is enabled\n */\n public downHourEnabled(): boolean {\n return (\n !this.minDateTime ||\n this.compareHours(-this.stepHour, this.minDateTime) > -1\n );\n }\n\n /**\n * Check if the up minute button is enabled\n */\n public upMinuteEnabled(): boolean {\n return (\n !this.maxDateTime ||\n this.compareMinutes(this.stepMinute, this.maxDateTime) < 1\n );\n }\n\n /**\n * Check if the down minute button is enabled\n */\n public downMinuteEnabled(): boolean {\n return (\n !this.minDateTime ||\n this.compareMinutes(-this.stepMinute, this.minDateTime) > -1\n );\n }\n\n /**\n * Check if the up second button is enabled\n */\n public upSecondEnabled(): boolean {\n return (\n !this.maxDateTime ||\n this.compareSeconds(this.stepSecond, this.maxDateTime) < 1\n );\n }\n\n /**\n * Check if the down second button is enabled\n */\n public downSecondEnabled(): boolean {\n return (\n !this.minDateTime ||\n this.compareSeconds(-this.stepSecond, this.minDateTime) > -1\n );\n }\n\n /**\n * PickerDayjs's hour value +/- certain amount and compare it to the give date\n * 1 is after the comparedDate\n * -1 is before the comparedDate\n * 0 is equal the comparedDate\n * */\n private compareHours(amount: number, comparedDate: T): number {\n const hours = this.dateTimeAdapter.getHours(this.pickerDayjs) + amount;\n const result = this.dateTimeAdapter.setHours(this.pickerDayjs, hours);\n return this.dateTimeAdapter.compare(result, comparedDate);\n }\n\n /**\n * PickerDayjs's minute value +/- certain amount and compare it to the give date\n * 1 is after the comparedDate\n * -1 is before the comparedDate\n * 0 is equal the comparedDate\n * */\n private compareMinutes(amount: number, comparedDate: T): number {\n const minutes =\n this.dateTimeAdapter.getMinutes(this.pickerDayjs) + amount;\n const result = this.dateTimeAdapter.setMinutes(\n this.pickerDayjs,\n minutes\n );\n return this.dateTimeAdapter.compare(result, comparedDate);\n }\n\n /**\n * PickerDayjs's second value +/- certain amount and compare it to the give date\n * 1 is after the comparedDate\n * -1 is before the comparedDate\n * 0 is equal the comparedDate\n * */\n private compareSeconds(amount: number, comparedDate: T): number {\n const seconds =\n this.dateTimeAdapter.getSeconds(this.pickerDayjs) + amount;\n const result = this.dateTimeAdapter.setSeconds(\n this.pickerDayjs,\n seconds\n );\n return this.dateTimeAdapter.compare(result, comparedDate);\n }\n\n /**\n * Get a valid date object\n */\n private getValidDate(obj: any): T | null {\n return this.dateTimeAdapter.isDateInstance(obj) &&\n this.dateTimeAdapter.isValid(obj)\n ? obj\n : null;\n }\n}\n","<owl-date-time-timer-box\n [upBtnAriaLabel]=\"upHourButtonLabel\"\n [downBtnAriaLabel]=\"downHourButtonLabel\"\n [upBtnDisabled]=\"!upHourEnabled()\"\n [downBtnDisabled]=\"!downHourEnabled()\"\n [boxValue]=\"hourBoxValue\"\n [value]=\"hourValue\" [min]=\"0\" [max]=\"23\"\n [step]=\"stepHour\" [inputLabel]=\"'Hour'\"\n (inputChange)=\"setHourValueViaInput($event)\"\n (valueChange)=\"setHourValue($event)\"></owl-date-time-timer-box>\n<owl-date-time-timer-box\n [showDivider]=\"true\"\n [upBtnAriaLabel]=\"upMinuteButtonLabel\"\n [downBtnAriaLabel]=\"downMinuteButtonLabel\"\n [upBtnDisabled]=\"!upMinuteEnabled()\"\n [downBtnDisabled]=\"!downMinuteEnabled()\"\n [value]=\"minuteValue\" [min]=\"0\" [max]=\"59\"\n [step]=\"stepMinute\" [inputLabel]=\"'Minute'\"\n (inputChange)=\"setMinuteValue($event)\"\n (valueChange)=\"setMinuteValue($event)\"></owl-date-time-timer-box>\n<owl-date-time-timer-box\n *ngIf=\"showSecondsTimer\"\n [showDivider]=\"true\"\n [upBtnAriaLabel]=\"upSecondButtonLabel\"\n [downBtnAriaLabel]=\"downSecondButtonLabel\"\n [upBtnDisabled]=\"!upSecondEnabled()\"\n [downBtnDisabled]=\"!downSecondEnabled()\"\n [value]=\"secondValue\" [min]=\"0\" [max]=\"59\"\n [step]=\"stepSecond\" [inputLabel]=\"'Second'\"\n (inputChange)=\"setSecondValue($event)\"\n (valueChange)=\"setSecondValue($event)\"></owl-date-time-timer-box>\n\n<div *ngIf=\"hour12Timer\" class=\"owl-dt-timer-hour12\">\n <button class=\"owl-dt-control-button owl-dt-timer-hour12-box\"\n type=\"button\" tabindex=\"0\"\n (click)=\"setMeridiem($event)\">\n <span class=\"owl-dt-control-button-content\" tabindex=\"-1\">\n {{hour12ButtonLabel}}\n </span>\n </button>\n</div>\n","/**\n * date-time-picker.animations\n */\nimport {\n animate, animateChild,\n AnimationTriggerMetadata,\n group,\n query,\n state,\n style,\n transition,\n trigger\n} from '@angular/animations';\n\nexport const owlDateTimePickerAnimations: {\n readonly transformPicker: AnimationTriggerMetadata;\n readonly fadeInPicker: AnimationTriggerMetadata;\n} = {\n\n transformPicker: trigger('transformPicker', [\n state('void', style({opacity: 0, transform: 'scale(1, 0)'})),\n state('enter', style({opacity: 1, transform: 'scale(1, 1)'})),\n transition('void => enter', group([\n query('@fadeInPicker', animateChild(), { optional: true }),\n animate('400ms cubic-bezier(0.25, 0.8, 0.25, 1)')\n ])),\n transition('enter => void', animate('100ms linear', style({opacity: 0})))\n ]),\n\n fadeInPicker: trigger('fadeInPicker', [\n state('enter', style({opacity: 1})),\n state('void', style({opacity: 0})),\n transition('void => enter', animate('400ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)')),\n ])\n};\n","/**\n * date-time-picker-container.component\n */\n\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n OnInit,\n Optional,\n ViewChild\n} from '@angular/core';\nimport { AnimationEvent } from '@angular/animations';\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\nimport { OwlCalendarComponent } from './calendar.component';\nimport { OwlTimerComponent } from './timer.component';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport { OwlDateTime, PickerType } from './date-time.class';\nimport { Observable, Subject } from 'rxjs';\nimport { owlDateTimePickerAnimations } from './date-time-picker.animations';\nimport {\n DOWN_ARROW,\n LEFT_ARROW,\n RIGHT_ARROW,\n SPACE,\n UP_ARROW\n} from '@angular/cdk/keycodes';\n\n@Component({\n exportAs: 'owlDateTimeContainer',\n selector: 'owl-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 owlDateTimePickerAnimations.transformPicker,\n owlDateTimePickerAnimations.fadeInPicker\n ],\n host: {\n '(@transformPicker.done)': 'handleContainerAnimationDone($event)',\n '[class.owl-dt-container]': 'owlDTContainerClass',\n '[class.owl-dt-popup-container]': 'owlDTPopupContainerClass',\n '[class.owl-dt-dialog-container]': 'owlDTDialogContainerClass',\n '[class.owl-dt-inline-container]': 'owlDTInlineContainerClass',\n '[class.owl-dt-container-disabled]': 'owlDTContainerDisabledClass',\n '[attr.id]': 'owlDTContainerId',\n '[@transformPicker]': 'owlDTContainerAnimation',\n }\n})\nexport class OwlDateTimeContainerComponent<T>\n implements OnInit, AfterContentInit, AfterViewInit {\n @ViewChild(OwlCalendarComponent)\n calendar: OwlCalendarComponent<T>;\n @ViewChild(OwlTimerComponent)\n timer: OwlTimerComponent<T>;\n\n public picker: OwlDateTime<T>;\n public activeSelectedIndex = 0; // The current active SelectedIndex in range select mode (0: 'from', 1: 'to')\n\n /**\n * Stream emits when try to hide picker\n * */\n private hidePicker$ = new Subject<any>();\n\n get hidePickerStream(): Observable<any> {\n return this.hidePicker$.asObservable();\n }\n\n /**\n * Stream emits when try to confirm the selected value\n * */\n private confirmSelected$ = new Subject<any>();\n\n get confirmSelectedStream(): Observable<any> {\n return this.confirmSelected$.asObservable();\n }\n\n private pickerOpened$ = new Subject<any>();\n\n get pickerOpenedStream(): Observable<any> {\n return this.pickerOpened$.asObservable();\n }\n\n /**\n * The current picker dayjs. This determines which time period is shown and which date is\n * highlighted when using keyboard navigation.\n */\n private _clamPickerDayjs: T;\n\n get pickerDayjs() {\n return this._clamPickerDayjs;\n }\n\n set pickerDayjs(value: T) {\n if (value) {\n this._clamPickerDayjs = this.dateTimeAdapter.clampDate(\n value,\n this.picker.minDateTime,\n this.picker.maxDateTime\n );\n }\n this.cdRef.markForCheck();\n }\n\n get pickerType(): PickerType {\n return this.picker.pickerType;\n }\n\n get cancelLabel(): string {\n return this.pickerIntl.cancelBtnLabel;\n }\n\n get setLabel(): string {\n return this.pickerIntl.setBtnLabel;\n }\n\n /**\n * The range 'from' label\n * */\n get fromLabel(): string {\n return this.pickerIntl.rangeFromLabel;\n }\n\n /**\n * The range 'to' label\n * */\n get toLabel(): string {\n return this.pickerIntl.rangeToLabel;\n }\n\n /**\n * The range 'from' formatted value\n * */\n get fromFormattedValue(): string {\n const value = this.picker.selecteds[0];\n return value\n ? this.dateTimeAdapter.format(value, this.picker.formatString)\n : '';\n }\n\n /**\n * The range 'to' formatted value\n * */\n get toFormattedValue(): string {\n const value = this.picker.selecteds[1];\n return value\n ? this.dateTimeAdapter.format(value, this.picker.formatString)\n : '';\n }\n\n /**\n * Cases in which the control buttons show in the picker\n * 1) picker mode is 'dialog'\n * 2) picker type is NOT 'calendar' and the picker mode is NOT 'inline'\n * */\n get showControlButtons(): boolean {\n return (\n this.picker.pickerMode === 'dialog' ||\n (this.picker.pickerType !== 'calendar' &&\n this.picker.pickerMode !== 'inline')\n );\n }\n\n get containerElm(): HTMLElement {\n return this.elmRef.nativeElement;\n }\n\n get owlDTContainerClass(): boolean {\n return true;\n }\n\n get owlDTPopupContainerClass(): boolean {\n return this.picker.pickerMode === 'popup';\n }\n\n get owlDTDialogContainerClass(): boolean {\n return this.picker.pickerMode === 'dialog';\n }\n\n get owlDTInlineContainerClass(): boolean {\n return this.picker.pickerMode === 'inline';\n }\n\n get owlDTContainerDisabledClass(): boolean {\n return this.picker.disabled;\n }\n\n get owlDTContainerId(): string {\n return this.picker.id;\n }\n\n get owlDTContainerAnimation(): any {\n return this.picker.pickerMode === 'inline' ? '' : 'enter';\n }\n\n constructor( private cdRef: ChangeDetectorRef,\n private elmRef: ElementRef,\n private pickerIntl: OwlDateTimeIntl,\n @Optional() private dateTimeAdapter: DateTimeAdapter<T> ) {\n }\n\n public ngOnInit() {}\n\n public ngAfterContentInit(): void {\n this.initPicker();\n }\n\n public ngAfterViewInit(): void {\n this.focusPicker();\n }\n\n public handleContainerAnimationDone(event: AnimationEvent): void {\n const toState = event.toState;\n if (toState === 'enter') {\n this.pickerOpened$.next();\n }\n }\n\n public dateSelected(date: T): void {\n let result;\n\n if (this.picker.isInSingleMode) {\n result = this.dateSelectedInSingleMode(date);\n if (result) {\n this.pickerDayjs = result;\n this.picker.select(result);\n } else {\n // we close the picker when result is null and pickerType is calendar.\n if (this.pickerType === 'calendar') {\n this.hidePicker$.next(null);\n }\n }\n return;\n }\n\n if (this.picker.isInRangeMode) {\n result = this.dateSelectedInRangeMode(date);\n if (result) {\n this.pickerDayjs = result[this.activeSelectedIndex];\n this.picker.select(result);\n }\n }\n }\n\n public timeSelected(time: T): void {\n this.pickerDayjs = this.dateTimeAdapter.clone(time);\n\n if (!this.picker.dateTimeChecker(this.pickerDayjs)) {\n return;\n }\n\n if (this.picker.isInSingleMode) {\n this.picker.select(this.pickerDayjs);\n return;\n }\n\n if (this.picker.isInRangeMode) {\n const selecteds = [...this.picker.selecteds];\n\n // check if the 'from' is after 'to' or 'to'is before 'from'\n // In this case, we set both the 'from' and 'to' the same value\n if (\n (this.activeSelectedIndex === 0 &&\n selecteds[1] &&\n this.dateTimeAdapter.compare(\n this.pickerDayjs,\n selecteds[1]\n ) === 1) ||\n (this.activeSelectedIndex === 1 &&\n selecteds[0] &&\n this.dateTimeAdapter.compare(\n this.pickerDayjs,\n selecteds[0]\n ) === -1)\n ) {\n selecteds[0] = this.pickerDayjs;\n selecteds[1] = this.pickerDayjs;\n } else {\n selecteds[this.activeSelectedIndex] = this.pickerDayjs;\n }\n\n this.picker.select(selecteds);\n }\n }\n\n /**\n * Handle click on cancel button\n */\n public onCancelClicked(event: any): void {\n this.hidePicker$.next(null);\n event.preventDefault();\n return;\n }\n\n /**\n * Handle click on set button\n */\n public onSetClicked(event: any): void {\n if (!this.picker.dateTimeChecker(this.pickerDayjs)) {\n this.hidePicker$.next(null);\n event.preventDefault();\n return;\n }\n\n this.confirmSelected$.next(event);\n event.preventDefault();\n return;\n }\n\n /**\n * Handle click on inform radio group\n */\n public handleClickOnInfoGroup(event: any, index: number): void {\n this.setActiveSelectedIndex(index);\n event.preventDefault();\n event.stopPropagation();\n }\n\n /**\n * Handle click on inform radio group\n */\n public handleKeydownOnInfoGroup(\n event: any,\n next: any,\n index: number\n ): void {\n switch (event.keyCode) {\n case DOWN_ARROW:\n case RIGHT_ARROW:\n case UP_ARROW:\n case LEFT_ARROW:\n next.focus();\n this.setActiveSelectedIndex(index === 0 ? 1 : 0);\n event.preventDefault();\n event.stopPropagation();\n break;\n\n case SPACE:\n this.setActiveSelectedIndex(index);\n event.preventDefault();\n event.stopPropagation();\n break;\n\n default:\n return;\n }\n }\n\n /**\n * Set the value of activeSelectedIndex\n */\n private setActiveSelectedIndex(index: number): void {\n if (\n this.picker.selectMode === 'range' &&\n this.activeSelectedIndex !== index\n ) {\n this.activeSelectedIndex = index;\n\n const selected = this.picker.selecteds[this.activeSelectedIndex];\n if (this.picker.selecteds && selected) {\n this.pickerDayjs = this.dateTimeAdapter.clone(selected);\n }\n }\n return;\n }\n\n private initPicker(): void {\n this.pickerDayjs = this.picker.startAt || this.dateTimeAdapter.now();\n this.activeSelectedIndex = this.picker.selectMode === 'rangeTo' ? 1 : 0;\n }\n\n /**\n * Select calendar date in single mode,\n * it returns null when date is not selected.\n */\n private dateSelectedInSingleMode(date: T): T | null {\n if (this.dateTimeAdapter.isSameDay(date, this.picker.selected)) {\n return null;\n }\n\n return this.updateAndCheckCalendarDate(date);\n }\n\n /**\n * Select dates in range Mode\n */\n private dateSelectedInRangeMode(date: T): T[] | null {\n let from = this.picker.selecteds[0];\n let to = this.picker.selecteds[1];\n\n const result = this.updateAndCheckCalendarDate(date);\n\n if (!result) {\n return null;\n }\n\n // if the given calendar day is after or equal to 'from',\n // set ths given date as 'to'\n // otherwise, set it as 'from' and set 'to' to null\n if (this.picker.selectMode === 'range') {\n if (\n this.picker.selecteds &&\n this.picker.selecteds.length &&\n !to &&\n from &&\n this.dateTimeAdapter.differenceInCalendarDays(result, from) >= 0\n ) {\n to = result;\n this.activeSelectedIndex = 1;\n } else {\n from = result;\n to = null;\n this.activeSelectedIndex = 0;\n }\n } else if (this.picker.selectMode === 'rangeFrom') {\n from = result;\n\n // if the from value is after the to value, set the to value as null\n if (to && this.dateTimeAdapter.compare(from, to) > 0) {\n to = null;\n }\n } else if (this.picker.selectMode === 'rangeTo') {\n to = result;\n\n // if the from value is after the to value, set the from value as null\n if (from && this.dateTimeAdapter.compare(from, to) > 0) {\n from = null;\n }\n }\n\n return [from, to];\n }\n\n /**\n * Update the given calendar date's time and check if it is valid\n * Because the calendar date has 00:00:00 as default time, if the picker type is 'both',\n * we need to update the given calendar date's time before selecting it.\n * if it is valid, return the updated dateTime\n * if it is not valid, return null\n */\n private updateAndCheckCalendarDate(date: T): T {\n let result;\n\n // if the picker is 'both', update the calendar date's time value\n if (this.picker.pickerType === 'both') {\n result = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(date),\n this.dateTimeAdapter.getMonth(date),\n this.dateTimeAdapter.getDate(date),\n this.dateTimeAdapter.getHours(this.pickerDayjs),\n this.dateTimeAdapter.getMinutes(this.pickerDayjs),\n this.dateTimeAdapter.getSeconds(this.pickerDayjs)\n );\n result = this.dateTimeAdapter.clampDate(\n result,\n this.picker.minDateTime,\n this.picker.maxDateTime\n );\n } else {\n result = this.dateTimeAdapter.clone(date);\n }\n\n // check the updated dateTime\n return this.picker.dateTimeChecker(result) ? result : null;\n }\n\n /**\n * Focus to the picker\n * */\n private focusPicker(): void {\n if (this.picker.pickerMode === 'inline') {\n return;\n }\n\n if (this.calendar) {\n this.calendar.focusActiveCell();\n } else if (this.timer) {\n this.timer.focus();\n }\n }\n}\n","<div [cdkTrapFocus]=\"picker.pickerMode !== 'inline'\"\n [@fadeInPicker]=\"picker.pickerMode === 'inline'? '' : 'enter'\"\n class=\"owl-dt-container-inner\">\n\n <owl-date-time-calendar\n *ngIf=\"pickerType === 'both' || pickerType === 'calendar'\"\n class=\"owl-dt-container-row\"\n [firstDayOfWeek]=\"picker.firstDayOfWeek\"\n [(pickerDayjs)]=\"pickerDayjs\"\n [selected]=\"picker.selected\"\n [selecteds]=\"picker.selecteds\"\n [selectMode]=\"picker.selectMode\"\n [minDate]=\"picker.minDateTime\"\n [maxDate]=\"picker.maxDateTime\"\n [dateFilter]=\"picker.dateTimeFilter\"\n [startView]=\"picker.startView\"\n [hideOtherMonths]=\"picker.hideOtherMonths\"\n (yearSelected)=\"picker.selectYear($event)\"\n (monthSelected)=\"picker.selectMonth($event)\"\n (selectedChange)=\"dateSelected($event)\"></owl-date-time-calendar>\n\n <owl-date-time-timer\n *ngIf=\"pickerType === 'both' || pickerType === 'timer'\"\n class=\"owl-dt-container-row\"\n [pickerDayjs]=\"pickerDayjs\"\n [minDateTime]=\"picker.minDateTime\"\n [maxDateTime]=\"picker.maxDateTime\"\n [showSecondsTimer]=\"picker.showSecondsTimer\"\n [hour12Timer]=\"picker.hour12Timer\"\n [stepHour]=\"picker.stepHour\"\n [stepMinute]=\"picker.stepMinute\"\n [stepSecond]=\"picker.stepSecond\"\n (selectedChange)=\"timeSelected($event)\"></owl-date-time-timer>\n\n <div *ngIf=\"picker.isInRangeMode\"\n role=\"radiogroup\"\n class=\"owl-dt-container-info owl-dt-container-row\">\n <div role=\"radio\" [tabindex]=\"activeSelectedIndex === 0 ? 0 : -1\"\n [attr.aria-checked]=\"activeSelectedIndex === 0\"\n class=\"owl-dt-control owl-dt-container-range owl-dt-container-from\"\n [ngClass]=\"{'owl-dt-container-info-active': activeSelectedIndex === 0}\"\n (click)=\"handleClickOnInfoGroup($event, 0)\"\n (keydown)=\"handleKeydownOnInfoGroup($event, to, 0)\" #from>\n <span class=\"owl-dt-control-content owl-dt-container-range-content\" tabindex=\"-1\">\n <span class=\"owl-dt-container-info-label\">{{fromLabel}}:</span>\n <span class=\"owl-dt-container-info-value\">{{fromFormattedValue}}</span>\n </span>\n </div>\n <div role=\"radio\" [tabindex]=\"activeSelectedIndex === 1 ? 0 : -1\"\n [attr.aria-checked]=\"activeSelectedIndex === 1\"\n class=\"owl-dt-control owl-dt-container-range owl-dt-container-to\"\n [ngClass]=\"{'owl-dt-container-info-active': activeSelectedIndex === 1}\"\n (click)=\"handleClickOnInfoGroup($event, 1)\"\n (keydown)=\"handleKeydownOnInfoGroup($event, from, 1)\" #to>\n <span class=\"owl-dt-control-content owl-dt-container-range-content\" tabindex=\"-1\">\n <span class=\"owl-dt-container-info-label\">{{toLabel}}:</span>\n <span class=\"owl-dt-container-info-value\">{{toFormattedValue}}</span>\n </span>\n </div>\n </div>\n\n <div *ngIf=\"showControlButtons\" class=\"owl-dt-container-buttons owl-dt-container-row\">\n <button class=\"owl-dt-control owl-dt-control-button owl-dt-container-control-button\"\n type=\"button\" tabindex=\"0\"\n (click)=\"onCancelClicked($event)\">\n <span class=\"owl-dt-control-content owl-dt-control-button-content\" tabindex=\"-1\">\n {{cancelLabel}}\n </span>\n </button>\n <button class=\"owl-dt-control owl-dt-control-button owl-dt-container-control-button\"\n type=\"button\" tabindex=\"0\"\n (click)=\"onSetClicked($event)\">\n <span class=\"owl-dt-control-content owl-dt-control-button-content\" tabindex=\"-1\">\n {{setLabel}}\n </span>\n </button>\n </div>\n</div>\n","/**\n * date-time.class\n */\nimport { EventEmitter, Inject, Input, Optional, Directive } from '@angular/core';\nimport {\n coerceBooleanProperty,\n coerceNumberProperty\n} from '@angular/cdk/coercion';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport {\n OWL_DATE_TIME_FORMATS,\n OwlDateTimeFormats\n} from './adapter/date-time-format.class';\n\nlet nextUniqueId = 0;\n\nexport type PickerType = 'both' | 'calendar' | 'timer';\n\nexport type PickerMode = 'popup' | 'dialog' | 'inline';\n\nexport type SelectMode = 'single' | 'range' | 'rangeFrom' | 'rangeTo';\n\n@Directive()\nexport abstract class OwlDateTime<T> {\n /**\n * Whether to show the second's timer\n */\n private _showSecondsTimer = false;\n @Input()\n get showSecondsTimer(): boolean {\n return this._showSecondsTimer;\n }\n\n set showSecondsTimer(val: boolean) {\n this._showSecondsTimer = coerceBooleanProperty(val);\n }\n\n /**\n * Whether the timer is in hour12 format\n */\n private _hour12Timer = false;\n @Input()\n get hour12Timer(): boolean {\n return this._hour12Timer;\n }\n\n set hour12Timer(val: boolean) {\n this._hour12Timer = coerceBooleanProperty(val);\n }\n\n /**\n * The view that the calendar should start in.\n */\n @Input()\n startView: 'month' | 'year' | 'multi-years' = 'month';\n\n /**\n * Hours to change per step\n */\n private _stepHour = 1;\n @Input()\n get stepHour(): number {\n return this._stepHour;\n }\n\n set stepHour(val: number) {\n this._stepHour = coerceNumberProperty(val, 1);\n }\n\n /**\n * Minutes to change per step\n */\n private _stepMinute = 1;\n @Input()\n get stepMinute(): number {\n return this._stepMinute;\n }\n\n set stepMinute(val: number) {\n this._stepMinute = coerceNumberProperty(val, 1);\n }\n\n /**\n * Seconds to change per step\n */\n private _stepSecond = 1;\n @Input()\n get stepSecond(): number {\n return this._stepSecond;\n }\n\n set stepSecond(val: number) {\n this._stepSecond = coerceNumberProperty(val, 1);\n }\n\n /**\n * Set the first day of week\n */\n private _firstDayOfWeek = 0;\n @Input()\n get firstDayOfWeek() {\n return this._firstDayOfWeek;\n }\n\n set firstDayOfWeek(value: number) {\n value = coerceNumberProperty(value, 0);\n if (value > 6 || value < 0) {\n this._firstDayOfWeek = 0;\n } else {\n this._firstDayOfWeek = value;\n }\n }\n\n /**\n * Whether to hide dates in other months at the start or end of the current month.\n */\n private _hideOtherMonths = false;\n @Input()\n get hideOtherMonths(): boolean {\n return this._hideOtherMonths;\n }\n\n set hideOtherMonths(val: boolean) {\n this._hideOtherMonths = coerceBooleanProperty(val);\n }\n\n private _id: string;\n get id(): string {\n return this._id;\n }\n\n abstract get selected(): T | null;\n\n abstract get selecteds(): T[] | null;\n\n abstract get dateTimeFilter(): (date: T | null) => boolean;\n\n abstract get maxDateTime(): T | null;\n\n abstract get minDateTime(): T | null;\n\n abstract get selectMode(): SelectMode;\n\n abstract get startAt(): T | null;\n\n abstract get opened(): boolean;\n\n abstract get pickerMode(): PickerMode;\n\n abstract get pickerType(): PickerType;\n\n abstract get isInSingleMode(): boolean;\n\n abstract get isInRangeMode(): boolean;\n\n abstract select(date: T | T[]): void;\n\n abstract yearSelected: EventEmitter<T>;\n\n abstract monthSelected: EventEmitter<T>;\n\n abstract selectYear(normalizedYear: T): void;\n\n abstract selectMonth(normalizedMonth: T): void;\n\n get formatString(): string {\n return this.pickerType === 'both'\n ? this.dateTimeFormats.fullPickerInput\n : this.pickerType === 'calendar'\n ? this.dateTimeFormats.datePickerInput\n : this.dateTimeFormats.timePickerInput;\n }\n\n /**\n * Date Time Checker to check if the give dateTime is selectable\n */\n public dateTimeChecker = (dateTime: T) => {\n return (\n !!dateTime &&\n (!this.dateTimeFilter || this.dateTimeFilter(dateTime)) &&\n (!this.minDateTime ||\n this.dateTimeAdapter.compare(dateTime, this.minDateTime) >=\n 0) &&\n (!this.maxDateTime ||\n this.dateTimeAdapter.compare(dateTime, this.maxDateTime) <= 0)\n );\n };\n\n get disabled(): boolean {\n return false;\n }\n\n constructor(\n @Optional() protected dateTimeAdapter: DateTimeAdapter<T>,\n @Optional()\n @Inject(OWL_DATE_TIME_FORMATS)\n protected dateTimeFormats: OwlDateTimeFormats\n ) {\n if (!this.dateTimeAdapter) {\n throw Error(\n `OwlDateTimePicker: No provider found for DateTimeAdapter. You must import one of the following ` +\n `modules at your application root: OwlNativeDateTimeModule, OwlDayjsDateTimeModule, or provide a ` +\n `custom implementation.`\n );\n }\n\n if (!this.dateTimeFormats) {\n throw Error(\n `OwlDateTimePicker: No provider found for OWL_DATE_TIME_FORMATS. You must import one of the following ` +\n `modules at your application root: OwlNativeDateTimeModule, OwlDayjsDateTimeModule, or provide a ` +\n `custom implementation.`\n );\n }\n\n this._id = `owl-dt-picker-${nextUniqueId++}`;\n }\n\n protected getValidDate(obj: any): T | null {\n return this.dateTimeAdapter.isDateInstance(obj) &&\n this.dateTimeAdapter.isValid(obj)\n ? obj\n : null;\n }\n}\n","/**\n * dialog-config.class\n */\nimport { ViewContainerRef } from '@angular/core';\nimport { NoopScrollStrategy, ScrollStrategy } from '@angular/cdk/overlay';\n\nlet uniqueId = 0;\n\n/** Possible overrides for a dialog's position. */\nexport interface DialogPosition {\n /** Override for the dialog's top position. */\n top?: string;\n\n /** Override for the dialog's bottom position. */\n bottom?: string;\n\n /** Override for the dialog's left position. */\n left?: string;\n\n /** Override for the dialog's right position. */\n right?: string;\n}\n\nexport class OwlDialogConfig {\n /**\n * ID of the element that describes the dialog.\n */\n public ariaDescribedBy?: string | null = null;\n\n /**\n * Whether to focus the dialog when the dialog is opened\n */\n public autoFocus? = true;\n\n /** Whether the dialog has a backdrop. */\n public hasBackdrop? = true;\n\n /**\n * Custom style for the backdrop\n * */\n public backdropStyle?: any;\n\n /** Data being injected into the child component. */\n public data?: any = null;\n\n /** Whether the user can use escape or clicking outside to close a modal. */\n public disableClose? = false;\n\n /**\n * ID for the modal. If omitted, a unique one will be generated.\n */\n public id?: string;\n\n /**\n * The ARIA role of the dialog element.\n */\n public role?: 'dialog' | 'alertdialog' = 'dialog';\n\n /**\n * Custom class for the pane\n * */\n public paneClass?: string | string[] = '';\n\n /**\n * Mouse Event\n * */\n public event?: MouseEvent = null;\n\n /**\n * Custom class for the backdrop\n * */\n public backdropClass?: string | string[] = '';\n\n /**\n * Whether the dialog should close when the user goes backwards/forwards in history.\n * */\n public closeOnNavigation?: boolean = true;\n\n /** Width of the dialog. */\n public width?: string = '';\n\n /** Height of the dialog. */\n public height?: string = '';\n\n /**\n * The min-width of the overlay panel.\n * If a number is provided, pixel units are assumed.\n * */\n public minWidth?: number | string;\n\n /**\n * The min-height of the overlay panel.\n * If a number is provided, pixel units are assumed.\n * */\n public minHeight?: number | string;\n\n /**\n * The max-width of the overlay panel.\n * If a number is provided, pixel units are assumed.\n * */\n public maxWidth?: number | string = '85vw';\n\n /**\n * The max-height of the overlay panel.\n * If a number is provided, pixel units are assumed.\n * */\n public maxHeight?: number | string;\n\n /** Position overrides. */\n public position?: DialogPosition;\n\n /**\n * The scroll strategy when the dialog is open\n * Learn more this from https://material.angular.io/cdk/overlay/overview#scroll-strategies\n * */\n public scrollStrategy?: ScrollStrategy = new NoopScrollStrategy();\n\n public viewContainerRef?: ViewContainerRef;\n\n constructor() {\n this.id = `owl-dialog-${uniqueId++}`;\n }\n}\n","/**\n * dialog-ref.class\n */\nimport { AnimationEvent } from '@angular/animations';\nimport { Location } from '@angular/common';\nimport { GlobalPositionStrategy, OverlayRef } from '@angular/cdk/overlay';\nimport { ESCAPE } from '@angular/cdk/keycodes';\nimport { OwlDialogContainerComponent } from './dialog-container.component';\nimport { DialogPosition } from './dialog-config.class';\nimport { Observable, Subject, Subscription, SubscriptionLike as ISubscription } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\n\nexport class OwlDialogRef<T> {\n\n private result: any;\n\n private _beforeClose$ = new Subject<any>();\n\n private _afterOpen$ = new Subject<any>();\n\n private _afterClosed$ = new Subject<any>();\n\n /** Subscription to changes in the user's location. */\n private locationChanged: ISubscription = Subscription.EMPTY;\n\n /**\n * The instance of component opened into modal\n * */\n public componentInstance: T;\n\n /** Whether the user is allowed to close the dialog. */\n public disableClose = this.container.config.disableClose;\n\n constructor( private overlayRef: OverlayRef,\n private container: OwlDialogContainerComponent,\n public readonly id: string,\n location?: Location ) {\n\n this.container.animationStateChanged\n .pipe(\n filter(( event: AnimationEvent ) => event.phaseName === 'done' && event.toState === 'enter'),\n take(1)\n )\n .subscribe(() => {\n this._afterOpen$.next();\n this._afterOpen$.complete();\n });\n\n this.container.animationStateChanged\n .pipe(\n filter(( event: AnimationEvent ) => event.phaseName === 'done' && event.toState === 'exit'),\n take(1)\n )\n .subscribe(() => {\n this.overlayRef.dispose();\n this.locationChanged.unsubscribe();\n this._afterClosed$.next(this.result);\n this._afterClosed$.complete();\n this.componentInstance = null!;\n });\n\n this.overlayRef.keydownEvents()\n .pipe(filter(event => event.keyCode === ESCAPE && !this.disableClose))\n .subscribe(() => this.close());\n\n if (location) {\n this.locationChanged = location.subscribe(() => {\n if (this.container.config.closeOnNavigation) {\n this.close();\n }\n });\n }\n }\n\n public close( dialogResult?: any ) {\n this.result = dialogResult;\n\n this.container.animationStateChanged\n .pipe(\n filter(( event: AnimationEvent ) => event.phaseName === 'start'),\n take(1)\n )\n .subscribe(() => {\n this._beforeClose$.next(dialogResult);\n this._beforeClose$.complete();\n this.overlayRef.detachBackdrop();\n });\n\n this.container.startExitAnimation();\n }\n\n /**\n * Gets an observable that emits when the overlay's backdrop has been clicked.\n */\n public backdropClick(): Observable<any> {\n return this.overlayRef.backdropClick();\n }\n\n /**\n * Gets an observable that emits when keydown events are targeted on the overlay.\n */\n public keydownEvents(): Observable<KeyboardEvent> {\n return this.overlayRef.keydownEvents();\n }\n\n /**\n * Updates the dialog's position.\n * @param position New dialog position.\n */\n public updatePosition( position?: DialogPosition ): this {\n let strategy = this.getPositionStrategy();\n\n if (position && (position.left || position.right)) {\n position.left ? strategy.left(position.left) : strategy.right(position.right);\n } else {\n strategy.centerHorizontally();\n }\n\n if (position && (position.top || position.bottom)) {\n position.top ? strategy.top(position.top) : strategy.bottom(position.bottom);\n } else {\n strategy.centerVertically();\n }\n\n this.overlayRef.updatePosition();\n\n return this;\n }\n\n /**\n * Updates the dialog's width and height.\n * @param width New width of the dialog.\n * @param height New height of the dialog.\n */\n updateSize( width: string = 'auto', height: string = 'auto' ): this {\n this.getPositionStrategy().width(width).height(height);\n this.overlayRef.updatePosition();\n return this;\n }\n\n public isAnimating(): boolean {\n return this.container.isAnimating;\n }\n\n public afterOpen(): Observable<any> {\n return this._afterOpen$.asObservable();\n }\n\n public beforeClose(): Observable<any> {\n return this._beforeClose$.asObservable();\n }\n\n public afterClosed(): Observable<any> {\n return this._afterClosed$.asObservable();\n }\n\n /** Fetches the position strategy object from the overlay ref. */\n private getPositionStrategy(): GlobalPositionStrategy {\n return this.overlayRef.getConfig().positionStrategy as GlobalPositionStrategy;\n }\n}\n","/**\n * dialog-container.component\n */\n\nimport {\n ChangeDetectorRef,\n Component,\n ComponentRef,\n ElementRef,\n EmbeddedViewRef,\n EventEmitter,\n Inject,\n OnInit,\n Optional,\n ViewChild\n} from '@angular/core';\nimport {\n animate,\n animateChild,\n AnimationEvent,\n keyframes,\n style,\n transition,\n trigger\n} from '@angular/animations';\nimport { DOCUMENT } from '@angular/common';\nimport { FocusTrap, FocusTrapFactory } from '@angular/cdk/a11y';\nimport {\n BasePortalOutlet,\n CdkPortalOutlet,\n ComponentPortal,\n TemplatePortal\n} from '@angular/cdk/portal';\nimport { OwlDialogConfig } from './dialog-config.class';\n\nconst zoomFadeIn = {\n opacity: 0,\n transform: 'translateX({{ x }}) translateY({{ y }}) scale({{scale}})'\n};\nconst zoomFadeInFrom = {\n opacity: 0,\n transform: 'translateX({{ x }}) translateY({{ y }}) scale({{scale}})',\n transformOrigin: '{{ ox }} {{ oy }}'\n};\n\n@Component({\n selector: 'owl-dialog-container',\n templateUrl: './dialog-container.component.html',\n animations: [\n trigger('slideModal', [\n transition(\n 'void => enter',\n [\n style(zoomFadeInFrom),\n animate('300ms cubic-bezier(0.35, 0, 0.25, 1)', style('*')),\n animate(\n '150ms',\n keyframes([\n style({ transform: 'scale(1)', offset: 0 }),\n style({ transform: 'scale(1.05)', offset: 0.3 }),\n style({ transform: 'scale(.95)', offset: 0.8 }),\n style({ transform: 'scale(1)', offset: 1.0 })\n ])\n ),\n animateChild()\n ],\n {\n params: {\n x: '0px',\n y: '0px',\n ox: '50%',\n oy: '50%',\n scale: 1\n }\n }\n ),\n transition(\n 'enter => exit',\n [animateChild(), animate(200, style(zoomFadeIn))],\n { params: { x: '0px', y: '0px', ox: '50%', oy: '50%' } }\n )\n ])\n ],\n host: {\n '(@slideModal.start)': 'onAnimationStart($event)',\n '(@slideModal.done)': 'onAnimationDone($event)',\n '[class.owl-dialog-container]': 'owlDialogContainerClass',\n '[attr.tabindex]': 'owlDialogContainerTabIndex',\n '[attr.id]': 'owlDialogContainerId',\n '[attr.role]': 'owlDialogContainerRole',\n '[attr.aria-labelledby]': 'owlDialogContainerAriaLabelledby',\n '[attr.aria-describedby]': 'owlDialogContainerAriaDescribedby',\n '[@slideModal]': 'owlDialogContainerAnimation'\n }\n})\nexport class OwlDialogContainerComponent extends BasePortalOutlet\n implements OnInit {\n @ViewChild(CdkPortalOutlet, { static: true })\n portalOutlet: CdkPortalOutlet;\n\n /** The class that traps and manages focus within the dialog. */\n private focusTrap: FocusTrap;\n\n /** ID of the element that should be considered as the dialog's label. */\n public ariaLabelledBy: string | null = null;\n\n /** Emits when an animation state changes. */\n public animationStateChanged = new EventEmitter<AnimationEvent>();\n\n public isAnimating = false;\n\n private _config: OwlDialogConfig;\n get config(): OwlDialogConfig {\n return this._config;\n }\n\n private state: 'void' | 'enter' | 'exit' = 'enter';\n\n // for animation purpose\n private params: any = {\n x: '0px',\n y: '0px',\n ox: '50%',\n oy: '50%',\n scale: 0\n };\n\n // A variable to hold the focused element before the dialog was open.\n // This would help us to refocus back to element when the dialog was closed.\n private elementFocusedBeforeDialogWasOpened: HTMLElement | null = null;\n\n get owlDialogContainerClass(): boolean {\n return true;\n }\n\n get owlDialogContainerTabIndex(): number {\n return -1;\n }\n\n get owlDialogContainerId(): string {\n return this._config.id;\n }\n\n get owlDialogContainerRole(): string {\n return this._config.role || null;\n }\n\n get owlDialogContainerAriaLabelledby(): string {\n return this.ariaLabelledBy;\n }\n\n get owlDialogContainerAriaDescribedby(): string {\n return this._config.ariaDescribedBy || null;\n }\n\n get owlDialogContainerAnimation(): any {\n return { value: this.state, params: this.params };\n }\n\n constructor(\n private changeDetector: ChangeDetectorRef,\n private elementRef: ElementRef,\n private focusTrapFactory: FocusTrapFactory,\n @Optional()\n @Inject(DOCUMENT)\n private document: any\n ) {\n super();\n }\n\n public ngOnInit() {}\n\n /**\n * Attach a ComponentPortal as content to this dialog container.\n */\n public attachComponentPortal<T>(\n portal: ComponentPortal<T>\n ): ComponentRef<T> {\n if (this.portalOutlet.hasAttached()) {\n throw Error(\n 'Attempting to attach dialog content after content is already attached'\n );\n }\n\n this.savePreviouslyFocusedElement();\n return this.portalOutlet.attachComponentPortal(portal);\n }\n\n public attachTemplatePortal<C>(\n portal: TemplatePortal<C>\n ): EmbeddedViewRef<C> {\n throw new Error('Method not implemented.');\n }\n\n public setConfig(config: OwlDialogConfig): void {\n this._config = config;\n\n if (config.event) {\n this.calculateZoomOrigin(event);\n }\n }\n\n public onAnimationStart( event: AnimationEvent ): void {\n this.isAnimating = true;\n this.animationStateChanged.emit(event);\n }\n\n public onAnimationDone( event: AnimationEvent ): void {\n if (event.toState === 'enter') {\n this.trapFocus();\n } else if (event.toState === 'exit') {\n this.restoreFocus();\n }\n\n this.animationStateChanged.emit(event);\n this.isAnimating = false;\n }\n\n public startExitAnimation() {\n this.state = 'exit';\n this.changeDetector.markForCheck();\n }\n\n /**\n * Calculate origin used in the `zoomFadeInFrom()`\n * for animation purpose\n */\n private calculateZoomOrigin(event: any): void {\n if (!event) {\n return;\n }\n\n const clientX = event.clientX;\n const clientY = event.clientY;\n\n const wh = window.innerWidth / 2;\n const hh = window.innerHeight / 2;\n const x = clientX - wh;\n const y = clientY - hh;\n const ox = clientX / window.innerWidth;\n const oy = clientY / window.innerHeight;\n\n this.params.x = `${x}px`;\n this.params.y = `${y}px`;\n this.params.ox = `${ox * 100}%`;\n this.params.oy = `${oy * 100}%`;\n this.params.scale = 0;\n\n return;\n }\n\n /**\n * Save the focused element before dialog was open\n */\n private savePreviouslyFocusedElement(): void {\n if (this.document) {\n this.elementFocusedBeforeDialogWasOpened = this.document\n .activeElement as HTMLElement;\n\n Promise.resolve().then(() => this.elementRef.nativeElement.focus());\n }\n }\n\n private trapFocus(): void {\n if (!this.focusTrap) {\n this.focusTrap = this.focusTrapFactory.create(\n this.elementRef.nativeElement\n );\n }\n\n if (this._config.autoFocus) {\n this.focusTrap.focusInitialElementWhenReady();\n }\n }\n\n private restoreFocus(): void {\n const toFocus = this.elementFocusedBeforeDialogWasOpened;\n\n // We need the extra check, because IE can set the `activeElement` to null in some cases.\n if (toFocus && typeof toFocus.focus === 'function') {\n toFocus.focus();\n }\n\n if (this.focusTrap) {\n this.focusTrap.destroy();\n }\n }\n}\n","<ng-template cdkPortalOutlet></ng-template>\n","/**\n * object.utils\n */\n\n\n/**\n * Extends an object with the *enumerable* and *own* properties of one or more source objects,\n * similar to Object.assign.\n *\n * @param dest The object which will have properties copied to it.\n * @param sources The source objects from which properties will be copied.\n */\nexport function extendObject(dest: any, ...sources: any[]): any {\n if (dest == null) {\n throw TypeError('Cannot convert undefined or null to object');\n }\n\n for (const source of sources) {\n if (source != null) {\n for (const key in source) {\n if (source.hasOwnProperty(key)) {\n dest[key] = source[key];\n }\n }\n }\n }\n\n return dest;\n}\n","/**\n * index\n */\n\nexport * from './object.utils';\n","/**\n * dialog.service\n */\n\nimport {\n ComponentRef,\n Inject,\n Injectable,\n InjectionToken,\n Injector,\n Optional,\n SkipSelf,\n TemplateRef\n} from '@angular/core';\nimport { Location } from '@angular/common';\nimport { OwlDialogConfig } from './dialog-config.class';\nimport { OwlDialogRef } from './dialog-ref.class';\nimport { OwlDialogContainerComponent } from './dialog-container.component';\nimport { extendObject } from '../utils';\nimport { defer, Observable, Subject } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\nimport {\n Overlay,\n OverlayConfig,\n OverlayContainer,\n OverlayRef,\n ScrollStrategy\n} from '@angular/cdk/overlay';\nimport {\n ComponentPortal,\n ComponentType,\n PortalInjector\n} from '@angular/cdk/portal';\n\nexport const OWL_DIALOG_DATA = new InjectionToken<any>('OwlDialogData');\n\n/**\n * Injection token that determines the scroll handling while the dialog is open.\n * */\nexport const OWL_DIALOG_SCROLL_STRATEGY = new InjectionToken<\n () => ScrollStrategy\n>('owl-dialog-scroll-strategy');\n\nexport function OWL_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY(\n overlay: Overlay\n): () => ScrollStrategy {\n const fn = () => overlay.scrollStrategies.block();\n return fn;\n}\n\n/** @docs-private */\nexport const OWL_DIALOG_SCROLL_STRATEGY_PROVIDER = {\n provide: OWL_DIALOG_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: OWL_DIALOG_SCROLL_STRATEGY_PROVIDER_FACTORY\n};\n\n/** I\n * njection token that can be used to specify default dialog options.\n * */\nexport const OWL_DIALOG_DEFAULT_OPTIONS = new InjectionToken<OwlDialogConfig>(\n 'owl-dialog-default-options'\n);\n\n@Injectable()\nexport class OwlDialogService {\n private ariaHiddenElements = new Map<Element, string | null>();\n\n private _openDialogsAtThisLevel: OwlDialogRef<any>[] = [];\n private _afterOpenAtThisLevel = new Subject<OwlDialogRef<any>>();\n private _afterAllClosedAtThisLevel = new Subject<void>();\n\n /** Keeps track of the currently-open dialogs. */\n get openDialogs(): OwlDialogRef<any>[] {\n return this.parentDialog\n ? this.parentDialog.openDialogs\n : this._openDialogsAtThisLevel;\n }\n\n /** Stream that emits when a dialog has been opened. */\n get afterOpen(): Subject<OwlDialogRef<any>> {\n return this.parentDialog\n ? this.parentDialog.afterOpen\n : this._afterOpenAtThisLevel;\n }\n\n get _afterAllClosed(): any {\n const parent = this.parentDialog;\n return parent\n ? parent._afterAllClosed\n : this._afterAllClosedAtThisLevel;\n }\n\n /**\n * Stream that emits when all open dialog have finished closing.\n * Will emit on subscribe if there are no open dialogs to begin with.\n */\n\n afterAllClosed: Observable<{}> = defer(\n () =>\n this._openDialogsAtThisLevel.length\n ? this._afterAllClosed\n : this._afterAllClosed.pipe(startWith(undefined))\n );\n\n private scrollStrategy: () => ScrollStrategy;\n\n constructor(\n private overlay: Overlay,\n private injector: Injector,\n @Optional() private location: Location,\n @Inject(OWL_DIALOG_SCROLL_STRATEGY) scrollStrategy: any,\n @Optional()\n @Inject(OWL_DIALOG_DEFAULT_OPTIONS)\n private defaultOptions: OwlDialogConfig,\n @Optional()\n @SkipSelf()\n private parentDialog: OwlDialogService,\n private overlayContainer: OverlayContainer\n ) {\n this.scrollStrategy = scrollStrategy;\n if (!parentDialog && location) {\n location.subscribe(() => this.closeAll());\n }\n }\n\n public open<T>(\n componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n config?: OwlDialogConfig\n ): OwlDialogRef<any> {\n config = applyConfigDefaults(config, this.defaultOptions);\n\n if (config.id && this.getDialogById(config.id)) {\n throw Error(\n `Dialog with id \"${\n config.id\n }\" exists already. The dialog id must be unique.`\n );\n }\n\n const overlayRef = this.createOverlay(config);\n const dialogContainer = this.attachDialogContainer(overlayRef, config);\n const dialogRef = this.attachDialogContent<T>(\n componentOrTemplateRef,\n dialogContainer,\n overlayRef,\n config\n );\n\n if (!this.openDialogs.length) {\n this.hideNonDialogContentFromAssistiveTechnology();\n }\n\n this.openDialogs.push(dialogRef);\n dialogRef\n .afterClosed()\n .subscribe(() => this.removeOpenDialog(dialogRef));\n this.afterOpen.next(dialogRef);\n return dialogRef;\n }\n\n /**\n * Closes all of the currently-open dialogs.\n */\n public closeAll(): void {\n let i = this.openDialogs.length;\n\n while (i--) {\n this.openDialogs[i].close();\n }\n }\n\n /**\n * Finds an open dialog by its id.\n * @param id ID to use when looking up the dialog.\n */\n public getDialogById(id: string): OwlDialogRef<any> | undefined {\n return this.openDialogs.find(dialog => dialog.id === id);\n }\n\n private attachDialogContent<T>(\n componentOrTemplateRef: ComponentType<T> | TemplateRef<T>,\n dialogContainer: OwlDialogContainerComponent,\n overlayRef: OverlayRef,\n config: OwlDialogConfig\n ) {\n const dialogRef = new OwlDialogRef<T>(\n overlayRef,\n dialogContainer,\n config.id,\n this.location\n );\n\n if (config.hasBackdrop) {\n overlayRef.backdropClick().subscribe(() => {\n if (!dialogRef.disableClose) {\n dialogRef.close();\n }\n });\n }\n\n if (componentOrTemplateRef instanceof TemplateRef) {\n } else {\n const injector = this.createInjector<T>(\n config,\n dialogRef,\n dialogContainer\n );\n const contentRef = dialogContainer.attachComponentPortal(\n new ComponentPortal(componentOrTemplateRef, undefined, injector)\n );\n dialogRef.componentInstance = contentRef.instance;\n }\n\n dialogRef\n .updateSize(config.width, config.height)\n .updatePosition(config.position);\n\n return dialogRef;\n }\n\n private createInjector<T>(\n config: OwlDialogConfig,\n dialogRef: OwlDialogRef<T>,\n dialogContainer: OwlDialogContainerComponent\n ) {\n const userInjector =\n config &&\n config.viewContainerRef &&\n config.viewContainerRef.injector;\n const injectionTokens = new WeakMap();\n\n injectionTokens.set(OwlDialogRef, dialogRef);\n injectionTokens.set(OwlDialogContainerComponent, dialogContainer);\n injectionTokens.set(OWL_DIALOG_DATA, config.data);\n\n return new PortalInjector(\n userInjector || this.injector,\n injectionTokens\n );\n }\n\n private createOverlay(config: OwlDialogConfig): OverlayRef {\n const overlayConfig = this.getOverlayConfig(config);\n return this.overlay.create(overlayConfig);\n }\n\n private attachDialogContainer(\n overlayRef: OverlayRef,\n config: OwlDialogConfig\n ): OwlDialogContainerComponent {\n const containerPortal = new ComponentPortal(\n OwlDialogContainerComponent,\n config.viewContainerRef\n );\n const containerRef: ComponentRef<\n OwlDialogContainerComponent\n > = overlayRef.attach(containerPortal);\n containerRef.instance.setConfig(config);\n\n return containerRef.instance;\n }\n\n private getOverlayConfig(dialogConfig: OwlDialogConfig): OverlayConfig {\n const state = new OverlayConfig({\n positionStrategy: this.overlay.position().global(),\n scrollStrategy:\n dialogConfig.scrollStrategy || this.scrollStrategy(),\n panelClass: dialogConfig.paneClass,\n hasBackdrop: dialogConfig.hasBackdrop,\n minWidth: dialogConfig.minWidth,\n minHeight: dialogConfig.minHeight,\n maxWidth: dialogConfig.maxWidth,\n maxHeight: dialogConfig.maxHeight\n });\n\n if (dialogConfig.backdropClass) {\n state.backdropClass = dialogConfig.backdropClass;\n }\n\n return state;\n }\n\n private removeOpenDialog(dialogRef: OwlDialogRef<any>): void {\n const index = this._openDialogsAtThisLevel.indexOf(dialogRef);\n\n if (index > -1) {\n this.openDialogs.splice(index, 1);\n // If all the dialogs were closed, remove/restore the `aria-hidden`\n // to a the siblings and emit to the `afterAllClosed` stream.\n if (!this.openDialogs.length) {\n this.ariaHiddenElements.forEach((previousValue, element) => {\n if (previousValue) {\n element.setAttribute('aria-hidden', previousValue);\n } else {\n element.removeAttribute('aria-hidden');\n }\n });\n\n this.ariaHiddenElements.clear();\n this._afterAllClosed.next();\n }\n }\n }\n\n /**\n * Hides all of the content that isn't an overlay from assistive technology.\n */\n private hideNonDialogContentFromAssistiveTechnology() {\n const overlayContainer = this.overlayContainer.getContainerElement();\n\n // Ensure that the overlay container is attached to the DOM.\n if (overlayContainer.parentElement) {\n const siblings = overlayContainer.parentElement.children;\n\n for (let i = siblings.length - 1; i > -1; i--) {\n let sibling = siblings[i];\n\n if (\n sibling !== overlayContainer &&\n sibling.nodeName !== 'SCRIPT' &&\n sibling.nodeName !== 'STYLE' &&\n !sibling.hasAttribute('aria-live')\n ) {\n this.ariaHiddenElements.set(\n sibling,\n sibling.getAttribute('aria-hidden')\n );\n sibling.setAttribute('aria-hidden', 'true');\n }\n }\n }\n }\n}\n\n/**\n * Applies default options to the dialog config.\n * @param config Config to be modified.\n * @param defaultOptions Default config setting\n * @returns The new configuration object.\n */\nfunction applyConfigDefaults(\n config?: OwlDialogConfig,\n defaultOptions?: OwlDialogConfig\n): OwlDialogConfig {\n return extendObject(new OwlDialogConfig(), config, defaultOptions);\n}\n","/**\n * date-time-picker.component\n */\n\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ComponentRef,\n EventEmitter,\n Inject,\n InjectionToken,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n ViewContainerRef\n} from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n BlockScrollStrategy,\n Overlay,\n OverlayConfig,\n OverlayRef,\n PositionStrategy,\n ScrollStrategy\n} from '@angular/cdk/overlay';\nimport { ESCAPE, UP_ARROW } from '@angular/cdk/keycodes';\nimport { coerceArray, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { OwlDateTimeContainerComponent } from './date-time-picker-container.component';\nimport { OwlDateTimeInputDirective } from './date-time-picker-input.directive';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport {\n OWL_DATE_TIME_FORMATS,\n OwlDateTimeFormats\n} from './adapter/date-time-format.class';\nimport {\n OwlDateTime,\n PickerMode,\n PickerType,\n SelectMode\n} from './date-time.class';\nimport { OwlDialogRef } from '../dialog/dialog-ref.class';\nimport { OwlDialogService } from '../dialog/dialog.service';\nimport { merge, Subscription } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\n\n/** Injection token that determines the scroll handling while the dtPicker is open. */\nexport const OWL_DTPICKER_SCROLL_STRATEGY = new InjectionToken<\n () => ScrollStrategy\n>('owl-dtpicker-scroll-strategy');\n\n/** @docs-private */\nexport function OWL_DTPICKER_SCROLL_STRATEGY_PROVIDER_FACTORY(\n overlay: Overlay\n): () => BlockScrollStrategy {\n const fn = () => overlay.scrollStrategies.block();\n return fn;\n}\n\n/** @docs-private */\nexport const OWL_DTPICKER_SCROLL_STRATEGY_PROVIDER = {\n provide: OWL_DTPICKER_SCROLL_STRATEGY,\n deps: [Overlay],\n useFactory: OWL_DTPICKER_SCROLL_STRATEGY_PROVIDER_FACTORY\n};\n\n@Component({\n selector: 'owl-date-time',\n exportAs: 'owlDateTime',\n templateUrl: './date-time-picker.component.html',\n styleUrls: ['./date-time-picker.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false\n})\nexport class OwlDateTimeComponent<T> extends OwlDateTime<T>\n implements OnInit, OnDestroy {\n /** Custom class for the picker backdrop. */\n @Input()\n public backdropClass: string | string[] = [];\n\n /** Custom class for the picker overlay pane. */\n @Input()\n public panelClass: string | string[] = [];\n\n /** The date to open the calendar to initially. */\n private _startAt: T | null;\n @Input()\n get startAt(): T | null {\n // If an explicit startAt is set we start there, otherwise we start at whatever the currently\n // selected value is.\n if (this._startAt) {\n return this._startAt;\n }\n\n if (this._dtInput) {\n if (this._dtInput.selectMode === 'single') {\n return this._dtInput.value || null;\n } else if (\n this._dtInput.selectMode === 'range' ||\n this._dtInput.selectMode === 'rangeFrom'\n ) {\n return this._dtInput.values[0] || null;\n } else if (this._dtInput.selectMode === 'rangeTo') {\n return this._dtInput.values[1] || null;\n }\n } else {\n return null;\n }\n }\n\n set startAt(date: T | null) {\n this._startAt = this.getValidDate(\n this.dateTimeAdapter.deserialize(date)\n );\n }\n\n /**\n * Set the type of the dateTime picker\n * 'both' -- show both calendar and timer\n * 'calendar' -- show only calendar\n * 'timer' -- show only timer\n */\n private _pickerType: PickerType = 'both';\n @Input()\n get pickerType(): PickerType {\n return this._pickerType;\n }\n\n set pickerType(val: PickerType) {\n if (val !== this._pickerType) {\n this._pickerType = val;\n if (this._dtInput) {\n this._dtInput.formatNativeInputValue();\n }\n }\n }\n\n /**\n * Whether the picker open as a dialog\n */\n _pickerMode: PickerMode = 'popup';\n @Input()\n get pickerMode() {\n return this._pickerMode;\n }\n\n set pickerMode(mode: PickerMode) {\n if (mode === 'popup') {\n this._pickerMode = mode;\n } else {\n this._pickerMode = 'dialog';\n }\n }\n\n /** Whether the date time picker should be disabled. */\n private _disabled: boolean;\n @Input()\n get disabled(): boolean {\n return this._disabled === undefined && this._dtInput\n ? this._dtInput.disabled\n : !!this._disabled;\n }\n\n set disabled(value: boolean) {\n value = coerceBooleanProperty(value);\n if (value !== this._disabled) {\n this._disabled = value;\n this.disabledChange.next(value);\n }\n }\n\n /** Whether the calendar is open. */\n private _opened: boolean = false;\n @Input()\n get opened(): boolean {\n return this._opened;\n }\n\n set opened(val: boolean) {\n val ? this.open() : this.close();\n }\n\n /**\n * The scroll strategy when the picker is open\n * Learn more this from https://material.angular.io/cdk/overlay/overview#scroll-strategies\n * */\n @Input()\n public scrollStrategy: ScrollStrategy;\n\n /**\n * Callback when the picker is closed\n * */\n @Output()\n afterPickerClosed = new EventEmitter<any>();\n\n /**\n * Callback when the picker is open\n * */\n @Output()\n afterPickerOpen = new EventEmitter<any>();\n\n /**\n * Emits selected year in multi-year view\n * This doesn't imply a change on the selected date.\n * */\n @Output()\n yearSelected = new EventEmitter<T>();\n\n /**\n * Emits selected month in year view\n * This doesn't imply a change on the selected date.\n * */\n @Output()\n monthSelected = new EventEmitter<T>();\n\n /**\n * Emit when the selected value has been confirmed\n * */\n public confirmSelectedChange = new EventEmitter<T[] | T>();\n\n /**\n * Emits when the date time picker is disabled.\n * */\n public disabledChange = new EventEmitter<boolean>();\n\n private pickerContainerPortal: ComponentPortal<\n OwlDateTimeContainerComponent<T>\n >;\n private pickerContainer: OwlDateTimeContainerComponent<T>;\n private popupRef: OverlayRef;\n private dialogRef: OwlDialogRef<OwlDateTimeContainerComponent<T>>;\n private dtInputSub = Subscription.EMPTY;\n private hidePickerStreamSub = Subscription.EMPTY;\n private confirmSelectedStreamSub = Subscription.EMPTY;\n private pickerOpenedStreamSub = Subscription.EMPTY;\n\n /** The element that was focused before the date time picker was opened. */\n private focusedElementBeforeOpen: HTMLElement | null = null;\n\n private _dtInput: OwlDateTimeInputDirective<T>;\n get dtInput() {\n return this._dtInput;\n }\n\n private _selected: T | null;\n get selected() {\n return this._selected;\n }\n\n set selected(value: T | null) {\n this._selected = value;\n this.changeDetector.markForCheck();\n }\n\n private _selecteds: T[] = [];\n get selecteds() {\n return this._selecteds;\n }\n\n set selecteds(values: T[]) {\n this._selecteds = values;\n this.changeDetector.markForCheck();\n }\n\n /** The minimum selectable date. */\n get minDateTime(): T | null {\n return this._dtInput && this._dtInput.min;\n }\n\n /** The maximum selectable date. */\n get maxDateTime(): T | null {\n return this._dtInput && this._dtInput.max;\n }\n\n get dateTimeFilter(): (date: T | null) => boolean {\n return this._dtInput && this._dtInput.dateTimeFilter;\n }\n\n get selectMode(): SelectMode {\n return this._dtInput.selectMode;\n }\n\n get isInSingleMode(): boolean {\n return this._dtInput.isInSingleMode;\n }\n\n get isInRangeMode(): boolean {\n return this._dtInput.isInRangeMode;\n }\n\n private defaultScrollStrategy: () => ScrollStrategy;\n\n constructor(\n private overlay: Overlay,\n private viewContainerRef: ViewContainerRef,\n private dialogService: OwlDialogService,\n private ngZone: NgZone,\n protected changeDetector: ChangeDetectorRef,\n @Optional() protected dateTimeAdapter: DateTimeAdapter<T>,\n @Inject(OWL_DTPICKER_SCROLL_STRATEGY) defaultScrollStrategy: any,\n @Optional()\n @Inject(OWL_DATE_TIME_FORMATS)\n protected dateTimeFormats: OwlDateTimeFormats,\n @Optional()\n @Inject(DOCUMENT)\n private document: any\n ) {\n super(dateTimeAdapter, dateTimeFormats);\n this.defaultScrollStrategy = defaultScrollStrategy;\n }\n\n public ngOnInit() {}\n\n public ngOnDestroy(): void {\n this.close();\n this.dtInputSub.unsubscribe();\n this.disabledChange.complete();\n\n if (this.popupRef) {\n this.popupRef.dispose();\n }\n }\n\n public registerInput(input: OwlDateTimeInputDirective<T>): void {\n if (this._dtInput) {\n throw Error(\n 'A Owl DateTimePicker can only be associated with a single input.'\n );\n }\n\n this._dtInput = input;\n this.dtInputSub = this._dtInput.valueChange.subscribe(\n (value: T[] | T | null) => {\n if (Array.isArray(value)) {\n this.selecteds = value;\n } else {\n this.selected = value;\n }\n }\n );\n }\n\n public open(): void {\n if (this._opened || this.disabled) {\n return;\n }\n\n if (!this._dtInput) {\n throw Error(\n 'Attempted to open an DateTimePicker with no associated input.'\n );\n }\n\n if (this.document) {\n this.focusedElementBeforeOpen = this.document.activeElement;\n }\n\n // reset the picker selected value\n if (this.isInSingleMode) {\n this.selected = this._dtInput.value;\n } else if (this.isInRangeMode) {\n this.selecteds = this._dtInput.values;\n }\n\n // when the picker is open , we make sure the picker's current selected time value\n // is the same as the _startAt time value.\n if (this.selected && this.pickerType !== 'calendar' && this._startAt) {\n this.selected = this.dateTimeAdapter.createDate(\n this.dateTimeAdapter.getYear(this.selected),\n this.dateTimeAdapter.getMonth(this.selected),\n this.dateTimeAdapter.getDate(this.selected),\n this.dateTimeAdapter.getHours(this._startAt),\n this.dateTimeAdapter.getMinutes(this._startAt),\n this.dateTimeAdapter.getSeconds(this._startAt)\n );\n }\n\n this.pickerMode === 'dialog' ? this.openAsDialog() : this.openAsPopup();\n\n this.pickerContainer.picker = this;\n\n // Listen to picker container's hidePickerStream\n this.hidePickerStreamSub = this.pickerContainer.hidePickerStream.subscribe(\n () => {\n this.close();\n }\n );\n\n // Listen to picker container's confirmSelectedStream\n this.confirmSelectedStreamSub = this.pickerContainer.confirmSelectedStream.subscribe(\n (event: any) => {\n this.confirmSelect(event);\n }\n );\n }\n\n /**\n * Selects the given date\n */\n public select(date: T[] | T): void {\n if (Array.isArray(date)) {\n this.selecteds = [...date];\n } else {\n this.selected = date;\n }\n\n /**\n * Cases in which automatically confirm the select when date or dates are selected:\n * 1) picker mode is NOT 'dialog'\n * 2) picker type is 'calendar' and selectMode is 'single'.\n * 3) picker type is 'calendar' and selectMode is 'range' and\n * the 'selecteds' has 'from'(selecteds[0]) and 'to'(selecteds[1]) values.\n * 4) selectMode is 'rangeFrom' and selecteds[0] has value.\n * 5) selectMode is 'rangeTo' and selecteds[1] has value.\n * */\n if (\n this.pickerMode !== 'dialog' &&\n this.pickerType === 'calendar' &&\n ((this.selectMode === 'single' && this.selected) ||\n (this.selectMode === 'rangeFrom' && this.selecteds[0]) ||\n (this.selectMode === 'rangeTo' && this.selecteds[1]) ||\n (this.selectMode === 'range' &&\n this.selecteds[0] &&\n this.selecteds[1]))\n ) {\n this.confirmSelect();\n }\n }\n\n /**\n * Emits the selected year in multi-year view\n * */\n public selectYear(normalizedYear: T): void {\n this.yearSelected.emit(normalizedYear);\n }\n\n /**\n * Emits selected month in year view\n * */\n public selectMonth(normalizedMonth: T): void {\n this.monthSelected.emit(normalizedMonth);\n }\n\n /**\n * Hide the picker\n */\n public close(): void {\n if (!this._opened) {\n return;\n }\n\n if (this.popupRef && this.popupRef.hasAttached()) {\n this.popupRef.detach();\n }\n\n if (\n this.pickerContainerPortal &&\n this.pickerContainerPortal.isAttached\n ) {\n this.pickerContainerPortal.detach();\n }\n\n if (this.hidePickerStreamSub) {\n this.hidePickerStreamSub.unsubscribe();\n this.hidePickerStreamSub = null;\n }\n\n if (this.confirmSelectedStreamSub) {\n this.confirmSelectedStreamSub.unsubscribe();\n this.confirmSelectedStreamSub = null;\n }\n\n if (this.pickerOpenedStreamSub) {\n this.pickerOpenedStreamSub.unsubscribe();\n this.pickerOpenedStreamSub = null;\n }\n\n if (this.dialogRef) {\n this.dialogRef.close();\n this.dialogRef = null;\n }\n\n const completeClose = () => {\n if (this._opened) {\n this._opened = false;\n this.afterPickerClosed.emit(null);\n this.focusedElementBeforeOpen = null;\n }\n };\n\n if (\n this.focusedElementBeforeOpen &&\n typeof this.focusedElementBeforeOpen.focus === 'function'\n ) {\n // Because IE moves focus asynchronously, we can't count on it being restored before we've\n // marked the datepicker as closed. If the event fires out of sequence and the element that\n // we're refocusing opens the datepicker on focus, the user could be stuck with not being\n // able to close the calendar at all. We work around it by making the logic, that marks\n // the datepicker as closed, async as well.\n this.focusedElementBeforeOpen.focus();\n setTimeout(completeClose);\n } else {\n completeClose();\n }\n }\n\n /**\n * Confirm the selected value\n */\n public confirmSelect(event?: any): void {\n if (this.isInSingleMode) {\n const selected =\n this.selected || this.startAt || this.dateTimeAdapter.now();\n this.confirmSelectedChange.emit(selected);\n } else if (this.isInRangeMode) {\n this.confirmSelectedChange.emit(this.selecteds);\n }\n\n this.close();\n return;\n }\n\n /**\n * Open the picker as a dialog\n */\n private openAsDialog(): void {\n this.dialogRef = this.dialogService.open(\n OwlDateTimeContainerComponent,\n {\n autoFocus: false,\n backdropClass: [\n 'cdk-overlay-dark-backdrop',\n ...coerceArray(this.backdropClass)\n ],\n paneClass: ['owl-dt-dialog', ...coerceArray(this.panelClass)],\n viewContainerRef: this.viewContainerRef,\n scrollStrategy:\n this.scrollStrategy || this.defaultScrollStrategy()\n }\n );\n this.pickerContainer = this.dialogRef.componentInstance;\n\n this.dialogRef.afterOpen().subscribe(() => {\n this.afterPickerOpen.emit(null);\n this._opened = true;\n });\n this.dialogRef.afterClosed().subscribe(() => this.close());\n }\n\n /**\n * Open the picker as popup\n */\n private openAsPopup(): void {\n if (!this.pickerContainerPortal) {\n this.pickerContainerPortal = new ComponentPortal<\n OwlDateTimeContainerComponent<T>\n >(OwlDateTimeContainerComponent, this.viewContainerRef);\n }\n\n if (!this.popupRef) {\n this.createPopup();\n }\n\n if (!this.popupRef.hasAttached()) {\n const componentRef: ComponentRef<\n OwlDateTimeContainerComponent<T>\n > = this.popupRef.attach(this.pickerContainerPortal);\n this.pickerContainer = componentRef.instance;\n\n // Update the position once the calendar has rendered.\n this.ngZone.onStable\n .asObservable()\n .pipe(take(1))\n .subscribe(() => {\n this.popupRef.updatePosition();\n });\n\n // emit open stream\n this.pickerOpenedStreamSub = this.pickerContainer.pickerOpenedStream\n .pipe(take(1))\n .subscribe(() => {\n this.afterPickerOpen.emit(null);\n this._opened = true;\n });\n }\n }\n\n private createPopup(): void {\n const overlayConfig = new OverlayConfig({\n positionStrategy: this.createPopupPositionStrategy(),\n hasBackdrop: true,\n backdropClass: [\n 'cdk-overlay-transparent-backdrop',\n ...coerceArray(this.backdropClass)\n ],\n scrollStrategy: this.scrollStrategy || this.defaultScrollStrategy(),\n panelClass: ['owl-dt-popup', ...coerceArray(this.panelClass)]\n });\n\n this.popupRef = this.overlay.create(overlayConfig);\n\n merge(\n this.popupRef.backdropClick(),\n this.popupRef.detachments(),\n this.popupRef\n .keydownEvents()\n .pipe(\n filter(\n event =>\n event.keyCode === ESCAPE ||\n (this._dtInput &&\n event.altKey &&\n event.keyCode === UP_ARROW)\n )\n )\n ).subscribe(() => this.close());\n }\n\n /**\n * Create the popup PositionStrategy.\n * */\n private createPopupPositionStrategy(): PositionStrategy {\n return this.overlay\n .position()\n .flexibleConnectedTo(this._dtInput.elementRef)\n .withTransformOriginOn('.owl-dt-container')\n .withFlexibleDimensions(false)\n .withPush(false)\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom'\n },\n {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top'\n },\n {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom'\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: -176\n },\n {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'top',\n offsetY: -352\n }\n ]);\n }\n}\n","","/**\n * date-time-picker-input.directive\n */\n\nimport {\n AfterContentInit,\n Directive,\n ElementRef,\n EventEmitter,\n forwardRef,\n Inject,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Renderer2\n} from '@angular/core';\nimport {\n AbstractControl,\n ControlValueAccessor,\n NG_VALIDATORS,\n NG_VALUE_ACCESSOR,\n ValidationErrors,\n Validator,\n ValidatorFn,\n Validators\n} from '@angular/forms';\nimport { DOWN_ARROW } from '@angular/cdk/keycodes';\nimport { OwlDateTimeComponent } from './date-time-picker.component';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport {\n OWL_DATE_TIME_FORMATS,\n OwlDateTimeFormats\n} from './adapter/date-time-format.class';\nimport { Subscription } from 'rxjs';\nimport { SelectMode } from './date-time.class';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\n\nexport const OWL_DATETIME_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => OwlDateTimeInputDirective),\n multi: true\n};\n\nexport const OWL_DATETIME_VALIDATORS: any = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => OwlDateTimeInputDirective),\n multi: true\n};\n\n@Directive({\n selector: 'input[owlDateTime]',\n exportAs: 'owlDateTimeInput',\n host: {\n '(keydown)': 'handleKeydownOnHost($event)',\n '(blur)': 'handleBlurOnHost($event)',\n '(input)': 'handleInputOnHost($event)',\n '(change)': 'handleChangeOnHost($event)',\n '[attr.aria-haspopup]': 'owlDateTimeInputAriaHaspopup',\n '[attr.aria-owns]': 'owlDateTimeInputAriaOwns',\n '[attr.min]': 'minIso8601',\n '[attr.max]': 'maxIso8601',\n '[disabled]': 'owlDateTimeInputDisabled'\n },\n providers: [\n OWL_DATETIME_VALUE_ACCESSOR,\n OWL_DATETIME_VALIDATORS,\n ],\n})\nexport class OwlDateTimeInputDirective<T>\n implements\n OnInit,\n AfterContentInit,\n OnDestroy,\n ControlValueAccessor,\n Validator {\n /**\n * The date time picker that this input is associated with.\n * */\n @Input()\n set owlDateTime(value: OwlDateTimeComponent<T>) {\n this.registerDateTimePicker(value);\n }\n\n /**\n * A function to filter date time\n */\n @Input()\n set owlDateTimeFilter(filter: (date: T | null) => boolean) {\n this._dateTimeFilter = filter;\n this.validatorOnChange();\n }\n\n private _dateTimeFilter: (date: T | null) => boolean;\n get dateTimeFilter() {\n return this._dateTimeFilter;\n }\n\n /** Whether the date time picker's input is disabled. */\n @Input()\n private _disabled: boolean;\n get disabled() {\n return !!this._disabled;\n }\n\n set disabled(value: boolean) {\n const newValue = coerceBooleanProperty(value);\n const element = this.elmRef.nativeElement;\n\n if (this._disabled !== newValue) {\n this._disabled = newValue;\n this.disabledChange.emit(newValue);\n }\n\n // We need to null check the `blur` method, because it's undefined during SSR.\n if (newValue && element.blur) {\n // Normally, native input elements automatically blur if they turn disabled. This behavior\n // is problematic, because it would mean that it triggers another change detection cycle,\n // which then causes a changed after checked error if the input element was focused before.\n element.blur();\n }\n }\n\n /** The minimum valid date. */\n private _min: T | null;\n @Input()\n get min(): T | null {\n return this._min;\n }\n\n set min(value: T | null) {\n this._min = this.getValidDate(this.dateTimeAdapter.deserialize(value));\n this.validatorOnChange();\n }\n\n /** The maximum valid date. */\n private _max: T | null;\n @Input()\n get max(): T | null {\n return this._max;\n }\n\n set max(value: T | null) {\n this._max = this.getValidDate(this.dateTimeAdapter.deserialize(value));\n this.validatorOnChange();\n }\n\n /**\n * The picker's select mode\n */\n private _selectMode: SelectMode = 'single';\n @Input()\n get selectMode() {\n return this._selectMode;\n }\n\n set selectMode(mode: SelectMode) {\n if (\n mode !== 'single' &&\n mode !== 'range' &&\n mode !== 'rangeFrom' &&\n mode !== 'rangeTo'\n ) {\n throw Error('OwlDateTime Error: invalid selectMode value!');\n }\n\n this._selectMode = mode;\n }\n\n /**\n * The character to separate the 'from' and 'to' in input value\n */\n @Input()\n rangeSeparator = '~';\n\n private _value: T | null;\n @Input()\n get value() {\n return this._value;\n }\n\n set value(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n this.lastValueValid = !value || this.dateTimeAdapter.isValid(value);\n value = this.getValidDate(value);\n const oldDate = this._value;\n this._value = value;\n\n // set the input property 'value'\n this.formatNativeInputValue();\n\n // check if the input value changed\n if (!this.dateTimeAdapter.isEqual(oldDate, value)) {\n this.valueChange.emit(value);\n }\n }\n\n private _values: T[] = [];\n @Input()\n get values() {\n return this._values;\n }\n\n set values(values: T[]) {\n if (values && values.length > 0) {\n this._values = values.map(v => {\n v = this.dateTimeAdapter.deserialize(v);\n return this.getValidDate(v);\n });\n this.lastValueValid =\n (!this._values[0] ||\n this.dateTimeAdapter.isValid(this._values[0])) &&\n (!this._values[1] ||\n this.dateTimeAdapter.isValid(this._values[1]));\n } else {\n this._values = [];\n this.lastValueValid = true;\n }\n\n // set the input property 'value'\n this.formatNativeInputValue();\n\n this.valueChange.emit(this._values);\n }\n\n /**\n * Callback to invoke when `change` event is fired on this `<input>`\n * */\n @Output()\n dateTimeChange = new EventEmitter<any>();\n\n /**\n * Callback to invoke when an `input` event is fired on this `<input>`.\n * */\n @Output()\n dateTimeInput = new EventEmitter<any>();\n\n get elementRef(): ElementRef {\n return this.elmRef;\n }\n\n get isInSingleMode(): boolean {\n return this._selectMode === 'single';\n }\n\n get isInRangeMode(): boolean {\n return (\n this._selectMode === 'range' ||\n this._selectMode === 'rangeFrom' ||\n this._selectMode === 'rangeTo'\n );\n }\n\n /** The date-time-picker that this input is associated with. */\n public dtPicker: OwlDateTimeComponent<T>;\n\n private dtPickerSub: Subscription = Subscription.EMPTY;\n private localeSub: Subscription = Subscription.EMPTY;\n\n private lastValueValid = true;\n\n private onModelChange: Function = () => {};\n private onModelTouched: Function = () => {};\n private validatorOnChange: Function = () => {};\n\n /** The form control validator for whether the input parses. */\n private parseValidator: ValidatorFn = (): ValidationErrors | null => {\n return this.lastValueValid\n ? null\n : { owlDateTimeParse: { text: this.elmRef.nativeElement.value } };\n };\n\n /** The form control validator for the min date. */\n private minValidator: ValidatorFn = (\n control: AbstractControl\n ): ValidationErrors | null => {\n if (this.isInSingleMode) {\n const controlValue = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value)\n );\n return !this.min ||\n !controlValue ||\n this.dateTimeAdapter.compare(this.min, controlValue) <= 0\n ? null\n : { owlDateTimeMin: { min: this.min, actual: controlValue } };\n } else if (this.isInRangeMode && control.value) {\n const controlValueFrom = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value[0])\n );\n const controlValueTo = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value[1])\n );\n return !this.min ||\n !controlValueFrom ||\n !controlValueTo ||\n this.dateTimeAdapter.compare(this.min, controlValueFrom) <= 0\n ? null\n : {\n owlDateTimeMin: {\n min: this.min,\n actual: [controlValueFrom, controlValueTo]\n }\n };\n }\n };\n\n /** The form control validator for the max date. */\n private maxValidator: ValidatorFn = (\n control: AbstractControl\n ): ValidationErrors | null => {\n if (this.isInSingleMode) {\n const controlValue = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value)\n );\n return !this.max ||\n !controlValue ||\n this.dateTimeAdapter.compare(this.max, controlValue) >= 0\n ? null\n : { owlDateTimeMax: { max: this.max, actual: controlValue } };\n } else if (this.isInRangeMode && control.value) {\n const controlValueFrom = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value[0])\n );\n const controlValueTo = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value[1])\n );\n return !this.max ||\n !controlValueFrom ||\n !controlValueTo ||\n this.dateTimeAdapter.compare(this.max, controlValueTo) >= 0\n ? null\n : {\n owlDateTimeMax: {\n max: this.max,\n actual: [controlValueFrom, controlValueTo]\n }\n };\n }\n };\n\n /** The form control validator for the date filter. */\n private filterValidator: ValidatorFn = (\n control: AbstractControl\n ): ValidationErrors | null => {\n const controlValue = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value)\n );\n return !this._dateTimeFilter ||\n !controlValue ||\n this._dateTimeFilter(controlValue)\n ? null\n : { owlDateTimeFilter: true };\n };\n\n /**\n * The form control validator for the range.\n * Check whether the 'before' value is before the 'to' value\n * */\n private rangeValidator: ValidatorFn = (\n control: AbstractControl\n ): ValidationErrors | null => {\n if (this.isInSingleMode || !control.value) {\n return null;\n }\n\n const controlValueFrom = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value[0])\n );\n const controlValueTo = this.getValidDate(\n this.dateTimeAdapter.deserialize(control.value[1])\n );\n\n return !controlValueFrom ||\n !controlValueTo ||\n this.dateTimeAdapter.compare(controlValueFrom, controlValueTo) <= 0\n ? null\n : { owlDateTimeRange: true };\n };\n\n /** The combined form control validator for this input. */\n private validator: ValidatorFn | null = Validators.compose([\n this.parseValidator,\n this.minValidator,\n this.maxValidator,\n this.filterValidator,\n this.rangeValidator\n ]);\n\n /** Emits when the value changes (either due to user input or programmatic change). */\n public valueChange = new EventEmitter<T[] | T | null>();\n\n /** Emits when the disabled state has changed */\n public disabledChange = new EventEmitter<boolean>();\n\n get owlDateTimeInputAriaHaspopup(): boolean {\n return true;\n }\n\n get owlDateTimeInputAriaOwns(): string {\n return (this.dtPicker.opened && this.dtPicker.id) || null;\n }\n\n get minIso8601(): string {\n return this.min ? this.dateTimeAdapter.toIso8601(this.min) : null;\n }\n\n get maxIso8601(): string {\n return this.max ? this.dateTimeAdapter.toIso8601(this.max) : null;\n }\n\n get owlDateTimeInputDisabled(): boolean {\n return this.disabled;\n }\n\n constructor( private elmRef: ElementRef,\n private renderer: Renderer2,\n @Optional() private dateTimeAdapter: DateTimeAdapter<T>,\n @Optional() @Inject(OWL_DATE_TIME_FORMATS) private dateTimeFormats: OwlDateTimeFormats ) {\n if (!this.dateTimeAdapter) {\n throw Error(\n `OwlDateTimePicker: No provider found for DateTimePicker. You must import one of the following ` +\n `modules at your application root: OwlNativeDateTimeModule, OwlDayjsDateTimeModule, or provide a ` +\n `custom implementation.`\n );\n }\n\n if (!this.dateTimeFormats) {\n throw Error(\n `OwlDateTimePicker: No provider found for OWL_DATE_TIME_FORMATS. You must import one of the following ` +\n `modules at your application root: OwlNativeDateTimeModule, OwlDayjsDateTimeModule, or provide a ` +\n `custom implementation.`\n );\n }\n\n this.localeSub = this.dateTimeAdapter.localeChanges.subscribe(() => {\n this.value = this.value;\n });\n }\n\n public ngOnInit(): void {\n if (!this.dtPicker) {\n throw Error(\n `OwlDateTimePicker: the picker input doesn't have any associated owl-date-time component`\n );\n }\n }\n\n public ngAfterContentInit(): void {\n this.dtPickerSub = this.dtPicker.confirmSelectedChange.subscribe(\n (selecteds: T[] | T) => {\n if (Array.isArray(selecteds)) {\n this.values = selecteds;\n } else {\n this.value = selecteds;\n }\n\n this.onModelChange(selecteds);\n this.onModelTouched();\n this.dateTimeChange.emit({\n source: this,\n value: selecteds,\n input: this.elmRef.nativeElement\n });\n this.dateTimeInput.emit({\n source: this,\n value: selecteds,\n input: this.elmRef.nativeElement\n });\n }\n );\n }\n\n public ngOnDestroy(): void {\n this.dtPickerSub.unsubscribe();\n this.localeSub.unsubscribe();\n this.valueChange.complete();\n this.disabledChange.complete();\n }\n\n public writeValue(value: any): void {\n if (this.isInSingleMode) {\n this.value = value;\n } else {\n this.values = value;\n }\n }\n\n public registerOnChange(fn: any): void {\n this.onModelChange = fn;\n }\n\n public registerOnTouched(fn: any): void {\n this.onModelTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n public validate(c: AbstractControl): { [key: string]: any } {\n return this.validator ? this.validator(c) : null;\n }\n\n public registerOnValidatorChange(fn: () => void): void {\n this.validatorOnChange = fn;\n }\n\n /**\n * Open the picker when user hold alt + DOWN_ARROW\n * */\n public handleKeydownOnHost( event: KeyboardEvent ): void {\n if (event.altKey && event.keyCode === DOWN_ARROW) {\n this.dtPicker.open();\n event.preventDefault();\n }\n }\n\n public handleBlurOnHost( event: Event ): void {\n this.onModelTouched();\n }\n\n public handleInputOnHost( event: any ): void {\n let value = event.target.value;\n if (this._selectMode === 'single') {\n this.changeInputInSingleMode(value);\n } else if (this._selectMode === 'range') {\n this.changeInputInRangeMode(value);\n } else {\n this.changeInputInRangeFromToMode(value);\n }\n }\n\n public handleChangeOnHost( event: any ): void {\n\n let v;\n if (this.isInSingleMode) {\n v = this.value;\n } else if (this.isInRangeMode) {\n v = this.values;\n }\n\n this.dateTimeChange.emit({\n source: this,\n value: v,\n input: this.elmRef.nativeElement\n });\n }\n\n /**\n * Set the native input property 'value'\n */\n public formatNativeInputValue(): void {\n if (this.isInSingleMode) {\n this.renderer.setProperty(\n this.elmRef.nativeElement,\n 'value',\n this._value\n ? this.dateTimeAdapter.format(\n this._value,\n this.dtPicker.formatString\n )\n : ''\n );\n } else if (this.isInRangeMode) {\n if (this._values && this.values.length > 0) {\n const from = this._values[0];\n const to = this._values[1];\n\n const fromFormatted = from\n ? this.dateTimeAdapter.format(\n from,\n this.dtPicker.formatString\n )\n : '';\n const toFormatted = to\n ? this.dateTimeAdapter.format(\n to,\n this.dtPicker.formatString\n )\n : '';\n\n if (!fromFormatted && !toFormatted) {\n this.renderer.setProperty(\n this.elmRef.nativeElement,\n 'value',\n null\n );\n } else {\n if (this._selectMode === 'range') {\n this.renderer.setProperty(\n this.elmRef.nativeElement,\n 'value',\n fromFormatted +\n ' ' +\n this.rangeSeparator +\n ' ' +\n toFormatted\n );\n } else if (this._selectMode === 'rangeFrom') {\n this.renderer.setProperty(\n this.elmRef.nativeElement,\n 'value',\n fromFormatted\n );\n } else if (this._selectMode === 'rangeTo') {\n this.renderer.setProperty(\n this.elmRef.nativeElement,\n 'value',\n toFormatted\n );\n }\n }\n } else {\n this.renderer.setProperty(\n this.elmRef.nativeElement,\n 'value',\n ''\n );\n }\n }\n\n return;\n }\n\n /**\n * Register the relationship between this input and its picker component\n */\n private registerDateTimePicker(picker: OwlDateTimeComponent<T>) {\n if (picker) {\n this.dtPicker = picker;\n this.dtPicker.registerInput(this);\n }\n }\n\n /**\n * Convert a given obj to a valid date object\n */\n private getValidDate(obj: any): T | null {\n return this.dateTimeAdapter.isDateInstance(obj) &&\n this.dateTimeAdapter.isValid(obj)\n ? obj\n : null;\n }\n\n /**\n * Convert a time string to a date-time string\n * When pickerType is 'timer', the value in the picker's input is a time string.\n * The dateTimeAdapter parse fn could not parse a time string to a Date Object.\n * Therefore we need this fn to convert a time string to a date-time string.\n */\n private convertTimeStringToDateTimeString(\n timeString: string,\n dateTime: T\n ): string | null {\n if (timeString) {\n const v = dateTime || this.dateTimeAdapter.now();\n const dateString = this.dateTimeAdapter.format(\n v,\n this.dateTimeFormats.datePickerInput\n );\n return dateString + ' ' + timeString;\n } else {\n return null;\n }\n }\n\n /**\n * Handle input change in single mode\n */\n private changeInputInSingleMode(inputValue: string): void {\n let value = inputValue;\n if (this.dtPicker.pickerType === 'timer') {\n value = this.convertTimeStringToDateTimeString(value, this.value);\n }\n\n let result = this.dateTimeAdapter.parse(\n value,\n this.dateTimeFormats.parseInput\n );\n this.lastValueValid = !result || this.dateTimeAdapter.isValid(result);\n result = this.getValidDate(result);\n\n // if the newValue is the same as the oldValue, we intend to not fire the valueChange event\n // result equals to null means there is input event, but the input value is invalid\n if (!this.isSameValue(result, this._value) || result === null) {\n this._value = result;\n this.valueChange.emit(result);\n this.onModelChange(result);\n this.dateTimeInput.emit({\n source: this,\n value: result,\n input: this.elmRef.nativeElement\n });\n }\n }\n\n /**\n * Handle input change in rangeFrom or rangeTo mode\n */\n private changeInputInRangeFromToMode(inputValue: string): void {\n let originalValue =\n this._selectMode === 'rangeFrom'\n ? this._values[0]\n : this._values[1];\n\n if (this.dtPicker.pickerType === 'timer') {\n inputValue = this.convertTimeStringToDateTimeString(\n inputValue,\n originalValue\n );\n }\n\n let result = this.dateTimeAdapter.parse(\n inputValue,\n this.dateTimeFormats.parseInput\n );\n this.lastValueValid = !result || this.dateTimeAdapter.isValid(result);\n result = this.getValidDate(result);\n\n // if the newValue is the same as the oldValue, we intend to not fire the valueChange event\n if (\n (this._selectMode === 'rangeFrom' &&\n this.isSameValue(result, this._values[0]) &&\n result) ||\n (this._selectMode === 'rangeTo' &&\n this.isSameValue(result, this._values[1]) &&\n result)\n ) {\n return;\n }\n\n this._values =\n this._selectMode === 'rangeFrom'\n ? [result, this._values[1]]\n : [this._values[0], result];\n this.valueChange.emit(this._values);\n this.onModelChange(this._values);\n this.dateTimeInput.emit({\n source: this,\n value: this._values,\n input: this.elmRef.nativeElement\n });\n }\n\n /**\n * Handle input change in range mode\n */\n private changeInputInRangeMode(inputValue: string): void {\n const selecteds = inputValue.split(this.rangeSeparator);\n let fromString = selecteds[0];\n let toString = selecteds[1];\n\n if (this.dtPicker.pickerType === 'timer') {\n fromString = this.convertTimeStringToDateTimeString(\n fromString,\n this.values[0]\n );\n toString = this.convertTimeStringToDateTimeString(\n toString,\n this.values[1]\n );\n }\n\n let from = this.dateTimeAdapter.parse(\n fromString,\n this.dateTimeFormats.parseInput\n );\n let to = this.dateTimeAdapter.parse(\n toString,\n this.dateTimeFormats.parseInput\n );\n this.lastValueValid =\n (!from || this.dateTimeAdapter.isValid(from)) &&\n (!to || this.dateTimeAdapter.isValid(to));\n from = this.getValidDate(from);\n to = this.getValidDate(to);\n\n // if the newValue is the same as the oldValue, we intend to not fire the valueChange event\n if (\n !this.isSameValue(from, this._values[0]) ||\n !this.isSameValue(to, this._values[1]) ||\n (from === null && to === null)\n ) {\n this._values = [from, to];\n this.valueChange.emit(this._values);\n this.onModelChange(this._values);\n this.dateTimeInput.emit({\n source: this,\n value: this._values,\n input: this.elmRef.nativeElement\n });\n }\n }\n\n /**\n * Check if the two value is the same\n */\n private isSameValue(first: T | null, second: T | null): boolean {\n if (first && second) {\n return this.dateTimeAdapter.compare(first, second) === 0;\n }\n\n return first == second;\n }\n}\n","/**\n * numberFixedLen.pipe\n */\n\nimport { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'numberFixedLen'\n})\nexport class NumberFixedLenPipe implements PipeTransform {\n transform( num: number, len: number ): any {\n const number = Math.floor(num);\n const length = Math.floor(len);\n\n if (num === null || isNaN(number) || isNaN(length)) {\n return num;\n }\n\n let numString = number.toString();\n\n while (numString.length < length) {\n numString = '0' + numString;\n }\n\n return numString;\n }\n}\n","/**\n * date-time-inline.component\n */\n\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component, EventEmitter,\n forwardRef,\n Inject,\n Input,\n OnInit,\n Optional,\n Output,\n ViewChild\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport {\n OwlDateTime,\n PickerMode,\n PickerType,\n SelectMode\n} from './date-time.class';\nimport { DateTimeAdapter } from './adapter/date-time-adapter.class';\nimport {\n OWL_DATE_TIME_FORMATS,\n OwlDateTimeFormats\n} from './adapter/date-time-format.class';\nimport { OwlDateTimeContainerComponent } from './date-time-picker-container.component';\n\nexport const OWL_DATETIME_VALUE_ACCESSOR: any = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => OwlDateTimeInlineComponent),\n multi: true\n};\n\n@Component({\n selector: 'owl-date-time-inline',\n templateUrl: './date-time-inline.component.html',\n styleUrls: ['./date-time-inline.component.scss'],\n host: {\n '[class.owl-dt-inline]': 'owlDTInlineClass'\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n preserveWhitespaces: false,\n providers: [OWL_DATETIME_VALUE_ACCESSOR]\n})\nexport class OwlDateTimeInlineComponent<T> extends OwlDateTime<T>\n implements OnInit, ControlValueAccessor {\n @ViewChild(OwlDateTimeContainerComponent, { static: true })\n container: OwlDateTimeContainerComponent<T>;\n\n /**\n * Set the type of the dateTime picker\n * 'both' -- show both calendar and timer\n * 'calendar' -- show only calendar\n * 'timer' -- show only timer\n */\n private _pickerType: PickerType = 'both';\n @Input()\n get pickerType(): PickerType {\n return this._pickerType;\n }\n\n set pickerType(val: PickerType) {\n if (val !== this._pickerType) {\n this._pickerType = val;\n }\n }\n\n private _disabled = false;\n @Input()\n get disabled(): boolean {\n return !!this._disabled;\n }\n\n set disabled(value: boolean) {\n this._disabled = coerceBooleanProperty(value);\n }\n\n private _selectMode: SelectMode = 'single';\n @Input()\n get selectMode() {\n return this._selectMode;\n }\n\n set selectMode(mode: SelectMode) {\n if (\n mode !== 'single' &&\n mode !== 'range' &&\n mode !== 'rangeFrom' &&\n mode !== 'rangeTo'\n ) {\n throw Error('OwlDateTime Error: invalid selectMode value!');\n }\n\n this._selectMode = mode;\n }\n\n /** The date to open the calendar to initially. */\n private _startAt: T | null;\n @Input()\n get startAt(): T | null {\n if (this._startAt) {\n return this._startAt;\n }\n\n if (this.selectMode === 'single') {\n return this.value || null;\n } else if (\n this.selectMode === 'range' ||\n this.selectMode === 'rangeFrom'\n ) {\n return this.values[0] || null;\n } else if (this.selectMode === 'rangeTo') {\n return this.values[1] || null;\n } else {\n return null;\n }\n }\n\n set startAt(date: T | null) {\n this._startAt = this.getValidDate(\n this.dateTimeAdapter.deserialize(date)\n );\n }\n\n private _dateTimeFilter: (date: T | null) => boolean;\n @Input('owlDateTimeFilter')\n get dateTimeFilter() {\n return this._dateTimeFilter;\n }\n\n set dateTimeFilter(filter: (date: T | null) => boolean) {\n this._dateTimeFilter = filter;\n }\n\n /** The minimum valid date. */\n private _min: T | null;\n\n get minDateTime(): T | null {\n return this._min || null;\n }\n\n @Input('min')\n set minDateTime(value: T | null) {\n this._min = this.getValidDate(this.dateTimeAdapter.deserialize(value));\n this.changeDetector.markForCheck();\n }\n\n /** The maximum valid date. */\n private _max: T | null;\n\n get maxDateTime(): T | null {\n return this._max || null;\n }\n\n @Input('max')\n set maxDateTime(value: T | null) {\n this._max = this.getValidDate(this.dateTimeAdapter.deserialize(value));\n this.changeDetector.markForCheck();\n }\n\n private _value: T | null;\n @Input()\n get value() {\n return this._value;\n }\n\n set value(value: T | null) {\n value = this.dateTimeAdapter.deserialize(value);\n value = this.getValidDate(value);\n this._value = value;\n this.selected = value;\n }\n\n private _values: T[] = [];\n @Input()\n get values() {\n return this._values;\n }\n\n set values(values: T[]) {\n if (values && values.length > 0) {\n values = values.map(v => {\n v = this.dateTimeAdapter.deserialize(v);\n v = this.getValidDate(v);\n return v ? this.dateTimeAdapter.clone(v) : null;\n });\n this._values = [...values];\n this.selecteds = [...values];\n } else {\n this._values = [];\n this.selecteds = [];\n }\n }\n\n /**\n * Emits selected year in multi-year view\n * This doesn't imply a change on the selected date.\n * */\n @Output()\n yearSelected = new EventEmitter<T>();\n\n /**\n * Emits selected month in year view\n * This doesn't imply a change on the selected date.\n * */\n @Output()\n monthSelected = new EventEmitter<T>();\n\n private _selected: T | null;\n get selected() {\n return this._selected;\n }\n\n set selected(value: T | null) {\n this._selected = value;\n this.changeDetector.markForCheck();\n }\n\n private _selecteds: T[] = [];\n get selecteds() {\n return this._selecteds;\n }\n\n set selecteds(values: T[]) {\n this._selecteds = values;\n this.changeDetector.markForCheck();\n }\n\n get opened(): boolean {\n return true;\n }\n\n get pickerMode(): PickerMode {\n return 'inline';\n }\n\n get isInSingleMode(): boolean {\n return this._selectMode === 'single';\n }\n\n get isInRangeMode(): boolean {\n return (\n this._selectMode === 'range' ||\n this._selectMode === 'rangeFrom' ||\n this._selectMode === 'rangeTo'\n );\n }\n\n get owlDTInlineClass(): boolean {\n return true;\n }\n\n private onModelChange: Function = () => {};\n private onModelTouched: Function = () => {};\n\n constructor(\n protected changeDetector: ChangeDetectorRef,\n @Optional() protected dateTimeAdapter: DateTimeAdapter<T>,\n @Optional()\n @Inject(OWL_DATE_TIME_FORMATS)\n protected dateTimeFormats: OwlDateTimeFormats\n ) {\n super(dateTimeAdapter, dateTimeFormats);\n }\n\n public ngOnInit() {\n this.container.picker = this;\n }\n\n public writeValue(value: any): void {\n if (this.isInSingleMode) {\n this.value = value;\n this.container.pickerDayjs = value;\n } else {\n this.values = value;\n this.container.pickerDayjs = this._values[\n this.container.activeSelectedIndex\n ];\n }\n }\n\n public registerOnChange(fn: any): void {\n this.onModelChange = fn;\n }\n\n public registerOnTouched(fn: any): void {\n this.onModelTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n public select(date: T[] | T): void {\n if (this.disabled) {\n return;\n }\n\n if (Array.isArray(date)) {\n this.values = [...date];\n } else {\n this.value = date;\n }\n this.onModelChange(date);\n this.onModelTouched();\n }\n\n /**\n * Emits the selected year in multi-year view\n * */\n public selectYear(normalizedYear: T): void {\n this.yearSelected.emit(normalizedYear);\n }\n\n /**\n * Emits selected month in year view\n * */\n public selectMonth(normalizedMonth: T): void {\n this.monthSelected.emit(normalizedMonth);\n }\n}\n","<owl-date-time-container></owl-date-time-container>","/**\n * dialog.module\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport { OWL_DIALOG_SCROLL_STRATEGY_PROVIDER, OwlDialogService } from './dialog.service';\nimport { OwlDialogContainerComponent } from './dialog-container.component';\n\n@NgModule({\n imports: [CommonModule, A11yModule, OverlayModule, PortalModule],\n exports: [],\n declarations: [\n OwlDialogContainerComponent,\n ],\n providers: [\n OWL_DIALOG_SCROLL_STRATEGY_PROVIDER,\n OwlDialogService,\n ]\n})\nexport class OwlDialogModule {\n}\n","/**\n * date-time.module\n */\n\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { OwlDateTimeTriggerDirective } from './date-time-picker-trigger.directive';\nimport { OWL_DTPICKER_SCROLL_STRATEGY_PROVIDER, OwlDateTimeComponent } from './date-time-picker.component';\nimport { OwlDateTimeContainerComponent } from './date-time-picker-container.component';\nimport { OwlDateTimeInputDirective } from './date-time-picker-input.directive';\nimport { OwlDateTimeIntl } from './date-time-picker-intl.service';\nimport { OwlMonthViewComponent } from './calendar-month-view.component';\nimport { OwlCalendarBodyComponent } from './calendar-body.component';\nimport { OwlYearViewComponent } from './calendar-year-view.component';\nimport { OwlMultiYearViewComponent } from './calendar-multi-year-view.component';\nimport { OwlTimerBoxComponent } from './timer-box.component';\nimport { OwlTimerComponent } from './timer.component';\nimport { NumberFixedLenPipe } from './numberedFixLen.pipe';\nimport { OwlCalendarComponent } from './calendar.component';\nimport { OwlDateTimeInlineComponent } from './date-time-inline.component';\nimport { OwlDialogModule } from '../dialog/dialog.module';\n\n@NgModule({\n imports: [CommonModule, OverlayModule, OwlDialogModule, A11yModule],\n exports: [\n OwlCalendarComponent,\n OwlTimerComponent,\n OwlDateTimeTriggerDirective,\n OwlDateTimeInputDirective,\n OwlDateTimeComponent,\n OwlDateTimeInlineComponent,\n OwlMultiYearViewComponent,\n OwlYearViewComponent,\n OwlMonthViewComponent,\n ],\n declarations: [\n OwlDateTimeTriggerDirective,\n OwlDateTimeInputDirective,\n OwlDateTimeComponent,\n OwlDateTimeContainerComponent,\n OwlMultiYearViewComponent,\n OwlYearViewComponent,\n OwlMonthViewComponent,\n OwlTimerComponent,\n OwlTimerBoxComponent,\n OwlCalendarComponent,\n OwlCalendarBodyComponent,\n NumberFixedLenPipe,\n OwlDateTimeInlineComponent,\n ],\n providers: [\n OwlDateTimeIntl,\n OWL_DTPICKER_SCROLL_STRATEGY_PROVIDER,\n ]\n})\nexport class OwlDateTimeModule {\n}\n","/**\n * native-date-time-adapter.class\n */\n\nimport { Inject, Injectable, Optional } from '@angular/core';\nimport { Platform } from '@angular/cdk/platform';\nimport {\n DateTimeAdapter,\n OWL_DATE_TIME_LOCALE\n} from './date-time-adapter.class';\n\n/** The default month names to use if Intl API is not available. */\nconst DEFAULT_MONTH_NAMES = {\n long: [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December'\n ],\n short: [\n 'Jan',\n 'Feb',\n 'Mar',\n 'Apr',\n 'May',\n 'Jun',\n 'Jul',\n 'Aug',\n 'Sep',\n 'Oct',\n 'Nov',\n 'Dec'\n ],\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D']\n};\n\n/** The default day of the week names to use if Intl API is not available. */\nconst DEFAULT_DAY_OF_WEEK_NAMES = {\n long: [\n 'Sunday',\n 'Monday',\n 'Tuesday',\n 'Wednesday',\n 'Thursday',\n 'Friday',\n 'Saturday'\n ],\n short: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S']\n};\n\n/** The default date names to use if Intl API is not available. */\nconst DEFAULT_DATE_NAMES = range(31, i => String(i + 1));\n\n/** Whether the browser supports the Intl API. */\nconst SUPPORTS_INTL_API = typeof Intl !== 'undefined';\n\n/**\n * Matches strings that have the form of a valid RFC 3339 string\n * (https://tools.ietf.org/html/rfc3339). Note that the string may not actually be a valid date\n * because the regex will match strings an with out of bounds month, date, etc.\n */\nconst ISO_8601_REGEX = /^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|(?:(?:\\+|-)\\d{2}:\\d{2}))?)?$/;\n\n/** Creates an array and fills it with values. */\nfunction range<T>(length: number, valueFunction: (index: number) => T): T[] {\n const valuesArray = Array(length);\n for (let i = 0; i < length; i++) {\n valuesArray[i] = valueFunction(i);\n }\n return valuesArray;\n}\n\n@Injectable()\nexport class NativeDateTimeAdapter extends DateTimeAdapter<Date> {\n /** Whether to clamp the date between 1 and 9999 to avoid IE and Edge errors. */\n private readonly _clampDate: boolean;\n\n /**\n * Whether to use `timeZone: 'utc'` with `Intl.DateTimeFormat` when formatting dates.\n * Without this `Intl.DateTimeFormat` sometimes chooses the wrong timeZone, which can throw off\n * the result. (e.g. in the en-US locale `new Date(1800, 7, 14).toLocaleDateString()`\n * will produce `'8/13/1800'`.\n */\n useUtcForDisplay: boolean;\n\n constructor(\n @Optional()\n @Inject(OWL_DATE_TIME_LOCALE)\n private owlDateTimeLocale: string,\n platform: Platform\n ) {\n super();\n super.setLocale(owlDateTimeLocale);\n\n // IE does its own time zone correction, so we disable this on IE.\n this.useUtcForDisplay = !platform.TRIDENT;\n this._clampDate = platform.TRIDENT || platform.EDGE;\n }\n\n public getYear(date: Date): number {\n return date.getFullYear();\n }\n\n public getMonth(date: Date): number {\n return date.getMonth();\n }\n\n public getDay(date: Date): number {\n return date.getDay();\n }\n\n public getDate(date: Date): number {\n return date.getDate();\n }\n\n public getHours(date: Date): number {\n return date.getHours();\n }\n\n public getMinutes(date: Date): number {\n return date.getMinutes();\n }\n\n public getSeconds(date: Date): number {\n return date.getSeconds();\n }\n\n public getTime(date: Date): number {\n return date.getTime();\n }\n\n public getNumDaysInMonth(date: Date): number {\n const lastDateOfMonth = this.createDateWithOverflow(\n this.getYear(date),\n this.getMonth(date) + 1,\n 0\n );\n\n return this.getDate(lastDateOfMonth);\n }\n\n public differenceInCalendarDays(dateLeft: Date, dateRight: Date): number {\n if (this.isValid(dateLeft) && this.isValid(dateRight)) {\n const dateLeftStartOfDay = this.createDate(\n this.getYear(dateLeft),\n this.getMonth(dateLeft),\n this.getDate(dateLeft)\n );\n const dateRightStartOfDay = this.createDate(\n this.getYear(dateRight),\n this.getMonth(dateRight),\n this.getDate(dateRight)\n );\n\n const timeStampLeft =\n this.getTime(dateLeftStartOfDay) -\n dateLeftStartOfDay.getTimezoneOffset() *\n this.milliseondsInMinute;\n const timeStampRight =\n this.getTime(dateRightStartOfDay) -\n dateRightStartOfDay.getTimezoneOffset() *\n this.milliseondsInMinute;\n return Math.round(\n (timeStampLeft - timeStampRight) / this.millisecondsInDay\n );\n } else {\n return null;\n }\n }\n\n public getYearName(date: Date): string {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.locale, {\n year: 'numeric',\n timeZone: 'utc'\n });\n return this.stripDirectionalityCharacters(this._format(dtf, date));\n }\n return String(this.getYear(date));\n }\n\n public getMonthNames(style: 'long' | 'short' | 'narrow'): string[] {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.locale, {\n month: style,\n timeZone: 'utc'\n });\n return range(12, i =>\n this.stripDirectionalityCharacters(\n this._format(dtf, new Date(2017, i, 1))\n )\n );\n }\n return DEFAULT_MONTH_NAMES[style];\n }\n\n public getDayOfWeekNames(style: 'long' | 'short' | 'narrow'): string[] {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.locale, {\n weekday: style,\n timeZone: 'utc'\n });\n return range(7, i =>\n this.stripDirectionalityCharacters(\n this._format(dtf, new Date(2017, 0, i + 1))\n )\n );\n }\n\n return DEFAULT_DAY_OF_WEEK_NAMES[style];\n }\n\n public getDateNames(): string[] {\n if (SUPPORTS_INTL_API) {\n const dtf = new Intl.DateTimeFormat(this.locale, {\n day: 'numeric',\n timeZone: 'utc'\n });\n return range(31, i =>\n this.stripDirectionalityCharacters(\n this._format(dtf, new Date(2017, 0, i + 1))\n )\n );\n }\n return DEFAULT_DATE_NAMES;\n }\n\n public toIso8601(date: Date): string {\n return date.toISOString();\n }\n\n public isEqual(dateLeft: Date, dateRight: Date): boolean {\n if (this.isValid(dateLeft) && this.isValid(dateRight)) {\n return dateLeft.getTime() === dateRight.getTime();\n } else {\n return false;\n }\n }\n\n public isSameDay(dateLeft: Date, dateRight: Date): boolean {\n if (this.isValid(dateLeft) && this.isValid(dateRight)) {\n const dateLeftStartOfDay = this.clone(dateLeft);\n const dateRightStartOfDay = this.clone(dateRight);\n dateLeftStartOfDay.setHours(0, 0, 0, 0);\n dateRightStartOfDay.setHours(0, 0, 0, 0);\n return (\n dateLeftStartOfDay.getTime() === dateRightStartOfDay.getTime()\n );\n } else {\n return false;\n }\n }\n\n public isValid(date: Date): boolean {\n return date && !isNaN(date.getTime());\n }\n\n public invalid(): Date {\n return new Date(NaN);\n }\n\n public isDateInstance(obj: any): boolean {\n return obj instanceof Date;\n }\n\n public addCalendarYears(date: Date, amount: number): Date {\n return this.addCalendarMonths(date, amount * 12);\n }\n\n public addCalendarMonths(date: Date, amount: number): Date {\n const result = this.clone(date);\n amount = Number(amount);\n\n const desiredMonth = result.getMonth() + amount;\n const dateWithDesiredMonth = new Date(0);\n dateWithDesiredMonth.setFullYear(result.getFullYear(), desiredMonth, 1);\n dateWithDesiredMonth.setHours(0, 0, 0, 0);\n\n const daysInMonth = this.getNumDaysInMonth(dateWithDesiredMonth);\n // Set the last day of the new month\n // if the original date was the last day of the longer month\n result.setMonth(desiredMonth, Math.min(daysInMonth, result.getDate()));\n return result;\n }\n\n public addCalendarDays(date: Date, amount: number): Date {\n const result = this.clone(date);\n amount = Number(amount);\n result.setDate(result.getDate() + amount);\n return result;\n }\n\n public setHours(date: Date, amount: number): Date {\n const result = this.clone(date);\n result.setHours(amount);\n return result;\n }\n\n public setMinutes(date: Date, amount: number): Date {\n const result = this.clone(date);\n result.setMinutes(amount);\n return result;\n }\n\n public setSeconds(date: Date, amount: number): Date {\n const result = this.clone(date);\n result.setSeconds(amount);\n return result;\n }\n\n public createDate(\n year: number,\n month: number,\n date: number,\n hours: number = 0,\n minutes: number = 0,\n seconds: number = 0\n ): Date {\n if (month < 0 || month > 11) {\n throw Error(\n `Invalid month index \"${month}\". Month index has to be between 0 and 11.`\n );\n }\n\n if (date < 1) {\n throw Error(\n `Invalid date \"${date}\". Date has to be greater than 0.`\n );\n }\n\n if (hours < 0 || hours > 23) {\n throw Error(\n `Invalid hours \"${hours}\". Hours has to be between 0 and 23.`\n );\n }\n\n if (minutes < 0 || minutes > 59) {\n throw Error(\n `Invalid minutes \"${minutes}\". Minutes has to between 0 and 59.`\n );\n }\n\n if (seconds < 0 || seconds > 59) {\n throw Error(\n `Invalid seconds \"${seconds}\". Seconds has to be between 0 and 59.`\n );\n }\n\n const result = this.createDateWithOverflow(\n year,\n month,\n date,\n hours,\n minutes,\n seconds\n );\n\n // Check that the date wasn't above the upper bound for the month, causing the month to overflow\n // For example, createDate(2017, 1, 31) would try to create a date 2017/02/31 which is invalid\n if (result.getMonth() !== month) {\n throw Error(\n `Invalid date \"${date}\" for month with index \"${month}\".`\n );\n }\n\n return result;\n }\n\n public clone(date: Date): Date {\n return this.createDate(\n this.getYear(date),\n this.getMonth(date),\n this.getDate(date),\n this.getHours(date),\n this.getMinutes(date),\n this.getSeconds(date)\n );\n }\n\n public now(): Date {\n return new Date();\n }\n\n public format(date: Date, displayFormat: any): string {\n if (!this.isValid(date)) {\n throw Error('JSNativeDate: Cannot format invalid date.');\n }\n\n if (SUPPORTS_INTL_API) {\n if (\n this._clampDate &&\n (date.getFullYear() < 1 || date.getFullYear() > 9999)\n ) {\n date = this.clone(date);\n date.setFullYear(\n Math.max(1, Math.min(9999, date.getFullYear()))\n );\n }\n\n displayFormat = { ...displayFormat, timeZone: 'utc' };\n const dtf = new Intl.DateTimeFormat(this.locale, displayFormat);\n return this.stripDirectionalityCharacters(this._format(dtf, date));\n }\n\n return this.stripDirectionalityCharacters(date.toDateString());\n }\n\n public parse(value: any, parseFormat: any): Date | null {\n // There is no way using the native JS Date to set the parse format or locale\n if (typeof value === 'number') {\n return new Date(value);\n }\n return value ? new Date(Date.parse(value)) : null;\n }\n\n /**\n * Returns the given value if given a valid Date or null. Deserializes valid ISO 8601 strings\n * (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into null. Returns an\n * invalid date for all other values.\n */\n public deserialize(value: any): Date | null {\n if (typeof value === 'string') {\n if (!value) {\n return null;\n }\n // The `Date` constructor accepts formats other than ISO 8601, so we need to make sure the\n // string is the right format first.\n if (ISO_8601_REGEX.test(value)) {\n const date = new Date(value);\n if (this.isValid(date)) {\n return date;\n }\n }\n }\n return super.deserialize(value);\n }\n\n /**\n * Creates a date but allows the month and date to overflow.\n */\n private createDateWithOverflow(\n year: number,\n month: number,\n date: number,\n hours: number = 0,\n minutes: number = 0,\n seconds: number = 0\n ): Date {\n const result = new Date(year, month, date, hours, minutes, seconds);\n\n if (year >= 0 && year < 100) {\n result.setFullYear(this.getYear(result) - 1900);\n }\n return result;\n }\n\n /**\n * Strip out unicode LTR and RTL characters. Edge and IE insert these into formatted dates while\n * other browsers do not. We remove them to make output consistent and because they interfere with\n * date parsing.\n */\n private stripDirectionalityCharacters(str: string) {\n return str.replace(/[\\u200e\\u200f]/g, '');\n }\n\n /**\n * When converting Date object to string, javascript built-in functions may return wrong\n * results because it applies its internal DST rules. The DST rules around the world change\n * very frequently, and the current valid rule is not always valid in previous years though.\n * We work around this problem building a new Date object which has its internal UTC\n * representation with the local date and time.\n */\n private _format(dtf: Intl.DateTimeFormat, date: Date) {\n const d = new Date(\n Date.UTC(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds()\n )\n );\n return dtf.format(d);\n }\n}\n","/**\n * native-date-time-format.class\n */\nimport { OwlDateTimeFormats } from './date-time-format.class';\n\nexport const OWL_NATIVE_DATE_TIME_FORMATS: OwlDateTimeFormats = {\n parseInput: null,\n fullPickerInput: {year: 'numeric', month: 'numeric', day: 'numeric', hour: 'numeric', minute: 'numeric'},\n datePickerInput: {year: 'numeric', month: 'numeric', day: 'numeric'},\n timePickerInput: {hour: 'numeric', minute: 'numeric'},\n monthYearLabel: {year: 'numeric', month: 'short'},\n dateA11yLabel: {year: 'numeric', month: 'long', day: 'numeric'},\n monthYearA11yLabel: {year: 'numeric', month: 'long'},\n};\n","/**\n * native-date-time.module\n */\n\nimport { NgModule } from '@angular/core';\nimport { PlatformModule } from '@angular/cdk/platform';\nimport { DateTimeAdapter } from './date-time-adapter.class';\nimport { NativeDateTimeAdapter } from './native-date-time-adapter.class';\nimport { OWL_DATE_TIME_FORMATS } from './date-time-format.class';\nimport { OWL_NATIVE_DATE_TIME_FORMATS } from './native-date-time-format.class';\n\n@NgModule({\n imports: [PlatformModule],\n providers: [\n {provide: DateTimeAdapter, useClass: NativeDateTimeAdapter},\n ],\n})\nexport class NativeDateTimeModule {\n}\n\n@NgModule({\n imports: [NativeDateTimeModule],\n providers: [{provide: OWL_DATE_TIME_FORMATS, useValue: OWL_NATIVE_DATE_TIME_FORMATS}],\n})\nexport class OwlNativeDateTimeModule {\n}\n","/**\n * dayjs-date-time-adapter.class\n */\n\nimport { Inject, Injectable, Optional, InjectionToken } from '@angular/core';\n// import { DateTimeAdapter, OWL_DATE_TIME_LOCALE } from 'ng-pick-datetime';\nimport _dayjs from 'dayjs';\nimport { Dayjs } from 'dayjs';\nimport localeData from 'dayjs/plugin/localeData';\nimport objectSupport from 'dayjs/plugin/objectSupport';\nimport localizedFormat from 'dayjs/plugin/localizedFormat';\nimport utc from 'dayjs/plugin/utc';\nimport { DateTimeAdapter, OWL_DATE_TIME_LOCALE } from '../date-time-adapter.class';\n\nconst dayjs = (_dayjs as any).default ? (_dayjs as any).default : _dayjs;\n\n/** Configurable options for {@see DayjsDateAdapter}. */\nexport interface OwlDayjsDateTimeAdapterOptions {\n /**\n * Turns the use of utc dates on or off.\n * Changing this will change how the DateTimePicker output value.\n * {@default false}\n */\n useUtc: boolean;\n}\n\n/** InjectionToken for dayjs date adapter to configure options. */\nexport const OWL_DAYJS_DATE_TIME_ADAPTER_OPTIONS = new InjectionToken<OwlDayjsDateTimeAdapterOptions>(\n 'OWL_MOMENT_DATE_TIME_ADAPTER_OPTIONS', {\n providedIn: 'root',\n factory: OWL_MOMENT_DATE_TIME_ADAPTER_OPTIONS_FACTORY\n });\n\n/** @docs-private */\nexport function OWL_MOMENT_DATE_TIME_ADAPTER_OPTIONS_FACTORY(): OwlDayjsDateTimeAdapterOptions {\n return {\n useUtc: false\n };\n}\n\n/** Creates an array and fills it with values. */\nfunction range<T>(length: number, valueFunction: (index: number) => T): T[] {\n const valuesArray = Array(length);\n for (let i = 0; i < length; i++) {\n valuesArray[i] = valueFunction(i);\n }\n return valuesArray;\n}\n\n\n@Injectable()\nexport class DayjsDateTimeAdapter extends DateTimeAdapter<Dayjs> {\n\n private _localeData: {\n longMonths: string[],\n shortMonths: string[],\n longDaysOfWeek: string[],\n shortDaysOfWeek: string[],\n narrowDaysOfWeek: string[],\n dates: string[],\n };\n\n constructor( @Optional() @Inject(OWL_DATE_TIME_LOCALE) private owlDateTimeLocale: string,\n @Optional() @Inject(OWL_DAYJS_DATE_TIME_ADAPTER_OPTIONS) private options?: OwlDayjsDateTimeAdapterOptions ) {\n super();\n dayjs.extend(localeData);\n dayjs.extend(utc);\n dayjs.extend(objectSupport);\n dayjs.extend(localizedFormat);\n this.setLocale(owlDateTimeLocale || dayjs.locale());\n }\n\n public setLocale( locale: string ) {\n super.setLocale(locale);\n\n const dayjsLocaleData = dayjs.localeData(locale);\n this._localeData = {\n longMonths: dayjsLocaleData.months(),\n shortMonths: dayjsLocaleData.monthsShort(),\n longDaysOfWeek: dayjsLocaleData.weekdays(),\n shortDaysOfWeek: dayjsLocaleData.weekdaysShort(),\n narrowDaysOfWeek: dayjsLocaleData.weekdaysMin(),\n dates: range(31, (i) => this.createDate(2017, 0, i + 1).format('D')),\n };\n }\n\n\n public getYear( date: Dayjs ): number {\n return this.clone(date).year();\n }\n\n public getMonth( date: Dayjs ): number {\n return this.clone(date).month();\n }\n\n public getDay( date: Dayjs ): number {\n return this.clone(date).day();\n }\n\n public getDate( date: Dayjs ): number {\n return this.clone(date).date();\n }\n\n public getHours( date: Dayjs ): number {\n return this.clone(date).hour();\n }\n\n public getMinutes( date: Dayjs ): number {\n return this.clone(date).minute();\n }\n\n public getSeconds( date: Dayjs ): number {\n return this.clone(date).second();\n }\n\n public getTime( date: Dayjs ): number {\n return this.clone(date).valueOf();\n }\n\n public getNumDaysInMonth( date: Dayjs ): number {\n return this.clone(date).daysInMonth();\n }\n\n public differenceInCalendarDays( dateLeft: Dayjs, dateRight: Dayjs ): number {\n return this.clone(dateLeft).diff(dateRight, 'days');\n }\n\n public getYearName( date: Dayjs ): string {\n return this.clone(date).format('YYYY');\n }\n\n public getMonthNames( style: 'long' | 'short' | 'narrow' ): string[] {\n return style === 'long' ? this._localeData.longMonths : this._localeData.shortMonths;\n }\n\n public getDayOfWeekNames( style: 'long' | 'short' | 'narrow' ): string[] {\n if (style === 'long') {\n return this._localeData.longDaysOfWeek;\n }\n if (style === 'short') {\n return this._localeData.shortDaysOfWeek;\n }\n return this._localeData.narrowDaysOfWeek;\n }\n\n public getDateNames(): string[] {\n return this._localeData.dates;\n }\n\n public toIso8601( date: Dayjs ): string {\n return this.clone(date).toISOString();\n }\n\n public isEqual( dateLeft: Dayjs, dateRight: Dayjs ): boolean {\n\n if (dateLeft && dateRight) {\n return this.clone(dateLeft).isSame(this.clone(dateRight));\n }\n\n return dateLeft === dateRight;\n }\n\n public isSameDay( dateLeft: Dayjs, dateRight: Dayjs ): boolean {\n\n if (dateLeft && dateRight) {\n return this.clone(dateLeft).isSame(this.clone(dateRight), 'day');\n }\n\n return dateLeft === dateRight;\n }\n\n public isValid( date: Dayjs ): boolean {\n return this.clone(date).isValid();\n }\n\n public invalid(): Dayjs {\n return dayjs(null);\n }\n\n public isDateInstance( obj: any ): boolean {\n return dayjs(obj).isValid();\n }\n\n public addCalendarYears(date: Dayjs, amount: number): Dayjs {\n return this.clone(date).add(amount, 'years');\n }\n\n public addCalendarMonths(date: Dayjs, amount: number): Dayjs {\n return this.clone(date).add(amount, 'months');\n }\n\n public addCalendarDays(date: Dayjs, amount: number): Dayjs {\n return this.clone(date).add(amount, 'days');\n }\n\n public setHours( date: Dayjs, amount: number ): Dayjs {\n return this.clone(date).hour(amount);\n }\n\n public setMinutes( date: Dayjs, amount: number ): Dayjs {\n return this.clone(date).minute(amount);\n }\n\n public setSeconds( date: Dayjs, amount: number ): Dayjs {\n return this.clone(date).second(amount);\n }\n\n public createDate( year: number, month: number, date: number ): Dayjs;\n public createDate( year: number, month: number, date: number, hours: number = 0, minutes: number = 0, seconds: number = 0 ): Dayjs {\n if (month < 0 || month > 11) {\n throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\n }\n\n if (date < 1) {\n throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\n }\n\n if (hours < 0 || hours > 23) {\n throw Error(`Invalid hours \"${hours}\". Hours has to be between 0 and 23.`);\n }\n\n if (minutes < 0 || minutes > 59) {\n throw Error(`Invalid minutes \"${minutes}\". Minutes has to between 0 and 59.`);\n }\n\n if (seconds < 0 || seconds > 59) {\n throw Error(`Invalid seconds \"${seconds}\". Seconds has to be between 0 and 59.`);\n }\n\n const result = this.createDayjs({year, month, date, hours, minutes, seconds}).locale(this.locale);\n\n // If the result isn't valid, the date must have been out of bounds for this month.\n if (!result.isValid()) {\n throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\n }\n\n return result;\n }\n\n public clone( date: Dayjs ): Dayjs {\n return this.createDayjs(date).clone().locale(this.locale);\n }\n\n public now(): Dayjs {\n return this.createDayjs().locale(this.locale);\n }\n\n public format( date: Dayjs, displayFormat: any ): string {\n date = this.clone(date);\n if (!this.isValid(date)) {\n throw Error('DayjsDateTimeAdapter: Cannot format invalid date.');\n }\n return date.format(displayFormat);\n }\n\n public parse( value: any, parseFormat: any ): Dayjs | null {\n if (value && typeof value === 'string') {\n return this.createDayjs(value, parseFormat, this.locale);\n }\n return value ? this.createDayjs(value).locale(this.locale) : null;\n }\n\n /**\n * Returns the given value if given a valid Dayjs or null. Deserializes valid ISO 8601 strings\n * (https://www.ietf.org/rfc/rfc3339.txt) and valid Date objects into valid Dayjss and empty\n * string into null. Returns an invalid date for all other values.\n */\n deserialize( value: any ): Dayjs | null {\n let date;\n if (value instanceof Date) {\n date = this.createDayjs(value);\n }\n if (typeof value === 'string') {\n if (!value) {\n return null;\n }\n date = this.createDayjs(value).locale(this.locale);\n }\n if (date && this.isValid(date)) {\n return date;\n }\n return super.deserialize(value);\n }\n\n /** Creates a Dayjs instance while respecting the current UTC settings. */\n private createDayjs(...args: any[]): Dayjs {\n return (this.options && this.options.useUtc) ? dayjs.utc(...args) : dayjs(...args);\n }\n}\n","/**\n * dayjs-date-time-format.class\n */\nimport { OwlDateTimeFormats } from '../date-time-format.class';\n\n// import { OwlDateTimeFormats } from 'ng-pick-datetime';\n\nexport const OWL_DAYJS_DATE_TIME_FORMATS: OwlDateTimeFormats = {\n parseInput: 'l LT',\n fullPickerInput: 'l LT',\n datePickerInput: 'l',\n timePickerInput: 'LT',\n monthYearLabel: 'MMM YYYY',\n dateA11yLabel: 'LL',\n monthYearA11yLabel: 'MMMM YYYY',\n};\n","/**\n * dayjs-date-time.module\n */\n\nimport { NgModule } from '@angular/core';\nimport { DayjsDateTimeAdapter, OWL_DAYJS_DATE_TIME_ADAPTER_OPTIONS } from './dayjs-date-time-adapter.class';\nimport { OWL_DAYJS_DATE_TIME_FORMATS } from './dayjs-date-time-format.class';\nimport { DateTimeAdapter, OWL_DATE_TIME_LOCALE } from '../date-time-adapter.class';\nimport { OWL_DATE_TIME_FORMATS } from '../date-time-format.class';\n// import { DateTimeAdapter, OWL_DATE_TIME_FORMATS, OWL_DATE_TIME_LOCALE_PROVIDER } from 'ng-pick-datetime';\n\n@NgModule({\n providers: [\n {\n provide: DateTimeAdapter,\n useClass: DayjsDateTimeAdapter,\n deps: [OWL_DATE_TIME_LOCALE, OWL_DAYJS_DATE_TIME_ADAPTER_OPTIONS]\n },\n ],\n})\nexport class DayjsDateTimeModule {\n}\n\n@NgModule({\n imports: [DayjsDateTimeModule],\n providers: [{provide: OWL_DATE_TIME_FORMATS, useValue: OWL_DAYJS_DATE_TIME_FORMATS}],\n})\nexport class OwlDayjsDateTimeModule {\n}\n","/**\n * picker\n */\n\nexport { OwlDateTimeModule } from './lib/date-time/date-time.module';\nexport { OwlDateTimeIntl } from './lib/date-time/date-time-picker-intl.service';\nexport { OwlNativeDateTimeModule } from './lib/date-time/adapter/native-date-time.module';\nexport {\n OWL_DATE_TIME_LOCALE_PROVIDER,\n OWL_DATE_TIME_LOCALE,\n DateTimeAdapter\n} from './lib/date-time/adapter/date-time-adapter.class';\nexport { OWL_DATE_TIME_FORMATS, OwlDateTimeFormats } from './lib/date-time/adapter/date-time-format.class';\nexport { OwlDateTimeInlineComponent } from './lib/date-time/date-time-inline.component';\nexport { OwlDateTimeComponent } from './lib/date-time/date-time-picker.component';\nexport { OwlDayjsDateTimeModule } from './lib/date-time/adapter/dayjs-adapter/dayjs-date-time.module';\nexport { OwlCalendarComponent } from './lib/date-time/calendar.component';\nexport { OwlTimerComponent } from './lib/date-time/timer.component';\nexport { OwlDateTimeTriggerDirective } from './lib/date-time/date-time-picker-trigger.directive';\nexport { OwlDateTimeInputDirective } from './lib/date-time/date-time-picker-input.directive';\nexport { OwlMultiYearViewComponent } from './lib/date-time/calendar-multi-year-view.component';\nexport { OwlYearViewComponent } from './lib/date-time/calendar-year-view.component';\nexport { OwlMonthViewComponent } from './lib/date-time/calendar-month-view.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["observableOf","i1","i1.OwlDateTimeIntl","i2.DateTimeAdapter","i3.OwlCalendarBodyComponent","i2.OwlCalendarBodyComponent","i2","i5.OwlMultiYearViewComponent","i6.OwlYearViewComponent","i7.OwlMonthViewComponent","i4.OwlTimerBoxComponent","i5.OwlTimerComponent","i6.OwlCalendarComponent","i2.OwlDialogService","i3.DateTimeAdapter","OWL_DATETIME_VALUE_ACCESSOR","i2.OwlDateTimeContainerComponent","range"],"mappings":"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"}