{"ast":null,"code":"import { ComponentPortal, TemplatePortal, PortalModule } from '@angular/cdk/portal';\nimport { InjectionToken, EventEmitter, Component, ViewEncapsulation, ChangeDetectionStrategy, ElementRef, NgZone, Input, Output, Injectable, ChangeDetectorRef, Optional, Inject, ViewChild, forwardRef, ViewContainerRef, ContentChild, TemplateRef, Directive, NgModule } from '@angular/core';\nimport { DateRange, MatDatepickerIntl, matDatepickerAnimations, MAT_DATEPICKER_SCROLL_STRATEGY, MatDatepickerModule, MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER } from '@angular/material/datepicker';\nimport { Subscription, Subject, merge } from 'rxjs';\nimport { DateAdapter, mixinColor, MAT_DATE_LOCALE } from '@angular/material/core';\nimport { ESCAPE, SPACE, ENTER, PAGE_DOWN, PAGE_UP, END, HOME, DOWN_ARROW, UP_ARROW, RIGHT_ARROW, LEFT_ARROW } from '@angular/cdk/keycodes';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { take, startWith, takeUntil, debounceTime, filter } from 'rxjs/operators';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { OverlayConfig, Overlay } from '@angular/cdk/overlay';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport { MatDialog, MatDialogModule } from '@angular/material/dialog';\nimport { Validators, NG_VALUE_ACCESSOR, FormBuilder, NG_VALIDATORS, ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MAT_INPUT_VALUE_ACCESSOR, MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Platform, PlatformModule } from '@angular/cdk/platform';\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common';\nimport * as ɵngcc2 from '@angular/cdk/bidi';\nimport * as ɵngcc3 from '@angular/material/datepicker';\nimport * as ɵngcc4 from '@angular/material/button';\nimport * as ɵngcc5 from '@angular/cdk/portal';\nimport * as ɵngcc6 from '@angular/forms';\nimport * as ɵngcc7 from '@angular/material/form-field';\nimport * as ɵngcc8 from '@angular/material/input';\nimport * as ɵngcc9 from '@angular/material/icon';\nimport * as ɵngcc10 from '@angular/material/dialog';\nimport * as ɵngcc11 from '@angular/cdk/overlay';\nimport * as ɵngcc12 from '@angular/cdk/platform';\nconst _c0 = [\"ngx-mat-calendar-body\", \"\"];\nfunction NgxMatCalendarBody_tr_0_Template(rf, ctx) {\n if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"tr\", 2)(1, \"td\", 3);\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"padding-top\", ctx_r0._cellPadding)(\"padding-bottom\", ctx_r0._cellPadding);\n ɵngcc0.ɵɵattribute(\"colspan\", ctx_r0.numCols);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r0.label, \" \");\n }\n}\nfunction NgxMatCalendarBody_tr_1_td_1_Template(rf, ctx) {\n if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"td\", 7);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵstyleProp(\"padding-top\", ctx_r4._cellPadding)(\"padding-bottom\", ctx_r4._cellPadding);\n ɵngcc0.ɵɵattribute(\"colspan\", ctx_r4._firstRowOffset);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r4._firstRowOffset >= ctx_r4.labelMinRequiredCells ? ctx_r4.label : \"\", \" \");\n }\n}\nfunction NgxMatCalendarBody_tr_1_td_2_Template(rf, ctx) {\n if (rf & 1) {\n const _r9 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"td\", 8);\n ɵngcc0.ɵɵlistener(\"click\", function NgxMatCalendarBody_tr_1_td_2_Template_td_click_0_listener($event) {\n const restoredCtx = ɵngcc0.ɵɵrestoreView(_r9);\n const item_r6 = restoredCtx.$implicit;\n const ctx_r8 = ɵngcc0.ɵɵnextContext(2);\n return ɵngcc0.ɵɵresetView(ctx_r8._cellClicked(item_r6, $event));\n });\n ɵngcc0.ɵɵelementStart(1, \"div\", 9);\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(3, \"div\", 10);\n ɵngcc0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const item_r6 = ctx.$implicit;\n const colIndex_r7 = ctx.index;\n const rowIndex_r3 = ɵngcc0.ɵɵnextContext().index;\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"width\", ctx_r5._cellWidth)(\"padding-top\", ctx_r5._cellPadding)(\"padding-bottom\", ctx_r5._cellPadding);\n ɵngcc0.ɵɵclassProp(\"mat-calendar-body-disabled\", !item_r6.enabled)(\"mat-calendar-body-active\", ctx_r5._isActiveCell(rowIndex_r3, colIndex_r7))(\"mat-calendar-body-range-start\", ctx_r5._isRangeStart(item_r6.compareValue))(\"mat-calendar-body-range-end\", ctx_r5._isRangeEnd(item_r6.compareValue))(\"mat-calendar-body-in-range\", ctx_r5._isInRange(item_r6.compareValue))(\"mat-calendar-body-comparison-bridge-start\", ctx_r5._isComparisonBridgeStart(item_r6.compareValue, rowIndex_r3, colIndex_r7))(\"mat-calendar-body-comparison-bridge-end\", ctx_r5._isComparisonBridgeEnd(item_r6.compareValue, rowIndex_r3, colIndex_r7))(\"mat-calendar-body-comparison-start\", ctx_r5._isComparisonStart(item_r6.compareValue))(\"mat-calendar-body-comparison-end\", ctx_r5._isComparisonEnd(item_r6.compareValue))(\"mat-calendar-body-in-comparison-range\", ctx_r5._isInComparisonRange(item_r6.compareValue))(\"mat-calendar-body-preview-start\", ctx_r5._isPreviewStart(item_r6.compareValue))(\"mat-calendar-body-preview-end\", ctx_r5._isPreviewEnd(item_r6.compareValue))(\"mat-calendar-body-in-preview\", ctx_r5._isInPreview(item_r6.compareValue));\n ɵngcc0.ɵɵproperty(\"ngClass\", item_r6.cssClasses)(\"tabindex\", ctx_r5._isActiveCell(rowIndex_r3, colIndex_r7) ? 0 : -1);\n ɵngcc0.ɵɵattribute(\"data-mat-row\", rowIndex_r3)(\"data-mat-col\", colIndex_r7)(\"aria-label\", item_r6.ariaLabel)(\"aria-disabled\", !item_r6.enabled || null)(\"aria-selected\", ctx_r5._isSelected(item_r6));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"mat-calendar-body-selected\", ctx_r5._isSelected(item_r6))(\"mat-calendar-body-today\", ctx_r5.todayValue === item_r6.compareValue);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", item_r6.displayValue, \" \");\n }\n}\nfunction NgxMatCalendarBody_tr_1_Template(rf, ctx) {\n if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"tr\", 4);\n ɵngcc0.ɵɵtemplate(1, NgxMatCalendarBody_tr_1_td_1_Template, 2, 6, \"td\", 5);\n ɵngcc0.ɵɵtemplate(2, NgxMatCalendarBody_tr_1_td_2_Template, 4, 44, \"td\", 6);\n ɵngcc0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const row_r2 = ctx.$implicit;\n const rowIndex_r3 = ctx.index;\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", rowIndex_r3 === 0 && ctx_r1._firstRowOffset);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", row_r2);\n }\n}\nfunction NgxMatMonthView_th_3_Template(rf, ctx) {\n if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"th\", 5);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const day_r1 = ctx.$implicit;\n ɵngcc0.ɵɵattribute(\"aria-label\", day_r1.long);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(day_r1.narrow);\n }\n}\nconst _c1 = [\"*\"];\nfunction NgxMatCalendar_ng_template_0_Template(rf, ctx) {}\nfunction NgxMatCalendar_ngx_mat_month_view_2_Template(rf, ctx) {\n if (rf & 1) {\n const _r5 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"ngx-mat-month-view\", 5);\n ɵngcc0.ɵɵlistener(\"activeDateChange\", function NgxMatCalendar_ngx_mat_month_view_2_Template_ngx_mat_month_view_activeDateChange_0_listener($event) {\n ɵngcc0.ɵɵrestoreView(_r5);\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n return ɵngcc0.ɵɵresetView(ctx_r4.activeDate = $event);\n })(\"selectedChange\", function NgxMatCalendar_ngx_mat_month_view_2_Template_ngx_mat_month_view_selectedChange_0_listener($event) {\n ɵngcc0.ɵɵrestoreView(_r5);\n const ctx_r6 = ɵngcc0.ɵɵnextContext();\n return ɵngcc0.ɵɵresetView(ctx_r6._dateSelected($event));\n })(\"_userSelection\", function NgxMatCalendar_ngx_mat_month_view_2_Template_ngx_mat_month_view__userSelection_0_listener() {\n ɵngcc0.ɵɵrestoreView(_r5);\n const ctx_r7 = ɵngcc0.ɵɵnextContext();\n return ɵngcc0.ɵɵresetView(ctx_r7._userSelected());\n });\n ɵngcc0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"activeDate\", ctx_r1.activeDate)(\"selected\", ctx_r1.selected)(\"dateFilter\", ctx_r1.dateFilter)(\"maxDate\", ctx_r1.maxDate)(\"minDate\", ctx_r1.minDate)(\"dateClass\", ctx_r1.dateClass);\n }\n}\nfunction NgxMatCalendar_ngx_mat_year_view_3_Template(rf, ctx) {\n if (rf & 1) {\n const _r9 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"ngx-mat-year-view\", 6);\n ɵngcc0.ɵɵlistener(\"activeDateChange\", function NgxMatCalendar_ngx_mat_year_view_3_Template_ngx_mat_year_view_activeDateChange_0_listener($event) {\n ɵngcc0.ɵɵrestoreView(_r9);\n const ctx_r8 = ɵngcc0.ɵɵnextContext();\n return ɵngcc0.ɵɵresetView(ctx_r8.activeDate = $event);\n })(\"monthSelected\", function NgxMatCalendar_ngx_mat_year_view_3_Template_ngx_mat_year_view_monthSelected_0_listener($event) {\n ɵngcc0.ɵɵrestoreView(_r9);\n const ctx_r10 = ɵngcc0.ɵɵnextContext();\n return ɵngcc0.ɵɵresetView(ctx_r10._monthSelectedInYearView($event));\n })(\"selectedChange\", function NgxMatCalendar_ngx_mat_year_view_3_Template_ngx_mat_year_view_selectedChange_0_listener($event) {\n ɵngcc0.ɵɵrestoreView(_r9);\n const ctx_r11 = ɵngcc0.ɵɵnextContext();\n return ɵngcc0.ɵɵresetView(ctx_r11._goToDateInView($event, \"month\"));\n });\n ɵngcc0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"activeDate\", ctx_r2.activeDate)(\"selected\", ctx_r2.selected)(\"dateFilter\", ctx_r2.dateFilter)(\"maxDate\", ctx_r2.maxDate)(\"minDate\", ctx_r2.minDate);\n }\n}\nfunction NgxMatCalendar_ngx_mat_multi_year_view_4_Template(rf, ctx) {\n if (rf & 1) {\n const _r13 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"ngx-mat-multi-year-view\", 7);\n ɵngcc0.ɵɵlistener(\"activeDateChange\", function NgxMatCalendar_ngx_mat_multi_year_view_4_Template_ngx_mat_multi_year_view_activeDateChange_0_listener($event) {\n ɵngcc0.ɵɵrestoreView(_r13);\n const ctx_r12 = ɵngcc0.ɵɵnextContext();\n return ɵngcc0.ɵɵresetView(ctx_r12.activeDate = $event);\n })(\"yearSelected\", function NgxMatCalendar_ngx_mat_multi_year_view_4_Template_ngx_mat_multi_year_view_yearSelected_0_listener($event) {\n ɵngcc0.ɵɵrestoreView(_r13);\n const ctx_r14 = ɵngcc0.ɵɵnextContext();\n return ɵngcc0.ɵɵresetView(ctx_r14._yearSelectedInMultiYearView($event));\n })(\"selectedChange\", function NgxMatCalendar_ngx_mat_multi_year_view_4_Template_ngx_mat_multi_year_view_selectedChange_0_listener($event) {\n ɵngcc0.ɵɵrestoreView(_r13);\n const ctx_r15 = ɵngcc0.ɵɵnextContext();\n return ɵngcc0.ɵɵresetView(ctx_r15._goToDateInView($event, \"year\"));\n });\n ɵngcc0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"activeDate\", ctx_r3.activeDate)(\"selected\", ctx_r3.selected)(\"dateFilter\", ctx_r3.dateFilter)(\"maxDate\", ctx_r3.maxDate)(\"minDate\", ctx_r3.minDate);\n }\n}\nfunction NgxMatTimepickerComponent_tr_3_td_11_Template(rf, ctx) {\n if (rf & 1) {\n const _r10 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"td\")(1, \"button\", 10);\n ɵngcc0.ɵɵlistener(\"click\", function NgxMatTimepickerComponent_tr_3_td_11_Template_button_click_1_listener() {\n ɵngcc0.ɵɵrestoreView(_r10);\n const ctx_r9 = ɵngcc0.ɵɵnextContext(2);\n return ɵngcc0.ɵɵresetView(ctx_r9.change(\"second\", true));\n });\n ɵngcc0.ɵɵelementStart(2, \"mat-icon\");\n ɵngcc0.ɵɵtext(3, \"expand_less\");\n ɵngcc0.ɵɵelementEnd()()();\n }\n if (rf & 2) {\n const ctx_r6 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r6.disabled || ctx_r6.disableMinute);\n }\n}\nfunction NgxMatTimepickerComponent_tr_3_td_12_Template(rf, ctx) {\n if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"td\", 6);\n }\n}\nfunction NgxMatTimepickerComponent_tr_3_td_13_Template(rf, ctx) {\n if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"td\");\n }\n}\nfunction NgxMatTimepickerComponent_tr_3_Template(rf, ctx) {\n if (rf & 1) {\n const _r12 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"tr\")(1, \"td\")(2, \"button\", 10);\n ɵngcc0.ɵɵlistener(\"click\", function NgxMatTimepickerComponent_tr_3_Template_button_click_2_listener() {\n ɵngcc0.ɵɵrestoreView(_r12);\n const ctx_r11 = ɵngcc0.ɵɵnextContext();\n return ɵngcc0.ɵɵresetView(ctx_r11.change(\"hour\", true));\n });\n ɵngcc0.ɵɵelementStart(3, \"mat-icon\");\n ɵngcc0.ɵɵtext(4, \"expand_less\");\n ɵngcc0.ɵɵelementEnd()()();\n ɵngcc0.ɵɵelement(5, \"td\");\n ɵngcc0.ɵɵelementStart(6, \"td\")(7, \"button\", 10);\n ɵngcc0.ɵɵlistener(\"click\", function NgxMatTimepickerComponent_tr_3_Template_button_click_7_listener() {\n ɵngcc0.ɵɵrestoreView(_r12);\n const ctx_r13 = ɵngcc0.ɵɵnextContext();\n return ɵngcc0.ɵɵresetView(ctx_r13.change(\"minute\", true));\n });\n ɵngcc0.ɵɵelementStart(8, \"mat-icon\");\n ɵngcc0.ɵɵtext(9, \"expand_less\");\n ɵngcc0.ɵɵelementEnd()()();\n ɵngcc0.ɵɵelement(10, \"td\");\n ɵngcc0.ɵɵtemplate(11, NgxMatTimepickerComponent_tr_3_td_11_Template, 4, 1, \"td\", 3);\n ɵngcc0.ɵɵtemplate(12, NgxMatTimepickerComponent_tr_3_td_12_Template, 1, 0, \"td\", 8);\n ɵngcc0.ɵɵtemplate(13, NgxMatTimepickerComponent_tr_3_td_13_Template, 1, 0, \"td\", 3);\n ɵngcc0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r0.disabled);\n ɵngcc0.ɵɵadvance(5);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r0.disabled || ctx_r0.disableMinute);\n ɵngcc0.ɵɵadvance(4);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.showSeconds);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.enableMeridian);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.enableMeridian);\n }\n}\nfunction NgxMatTimepickerComponent_td_13_Template(rf, ctx) {\n if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"td\", 6);\n ɵngcc0.ɵɵtext(1, \":\");\n ɵngcc0.ɵɵelementEnd();\n }\n}\nfunction NgxMatTimepickerComponent_td_14_Template(rf, ctx) {\n if (rf & 1) {\n const _r15 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"td\")(1, \"mat-form-field\", 4)(2, \"input\", 11);\n ɵngcc0.ɵɵlistener(\"input\", function NgxMatTimepickerComponent_td_14_Template_input_input_2_listener($event) {\n ɵngcc0.ɵɵrestoreView(_r15);\n const ctx_r14 = ɵngcc0.ɵɵnextContext();\n return ɵngcc0.ɵɵresetView(ctx_r14.formatInput($event.target));\n })(\"keydown.ArrowUp\", function NgxMatTimepickerComponent_td_14_Template_input_keydown_ArrowUp_2_listener($event) {\n ɵngcc0.ɵɵrestoreView(_r15);\n const ctx_r16 = ɵngcc0.ɵɵnextContext();\n ctx_r16.change(\"second\", true);\n return ɵngcc0.ɵɵresetView($event.preventDefault());\n })(\"keydown.ArrowDown\", function NgxMatTimepickerComponent_td_14_Template_input_keydown_ArrowDown_2_listener($event) {\n ɵngcc0.ɵɵrestoreView(_r15);\n const ctx_r17 = ɵngcc0.ɵɵnextContext();\n ctx_r17.change(\"second\", false);\n return ɵngcc0.ɵɵresetView($event.preventDefault());\n })(\"blur\", function NgxMatTimepickerComponent_td_14_Template_input_blur_2_listener() {\n ɵngcc0.ɵɵrestoreView(_r15);\n const ctx_r18 = ɵngcc0.ɵɵnextContext();\n return ɵngcc0.ɵɵresetView(ctx_r18.change(\"second\"));\n });\n ɵngcc0.ɵɵelementEnd()()();\n }\n}\nfunction NgxMatTimepickerComponent_td_15_Template(rf, ctx) {\n if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"td\", 6);\n }\n}\nfunction NgxMatTimepickerComponent_td_16_Template(rf, ctx) {\n if (rf & 1) {\n const _r20 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"td\", 12)(1, \"button\", 13);\n ɵngcc0.ɵɵlistener(\"click\", function NgxMatTimepickerComponent_td_16_Template_button_click_1_listener() {\n ɵngcc0.ɵɵrestoreView(_r20);\n const ctx_r19 = ɵngcc0.ɵɵnextContext();\n return ɵngcc0.ɵɵresetView(ctx_r19.toggleMeridian());\n });\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"color\", ctx_r4.color)(\"disabled\", ctx_r4.disabled);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r4.meridian, \" \");\n }\n}\nfunction NgxMatTimepickerComponent_tr_17_td_10_Template(rf, ctx) {\n if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"td\");\n }\n}\nfunction NgxMatTimepickerComponent_tr_17_td_11_Template(rf, ctx) {\n if (rf & 1) {\n const _r26 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"td\")(1, \"button\", 14);\n ɵngcc0.ɵɵlistener(\"click\", function NgxMatTimepickerComponent_tr_17_td_11_Template_button_click_1_listener() {\n ɵngcc0.ɵɵrestoreView(_r26);\n const ctx_r25 = ɵngcc0.ɵɵnextContext(2);\n return ɵngcc0.ɵɵresetView(ctx_r25.change(\"second\", false));\n });\n ɵngcc0.ɵɵelementStart(2, \"mat-icon\");\n ɵngcc0.ɵɵtext(3, \"expand_more\");\n ɵngcc0.ɵɵelementEnd()()();\n }\n if (rf & 2) {\n const ctx_r22 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r22.disabled || ctx_r22.disableMinute);\n }\n}\nfunction NgxMatTimepickerComponent_tr_17_td_12_Template(rf, ctx) {\n if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"td\", 6);\n }\n}\nfunction NgxMatTimepickerComponent_tr_17_td_13_Template(rf, ctx) {\n if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"td\");\n }\n}\nfunction NgxMatTimepickerComponent_tr_17_Template(rf, ctx) {\n if (rf & 1) {\n const _r28 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"tr\")(1, \"td\")(2, \"button\", 14);\n ɵngcc0.ɵɵlistener(\"click\", function NgxMatTimepickerComponent_tr_17_Template_button_click_2_listener() {\n ɵngcc0.ɵɵrestoreView(_r28);\n const ctx_r27 = ɵngcc0.ɵɵnextContext();\n return ɵngcc0.ɵɵresetView(ctx_r27.change(\"hour\", false));\n });\n ɵngcc0.ɵɵelementStart(3, \"mat-icon\");\n ɵngcc0.ɵɵtext(4, \"expand_more\");\n ɵngcc0.ɵɵelementEnd()()();\n ɵngcc0.ɵɵelement(5, \"td\");\n ɵngcc0.ɵɵelementStart(6, \"td\")(7, \"button\", 14);\n ɵngcc0.ɵɵlistener(\"click\", function NgxMatTimepickerComponent_tr_17_Template_button_click_7_listener() {\n ɵngcc0.ɵɵrestoreView(_r28);\n const ctx_r29 = ɵngcc0.ɵɵnextContext();\n return ɵngcc0.ɵɵresetView(ctx_r29.change(\"minute\", false));\n });\n ɵngcc0.ɵɵelementStart(8, \"mat-icon\");\n ɵngcc0.ɵɵtext(9, \"expand_more\");\n ɵngcc0.ɵɵelementEnd()()();\n ɵngcc0.ɵɵtemplate(10, NgxMatTimepickerComponent_tr_17_td_10_Template, 1, 0, \"td\", 3);\n ɵngcc0.ɵɵtemplate(11, NgxMatTimepickerComponent_tr_17_td_11_Template, 4, 1, \"td\", 3);\n ɵngcc0.ɵɵtemplate(12, NgxMatTimepickerComponent_tr_17_td_12_Template, 1, 0, \"td\", 8);\n ɵngcc0.ɵɵtemplate(13, NgxMatTimepickerComponent_tr_17_td_13_Template, 1, 0, \"td\", 3);\n ɵngcc0.ɵɵelementEnd();\n }\n if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r5.disabled);\n ɵngcc0.ɵɵadvance(5);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r5.disabled || ctx_r5.disableMinute);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.showSeconds);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.showSeconds);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.enableMeridian);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.enableMeridian);\n }\n}\nfunction NgxMatDatetimeContent_ng_container_1_div_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r5 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 6)(1, \"ngx-mat-timepicker\", 7);\n ɵngcc0.ɵɵlistener(\"ngModelChange\", function NgxMatDatetimeContent_ng_container_1_div_1_Template_ngx_mat_timepicker_ngModelChange_1_listener($event) {\n ɵngcc0.ɵɵrestoreView(_r5);\n const ctx_r4 = ɵngcc0.ɵɵnextContext(2);\n return ɵngcc0.ɵɵresetView(ctx_r4.datepicker._selected = $event);\n });\n ɵngcc0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵclassProp(\"disable-seconds\", !ctx_r1.datepicker._showSeconds);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"showSpinners\", ctx_r1.datepicker._showSpinners)(\"showSeconds\", ctx_r1.datepicker._showSeconds)(\"disabled\", ctx_r1.datepicker._disabled)(\"stepHour\", ctx_r1.datepicker._stepHour)(\"stepMinute\", ctx_r1.datepicker._stepMinute)(\"stepSecond\", ctx_r1.datepicker._stepSecond)(\"ngModel\", ctx_r1.datepicker._selected)(\"color\", ctx_r1.datepicker._color)(\"enableMeridian\", ctx_r1.datepicker._enableMeridian)(\"disableMinute\", ctx_r1.datepicker._disableMinute);\n }\n}\nfunction NgxMatDatetimeContent_ng_container_1_mat_icon_4_Template(rf, ctx) {\n if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"mat-icon\");\n ɵngcc0.ɵɵtext(1, \"done\");\n ɵngcc0.ɵɵelementEnd();\n }\n}\nfunction NgxMatDatetimeContent_ng_container_1_ng_template_5_Template(rf, ctx) {}\nfunction NgxMatDatetimeContent_ng_container_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r7 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, NgxMatDatetimeContent_ng_container_1_div_1_Template, 2, 12, \"div\", 2);\n ɵngcc0.ɵɵelementStart(2, \"div\", 3)(3, \"button\", 4);\n ɵngcc0.ɵɵlistener(\"click\", function NgxMatDatetimeContent_ng_container_1_Template_button_click_3_listener() {\n ɵngcc0.ɵɵrestoreView(_r7);\n const ctx_r6 = ɵngcc0.ɵɵnextContext();\n return ɵngcc0.ɵɵresetView(ctx_r6.datepicker.ok());\n });\n ɵngcc0.ɵɵtemplate(4, NgxMatDatetimeContent_ng_container_1_mat_icon_4_Template, 2, 0, \"mat-icon\", 1);\n ɵngcc0.ɵɵtemplate(5, NgxMatDatetimeContent_ng_container_1_ng_template_5_Template, 0, 0, \"ng-template\", 5);\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵelementContainerEnd();\n }\n if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r0.datepicker._hideTime);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"color\", ctx_r0.datepicker._color)(\"disabled\", !ctx_r0.valid);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r0.datepicker._customIcon);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"cdkPortalOutlet\", ctx_r0._templateCustomIconPortal);\n }\n}\nclass NgxMatDateAdapter extends DateAdapter {\n /**\r\n * Check if two date have same time\r\n * @param a Date 1\r\n * @param b Date 2\r\n */\n isSameTime(a, b) {\n if (a == null || b == null) return true;\n return this.getHour(a) === this.getHour(b) && this.getMinute(a) === this.getMinute(b) && this.getSecond(a) === this.getSecond(b);\n }\n /**\r\n * Copy time from a date to a another date\r\n * @param toDate\r\n * @param fromDate\r\n */\n copyTime(toDate, fromDate) {\n this.setHour(toDate, this.getHour(fromDate));\n this.setMinute(toDate, this.getMinute(fromDate));\n this.setSecond(toDate, this.getSecond(fromDate));\n }\n /**\r\n * Compares two dates.\r\n * @param first The first date to compare.\r\n * @param second The second date to compare.\r\n * @returns 0 if the dates are equal, a number less than 0 if the first date is earlier,\r\n * a number greater than 0 if the first date is later.\r\n */\n compareDateWithTime(first, second, showSeconds) {\n let res = super.compareDate(first, second) || this.getHour(first) - this.getHour(second) || this.getMinute(first) - this.getMinute(second);\n if (showSeconds) {\n res = res || this.getSecond(first) - this.getSecond(second);\n }\n return res;\n }\n /**\r\n * Set time by using default values\r\n * @param defaultTime List default values [hour, minute, second]\r\n */\n setTimeByDefaultValues(date, defaultTime) {\n if (!Array.isArray(defaultTime)) {\n throw Error('@Input DefaultTime should be an array');\n }\n this.setHour(date, defaultTime[0] || 0);\n this.setMinute(date, defaultTime[1] || 0);\n this.setSecond(date, defaultTime[2] || 0);\n }\n}\n\n/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\nconst NGX_MAT_DATE_FORMATS = new InjectionToken('ngx-mat-date-formats');\n\n/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\n/**\r\n * An internal class that represents the data corresponding to a single calendar cell.\r\n * @docs-private\r\n */\nclass NgxMatCalendarCell {\n constructor(value, displayValue, ariaLabel, enabled, cssClasses = {}, compareValue = value, rawValue) {\n this.value = value;\n this.displayValue = displayValue;\n this.ariaLabel = ariaLabel;\n this.enabled = enabled;\n this.cssClasses = cssClasses;\n this.compareValue = compareValue;\n this.rawValue = rawValue;\n }\n}\n/**\r\n * An internal component used to display calendar data in a table.\r\n * @docs-private\r\n */\nclass NgxMatCalendarBody {\n constructor(_elementRef, _ngZone) {\n this._elementRef = _elementRef;\n this._ngZone = _ngZone;\n /** The number of columns in the table. */\n this.numCols = 7;\n /** The cell number of the active cell in the table. */\n this.activeCell = 0;\n /** Whether a range is being selected. */\n this.isRange = false;\n /**\r\n * The aspect ratio (width / height) to use for the cells in the table. This aspect ratio will be\r\n * maintained even as the table resizes.\r\n */\n this.cellAspectRatio = 1;\n /** Start of the preview range. */\n this.previewStart = null;\n /** End of the preview range. */\n this.previewEnd = null;\n /** Emits when a new value is selected. */\n this.selectedValueChange = new EventEmitter();\n /** Emits when the preview has changed as a result of a user action. */\n this.previewChange = new EventEmitter();\n /**\r\n * Event handler for when the user enters an element\r\n * inside the calendar body (e.g. by hovering in or focus).\r\n */\n this._enterHandler = event => {\n if (this._skipNextFocus && event.type === 'focus') {\n this._skipNextFocus = false;\n return;\n }\n // We only need to hit the zone when we're selecting a range.\n if (event.target && this.isRange) {\n const cell = this._getCellFromElement(event.target);\n if (cell) {\n this._ngZone.run(() => this.previewChange.emit({\n value: cell.enabled ? cell : null,\n event\n }));\n }\n }\n };\n /**\r\n * Event handler for when the user's pointer leaves an element\r\n * inside the calendar body (e.g. by hovering out or blurring).\r\n */\n this._leaveHandler = event => {\n // We only need to hit the zone when we're selecting a range.\n if (this.previewEnd !== null && this.isRange) {\n // Only reset the preview end value when leaving cells. This looks better, because\n // we have a gap between the cells and the rows and we don't want to remove the\n // range just for it to show up again when the user moves a few pixels to the side.\n if (event.target && isTableCell(event.target)) {\n this._ngZone.run(() => this.previewChange.emit({\n value: null,\n event\n }));\n }\n }\n };\n _ngZone.runOutsideAngular(() => {\n const element = _elementRef.nativeElement;\n element.addEventListener('mouseenter', this._enterHandler, true);\n element.addEventListener('focus', this._enterHandler, true);\n element.addEventListener('mouseleave', this._leaveHandler, true);\n element.addEventListener('blur', this._leaveHandler, true);\n });\n }\n /** Called when a cell is clicked. */\n _cellClicked(cell, event) {\n if (cell.enabled) {\n this.selectedValueChange.emit({\n value: cell.value,\n event\n });\n }\n }\n /** Returns whether a cell should be marked as selected. */\n _isSelected(cell) {\n return this.startValue === cell.compareValue || this.endValue === cell.compareValue;\n }\n ngOnChanges(changes) {\n const columnChanges = changes['numCols'];\n const {\n rows,\n numCols\n } = this;\n if (changes['rows'] || columnChanges) {\n this._firstRowOffset = rows && rows.length && rows[0].length ? numCols - rows[0].length : 0;\n }\n if (changes['cellAspectRatio'] || columnChanges || !this._cellPadding) {\n this._cellPadding = `${50 * this.cellAspectRatio / numCols}%`;\n }\n if (columnChanges || !this._cellWidth) {\n this._cellWidth = `${100 / numCols}%`;\n }\n }\n ngOnDestroy() {\n const element = this._elementRef.nativeElement;\n element.removeEventListener('mouseenter', this._enterHandler, true);\n element.removeEventListener('focus', this._enterHandler, true);\n element.removeEventListener('mouseleave', this._leaveHandler, true);\n element.removeEventListener('blur', this._leaveHandler, true);\n }\n /** Returns whether a cell is active. */\n _isActiveCell(rowIndex, colIndex) {\n let cellNumber = rowIndex * this.numCols + colIndex;\n // Account for the fact that the first row may not have as many cells.\n if (rowIndex) {\n cellNumber -= this._firstRowOffset;\n }\n return cellNumber == this.activeCell;\n }\n /** Focuses the active cell after the microtask queue is empty. */\n _focusActiveCell(movePreview = true) {\n this._ngZone.runOutsideAngular(() => {\n this._ngZone.onStable.asObservable().pipe(take(1)).subscribe(() => {\n const activeCell = this._elementRef.nativeElement.querySelector('.ngx-mat-calendar-body-active');\n if (activeCell) {\n if (!movePreview) {\n this._skipNextFocus = true;\n }\n activeCell.focus();\n }\n });\n });\n }\n /** Gets whether a value is the start of the main range. */\n _isRangeStart(value) {\n return isStart(value, this.startValue, this.endValue);\n }\n /** Gets whether a value is the end of the main range. */\n _isRangeEnd(value) {\n return isEnd(value, this.startValue, this.endValue);\n }\n /** Gets whether a value is within the currently-selected range. */\n _isInRange(value) {\n return isInRange(value, this.startValue, this.endValue, this.isRange);\n }\n /** Gets whether a value is the start of the comparison range. */\n _isComparisonStart(value) {\n return isStart(value, this.comparisonStart, this.comparisonEnd);\n }\n /** Whether the cell is a start bridge cell between the main and comparison ranges. */\n _isComparisonBridgeStart(value, rowIndex, colIndex) {\n if (!this._isComparisonStart(value) || this._isRangeStart(value) || !this._isInRange(value)) {\n return false;\n }\n let previousCell = this.rows[rowIndex][colIndex - 1];\n if (!previousCell) {\n const previousRow = this.rows[rowIndex - 1];\n previousCell = previousRow && previousRow[previousRow.length - 1];\n }\n return previousCell && !this._isRangeEnd(previousCell.compareValue);\n }\n /** Whether the cell is an end bridge cell between the main and comparison ranges. */\n _isComparisonBridgeEnd(value, rowIndex, colIndex) {\n if (!this._isComparisonEnd(value) || this._isRangeEnd(value) || !this._isInRange(value)) {\n return false;\n }\n let nextCell = this.rows[rowIndex][colIndex + 1];\n if (!nextCell) {\n const nextRow = this.rows[rowIndex + 1];\n nextCell = nextRow && nextRow[0];\n }\n return nextCell && !this._isRangeStart(nextCell.compareValue);\n }\n /** Gets whether a value is the end of the comparison range. */\n _isComparisonEnd(value) {\n return isEnd(value, this.comparisonStart, this.comparisonEnd);\n }\n /** Gets whether a value is within the current comparison range. */\n _isInComparisonRange(value) {\n return isInRange(value, this.comparisonStart, this.comparisonEnd, this.isRange);\n }\n /** Gets whether a value is the start of the preview range. */\n _isPreviewStart(value) {\n return isStart(value, this.previewStart, this.previewEnd);\n }\n /** Gets whether a value is the end of the preview range. */\n _isPreviewEnd(value) {\n return isEnd(value, this.previewStart, this.previewEnd);\n }\n /** Gets whether a value is inside the preview range. */\n _isInPreview(value) {\n return isInRange(value, this.previewStart, this.previewEnd, this.isRange);\n }\n /** Finds the NgxMatCalendarCell that corresponds to a DOM node. */\n _getCellFromElement(element) {\n let cell;\n if (isTableCell(element)) {\n cell = element;\n } else if (isTableCell(element.parentNode)) {\n cell = element.parentNode;\n }\n if (cell) {\n const row = cell.getAttribute('data-ngx-mat-row');\n const col = cell.getAttribute('data-ngx-mat-col');\n if (row && col) {\n return this.rows[parseInt(row)][parseInt(col)];\n }\n }\n return null;\n }\n}\nNgxMatCalendarBody.ɵfac = function NgxMatCalendarBody_Factory(t) {\n return new (t || NgxMatCalendarBody)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone));\n};\nNgxMatCalendarBody.ɵcmp = /*@__PURE__*/ɵngcc0.ɵɵdefineComponent({\n type: NgxMatCalendarBody,\n selectors: [[\"\", \"ngx-mat-calendar-body\", \"\"]],\n hostAttrs: [\"role\", \"grid\", \"aria-readonly\", \"true\", 1, \"ngx-mat-calendar-body\"],\n inputs: {\n numCols: \"numCols\",\n activeCell: \"activeCell\",\n isRange: \"isRange\",\n cellAspectRatio: \"cellAspectRatio\",\n previewStart: \"previewStart\",\n previewEnd: \"previewEnd\",\n label: \"label\",\n rows: \"rows\",\n todayValue: \"todayValue\",\n startValue: \"startValue\",\n endValue: \"endValue\",\n labelMinRequiredCells: \"labelMinRequiredCells\",\n comparisonStart: \"comparisonStart\",\n comparisonEnd: \"comparisonEnd\"\n },\n outputs: {\n selectedValueChange: \"selectedValueChange\",\n previewChange: \"previewChange\"\n },\n exportAs: [\"NgxMatCalendarBody\"],\n features: [ɵngcc0.ɵɵNgOnChangesFeature],\n attrs: _c0,\n decls: 2,\n vars: 2,\n consts: [[\"aria-hidden\", \"true\", 4, \"ngIf\"], [\"role\", \"row\", 4, \"ngFor\", \"ngForOf\"], [\"aria-hidden\", \"true\"], [1, \"mat-calendar-body-label\"], [\"role\", \"row\"], [\"aria-hidden\", \"true\", \"class\", \"mat-calendar-body-label\", 3, \"paddingTop\", \"paddingBottom\", 4, \"ngIf\"], [\"role\", \"gridcell\", \"class\", \"mat-calendar-body-cell\", 3, \"ngClass\", \"tabindex\", \"mat-calendar-body-disabled\", \"mat-calendar-body-active\", \"mat-calendar-body-range-start\", \"mat-calendar-body-range-end\", \"mat-calendar-body-in-range\", \"mat-calendar-body-comparison-bridge-start\", \"mat-calendar-body-comparison-bridge-end\", \"mat-calendar-body-comparison-start\", \"mat-calendar-body-comparison-end\", \"mat-calendar-body-in-comparison-range\", \"mat-calendar-body-preview-start\", \"mat-calendar-body-preview-end\", \"mat-calendar-body-in-preview\", \"width\", \"paddingTop\", \"paddingBottom\", \"click\", 4, \"ngFor\", \"ngForOf\"], [\"aria-hidden\", \"true\", 1, \"mat-calendar-body-label\"], [\"role\", \"gridcell\", 1, \"mat-calendar-body-cell\", 3, \"ngClass\", \"tabindex\", \"click\"], [1, \"mat-calendar-body-cell-content\", \"mat-focus-indicator\"], [1, \"mat-calendar-body-cell-preview\"]],\n template: function NgxMatCalendarBody_Template(rf, ctx) {\n if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgxMatCalendarBody_tr_0_Template, 3, 6, \"tr\", 0);\n ɵngcc0.ɵɵtemplate(1, NgxMatCalendarBody_tr_1_Template, 3, 2, \"tr\", 1);\n }\n if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx._firstRowOffset < ctx.labelMinRequiredCells);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.rows);\n }\n },\n dependencies: [ɵngcc1.NgClass, ɵngcc1.NgForOf, ɵngcc1.NgIf],\n styles: [\".mat-calendar-body{min-width:224px}.mat-calendar-body-label{height:0;line-height:0;text-align:left;padding-left:4.7142857143%;padding-right:4.7142857143%}.mat-calendar-body-cell{position:relative;height:0;line-height:0;text-align:center;outline:none;cursor:pointer}.mat-calendar-body-cell-preview,.mat-calendar-body-cell:after,.mat-calendar-body-cell:before{content:\\\"\\\";position:absolute;top:5%;left:0;z-index:0;box-sizing:border-box;height:90%;width:100%}.mat-calendar-body-comparison-start:after,.mat-calendar-body-comparison-start:not(.mat-calendar-body-comparison-bridge-start):before,.mat-calendar-body-preview-start .mat-calendar-body-cell-preview,.mat-calendar-body-range-start:after,.mat-calendar-body-range-start:not(.mat-calendar-body-in-comparison-range):before{left:5%;width:95%;border-top-left-radius:999px;border-bottom-left-radius:999px}[dir=rtl] .mat-calendar-body-comparison-start:after,[dir=rtl] .mat-calendar-body-comparison-start:not(.mat-calendar-body-comparison-bridge-start):before,[dir=rtl] .mat-calendar-body-preview-start .mat-calendar-body-cell-preview,[dir=rtl] .mat-calendar-body-range-start:after,[dir=rtl] .mat-calendar-body-range-start:not(.mat-calendar-body-in-comparison-range):before{left:0;border-radius:0;border-top-right-radius:999px;border-bottom-right-radius:999px}.mat-calendar-body-comparison-end:after,.mat-calendar-body-comparison-end:not(.mat-calendar-body-comparison-bridge-end):before,.mat-calendar-body-preview-end .mat-calendar-body-cell-preview,.mat-calendar-body-range-end:after,.mat-calendar-body-range-end:not(.mat-calendar-body-in-comparison-range):before{width:95%;border-top-right-radius:999px;border-bottom-right-radius:999px}[dir=rtl] .mat-calendar-body-comparison-end:after,[dir=rtl] .mat-calendar-body-comparison-end:not(.mat-calendar-body-comparison-bridge-end):before,[dir=rtl] .mat-calendar-body-preview-end .mat-calendar-body-cell-preview,[dir=rtl] .mat-calendar-body-range-end:after,[dir=rtl] .mat-calendar-body-range-end:not(.mat-calendar-body-in-comparison-range):before{left:5%;border-radius:0;border-top-left-radius:999px;border-bottom-left-radius:999px}[dir=rtl] .mat-calendar-body-comparison-bridge-end.mat-calendar-body-range-start:after,[dir=rtl] .mat-calendar-body-comparison-bridge-start.mat-calendar-body-range-end:after{width:95%;border-top-right-radius:999px;border-bottom-right-radius:999px}.mat-calendar-body-comparison-end.mat-calendar-body-range-start:after,.mat-calendar-body-comparison-start.mat-calendar-body-range-end:after,[dir=rtl] .mat-calendar-body-comparison-end.mat-calendar-body-range-start:after,[dir=rtl] .mat-calendar-body-comparison-start.mat-calendar-body-range-end:after{width:90%}.mat-calendar-body-in-preview .mat-calendar-body-cell-preview{border-top:1px dashed;border-bottom:1px dashed}.mat-calendar-body-preview-start .mat-calendar-body-cell-preview{border-left:1px dashed}[dir=rtl] .mat-calendar-body-preview-start .mat-calendar-body-cell-preview{border-left:0;border-right:1px dashed}.mat-calendar-body-preview-end .mat-calendar-body-cell-preview{border-right:1px dashed}[dir=rtl] .mat-calendar-body-preview-end .mat-calendar-body-cell-preview{border-right:0;border-left:1px dashed}.mat-calendar-body-disabled{cursor:default}.mat-calendar-body-cell-content{top:5%;left:5%;z-index:1;display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:90%;height:90%;line-height:1;border-width:1px;border-style:solid;border-radius:999px}.mat-calendar-body-cell-content.mat-focus-indicator{position:absolute}.cdk-high-contrast-active .mat-calendar-body-cell-content{border:none}.cdk-high-contrast-active .mat-calendar-body-selected,.cdk-high-contrast-active .mat-datepicker-popup:not(:empty){outline:1px solid}.cdk-high-contrast-active .mat-calendar-body-today{outline:1px dotted}.cdk-high-contrast-active .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected),.cdk-high-contrast-active .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected){outline:2px dotted}[dir=rtl] .mat-calendar-body-label{text-align:right}@media (hover:none){.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected){background-color:transparent}}\"],\n encapsulation: 2,\n changeDetection: 0\n});\n/** @nocollapse */\nNgxMatCalendarBody.ctorParameters = () => [{\n type: ElementRef\n}, {\n type: NgZone\n}];\nNgxMatCalendarBody.propDecorators = {\n label: [{\n type: Input\n }],\n rows: [{\n type: Input\n }],\n todayValue: [{\n type: Input\n }],\n startValue: [{\n type: Input\n }],\n endValue: [{\n type: Input\n }],\n labelMinRequiredCells: [{\n type: Input\n }],\n numCols: [{\n type: Input\n }],\n activeCell: [{\n type: Input\n }],\n isRange: [{\n type: Input\n }],\n cellAspectRatio: [{\n type: Input\n }],\n comparisonStart: [{\n type: Input\n }],\n comparisonEnd: [{\n type: Input\n }],\n previewStart: [{\n type: Input\n }],\n previewEnd: [{\n type: Input\n }],\n selectedValueChange: [{\n type: Output\n }],\n previewChange: [{\n type: Output\n }]\n};\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxMatCalendarBody, [{\n type: Component,\n args: [{\n selector: '[ngx-mat-calendar-body]',\n template: \"\\r\\n\\r\\n \\r\\n {{label}}\\r\\n \\r\\n\\r\\n\\r\\n\\r\\n\\r\\n \\r\\n \\r\\n {{_firstRowOffset >= labelMinRequiredCells ? label : ''}}\\r\\n \\r\\n \\r\\n
\\r\\n {{item.displayValue}}\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n\",\n host: {\n 'class': 'ngx-mat-calendar-body',\n 'role': 'grid',\n 'aria-readonly': 'true'\n },\n exportAs: 'NgxMatCalendarBody',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [\".mat-calendar-body{min-width:224px}.mat-calendar-body-label{height:0;line-height:0;text-align:left;padding-left:4.7142857143%;padding-right:4.7142857143%}.mat-calendar-body-cell{position:relative;height:0;line-height:0;text-align:center;outline:none;cursor:pointer}.mat-calendar-body-cell-preview,.mat-calendar-body-cell:after,.mat-calendar-body-cell:before{content:\\\"\\\";position:absolute;top:5%;left:0;z-index:0;box-sizing:border-box;height:90%;width:100%}.mat-calendar-body-comparison-start:after,.mat-calendar-body-comparison-start:not(.mat-calendar-body-comparison-bridge-start):before,.mat-calendar-body-preview-start .mat-calendar-body-cell-preview,.mat-calendar-body-range-start:after,.mat-calendar-body-range-start:not(.mat-calendar-body-in-comparison-range):before{left:5%;width:95%;border-top-left-radius:999px;border-bottom-left-radius:999px}[dir=rtl] .mat-calendar-body-comparison-start:after,[dir=rtl] .mat-calendar-body-comparison-start:not(.mat-calendar-body-comparison-bridge-start):before,[dir=rtl] .mat-calendar-body-preview-start .mat-calendar-body-cell-preview,[dir=rtl] .mat-calendar-body-range-start:after,[dir=rtl] .mat-calendar-body-range-start:not(.mat-calendar-body-in-comparison-range):before{left:0;border-radius:0;border-top-right-radius:999px;border-bottom-right-radius:999px}.mat-calendar-body-comparison-end:after,.mat-calendar-body-comparison-end:not(.mat-calendar-body-comparison-bridge-end):before,.mat-calendar-body-preview-end .mat-calendar-body-cell-preview,.mat-calendar-body-range-end:after,.mat-calendar-body-range-end:not(.mat-calendar-body-in-comparison-range):before{width:95%;border-top-right-radius:999px;border-bottom-right-radius:999px}[dir=rtl] .mat-calendar-body-comparison-end:after,[dir=rtl] .mat-calendar-body-comparison-end:not(.mat-calendar-body-comparison-bridge-end):before,[dir=rtl] .mat-calendar-body-preview-end .mat-calendar-body-cell-preview,[dir=rtl] .mat-calendar-body-range-end:after,[dir=rtl] .mat-calendar-body-range-end:not(.mat-calendar-body-in-comparison-range):before{left:5%;border-radius:0;border-top-left-radius:999px;border-bottom-left-radius:999px}[dir=rtl] .mat-calendar-body-comparison-bridge-end.mat-calendar-body-range-start:after,[dir=rtl] .mat-calendar-body-comparison-bridge-start.mat-calendar-body-range-end:after{width:95%;border-top-right-radius:999px;border-bottom-right-radius:999px}.mat-calendar-body-comparison-end.mat-calendar-body-range-start:after,.mat-calendar-body-comparison-start.mat-calendar-body-range-end:after,[dir=rtl] .mat-calendar-body-comparison-end.mat-calendar-body-range-start:after,[dir=rtl] .mat-calendar-body-comparison-start.mat-calendar-body-range-end:after{width:90%}.mat-calendar-body-in-preview .mat-calendar-body-cell-preview{border-top:1px dashed;border-bottom:1px dashed}.mat-calendar-body-preview-start .mat-calendar-body-cell-preview{border-left:1px dashed}[dir=rtl] .mat-calendar-body-preview-start .mat-calendar-body-cell-preview{border-left:0;border-right:1px dashed}.mat-calendar-body-preview-end .mat-calendar-body-cell-preview{border-right:1px dashed}[dir=rtl] .mat-calendar-body-preview-end .mat-calendar-body-cell-preview{border-right:0;border-left:1px dashed}.mat-calendar-body-disabled{cursor:default}.mat-calendar-body-cell-content{top:5%;left:5%;z-index:1;display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:90%;height:90%;line-height:1;border-width:1px;border-style:solid;border-radius:999px}.mat-calendar-body-cell-content.mat-focus-indicator{position:absolute}.cdk-high-contrast-active .mat-calendar-body-cell-content{border:none}.cdk-high-contrast-active .mat-calendar-body-selected,.cdk-high-contrast-active .mat-datepicker-popup:not(:empty){outline:1px solid}.cdk-high-contrast-active .mat-calendar-body-today{outline:1px dotted}.cdk-high-contrast-active .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected),.cdk-high-contrast-active .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected){outline:2px dotted}[dir=rtl] .mat-calendar-body-label{text-align:right}@media (hover:none){.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected){background-color:transparent}}\"]\n }]\n }], function () {\n return [{\n type: ɵngcc0.ElementRef\n }, {\n type: ɵngcc0.NgZone\n }];\n }, {\n numCols: [{\n type: Input\n }],\n activeCell: [{\n type: Input\n }],\n isRange: [{\n type: Input\n }],\n cellAspectRatio: [{\n type: Input\n }],\n previewStart: [{\n type: Input\n }],\n previewEnd: [{\n type: Input\n }],\n selectedValueChange: [{\n type: Output\n }],\n previewChange: [{\n type: Output\n }],\n label: [{\n type: Input\n }],\n rows: [{\n type: Input\n }],\n todayValue: [{\n type: Input\n }],\n startValue: [{\n type: Input\n }],\n endValue: [{\n type: Input\n }],\n labelMinRequiredCells: [{\n type: Input\n }],\n comparisonStart: [{\n type: Input\n }],\n comparisonEnd: [{\n type: Input\n }]\n });\n})();\n/** Checks whether a node is a table cell element. */\nfunction isTableCell(node) {\n return node.nodeName === 'TD';\n}\n/** Checks whether a value is the start of a range. */\nfunction isStart(value, start, end) {\n return end !== null && start !== end && value < end && value === start;\n}\n/** Checks whether a value is the end of a range. */\nfunction isEnd(value, start, end) {\n return start !== null && start !== end && value >= start && value === end;\n}\n/** Checks whether a value is inside of a range. */\nfunction isInRange(value, start, end, rangeEnabled) {\n return rangeEnabled && start !== null && end !== null && start !== end && value >= start && value <= end;\n}\n\n/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\n/** Injection token used to customize the date range selection behavior. */\nconst NGX_MAT_DATE_RANGE_SELECTION_STRATEGY = new InjectionToken('NGX_MAT_DATE_RANGE_SELECTION_STRATEGY');\n/** Provides the default date range selection behavior. */\nclass DefaultNgxMatCalendarRangeStrategy {\n constructor(_dateAdapter) {\n this._dateAdapter = _dateAdapter;\n }\n selectionFinished(date, currentRange) {\n let {\n start,\n end\n } = currentRange;\n if (start == null) {\n start = date;\n } else if (end == null && date && this._dateAdapter.compareDate(date, start) >= 0) {\n end = date;\n } else {\n start = date;\n end = null;\n }\n return new DateRange(start, end);\n }\n createPreview(activeDate, currentRange) {\n let start = null;\n let end = null;\n if (currentRange.start && !currentRange.end && activeDate) {\n start = currentRange.start;\n end = activeDate;\n }\n return new DateRange(start, end);\n }\n}\nDefaultNgxMatCalendarRangeStrategy.ɵfac = function DefaultNgxMatCalendarRangeStrategy_Factory(t) {\n return new (t || DefaultNgxMatCalendarRangeStrategy)(ɵngcc0.ɵɵinject(NgxMatDateAdapter));\n};\nDefaultNgxMatCalendarRangeStrategy.ɵprov = /*@__PURE__*/ɵngcc0.ɵɵdefineInjectable({\n token: DefaultNgxMatCalendarRangeStrategy,\n factory: DefaultNgxMatCalendarRangeStrategy.ɵfac\n});\n/** @nocollapse */\nDefaultNgxMatCalendarRangeStrategy.ctorParameters = () => [{\n type: NgxMatDateAdapter\n}];\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DefaultNgxMatCalendarRangeStrategy, [{\n type: Injectable\n }], function () {\n return [{\n type: NgxMatDateAdapter\n }];\n }, null);\n})();\nconst LIMIT_TIMES = {\n minHour: 0,\n maxHour: 24,\n minMinute: 0,\n maxMinute: 60,\n minSecond: 0,\n maxSecond: 60,\n meridian: 12\n};\nconst MERIDIANS = {\n AM: 'AM',\n PM: 'PM'\n};\nconst DEFAULT_STEP = 1;\nconst NUMERIC_REGEX = /[^0-9]/g;\nconst PATTERN_INPUT_HOUR = /^(2[0-3]|[0-1][0-9]|[0-9])$/;\nconst PATTERN_INPUT_MINUTE = /^([0-5][0-9]|[0-9])$/;\nconst PATTERN_INPUT_SECOND = /^([0-5][0-9]|[0-9])$/;\nfunction formatTwoDigitTimeValue(val) {\n const txt = val.toString();\n return txt.length > 1 ? txt : `0${txt}`;\n}\nfunction createMissingDateImplError(provider) {\n return Error(`NgxMatDatepicker: No provider found for ${provider}. You must import one of the following ` + `modules at your application root: NgxMatNativeDateModule, NgxMatMomentModule, or provide a ` + `custom implementation.`);\n}\n/** Formats a range of years. */\nfunction formatYearRange(start, end) {\n return `${start} \\u2013 ${end}`;\n}\n\n/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\nconst DAYS_PER_WEEK = 7;\n/**\r\n * An internal component used to display a single month in the datepicker.\r\n * @docs-private\r\n */\nclass NgxMatMonthView {\n constructor(_changeDetectorRef, _dateFormats, _dateAdapter, _dir, _rangeStrategy) {\n this._changeDetectorRef = _changeDetectorRef;\n this._dateFormats = _dateFormats;\n this._dateAdapter = _dateAdapter;\n this._dir = _dir;\n this._rangeStrategy = _rangeStrategy;\n this._rerenderSubscription = Subscription.EMPTY;\n /** Emits when a new date is selected. */\n this.selectedChange = new EventEmitter();\n /** Emits when any date is selected. */\n this._userSelection = new EventEmitter();\n /** Emits when any date is activated. */\n this.activeDateChange = new EventEmitter();\n if (!this._dateAdapter) {\n throw createMissingDateImplError('NgxMatDateAdapter');\n }\n if (!this._dateFormats) {\n throw createMissingDateImplError('NGX_MAT_DATE_FORMATS');\n }\n this._activeDate = this._dateAdapter.today();\n }\n /**\r\n * The date to display in this month view (everything other than the month and year is ignored).\r\n */\n get activeDate() {\n return this._activeDate;\n }\n set activeDate(value) {\n const oldActiveDate = this._activeDate;\n const validDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value)) || this._dateAdapter.today();\n this._activeDate = this._dateAdapter.clampDate(validDate, this.minDate, this.maxDate);\n if (!this._hasSameMonthAndYear(oldActiveDate, this._activeDate)) {\n this._init();\n }\n }\n /** The currently selected date. */\n get selected() {\n return this._selected;\n }\n set selected(value) {\n if (value instanceof DateRange) {\n this._selected = value;\n } else {\n this._selected = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n this._setRanges(this._selected);\n }\n /** The minimum selectable date. */\n get minDate() {\n return this._minDate;\n }\n set minDate(value) {\n this._minDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n /** The maximum selectable date. */\n get maxDate() {\n return this._maxDate;\n }\n set maxDate(value) {\n this._maxDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n ngAfterContentInit() {\n this._rerenderSubscription = this._dateAdapter.localeChanges.pipe(startWith(null)).subscribe(() => this._init());\n }\n ngOnDestroy() {\n this._rerenderSubscription.unsubscribe();\n }\n /** Handles when a new date is selected. */\n _dateSelected(event) {\n const date = event.value;\n const selectedYear = this._dateAdapter.getYear(this.activeDate);\n const selectedMonth = this._dateAdapter.getMonth(this.activeDate);\n const selectedDate = this._dateAdapter.createDate(selectedYear, selectedMonth, date);\n let rangeStartDate;\n let rangeEndDate;\n if (this._selected instanceof DateRange) {\n rangeStartDate = this._getDateInCurrentMonth(this._selected.start);\n rangeEndDate = this._getDateInCurrentMonth(this._selected.end);\n } else {\n rangeStartDate = rangeEndDate = this._getDateInCurrentMonth(this._selected);\n }\n if (rangeStartDate !== date || rangeEndDate !== date) {\n this.selectedChange.emit(selectedDate);\n }\n this._userSelection.emit({\n value: selectedDate,\n event: event.event\n });\n }\n /** Handles keydown events on the calendar body when calendar is in month view. */\n _handleCalendarBodyKeydown(event) {\n // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent\n // disabled ones from being selected. This may not be ideal, we should look into whether\n // navigation should skip over disabled dates, and if so, how to implement that efficiently.\n const oldActiveDate = this._activeDate;\n const isRtl = this._isRtl();\n switch (event.keyCode) {\n case LEFT_ARROW:\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, isRtl ? 1 : -1);\n break;\n case RIGHT_ARROW:\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, isRtl ? -1 : 1);\n break;\n case UP_ARROW:\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, -7);\n break;\n case DOWN_ARROW:\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, 7);\n break;\n case HOME:\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, 1 - this._dateAdapter.getDate(this._activeDate));\n break;\n case END:\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, this._dateAdapter.getNumDaysInMonth(this._activeDate) - this._dateAdapter.getDate(this._activeDate));\n break;\n case PAGE_UP:\n this.activeDate = event.altKey ? this._dateAdapter.addCalendarYears(this._activeDate, -1) : this._dateAdapter.addCalendarMonths(this._activeDate, -1);\n break;\n case PAGE_DOWN:\n this.activeDate = event.altKey ? this._dateAdapter.addCalendarYears(this._activeDate, 1) : this._dateAdapter.addCalendarMonths(this._activeDate, 1);\n break;\n case ENTER:\n case SPACE:\n if (!this.dateFilter || this.dateFilter(this._activeDate)) {\n this._dateSelected({\n value: this._dateAdapter.getDate(this._activeDate),\n event\n });\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n }\n return;\n case ESCAPE:\n // Abort the current range selection if the user presses escape mid-selection.\n if (this._previewEnd != null) {\n this._previewStart = this._previewEnd = null;\n this.selectedChange.emit(null);\n this._userSelection.emit({\n value: null,\n event\n });\n event.preventDefault();\n event.stopPropagation(); // Prevents the overlay from closing.\n }\n\n return;\n default:\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n return;\n }\n if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\n this.activeDateChange.emit(this.activeDate);\n }\n this._focusActiveCell();\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n }\n /** Initializes this month view. */\n _init() {\n this._setRanges(this.selected);\n this._todayDate = this._getCellCompareValue(this._dateAdapter.today());\n this._monthLabel = this._dateAdapter.getMonthNames('short')[this._dateAdapter.getMonth(this.activeDate)].toLocaleUpperCase();\n let firstOfMonth = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), this._dateAdapter.getMonth(this.activeDate), 1);\n this._firstWeekOffset = (DAYS_PER_WEEK + this._dateAdapter.getDayOfWeek(firstOfMonth) - this._dateAdapter.getFirstDayOfWeek()) % DAYS_PER_WEEK;\n this._initWeekdays();\n this._createWeekCells();\n this._changeDetectorRef.markForCheck();\n }\n /** Focuses the active cell after the microtask queue is empty. */\n _focusActiveCell(movePreview) {\n this._matCalendarBody._focusActiveCell(movePreview);\n }\n /** Called when the user has activated a new cell and the preview needs to be updated. */\n _previewChanged({\n event,\n value: cell\n }) {\n if (this._rangeStrategy) {\n // We can assume that this will be a range, because preview\n // events aren't fired for single date selections.\n const value = cell ? cell.rawValue : null;\n const previewRange = this._rangeStrategy.createPreview(value, this.selected, event);\n this._previewStart = this._getCellCompareValue(previewRange.start);\n this._previewEnd = this._getCellCompareValue(previewRange.end);\n // Note that here we need to use `detectChanges`, rather than `markForCheck`, because\n // the way `_focusActiveCell` is set up at the moment makes it fire at the wrong time\n // when navigating one month back using the keyboard which will cause this handler\n // to throw a \"changed after checked\" error when updating the preview state.\n this._changeDetectorRef.detectChanges();\n }\n }\n /** Initializes the weekdays. */\n _initWeekdays() {\n const firstDayOfWeek = this._dateAdapter.getFirstDayOfWeek();\n const narrowWeekdays = this._dateAdapter.getDayOfWeekNames('narrow');\n const longWeekdays = this._dateAdapter.getDayOfWeekNames('long');\n // Rotate the labels for days of the week based on the configured first day of the week.\n let weekdays = longWeekdays.map((long, i) => {\n return {\n long,\n narrow: narrowWeekdays[i]\n };\n });\n this._weekdays = weekdays.slice(firstDayOfWeek).concat(weekdays.slice(0, firstDayOfWeek));\n }\n /** Creates MatCalendarCells for the dates in this month. */\n _createWeekCells() {\n const daysInMonth = this._dateAdapter.getNumDaysInMonth(this.activeDate);\n const dateNames = this._dateAdapter.getDateNames();\n this._weeks = [[]];\n for (let i = 0, cell = this._firstWeekOffset; i < daysInMonth; i++, cell++) {\n if (cell == DAYS_PER_WEEK) {\n this._weeks.push([]);\n cell = 0;\n }\n const date = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), this._dateAdapter.getMonth(this.activeDate), i + 1);\n const enabled = this._shouldEnableDate(date);\n const ariaLabel = this._dateAdapter.format(date, this._dateFormats.display.dateA11yLabel);\n const cellClasses = this.dateClass ? this.dateClass(date) : undefined;\n this._weeks[this._weeks.length - 1].push(new NgxMatCalendarCell(i + 1, dateNames[i], ariaLabel, enabled, cellClasses, this._getCellCompareValue(date), date));\n }\n }\n /** Date filter for the month */\n _shouldEnableDate(date) {\n return !!date && (!this.minDate || this._dateAdapter.compareDate(date, this.minDate) >= 0) && (!this.maxDate || this._dateAdapter.compareDate(date, this.maxDate) <= 0) && (!this.dateFilter || this.dateFilter(date));\n }\n /**\r\n * Gets the date in this month that the given Date falls on.\r\n * Returns null if the given Date is in another month.\r\n */\n _getDateInCurrentMonth(date) {\n return date && this._hasSameMonthAndYear(date, this.activeDate) ? this._dateAdapter.getDate(date) : null;\n }\n /** Checks whether the 2 dates are non-null and fall within the same month of the same year. */\n _hasSameMonthAndYear(d1, d2) {\n return !!(d1 && d2 && this._dateAdapter.getMonth(d1) == this._dateAdapter.getMonth(d2) && this._dateAdapter.getYear(d1) == this._dateAdapter.getYear(d2));\n }\n /** Gets the value that will be used to one cell to another. */\n _getCellCompareValue(date) {\n if (date) {\n // We use the time since the Unix epoch to compare dates in this view, rather than the\n // cell values, because we need to support ranges that span across multiple months/years.\n const year = this._dateAdapter.getYear(date);\n const month = this._dateAdapter.getMonth(date);\n const day = this._dateAdapter.getDate(date);\n return new Date(year, month, day).getTime();\n }\n return null;\n }\n /**\r\n * @param obj The object to check.\r\n * @returns The given object if it is both a date instance and valid, otherwise null.\r\n */\n _getValidDateOrNull(obj) {\n return this._dateAdapter.isDateInstance(obj) && this._dateAdapter.isValid(obj) ? obj : null;\n }\n /** Determines whether the user has the RTL layout direction. */\n _isRtl() {\n return this._dir && this._dir.value === 'rtl';\n }\n /** Sets the current range based on a model value. */\n _setRanges(selectedValue) {\n if (selectedValue instanceof DateRange) {\n this._rangeStart = this._getCellCompareValue(selectedValue.start);\n this._rangeEnd = this._getCellCompareValue(selectedValue.end);\n this._isRange = true;\n } else {\n this._rangeStart = this._rangeEnd = this._getCellCompareValue(selectedValue);\n this._isRange = false;\n }\n this._comparisonRangeStart = this._getCellCompareValue(this.comparisonStart);\n this._comparisonRangeEnd = this._getCellCompareValue(this.comparisonEnd);\n }\n}\nNgxMatMonthView.ɵfac = function NgxMatMonthView_Factory(t) {\n return new (t || NgxMatMonthView)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(NGX_MAT_DATE_FORMATS, 8), ɵngcc0.ɵɵdirectiveInject(NgxMatDateAdapter, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.Directionality, 8), ɵngcc0.ɵɵdirectiveInject(NGX_MAT_DATE_RANGE_SELECTION_STRATEGY, 8));\n};\nNgxMatMonthView.ɵcmp = /*@__PURE__*/ɵngcc0.ɵɵdefineComponent({\n type: NgxMatMonthView,\n selectors: [[\"ngx-mat-month-view\"]],\n viewQuery: function NgxMatMonthView_Query(rf, ctx) {\n if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(NgxMatCalendarBody, 5);\n }\n if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._matCalendarBody = _t.first);\n }\n },\n inputs: {\n activeDate: \"activeDate\",\n selected: \"selected\",\n minDate: \"minDate\",\n maxDate: \"maxDate\",\n dateFilter: \"dateFilter\",\n dateClass: \"dateClass\",\n comparisonStart: \"comparisonStart\",\n comparisonEnd: \"comparisonEnd\"\n },\n outputs: {\n selectedChange: \"selectedChange\",\n _userSelection: \"_userSelection\",\n activeDateChange: \"activeDateChange\"\n },\n exportAs: [\"ngxMatMonthView\"],\n decls: 7,\n vars: 13,\n consts: [[\"role\", \"presentation\", 1, \"mat-calendar-table\"], [1, \"mat-calendar-table-header\"], [\"scope\", \"col\", 4, \"ngFor\", \"ngForOf\"], [\"colspan\", \"7\", \"aria-hidden\", \"true\", 1, \"mat-calendar-table-header-divider\"], [\"ngx-mat-calendar-body\", \"\", 3, \"label\", \"rows\", \"todayValue\", \"startValue\", \"endValue\", \"comparisonStart\", \"comparisonEnd\", \"previewStart\", \"previewEnd\", \"isRange\", \"labelMinRequiredCells\", \"activeCell\", \"selectedValueChange\", \"previewChange\", \"keydown\"], [\"scope\", \"col\"]],\n template: function NgxMatMonthView_Template(rf, ctx) {\n if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"table\", 0)(1, \"thead\", 1)(2, \"tr\");\n ɵngcc0.ɵɵtemplate(3, NgxMatMonthView_th_3_Template, 2, 2, \"th\", 2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(4, \"tr\");\n ɵngcc0.ɵɵelement(5, \"th\", 3);\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵelementStart(6, \"tbody\", 4);\n ɵngcc0.ɵɵlistener(\"selectedValueChange\", function NgxMatMonthView_Template_tbody_selectedValueChange_6_listener($event) {\n return ctx._dateSelected($event);\n })(\"previewChange\", function NgxMatMonthView_Template_tbody_previewChange_6_listener($event) {\n return ctx._previewChanged($event);\n })(\"keydown\", function NgxMatMonthView_Template_tbody_keydown_6_listener($event) {\n return ctx._handleCalendarBodyKeydown($event);\n });\n ɵngcc0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx._weekdays);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"label\", ctx._monthLabel)(\"rows\", ctx._weeks)(\"todayValue\", ctx._todayDate)(\"startValue\", ctx._rangeStart)(\"endValue\", ctx._rangeEnd)(\"comparisonStart\", ctx._comparisonRangeStart)(\"comparisonEnd\", ctx._comparisonRangeEnd)(\"previewStart\", ctx._previewStart)(\"previewEnd\", ctx._previewEnd)(\"isRange\", ctx._isRange)(\"labelMinRequiredCells\", 3)(\"activeCell\", ctx._dateAdapter.getDate(ctx.activeDate) - 1);\n }\n },\n dependencies: [ɵngcc1.NgForOf, NgxMatCalendarBody],\n encapsulation: 2,\n changeDetection: 0\n});\n/** @nocollapse */\nNgxMatMonthView.ctorParameters = () => [{\n type: ChangeDetectorRef\n}, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [NGX_MAT_DATE_FORMATS]\n }]\n}, {\n type: NgxMatDateAdapter,\n decorators: [{\n type: Optional\n }]\n}, {\n type: Directionality,\n decorators: [{\n type: Optional\n }]\n}, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [NGX_MAT_DATE_RANGE_SELECTION_STRATEGY]\n }, {\n type: Optional\n }]\n}];\nNgxMatMonthView.propDecorators = {\n activeDate: [{\n type: Input\n }],\n selected: [{\n type: Input\n }],\n minDate: [{\n type: Input\n }],\n maxDate: [{\n type: Input\n }],\n dateFilter: [{\n type: Input\n }],\n dateClass: [{\n type: Input\n }],\n comparisonStart: [{\n type: Input\n }],\n comparisonEnd: [{\n type: Input\n }],\n selectedChange: [{\n type: Output\n }],\n _userSelection: [{\n type: Output\n }],\n activeDateChange: [{\n type: Output\n }],\n _matCalendarBody: [{\n type: ViewChild,\n args: [NgxMatCalendarBody]\n }]\n};\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxMatMonthView, [{\n type: Component,\n args: [{\n selector: 'ngx-mat-month-view',\n template: \"\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
{{day.narrow}}
\\r\\n\",\n exportAs: 'ngxMatMonthView',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () {\n return [{\n type: ɵngcc0.ChangeDetectorRef\n }, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [NGX_MAT_DATE_FORMATS]\n }]\n }, {\n type: NgxMatDateAdapter,\n decorators: [{\n type: Optional\n }]\n }, {\n type: ɵngcc2.Directionality,\n decorators: [{\n type: Optional\n }]\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [NGX_MAT_DATE_RANGE_SELECTION_STRATEGY]\n }, {\n type: Optional\n }]\n }];\n }, {\n selectedChange: [{\n type: Output\n }],\n _userSelection: [{\n type: Output\n }],\n activeDateChange: [{\n type: Output\n }],\n activeDate: [{\n type: Input\n }],\n selected: [{\n type: Input\n }],\n minDate: [{\n type: Input\n }],\n maxDate: [{\n type: Input\n }],\n dateFilter: [{\n type: Input\n }],\n dateClass: [{\n type: Input\n }],\n comparisonStart: [{\n type: Input\n }],\n comparisonEnd: [{\n type: Input\n }],\n _matCalendarBody: [{\n type: ViewChild,\n args: [NgxMatCalendarBody]\n }]\n });\n})();\n\n/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\nconst yearsPerPage = 24;\nconst yearsPerRow = 4;\n/**\r\n * An internal component used to display a year selector in the datepicker.\r\n * @docs-private\r\n */\nclass NgxMatMultiYearView {\n constructor(_changeDetectorRef, _dateAdapter, _dir) {\n this._changeDetectorRef = _changeDetectorRef;\n this._dateAdapter = _dateAdapter;\n this._dir = _dir;\n this._rerenderSubscription = Subscription.EMPTY;\n /** Emits when a new year is selected. */\n this.selectedChange = new EventEmitter();\n /** Emits the selected year. This doesn't imply a change on the selected date */\n this.yearSelected = new EventEmitter();\n /** Emits when any date is activated. */\n this.activeDateChange = new EventEmitter();\n if (!this._dateAdapter) {\n throw createMissingDateImplError('NgxMatDateAdapter');\n }\n this._activeDate = this._dateAdapter.today();\n }\n /** The date to display in this multi-year view (everything other than the year is ignored). */\n get activeDate() {\n return this._activeDate;\n }\n set activeDate(value) {\n let oldActiveDate = this._activeDate;\n const validDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value)) || this._dateAdapter.today();\n this._activeDate = this._dateAdapter.clampDate(validDate, this.minDate, this.maxDate);\n if (!isSameMultiYearView(this._dateAdapter, oldActiveDate, this._activeDate, this.minDate, this.maxDate)) {\n this._init();\n }\n }\n /** The currently selected date. */\n get selected() {\n return this._selected;\n }\n set selected(value) {\n if (value instanceof DateRange) {\n this._selected = value;\n } else {\n this._selected = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n this._setSelectedYear(value);\n }\n /** The minimum selectable date. */\n get minDate() {\n return this._minDate;\n }\n set minDate(value) {\n this._minDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n /** The maximum selectable date. */\n get maxDate() {\n return this._maxDate;\n }\n set maxDate(value) {\n this._maxDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n ngAfterContentInit() {\n this._rerenderSubscription = this._dateAdapter.localeChanges.pipe(startWith(null)).subscribe(() => this._init());\n }\n ngOnDestroy() {\n this._rerenderSubscription.unsubscribe();\n }\n /** Initializes this multi-year view. */\n _init() {\n this._todayYear = this._dateAdapter.getYear(this._dateAdapter.today());\n // We want a range years such that we maximize the number of\n // enabled dates visible at once. This prevents issues where the minimum year\n // is the last item of a page OR the maximum year is the first item of a page.\n // The offset from the active year to the \"slot\" for the starting year is the\n // *actual* first rendered year in the multi-year view.\n const activeYear = this._dateAdapter.getYear(this._activeDate);\n const minYearOfPage = activeYear - getActiveOffset(this._dateAdapter, this.activeDate, this.minDate, this.maxDate);\n this._years = [];\n for (let i = 0, row = []; i < yearsPerPage; i++) {\n row.push(minYearOfPage + i);\n if (row.length == yearsPerRow) {\n this._years.push(row.map(year => this._createCellForYear(year)));\n row = [];\n }\n }\n this._changeDetectorRef.markForCheck();\n }\n /** Handles when a new year is selected. */\n _yearSelected(event) {\n const year = event.value;\n this.yearSelected.emit(this._dateAdapter.createDate(year, 0, 1));\n let month = this._dateAdapter.getMonth(this.activeDate);\n let daysInMonth = this._dateAdapter.getNumDaysInMonth(this._dateAdapter.createDate(year, month, 1));\n this.selectedChange.emit(this._dateAdapter.createDate(year, month, Math.min(this._dateAdapter.getDate(this.activeDate), daysInMonth)));\n }\n /** Handles keydown events on the calendar body when calendar is in multi-year view. */\n _handleCalendarBodyKeydown(event) {\n const oldActiveDate = this._activeDate;\n const isRtl = this._isRtl();\n switch (event.keyCode) {\n case LEFT_ARROW:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, isRtl ? 1 : -1);\n break;\n case RIGHT_ARROW:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, isRtl ? -1 : 1);\n break;\n case UP_ARROW:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, -yearsPerRow);\n break;\n case DOWN_ARROW:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, yearsPerRow);\n break;\n case HOME:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, -getActiveOffset(this._dateAdapter, this.activeDate, this.minDate, this.maxDate));\n break;\n case END:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, yearsPerPage - getActiveOffset(this._dateAdapter, this.activeDate, this.minDate, this.maxDate) - 1);\n break;\n case PAGE_UP:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, event.altKey ? -yearsPerPage * 10 : -yearsPerPage);\n break;\n case PAGE_DOWN:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, event.altKey ? yearsPerPage * 10 : yearsPerPage);\n break;\n case ENTER:\n case SPACE:\n this._yearSelected({\n value: this._dateAdapter.getYear(this._activeDate),\n event\n });\n break;\n default:\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n return;\n }\n if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\n this.activeDateChange.emit(this.activeDate);\n }\n this._focusActiveCell();\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n }\n _getActiveCell() {\n return getActiveOffset(this._dateAdapter, this.activeDate, this.minDate, this.maxDate);\n }\n /** Focuses the active cell after the microtask queue is empty. */\n _focusActiveCell() {\n this._matCalendarBody._focusActiveCell();\n }\n /** Creates an MatCalendarCell for the given year. */\n _createCellForYear(year) {\n let yearName = this._dateAdapter.getYearName(this._dateAdapter.createDate(year, 0, 1));\n return new NgxMatCalendarCell(year, yearName, yearName, this._shouldEnableYear(year));\n }\n /** Whether the given year is enabled. */\n _shouldEnableYear(year) {\n // disable if the year is greater than maxDate lower than minDate\n if (year === undefined || year === null || this.maxDate && year > this._dateAdapter.getYear(this.maxDate) || this.minDate && year < this._dateAdapter.getYear(this.minDate)) {\n return false;\n }\n // enable if it reaches here and there's no filter defined\n if (!this.dateFilter) {\n return true;\n }\n const firstOfYear = this._dateAdapter.createDate(year, 0, 1);\n // If any date in the year is enabled count the year as enabled.\n for (let date = firstOfYear; this._dateAdapter.getYear(date) == year; date = this._dateAdapter.addCalendarDays(date, 1)) {\n if (this.dateFilter(date)) {\n return true;\n }\n }\n return false;\n }\n /**\r\n * @param obj The object to check.\r\n * @returns The given object if it is both a date instance and valid, otherwise null.\r\n */\n _getValidDateOrNull(obj) {\n return this._dateAdapter.isDateInstance(obj) && this._dateAdapter.isValid(obj) ? obj : null;\n }\n /** Determines whether the user has the RTL layout direction. */\n _isRtl() {\n return this._dir && this._dir.value === 'rtl';\n }\n /** Sets the currently-highlighted year based on a model value. */\n _setSelectedYear(value) {\n this._selectedYear = null;\n if (value instanceof DateRange) {\n const displayValue = value.start || value.end;\n if (displayValue) {\n this._selectedYear = this._dateAdapter.getYear(displayValue);\n }\n } else if (value) {\n this._selectedYear = this._dateAdapter.getYear(value);\n }\n }\n}\nNgxMatMultiYearView.ɵfac = function NgxMatMultiYearView_Factory(t) {\n return new (t || NgxMatMultiYearView)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(NgxMatDateAdapter, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.Directionality, 8));\n};\nNgxMatMultiYearView.ɵcmp = /*@__PURE__*/ɵngcc0.ɵɵdefineComponent({\n type: NgxMatMultiYearView,\n selectors: [[\"ngx-mat-multi-year-view\"]],\n viewQuery: function NgxMatMultiYearView_Query(rf, ctx) {\n if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(NgxMatCalendarBody, 5);\n }\n if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._matCalendarBody = _t.first);\n }\n },\n inputs: {\n activeDate: \"activeDate\",\n selected: \"selected\",\n minDate: \"minDate\",\n maxDate: \"maxDate\",\n dateFilter: \"dateFilter\"\n },\n outputs: {\n selectedChange: \"selectedChange\",\n yearSelected: \"yearSelected\",\n activeDateChange: \"activeDateChange\"\n },\n exportAs: [\"ngxMatMultiYearView\"],\n decls: 5,\n vars: 7,\n consts: [[\"role\", \"presentation\", 1, \"mat-calendar-table\"], [1, \"mat-calendar-table-header\"], [\"colspan\", \"4\", 1, \"mat-calendar-table-header-divider\"], [\"ngx-mat-calendar-body\", \"\", 3, \"rows\", \"todayValue\", \"startValue\", \"endValue\", \"numCols\", \"cellAspectRatio\", \"activeCell\", \"selectedValueChange\", \"keydown\"]],\n template: function NgxMatMultiYearView_Template(rf, ctx) {\n if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"table\", 0)(1, \"thead\", 1)(2, \"tr\");\n ɵngcc0.ɵɵelement(3, \"th\", 2);\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵelementStart(4, \"tbody\", 3);\n ɵngcc0.ɵɵlistener(\"selectedValueChange\", function NgxMatMultiYearView_Template_tbody_selectedValueChange_4_listener($event) {\n return ctx._yearSelected($event);\n })(\"keydown\", function NgxMatMultiYearView_Template_tbody_keydown_4_listener($event) {\n return ctx._handleCalendarBodyKeydown($event);\n });\n ɵngcc0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n ɵngcc0.ɵɵadvance(4);\n ɵngcc0.ɵɵproperty(\"rows\", ctx._years)(\"todayValue\", ctx._todayYear)(\"startValue\", ctx._selectedYear)(\"endValue\", ctx._selectedYear)(\"numCols\", 4)(\"cellAspectRatio\", 4 / 7)(\"activeCell\", ctx._getActiveCell());\n }\n },\n dependencies: [NgxMatCalendarBody],\n encapsulation: 2,\n changeDetection: 0\n});\n/** @nocollapse */\nNgxMatMultiYearView.ctorParameters = () => [{\n type: ChangeDetectorRef\n}, {\n type: NgxMatDateAdapter,\n decorators: [{\n type: Optional\n }]\n}, {\n type: Directionality,\n decorators: [{\n type: Optional\n }]\n}];\nNgxMatMultiYearView.propDecorators = {\n activeDate: [{\n type: Input\n }],\n selected: [{\n type: Input\n }],\n minDate: [{\n type: Input\n }],\n maxDate: [{\n type: Input\n }],\n dateFilter: [{\n type: Input\n }],\n selectedChange: [{\n type: Output\n }],\n yearSelected: [{\n type: Output\n }],\n activeDateChange: [{\n type: Output\n }],\n _matCalendarBody: [{\n type: ViewChild,\n args: [NgxMatCalendarBody]\n }]\n};\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxMatMultiYearView, [{\n type: Component,\n args: [{\n selector: 'ngx-mat-multi-year-view',\n template: \"\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n\",\n exportAs: 'ngxMatMultiYearView',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () {\n return [{\n type: ɵngcc0.ChangeDetectorRef\n }, {\n type: NgxMatDateAdapter,\n decorators: [{\n type: Optional\n }]\n }, {\n type: ɵngcc2.Directionality,\n decorators: [{\n type: Optional\n }]\n }];\n }, {\n selectedChange: [{\n type: Output\n }],\n yearSelected: [{\n type: Output\n }],\n activeDateChange: [{\n type: Output\n }],\n activeDate: [{\n type: Input\n }],\n selected: [{\n type: Input\n }],\n minDate: [{\n type: Input\n }],\n maxDate: [{\n type: Input\n }],\n dateFilter: [{\n type: Input\n }],\n _matCalendarBody: [{\n type: ViewChild,\n args: [NgxMatCalendarBody]\n }]\n });\n})();\nfunction isSameMultiYearView(dateAdapter, date1, date2, minDate, maxDate) {\n const year1 = dateAdapter.getYear(date1);\n const year2 = dateAdapter.getYear(date2);\n const startingYear = getStartingYear(dateAdapter, minDate, maxDate);\n return Math.floor((year1 - startingYear) / yearsPerPage) === Math.floor((year2 - startingYear) / yearsPerPage);\n}\n/**\r\n * When the multi-year view is first opened, the active year will be in view.\r\n * So we compute how many years are between the active year and the *slot* where our\r\n * \"startingYear\" will render when paged into view.\r\n */\nfunction getActiveOffset(dateAdapter, activeDate, minDate, maxDate) {\n const activeYear = dateAdapter.getYear(activeDate);\n return euclideanModulo(activeYear - getStartingYear(dateAdapter, minDate, maxDate), yearsPerPage);\n}\n/**\r\n * We pick a \"starting\" year such that either the maximum year would be at the end\r\n * or the minimum year would be at the beginning of a page.\r\n */\nfunction getStartingYear(dateAdapter, minDate, maxDate) {\n let startingYear = 0;\n if (maxDate) {\n const maxYear = dateAdapter.getYear(maxDate);\n startingYear = maxYear - yearsPerPage + 1;\n } else if (minDate) {\n startingYear = dateAdapter.getYear(minDate);\n }\n return startingYear;\n}\n/** Gets remainder that is non-negative, even if first number is negative */\nfunction euclideanModulo(a, b) {\n return (a % b + b) % b;\n}\n\n/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\n/**\r\n * An internal component used to display a single year in the datepicker.\r\n * @docs-private\r\n */\nclass NgxMatYearView {\n constructor(_changeDetectorRef, _dateFormats, _dateAdapter, _dir) {\n this._changeDetectorRef = _changeDetectorRef;\n this._dateFormats = _dateFormats;\n this._dateAdapter = _dateAdapter;\n this._dir = _dir;\n this._rerenderSubscription = Subscription.EMPTY;\n /** Emits when a new month is selected. */\n this.selectedChange = new EventEmitter();\n /** Emits the selected month. This doesn't imply a change on the selected date */\n this.monthSelected = new EventEmitter();\n /** Emits when any date is activated. */\n this.activeDateChange = new EventEmitter();\n if (!this._dateAdapter) {\n throw createMissingDateImplError('NgxMatDateAdapter');\n }\n if (!this._dateFormats) {\n throw createMissingDateImplError('NGX_MAT_DATE_FORMATS');\n }\n this._activeDate = this._dateAdapter.today();\n }\n /** The date to display in this year view (everything other than the year is ignored). */\n get activeDate() {\n return this._activeDate;\n }\n set activeDate(value) {\n let oldActiveDate = this._activeDate;\n const validDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value)) || this._dateAdapter.today();\n this._activeDate = this._dateAdapter.clampDate(validDate, this.minDate, this.maxDate);\n if (this._dateAdapter.getYear(oldActiveDate) !== this._dateAdapter.getYear(this._activeDate)) {\n this._init();\n }\n }\n /** The currently selected date. */\n get selected() {\n return this._selected;\n }\n set selected(value) {\n if (value instanceof DateRange) {\n this._selected = value;\n } else {\n this._selected = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n this._setSelectedMonth(value);\n }\n /** The minimum selectable date. */\n get minDate() {\n return this._minDate;\n }\n set minDate(value) {\n this._minDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n /** The maximum selectable date. */\n get maxDate() {\n return this._maxDate;\n }\n set maxDate(value) {\n this._maxDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n ngAfterContentInit() {\n this._rerenderSubscription = this._dateAdapter.localeChanges.pipe(startWith(null)).subscribe(() => this._init());\n }\n ngOnDestroy() {\n this._rerenderSubscription.unsubscribe();\n }\n /** Handles when a new month is selected. */\n _monthSelected(event) {\n const month = event.value;\n const normalizedDate = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), month, 1);\n this.monthSelected.emit(normalizedDate);\n const daysInMonth = this._dateAdapter.getNumDaysInMonth(normalizedDate);\n this.selectedChange.emit(this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), month, Math.min(this._dateAdapter.getDate(this.activeDate), daysInMonth)));\n }\n /** Handles keydown events on the calendar body when calendar is in year view. */\n _handleCalendarBodyKeydown(event) {\n // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent\n // disabled ones from being selected. This may not be ideal, we should look into whether\n // navigation should skip over disabled dates, and if so, how to implement that efficiently.\n const oldActiveDate = this._activeDate;\n const isRtl = this._isRtl();\n switch (event.keyCode) {\n case LEFT_ARROW:\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, isRtl ? 1 : -1);\n break;\n case RIGHT_ARROW:\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, isRtl ? -1 : 1);\n break;\n case UP_ARROW:\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, -4);\n break;\n case DOWN_ARROW:\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, 4);\n break;\n case HOME:\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, -this._dateAdapter.getMonth(this._activeDate));\n break;\n case END:\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, 11 - this._dateAdapter.getMonth(this._activeDate));\n break;\n case PAGE_UP:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, event.altKey ? -10 : -1);\n break;\n case PAGE_DOWN:\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, event.altKey ? 10 : 1);\n break;\n case ENTER:\n case SPACE:\n this._monthSelected({\n value: this._dateAdapter.getMonth(this._activeDate),\n event\n });\n break;\n default:\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\n return;\n }\n if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\n this.activeDateChange.emit(this.activeDate);\n }\n this._focusActiveCell();\n // Prevent unexpected default actions such as form submission.\n event.preventDefault();\n }\n /** Initializes this year view. */\n _init() {\n this._setSelectedMonth(this.selected);\n this._todayMonth = this._getMonthInCurrentYear(this._dateAdapter.today());\n this._yearLabel = this._dateAdapter.getYearName(this.activeDate);\n let monthNames = this._dateAdapter.getMonthNames('short');\n // First row of months only contains 5 elements so we can fit the year label on the same row.\n this._months = [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]].map(row => row.map(month => this._createCellForMonth(month, monthNames[month])));\n this._changeDetectorRef.markForCheck();\n }\n /** Focuses the active cell after the microtask queue is empty. */\n _focusActiveCell() {\n this._matCalendarBody._focusActiveCell();\n }\n /**\r\n * Gets the month in this year that the given Date falls on.\r\n * Returns null if the given Date is in another year.\r\n */\n _getMonthInCurrentYear(date) {\n return date && this._dateAdapter.getYear(date) == this._dateAdapter.getYear(this.activeDate) ? this._dateAdapter.getMonth(date) : null;\n }\n /** Creates an MatCalendarCell for the given month. */\n _createCellForMonth(month, monthName) {\n let ariaLabel = this._dateAdapter.format(this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), month, 1), this._dateFormats.display.monthYearA11yLabel);\n return new NgxMatCalendarCell(month, monthName.toLocaleUpperCase(), ariaLabel, this._shouldEnableMonth(month));\n }\n /** Whether the given month is enabled. */\n _shouldEnableMonth(month) {\n const activeYear = this._dateAdapter.getYear(this.activeDate);\n if (month === undefined || month === null || this._isYearAndMonthAfterMaxDate(activeYear, month) || this._isYearAndMonthBeforeMinDate(activeYear, month)) {\n return false;\n }\n if (!this.dateFilter) {\n return true;\n }\n const firstOfMonth = this._dateAdapter.createDate(activeYear, month, 1);\n // If any date in the month is enabled count the month as enabled.\n for (let date = firstOfMonth; this._dateAdapter.getMonth(date) == month; date = this._dateAdapter.addCalendarDays(date, 1)) {\n if (this.dateFilter(date)) {\n return true;\n }\n }\n return false;\n }\n /**\r\n * Tests whether the combination month/year is after this.maxDate, considering\r\n * just the month and year of this.maxDate\r\n */\n _isYearAndMonthAfterMaxDate(year, month) {\n if (this.maxDate) {\n const maxYear = this._dateAdapter.getYear(this.maxDate);\n const maxMonth = this._dateAdapter.getMonth(this.maxDate);\n return year > maxYear || year === maxYear && month > maxMonth;\n }\n return false;\n }\n /**\r\n * Tests whether the combination month/year is before this.minDate, considering\r\n * just the month and year of this.minDate\r\n */\n _isYearAndMonthBeforeMinDate(year, month) {\n if (this.minDate) {\n const minYear = this._dateAdapter.getYear(this.minDate);\n const minMonth = this._dateAdapter.getMonth(this.minDate);\n return year < minYear || year === minYear && month < minMonth;\n }\n return false;\n }\n /**\r\n * @param obj The object to check.\r\n * @returns The given object if it is both a date instance and valid, otherwise null.\r\n */\n _getValidDateOrNull(obj) {\n return this._dateAdapter.isDateInstance(obj) && this._dateAdapter.isValid(obj) ? obj : null;\n }\n /** Determines whether the user has the RTL layout direction. */\n _isRtl() {\n return this._dir && this._dir.value === 'rtl';\n }\n /** Sets the currently-selected month based on a model value. */\n _setSelectedMonth(value) {\n if (value instanceof DateRange) {\n this._selectedMonth = this._getMonthInCurrentYear(value.start) || this._getMonthInCurrentYear(value.end);\n } else {\n this._selectedMonth = this._getMonthInCurrentYear(value);\n }\n }\n}\nNgxMatYearView.ɵfac = function NgxMatYearView_Factory(t) {\n return new (t || NgxMatYearView)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(NGX_MAT_DATE_FORMATS, 8), ɵngcc0.ɵɵdirectiveInject(NgxMatDateAdapter, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.Directionality, 8));\n};\nNgxMatYearView.ɵcmp = /*@__PURE__*/ɵngcc0.ɵɵdefineComponent({\n type: NgxMatYearView,\n selectors: [[\"ngx-mat-year-view\"]],\n viewQuery: function NgxMatYearView_Query(rf, ctx) {\n if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(NgxMatCalendarBody, 5);\n }\n if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._matCalendarBody = _t.first);\n }\n },\n inputs: {\n activeDate: \"activeDate\",\n selected: \"selected\",\n minDate: \"minDate\",\n maxDate: \"maxDate\",\n dateFilter: \"dateFilter\"\n },\n outputs: {\n selectedChange: \"selectedChange\",\n monthSelected: \"monthSelected\",\n activeDateChange: \"activeDateChange\"\n },\n exportAs: [\"ngxMatYearView\"],\n decls: 5,\n vars: 9,\n consts: [[\"role\", \"presentation\", 1, \"mat-calendar-table\"], [1, \"mat-calendar-table-header\"], [\"colspan\", \"4\", 1, \"mat-calendar-table-header-divider\"], [\"ngx-mat-calendar-body\", \"\", 3, \"label\", \"rows\", \"todayValue\", \"startValue\", \"endValue\", \"labelMinRequiredCells\", \"numCols\", \"cellAspectRatio\", \"activeCell\", \"selectedValueChange\", \"keydown\"]],\n template: function NgxMatYearView_Template(rf, ctx) {\n if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"table\", 0)(1, \"thead\", 1)(2, \"tr\");\n ɵngcc0.ɵɵelement(3, \"th\", 2);\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵelementStart(4, \"tbody\", 3);\n ɵngcc0.ɵɵlistener(\"selectedValueChange\", function NgxMatYearView_Template_tbody_selectedValueChange_4_listener($event) {\n return ctx._monthSelected($event);\n })(\"keydown\", function NgxMatYearView_Template_tbody_keydown_4_listener($event) {\n return ctx._handleCalendarBodyKeydown($event);\n });\n ɵngcc0.ɵɵelementEnd()();\n }\n if (rf & 2) {\n ɵngcc0.ɵɵadvance(4);\n ɵngcc0.ɵɵproperty(\"label\", ctx._yearLabel)(\"rows\", ctx._months)(\"todayValue\", ctx._todayMonth)(\"startValue\", ctx._selectedMonth)(\"endValue\", ctx._selectedMonth)(\"labelMinRequiredCells\", 2)(\"numCols\", 4)(\"cellAspectRatio\", 4 / 7)(\"activeCell\", ctx._dateAdapter.getMonth(ctx.activeDate));\n }\n },\n dependencies: [NgxMatCalendarBody],\n encapsulation: 2,\n changeDetection: 0\n});\n/** @nocollapse */\nNgxMatYearView.ctorParameters = () => [{\n type: ChangeDetectorRef\n}, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [NGX_MAT_DATE_FORMATS]\n }]\n}, {\n type: NgxMatDateAdapter,\n decorators: [{\n type: Optional\n }]\n}, {\n type: Directionality,\n decorators: [{\n type: Optional\n }]\n}];\nNgxMatYearView.propDecorators = {\n activeDate: [{\n type: Input\n }],\n selected: [{\n type: Input\n }],\n minDate: [{\n type: Input\n }],\n maxDate: [{\n type: Input\n }],\n dateFilter: [{\n type: Input\n }],\n selectedChange: [{\n type: Output\n }],\n monthSelected: [{\n type: Output\n }],\n activeDateChange: [{\n type: Output\n }],\n _matCalendarBody: [{\n type: ViewChild,\n args: [NgxMatCalendarBody]\n }]\n};\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxMatYearView, [{\n type: Component,\n args: [{\n selector: 'ngx-mat-year-view',\n template: \"\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\",\n exportAs: 'ngxMatYearView',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () {\n return [{\n type: ɵngcc0.ChangeDetectorRef\n }, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [NGX_MAT_DATE_FORMATS]\n }]\n }, {\n type: NgxMatDateAdapter,\n decorators: [{\n type: Optional\n }]\n }, {\n type: ɵngcc2.Directionality,\n decorators: [{\n type: Optional\n }]\n }];\n }, {\n selectedChange: [{\n type: Output\n }],\n monthSelected: [{\n type: Output\n }],\n activeDateChange: [{\n type: Output\n }],\n activeDate: [{\n type: Input\n }],\n selected: [{\n type: Input\n }],\n minDate: [{\n type: Input\n }],\n maxDate: [{\n type: Input\n }],\n dateFilter: [{\n type: Input\n }],\n _matCalendarBody: [{\n type: ViewChild,\n args: [NgxMatCalendarBody]\n }]\n });\n})();\n\n/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\n/** Default header for NgxMatCalendar */\nclass NgxMatCalendarHeader {\n constructor(_intl, calendar, _dateAdapter, _dateFormats, changeDetectorRef) {\n this._intl = _intl;\n this.calendar = calendar;\n this._dateAdapter = _dateAdapter;\n this._dateFormats = _dateFormats;\n this.calendar.stateChanges.subscribe(() => changeDetectorRef.markForCheck());\n }\n /** The label for the current calendar view. */\n get periodButtonText() {\n if (this.calendar.currentView == 'month') {\n return this._dateAdapter.format(this.calendar.activeDate, this._dateFormats.display.monthYearLabel).toLocaleUpperCase();\n }\n if (this.calendar.currentView == 'year') {\n return this._dateAdapter.getYearName(this.calendar.activeDate);\n }\n // The offset from the active year to the \"slot\" for the starting year is the\n // *actual* first rendered year in the multi-year view, and the last year is\n // just yearsPerPage - 1 away.\n const activeYear = this._dateAdapter.getYear(this.calendar.activeDate);\n const minYearOfPage = activeYear - getActiveOffset(this._dateAdapter, this.calendar.activeDate, this.calendar.minDate, this.calendar.maxDate);\n const maxYearOfPage = minYearOfPage + yearsPerPage - 1;\n const minYearName = this._dateAdapter.getYearName(this._dateAdapter.createDate(minYearOfPage, 0, 1));\n const maxYearName = this._dateAdapter.getYearName(this._dateAdapter.createDate(maxYearOfPage, 0, 1));\n return formatYearRange(minYearName, maxYearName);\n }\n get periodButtonLabel() {\n return this.calendar.currentView == 'month' ? this._intl.switchToMultiYearViewLabel : this._intl.switchToMonthViewLabel;\n }\n /** The label for the previous button. */\n get prevButtonLabel() {\n return {\n 'month': this._intl.prevMonthLabel,\n 'year': this._intl.prevYearLabel,\n 'multi-year': this._intl.prevMultiYearLabel\n }[this.calendar.currentView];\n }\n /** The label for the next button. */\n get nextButtonLabel() {\n return {\n 'month': this._intl.nextMonthLabel,\n 'year': this._intl.nextYearLabel,\n 'multi-year': this._intl.nextMultiYearLabel\n }[this.calendar.currentView];\n }\n /** Handles user clicks on the period label. */\n currentPeriodClicked() {\n this.calendar.currentView = this.calendar.currentView == 'month' ? 'multi-year' : 'month';\n }\n /** Handles user clicks on the previous button. */\n previousClicked() {\n this.calendar.activeDate = this.calendar.currentView == 'month' ? this._dateAdapter.addCalendarMonths(this.calendar.activeDate, -1) : this._dateAdapter.addCalendarYears(this.calendar.activeDate, this.calendar.currentView == 'year' ? -1 : -yearsPerPage);\n }\n /** Handles user clicks on the next button. */\n nextClicked() {\n this.calendar.activeDate = this.calendar.currentView == 'month' ? this._dateAdapter.addCalendarMonths(this.calendar.activeDate, 1) : this._dateAdapter.addCalendarYears(this.calendar.activeDate, this.calendar.currentView == 'year' ? 1 : yearsPerPage);\n }\n /** Whether the previous period button is enabled. */\n previousEnabled() {\n if (!this.calendar.minDate) {\n return true;\n }\n return !this.calendar.minDate || !this._isSameView(this.calendar.activeDate, this.calendar.minDate);\n }\n /** Whether the next period button is enabled. */\n nextEnabled() {\n return !this.calendar.maxDate || !this._isSameView(this.calendar.activeDate, this.calendar.maxDate);\n }\n /** Whether the two dates represent the same view in the current view mode (month or year). */\n _isSameView(date1, date2) {\n if (this.calendar.currentView == 'month') {\n return this._dateAdapter.getYear(date1) == this._dateAdapter.getYear(date2) && this._dateAdapter.getMonth(date1) == this._dateAdapter.getMonth(date2);\n }\n if (this.calendar.currentView == 'year') {\n return this._dateAdapter.getYear(date1) == this._dateAdapter.getYear(date2);\n }\n // Otherwise we are in 'multi-year' view.\n return isSameMultiYearView(this._dateAdapter, date1, date2, this.calendar.minDate, this.calendar.maxDate);\n }\n}\nNgxMatCalendarHeader.ɵfac = function NgxMatCalendarHeader_Factory(t) {\n return new (t || NgxMatCalendarHeader)(ɵngcc0.ɵɵdirectiveInject(ɵngcc3.MatDatepickerIntl), ɵngcc0.ɵɵdirectiveInject(forwardRef(() => NgxMatCalendar)), ɵngcc0.ɵɵdirectiveInject(NgxMatDateAdapter, 8), ɵngcc0.ɵɵdirectiveInject(NGX_MAT_DATE_FORMATS, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef));\n};\nNgxMatCalendarHeader.ɵcmp = /*@__PURE__*/ɵngcc0.ɵɵdefineComponent({\n type: NgxMatCalendarHeader,\n selectors: [[\"ngx-mat-calendar-header\"]],\n exportAs: [\"ngxMatCalendarHeader\"],\n ngContentSelectors: _c1,\n decls: 9,\n vars: 8,\n consts: [[1, \"mat-calendar-header\"], [1, \"mat-calendar-controls\"], [\"mat-button\", \"\", \"type\", \"button\", \"cdkAriaLive\", \"polite\", 1, \"mat-calendar-period-button\", 3, \"click\"], [1, \"mat-calendar-arrow\"], [1, \"mat-calendar-spacer\"], [\"mat-icon-button\", \"\", \"type\", \"button\", 1, \"mat-calendar-previous-button\", 3, \"disabled\", \"click\"], [\"mat-icon-button\", \"\", \"type\", \"button\", 1, \"mat-calendar-next-button\", 3, \"disabled\", \"click\"]],\n template: function NgxMatCalendarHeader_Template(rf, ctx) {\n if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelementStart(0, \"div\", 0)(1, \"div\", 1)(2, \"button\", 2);\n ɵngcc0.ɵɵlistener(\"click\", function NgxMatCalendarHeader_Template_button_click_2_listener() {\n return ctx.currentPeriodClicked();\n });\n ɵngcc0.ɵɵtext(3);\n ɵngcc0.ɵɵelement(4, \"div\", 3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(5, \"div\", 4);\n ɵngcc0.ɵɵprojection(6);\n ɵngcc0.ɵɵelementStart(7, \"button\", 5);\n ɵngcc0.ɵɵlistener(\"click\", function NgxMatCalendarHeader_Template_button_click_7_listener() {\n return ctx.previousClicked();\n });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(8, \"button\", 6);\n ɵngcc0.ɵɵlistener(\"click\", function NgxMatCalendarHeader_Template_button_click_8_listener() {\n return ctx.nextClicked();\n });\n ɵngcc0.ɵɵelementEnd()()();\n }\n if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx.periodButtonLabel);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.periodButtonText, \" \");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"mat-calendar-invert\", ctx.calendar.currentView != \"month\");\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"disabled\", !ctx.previousEnabled());\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx.prevButtonLabel);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"disabled\", !ctx.nextEnabled());\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx.nextButtonLabel);\n }\n },\n dependencies: [ɵngcc4.MatButton],\n encapsulation: 2,\n changeDetection: 0\n});\n/** @nocollapse */\nNgxMatCalendarHeader.ctorParameters = () => [{\n type: MatDatepickerIntl\n}, {\n type: NgxMatCalendar,\n decorators: [{\n type: Inject,\n args: [forwardRef(() => NgxMatCalendar)]\n }]\n}, {\n type: NgxMatDateAdapter,\n decorators: [{\n type: Optional\n }]\n}, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [NGX_MAT_DATE_FORMATS]\n }]\n}, {\n type: ChangeDetectorRef\n}];\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxMatCalendarHeader, [{\n type: Component,\n args: [{\n selector: 'ngx-mat-calendar-header',\n template: \"
\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n\",\n exportAs: 'ngxMatCalendarHeader',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () {\n return [{\n type: ɵngcc3.MatDatepickerIntl\n }, {\n type: NgxMatCalendar,\n decorators: [{\n type: Inject,\n args: [forwardRef(() => NgxMatCalendar)]\n }]\n }, {\n type: NgxMatDateAdapter,\n decorators: [{\n type: Optional\n }]\n }, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [NGX_MAT_DATE_FORMATS]\n }]\n }, {\n type: ɵngcc0.ChangeDetectorRef\n }];\n }, null);\n})();\n/**\r\n * A calendar that is used as part of the datepicker.\r\n * @docs-private\r\n */\nclass NgxMatCalendar {\n constructor(_intl, _dateAdapter, _dateFormats, _changeDetectorRef) {\n this._dateAdapter = _dateAdapter;\n this._dateFormats = _dateFormats;\n this._changeDetectorRef = _changeDetectorRef;\n /**\r\n * Used for scheduling that focus should be moved to the active cell on the next tick.\r\n * We need to schedule it, rather than do it immediately, because we have to wait\r\n * for Angular to re-evaluate the view children.\r\n */\n this._moveFocusOnNextTick = false;\n /** Whether the calendar should be started in month or year view. */\n this.startView = 'month';\n /** Emits when the currently selected date changes. */\n this.selectedChange = new EventEmitter();\n /**\r\n * Emits the year chosen in multiyear view.\r\n * This doesn't imply a change on the selected date.\r\n */\n this.yearSelected = new EventEmitter();\n /**\r\n * Emits the month chosen in year view.\r\n * This doesn't imply a change on the selected date.\r\n */\n this.monthSelected = new EventEmitter();\n /** Emits when any date is selected. */\n this._userSelection = new EventEmitter();\n /**\r\n * Emits whenever there is a state change that the header may need to respond to.\r\n */\n this.stateChanges = new Subject();\n if (!this._dateAdapter) {\n throw createMissingDateImplError('NgxDateAdapter');\n }\n if (!this._dateFormats) {\n throw createMissingDateImplError('NGX_MAT_DATE_FORMATS');\n }\n this._intlChanges = _intl.changes.subscribe(() => {\n _changeDetectorRef.markForCheck();\n this.stateChanges.next();\n });\n }\n /** A date representing the period (month or year) to start the calendar in. */\n get startAt() {\n return this._startAt;\n }\n set startAt(value) {\n this._startAt = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n /** The currently selected date. */\n get selected() {\n return this._selected;\n }\n set selected(value) {\n this._selected = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n /** The minimum selectable date. */\n get minDate() {\n return this._minDate;\n }\n set minDate(value) {\n this._minDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n /** The maximum selectable date. */\n get maxDate() {\n return this._maxDate;\n }\n set maxDate(value) {\n this._maxDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n /**\r\n * The current active date. This determines which time period is shown and which date is\r\n * highlighted when using keyboard navigation.\r\n */\n get activeDate() {\n return this._clampedActiveDate;\n }\n set activeDate(value) {\n this._clampedActiveDate = this._dateAdapter.clampDate(value, this.minDate, this.maxDate);\n this.stateChanges.next();\n this._changeDetectorRef.markForCheck();\n }\n /** Whether the calendar is in month view. */\n get currentView() {\n return this._currentView;\n }\n set currentView(value) {\n this._currentView = value;\n this._moveFocusOnNextTick = true;\n this._changeDetectorRef.markForCheck();\n }\n ngAfterContentInit() {\n this._calendarHeaderPortal = new ComponentPortal(this.headerComponent || NgxMatCalendarHeader);\n this.activeDate = this.startAt || this._dateAdapter.today();\n // Assign to the private property since we don't want to move focus on init.\n this._currentView = this.startView;\n }\n ngAfterViewChecked() {\n if (this._moveFocusOnNextTick) {\n this._moveFocusOnNextTick = false;\n this.focusActiveCell();\n }\n }\n ngOnDestroy() {\n this._intlChanges.unsubscribe();\n this.stateChanges.complete();\n }\n ngOnChanges(changes) {\n const change = changes['minDate'] || changes['maxDate'] || changes['dateFilter'];\n if (change && !change.firstChange) {\n const view = this._getCurrentViewComponent();\n if (view) {\n // We need to `detectChanges` manually here, because the `minDate`, `maxDate` etc. are\n // passed down to the view via data bindings which won't be up-to-date when we call `_init`.\n this._changeDetectorRef.detectChanges();\n view._init();\n }\n }\n this.stateChanges.next();\n }\n focusActiveCell() {\n this._getCurrentViewComponent()._focusActiveCell();\n }\n /** Updates today's date after an update of the active date */\n updateTodaysDate() {\n let view = this.currentView == 'month' ? this.monthView : this.currentView == 'year' ? this.yearView : this.multiYearView;\n view.ngAfterContentInit();\n }\n /** Handles date selection in the month view. */\n _dateSelected(date) {\n if (date && !this._dateAdapter.sameDate(date, this.selected)) {\n this.selectedChange.emit(date);\n }\n }\n /** Handles year selection in the multiyear view. */\n _yearSelectedInMultiYearView(normalizedYear) {\n this.yearSelected.emit(normalizedYear);\n }\n /** Handles month selection in the year view. */\n _monthSelectedInYearView(normalizedMonth) {\n this.monthSelected.emit(normalizedMonth);\n }\n _userSelected() {\n this._userSelection.emit();\n }\n /** Handles year/month selection in the multi-year/year views. */\n _goToDateInView(date, view) {\n this.activeDate = date;\n this.currentView = view;\n }\n /**\r\n * @param obj The object to check.\r\n * @returns The given object if it is both a date instance and valid, otherwise null.\r\n */\n _getValidDateOrNull(obj) {\n return this._dateAdapter.isDateInstance(obj) && this._dateAdapter.isValid(obj) ? obj : null;\n }\n /** Returns the component instance that corresponds to the current calendar view. */\n _getCurrentViewComponent() {\n return this.monthView || this.yearView || this.multiYearView;\n }\n}\nNgxMatCalendar.ɵfac = function NgxMatCalendar_Factory(t) {\n return new (t || NgxMatCalendar)(ɵngcc0.ɵɵdirectiveInject(ɵngcc3.MatDatepickerIntl), ɵngcc0.ɵɵdirectiveInject(NgxMatDateAdapter, 8), ɵngcc0.ɵɵdirectiveInject(NGX_MAT_DATE_FORMATS, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef));\n};\nNgxMatCalendar.ɵcmp = /*@__PURE__*/ɵngcc0.ɵɵdefineComponent({\n type: NgxMatCalendar,\n selectors: [[\"ngx-mat-calendar\"]],\n viewQuery: function NgxMatCalendar_Query(rf, ctx) {\n if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(NgxMatMonthView, 5);\n ɵngcc0.ɵɵviewQuery(NgxMatYearView, 5);\n ɵngcc0.ɵɵviewQuery(NgxMatMultiYearView, 5);\n }\n if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.monthView = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.yearView = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.multiYearView = _t.first);\n }\n },\n hostAttrs: [1, \"mat-calendar\"],\n inputs: {\n startView: \"startView\",\n startAt: \"startAt\",\n selected: \"selected\",\n minDate: \"minDate\",\n maxDate: \"maxDate\",\n headerComponent: \"headerComponent\",\n dateFilter: \"dateFilter\",\n dateClass: \"dateClass\"\n },\n outputs: {\n selectedChange: \"selectedChange\",\n yearSelected: \"yearSelected\",\n monthSelected: \"monthSelected\",\n _userSelection: \"_userSelection\"\n },\n exportAs: [\"ngxMatCalendar\"],\n features: [ɵngcc0.ɵɵNgOnChangesFeature],\n decls: 5,\n vars: 5,\n consts: [[3, \"cdkPortalOutlet\"], [\"cdkMonitorSubtreeFocus\", \"\", \"tabindex\", \"-1\", 1, \"mat-calendar-content\", 3, \"ngSwitch\"], [3, \"activeDate\", \"selected\", \"dateFilter\", \"maxDate\", \"minDate\", \"dateClass\", \"activeDateChange\", \"selectedChange\", \"_userSelection\", 4, \"ngSwitchCase\"], [3, \"activeDate\", \"selected\", \"dateFilter\", \"maxDate\", \"minDate\", \"activeDateChange\", \"monthSelected\", \"selectedChange\", 4, \"ngSwitchCase\"], [3, \"activeDate\", \"selected\", \"dateFilter\", \"maxDate\", \"minDate\", \"activeDateChange\", \"yearSelected\", \"selectedChange\", 4, \"ngSwitchCase\"], [3, \"activeDate\", \"selected\", \"dateFilter\", \"maxDate\", \"minDate\", \"dateClass\", \"activeDateChange\", \"selectedChange\", \"_userSelection\"], [3, \"activeDate\", \"selected\", \"dateFilter\", \"maxDate\", \"minDate\", \"activeDateChange\", \"monthSelected\", \"selectedChange\"], [3, \"activeDate\", \"selected\", \"dateFilter\", \"maxDate\", \"minDate\", \"activeDateChange\", \"yearSelected\", \"selectedChange\"]],\n template: function NgxMatCalendar_Template(rf, ctx) {\n if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgxMatCalendar_ng_template_0_Template, 0, 0, \"ng-template\", 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1);\n ɵngcc0.ɵɵtemplate(2, NgxMatCalendar_ngx_mat_month_view_2_Template, 1, 6, \"ngx-mat-month-view\", 2);\n ɵngcc0.ɵɵtemplate(3, NgxMatCalendar_ngx_mat_year_view_3_Template, 1, 5, \"ngx-mat-year-view\", 3);\n ɵngcc0.ɵɵtemplate(4, NgxMatCalendar_ngx_mat_multi_year_view_4_Template, 1, 5, \"ngx-mat-multi-year-view\", 4);\n ɵngcc0.ɵɵelementEnd();\n }\n if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"cdkPortalOutlet\", ctx._calendarHeaderPortal);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitch\", ctx.currentView);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", \"month\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", \"year\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", \"multi-year\");\n }\n },\n dependencies: [ɵngcc1.NgSwitch, ɵngcc1.NgSwitchCase, ɵngcc5.CdkPortalOutlet, NgxMatMonthView, NgxMatYearView, NgxMatMultiYearView],\n styles: [\".mat-calendar{display:block}.mat-calendar-header{padding:8px 8px 0}.mat-calendar-content{padding:0 8px 8px;outline:none}.mat-calendar-controls{display:flex;margin:5% calc(33% / 7 - 16px)}.mat-calendar-spacer{flex:1 1 auto}.mat-calendar-period-button{min-width:0}.mat-calendar-arrow{display:inline-block;width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top-width:5px;border-top-style:solid;margin:0 0 0 5px;vertical-align:middle}.mat-calendar-arrow.mat-calendar-invert{transform:rotate(180deg)}[dir=rtl] .mat-calendar-arrow{margin:0 5px 0 0}.mat-calendar-next-button,.mat-calendar-previous-button{position:relative}.mat-calendar-next-button:after,.mat-calendar-previous-button:after{top:0;left:0;right:0;bottom:0;position:absolute;content:\\\"\\\";margin:15.5px;border:solid;border-width:2px 0 0}[dir=rtl] .mat-calendar-next-button,[dir=rtl] .mat-calendar-previous-button{transform:rotate(180deg)}.mat-calendar-previous-button:after{border-left-width:2px;transform:translateX(2px) rotate(-45deg)}.mat-calendar-next-button:after{border-right-width:2px;transform:translateX(-2px) rotate(45deg)}.mat-calendar-table{border-spacing:0;border-collapse:collapse;width:100%}.mat-calendar-table-header th{text-align:center;padding:0 0 8px}.mat-calendar-table-header-divider{position:relative;height:1px}.mat-calendar-table-header-divider:after{content:\\\"\\\";position:absolute;top:0;left:-8px;right:-8px;height:1px}\"],\n encapsulation: 2,\n changeDetection: 0\n});\n/** @nocollapse */\nNgxMatCalendar.ctorParameters = () => [{\n type: MatDatepickerIntl\n}, {\n type: NgxMatDateAdapter,\n decorators: [{\n type: Optional\n }]\n}, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [NGX_MAT_DATE_FORMATS]\n }]\n}, {\n type: ChangeDetectorRef\n}];\nNgxMatCalendar.propDecorators = {\n headerComponent: [{\n type: Input\n }],\n startAt: [{\n type: Input\n }],\n startView: [{\n type: Input\n }],\n selected: [{\n type: Input\n }],\n minDate: [{\n type: Input\n }],\n maxDate: [{\n type: Input\n }],\n dateFilter: [{\n type: Input\n }],\n dateClass: [{\n type: Input\n }],\n selectedChange: [{\n type: Output\n }],\n yearSelected: [{\n type: Output\n }],\n monthSelected: [{\n type: Output\n }],\n _userSelection: [{\n type: Output\n }],\n monthView: [{\n type: ViewChild,\n args: [NgxMatMonthView]\n }],\n yearView: [{\n type: ViewChild,\n args: [NgxMatYearView]\n }],\n multiYearView: [{\n type: ViewChild,\n args: [NgxMatMultiYearView]\n }]\n};\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxMatCalendar, [{\n type: Component,\n args: [{\n selector: 'ngx-mat-calendar',\n template: \"\\r\\n\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n
\\r\\n\",\n host: {\n 'class': 'mat-calendar'\n },\n exportAs: 'ngxMatCalendar',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n styles: [\".mat-calendar{display:block}.mat-calendar-header{padding:8px 8px 0}.mat-calendar-content{padding:0 8px 8px;outline:none}.mat-calendar-controls{display:flex;margin:5% calc(33% / 7 - 16px)}.mat-calendar-spacer{flex:1 1 auto}.mat-calendar-period-button{min-width:0}.mat-calendar-arrow{display:inline-block;width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top-width:5px;border-top-style:solid;margin:0 0 0 5px;vertical-align:middle}.mat-calendar-arrow.mat-calendar-invert{transform:rotate(180deg)}[dir=rtl] .mat-calendar-arrow{margin:0 5px 0 0}.mat-calendar-next-button,.mat-calendar-previous-button{position:relative}.mat-calendar-next-button:after,.mat-calendar-previous-button:after{top:0;left:0;right:0;bottom:0;position:absolute;content:\\\"\\\";margin:15.5px;border:solid;border-width:2px 0 0}[dir=rtl] .mat-calendar-next-button,[dir=rtl] .mat-calendar-previous-button{transform:rotate(180deg)}.mat-calendar-previous-button:after{border-left-width:2px;transform:translateX(2px) rotate(-45deg)}.mat-calendar-next-button:after{border-right-width:2px;transform:translateX(-2px) rotate(45deg)}.mat-calendar-table{border-spacing:0;border-collapse:collapse;width:100%}.mat-calendar-table-header th{text-align:center;padding:0 0 8px}.mat-calendar-table-header-divider{position:relative;height:1px}.mat-calendar-table-header-divider:after{content:\\\"\\\";position:absolute;top:0;left:-8px;right:-8px;height:1px}\"]\n }]\n }], function () {\n return [{\n type: ɵngcc3.MatDatepickerIntl\n }, {\n type: NgxMatDateAdapter,\n decorators: [{\n type: Optional\n }]\n }, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [NGX_MAT_DATE_FORMATS]\n }]\n }, {\n type: ɵngcc0.ChangeDetectorRef\n }];\n }, {\n startView: [{\n type: Input\n }],\n selectedChange: [{\n type: Output\n }],\n yearSelected: [{\n type: Output\n }],\n monthSelected: [{\n type: Output\n }],\n _userSelection: [{\n type: Output\n }],\n startAt: [{\n type: Input\n }],\n selected: [{\n type: Input\n }],\n minDate: [{\n type: Input\n }],\n maxDate: [{\n type: Input\n }],\n headerComponent: [{\n type: Input\n }],\n dateFilter: [{\n type: Input\n }],\n dateClass: [{\n type: Input\n }],\n monthView: [{\n type: ViewChild,\n args: [NgxMatMonthView]\n }],\n yearView: [{\n type: ViewChild,\n args: [NgxMatYearView]\n }],\n multiYearView: [{\n type: ViewChild,\n args: [NgxMatMultiYearView]\n }]\n });\n})();\nclass NgxMatTimepickerComponent {\n constructor(_dateAdapter, cd, formBuilder) {\n this._dateAdapter = _dateAdapter;\n this.cd = cd;\n this.formBuilder = formBuilder;\n this.disabled = false;\n this.showSpinners = true;\n this.stepHour = DEFAULT_STEP;\n this.stepMinute = DEFAULT_STEP;\n this.stepSecond = DEFAULT_STEP;\n this.showSeconds = false;\n this.disableMinute = false;\n this.enableMeridian = false;\n this.color = 'primary';\n this.meridian = MERIDIANS.AM;\n this._onChange = () => {};\n this._onTouched = () => {};\n this._destroyed = new Subject();\n this.pattern = PATTERN_INPUT_HOUR;\n if (!this._dateAdapter) {\n throw createMissingDateImplError('NgxMatDateAdapter');\n }\n this.form = this.formBuilder.group({\n hour: [{\n value: null,\n disabled: this.disabled\n }, [Validators.required, Validators.pattern(PATTERN_INPUT_HOUR)]],\n minute: [{\n value: null,\n disabled: this.disabled\n }, [Validators.required, Validators.pattern(PATTERN_INPUT_MINUTE)]],\n second: [{\n value: null,\n disabled: this.disabled\n }, [Validators.required, Validators.pattern(PATTERN_INPUT_SECOND)]]\n });\n }\n /** Hour */\n get hour() {\n let val = Number(this.form.controls['hour'].value);\n return isNaN(val) ? 0 : val;\n }\n get minute() {\n let val = Number(this.form.controls['minute'].value);\n return isNaN(val) ? 0 : val;\n }\n get second() {\n let val = Number(this.form.controls['second'].value);\n return isNaN(val) ? 0 : val;\n }\n /** Whether or not the form is valid */\n get valid() {\n return this.form.valid;\n }\n ngOnInit() {\n this.form.valueChanges.pipe(takeUntil(this._destroyed), debounceTime(400)).subscribe(val => {\n this._updateModel();\n });\n }\n ngOnChanges(changes) {\n if (changes.disabled || changes.disableMinute) {\n this._setDisableStates();\n }\n }\n ngOnDestroy() {\n this._destroyed.next();\n this._destroyed.complete();\n }\n /**\r\n * Writes a new value to the element.\r\n * @param obj\r\n */\n writeValue(val) {\n if (val != null) {\n this._model = val;\n } else {\n this._model = this._dateAdapter.today();\n if (this.defaultTime != null) {\n this._dateAdapter.setTimeByDefaultValues(this._model, this.defaultTime);\n }\n }\n this._updateHourMinuteSecond();\n }\n /** Registers a callback function that is called when the control's value changes in the UI. */\n registerOnChange(fn) {\n this._onChange = fn;\n }\n /**\r\n * Set the function to be called when the control receives a touch event.\r\n */\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n /** Enables or disables the appropriate DOM element */\n setDisabledState(isDisabled) {\n this._disabled = isDisabled;\n this.cd.markForCheck();\n }\n /**\r\n * Format input\r\n * @param input\r\n */\n formatInput(input) {\n input.value = input.value.replace(NUMERIC_REGEX, '');\n }\n /** Toggle meridian */\n toggleMeridian() {\n this.meridian = this.meridian === MERIDIANS.AM ? MERIDIANS.PM : MERIDIANS.AM;\n this.change('hour');\n }\n /** Change property of time */\n change(prop, up) {\n const next = this._getNextValueByProp(prop, up);\n this.form.controls[prop].setValue(formatTwoDigitTimeValue(next), {\n onlySelf: false,\n emitEvent: false\n });\n this._updateModel();\n }\n /** Update controls of form by model */\n _updateHourMinuteSecond() {\n let _hour = this._dateAdapter.getHour(this._model);\n const _minute = this._dateAdapter.getMinute(this._model);\n const _second = this._dateAdapter.getSecond(this._model);\n if (this.enableMeridian) {\n if (_hour >= LIMIT_TIMES.meridian) {\n _hour = _hour - LIMIT_TIMES.meridian;\n this.meridian = MERIDIANS.PM;\n } else {\n this.meridian = MERIDIANS.AM;\n }\n if (_hour === 0) {\n _hour = LIMIT_TIMES.meridian;\n }\n }\n this.form.controls['hour'].setValue(formatTwoDigitTimeValue(_hour));\n this.form.controls['minute'].setValue(formatTwoDigitTimeValue(_minute));\n this.form.controls['second'].setValue(formatTwoDigitTimeValue(_second));\n }\n /** Update model */\n _updateModel() {\n let _hour = this.hour;\n if (this.enableMeridian) {\n if (this.meridian === MERIDIANS.AM && _hour === LIMIT_TIMES.meridian) {\n _hour = 0;\n } else if (this.meridian === MERIDIANS.PM && _hour !== LIMIT_TIMES.meridian) {\n _hour = _hour + LIMIT_TIMES.meridian;\n }\n }\n this._dateAdapter.setHour(this._model, _hour);\n this._dateAdapter.setMinute(this._model, this.minute);\n this._dateAdapter.setSecond(this._model, this.second);\n this._onChange(this._model);\n }\n /**\r\n * Get next value by property\r\n * @param prop\r\n * @param up\r\n */\n _getNextValueByProp(prop, up) {\n const keyProp = prop[0].toUpperCase() + prop.slice(1);\n const min = LIMIT_TIMES[`min${keyProp}`];\n let max = LIMIT_TIMES[`max${keyProp}`];\n if (prop === 'hour' && this.enableMeridian) {\n max = LIMIT_TIMES.meridian;\n }\n let next;\n if (up == null) {\n next = this[prop] % max;\n if (prop === 'hour' && this.enableMeridian) {\n if (next === 0) next = max;\n }\n } else {\n next = up ? this[prop] + this[`step${keyProp}`] : this[prop] - this[`step${keyProp}`];\n if (prop === 'hour' && this.enableMeridian) {\n next = next % (max + 1);\n if (next === 0) next = up ? 1 : max;\n } else {\n next = next % max;\n }\n if (up) {\n next = next > max ? next - max + min : next;\n } else {\n next = next < min ? next - min + max : next;\n }\n }\n return next;\n }\n /**\r\n * Set disable states\r\n */\n _setDisableStates() {\n if (this.disabled) {\n this.form.disable();\n } else {\n this.form.enable();\n if (this.disableMinute) {\n this.form.get('minute').disable();\n if (this.showSeconds) {\n this.form.get('second').disable();\n }\n }\n }\n }\n}\nNgxMatTimepickerComponent.ɵfac = function NgxMatTimepickerComponent_Factory(t) {\n return new (t || NgxMatTimepickerComponent)(ɵngcc0.ɵɵdirectiveInject(NgxMatDateAdapter, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc6.FormBuilder));\n};\nNgxMatTimepickerComponent.ɵcmp = /*@__PURE__*/ɵngcc0.ɵɵdefineComponent({\n type: NgxMatTimepickerComponent,\n selectors: [[\"ngx-mat-timepicker\"]],\n hostAttrs: [1, \"ngx-mat-timepicker\"],\n inputs: {\n disabled: \"disabled\",\n showSpinners: \"showSpinners\",\n stepHour: \"stepHour\",\n stepMinute: \"stepMinute\",\n stepSecond: \"stepSecond\",\n showSeconds: \"showSeconds\",\n disableMinute: \"disableMinute\",\n enableMeridian: \"enableMeridian\",\n color: \"color\",\n defaultTime: \"defaultTime\"\n },\n exportAs: [\"ngxMatTimepicker\"],\n features: [ɵngcc0.ɵɵProvidersFeature([{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NgxMatTimepickerComponent),\n multi: true\n }]), ɵngcc0.ɵɵNgOnChangesFeature],\n decls: 18,\n vars: 7,\n consts: [[3, \"formGroup\"], [1, \"ngx-mat-timepicker-table\"], [1, \"ngx-mat-timepicker-tbody\"], [4, \"ngIf\"], [\"appearance\", \"legacy\"], [\"type\", \"text\", \"matInput\", \"\", \"maxlength\", \"2\", \"formControlName\", \"hour\", 3, \"input\", \"keydown.ArrowUp\", \"keydown.ArrowDown\", \"blur\"], [1, \"ngx-mat-timepicker-spacer\"], [\"type\", \"text\", \"matInput\", \"\", \"maxlength\", \"2\", \"formControlName\", \"minute\", 3, \"input\", \"keydown.ArrowUp\", \"keydown.ArrowDown\", \"blur\"], [\"class\", \"ngx-mat-timepicker-spacer\", 4, \"ngIf\"], [\"class\", \"ngx-mat-timepicker-meridian\", 4, \"ngIf\"], [\"type\", \"button\", \"mat-icon-button\", \"\", \"aria-label\", \"expand_less icon\", 3, \"disabled\", \"click\"], [\"type\", \"text\", \"matInput\", \"\", \"maxlength\", \"2\", \"formControlName\", \"second\", 3, \"input\", \"keydown.ArrowUp\", \"keydown.ArrowDown\", \"blur\"], [1, \"ngx-mat-timepicker-meridian\"], [\"mat-button\", \"\", \"mat-stroked-button\", \"\", 3, \"color\", \"disabled\", \"click\"], [\"type\", \"button\", \"mat-icon-button\", \"\", \"aria-label\", \"expand_more icon\", 3, \"disabled\", \"click\"]],\n template: function NgxMatTimepickerComponent_Template(rf, ctx) {\n if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"form\", 0)(1, \"table\", 1)(2, \"tbody\", 2);\n ɵngcc0.ɵɵtemplate(3, NgxMatTimepickerComponent_tr_3_Template, 14, 5, \"tr\", 3);\n ɵngcc0.ɵɵelementStart(4, \"tr\")(5, \"td\")(6, \"mat-form-field\", 4)(7, \"input\", 5);\n ɵngcc0.ɵɵlistener(\"input\", function NgxMatTimepickerComponent_Template_input_input_7_listener($event) {\n return ctx.formatInput($event.target);\n })(\"keydown.ArrowUp\", function NgxMatTimepickerComponent_Template_input_keydown_ArrowUp_7_listener($event) {\n ctx.change(\"hour\", true);\n return $event.preventDefault();\n })(\"keydown.ArrowDown\", function NgxMatTimepickerComponent_Template_input_keydown_ArrowDown_7_listener($event) {\n ctx.change(\"hour\", false);\n return $event.preventDefault();\n })(\"blur\", function NgxMatTimepickerComponent_Template_input_blur_7_listener() {\n return ctx.change(\"hour\");\n });\n ɵngcc0.ɵɵelementEnd()()();\n ɵngcc0.ɵɵelementStart(8, \"td\", 6);\n ɵngcc0.ɵɵtext(9, \":\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(10, \"td\")(11, \"mat-form-field\", 4)(12, \"input\", 7);\n ɵngcc0.ɵɵlistener(\"input\", function NgxMatTimepickerComponent_Template_input_input_12_listener($event) {\n return ctx.formatInput($event.target);\n })(\"keydown.ArrowUp\", function NgxMatTimepickerComponent_Template_input_keydown_ArrowUp_12_listener($event) {\n ctx.change(\"minute\", true);\n return $event.preventDefault();\n })(\"keydown.ArrowDown\", function NgxMatTimepickerComponent_Template_input_keydown_ArrowDown_12_listener($event) {\n ctx.change(\"minute\", false);\n return $event.preventDefault();\n })(\"blur\", function NgxMatTimepickerComponent_Template_input_blur_12_listener() {\n return ctx.change(\"minute\");\n });\n ɵngcc0.ɵɵelementEnd()()();\n ɵngcc0.ɵɵtemplate(13, NgxMatTimepickerComponent_td_13_Template, 2, 0, \"td\", 8);\n ɵngcc0.ɵɵtemplate(14, NgxMatTimepickerComponent_td_14_Template, 3, 0, \"td\", 3);\n ɵngcc0.ɵɵtemplate(15, NgxMatTimepickerComponent_td_15_Template, 1, 0, \"td\", 8);\n ɵngcc0.ɵɵtemplate(16, NgxMatTimepickerComponent_td_16_Template, 3, 3, \"td\", 9);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(17, NgxMatTimepickerComponent_tr_17_Template, 14, 6, \"tr\", 3);\n ɵngcc0.ɵɵelementEnd()()();\n }\n if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"formGroup\", ctx.form);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showSpinners);\n ɵngcc0.ɵɵadvance(10);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showSeconds);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showSeconds);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.enableMeridian);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.enableMeridian);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showSpinners);\n }\n },\n dependencies: [ɵngcc1.NgIf, ɵngcc7.MatFormField, ɵngcc8.MatInput, ɵngcc6.ɵNgNoValidate, ɵngcc6.DefaultValueAccessor, ɵngcc6.NgControlStatus, ɵngcc6.NgControlStatusGroup, ɵngcc6.MaxLengthValidator, ɵngcc6.FormGroupDirective, ɵngcc6.FormControlName, ɵngcc9.MatIcon, ɵngcc4.MatButton],\n styles: [\".ngx-mat-timepicker{font-size:13px}.ngx-mat-timepicker form{min-width:90px}.ngx-mat-timepicker form .ngx-mat-timepicker-table .ngx-mat-timepicker-tbody tr td{text-align:center}.ngx-mat-timepicker form .ngx-mat-timepicker-table .ngx-mat-timepicker-tbody tr td.ngx-mat-timepicker-spacer{font-weight:700}.ngx-mat-timepicker form .ngx-mat-timepicker-table .ngx-mat-timepicker-tbody tr td.ngx-mat-timepicker-meridian .mat-button{min-width:64px;line-height:36px;border-radius:4px;min-width:0;border-radius:50%;width:36px;height:36px;padding:0;flex-shrink:0}.ngx-mat-timepicker form .ngx-mat-timepicker-table .ngx-mat-timepicker-tbody tr td .mat-icon-button{height:24px;width:24px;line-height:24px}.ngx-mat-timepicker form .ngx-mat-timepicker-table .ngx-mat-timepicker-tbody tr td .mat-icon-button .mat-icon{font-size:24px}.ngx-mat-timepicker form .ngx-mat-timepicker-table .ngx-mat-timepicker-tbody tr td .mat-form-field{width:20px;max-width:20px;text-align:center}\"],\n encapsulation: 2\n});\n/** @nocollapse */\nNgxMatTimepickerComponent.ctorParameters = () => [{\n type: NgxMatDateAdapter,\n decorators: [{\n type: Optional\n }]\n}, {\n type: ChangeDetectorRef\n}, {\n type: FormBuilder\n}];\nNgxMatTimepickerComponent.propDecorators = {\n disabled: [{\n type: Input\n }],\n showSpinners: [{\n type: Input\n }],\n stepHour: [{\n type: Input\n }],\n stepMinute: [{\n type: Input\n }],\n stepSecond: [{\n type: Input\n }],\n showSeconds: [{\n type: Input\n }],\n disableMinute: [{\n type: Input\n }],\n enableMeridian: [{\n type: Input\n }],\n defaultTime: [{\n type: Input\n }],\n color: [{\n type: Input\n }]\n};\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxMatTimepickerComponent, [{\n type: Component,\n args: [{\n selector: 'ngx-mat-timepicker',\n template: \"
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n :\\r\\n \\r\\n \\r\\n \\r\\n :\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\",\n host: {\n 'class': 'ngx-mat-timepicker'\n },\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NgxMatTimepickerComponent),\n multi: true\n }],\n exportAs: 'ngxMatTimepicker',\n encapsulation: ViewEncapsulation.None,\n styles: [\".ngx-mat-timepicker{font-size:13px}.ngx-mat-timepicker form{min-width:90px}.ngx-mat-timepicker form .ngx-mat-timepicker-table .ngx-mat-timepicker-tbody tr td{text-align:center}.ngx-mat-timepicker form .ngx-mat-timepicker-table .ngx-mat-timepicker-tbody tr td.ngx-mat-timepicker-spacer{font-weight:700}.ngx-mat-timepicker form .ngx-mat-timepicker-table .ngx-mat-timepicker-tbody tr td.ngx-mat-timepicker-meridian .mat-button{min-width:64px;line-height:36px;border-radius:4px;min-width:0;border-radius:50%;width:36px;height:36px;padding:0;flex-shrink:0}.ngx-mat-timepicker form .ngx-mat-timepicker-table .ngx-mat-timepicker-tbody tr td .mat-icon-button{height:24px;width:24px;line-height:24px}.ngx-mat-timepicker form .ngx-mat-timepicker-table .ngx-mat-timepicker-tbody tr td .mat-icon-button .mat-icon{font-size:24px}.ngx-mat-timepicker form .ngx-mat-timepicker-table .ngx-mat-timepicker-tbody tr td .mat-form-field{width:20px;max-width:20px;text-align:center}\"]\n }]\n }], function () {\n return [{\n type: NgxMatDateAdapter,\n decorators: [{\n type: Optional\n }]\n }, {\n type: ɵngcc0.ChangeDetectorRef\n }, {\n type: ɵngcc6.FormBuilder\n }];\n }, {\n disabled: [{\n type: Input\n }],\n showSpinners: [{\n type: Input\n }],\n stepHour: [{\n type: Input\n }],\n stepMinute: [{\n type: Input\n }],\n stepSecond: [{\n type: Input\n }],\n showSeconds: [{\n type: Input\n }],\n disableMinute: [{\n type: Input\n }],\n enableMeridian: [{\n type: Input\n }],\n color: [{\n type: Input\n }],\n defaultTime: [{\n type: Input\n }]\n });\n})();\n\n/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\n/** Used to generate a unique ID for each datepicker instance. */\nlet datepickerUid = 0;\n// Boilerplate for applying mixins to MatDatepickerContent.\n/** @docs-private */\nclass MatDatepickerContentBase {\n constructor(_elementRef) {\n this._elementRef = _elementRef;\n }\n}\nconst _MatDatepickerContentMixinBase = mixinColor(MatDatepickerContentBase);\n/**\r\n * Component used as the content for the datepicker dialog and popup. We use this instead of using\r\n * NgxMatCalendar directly as the content so we can control the initial focus. This also gives us a\r\n * place to put additional features of the popup that are not part of the calendar itself in the\r\n * future. (e.g. confirmation buttons).\r\n * @docs-private\r\n */\nclass NgxMatDatetimeContent extends _MatDatepickerContentMixinBase {\n constructor(elementRef, cd, _viewContainerRef) {\n super(elementRef);\n this.cd = cd;\n this._viewContainerRef = _viewContainerRef;\n }\n /** Whether or not the selected date is valid (min,max...) */\n get valid() {\n if (this.datepicker.hideTime) return this.datepicker.valid;\n return this._timePicker && this._timePicker.valid && this.datepicker.valid;\n }\n get isViewMonth() {\n if (!this._calendar || this._calendar.currentView == null) return true;\n return this._calendar.currentView == 'month';\n }\n ngAfterViewInit() {\n this._calendar.focusActiveCell();\n if (this.datepicker._customIcon) {\n this._templateCustomIconPortal = new TemplatePortal(this.datepicker._customIcon, this._viewContainerRef);\n this.cd.detectChanges();\n }\n }\n}\nNgxMatDatetimeContent.ɵfac = function NgxMatDatetimeContent_Factory(t) {\n return new (t || NgxMatDatetimeContent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef));\n};\nNgxMatDatetimeContent.ɵcmp = /*@__PURE__*/ɵngcc0.ɵɵdefineComponent({\n type: NgxMatDatetimeContent,\n selectors: [[\"ngx-mat-datetime-content\"]],\n viewQuery: function NgxMatDatetimeContent_Query(rf, ctx) {\n if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(NgxMatCalendar, 5);\n ɵngcc0.ɵɵviewQuery(NgxMatTimepickerComponent, 5);\n }\n if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._calendar = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._timePicker = _t.first);\n }\n },\n hostAttrs: [1, \"mat-datepicker-content\"],\n hostVars: 3,\n hostBindings: function NgxMatDatetimeContent_HostBindings(rf, ctx) {\n if (rf & 2) {\n ɵngcc0.ɵɵsyntheticHostProperty(\"@transformPanel\", \"enter\");\n ɵngcc0.ɵɵclassProp(\"mat-datepicker-content-touch\", ctx.datepicker.touchUi);\n }\n },\n inputs: {\n color: \"color\"\n },\n exportAs: [\"ngxMatDatetimeContent\"],\n features: [ɵngcc0.ɵɵInheritDefinitionFeature],\n decls: 2,\n vars: 12,\n consts: [[\"cdkTrapFocus\", \"\", 3, \"id\", \"ngClass\", \"startAt\", \"startView\", \"minDate\", \"maxDate\", \"dateFilter\", \"headerComponent\", \"selected\", \"dateClass\", \"selectedChange\", \"yearSelected\", \"monthSelected\"], [4, \"ngIf\"], [\"class\", \"time-container\", 3, \"disable-seconds\", 4, \"ngIf\"], [1, \"actions\"], [\"mat-button\", \"\", \"mat-stroked-button\", \"\", \"cdkFocusInitial\", \"\", 3, \"color\", \"disabled\", \"click\"], [3, \"cdkPortalOutlet\"], [1, \"time-container\"], [3, \"showSpinners\", \"showSeconds\", \"disabled\", \"stepHour\", \"stepMinute\", \"stepSecond\", \"ngModel\", \"color\", \"enableMeridian\", \"disableMinute\", \"ngModelChange\"]],\n template: function NgxMatDatetimeContent_Template(rf, ctx) {\n if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ngx-mat-calendar\", 0);\n ɵngcc0.ɵɵlistener(\"selectedChange\", function NgxMatDatetimeContent_Template_ngx_mat_calendar_selectedChange_0_listener($event) {\n return ctx.datepicker.select($event);\n })(\"yearSelected\", function NgxMatDatetimeContent_Template_ngx_mat_calendar_yearSelected_0_listener($event) {\n return ctx.datepicker._selectYear($event);\n })(\"monthSelected\", function NgxMatDatetimeContent_Template_ngx_mat_calendar_monthSelected_0_listener($event) {\n return ctx.datepicker._selectMonth($event);\n });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(1, NgxMatDatetimeContent_ng_container_1_Template, 6, 5, \"ng-container\", 1);\n }\n if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"id\", ctx.datepicker.id)(\"ngClass\", ctx.datepicker.panelClass)(\"startAt\", ctx.datepicker.startAt)(\"startView\", ctx.datepicker.startView)(\"minDate\", ctx.datepicker._minDate)(\"maxDate\", ctx.datepicker._maxDate)(\"dateFilter\", ctx.datepicker._dateFilter)(\"headerComponent\", ctx.datepicker.calendarHeaderComponent)(\"selected\", ctx.datepicker._selected)(\"dateClass\", ctx.datepicker.dateClass)(\"@fadeInCalendar\", \"enter\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.isViewMonth);\n }\n },\n dependencies: [ɵngcc1.NgClass, ɵngcc1.NgIf, ɵngcc5.CdkPortalOutlet, ɵngcc6.NgControlStatus, ɵngcc6.NgModel, ɵngcc9.MatIcon, ɵngcc4.MatButton, NgxMatTimepickerComponent, NgxMatCalendar],\n styles: [\".mat-datepicker-content{display:block;border-radius:4px;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.mat-datepicker-content .mat-calendar{width:296px}.mat-datepicker-content .time-container{display:flex;position:relative;padding-top:5px;justify-content:center}.mat-datepicker-content .time-container.disable-seconds .ngx-mat-timepicker .table{margin-left:9px}.mat-datepicker-content .time-container:before{content:\\\"\\\";position:absolute;top:0;left:0;right:0;height:1px;background-color:rgba(0,0,0,.12)}.mat-datepicker-content .actions{display:flex;padding:5px 15px 10px;justify-content:flex-end}\"],\n encapsulation: 2,\n data: {\n animation: [matDatepickerAnimations.transformPanel, matDatepickerAnimations.fadeInCalendar]\n },\n changeDetection: 0\n});\n/** @nocollapse */\nNgxMatDatetimeContent.ctorParameters = () => [{\n type: ElementRef\n}, {\n type: ChangeDetectorRef\n}, {\n type: ViewContainerRef\n}];\nNgxMatDatetimeContent.propDecorators = {\n _calendar: [{\n type: ViewChild,\n args: [NgxMatCalendar]\n }],\n _timePicker: [{\n type: ViewChild,\n args: [NgxMatTimepickerComponent]\n }]\n};\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxMatDatetimeContent, [{\n type: Component,\n args: [{\n selector: 'ngx-mat-datetime-content',\n template: \"\\r\\n\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\",\n host: {\n 'class': 'mat-datepicker-content',\n '[@transformPanel]': '\"enter\"',\n '[class.mat-datepicker-content-touch]': 'datepicker.touchUi'\n },\n animations: [matDatepickerAnimations.transformPanel, matDatepickerAnimations.fadeInCalendar],\n exportAs: 'ngxMatDatetimeContent',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n inputs: ['color'],\n styles: [\".mat-datepicker-content{display:block;border-radius:4px;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.mat-datepicker-content .mat-calendar{width:296px}.mat-datepicker-content .time-container{display:flex;position:relative;padding-top:5px;justify-content:center}.mat-datepicker-content .time-container.disable-seconds .ngx-mat-timepicker .table{margin-left:9px}.mat-datepicker-content .time-container:before{content:\\\"\\\";position:absolute;top:0;left:0;right:0;height:1px;background-color:rgba(0,0,0,.12)}.mat-datepicker-content .actions{display:flex;padding:5px 15px 10px;justify-content:flex-end}\"]\n }]\n }], function () {\n return [{\n type: ɵngcc0.ElementRef\n }, {\n type: ɵngcc0.ChangeDetectorRef\n }, {\n type: ɵngcc0.ViewContainerRef\n }];\n }, {\n _calendar: [{\n type: ViewChild,\n args: [NgxMatCalendar]\n }],\n _timePicker: [{\n type: ViewChild,\n args: [NgxMatTimepickerComponent]\n }]\n });\n})();\n// TODO(mmalerba): We use a component instead of a directive here so the user can use implicit\n// template reference variables (e.g. #d vs #d=\"matDatepicker\"). We can change this to a directive\n// if angular adds support for `exportAs: '$implicit'` on directives.\n/** Component responsible for managing the datepicker popup/dialog. */\nclass NgxMatDatetimePicker {\n constructor(_dialog, _overlay, _ngZone, _viewContainerRef, scrollStrategy, _dateAdapter, _dir, _document) {\n this._dialog = _dialog;\n this._overlay = _overlay;\n this._ngZone = _ngZone;\n this._viewContainerRef = _viewContainerRef;\n this._dateAdapter = _dateAdapter;\n this._dir = _dir;\n this._document = _document;\n /** The view that the calendar should start in. */\n this.startView = 'month';\n this._defaultColor = 'primary';\n this._touchUi = false;\n this._hideTime = false;\n /**\r\n * Emits selected year in multiyear view.\r\n * This doesn't imply a change on the selected date.\r\n */\n this.yearSelected = new EventEmitter();\n /**\r\n * Emits selected month in year view.\r\n * This doesn't imply a change on the selected date.\r\n */\n this.monthSelected = new EventEmitter();\n /** Emits when the datepicker has been opened. */\n this.openedStream = new EventEmitter();\n /** Emits when the datepicker has been closed. */\n this.closedStream = new EventEmitter();\n this._opened = false;\n this._showSpinners = true;\n this._showSeconds = false;\n this._stepHour = DEFAULT_STEP;\n this._stepMinute = DEFAULT_STEP;\n this._stepSecond = DEFAULT_STEP;\n this._enableMeridian = false;\n this._hasBackdrop = true;\n /** The id for the datepicker calendar. */\n this.id = `mat-datepicker-${datepickerUid++}`;\n this._validSelected = null;\n /** The element that was focused before the datepicker was opened. */\n this._focusedElementBeforeOpen = null;\n /** Subscription to value changes in the associated input element. */\n this._inputSubscription = Subscription.EMPTY;\n /** Emits when the datepicker is disabled. */\n this.stateChanges = new Subject();\n /** Emits new selected date when selected date changes. */\n this._selectedChanged = new Subject();\n /** The form control validator for the min date. */\n this._minValidator = () => {\n return !this._minDate || !this._selected || this._dateAdapter.compareDateWithTime(this._minDate, this._selected, this.showSeconds) <= 0 ? null : {\n 'matDatetimePickerMin': {\n 'min': this._minDate,\n 'actual': this._selected\n }\n };\n };\n /** The form control validator for the max date. */\n this._maxValidator = () => {\n return !this._maxDate || !this._selected || this._dateAdapter.compareDateWithTime(this._maxDate, this._selected, this.showSeconds) >= 0 ? null : {\n 'matDatetimePickerMax': {\n 'max': this._maxDate,\n 'actual': this._selected\n }\n };\n };\n if (!this._dateAdapter) {\n throw createMissingDateImplError('NgxMatDateAdapter');\n }\n this._scrollStrategy = scrollStrategy;\n }\n /** The date to open the calendar to initially. */\n get startAt() {\n // If an explicit startAt is set we start there, otherwise we start at whatever the currently\n // selected value is.\n return this._startAt || (this.datepickerInput ? this.datepickerInput.value : null);\n }\n set startAt(value) {\n this._startAt = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n }\n /** Default Color palette to use on the datepicker's calendar. */\n get defaultColor() {\n return this._defaultColor;\n }\n set defaultColor(value) {\n this._defaultColor = value;\n }\n /** Color palette to use on the datepicker's calendar. */\n get color() {\n return this._color || (this.datepickerInput ? this.datepickerInput._getThemePalette() : 'primary');\n }\n set color(value) {\n this._color = value;\n }\n /**\r\n * Whether the calendar UI is in touch mode. In touch mode the calendar opens in a dialog rather\r\n * than a popup and elements have more padding to allow for bigger touch targets.\r\n */\n get touchUi() {\n return this._touchUi;\n }\n set touchUi(value) {\n this._touchUi = coerceBooleanProperty(value);\n }\n get hideTime() {\n return this._hideTime;\n }\n set hideTime(value) {\n this._hideTime = coerceBooleanProperty(value);\n }\n /** Whether the datepicker pop-up should be disabled. */\n get disabled() {\n return this._disabled === undefined && this.datepickerInput ? this.datepickerInput.disabled : !!this._disabled;\n }\n set disabled(value) {\n const newValue = coerceBooleanProperty(value);\n if (newValue !== this._disabled) {\n this._disabled = newValue;\n this.stateChanges.next(newValue);\n }\n }\n /** Whether the calendar is open. */\n get opened() {\n return this._opened;\n }\n set opened(value) {\n value ? this.open() : this.close();\n }\n /** Whether the timepicker'spinners is shown. */\n get showSpinners() {\n return this._showSpinners;\n }\n set showSpinners(value) {\n this._showSpinners = value;\n }\n /** Whether the second part is disabled. */\n get showSeconds() {\n return this._showSeconds;\n }\n set showSeconds(value) {\n this._showSeconds = value;\n }\n /** Step hour */\n get stepHour() {\n return this._stepHour;\n }\n set stepHour(value) {\n this._stepHour = value;\n }\n /** Step minute */\n get stepMinute() {\n return this._stepMinute;\n }\n set stepMinute(value) {\n this._stepMinute = value;\n }\n /** Step second */\n get stepSecond() {\n return this._stepSecond;\n }\n set stepSecond(value) {\n this._stepSecond = value;\n }\n /** Enable meridian */\n get enableMeridian() {\n return this._enableMeridian;\n }\n set enableMeridian(value) {\n this._enableMeridian = value;\n }\n /** disable minute */\n get disableMinute() {\n return this._disableMinute;\n }\n set disableMinute(value) {\n this._disableMinute = value;\n }\n /** Step second */\n get defaultTime() {\n return this._defaultTime;\n }\n set defaultTime(value) {\n this._defaultTime = value;\n }\n /** The currently selected date. */\n get _selected() {\n return this._validSelected;\n }\n set _selected(value) {\n this._validSelected = value;\n }\n /** The minimum selectable date. */\n get _minDate() {\n return this.datepickerInput && this.datepickerInput.min;\n }\n /** The maximum selectable date. */\n get _maxDate() {\n return this.datepickerInput && this.datepickerInput.max;\n }\n get valid() {\n const minValidators = this._minValidator();\n const maxValidators = this._maxValidator();\n return minValidators == null && maxValidators == null;\n }\n get _dateFilter() {\n return this.datepickerInput && this.datepickerInput._dateFilter;\n }\n ngOnDestroy() {\n this.close();\n if (this._popupRef) {\n this._popupRef.dispose();\n this._popupComponentRef = null;\n }\n this._inputSubscription.unsubscribe();\n this.stateChanges.complete();\n }\n /** Selects the given date */\n select(date) {\n this._dateAdapter.copyTime(date, this._selected);\n this._selected = date;\n }\n /** Emits the selected year in multiyear view */\n _selectYear(normalizedYear) {\n this.yearSelected.emit(normalizedYear);\n }\n /** Emits selected month in year view */\n _selectMonth(normalizedMonth) {\n this.monthSelected.emit(normalizedMonth);\n }\n /** OK button handler and close*/\n ok() {\n const cloned = this._dateAdapter.clone(this._selected);\n this._selectedChanged.next(cloned);\n this.close();\n }\n /** Cancel and close */\n cancel() {\n this._selected = this._rawValue;\n this.close();\n }\n /**\r\n * Register an input with this datepicker.\r\n * @param input The datepicker input to register with this datepicker.\r\n */\n _registerInput(input) {\n if (this.datepickerInput) {\n throw Error('A NgxMatDatepicker can only be associated with a single input.');\n }\n this.datepickerInput = input;\n this._inputSubscription = this.datepickerInput._valueChange.subscribe(value => this._selected = value);\n }\n /** Open the calendar. */\n open() {\n this._rawValue = this._selected != null ? this._dateAdapter.clone(this._selected) : null;\n if (this._selected == null) {\n this._selected = this._dateAdapter.today();\n if (this.defaultTime != null) {\n this._dateAdapter.setTimeByDefaultValues(this._selected, this.defaultTime);\n }\n }\n if (this._opened || this.disabled) {\n return;\n }\n if (!this.datepickerInput) {\n throw Error('Attempted to open an NgxMatDatepicker with no associated input.');\n }\n if (this._document) {\n this._focusedElementBeforeOpen = this._document.activeElement;\n }\n this.touchUi ? this._openAsDialog() : this._openAsPopup();\n this._opened = true;\n this.openedStream.emit();\n }\n /** Close the calendar. */\n close() {\n if (!this._opened) {\n return;\n }\n if (this._popupRef && this._popupRef.hasAttached()) {\n this._popupRef.detach();\n }\n if (this._dialogRef) {\n this._dialogRef.close();\n this._dialogRef = null;\n }\n if (this._calendarPortal && this._calendarPortal.isAttached) {\n this._calendarPortal.detach();\n }\n const completeClose = () => {\n // The `_opened` could've been reset already if\n // we got two events in quick succession.\n if (this._opened) {\n this._opened = false;\n this.closedStream.emit();\n this._focusedElementBeforeOpen = null;\n }\n };\n if (this._focusedElementBeforeOpen && typeof this._focusedElementBeforeOpen.focus === 'function') {\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 /** Open the calendar as a dialog. */\n _openAsDialog() {\n // Usually this would be handled by `open` which ensures that we can only have one overlay\n // open at a time, however since we reset the variables in async handlers some overlays\n // may slip through if the user opens and closes multiple times in quick succession (e.g.\n // by holding down the enter key).\n if (this._dialogRef) {\n this._dialogRef.close();\n }\n this._dialogRef = this._dialog.open(NgxMatDatetimeContent, {\n direction: this._dir ? this._dir.value : 'ltr',\n viewContainerRef: this._viewContainerRef,\n panelClass: 'mat-datepicker-dialog',\n hasBackdrop: this._hasBackdrop\n });\n this._dialogRef.afterClosed().subscribe(() => this.close());\n this._dialogRef.componentInstance.datepicker = this;\n this._setColor();\n }\n /** Open the calendar as a popup. */\n _openAsPopup() {\n if (!this._calendarPortal) {\n this._calendarPortal = new ComponentPortal(NgxMatDatetimeContent, this._viewContainerRef);\n }\n if (!this._popupRef) {\n this._createPopup();\n }\n if (!this._popupRef.hasAttached()) {\n this._popupComponentRef = this._popupRef.attach(this._calendarPortal);\n this._popupComponentRef.instance.datepicker = this;\n this._setColor();\n // Update the position once the calendar has rendered.\n this._ngZone.onStable.asObservable().pipe(take(1)).subscribe(() => {\n this._popupRef.updatePosition();\n });\n }\n }\n /** Create the popup. */\n _createPopup() {\n const overlayConfig = new OverlayConfig({\n positionStrategy: this._createPopupPositionStrategy(),\n hasBackdrop: this._hasBackdrop,\n backdropClass: 'mat-overlay-transparent-backdrop',\n direction: this._dir,\n scrollStrategy: this._scrollStrategy(),\n panelClass: 'mat-datepicker-popup'\n });\n this._popupRef = this._overlay.create(overlayConfig);\n this._popupRef.overlayElement.setAttribute('role', 'dialog');\n merge(this._popupRef.backdropClick(), this._popupRef.detachments(), this._popupRef.keydownEvents().pipe(filter(event => {\n // Closing on alt + up is only valid when there's an input associated with the datepicker.\n return event.keyCode === ESCAPE || this.datepickerInput && event.altKey && event.keyCode === UP_ARROW;\n }))).subscribe(event => {\n if (event) {\n event.preventDefault();\n }\n this._hasBackdrop && event ? this.cancel() : this.close();\n });\n }\n /** Create the popup PositionStrategy. */\n _createPopupPositionStrategy() {\n return this._overlay.position().flexibleConnectedTo(this.datepickerInput.getConnectedOverlayOrigin()).withTransformOriginOn('.mat-datepicker-content').withFlexibleDimensions(false).withViewportMargin(8).withLockedPosition().withPositions([{\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top'\n }, {\n originX: 'start',\n originY: 'top',\n overlayX: 'start',\n overlayY: 'bottom'\n }, {\n originX: 'end',\n originY: 'bottom',\n overlayX: 'end',\n overlayY: 'top'\n }, {\n originX: 'end',\n originY: 'top',\n overlayX: 'end',\n overlayY: 'bottom'\n }]);\n }\n /**\r\n * @param obj The object to check.\r\n * @returns The given object if it is both a date instance and valid, otherwise null.\r\n */\n _getValidDateOrNull(obj) {\n return this._dateAdapter.isDateInstance(obj) && this._dateAdapter.isValid(obj) ? obj : null;\n }\n /** Passes the current theme color along to the calendar overlay. */\n _setColor() {\n const color = this.color;\n if (this._popupComponentRef) {\n this._popupComponentRef.instance.color = color;\n }\n if (this._dialogRef) {\n this._dialogRef.componentInstance.color = color;\n }\n }\n}\nNgxMatDatetimePicker.ɵfac = function NgxMatDatetimePicker_Factory(t) {\n return new (t || NgxMatDatetimePicker)(ɵngcc0.ɵɵdirectiveInject(ɵngcc10.MatDialog), ɵngcc0.ɵɵdirectiveInject(ɵngcc11.Overlay), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(MAT_DATEPICKER_SCROLL_STRATEGY), ɵngcc0.ɵɵdirectiveInject(NgxMatDateAdapter, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.Directionality, 8), ɵngcc0.ɵɵdirectiveInject(DOCUMENT, 8));\n};\nNgxMatDatetimePicker.ɵcmp = /*@__PURE__*/ɵngcc0.ɵɵdefineComponent({\n type: NgxMatDatetimePicker,\n selectors: [[\"ngx-mat-datetime-picker\"]],\n contentQueries: function NgxMatDatetimePicker_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, TemplateRef, 5);\n }\n if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._customIcon = _t.first);\n }\n },\n inputs: {\n startView: \"startView\",\n startAt: \"startAt\",\n defaultColor: \"defaultColor\",\n color: \"color\",\n touchUi: \"touchUi\",\n hideTime: \"hideTime\",\n disabled: \"disabled\",\n opened: \"opened\",\n showSpinners: \"showSpinners\",\n showSeconds: \"showSeconds\",\n stepHour: \"stepHour\",\n stepMinute: \"stepMinute\",\n stepSecond: \"stepSecond\",\n enableMeridian: \"enableMeridian\",\n disableMinute: \"disableMinute\",\n defaultTime: \"defaultTime\",\n calendarHeaderComponent: \"calendarHeaderComponent\",\n panelClass: \"panelClass\",\n dateClass: \"dateClass\"\n },\n outputs: {\n yearSelected: \"yearSelected\",\n monthSelected: \"monthSelected\",\n openedStream: \"opened\",\n closedStream: \"closed\"\n },\n exportAs: [\"ngxMatDatetimePicker\"],\n decls: 0,\n vars: 0,\n template: function NgxMatDatetimePicker_Template(rf, ctx) {},\n encapsulation: 2,\n changeDetection: 0\n});\n/** @nocollapse */\nNgxMatDatetimePicker.ctorParameters = () => [{\n type: MatDialog\n}, {\n type: Overlay\n}, {\n type: NgZone\n}, {\n type: ViewContainerRef\n}, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [MAT_DATEPICKER_SCROLL_STRATEGY]\n }]\n}, {\n type: NgxMatDateAdapter,\n decorators: [{\n type: Optional\n }]\n}, {\n type: Directionality,\n decorators: [{\n type: Optional\n }]\n}, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }]\n}];\nNgxMatDatetimePicker.propDecorators = {\n calendarHeaderComponent: [{\n type: Input\n }],\n _customIcon: [{\n type: ContentChild,\n args: [TemplateRef]\n }],\n startAt: [{\n type: Input\n }],\n startView: [{\n type: Input\n }],\n defaultColor: [{\n type: Input\n }],\n color: [{\n type: Input\n }],\n touchUi: [{\n type: Input\n }],\n hideTime: [{\n type: Input\n }],\n disabled: [{\n type: Input\n }],\n yearSelected: [{\n type: Output\n }],\n monthSelected: [{\n type: Output\n }],\n panelClass: [{\n type: Input\n }],\n dateClass: [{\n type: Input\n }],\n openedStream: [{\n type: Output,\n args: ['opened']\n }],\n closedStream: [{\n type: Output,\n args: ['closed']\n }],\n opened: [{\n type: Input\n }],\n showSpinners: [{\n type: Input\n }],\n showSeconds: [{\n type: Input\n }],\n stepHour: [{\n type: Input\n }],\n stepMinute: [{\n type: Input\n }],\n stepSecond: [{\n type: Input\n }],\n enableMeridian: [{\n type: Input\n }],\n disableMinute: [{\n type: Input\n }],\n defaultTime: [{\n type: Input\n }]\n};\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxMatDatetimePicker, [{\n type: Component,\n args: [{\n selector: 'ngx-mat-datetime-picker',\n template: '',\n exportAs: 'ngxMatDatetimePicker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n }]\n }], function () {\n return [{\n type: ɵngcc10.MatDialog\n }, {\n type: ɵngcc11.Overlay\n }, {\n type: ɵngcc0.NgZone\n }, {\n type: ɵngcc0.ViewContainerRef\n }, {\n type: undefined,\n decorators: [{\n type: Inject,\n args: [MAT_DATEPICKER_SCROLL_STRATEGY]\n }]\n }, {\n type: NgxMatDateAdapter,\n decorators: [{\n type: Optional\n }]\n }, {\n type: ɵngcc2.Directionality,\n decorators: [{\n type: Optional\n }]\n }, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }]\n }];\n }, {\n startView: [{\n type: Input\n }],\n yearSelected: [{\n type: Output\n }],\n monthSelected: [{\n type: Output\n }],\n openedStream: [{\n type: Output,\n args: ['opened']\n }],\n closedStream: [{\n type: Output,\n args: ['closed']\n }],\n startAt: [{\n type: Input\n }],\n defaultColor: [{\n type: Input\n }],\n color: [{\n type: Input\n }],\n touchUi: [{\n type: Input\n }],\n hideTime: [{\n type: Input\n }],\n disabled: [{\n type: Input\n }],\n opened: [{\n type: Input\n }],\n showSpinners: [{\n type: Input\n }],\n showSeconds: [{\n type: Input\n }],\n stepHour: [{\n type: Input\n }],\n stepMinute: [{\n type: Input\n }],\n stepSecond: [{\n type: Input\n }],\n enableMeridian: [{\n type: Input\n }],\n disableMinute: [{\n type: Input\n }],\n defaultTime: [{\n type: Input\n }],\n calendarHeaderComponent: [{\n type: Input\n }],\n _customIcon: [{\n type: ContentChild,\n args: [TemplateRef]\n }],\n panelClass: [{\n type: Input\n }],\n dateClass: [{\n type: Input\n }]\n });\n})();\n\n/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\n/** @docs-private */\nconst MAT_DATEPICKER_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NgxMatDatetimeInput),\n multi: true\n};\n/** @docs-private */\nconst MAT_DATEPICKER_VALIDATORS = {\n provide: NG_VALIDATORS,\n useExisting: forwardRef(() => NgxMatDatetimeInput),\n multi: true\n};\n/**\r\n * An event used for datepicker input and change events. We don't always have access to a native\r\n * input or change event because the event may have been triggered by the user clicking on the\r\n * calendar popup. For consistency, we always use MatDatetimePickerInputEvent instead.\r\n */\nclass MatDatetimePickerInputEvent {\n constructor( /** Reference to the datepicker input component that emitted the event. */\n target, /** Reference to the native input element associated with the datepicker input. */\n targetElement) {\n this.target = target;\n this.targetElement = targetElement;\n this.value = this.target.value;\n }\n}\n/** Directive used to connect an input to a matDatetimePicker. */\nclass NgxMatDatetimeInput {\n constructor(_elementRef, _dateAdapter, _dateFormats, _formField) {\n this._elementRef = _elementRef;\n this._dateAdapter = _dateAdapter;\n this._dateFormats = _dateFormats;\n this._formField = _formField;\n /** Emits when a `change` event is fired on this ``. */\n this.dateChange = new EventEmitter();\n /** Emits when an `input` event is fired on this ``. */\n this.dateInput = new EventEmitter();\n /** Emits when the value changes (either due to user input or programmatic change). */\n this._valueChange = new EventEmitter();\n /** Emits when the disabled state has changed */\n this.stateChanges = new EventEmitter();\n this._onTouched = () => {};\n this._cvaOnChange = () => {};\n this._validatorOnChange = () => {};\n this._datepickerSubscription = Subscription.EMPTY;\n this._localeSubscription = Subscription.EMPTY;\n /** The form control validator for whether the input parses. */\n this._parseValidator = () => {\n return this._lastValueValid ? null : {\n 'matDatetimePickerParse': {\n 'text': this._elementRef.nativeElement.value\n }\n };\n };\n /** The form control validator for the min date. */\n this._minValidator = control => {\n const controlValue = this._getValidDateOrNull(this._dateAdapter.deserialize(control.value));\n return !this.min || !controlValue || this._dateAdapter.compareDateWithTime(this.min, controlValue, this._datepicker.showSeconds) <= 0 ? null : {\n 'matDatetimePickerMin': {\n 'min': this.min,\n 'actual': controlValue\n }\n };\n };\n /** The form control validator for the max date. */\n this._maxValidator = control => {\n const controlValue = this._getValidDateOrNull(this._dateAdapter.deserialize(control.value));\n return !this.max || !controlValue || this._dateAdapter.compareDateWithTime(this.max, controlValue, this._datepicker.showSeconds) >= 0 ? null : {\n 'matDatetimePickerMax': {\n 'max': this.max,\n 'actual': controlValue\n }\n };\n };\n /** The form control validator for the date filter. */\n this._filterValidator = control => {\n const controlValue = this._getValidDateOrNull(this._dateAdapter.deserialize(control.value));\n return !this._dateFilter || !controlValue || this._dateFilter(controlValue) ? null : {\n 'matDatetimePickerFilter': true\n };\n };\n /** The combined form control validator for this input. */\n this._validator = Validators.compose([this._parseValidator, this._minValidator, this._maxValidator, this._filterValidator]);\n /** Whether the last value set on the input was valid. */\n this._lastValueValid = false;\n if (!this._dateAdapter) {\n throw createMissingDateImplError('NgxMatDateAdapter');\n }\n if (!this._dateFormats) {\n throw createMissingDateImplError('NGX_MAT_DATE_FORMATS');\n }\n // Update the displayed date when the locale changes.\n this._localeSubscription = _dateAdapter.localeChanges.subscribe(() => {\n this.value = this.value;\n });\n }\n /** The datepicker that this input is associated with. */\n set ngxMatDatetimePicker(value) {\n if (!value) {\n return;\n }\n this._datepicker = value;\n this._datepicker._registerInput(this);\n this._datepickerSubscription.unsubscribe();\n this._datepickerSubscription = this._datepicker._selectedChanged.subscribe(selected => {\n this.value = selected;\n this._cvaOnChange(selected);\n this._onTouched();\n this.dateInput.emit(new MatDatetimePickerInputEvent(this, this._elementRef.nativeElement));\n this.dateChange.emit(new MatDatetimePickerInputEvent(this, this._elementRef.nativeElement));\n });\n }\n /** Function that can be used to filter out dates within the datepicker. */\n set ngxMatDatetimePickerFilter(value) {\n this._dateFilter = value;\n this._validatorOnChange();\n }\n /** The value of the input. */\n get value() {\n return this._value;\n }\n set value(value) {\n value = this._dateAdapter.deserialize(value);\n this._lastValueValid = !value || this._dateAdapter.isValid(value);\n value = this._getValidDateOrNull(value);\n const oldDate = this.value;\n this._value = value;\n this._formatValue(value);\n if (!this._dateAdapter.sameDate(oldDate, value)) {\n this._valueChange.emit(value);\n }\n }\n /** The minimum valid date. */\n get min() {\n return this._min;\n }\n set min(value) {\n this._min = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n this._validatorOnChange();\n }\n /** The maximum valid date. */\n get max() {\n return this._max;\n }\n set max(value) {\n this._max = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\n this._validatorOnChange();\n }\n /** Whether the datepicker-input is disabled. */\n get disabled() {\n return !!this._disabled;\n }\n set disabled(value) {\n const newValue = value != null && `${value}` !== 'false';\n const element = this._elementRef.nativeElement;\n if (this._disabled !== newValue) {\n this._disabled = newValue;\n this.stateChanges.emit(undefined);\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 ngOnDestroy() {\n this._datepickerSubscription.unsubscribe();\n this._localeSubscription.unsubscribe();\n this._valueChange.complete();\n this.stateChanges.complete();\n }\n /** @docs-private */\n registerOnValidatorChange(fn) {\n this._validatorOnChange = fn;\n }\n /** @docs-private */\n validate(c) {\n return this._validator ? this._validator(c) : null;\n }\n /**\r\n * @deprecated\r\n * @breaking-change 8.0.0 Use `getConnectedOverlayOrigin` instead\r\n */\n getPopupConnectionElementRef() {\n return this.getConnectedOverlayOrigin();\n }\n /**\r\n * Gets the element that the datepicker popup should be connected to.\r\n * @return The element to connect the popup to.\r\n */\n getConnectedOverlayOrigin() {\n return this._formField ? this._formField.getConnectedOverlayOrigin() : this._elementRef;\n }\n // Implemented as part of ControlValueAccessor.\n writeValue(value) {\n this.value = value;\n }\n // Implemented as part of ControlValueAccessor.\n registerOnChange(fn) {\n this._cvaOnChange = fn;\n }\n // Implemented as part of ControlValueAccessor.\n registerOnTouched(fn) {\n this._onTouched = fn;\n }\n // Implemented as part of ControlValueAccessor.\n setDisabledState(isDisabled) {\n this.disabled = isDisabled;\n }\n _onKeydown(event) {\n const isAltDownArrow = event.altKey && event.keyCode === DOWN_ARROW;\n if (this._datepicker && isAltDownArrow && !this._elementRef.nativeElement.readOnly) {\n this._datepicker.open();\n event.preventDefault();\n }\n }\n _onInput(value) {\n const lastValueWasValid = this._lastValueValid;\n let date = this._dateAdapter.parse(value, this._dateFormats.parse.dateInput);\n this._lastValueValid = !date || this._dateAdapter.isValid(date);\n date = this._getValidDateOrNull(date);\n const isSameTime = this._dateAdapter.isSameTime(date, this._value);\n if (date != null && (!isSameTime || !this._dateAdapter.sameDate(date, this._value)) || date == null && this._value != null) {\n this._value = date;\n this._cvaOnChange(date);\n this._valueChange.emit(date);\n this.dateInput.emit(new MatDatetimePickerInputEvent(this, this._elementRef.nativeElement));\n } else if (lastValueWasValid !== this._lastValueValid) {\n this._validatorOnChange();\n }\n }\n _onChange() {\n this.dateChange.emit(new MatDatetimePickerInputEvent(this, this._elementRef.nativeElement));\n }\n /** Returns the palette used by the input's form field, if any. */\n _getThemePalette() {\n return this._formField ? this._formField.color : undefined;\n }\n /** Handles blur events on the input. */\n _onBlur() {\n // Reformat the input only if we have a valid value.\n if (this.value) {\n this._formatValue(this.value);\n }\n this._onTouched();\n }\n /** Handles focus events on the input. */\n _onFocus() {\n // Close datetime picker if opened\n if (this._datepicker && this._datepicker.opened) {\n this._datepicker.cancel();\n }\n }\n /** Formats a value and sets it on the input element. */\n _formatValue(value) {\n this._elementRef.nativeElement.value = value ? this._dateAdapter.format(value, this._dateFormats.display.dateInput) : '';\n }\n /**\r\n * @param obj The object to check.\r\n * @returns The given object if it is both a date instance and valid, otherwise null.\r\n */\n _getValidDateOrNull(obj) {\n return this._dateAdapter.isDateInstance(obj) && this._dateAdapter.isValid(obj) ? obj : null;\n }\n}\nNgxMatDatetimeInput.ɵfac = function NgxMatDatetimeInput_Factory(t) {\n return new (t || NgxMatDatetimeInput)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(NgxMatDateAdapter, 8), ɵngcc0.ɵɵdirectiveInject(NGX_MAT_DATE_FORMATS, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc7.MatFormField, 8));\n};\nNgxMatDatetimeInput.ɵdir = /*@__PURE__*/ɵngcc0.ɵɵdefineDirective({\n type: NgxMatDatetimeInput,\n selectors: [[\"input\", \"ngxMatDatetimePicker\", \"\"]],\n hostVars: 5,\n hostBindings: function NgxMatDatetimeInput_HostBindings(rf, ctx) {\n if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"input\", function NgxMatDatetimeInput_input_HostBindingHandler($event) {\n return ctx._onInput($event.target.value);\n })(\"change\", function NgxMatDatetimeInput_change_HostBindingHandler() {\n return ctx._onChange();\n })(\"blur\", function NgxMatDatetimeInput_blur_HostBindingHandler() {\n return ctx._onBlur();\n })(\"focus\", function NgxMatDatetimeInput_focus_HostBindingHandler() {\n return ctx._onFocus();\n })(\"keydown\", function NgxMatDatetimeInput_keydown_HostBindingHandler($event) {\n return ctx._onKeydown($event);\n });\n }\n if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"disabled\", ctx.disabled);\n ɵngcc0.ɵɵattribute(\"aria-haspopup\", ctx._datepicker ? \"dialog\" : null)(\"aria-owns\", (ctx._datepicker == null ? null : ctx._datepicker.opened) && ctx._datepicker.id || null)(\"min\", ctx.min ? ctx._dateAdapter.toIso8601(ctx.min) : null)(\"max\", ctx.max ? ctx._dateAdapter.toIso8601(ctx.max) : null);\n }\n },\n inputs: {\n value: \"value\",\n ngxMatDatetimePicker: \"ngxMatDatetimePicker\",\n ngxMatDatetimePickerFilter: \"ngxMatDatetimePickerFilter\",\n min: \"min\",\n max: \"max\",\n disabled: \"disabled\"\n },\n outputs: {\n dateChange: \"dateChange\",\n dateInput: \"dateInput\"\n },\n exportAs: [\"ngxMatDatetimePickerInput\"],\n features: [ɵngcc0.ɵɵProvidersFeature([MAT_DATEPICKER_VALUE_ACCESSOR, MAT_DATEPICKER_VALIDATORS, {\n provide: MAT_INPUT_VALUE_ACCESSOR,\n useExisting: NgxMatDatetimeInput\n }])]\n});\n/** @nocollapse */\nNgxMatDatetimeInput.ctorParameters = () => [{\n type: ElementRef\n}, {\n type: NgxMatDateAdapter,\n decorators: [{\n type: Optional\n }]\n}, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [NGX_MAT_DATE_FORMATS]\n }]\n}, {\n type: MatFormField,\n decorators: [{\n type: Optional\n }]\n}];\nNgxMatDatetimeInput.propDecorators = {\n ngxMatDatetimePicker: [{\n type: Input\n }],\n ngxMatDatetimePickerFilter: [{\n type: Input\n }],\n value: [{\n type: Input\n }],\n min: [{\n type: Input\n }],\n max: [{\n type: Input\n }],\n disabled: [{\n type: Input\n }],\n dateChange: [{\n type: Output\n }],\n dateInput: [{\n type: Output\n }]\n};\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxMatDatetimeInput, [{\n type: Directive,\n args: [{\n selector: 'input[ngxMatDatetimePicker]',\n providers: [MAT_DATEPICKER_VALUE_ACCESSOR, MAT_DATEPICKER_VALIDATORS, {\n provide: MAT_INPUT_VALUE_ACCESSOR,\n useExisting: NgxMatDatetimeInput\n }],\n host: {\n '[attr.aria-haspopup]': '_datepicker ? \"dialog\" : null',\n '[attr.aria-owns]': '(_datepicker?.opened && _datepicker.id) || null',\n '[attr.min]': 'min ? _dateAdapter.toIso8601(min) : null',\n '[attr.max]': 'max ? _dateAdapter.toIso8601(max) : null',\n '[disabled]': 'disabled',\n '(input)': '_onInput($event.target.value)',\n '(change)': '_onChange()',\n '(blur)': '_onBlur()',\n '(focus)': '_onFocus()',\n '(keydown)': '_onKeydown($event)'\n },\n exportAs: 'ngxMatDatetimePickerInput'\n }]\n }], function () {\n return [{\n type: ɵngcc0.ElementRef\n }, {\n type: NgxMatDateAdapter,\n decorators: [{\n type: Optional\n }]\n }, {\n type: undefined,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [NGX_MAT_DATE_FORMATS]\n }]\n }, {\n type: ɵngcc7.MatFormField,\n decorators: [{\n type: Optional\n }]\n }];\n }, {\n dateChange: [{\n type: Output\n }],\n dateInput: [{\n type: Output\n }],\n value: [{\n type: Input\n }],\n ngxMatDatetimePicker: [{\n type: Input\n }],\n ngxMatDatetimePickerFilter: [{\n type: Input\n }],\n min: [{\n type: Input\n }],\n max: [{\n type: Input\n }],\n disabled: [{\n type: Input\n }]\n });\n})();\nclass NgxMatTimepickerModule {}\nNgxMatTimepickerModule.ɵfac = function NgxMatTimepickerModule_Factory(t) {\n return new (t || NgxMatTimepickerModule)();\n};\nNgxMatTimepickerModule.ɵmod = /*@__PURE__*/ɵngcc0.ɵɵdefineNgModule({\n type: NgxMatTimepickerModule\n});\nNgxMatTimepickerModule.ɵinj = /*@__PURE__*/ɵngcc0.ɵɵdefineInjector({\n imports: [CommonModule, MatInputModule, ReactiveFormsModule, FormsModule, MatIconModule, MatButtonModule]\n});\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxMatTimepickerModule, [{\n type: NgModule,\n args: [{\n imports: [CommonModule, MatInputModule, ReactiveFormsModule, FormsModule, MatIconModule, MatButtonModule],\n exports: [NgxMatTimepickerComponent],\n declarations: [NgxMatTimepickerComponent]\n }]\n }], null, null);\n})();\n(function () {\n (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgxMatTimepickerModule, {\n declarations: function () {\n return [NgxMatTimepickerComponent];\n },\n imports: function () {\n return [CommonModule, MatInputModule, ReactiveFormsModule, FormsModule, MatIconModule, MatButtonModule];\n },\n exports: function () {\n return [NgxMatTimepickerComponent];\n }\n });\n})();\nclass NgxMatDatetimePickerModule {}\nNgxMatDatetimePickerModule.ɵfac = function NgxMatDatetimePickerModule_Factory(t) {\n return new (t || NgxMatDatetimePickerModule)();\n};\nNgxMatDatetimePickerModule.ɵmod = /*@__PURE__*/ɵngcc0.ɵɵdefineNgModule({\n type: NgxMatDatetimePickerModule\n});\nNgxMatDatetimePickerModule.ɵinj = /*@__PURE__*/ɵngcc0.ɵɵdefineInjector({\n providers: [MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER, {\n provide: NGX_MAT_DATE_RANGE_SELECTION_STRATEGY,\n useClass: DefaultNgxMatCalendarRangeStrategy\n }],\n imports: [CommonModule, MatDatepickerModule, MatDialogModule, PortalModule, FormsModule, MatIconModule, MatButtonModule, MatInputModule, NgxMatTimepickerModule]\n});\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxMatDatetimePickerModule, [{\n type: NgModule,\n args: [{\n imports: [CommonModule, MatDatepickerModule, MatDialogModule, PortalModule, FormsModule, MatIconModule, MatButtonModule, MatInputModule, NgxMatTimepickerModule],\n exports: [NgxMatDatetimePicker, NgxMatDatetimeInput, NgxMatCalendar, NgxMatMonthView, NgxMatCalendarBody, NgxMatYearView, NgxMatMultiYearView, NgxMatCalendarHeader],\n declarations: [NgxMatDatetimePicker, NgxMatDatetimeContent, NgxMatDatetimeInput, NgxMatCalendar, NgxMatMonthView, NgxMatCalendarBody, NgxMatYearView, NgxMatMultiYearView, NgxMatCalendarHeader],\n entryComponents: [NgxMatDatetimeContent, NgxMatCalendarHeader],\n providers: [MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER, {\n provide: NGX_MAT_DATE_RANGE_SELECTION_STRATEGY,\n useClass: DefaultNgxMatCalendarRangeStrategy\n }]\n }]\n }], null, null);\n})();\n(function () {\n (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgxMatDatetimePickerModule, {\n declarations: function () {\n return [NgxMatDatetimePicker, NgxMatDatetimeContent, NgxMatDatetimeInput, NgxMatCalendar, NgxMatMonthView, NgxMatCalendarBody, NgxMatYearView, NgxMatMultiYearView, NgxMatCalendarHeader];\n },\n imports: function () {\n return [CommonModule, MatDatepickerModule, MatDialogModule, PortalModule, FormsModule, MatIconModule, MatButtonModule, MatInputModule, NgxMatTimepickerModule];\n },\n exports: function () {\n return [NgxMatDatetimePicker, NgxMatDatetimeInput, NgxMatCalendar, NgxMatMonthView, NgxMatCalendarBody, NgxMatYearView, NgxMatMultiYearView, NgxMatCalendarHeader];\n }\n });\n})();\n\n/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\n// TODO(mmalerba): Remove when we no longer support safari 9.\n/** Whether the browser supports the Intl API. */\nlet SUPPORTS_INTL_API;\n// We need a try/catch around the reference to `Intl`, because accessing it in some cases can\n// cause IE to throw. These cases are tied to particular versions of Windows and can happen if\n// the consumer is providing a polyfilled `Map`. See:\n// https://github.com/Microsoft/ChakraCore/issues/3189\n// https://github.com/angular/components/issues/15687\ntry {\n SUPPORTS_INTL_API = typeof Intl != 'undefined';\n} catch (_a) {\n SUPPORTS_INTL_API = false;\n}\n/** The default month names to use if Intl API is not available. */\nconst DEFAULT_MONTH_NAMES = {\n 'long': ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],\n 'short': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n 'narrow': ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D']\n};\nconst ɵ0$1 = i => String(i + 1);\n/** The default date names to use if Intl API is not available. */\nconst DEFAULT_DATE_NAMES = range(31, ɵ0$1);\n/** The default day of the week names to use if Intl API is not available. */\nconst DEFAULT_DAY_OF_WEEK_NAMES = {\n 'long': ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\n 'short': ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n 'narrow': ['S', 'M', 'T', 'W', 'T', 'F', 'S']\n};\n/**\r\n * Matches strings that have the form of a valid RFC 3339 string\r\n * (https://tools.ietf.org/html/rfc3339). Note that the string may not actually be a valid date\r\n * because the regex will match strings an with out of bounds month, date, etc.\r\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/** Creates an array and fills it with values. */\nfunction range(length, valueFunction) {\n const valuesArray = Array(length);\n for (let i = 0; i < length; i++) {\n valuesArray[i] = valueFunction(i);\n }\n return valuesArray;\n}\n/** Adapts the native JS Date for use with cdk-based components that work with dates. */\nclass NgxMatNativeDateAdapter extends NgxMatDateAdapter {\n constructor(matDateLocale, platform) {\n super();\n /**\r\n * Whether to use `timeZone: 'utc'` with `Intl.DateTimeFormat` when formatting dates.\r\n * Without this `Intl.DateTimeFormat` sometimes chooses the wrong timeZone, which can throw off\r\n * the result. (e.g. in the en-US locale `new Date(1800, 7, 14).toLocaleDateString()`\r\n * will produce `'8/13/1800'`.\r\n *\r\n * TODO(mmalerba): drop this variable. It's not being used in the code right now. We're now\r\n * getting the string representation of a Date object from its utc representation. We're keeping\r\n * it here for sometime, just for precaution, in case we decide to revert some of these changes\r\n * though.\r\n */\n this.useUtcForDisplay = true;\n super.setLocale(matDateLocale);\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 getYear(date) {\n return date.getFullYear();\n }\n getMonth(date) {\n return date.getMonth();\n }\n getDate(date) {\n return date.getDate();\n }\n getDayOfWeek(date) {\n return date.getDay();\n }\n getMonthNames(style) {\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 => this._stripDirectionalityCharacters(this._format(dtf, new Date(2017, i, 1))));\n }\n return DEFAULT_MONTH_NAMES[style];\n }\n getDateNames() {\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 => this._stripDirectionalityCharacters(this._format(dtf, new Date(2017, 0, i + 1))));\n }\n return DEFAULT_DATE_NAMES;\n }\n getDayOfWeekNames(style) {\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 => this._stripDirectionalityCharacters(this._format(dtf, new Date(2017, 0, i + 1))));\n }\n return DEFAULT_DAY_OF_WEEK_NAMES[style];\n }\n getYearName(date) {\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 getFirstDayOfWeek() {\n // We can't tell using native JS Date what the first day of the week is, we default to Sunday.\n return 0;\n }\n getNumDaysInMonth(date) {\n return this.getDate(this._createDateWithOverflow(this.getYear(date), this.getMonth(date) + 1, 0));\n }\n clone(date) {\n return new Date(date.getTime());\n }\n createDate(year, month, date) {\n // Check for invalid month and date (except upper bound on date which we have to check after\n // creating the Date).\n if (month < 0 || month > 11) {\n throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\n }\n if (date < 1) {\n throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\n }\n let result = this._createDateWithOverflow(year, month, date);\n // Check that the date wasn't above the upper bound for the month, causing the month to overflow\n if (result.getMonth() != month) {\n throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\n }\n return result;\n }\n today() {\n return new Date();\n }\n parse(value) {\n // We have no way using the native JS Date to set the parse format or locale, so we ignore these\n // parameters.\n if (typeof value == 'number') {\n return new Date(value);\n }\n return value ? new Date(Date.parse(value)) : null;\n }\n format(date, displayFormat) {\n if (!this.isValid(date)) {\n throw Error('NativeDateAdapter: Cannot format invalid date.');\n }\n if (SUPPORTS_INTL_API) {\n // On IE and Edge the i18n API will throw a hard error that can crash the entire app\n // if we attempt to format a date whose year is less than 1 or greater than 9999.\n if (this._clampDate && (date.getFullYear() < 1 || date.getFullYear() > 9999)) {\n date = this.clone(date);\n date.setFullYear(Math.max(1, Math.min(9999, date.getFullYear())));\n }\n displayFormat = Object.assign(Object.assign({}, displayFormat), {\n timeZone: 'utc'\n });\n const dtf = new Intl.DateTimeFormat(this.locale, displayFormat);\n return this._stripDirectionalityCharacters(this._format(dtf, date));\n }\n return this._stripDirectionalityCharacters(date.toDateString());\n }\n addCalendarYears(date, years) {\n return this.addCalendarMonths(date, years * 12);\n }\n addCalendarMonths(date, months) {\n let newDate = this._createDateWithOverflow(this.getYear(date), this.getMonth(date) + months, this.getDate(date));\n // It's possible to wind up in the wrong month if the original month has more days than the new\n // month. In this case we want to go to the last day of the desired month.\n // Note: the additional + 12 % 12 ensures we end up with a positive number, since JS % doesn't\n // guarantee this.\n if (this.getMonth(newDate) != ((this.getMonth(date) + months) % 12 + 12) % 12) {\n newDate = this._createDateWithOverflow(this.getYear(newDate), this.getMonth(newDate), 0);\n }\n return newDate;\n }\n addCalendarDays(date, days) {\n return this._createDateWithOverflow(this.getYear(date), this.getMonth(date), this.getDate(date) + days);\n }\n toIso8601(date) {\n return [date.getUTCFullYear(), this._2digit(date.getUTCMonth() + 1), this._2digit(date.getUTCDate())].join('-');\n }\n /**\r\n * Returns the given value if given a valid Date or null. Deserializes valid ISO 8601 strings\r\n * (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into null. Returns an\r\n * invalid date for all other values.\r\n */\n deserialize(value) {\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 let date = new Date(value);\n if (this.isValid(date)) {\n return date;\n }\n }\n }\n return super.deserialize(value);\n }\n isDateInstance(obj) {\n return obj instanceof Date;\n }\n isValid(date) {\n return !isNaN(date.getTime());\n }\n invalid() {\n return new Date(NaN);\n }\n getHour(date) {\n return date.getHours();\n }\n getMinute(date) {\n return date.getMinutes();\n }\n getSecond(date) {\n return date.getSeconds();\n }\n setHour(date, value) {\n date.setHours(value);\n }\n setMinute(date, value) {\n date.setMinutes(value);\n }\n setSecond(date, value) {\n date.setSeconds(value);\n }\n /** Creates a date but allows the month and date to overflow. */\n _createDateWithOverflow(year, month, date) {\n const result = new Date(year, month, date);\n // We need to correct for the fact that JS native Date treats years in range [0, 99] as\n // abbreviations for 19xx.\n if (year >= 0 && year < 100) {\n result.setFullYear(this.getYear(result) - 1900);\n }\n return result;\n }\n /**\r\n * Pads a number to make it two digits.\r\n * @param n The number to pad.\r\n * @returns The padded number.\r\n */\n _2digit(n) {\n return ('00' + n).slice(-2);\n }\n /**\r\n * Strip out unicode LTR and RTL characters. Edge and IE insert these into formatted dates while\r\n * other browsers do not. We remove them to make output consistent and because they interfere with\r\n * date parsing.\r\n * @param str The string to strip direction characters from.\r\n * @returns The stripped string.\r\n */\n _stripDirectionalityCharacters(str) {\n return str.replace(/[\\u200e\\u200f]/g, '');\n }\n /**\r\n * When converting Date object to string, javascript built-in functions may return wrong\r\n * results because it applies its internal DST rules. The DST rules around the world change\r\n * very frequently, and the current valid rule is not always valid in previous years though.\r\n * We work around this problem building a new Date object which has its internal UTC\r\n * representation with the local date and time.\r\n * @param dtf Intl.DateTimeFormat object, containg the desired string format. It must have\r\n * timeZone set to 'utc' to work fine.\r\n * @param date Date from which we want to get the string representation according to dtf\r\n * @returns A Date object with its UTC representation based on the passed in date info\r\n */\n _format(dtf, date) {\n // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\n // To work around this we use `setUTCFullYear` and `setUTCHours` instead.\n const d = new Date();\n d.setUTCFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n d.setUTCHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n return dtf.format(d);\n }\n}\nNgxMatNativeDateAdapter.ɵfac = function NgxMatNativeDateAdapter_Factory(t) {\n return new (t || NgxMatNativeDateAdapter)(ɵngcc0.ɵɵinject(MAT_DATE_LOCALE, 8), ɵngcc0.ɵɵinject(ɵngcc12.Platform));\n};\nNgxMatNativeDateAdapter.ɵprov = /*@__PURE__*/ɵngcc0.ɵɵdefineInjectable({\n token: NgxMatNativeDateAdapter,\n factory: NgxMatNativeDateAdapter.ɵfac\n});\n/** @nocollapse */\nNgxMatNativeDateAdapter.ctorParameters = () => [{\n type: String,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_DATE_LOCALE]\n }]\n}, {\n type: Platform\n}];\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxMatNativeDateAdapter, [{\n type: Injectable\n }], function () {\n return [{\n type: String,\n decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_DATE_LOCALE]\n }]\n }, {\n type: ɵngcc12.Platform\n }];\n }, null);\n})();\n\n/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\nconst DEFAULT_DATE_INPUT = {\n year: 'numeric',\n month: 'numeric',\n day: 'numeric',\n hour12: false,\n hour: \"2-digit\",\n minute: \"2-digit\",\n second: \"2-digit\"\n};\nconst NGX_MAT_NATIVE_DATE_FORMATS = {\n parse: {\n dateInput: DEFAULT_DATE_INPUT\n },\n display: {\n dateInput: DEFAULT_DATE_INPUT,\n monthYearLabel: {\n year: 'numeric',\n month: 'short'\n },\n dateA11yLabel: {\n year: 'numeric',\n month: 'long',\n day: 'numeric'\n },\n monthYearA11yLabel: {\n year: 'numeric',\n month: 'long'\n }\n }\n};\n\n/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\nclass NgxNativeDateModule {}\nNgxNativeDateModule.ɵfac = function NgxNativeDateModule_Factory(t) {\n return new (t || NgxNativeDateModule)();\n};\nNgxNativeDateModule.ɵmod = /*@__PURE__*/ɵngcc0.ɵɵdefineNgModule({\n type: NgxNativeDateModule\n});\nNgxNativeDateModule.ɵinj = /*@__PURE__*/ɵngcc0.ɵɵdefineInjector({\n providers: [{\n provide: NgxMatDateAdapter,\n useClass: NgxMatNativeDateAdapter\n }],\n imports: [PlatformModule]\n});\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxNativeDateModule, [{\n type: NgModule,\n args: [{\n imports: [PlatformModule],\n providers: [{\n provide: NgxMatDateAdapter,\n useClass: NgxMatNativeDateAdapter\n }]\n }]\n }], null, null);\n})();\n(function () {\n (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgxNativeDateModule, {\n imports: function () {\n return [PlatformModule];\n }\n });\n})();\nconst ɵ0 = NGX_MAT_NATIVE_DATE_FORMATS;\nclass NgxMatNativeDateModule {}\nNgxMatNativeDateModule.ɵfac = function NgxMatNativeDateModule_Factory(t) {\n return new (t || NgxMatNativeDateModule)();\n};\nNgxMatNativeDateModule.ɵmod = /*@__PURE__*/ɵngcc0.ɵɵdefineNgModule({\n type: NgxMatNativeDateModule\n});\nNgxMatNativeDateModule.ɵinj = /*@__PURE__*/ɵngcc0.ɵɵdefineInjector({\n providers: [{\n provide: NGX_MAT_DATE_FORMATS,\n useValue: ɵ0\n }],\n imports: [NgxNativeDateModule]\n});\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxMatNativeDateModule, [{\n type: NgModule,\n args: [{\n imports: [NgxNativeDateModule],\n providers: [{\n provide: NGX_MAT_DATE_FORMATS,\n useValue: ɵ0\n }]\n }]\n }], null, null);\n})();\n(function () {\n (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgxMatNativeDateModule, {\n imports: [NgxNativeDateModule]\n });\n})();\n\n/*\r\n * Public API Surface of ngx-mat-datetime-picker\r\n */\n\n/**\r\n * Generated bundle index. Do not edit.\r\n */\n\nexport { DefaultNgxMatCalendarRangeStrategy, MAT_DATEPICKER_VALIDATORS, MAT_DATEPICKER_VALUE_ACCESSOR, MatDatetimePickerInputEvent, NGX_MAT_DATE_FORMATS, NGX_MAT_DATE_RANGE_SELECTION_STRATEGY, NGX_MAT_NATIVE_DATE_FORMATS, NgxMatCalendar, NgxMatCalendarBody, NgxMatCalendarCell, NgxMatCalendarHeader, NgxMatDateAdapter, NgxMatDatetimeContent, NgxMatDatetimeInput, NgxMatDatetimePicker, NgxMatDatetimePickerModule, NgxMatMonthView, NgxMatMultiYearView, NgxMatNativeDateAdapter, NgxMatNativeDateModule, NgxMatTimepickerComponent, NgxMatTimepickerModule, NgxMatYearView, NgxNativeDateModule, getActiveOffset, isSameMultiYearView, yearsPerPage, yearsPerRow };","map":{"version":3,"names":["ComponentPortal","TemplatePortal","PortalModule","InjectionToken","EventEmitter","Component","ViewEncapsulation","ChangeDetectionStrategy","ElementRef","NgZone","Input","Output","Injectable","ChangeDetectorRef","Optional","Inject","ViewChild","forwardRef","ViewContainerRef","ContentChild","TemplateRef","Directive","NgModule","DateRange","MatDatepickerIntl","matDatepickerAnimations","MAT_DATEPICKER_SCROLL_STRATEGY","MatDatepickerModule","MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER","Subscription","Subject","merge","DateAdapter","mixinColor","MAT_DATE_LOCALE","ESCAPE","SPACE","ENTER","PAGE_DOWN","PAGE_UP","END","HOME","DOWN_ARROW","UP_ARROW","RIGHT_ARROW","LEFT_ARROW","Directionality","take","startWith","takeUntil","debounceTime","filter","coerceBooleanProperty","OverlayConfig","Overlay","DOCUMENT","CommonModule","MatDialog","MatDialogModule","Validators","NG_VALUE_ACCESSOR","FormBuilder","NG_VALIDATORS","ReactiveFormsModule","FormsModule","MatFormField","MAT_INPUT_VALUE_ACCESSOR","MatInputModule","MatButtonModule","MatIconModule","Platform","PlatformModule","ɵngcc0","ɵngcc1","ɵngcc2","ɵngcc3","ɵngcc4","ɵngcc5","ɵngcc6","ɵngcc7","ɵngcc8","ɵngcc9","ɵngcc10","ɵngcc11","ɵngcc12","_c0","NgxMatCalendarBody_tr_0_Template","rf","ctx","ɵɵelementStart","ɵɵtext","ɵɵelementEnd","ctx_r0","ɵɵnextContext","ɵɵadvance","ɵɵstyleProp","_cellPadding","ɵɵattribute","numCols","ɵɵtextInterpolate1","label","NgxMatCalendarBody_tr_1_td_1_Template","ctx_r4","_firstRowOffset","labelMinRequiredCells","NgxMatCalendarBody_tr_1_td_2_Template","_r9","ɵɵgetCurrentView","ɵɵlistener","NgxMatCalendarBody_tr_1_td_2_Template_td_click_0_listener","$event","restoredCtx","ɵɵrestoreView","item_r6","$implicit","ctx_r8","ɵɵresetView","_cellClicked","ɵɵelement","colIndex_r7","index","rowIndex_r3","ctx_r5","_cellWidth","ɵɵclassProp","enabled","_isActiveCell","_isRangeStart","compareValue","_isRangeEnd","_isInRange","_isComparisonBridgeStart","_isComparisonBridgeEnd","_isComparisonStart","_isComparisonEnd","_isInComparisonRange","_isPreviewStart","_isPreviewEnd","_isInPreview","ɵɵproperty","cssClasses","ariaLabel","_isSelected","todayValue","displayValue","NgxMatCalendarBody_tr_1_Template","ɵɵtemplate","row_r2","ctx_r1","NgxMatMonthView_th_3_Template","day_r1","long","ɵɵtextInterpolate","narrow","_c1","NgxMatCalendar_ng_template_0_Template","NgxMatCalendar_ngx_mat_month_view_2_Template","_r5","NgxMatCalendar_ngx_mat_month_view_2_Template_ngx_mat_month_view_activeDateChange_0_listener","activeDate","NgxMatCalendar_ngx_mat_month_view_2_Template_ngx_mat_month_view_selectedChange_0_listener","ctx_r6","_dateSelected","NgxMatCalendar_ngx_mat_month_view_2_Template_ngx_mat_month_view__userSelection_0_listener","ctx_r7","_userSelected","selected","dateFilter","maxDate","minDate","dateClass","NgxMatCalendar_ngx_mat_year_view_3_Template","NgxMatCalendar_ngx_mat_year_view_3_Template_ngx_mat_year_view_activeDateChange_0_listener","NgxMatCalendar_ngx_mat_year_view_3_Template_ngx_mat_year_view_monthSelected_0_listener","ctx_r10","_monthSelectedInYearView","NgxMatCalendar_ngx_mat_year_view_3_Template_ngx_mat_year_view_selectedChange_0_listener","ctx_r11","_goToDateInView","ctx_r2","NgxMatCalendar_ngx_mat_multi_year_view_4_Template","_r13","NgxMatCalendar_ngx_mat_multi_year_view_4_Template_ngx_mat_multi_year_view_activeDateChange_0_listener","ctx_r12","NgxMatCalendar_ngx_mat_multi_year_view_4_Template_ngx_mat_multi_year_view_yearSelected_0_listener","ctx_r14","_yearSelectedInMultiYearView","NgxMatCalendar_ngx_mat_multi_year_view_4_Template_ngx_mat_multi_year_view_selectedChange_0_listener","ctx_r15","ctx_r3","NgxMatTimepickerComponent_tr_3_td_11_Template","_r10","NgxMatTimepickerComponent_tr_3_td_11_Template_button_click_1_listener","ctx_r9","change","disabled","disableMinute","NgxMatTimepickerComponent_tr_3_td_12_Template","NgxMatTimepickerComponent_tr_3_td_13_Template","NgxMatTimepickerComponent_tr_3_Template","_r12","NgxMatTimepickerComponent_tr_3_Template_button_click_2_listener","NgxMatTimepickerComponent_tr_3_Template_button_click_7_listener","ctx_r13","showSeconds","enableMeridian","NgxMatTimepickerComponent_td_13_Template","NgxMatTimepickerComponent_td_14_Template","_r15","NgxMatTimepickerComponent_td_14_Template_input_input_2_listener","formatInput","target","NgxMatTimepickerComponent_td_14_Template_input_keydown_ArrowUp_2_listener","ctx_r16","preventDefault","NgxMatTimepickerComponent_td_14_Template_input_keydown_ArrowDown_2_listener","ctx_r17","NgxMatTimepickerComponent_td_14_Template_input_blur_2_listener","ctx_r18","NgxMatTimepickerComponent_td_15_Template","NgxMatTimepickerComponent_td_16_Template","_r20","NgxMatTimepickerComponent_td_16_Template_button_click_1_listener","ctx_r19","toggleMeridian","color","meridian","NgxMatTimepickerComponent_tr_17_td_10_Template","NgxMatTimepickerComponent_tr_17_td_11_Template","_r26","NgxMatTimepickerComponent_tr_17_td_11_Template_button_click_1_listener","ctx_r25","ctx_r22","NgxMatTimepickerComponent_tr_17_td_12_Template","NgxMatTimepickerComponent_tr_17_td_13_Template","NgxMatTimepickerComponent_tr_17_Template","_r28","NgxMatTimepickerComponent_tr_17_Template_button_click_2_listener","ctx_r27","NgxMatTimepickerComponent_tr_17_Template_button_click_7_listener","ctx_r29","NgxMatDatetimeContent_ng_container_1_div_1_Template","NgxMatDatetimeContent_ng_container_1_div_1_Template_ngx_mat_timepicker_ngModelChange_1_listener","datepicker","_selected","_showSeconds","_showSpinners","_disabled","_stepHour","_stepMinute","_stepSecond","_color","_enableMeridian","_disableMinute","NgxMatDatetimeContent_ng_container_1_mat_icon_4_Template","NgxMatDatetimeContent_ng_container_1_ng_template_5_Template","NgxMatDatetimeContent_ng_container_1_Template","_r7","ɵɵelementContainerStart","NgxMatDatetimeContent_ng_container_1_Template_button_click_3_listener","ok","ɵɵelementContainerEnd","_hideTime","valid","_customIcon","_templateCustomIconPortal","NgxMatDateAdapter","isSameTime","a","b","getHour","getMinute","getSecond","copyTime","toDate","fromDate","setHour","setMinute","setSecond","compareDateWithTime","first","second","res","compareDate","setTimeByDefaultValues","date","defaultTime","Array","isArray","Error","NGX_MAT_DATE_FORMATS","NgxMatCalendarCell","constructor","value","rawValue","NgxMatCalendarBody","_elementRef","_ngZone","activeCell","isRange","cellAspectRatio","previewStart","previewEnd","selectedValueChange","previewChange","_enterHandler","event","_skipNextFocus","type","cell","_getCellFromElement","run","emit","_leaveHandler","isTableCell","runOutsideAngular","element","nativeElement","addEventListener","startValue","endValue","ngOnChanges","changes","columnChanges","rows","length","ngOnDestroy","removeEventListener","rowIndex","colIndex","cellNumber","_focusActiveCell","movePreview","onStable","asObservable","pipe","subscribe","querySelector","focus","isStart","isEnd","isInRange","comparisonStart","comparisonEnd","previousCell","previousRow","nextCell","nextRow","parentNode","row","getAttribute","col","parseInt","ɵfac","NgxMatCalendarBody_Factory","t","ɵɵdirectiveInject","ɵcmp","ɵɵdefineComponent","selectors","hostAttrs","inputs","outputs","exportAs","features","ɵɵNgOnChangesFeature","attrs","decls","vars","consts","template","NgxMatCalendarBody_Template","dependencies","NgClass","NgForOf","NgIf","styles","encapsulation","changeDetection","ctorParameters","propDecorators","ngDevMode","ɵsetClassMetadata","args","selector","host","None","OnPush","node","nodeName","start","end","rangeEnabled","NGX_MAT_DATE_RANGE_SELECTION_STRATEGY","DefaultNgxMatCalendarRangeStrategy","_dateAdapter","selectionFinished","currentRange","createPreview","DefaultNgxMatCalendarRangeStrategy_Factory","ɵɵinject","ɵprov","ɵɵdefineInjectable","token","factory","LIMIT_TIMES","minHour","maxHour","minMinute","maxMinute","minSecond","maxSecond","MERIDIANS","AM","PM","DEFAULT_STEP","NUMERIC_REGEX","PATTERN_INPUT_HOUR","PATTERN_INPUT_MINUTE","PATTERN_INPUT_SECOND","formatTwoDigitTimeValue","val","txt","toString","createMissingDateImplError","provider","formatYearRange","DAYS_PER_WEEK","NgxMatMonthView","_changeDetectorRef","_dateFormats","_dir","_rangeStrategy","_rerenderSubscription","EMPTY","selectedChange","_userSelection","activeDateChange","_activeDate","today","oldActiveDate","validDate","_getValidDateOrNull","deserialize","clampDate","_hasSameMonthAndYear","_init","_setRanges","_minDate","_maxDate","ngAfterContentInit","localeChanges","unsubscribe","selectedYear","getYear","selectedMonth","getMonth","selectedDate","createDate","rangeStartDate","rangeEndDate","_getDateInCurrentMonth","_handleCalendarBodyKeydown","isRtl","_isRtl","keyCode","addCalendarDays","getDate","getNumDaysInMonth","altKey","addCalendarYears","addCalendarMonths","_previewEnd","_previewStart","stopPropagation","_todayDate","_getCellCompareValue","_monthLabel","getMonthNames","toLocaleUpperCase","firstOfMonth","_firstWeekOffset","getDayOfWeek","getFirstDayOfWeek","_initWeekdays","_createWeekCells","markForCheck","_matCalendarBody","_previewChanged","previewRange","detectChanges","firstDayOfWeek","narrowWeekdays","getDayOfWeekNames","longWeekdays","weekdays","map","i","_weekdays","slice","concat","daysInMonth","dateNames","getDateNames","_weeks","push","_shouldEnableDate","format","display","dateA11yLabel","cellClasses","undefined","d1","d2","year","month","day","Date","getTime","obj","isDateInstance","isValid","selectedValue","_rangeStart","_rangeEnd","_isRange","_comparisonRangeStart","_comparisonRangeEnd","NgxMatMonthView_Factory","viewQuery","NgxMatMonthView_Query","ɵɵviewQuery","_t","ɵɵqueryRefresh","ɵɵloadQuery","NgxMatMonthView_Template","NgxMatMonthView_Template_tbody_selectedValueChange_6_listener","NgxMatMonthView_Template_tbody_previewChange_6_listener","NgxMatMonthView_Template_tbody_keydown_6_listener","decorators","yearsPerPage","yearsPerRow","NgxMatMultiYearView","yearSelected","isSameMultiYearView","_setSelectedYear","_todayYear","activeYear","minYearOfPage","getActiveOffset","_years","_createCellForYear","_yearSelected","Math","min","_getActiveCell","yearName","getYearName","_shouldEnableYear","firstOfYear","_selectedYear","NgxMatMultiYearView_Factory","NgxMatMultiYearView_Query","NgxMatMultiYearView_Template","NgxMatMultiYearView_Template_tbody_selectedValueChange_4_listener","NgxMatMultiYearView_Template_tbody_keydown_4_listener","dateAdapter","date1","date2","year1","year2","startingYear","getStartingYear","floor","euclideanModulo","maxYear","NgxMatYearView","monthSelected","_setSelectedMonth","_monthSelected","normalizedDate","_todayMonth","_getMonthInCurrentYear","_yearLabel","monthNames","_months","_createCellForMonth","monthName","monthYearA11yLabel","_shouldEnableMonth","_isYearAndMonthAfterMaxDate","_isYearAndMonthBeforeMinDate","maxMonth","minYear","minMonth","_selectedMonth","NgxMatYearView_Factory","NgxMatYearView_Query","NgxMatYearView_Template","NgxMatYearView_Template_tbody_selectedValueChange_4_listener","NgxMatYearView_Template_tbody_keydown_4_listener","NgxMatCalendarHeader","_intl","calendar","changeDetectorRef","stateChanges","periodButtonText","currentView","monthYearLabel","maxYearOfPage","minYearName","maxYearName","periodButtonLabel","switchToMultiYearViewLabel","switchToMonthViewLabel","prevButtonLabel","prevMonthLabel","prevYearLabel","prevMultiYearLabel","nextButtonLabel","nextMonthLabel","nextYearLabel","nextMultiYearLabel","currentPeriodClicked","previousClicked","nextClicked","previousEnabled","_isSameView","nextEnabled","NgxMatCalendarHeader_Factory","NgxMatCalendar","ngContentSelectors","NgxMatCalendarHeader_Template","ɵɵprojectionDef","NgxMatCalendarHeader_Template_button_click_2_listener","ɵɵprojection","NgxMatCalendarHeader_Template_button_click_7_listener","NgxMatCalendarHeader_Template_button_click_8_listener","MatButton","_moveFocusOnNextTick","startView","_intlChanges","next","startAt","_startAt","_clampedActiveDate","_currentView","_calendarHeaderPortal","headerComponent","ngAfterViewChecked","focusActiveCell","complete","firstChange","view","_getCurrentViewComponent","updateTodaysDate","monthView","yearView","multiYearView","sameDate","normalizedYear","normalizedMonth","NgxMatCalendar_Factory","NgxMatCalendar_Query","NgxMatCalendar_Template","NgSwitch","NgSwitchCase","CdkPortalOutlet","NgxMatTimepickerComponent","cd","formBuilder","showSpinners","stepHour","stepMinute","stepSecond","_onChange","_onTouched","_destroyed","pattern","form","group","hour","required","minute","Number","controls","isNaN","ngOnInit","valueChanges","_updateModel","_setDisableStates","writeValue","_model","_updateHourMinuteSecond","registerOnChange","fn","registerOnTouched","setDisabledState","isDisabled","input","replace","prop","up","_getNextValueByProp","setValue","onlySelf","emitEvent","_hour","_minute","_second","keyProp","toUpperCase","max","disable","enable","get","NgxMatTimepickerComponent_Factory","ɵɵProvidersFeature","provide","useExisting","multi","NgxMatTimepickerComponent_Template","NgxMatTimepickerComponent_Template_input_input_7_listener","NgxMatTimepickerComponent_Template_input_keydown_ArrowUp_7_listener","NgxMatTimepickerComponent_Template_input_keydown_ArrowDown_7_listener","NgxMatTimepickerComponent_Template_input_blur_7_listener","NgxMatTimepickerComponent_Template_input_input_12_listener","NgxMatTimepickerComponent_Template_input_keydown_ArrowUp_12_listener","NgxMatTimepickerComponent_Template_input_keydown_ArrowDown_12_listener","NgxMatTimepickerComponent_Template_input_blur_12_listener","MatInput","ɵNgNoValidate","DefaultValueAccessor","NgControlStatus","NgControlStatusGroup","MaxLengthValidator","FormGroupDirective","FormControlName","MatIcon","providers","datepickerUid","MatDatepickerContentBase","_MatDatepickerContentMixinBase","NgxMatDatetimeContent","elementRef","_viewContainerRef","hideTime","_timePicker","isViewMonth","_calendar","ngAfterViewInit","NgxMatDatetimeContent_Factory","NgxMatDatetimeContent_Query","hostVars","hostBindings","NgxMatDatetimeContent_HostBindings","ɵɵsyntheticHostProperty","touchUi","ɵɵInheritDefinitionFeature","NgxMatDatetimeContent_Template","NgxMatDatetimeContent_Template_ngx_mat_calendar_selectedChange_0_listener","select","NgxMatDatetimeContent_Template_ngx_mat_calendar_yearSelected_0_listener","_selectYear","NgxMatDatetimeContent_Template_ngx_mat_calendar_monthSelected_0_listener","_selectMonth","id","panelClass","_dateFilter","calendarHeaderComponent","NgModel","data","animation","transformPanel","fadeInCalendar","animations","NgxMatDatetimePicker","_dialog","_overlay","scrollStrategy","_document","_defaultColor","_touchUi","openedStream","closedStream","_opened","_hasBackdrop","_validSelected","_focusedElementBeforeOpen","_inputSubscription","_selectedChanged","_minValidator","_maxValidator","_scrollStrategy","datepickerInput","defaultColor","_getThemePalette","newValue","opened","open","close","_defaultTime","minValidators","maxValidators","_popupRef","dispose","_popupComponentRef","cloned","clone","cancel","_rawValue","_registerInput","_valueChange","activeElement","_openAsDialog","_openAsPopup","hasAttached","detach","_dialogRef","_calendarPortal","isAttached","completeClose","setTimeout","direction","viewContainerRef","hasBackdrop","afterClosed","componentInstance","_setColor","_createPopup","attach","instance","updatePosition","overlayConfig","positionStrategy","_createPopupPositionStrategy","backdropClass","create","overlayElement","setAttribute","backdropClick","detachments","keydownEvents","position","flexibleConnectedTo","getConnectedOverlayOrigin","withTransformOriginOn","withFlexibleDimensions","withViewportMargin","withLockedPosition","withPositions","originX","originY","overlayX","overlayY","NgxMatDatetimePicker_Factory","contentQueries","NgxMatDatetimePicker_ContentQueries","dirIndex","ɵɵcontentQuery","NgxMatDatetimePicker_Template","MAT_DATEPICKER_VALUE_ACCESSOR","NgxMatDatetimeInput","MAT_DATEPICKER_VALIDATORS","MatDatetimePickerInputEvent","targetElement","_formField","dateChange","dateInput","_cvaOnChange","_validatorOnChange","_datepickerSubscription","_localeSubscription","_parseValidator","_lastValueValid","control","controlValue","_datepicker","_filterValidator","_validator","compose","ngxMatDatetimePicker","ngxMatDatetimePickerFilter","_value","oldDate","_formatValue","_min","_max","blur","registerOnValidatorChange","validate","c","getPopupConnectionElementRef","_onKeydown","isAltDownArrow","readOnly","_onInput","lastValueWasValid","parse","_onBlur","_onFocus","NgxMatDatetimeInput_Factory","ɵdir","ɵɵdefineDirective","NgxMatDatetimeInput_HostBindings","NgxMatDatetimeInput_input_HostBindingHandler","NgxMatDatetimeInput_change_HostBindingHandler","NgxMatDatetimeInput_blur_HostBindingHandler","NgxMatDatetimeInput_focus_HostBindingHandler","NgxMatDatetimeInput_keydown_HostBindingHandler","ɵɵhostProperty","toIso8601","NgxMatTimepickerModule","NgxMatTimepickerModule_Factory","ɵmod","ɵɵdefineNgModule","ɵinj","ɵɵdefineInjector","imports","exports","declarations","ngJitMode","ɵɵsetNgModuleScope","NgxMatDatetimePickerModule","NgxMatDatetimePickerModule_Factory","useClass","entryComponents","SUPPORTS_INTL_API","Intl","_a","DEFAULT_MONTH_NAMES","ɵ0$1","String","DEFAULT_DATE_NAMES","range","DEFAULT_DAY_OF_WEEK_NAMES","ISO_8601_REGEX","valueFunction","valuesArray","NgxMatNativeDateAdapter","matDateLocale","platform","useUtcForDisplay","setLocale","TRIDENT","_clampDate","EDGE","getFullYear","getDay","style","dtf","DateTimeFormat","locale","timeZone","_stripDirectionalityCharacters","_format","weekday","_createDateWithOverflow","result","displayFormat","setFullYear","Object","assign","toDateString","years","months","newDate","days","getUTCFullYear","_2digit","getUTCMonth","getUTCDate","join","test","invalid","NaN","getHours","getMinutes","getSeconds","setHours","setMinutes","setSeconds","n","str","d","setUTCFullYear","setUTCHours","getMilliseconds","NgxMatNativeDateAdapter_Factory","DEFAULT_DATE_INPUT","hour12","NGX_MAT_NATIVE_DATE_FORMATS","NgxNativeDateModule","NgxNativeDateModule_Factory","ɵ0","NgxMatNativeDateModule","NgxMatNativeDateModule_Factory","useValue"],"sources":["C:/Users/eudes.inacio/GabineteDigital/gabinete-digital-fo/node_modules/@angular-material-components/datetime-picker/__ivy_ngcc__/fesm2015/angular-material-components-datetime-picker.js"],"sourcesContent":["import { ComponentPortal, TemplatePortal, PortalModule } from '@angular/cdk/portal';\nimport { InjectionToken, EventEmitter, Component, ViewEncapsulation, ChangeDetectionStrategy, ElementRef, NgZone, Input, Output, Injectable, ChangeDetectorRef, Optional, Inject, ViewChild, forwardRef, ViewContainerRef, ContentChild, TemplateRef, Directive, NgModule } from '@angular/core';\nimport { DateRange, MatDatepickerIntl, matDatepickerAnimations, MAT_DATEPICKER_SCROLL_STRATEGY, MatDatepickerModule, MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER } from '@angular/material/datepicker';\nimport { Subscription, Subject, merge } from 'rxjs';\nimport { DateAdapter, mixinColor, MAT_DATE_LOCALE } from '@angular/material/core';\nimport { ESCAPE, SPACE, ENTER, PAGE_DOWN, PAGE_UP, END, HOME, DOWN_ARROW, UP_ARROW, RIGHT_ARROW, LEFT_ARROW } from '@angular/cdk/keycodes';\nimport { Directionality } from '@angular/cdk/bidi';\nimport { take, startWith, takeUntil, debounceTime, filter } from 'rxjs/operators';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { OverlayConfig, Overlay } from '@angular/cdk/overlay';\nimport { DOCUMENT, CommonModule } from '@angular/common';\nimport { MatDialog, MatDialogModule } from '@angular/material/dialog';\nimport { Validators, NG_VALUE_ACCESSOR, FormBuilder, NG_VALIDATORS, ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MAT_INPUT_VALUE_ACCESSOR, MatInputModule } from '@angular/material/input';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Platform, PlatformModule } from '@angular/cdk/platform';\n\nimport * as ɵngcc0 from '@angular/core';\nimport * as ɵngcc1 from '@angular/common';\nimport * as ɵngcc2 from '@angular/cdk/bidi';\nimport * as ɵngcc3 from '@angular/material/datepicker';\nimport * as ɵngcc4 from '@angular/material/button';\nimport * as ɵngcc5 from '@angular/cdk/portal';\nimport * as ɵngcc6 from '@angular/forms';\nimport * as ɵngcc7 from '@angular/material/form-field';\nimport * as ɵngcc8 from '@angular/material/input';\nimport * as ɵngcc9 from '@angular/material/icon';\nimport * as ɵngcc10 from '@angular/material/dialog';\nimport * as ɵngcc11 from '@angular/cdk/overlay';\nimport * as ɵngcc12 from '@angular/cdk/platform';\n\nconst _c0 = [\"ngx-mat-calendar-body\", \"\"];\nfunction NgxMatCalendarBody_tr_0_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"tr\", 2)(1, \"td\", 3);\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵstyleProp(\"padding-top\", ctx_r0._cellPadding)(\"padding-bottom\", ctx_r0._cellPadding);\n ɵngcc0.ɵɵattribute(\"colspan\", ctx_r0.numCols);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r0.label, \" \");\n} }\nfunction NgxMatCalendarBody_tr_1_td_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"td\", 7);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵstyleProp(\"padding-top\", ctx_r4._cellPadding)(\"padding-bottom\", ctx_r4._cellPadding);\n ɵngcc0.ɵɵattribute(\"colspan\", ctx_r4._firstRowOffset);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r4._firstRowOffset >= ctx_r4.labelMinRequiredCells ? ctx_r4.label : \"\", \" \");\n} }\nfunction NgxMatCalendarBody_tr_1_td_2_Template(rf, ctx) { if (rf & 1) {\n const _r9 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"td\", 8);\n ɵngcc0.ɵɵlistener(\"click\", function NgxMatCalendarBody_tr_1_td_2_Template_td_click_0_listener($event) { const restoredCtx = ɵngcc0.ɵɵrestoreView(_r9); const item_r6 = restoredCtx.$implicit; const ctx_r8 = ɵngcc0.ɵɵnextContext(2); return ɵngcc0.ɵɵresetView(ctx_r8._cellClicked(item_r6, $event)); });\n ɵngcc0.ɵɵelementStart(1, \"div\", 9);\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(3, \"div\", 10);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const item_r6 = ctx.$implicit;\n const colIndex_r7 = ctx.index;\n const rowIndex_r3 = ɵngcc0.ɵɵnextContext().index;\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵstyleProp(\"width\", ctx_r5._cellWidth)(\"padding-top\", ctx_r5._cellPadding)(\"padding-bottom\", ctx_r5._cellPadding);\n ɵngcc0.ɵɵclassProp(\"mat-calendar-body-disabled\", !item_r6.enabled)(\"mat-calendar-body-active\", ctx_r5._isActiveCell(rowIndex_r3, colIndex_r7))(\"mat-calendar-body-range-start\", ctx_r5._isRangeStart(item_r6.compareValue))(\"mat-calendar-body-range-end\", ctx_r5._isRangeEnd(item_r6.compareValue))(\"mat-calendar-body-in-range\", ctx_r5._isInRange(item_r6.compareValue))(\"mat-calendar-body-comparison-bridge-start\", ctx_r5._isComparisonBridgeStart(item_r6.compareValue, rowIndex_r3, colIndex_r7))(\"mat-calendar-body-comparison-bridge-end\", ctx_r5._isComparisonBridgeEnd(item_r6.compareValue, rowIndex_r3, colIndex_r7))(\"mat-calendar-body-comparison-start\", ctx_r5._isComparisonStart(item_r6.compareValue))(\"mat-calendar-body-comparison-end\", ctx_r5._isComparisonEnd(item_r6.compareValue))(\"mat-calendar-body-in-comparison-range\", ctx_r5._isInComparisonRange(item_r6.compareValue))(\"mat-calendar-body-preview-start\", ctx_r5._isPreviewStart(item_r6.compareValue))(\"mat-calendar-body-preview-end\", ctx_r5._isPreviewEnd(item_r6.compareValue))(\"mat-calendar-body-in-preview\", ctx_r5._isInPreview(item_r6.compareValue));\n ɵngcc0.ɵɵproperty(\"ngClass\", item_r6.cssClasses)(\"tabindex\", ctx_r5._isActiveCell(rowIndex_r3, colIndex_r7) ? 0 : -1);\n ɵngcc0.ɵɵattribute(\"data-mat-row\", rowIndex_r3)(\"data-mat-col\", colIndex_r7)(\"aria-label\", item_r6.ariaLabel)(\"aria-disabled\", !item_r6.enabled || null)(\"aria-selected\", ctx_r5._isSelected(item_r6));\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"mat-calendar-body-selected\", ctx_r5._isSelected(item_r6))(\"mat-calendar-body-today\", ctx_r5.todayValue === item_r6.compareValue);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", item_r6.displayValue, \" \");\n} }\nfunction NgxMatCalendarBody_tr_1_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"tr\", 4);\n ɵngcc0.ɵɵtemplate(1, NgxMatCalendarBody_tr_1_td_1_Template, 2, 6, \"td\", 5);\n ɵngcc0.ɵɵtemplate(2, NgxMatCalendarBody_tr_1_td_2_Template, 4, 44, \"td\", 6);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const row_r2 = ctx.$implicit;\n const rowIndex_r3 = ctx.index;\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", rowIndex_r3 === 0 && ctx_r1._firstRowOffset);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", row_r2);\n} }\nfunction NgxMatMonthView_th_3_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"th\", 5);\n ɵngcc0.ɵɵtext(1);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const day_r1 = ctx.$implicit;\n ɵngcc0.ɵɵattribute(\"aria-label\", day_r1.long);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate(day_r1.narrow);\n} }\nconst _c1 = [\"*\"];\nfunction NgxMatCalendar_ng_template_0_Template(rf, ctx) { }\nfunction NgxMatCalendar_ngx_mat_month_view_2_Template(rf, ctx) { if (rf & 1) {\n const _r5 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"ngx-mat-month-view\", 5);\n ɵngcc0.ɵɵlistener(\"activeDateChange\", function NgxMatCalendar_ngx_mat_month_view_2_Template_ngx_mat_month_view_activeDateChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r4 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r4.activeDate = $event); })(\"selectedChange\", function NgxMatCalendar_ngx_mat_month_view_2_Template_ngx_mat_month_view_selectedChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r6 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r6._dateSelected($event)); })(\"_userSelection\", function NgxMatCalendar_ngx_mat_month_view_2_Template_ngx_mat_month_view__userSelection_0_listener() { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r7 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r7._userSelected()); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"activeDate\", ctx_r1.activeDate)(\"selected\", ctx_r1.selected)(\"dateFilter\", ctx_r1.dateFilter)(\"maxDate\", ctx_r1.maxDate)(\"minDate\", ctx_r1.minDate)(\"dateClass\", ctx_r1.dateClass);\n} }\nfunction NgxMatCalendar_ngx_mat_year_view_3_Template(rf, ctx) { if (rf & 1) {\n const _r9 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"ngx-mat-year-view\", 6);\n ɵngcc0.ɵɵlistener(\"activeDateChange\", function NgxMatCalendar_ngx_mat_year_view_3_Template_ngx_mat_year_view_activeDateChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r8 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r8.activeDate = $event); })(\"monthSelected\", function NgxMatCalendar_ngx_mat_year_view_3_Template_ngx_mat_year_view_monthSelected_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r10 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r10._monthSelectedInYearView($event)); })(\"selectedChange\", function NgxMatCalendar_ngx_mat_year_view_3_Template_ngx_mat_year_view_selectedChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r9); const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r11._goToDateInView($event, \"month\")); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r2 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"activeDate\", ctx_r2.activeDate)(\"selected\", ctx_r2.selected)(\"dateFilter\", ctx_r2.dateFilter)(\"maxDate\", ctx_r2.maxDate)(\"minDate\", ctx_r2.minDate);\n} }\nfunction NgxMatCalendar_ngx_mat_multi_year_view_4_Template(rf, ctx) { if (rf & 1) {\n const _r13 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"ngx-mat-multi-year-view\", 7);\n ɵngcc0.ɵɵlistener(\"activeDateChange\", function NgxMatCalendar_ngx_mat_multi_year_view_4_Template_ngx_mat_multi_year_view_activeDateChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r12 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r12.activeDate = $event); })(\"yearSelected\", function NgxMatCalendar_ngx_mat_multi_year_view_4_Template_ngx_mat_multi_year_view_yearSelected_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r14 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r14._yearSelectedInMultiYearView($event)); })(\"selectedChange\", function NgxMatCalendar_ngx_mat_multi_year_view_4_Template_ngx_mat_multi_year_view_selectedChange_0_listener($event) { ɵngcc0.ɵɵrestoreView(_r13); const ctx_r15 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r15._goToDateInView($event, \"year\")); });\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r3 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵproperty(\"activeDate\", ctx_r3.activeDate)(\"selected\", ctx_r3.selected)(\"dateFilter\", ctx_r3.dateFilter)(\"maxDate\", ctx_r3.maxDate)(\"minDate\", ctx_r3.minDate);\n} }\nfunction NgxMatTimepickerComponent_tr_3_td_11_Template(rf, ctx) { if (rf & 1) {\n const _r10 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"td\")(1, \"button\", 10);\n ɵngcc0.ɵɵlistener(\"click\", function NgxMatTimepickerComponent_tr_3_td_11_Template_button_click_1_listener() { ɵngcc0.ɵɵrestoreView(_r10); const ctx_r9 = ɵngcc0.ɵɵnextContext(2); return ɵngcc0.ɵɵresetView(ctx_r9.change(\"second\", true)); });\n ɵngcc0.ɵɵelementStart(2, \"mat-icon\");\n ɵngcc0.ɵɵtext(3, \"expand_less\");\n ɵngcc0.ɵɵelementEnd()()();\n} if (rf & 2) {\n const ctx_r6 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r6.disabled || ctx_r6.disableMinute);\n} }\nfunction NgxMatTimepickerComponent_tr_3_td_12_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"td\", 6);\n} }\nfunction NgxMatTimepickerComponent_tr_3_td_13_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"td\");\n} }\nfunction NgxMatTimepickerComponent_tr_3_Template(rf, ctx) { if (rf & 1) {\n const _r12 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"tr\")(1, \"td\")(2, \"button\", 10);\n ɵngcc0.ɵɵlistener(\"click\", function NgxMatTimepickerComponent_tr_3_Template_button_click_2_listener() { ɵngcc0.ɵɵrestoreView(_r12); const ctx_r11 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r11.change(\"hour\", true)); });\n ɵngcc0.ɵɵelementStart(3, \"mat-icon\");\n ɵngcc0.ɵɵtext(4, \"expand_less\");\n ɵngcc0.ɵɵelementEnd()()();\n ɵngcc0.ɵɵelement(5, \"td\");\n ɵngcc0.ɵɵelementStart(6, \"td\")(7, \"button\", 10);\n ɵngcc0.ɵɵlistener(\"click\", function NgxMatTimepickerComponent_tr_3_Template_button_click_7_listener() { ɵngcc0.ɵɵrestoreView(_r12); const ctx_r13 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r13.change(\"minute\", true)); });\n ɵngcc0.ɵɵelementStart(8, \"mat-icon\");\n ɵngcc0.ɵɵtext(9, \"expand_less\");\n ɵngcc0.ɵɵelementEnd()()();\n ɵngcc0.ɵɵelement(10, \"td\");\n ɵngcc0.ɵɵtemplate(11, NgxMatTimepickerComponent_tr_3_td_11_Template, 4, 1, \"td\", 3);\n ɵngcc0.ɵɵtemplate(12, NgxMatTimepickerComponent_tr_3_td_12_Template, 1, 0, \"td\", 8);\n ɵngcc0.ɵɵtemplate(13, NgxMatTimepickerComponent_tr_3_td_13_Template, 1, 0, \"td\", 3);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r0.disabled);\n ɵngcc0.ɵɵadvance(5);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r0.disabled || ctx_r0.disableMinute);\n ɵngcc0.ɵɵadvance(4);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.showSeconds);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.enableMeridian);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r0.enableMeridian);\n} }\nfunction NgxMatTimepickerComponent_td_13_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"td\", 6);\n ɵngcc0.ɵɵtext(1, \":\");\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction NgxMatTimepickerComponent_td_14_Template(rf, ctx) { if (rf & 1) {\n const _r15 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"td\")(1, \"mat-form-field\", 4)(2, \"input\", 11);\n ɵngcc0.ɵɵlistener(\"input\", function NgxMatTimepickerComponent_td_14_Template_input_input_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r15); const ctx_r14 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r14.formatInput($event.target)); })(\"keydown.ArrowUp\", function NgxMatTimepickerComponent_td_14_Template_input_keydown_ArrowUp_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r15); const ctx_r16 = ɵngcc0.ɵɵnextContext(); ctx_r16.change(\"second\", true); return ɵngcc0.ɵɵresetView($event.preventDefault()); })(\"keydown.ArrowDown\", function NgxMatTimepickerComponent_td_14_Template_input_keydown_ArrowDown_2_listener($event) { ɵngcc0.ɵɵrestoreView(_r15); const ctx_r17 = ɵngcc0.ɵɵnextContext(); ctx_r17.change(\"second\", false); return ɵngcc0.ɵɵresetView($event.preventDefault()); })(\"blur\", function NgxMatTimepickerComponent_td_14_Template_input_blur_2_listener() { ɵngcc0.ɵɵrestoreView(_r15); const ctx_r18 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r18.change(\"second\")); });\n ɵngcc0.ɵɵelementEnd()()();\n} }\nfunction NgxMatTimepickerComponent_td_15_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"td\", 6);\n} }\nfunction NgxMatTimepickerComponent_td_16_Template(rf, ctx) { if (rf & 1) {\n const _r20 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"td\", 12)(1, \"button\", 13);\n ɵngcc0.ɵɵlistener(\"click\", function NgxMatTimepickerComponent_td_16_Template_button_click_1_listener() { ɵngcc0.ɵɵrestoreView(_r20); const ctx_r19 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r19.toggleMeridian()); });\n ɵngcc0.ɵɵtext(2);\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r4 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"color\", ctx_r4.color)(\"disabled\", ctx_r4.disabled);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx_r4.meridian, \" \");\n} }\nfunction NgxMatTimepickerComponent_tr_17_td_10_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"td\");\n} }\nfunction NgxMatTimepickerComponent_tr_17_td_11_Template(rf, ctx) { if (rf & 1) {\n const _r26 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"td\")(1, \"button\", 14);\n ɵngcc0.ɵɵlistener(\"click\", function NgxMatTimepickerComponent_tr_17_td_11_Template_button_click_1_listener() { ɵngcc0.ɵɵrestoreView(_r26); const ctx_r25 = ɵngcc0.ɵɵnextContext(2); return ɵngcc0.ɵɵresetView(ctx_r25.change(\"second\", false)); });\n ɵngcc0.ɵɵelementStart(2, \"mat-icon\");\n ɵngcc0.ɵɵtext(3, \"expand_more\");\n ɵngcc0.ɵɵelementEnd()()();\n} if (rf & 2) {\n const ctx_r22 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r22.disabled || ctx_r22.disableMinute);\n} }\nfunction NgxMatTimepickerComponent_tr_17_td_12_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"td\", 6);\n} }\nfunction NgxMatTimepickerComponent_tr_17_td_13_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelement(0, \"td\");\n} }\nfunction NgxMatTimepickerComponent_tr_17_Template(rf, ctx) { if (rf & 1) {\n const _r28 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"tr\")(1, \"td\")(2, \"button\", 14);\n ɵngcc0.ɵɵlistener(\"click\", function NgxMatTimepickerComponent_tr_17_Template_button_click_2_listener() { ɵngcc0.ɵɵrestoreView(_r28); const ctx_r27 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r27.change(\"hour\", false)); });\n ɵngcc0.ɵɵelementStart(3, \"mat-icon\");\n ɵngcc0.ɵɵtext(4, \"expand_more\");\n ɵngcc0.ɵɵelementEnd()()();\n ɵngcc0.ɵɵelement(5, \"td\");\n ɵngcc0.ɵɵelementStart(6, \"td\")(7, \"button\", 14);\n ɵngcc0.ɵɵlistener(\"click\", function NgxMatTimepickerComponent_tr_17_Template_button_click_7_listener() { ɵngcc0.ɵɵrestoreView(_r28); const ctx_r29 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r29.change(\"minute\", false)); });\n ɵngcc0.ɵɵelementStart(8, \"mat-icon\");\n ɵngcc0.ɵɵtext(9, \"expand_more\");\n ɵngcc0.ɵɵelementEnd()()();\n ɵngcc0.ɵɵtemplate(10, NgxMatTimepickerComponent_tr_17_td_10_Template, 1, 0, \"td\", 3);\n ɵngcc0.ɵɵtemplate(11, NgxMatTimepickerComponent_tr_17_td_11_Template, 4, 1, \"td\", 3);\n ɵngcc0.ɵɵtemplate(12, NgxMatTimepickerComponent_tr_17_td_12_Template, 1, 0, \"td\", 8);\n ɵngcc0.ɵɵtemplate(13, NgxMatTimepickerComponent_tr_17_td_13_Template, 1, 0, \"td\", 3);\n ɵngcc0.ɵɵelementEnd();\n} if (rf & 2) {\n const ctx_r5 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r5.disabled);\n ɵngcc0.ɵɵadvance(5);\n ɵngcc0.ɵɵproperty(\"disabled\", ctx_r5.disabled || ctx_r5.disableMinute);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.showSeconds);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.showSeconds);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.enableMeridian);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx_r5.enableMeridian);\n} }\nfunction NgxMatDatetimeContent_ng_container_1_div_1_Template(rf, ctx) { if (rf & 1) {\n const _r5 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementStart(0, \"div\", 6)(1, \"ngx-mat-timepicker\", 7);\n ɵngcc0.ɵɵlistener(\"ngModelChange\", function NgxMatDatetimeContent_ng_container_1_div_1_Template_ngx_mat_timepicker_ngModelChange_1_listener($event) { ɵngcc0.ɵɵrestoreView(_r5); const ctx_r4 = ɵngcc0.ɵɵnextContext(2); return ɵngcc0.ɵɵresetView(ctx_r4.datepicker._selected = $event); });\n ɵngcc0.ɵɵelementEnd()();\n} if (rf & 2) {\n const ctx_r1 = ɵngcc0.ɵɵnextContext(2);\n ɵngcc0.ɵɵclassProp(\"disable-seconds\", !ctx_r1.datepicker._showSeconds);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"showSpinners\", ctx_r1.datepicker._showSpinners)(\"showSeconds\", ctx_r1.datepicker._showSeconds)(\"disabled\", ctx_r1.datepicker._disabled)(\"stepHour\", ctx_r1.datepicker._stepHour)(\"stepMinute\", ctx_r1.datepicker._stepMinute)(\"stepSecond\", ctx_r1.datepicker._stepSecond)(\"ngModel\", ctx_r1.datepicker._selected)(\"color\", ctx_r1.datepicker._color)(\"enableMeridian\", ctx_r1.datepicker._enableMeridian)(\"disableMinute\", ctx_r1.datepicker._disableMinute);\n} }\nfunction NgxMatDatetimeContent_ng_container_1_mat_icon_4_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"mat-icon\");\n ɵngcc0.ɵɵtext(1, \"done\");\n ɵngcc0.ɵɵelementEnd();\n} }\nfunction NgxMatDatetimeContent_ng_container_1_ng_template_5_Template(rf, ctx) { }\nfunction NgxMatDatetimeContent_ng_container_1_Template(rf, ctx) { if (rf & 1) {\n const _r7 = ɵngcc0.ɵɵgetCurrentView();\n ɵngcc0.ɵɵelementContainerStart(0);\n ɵngcc0.ɵɵtemplate(1, NgxMatDatetimeContent_ng_container_1_div_1_Template, 2, 12, \"div\", 2);\n ɵngcc0.ɵɵelementStart(2, \"div\", 3)(3, \"button\", 4);\n ɵngcc0.ɵɵlistener(\"click\", function NgxMatDatetimeContent_ng_container_1_Template_button_click_3_listener() { ɵngcc0.ɵɵrestoreView(_r7); const ctx_r6 = ɵngcc0.ɵɵnextContext(); return ɵngcc0.ɵɵresetView(ctx_r6.datepicker.ok()); });\n ɵngcc0.ɵɵtemplate(4, NgxMatDatetimeContent_ng_container_1_mat_icon_4_Template, 2, 0, \"mat-icon\", 1);\n ɵngcc0.ɵɵtemplate(5, NgxMatDatetimeContent_ng_container_1_ng_template_5_Template, 0, 0, \"ng-template\", 5);\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵelementContainerEnd();\n} if (rf & 2) {\n const ctx_r0 = ɵngcc0.ɵɵnextContext();\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r0.datepicker._hideTime);\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵproperty(\"color\", ctx_r0.datepicker._color)(\"disabled\", !ctx_r0.valid);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", !ctx_r0.datepicker._customIcon);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"cdkPortalOutlet\", ctx_r0._templateCustomIconPortal);\n} }\nclass NgxMatDateAdapter extends DateAdapter {\r\n /**\r\n * Check if two date have same time\r\n * @param a Date 1\r\n * @param b Date 2\r\n */\r\n isSameTime(a, b) {\r\n if (a == null || b == null)\r\n return true;\r\n return this.getHour(a) === this.getHour(b)\r\n && this.getMinute(a) === this.getMinute(b)\r\n && this.getSecond(a) === this.getSecond(b);\r\n }\r\n /**\r\n * Copy time from a date to a another date\r\n * @param toDate\r\n * @param fromDate\r\n */\r\n copyTime(toDate, fromDate) {\r\n this.setHour(toDate, this.getHour(fromDate));\r\n this.setMinute(toDate, this.getMinute(fromDate));\r\n this.setSecond(toDate, this.getSecond(fromDate));\r\n }\r\n /**\r\n * Compares two dates.\r\n * @param first The first date to compare.\r\n * @param second The second date to compare.\r\n * @returns 0 if the dates are equal, a number less than 0 if the first date is earlier,\r\n * a number greater than 0 if the first date is later.\r\n */\r\n compareDateWithTime(first, second, showSeconds) {\r\n let res = super.compareDate(first, second) ||\r\n this.getHour(first) - this.getHour(second) ||\r\n this.getMinute(first) - this.getMinute(second);\r\n if (showSeconds) {\r\n res = res || this.getSecond(first) - this.getSecond(second);\r\n }\r\n return res;\r\n }\r\n /**\r\n * Set time by using default values\r\n * @param defaultTime List default values [hour, minute, second]\r\n */\r\n setTimeByDefaultValues(date, defaultTime) {\r\n if (!Array.isArray(defaultTime)) {\r\n throw Error('@Input DefaultTime should be an array');\r\n }\r\n this.setHour(date, defaultTime[0] || 0);\r\n this.setMinute(date, defaultTime[1] || 0);\r\n this.setSecond(date, defaultTime[2] || 0);\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\r\nconst NGX_MAT_DATE_FORMATS = new InjectionToken('ngx-mat-date-formats');\n\n/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\r\n/**\r\n * An internal class that represents the data corresponding to a single calendar cell.\r\n * @docs-private\r\n */\r\nclass NgxMatCalendarCell {\r\n constructor(value, displayValue, ariaLabel, enabled, cssClasses = {}, compareValue = value, rawValue) {\r\n this.value = value;\r\n this.displayValue = displayValue;\r\n this.ariaLabel = ariaLabel;\r\n this.enabled = enabled;\r\n this.cssClasses = cssClasses;\r\n this.compareValue = compareValue;\r\n this.rawValue = rawValue;\r\n }\r\n}\r\n/**\r\n * An internal component used to display calendar data in a table.\r\n * @docs-private\r\n */\r\nclass NgxMatCalendarBody {\r\n constructor(_elementRef, _ngZone) {\r\n this._elementRef = _elementRef;\r\n this._ngZone = _ngZone;\r\n /** The number of columns in the table. */\r\n this.numCols = 7;\r\n /** The cell number of the active cell in the table. */\r\n this.activeCell = 0;\r\n /** Whether a range is being selected. */\r\n this.isRange = false;\r\n /**\r\n * The aspect ratio (width / height) to use for the cells in the table. This aspect ratio will be\r\n * maintained even as the table resizes.\r\n */\r\n this.cellAspectRatio = 1;\r\n /** Start of the preview range. */\r\n this.previewStart = null;\r\n /** End of the preview range. */\r\n this.previewEnd = null;\r\n /** Emits when a new value is selected. */\r\n this.selectedValueChange = new EventEmitter();\r\n /** Emits when the preview has changed as a result of a user action. */\r\n this.previewChange = new EventEmitter();\r\n /**\r\n * Event handler for when the user enters an element\r\n * inside the calendar body (e.g. by hovering in or focus).\r\n */\r\n this._enterHandler = (event) => {\r\n if (this._skipNextFocus && event.type === 'focus') {\r\n this._skipNextFocus = false;\r\n return;\r\n }\r\n // We only need to hit the zone when we're selecting a range.\r\n if (event.target && this.isRange) {\r\n const cell = this._getCellFromElement(event.target);\r\n if (cell) {\r\n this._ngZone.run(() => this.previewChange.emit({ value: cell.enabled ? cell : null, event }));\r\n }\r\n }\r\n };\r\n /**\r\n * Event handler for when the user's pointer leaves an element\r\n * inside the calendar body (e.g. by hovering out or blurring).\r\n */\r\n this._leaveHandler = (event) => {\r\n // We only need to hit the zone when we're selecting a range.\r\n if (this.previewEnd !== null && this.isRange) {\r\n // Only reset the preview end value when leaving cells. This looks better, because\r\n // we have a gap between the cells and the rows and we don't want to remove the\r\n // range just for it to show up again when the user moves a few pixels to the side.\r\n if (event.target && isTableCell(event.target)) {\r\n this._ngZone.run(() => this.previewChange.emit({ value: null, event }));\r\n }\r\n }\r\n };\r\n _ngZone.runOutsideAngular(() => {\r\n const element = _elementRef.nativeElement;\r\n element.addEventListener('mouseenter', this._enterHandler, true);\r\n element.addEventListener('focus', this._enterHandler, true);\r\n element.addEventListener('mouseleave', this._leaveHandler, true);\r\n element.addEventListener('blur', this._leaveHandler, true);\r\n });\r\n }\r\n /** Called when a cell is clicked. */\r\n _cellClicked(cell, event) {\r\n if (cell.enabled) {\r\n this.selectedValueChange.emit({ value: cell.value, event });\r\n }\r\n }\r\n /** Returns whether a cell should be marked as selected. */\r\n _isSelected(cell) {\r\n return this.startValue === cell.compareValue || this.endValue === cell.compareValue;\r\n }\r\n ngOnChanges(changes) {\r\n const columnChanges = changes['numCols'];\r\n const { rows, numCols } = this;\r\n if (changes['rows'] || columnChanges) {\r\n this._firstRowOffset = rows && rows.length && rows[0].length ? numCols - rows[0].length : 0;\r\n }\r\n if (changes['cellAspectRatio'] || columnChanges || !this._cellPadding) {\r\n this._cellPadding = `${50 * this.cellAspectRatio / numCols}%`;\r\n }\r\n if (columnChanges || !this._cellWidth) {\r\n this._cellWidth = `${100 / numCols}%`;\r\n }\r\n }\r\n ngOnDestroy() {\r\n const element = this._elementRef.nativeElement;\r\n element.removeEventListener('mouseenter', this._enterHandler, true);\r\n element.removeEventListener('focus', this._enterHandler, true);\r\n element.removeEventListener('mouseleave', this._leaveHandler, true);\r\n element.removeEventListener('blur', this._leaveHandler, true);\r\n }\r\n /** Returns whether a cell is active. */\r\n _isActiveCell(rowIndex, colIndex) {\r\n let cellNumber = rowIndex * this.numCols + colIndex;\r\n // Account for the fact that the first row may not have as many cells.\r\n if (rowIndex) {\r\n cellNumber -= this._firstRowOffset;\r\n }\r\n return cellNumber == this.activeCell;\r\n }\r\n /** Focuses the active cell after the microtask queue is empty. */\r\n _focusActiveCell(movePreview = true) {\r\n this._ngZone.runOutsideAngular(() => {\r\n this._ngZone.onStable.asObservable().pipe(take(1)).subscribe(() => {\r\n const activeCell = this._elementRef.nativeElement.querySelector('.ngx-mat-calendar-body-active');\r\n if (activeCell) {\r\n if (!movePreview) {\r\n this._skipNextFocus = true;\r\n }\r\n activeCell.focus();\r\n }\r\n });\r\n });\r\n }\r\n /** Gets whether a value is the start of the main range. */\r\n _isRangeStart(value) {\r\n return isStart(value, this.startValue, this.endValue);\r\n }\r\n /** Gets whether a value is the end of the main range. */\r\n _isRangeEnd(value) {\r\n return isEnd(value, this.startValue, this.endValue);\r\n }\r\n /** Gets whether a value is within the currently-selected range. */\r\n _isInRange(value) {\r\n return isInRange(value, this.startValue, this.endValue, this.isRange);\r\n }\r\n /** Gets whether a value is the start of the comparison range. */\r\n _isComparisonStart(value) {\r\n return isStart(value, this.comparisonStart, this.comparisonEnd);\r\n }\r\n /** Whether the cell is a start bridge cell between the main and comparison ranges. */\r\n _isComparisonBridgeStart(value, rowIndex, colIndex) {\r\n if (!this._isComparisonStart(value) || this._isRangeStart(value) || !this._isInRange(value)) {\r\n return false;\r\n }\r\n let previousCell = this.rows[rowIndex][colIndex - 1];\r\n if (!previousCell) {\r\n const previousRow = this.rows[rowIndex - 1];\r\n previousCell = previousRow && previousRow[previousRow.length - 1];\r\n }\r\n return previousCell && !this._isRangeEnd(previousCell.compareValue);\r\n }\r\n /** Whether the cell is an end bridge cell between the main and comparison ranges. */\r\n _isComparisonBridgeEnd(value, rowIndex, colIndex) {\r\n if (!this._isComparisonEnd(value) || this._isRangeEnd(value) || !this._isInRange(value)) {\r\n return false;\r\n }\r\n let nextCell = this.rows[rowIndex][colIndex + 1];\r\n if (!nextCell) {\r\n const nextRow = this.rows[rowIndex + 1];\r\n nextCell = nextRow && nextRow[0];\r\n }\r\n return nextCell && !this._isRangeStart(nextCell.compareValue);\r\n }\r\n /** Gets whether a value is the end of the comparison range. */\r\n _isComparisonEnd(value) {\r\n return isEnd(value, this.comparisonStart, this.comparisonEnd);\r\n }\r\n /** Gets whether a value is within the current comparison range. */\r\n _isInComparisonRange(value) {\r\n return isInRange(value, this.comparisonStart, this.comparisonEnd, this.isRange);\r\n }\r\n /** Gets whether a value is the start of the preview range. */\r\n _isPreviewStart(value) {\r\n return isStart(value, this.previewStart, this.previewEnd);\r\n }\r\n /** Gets whether a value is the end of the preview range. */\r\n _isPreviewEnd(value) {\r\n return isEnd(value, this.previewStart, this.previewEnd);\r\n }\r\n /** Gets whether a value is inside the preview range. */\r\n _isInPreview(value) {\r\n return isInRange(value, this.previewStart, this.previewEnd, this.isRange);\r\n }\r\n /** Finds the NgxMatCalendarCell that corresponds to a DOM node. */\r\n _getCellFromElement(element) {\r\n let cell;\r\n if (isTableCell(element)) {\r\n cell = element;\r\n }\r\n else if (isTableCell(element.parentNode)) {\r\n cell = element.parentNode;\r\n }\r\n if (cell) {\r\n const row = cell.getAttribute('data-ngx-mat-row');\r\n const col = cell.getAttribute('data-ngx-mat-col');\r\n if (row && col) {\r\n return this.rows[parseInt(row)][parseInt(col)];\r\n }\r\n }\r\n return null;\r\n }\r\n}\nNgxMatCalendarBody.ɵfac = function NgxMatCalendarBody_Factory(t) { return new (t || NgxMatCalendarBody)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nNgxMatCalendarBody.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgxMatCalendarBody, selectors: [[\"\", \"ngx-mat-calendar-body\", \"\"]], hostAttrs: [\"role\", \"grid\", \"aria-readonly\", \"true\", 1, \"ngx-mat-calendar-body\"], inputs: { numCols: \"numCols\", activeCell: \"activeCell\", isRange: \"isRange\", cellAspectRatio: \"cellAspectRatio\", previewStart: \"previewStart\", previewEnd: \"previewEnd\", label: \"label\", rows: \"rows\", todayValue: \"todayValue\", startValue: \"startValue\", endValue: \"endValue\", labelMinRequiredCells: \"labelMinRequiredCells\", comparisonStart: \"comparisonStart\", comparisonEnd: \"comparisonEnd\" }, outputs: { selectedValueChange: \"selectedValueChange\", previewChange: \"previewChange\" }, exportAs: [\"NgxMatCalendarBody\"], features: [ɵngcc0.ɵɵNgOnChangesFeature], attrs: _c0, decls: 2, vars: 2, consts: [[\"aria-hidden\", \"true\", 4, \"ngIf\"], [\"role\", \"row\", 4, \"ngFor\", \"ngForOf\"], [\"aria-hidden\", \"true\"], [1, \"mat-calendar-body-label\"], [\"role\", \"row\"], [\"aria-hidden\", \"true\", \"class\", \"mat-calendar-body-label\", 3, \"paddingTop\", \"paddingBottom\", 4, \"ngIf\"], [\"role\", \"gridcell\", \"class\", \"mat-calendar-body-cell\", 3, \"ngClass\", \"tabindex\", \"mat-calendar-body-disabled\", \"mat-calendar-body-active\", \"mat-calendar-body-range-start\", \"mat-calendar-body-range-end\", \"mat-calendar-body-in-range\", \"mat-calendar-body-comparison-bridge-start\", \"mat-calendar-body-comparison-bridge-end\", \"mat-calendar-body-comparison-start\", \"mat-calendar-body-comparison-end\", \"mat-calendar-body-in-comparison-range\", \"mat-calendar-body-preview-start\", \"mat-calendar-body-preview-end\", \"mat-calendar-body-in-preview\", \"width\", \"paddingTop\", \"paddingBottom\", \"click\", 4, \"ngFor\", \"ngForOf\"], [\"aria-hidden\", \"true\", 1, \"mat-calendar-body-label\"], [\"role\", \"gridcell\", 1, \"mat-calendar-body-cell\", 3, \"ngClass\", \"tabindex\", \"click\"], [1, \"mat-calendar-body-cell-content\", \"mat-focus-indicator\"], [1, \"mat-calendar-body-cell-preview\"]], template: function NgxMatCalendarBody_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgxMatCalendarBody_tr_0_Template, 3, 6, \"tr\", 0);\n ɵngcc0.ɵɵtemplate(1, NgxMatCalendarBody_tr_1_Template, 3, 2, \"tr\", 1);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx._firstRowOffset < ctx.labelMinRequiredCells);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx.rows);\n } }, dependencies: [ɵngcc1.NgClass, ɵngcc1.NgForOf, ɵngcc1.NgIf], styles: [\".mat-calendar-body{min-width:224px}.mat-calendar-body-label{height:0;line-height:0;text-align:left;padding-left:4.7142857143%;padding-right:4.7142857143%}.mat-calendar-body-cell{position:relative;height:0;line-height:0;text-align:center;outline:none;cursor:pointer}.mat-calendar-body-cell-preview,.mat-calendar-body-cell:after,.mat-calendar-body-cell:before{content:\\\"\\\";position:absolute;top:5%;left:0;z-index:0;box-sizing:border-box;height:90%;width:100%}.mat-calendar-body-comparison-start:after,.mat-calendar-body-comparison-start:not(.mat-calendar-body-comparison-bridge-start):before,.mat-calendar-body-preview-start .mat-calendar-body-cell-preview,.mat-calendar-body-range-start:after,.mat-calendar-body-range-start:not(.mat-calendar-body-in-comparison-range):before{left:5%;width:95%;border-top-left-radius:999px;border-bottom-left-radius:999px}[dir=rtl] .mat-calendar-body-comparison-start:after,[dir=rtl] .mat-calendar-body-comparison-start:not(.mat-calendar-body-comparison-bridge-start):before,[dir=rtl] .mat-calendar-body-preview-start .mat-calendar-body-cell-preview,[dir=rtl] .mat-calendar-body-range-start:after,[dir=rtl] .mat-calendar-body-range-start:not(.mat-calendar-body-in-comparison-range):before{left:0;border-radius:0;border-top-right-radius:999px;border-bottom-right-radius:999px}.mat-calendar-body-comparison-end:after,.mat-calendar-body-comparison-end:not(.mat-calendar-body-comparison-bridge-end):before,.mat-calendar-body-preview-end .mat-calendar-body-cell-preview,.mat-calendar-body-range-end:after,.mat-calendar-body-range-end:not(.mat-calendar-body-in-comparison-range):before{width:95%;border-top-right-radius:999px;border-bottom-right-radius:999px}[dir=rtl] .mat-calendar-body-comparison-end:after,[dir=rtl] .mat-calendar-body-comparison-end:not(.mat-calendar-body-comparison-bridge-end):before,[dir=rtl] .mat-calendar-body-preview-end .mat-calendar-body-cell-preview,[dir=rtl] .mat-calendar-body-range-end:after,[dir=rtl] .mat-calendar-body-range-end:not(.mat-calendar-body-in-comparison-range):before{left:5%;border-radius:0;border-top-left-radius:999px;border-bottom-left-radius:999px}[dir=rtl] .mat-calendar-body-comparison-bridge-end.mat-calendar-body-range-start:after,[dir=rtl] .mat-calendar-body-comparison-bridge-start.mat-calendar-body-range-end:after{width:95%;border-top-right-radius:999px;border-bottom-right-radius:999px}.mat-calendar-body-comparison-end.mat-calendar-body-range-start:after,.mat-calendar-body-comparison-start.mat-calendar-body-range-end:after,[dir=rtl] .mat-calendar-body-comparison-end.mat-calendar-body-range-start:after,[dir=rtl] .mat-calendar-body-comparison-start.mat-calendar-body-range-end:after{width:90%}.mat-calendar-body-in-preview .mat-calendar-body-cell-preview{border-top:1px dashed;border-bottom:1px dashed}.mat-calendar-body-preview-start .mat-calendar-body-cell-preview{border-left:1px dashed}[dir=rtl] .mat-calendar-body-preview-start .mat-calendar-body-cell-preview{border-left:0;border-right:1px dashed}.mat-calendar-body-preview-end .mat-calendar-body-cell-preview{border-right:1px dashed}[dir=rtl] .mat-calendar-body-preview-end .mat-calendar-body-cell-preview{border-right:0;border-left:1px dashed}.mat-calendar-body-disabled{cursor:default}.mat-calendar-body-cell-content{top:5%;left:5%;z-index:1;display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:90%;height:90%;line-height:1;border-width:1px;border-style:solid;border-radius:999px}.mat-calendar-body-cell-content.mat-focus-indicator{position:absolute}.cdk-high-contrast-active .mat-calendar-body-cell-content{border:none}.cdk-high-contrast-active .mat-calendar-body-selected,.cdk-high-contrast-active .mat-datepicker-popup:not(:empty){outline:1px solid}.cdk-high-contrast-active .mat-calendar-body-today{outline:1px dotted}.cdk-high-contrast-active .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected),.cdk-high-contrast-active .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected){outline:2px dotted}[dir=rtl] .mat-calendar-body-label{text-align:right}@media (hover:none){.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected){background-color:transparent}}\"], encapsulation: 2, changeDetection: 0 });\r\n/** @nocollapse */\r\nNgxMatCalendarBody.ctorParameters = () => [\r\n { type: ElementRef },\r\n { type: NgZone }\r\n];\r\nNgxMatCalendarBody.propDecorators = {\r\n label: [{ type: Input }],\r\n rows: [{ type: Input }],\r\n todayValue: [{ type: Input }],\r\n startValue: [{ type: Input }],\r\n endValue: [{ type: Input }],\r\n labelMinRequiredCells: [{ type: Input }],\r\n numCols: [{ type: Input }],\r\n activeCell: [{ type: Input }],\r\n isRange: [{ type: Input }],\r\n cellAspectRatio: [{ type: Input }],\r\n comparisonStart: [{ type: Input }],\r\n comparisonEnd: [{ type: Input }],\r\n previewStart: [{ type: Input }],\r\n previewEnd: [{ type: Input }],\r\n selectedValueChange: [{ type: Output }],\r\n previewChange: [{ type: Output }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxMatCalendarBody, [{\n type: Component,\n args: [{ selector: '[ngx-mat-calendar-body]', template: \"\\r\\n\\r\\n \\r\\n {{label}}\\r\\n \\r\\n\\r\\n\\r\\n\\r\\n\\r\\n \\r\\n \\r\\n {{_firstRowOffset >= labelMinRequiredCells ? label : ''}}\\r\\n \\r\\n \\r\\n
\\r\\n {{item.displayValue}}\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n\", host: {\n 'class': 'ngx-mat-calendar-body',\n 'role': 'grid',\n 'aria-readonly': 'true'\n }, exportAs: 'NgxMatCalendarBody', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [\".mat-calendar-body{min-width:224px}.mat-calendar-body-label{height:0;line-height:0;text-align:left;padding-left:4.7142857143%;padding-right:4.7142857143%}.mat-calendar-body-cell{position:relative;height:0;line-height:0;text-align:center;outline:none;cursor:pointer}.mat-calendar-body-cell-preview,.mat-calendar-body-cell:after,.mat-calendar-body-cell:before{content:\\\"\\\";position:absolute;top:5%;left:0;z-index:0;box-sizing:border-box;height:90%;width:100%}.mat-calendar-body-comparison-start:after,.mat-calendar-body-comparison-start:not(.mat-calendar-body-comparison-bridge-start):before,.mat-calendar-body-preview-start .mat-calendar-body-cell-preview,.mat-calendar-body-range-start:after,.mat-calendar-body-range-start:not(.mat-calendar-body-in-comparison-range):before{left:5%;width:95%;border-top-left-radius:999px;border-bottom-left-radius:999px}[dir=rtl] .mat-calendar-body-comparison-start:after,[dir=rtl] .mat-calendar-body-comparison-start:not(.mat-calendar-body-comparison-bridge-start):before,[dir=rtl] .mat-calendar-body-preview-start .mat-calendar-body-cell-preview,[dir=rtl] .mat-calendar-body-range-start:after,[dir=rtl] .mat-calendar-body-range-start:not(.mat-calendar-body-in-comparison-range):before{left:0;border-radius:0;border-top-right-radius:999px;border-bottom-right-radius:999px}.mat-calendar-body-comparison-end:after,.mat-calendar-body-comparison-end:not(.mat-calendar-body-comparison-bridge-end):before,.mat-calendar-body-preview-end .mat-calendar-body-cell-preview,.mat-calendar-body-range-end:after,.mat-calendar-body-range-end:not(.mat-calendar-body-in-comparison-range):before{width:95%;border-top-right-radius:999px;border-bottom-right-radius:999px}[dir=rtl] .mat-calendar-body-comparison-end:after,[dir=rtl] .mat-calendar-body-comparison-end:not(.mat-calendar-body-comparison-bridge-end):before,[dir=rtl] .mat-calendar-body-preview-end .mat-calendar-body-cell-preview,[dir=rtl] .mat-calendar-body-range-end:after,[dir=rtl] .mat-calendar-body-range-end:not(.mat-calendar-body-in-comparison-range):before{left:5%;border-radius:0;border-top-left-radius:999px;border-bottom-left-radius:999px}[dir=rtl] .mat-calendar-body-comparison-bridge-end.mat-calendar-body-range-start:after,[dir=rtl] .mat-calendar-body-comparison-bridge-start.mat-calendar-body-range-end:after{width:95%;border-top-right-radius:999px;border-bottom-right-radius:999px}.mat-calendar-body-comparison-end.mat-calendar-body-range-start:after,.mat-calendar-body-comparison-start.mat-calendar-body-range-end:after,[dir=rtl] .mat-calendar-body-comparison-end.mat-calendar-body-range-start:after,[dir=rtl] .mat-calendar-body-comparison-start.mat-calendar-body-range-end:after{width:90%}.mat-calendar-body-in-preview .mat-calendar-body-cell-preview{border-top:1px dashed;border-bottom:1px dashed}.mat-calendar-body-preview-start .mat-calendar-body-cell-preview{border-left:1px dashed}[dir=rtl] .mat-calendar-body-preview-start .mat-calendar-body-cell-preview{border-left:0;border-right:1px dashed}.mat-calendar-body-preview-end .mat-calendar-body-cell-preview{border-right:1px dashed}[dir=rtl] .mat-calendar-body-preview-end .mat-calendar-body-cell-preview{border-right:0;border-left:1px dashed}.mat-calendar-body-disabled{cursor:default}.mat-calendar-body-cell-content{top:5%;left:5%;z-index:1;display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:90%;height:90%;line-height:1;border-width:1px;border-style:solid;border-radius:999px}.mat-calendar-body-cell-content.mat-focus-indicator{position:absolute}.cdk-high-contrast-active .mat-calendar-body-cell-content{border:none}.cdk-high-contrast-active .mat-calendar-body-selected,.cdk-high-contrast-active .mat-datepicker-popup:not(:empty){outline:1px solid}.cdk-high-contrast-active .mat-calendar-body-today{outline:1px dotted}.cdk-high-contrast-active .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected),.cdk-high-contrast-active .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected){outline:2px dotted}[dir=rtl] .mat-calendar-body-label{text-align:right}@media (hover:none){.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected){background-color:transparent}}\"] }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }]; }, { numCols: [{\n type: Input\n }], activeCell: [{\n type: Input\n }], isRange: [{\n type: Input\n }], cellAspectRatio: [{\n type: Input\n }], previewStart: [{\n type: Input\n }], previewEnd: [{\n type: Input\n }], selectedValueChange: [{\n type: Output\n }], previewChange: [{\n type: Output\n }], label: [{\n type: Input\n }], rows: [{\n type: Input\n }], todayValue: [{\n type: Input\n }], startValue: [{\n type: Input\n }], endValue: [{\n type: Input\n }], labelMinRequiredCells: [{\n type: Input\n }], comparisonStart: [{\n type: Input\n }], comparisonEnd: [{\n type: Input\n }] }); })();\r\n/** Checks whether a node is a table cell element. */\r\nfunction isTableCell(node) {\r\n return node.nodeName === 'TD';\r\n}\r\n/** Checks whether a value is the start of a range. */\r\nfunction isStart(value, start, end) {\r\n return end !== null && start !== end && value < end && value === start;\r\n}\r\n/** Checks whether a value is the end of a range. */\r\nfunction isEnd(value, start, end) {\r\n return start !== null && start !== end && value >= start && value === end;\r\n}\r\n/** Checks whether a value is inside of a range. */\r\nfunction isInRange(value, start, end, rangeEnabled) {\r\n return rangeEnabled && start !== null && end !== null && start !== end &&\r\n value >= start && value <= end;\r\n}\n\n/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\r\n/** Injection token used to customize the date range selection behavior. */\r\nconst NGX_MAT_DATE_RANGE_SELECTION_STRATEGY = new InjectionToken('NGX_MAT_DATE_RANGE_SELECTION_STRATEGY');\r\n/** Provides the default date range selection behavior. */\r\nclass DefaultNgxMatCalendarRangeStrategy {\r\n constructor(_dateAdapter) {\r\n this._dateAdapter = _dateAdapter;\r\n }\r\n selectionFinished(date, currentRange) {\r\n let { start, end } = currentRange;\r\n if (start == null) {\r\n start = date;\r\n }\r\n else if (end == null && date && this._dateAdapter.compareDate(date, start) >= 0) {\r\n end = date;\r\n }\r\n else {\r\n start = date;\r\n end = null;\r\n }\r\n return new DateRange(start, end);\r\n }\r\n createPreview(activeDate, currentRange) {\r\n let start = null;\r\n let end = null;\r\n if (currentRange.start && !currentRange.end && activeDate) {\r\n start = currentRange.start;\r\n end = activeDate;\r\n }\r\n return new DateRange(start, end);\r\n }\r\n}\nDefaultNgxMatCalendarRangeStrategy.ɵfac = function DefaultNgxMatCalendarRangeStrategy_Factory(t) { return new (t || DefaultNgxMatCalendarRangeStrategy)(ɵngcc0.ɵɵinject(NgxMatDateAdapter)); };\nDefaultNgxMatCalendarRangeStrategy.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: DefaultNgxMatCalendarRangeStrategy, factory: DefaultNgxMatCalendarRangeStrategy.ɵfac });\r\n/** @nocollapse */\r\nDefaultNgxMatCalendarRangeStrategy.ctorParameters = () => [\r\n { type: NgxMatDateAdapter }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DefaultNgxMatCalendarRangeStrategy, [{\n type: Injectable\n }], function () { return [{ type: NgxMatDateAdapter }]; }, null); })();\n\nconst LIMIT_TIMES = {\r\n minHour: 0,\r\n maxHour: 24,\r\n minMinute: 0,\r\n maxMinute: 60,\r\n minSecond: 0,\r\n maxSecond: 60,\r\n meridian: 12\r\n};\r\nconst MERIDIANS = {\r\n AM: 'AM',\r\n PM: 'PM'\r\n};\r\nconst DEFAULT_STEP = 1;\r\nconst NUMERIC_REGEX = /[^0-9]/g;\r\nconst PATTERN_INPUT_HOUR = /^(2[0-3]|[0-1][0-9]|[0-9])$/;\r\nconst PATTERN_INPUT_MINUTE = /^([0-5][0-9]|[0-9])$/;\r\nconst PATTERN_INPUT_SECOND = /^([0-5][0-9]|[0-9])$/;\r\nfunction formatTwoDigitTimeValue(val) {\r\n const txt = val.toString();\r\n return txt.length > 1 ? txt : `0${txt}`;\r\n}\r\nfunction createMissingDateImplError(provider) {\r\n return Error(`NgxMatDatepicker: No provider found for ${provider}. You must import one of the following ` +\r\n `modules at your application root: NgxMatNativeDateModule, NgxMatMomentModule, or provide a ` +\r\n `custom implementation.`);\r\n}\r\n/** Formats a range of years. */\r\nfunction formatYearRange(start, end) {\r\n return `${start} \\u2013 ${end}`;\r\n}\n\n/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\r\nconst DAYS_PER_WEEK = 7;\r\n/**\r\n * An internal component used to display a single month in the datepicker.\r\n * @docs-private\r\n */\r\nclass NgxMatMonthView {\r\n constructor(_changeDetectorRef, _dateFormats, _dateAdapter, _dir, _rangeStrategy) {\r\n this._changeDetectorRef = _changeDetectorRef;\r\n this._dateFormats = _dateFormats;\r\n this._dateAdapter = _dateAdapter;\r\n this._dir = _dir;\r\n this._rangeStrategy = _rangeStrategy;\r\n this._rerenderSubscription = Subscription.EMPTY;\r\n /** Emits when a new date is selected. */\r\n this.selectedChange = new EventEmitter();\r\n /** Emits when any date is selected. */\r\n this._userSelection = new EventEmitter();\r\n /** Emits when any date is activated. */\r\n this.activeDateChange = new EventEmitter();\r\n if (!this._dateAdapter) {\r\n throw createMissingDateImplError('NgxMatDateAdapter');\r\n }\r\n if (!this._dateFormats) {\r\n throw createMissingDateImplError('NGX_MAT_DATE_FORMATS');\r\n }\r\n this._activeDate = this._dateAdapter.today();\r\n }\r\n /**\r\n * The date to display in this month view (everything other than the month and year is ignored).\r\n */\r\n get activeDate() { return this._activeDate; }\r\n set activeDate(value) {\r\n const oldActiveDate = this._activeDate;\r\n const validDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value)) || this._dateAdapter.today();\r\n this._activeDate = this._dateAdapter.clampDate(validDate, this.minDate, this.maxDate);\r\n if (!this._hasSameMonthAndYear(oldActiveDate, this._activeDate)) {\r\n this._init();\r\n }\r\n }\r\n /** The currently selected date. */\r\n get selected() { return this._selected; }\r\n set selected(value) {\r\n if (value instanceof DateRange) {\r\n this._selected = value;\r\n }\r\n else {\r\n this._selected = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\r\n }\r\n this._setRanges(this._selected);\r\n }\r\n /** The minimum selectable date. */\r\n get minDate() { return this._minDate; }\r\n set minDate(value) {\r\n this._minDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\r\n }\r\n /** The maximum selectable date. */\r\n get maxDate() { return this._maxDate; }\r\n set maxDate(value) {\r\n this._maxDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\r\n }\r\n ngAfterContentInit() {\r\n this._rerenderSubscription = this._dateAdapter.localeChanges\r\n .pipe(startWith(null))\r\n .subscribe(() => this._init());\r\n }\r\n ngOnDestroy() {\r\n this._rerenderSubscription.unsubscribe();\r\n }\r\n /** Handles when a new date is selected. */\r\n _dateSelected(event) {\r\n const date = event.value;\r\n const selectedYear = this._dateAdapter.getYear(this.activeDate);\r\n const selectedMonth = this._dateAdapter.getMonth(this.activeDate);\r\n const selectedDate = this._dateAdapter.createDate(selectedYear, selectedMonth, date);\r\n let rangeStartDate;\r\n let rangeEndDate;\r\n if (this._selected instanceof DateRange) {\r\n rangeStartDate = this._getDateInCurrentMonth(this._selected.start);\r\n rangeEndDate = this._getDateInCurrentMonth(this._selected.end);\r\n }\r\n else {\r\n rangeStartDate = rangeEndDate = this._getDateInCurrentMonth(this._selected);\r\n }\r\n if (rangeStartDate !== date || rangeEndDate !== date) {\r\n this.selectedChange.emit(selectedDate);\r\n }\r\n this._userSelection.emit({ value: selectedDate, event: event.event });\r\n }\r\n /** Handles keydown events on the calendar body when calendar is in month view. */\r\n _handleCalendarBodyKeydown(event) {\r\n // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent\r\n // disabled ones from being selected. This may not be ideal, we should look into whether\r\n // navigation should skip over disabled dates, and if so, how to implement that efficiently.\r\n const oldActiveDate = this._activeDate;\r\n const isRtl = this._isRtl();\r\n switch (event.keyCode) {\r\n case LEFT_ARROW:\r\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, isRtl ? 1 : -1);\r\n break;\r\n case RIGHT_ARROW:\r\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, isRtl ? -1 : 1);\r\n break;\r\n case UP_ARROW:\r\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, -7);\r\n break;\r\n case DOWN_ARROW:\r\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, 7);\r\n break;\r\n case HOME:\r\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, 1 - this._dateAdapter.getDate(this._activeDate));\r\n break;\r\n case END:\r\n this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, (this._dateAdapter.getNumDaysInMonth(this._activeDate) -\r\n this._dateAdapter.getDate(this._activeDate)));\r\n break;\r\n case PAGE_UP:\r\n this.activeDate = event.altKey ?\r\n this._dateAdapter.addCalendarYears(this._activeDate, -1) :\r\n this._dateAdapter.addCalendarMonths(this._activeDate, -1);\r\n break;\r\n case PAGE_DOWN:\r\n this.activeDate = event.altKey ?\r\n this._dateAdapter.addCalendarYears(this._activeDate, 1) :\r\n this._dateAdapter.addCalendarMonths(this._activeDate, 1);\r\n break;\r\n case ENTER:\r\n case SPACE:\r\n if (!this.dateFilter || this.dateFilter(this._activeDate)) {\r\n this._dateSelected({ value: this._dateAdapter.getDate(this._activeDate), event });\r\n // Prevent unexpected default actions such as form submission.\r\n event.preventDefault();\r\n }\r\n return;\r\n case ESCAPE:\r\n // Abort the current range selection if the user presses escape mid-selection.\r\n if (this._previewEnd != null) {\r\n this._previewStart = this._previewEnd = null;\r\n this.selectedChange.emit(null);\r\n this._userSelection.emit({ value: null, event });\r\n event.preventDefault();\r\n event.stopPropagation(); // Prevents the overlay from closing.\r\n }\r\n return;\r\n default:\r\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\r\n return;\r\n }\r\n if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\r\n this.activeDateChange.emit(this.activeDate);\r\n }\r\n this._focusActiveCell();\r\n // Prevent unexpected default actions such as form submission.\r\n event.preventDefault();\r\n }\r\n /** Initializes this month view. */\r\n _init() {\r\n this._setRanges(this.selected);\r\n this._todayDate = this._getCellCompareValue(this._dateAdapter.today());\r\n this._monthLabel =\r\n this._dateAdapter.getMonthNames('short')[this._dateAdapter.getMonth(this.activeDate)]\r\n .toLocaleUpperCase();\r\n let firstOfMonth = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), this._dateAdapter.getMonth(this.activeDate), 1);\r\n this._firstWeekOffset =\r\n (DAYS_PER_WEEK + this._dateAdapter.getDayOfWeek(firstOfMonth) -\r\n this._dateAdapter.getFirstDayOfWeek()) % DAYS_PER_WEEK;\r\n this._initWeekdays();\r\n this._createWeekCells();\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n /** Focuses the active cell after the microtask queue is empty. */\r\n _focusActiveCell(movePreview) {\r\n this._matCalendarBody._focusActiveCell(movePreview);\r\n }\r\n /** Called when the user has activated a new cell and the preview needs to be updated. */\r\n _previewChanged({ event, value: cell }) {\r\n if (this._rangeStrategy) {\r\n // We can assume that this will be a range, because preview\r\n // events aren't fired for single date selections.\r\n const value = cell ? cell.rawValue : null;\r\n const previewRange = this._rangeStrategy.createPreview(value, this.selected, event);\r\n this._previewStart = this._getCellCompareValue(previewRange.start);\r\n this._previewEnd = this._getCellCompareValue(previewRange.end);\r\n // Note that here we need to use `detectChanges`, rather than `markForCheck`, because\r\n // the way `_focusActiveCell` is set up at the moment makes it fire at the wrong time\r\n // when navigating one month back using the keyboard which will cause this handler\r\n // to throw a \"changed after checked\" error when updating the preview state.\r\n this._changeDetectorRef.detectChanges();\r\n }\r\n }\r\n /** Initializes the weekdays. */\r\n _initWeekdays() {\r\n const firstDayOfWeek = this._dateAdapter.getFirstDayOfWeek();\r\n const narrowWeekdays = this._dateAdapter.getDayOfWeekNames('narrow');\r\n const longWeekdays = this._dateAdapter.getDayOfWeekNames('long');\r\n // Rotate the labels for days of the week based on the configured first day of the week.\r\n let weekdays = longWeekdays.map((long, i) => {\r\n return { long, narrow: narrowWeekdays[i] };\r\n });\r\n this._weekdays = weekdays.slice(firstDayOfWeek).concat(weekdays.slice(0, firstDayOfWeek));\r\n }\r\n /** Creates MatCalendarCells for the dates in this month. */\r\n _createWeekCells() {\r\n const daysInMonth = this._dateAdapter.getNumDaysInMonth(this.activeDate);\r\n const dateNames = this._dateAdapter.getDateNames();\r\n this._weeks = [[]];\r\n for (let i = 0, cell = this._firstWeekOffset; i < daysInMonth; i++, cell++) {\r\n if (cell == DAYS_PER_WEEK) {\r\n this._weeks.push([]);\r\n cell = 0;\r\n }\r\n const date = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), this._dateAdapter.getMonth(this.activeDate), i + 1);\r\n const enabled = this._shouldEnableDate(date);\r\n const ariaLabel = this._dateAdapter.format(date, this._dateFormats.display.dateA11yLabel);\r\n const cellClasses = this.dateClass ? this.dateClass(date) : undefined;\r\n this._weeks[this._weeks.length - 1].push(new NgxMatCalendarCell(i + 1, dateNames[i], ariaLabel, enabled, cellClasses, this._getCellCompareValue(date), date));\r\n }\r\n }\r\n /** Date filter for the month */\r\n _shouldEnableDate(date) {\r\n return !!date &&\r\n (!this.minDate || this._dateAdapter.compareDate(date, this.minDate) >= 0) &&\r\n (!this.maxDate || this._dateAdapter.compareDate(date, this.maxDate) <= 0) &&\r\n (!this.dateFilter || this.dateFilter(date));\r\n }\r\n /**\r\n * Gets the date in this month that the given Date falls on.\r\n * Returns null if the given Date is in another month.\r\n */\r\n _getDateInCurrentMonth(date) {\r\n return date && this._hasSameMonthAndYear(date, this.activeDate) ?\r\n this._dateAdapter.getDate(date) : null;\r\n }\r\n /** Checks whether the 2 dates are non-null and fall within the same month of the same year. */\r\n _hasSameMonthAndYear(d1, d2) {\r\n return !!(d1 && d2 && this._dateAdapter.getMonth(d1) == this._dateAdapter.getMonth(d2) &&\r\n this._dateAdapter.getYear(d1) == this._dateAdapter.getYear(d2));\r\n }\r\n /** Gets the value that will be used to one cell to another. */\r\n _getCellCompareValue(date) {\r\n if (date) {\r\n // We use the time since the Unix epoch to compare dates in this view, rather than the\r\n // cell values, because we need to support ranges that span across multiple months/years.\r\n const year = this._dateAdapter.getYear(date);\r\n const month = this._dateAdapter.getMonth(date);\r\n const day = this._dateAdapter.getDate(date);\r\n return new Date(year, month, day).getTime();\r\n }\r\n return null;\r\n }\r\n /**\r\n * @param obj The object to check.\r\n * @returns The given object if it is both a date instance and valid, otherwise null.\r\n */\r\n _getValidDateOrNull(obj) {\r\n return (this._dateAdapter.isDateInstance(obj) && this._dateAdapter.isValid(obj)) ? obj : null;\r\n }\r\n /** Determines whether the user has the RTL layout direction. */\r\n _isRtl() {\r\n return this._dir && this._dir.value === 'rtl';\r\n }\r\n /** Sets the current range based on a model value. */\r\n _setRanges(selectedValue) {\r\n if (selectedValue instanceof DateRange) {\r\n this._rangeStart = this._getCellCompareValue(selectedValue.start);\r\n this._rangeEnd = this._getCellCompareValue(selectedValue.end);\r\n this._isRange = true;\r\n }\r\n else {\r\n this._rangeStart = this._rangeEnd = this._getCellCompareValue(selectedValue);\r\n this._isRange = false;\r\n }\r\n this._comparisonRangeStart = this._getCellCompareValue(this.comparisonStart);\r\n this._comparisonRangeEnd = this._getCellCompareValue(this.comparisonEnd);\r\n }\r\n}\nNgxMatMonthView.ɵfac = function NgxMatMonthView_Factory(t) { return new (t || NgxMatMonthView)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(NGX_MAT_DATE_FORMATS, 8), ɵngcc0.ɵɵdirectiveInject(NgxMatDateAdapter, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.Directionality, 8), ɵngcc0.ɵɵdirectiveInject(NGX_MAT_DATE_RANGE_SELECTION_STRATEGY, 8)); };\nNgxMatMonthView.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgxMatMonthView, selectors: [[\"ngx-mat-month-view\"]], viewQuery: function NgxMatMonthView_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(NgxMatCalendarBody, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._matCalendarBody = _t.first);\n } }, inputs: { activeDate: \"activeDate\", selected: \"selected\", minDate: \"minDate\", maxDate: \"maxDate\", dateFilter: \"dateFilter\", dateClass: \"dateClass\", comparisonStart: \"comparisonStart\", comparisonEnd: \"comparisonEnd\" }, outputs: { selectedChange: \"selectedChange\", _userSelection: \"_userSelection\", activeDateChange: \"activeDateChange\" }, exportAs: [\"ngxMatMonthView\"], decls: 7, vars: 13, consts: [[\"role\", \"presentation\", 1, \"mat-calendar-table\"], [1, \"mat-calendar-table-header\"], [\"scope\", \"col\", 4, \"ngFor\", \"ngForOf\"], [\"colspan\", \"7\", \"aria-hidden\", \"true\", 1, \"mat-calendar-table-header-divider\"], [\"ngx-mat-calendar-body\", \"\", 3, \"label\", \"rows\", \"todayValue\", \"startValue\", \"endValue\", \"comparisonStart\", \"comparisonEnd\", \"previewStart\", \"previewEnd\", \"isRange\", \"labelMinRequiredCells\", \"activeCell\", \"selectedValueChange\", \"previewChange\", \"keydown\"], [\"scope\", \"col\"]], template: function NgxMatMonthView_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"table\", 0)(1, \"thead\", 1)(2, \"tr\");\n ɵngcc0.ɵɵtemplate(3, NgxMatMonthView_th_3_Template, 2, 2, \"th\", 2);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(4, \"tr\");\n ɵngcc0.ɵɵelement(5, \"th\", 3);\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵelementStart(6, \"tbody\", 4);\n ɵngcc0.ɵɵlistener(\"selectedValueChange\", function NgxMatMonthView_Template_tbody_selectedValueChange_6_listener($event) { return ctx._dateSelected($event); })(\"previewChange\", function NgxMatMonthView_Template_tbody_previewChange_6_listener($event) { return ctx._previewChanged($event); })(\"keydown\", function NgxMatMonthView_Template_tbody_keydown_6_listener($event) { return ctx._handleCalendarBodyKeydown($event); });\n ɵngcc0.ɵɵelementEnd()();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngForOf\", ctx._weekdays);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"label\", ctx._monthLabel)(\"rows\", ctx._weeks)(\"todayValue\", ctx._todayDate)(\"startValue\", ctx._rangeStart)(\"endValue\", ctx._rangeEnd)(\"comparisonStart\", ctx._comparisonRangeStart)(\"comparisonEnd\", ctx._comparisonRangeEnd)(\"previewStart\", ctx._previewStart)(\"previewEnd\", ctx._previewEnd)(\"isRange\", ctx._isRange)(\"labelMinRequiredCells\", 3)(\"activeCell\", ctx._dateAdapter.getDate(ctx.activeDate) - 1);\n } }, dependencies: [ɵngcc1.NgForOf, NgxMatCalendarBody], encapsulation: 2, changeDetection: 0 });\r\n/** @nocollapse */\r\nNgxMatMonthView.ctorParameters = () => [\r\n { type: ChangeDetectorRef },\r\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [NGX_MAT_DATE_FORMATS,] }] },\r\n { type: NgxMatDateAdapter, decorators: [{ type: Optional }] },\r\n { type: Directionality, decorators: [{ type: Optional }] },\r\n { type: undefined, decorators: [{ type: Inject, args: [NGX_MAT_DATE_RANGE_SELECTION_STRATEGY,] }, { type: Optional }] }\r\n];\r\nNgxMatMonthView.propDecorators = {\r\n activeDate: [{ type: Input }],\r\n selected: [{ type: Input }],\r\n minDate: [{ type: Input }],\r\n maxDate: [{ type: Input }],\r\n dateFilter: [{ type: Input }],\r\n dateClass: [{ type: Input }],\r\n comparisonStart: [{ type: Input }],\r\n comparisonEnd: [{ type: Input }],\r\n selectedChange: [{ type: Output }],\r\n _userSelection: [{ type: Output }],\r\n activeDateChange: [{ type: Output }],\r\n _matCalendarBody: [{ type: ViewChild, args: [NgxMatCalendarBody,] }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxMatMonthView, [{\n type: Component,\n args: [{\n selector: 'ngx-mat-month-view',\n template: \"\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
{{day.narrow}}
\\r\\n\",\n exportAs: 'ngxMatMonthView',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return [{ type: ɵngcc0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [NGX_MAT_DATE_FORMATS]\n }] }, { type: NgxMatDateAdapter, decorators: [{\n type: Optional\n }] }, { type: ɵngcc2.Directionality, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Inject,\n args: [NGX_MAT_DATE_RANGE_SELECTION_STRATEGY]\n }, {\n type: Optional\n }] }]; }, { selectedChange: [{\n type: Output\n }], _userSelection: [{\n type: Output\n }], activeDateChange: [{\n type: Output\n }], activeDate: [{\n type: Input\n }], selected: [{\n type: Input\n }], minDate: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], dateFilter: [{\n type: Input\n }], dateClass: [{\n type: Input\n }], comparisonStart: [{\n type: Input\n }], comparisonEnd: [{\n type: Input\n }], _matCalendarBody: [{\n type: ViewChild,\n args: [NgxMatCalendarBody]\n }] }); })();\n\n/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\r\nconst yearsPerPage = 24;\r\nconst yearsPerRow = 4;\r\n/**\r\n * An internal component used to display a year selector in the datepicker.\r\n * @docs-private\r\n */\r\nclass NgxMatMultiYearView {\r\n constructor(_changeDetectorRef, _dateAdapter, _dir) {\r\n this._changeDetectorRef = _changeDetectorRef;\r\n this._dateAdapter = _dateAdapter;\r\n this._dir = _dir;\r\n this._rerenderSubscription = Subscription.EMPTY;\r\n /** Emits when a new year is selected. */\r\n this.selectedChange = new EventEmitter();\r\n /** Emits the selected year. This doesn't imply a change on the selected date */\r\n this.yearSelected = new EventEmitter();\r\n /** Emits when any date is activated. */\r\n this.activeDateChange = new EventEmitter();\r\n if (!this._dateAdapter) {\r\n throw createMissingDateImplError('NgxMatDateAdapter');\r\n }\r\n this._activeDate = this._dateAdapter.today();\r\n }\r\n /** The date to display in this multi-year view (everything other than the year is ignored). */\r\n get activeDate() { return this._activeDate; }\r\n set activeDate(value) {\r\n let oldActiveDate = this._activeDate;\r\n const validDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value)) || this._dateAdapter.today();\r\n this._activeDate = this._dateAdapter.clampDate(validDate, this.minDate, this.maxDate);\r\n if (!isSameMultiYearView(this._dateAdapter, oldActiveDate, this._activeDate, this.minDate, this.maxDate)) {\r\n this._init();\r\n }\r\n }\r\n /** The currently selected date. */\r\n get selected() { return this._selected; }\r\n set selected(value) {\r\n if (value instanceof DateRange) {\r\n this._selected = value;\r\n }\r\n else {\r\n this._selected = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\r\n }\r\n this._setSelectedYear(value);\r\n }\r\n /** The minimum selectable date. */\r\n get minDate() { return this._minDate; }\r\n set minDate(value) {\r\n this._minDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\r\n }\r\n /** The maximum selectable date. */\r\n get maxDate() { return this._maxDate; }\r\n set maxDate(value) {\r\n this._maxDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\r\n }\r\n ngAfterContentInit() {\r\n this._rerenderSubscription = this._dateAdapter.localeChanges\r\n .pipe(startWith(null))\r\n .subscribe(() => this._init());\r\n }\r\n ngOnDestroy() {\r\n this._rerenderSubscription.unsubscribe();\r\n }\r\n /** Initializes this multi-year view. */\r\n _init() {\r\n this._todayYear = this._dateAdapter.getYear(this._dateAdapter.today());\r\n // We want a range years such that we maximize the number of\r\n // enabled dates visible at once. This prevents issues where the minimum year\r\n // is the last item of a page OR the maximum year is the first item of a page.\r\n // The offset from the active year to the \"slot\" for the starting year is the\r\n // *actual* first rendered year in the multi-year view.\r\n const activeYear = this._dateAdapter.getYear(this._activeDate);\r\n const minYearOfPage = activeYear - getActiveOffset(this._dateAdapter, this.activeDate, this.minDate, this.maxDate);\r\n this._years = [];\r\n for (let i = 0, row = []; i < yearsPerPage; i++) {\r\n row.push(minYearOfPage + i);\r\n if (row.length == yearsPerRow) {\r\n this._years.push(row.map(year => this._createCellForYear(year)));\r\n row = [];\r\n }\r\n }\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n /** Handles when a new year is selected. */\r\n _yearSelected(event) {\r\n const year = event.value;\r\n this.yearSelected.emit(this._dateAdapter.createDate(year, 0, 1));\r\n let month = this._dateAdapter.getMonth(this.activeDate);\r\n let daysInMonth = this._dateAdapter.getNumDaysInMonth(this._dateAdapter.createDate(year, month, 1));\r\n this.selectedChange.emit(this._dateAdapter.createDate(year, month, Math.min(this._dateAdapter.getDate(this.activeDate), daysInMonth)));\r\n }\r\n /** Handles keydown events on the calendar body when calendar is in multi-year view. */\r\n _handleCalendarBodyKeydown(event) {\r\n const oldActiveDate = this._activeDate;\r\n const isRtl = this._isRtl();\r\n switch (event.keyCode) {\r\n case LEFT_ARROW:\r\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, isRtl ? 1 : -1);\r\n break;\r\n case RIGHT_ARROW:\r\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, isRtl ? -1 : 1);\r\n break;\r\n case UP_ARROW:\r\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, -yearsPerRow);\r\n break;\r\n case DOWN_ARROW:\r\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, yearsPerRow);\r\n break;\r\n case HOME:\r\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, -getActiveOffset(this._dateAdapter, this.activeDate, this.minDate, this.maxDate));\r\n break;\r\n case END:\r\n this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, yearsPerPage - getActiveOffset(this._dateAdapter, this.activeDate, this.minDate, this.maxDate) - 1);\r\n break;\r\n case PAGE_UP:\r\n this.activeDate =\r\n this._dateAdapter.addCalendarYears(this._activeDate, event.altKey ? -yearsPerPage * 10 : -yearsPerPage);\r\n break;\r\n case PAGE_DOWN:\r\n this.activeDate =\r\n this._dateAdapter.addCalendarYears(this._activeDate, event.altKey ? yearsPerPage * 10 : yearsPerPage);\r\n break;\r\n case ENTER:\r\n case SPACE:\r\n this._yearSelected({ value: this._dateAdapter.getYear(this._activeDate), event });\r\n break;\r\n default:\r\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\r\n return;\r\n }\r\n if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\r\n this.activeDateChange.emit(this.activeDate);\r\n }\r\n this._focusActiveCell();\r\n // Prevent unexpected default actions such as form submission.\r\n event.preventDefault();\r\n }\r\n _getActiveCell() {\r\n return getActiveOffset(this._dateAdapter, this.activeDate, this.minDate, this.maxDate);\r\n }\r\n /** Focuses the active cell after the microtask queue is empty. */\r\n _focusActiveCell() {\r\n this._matCalendarBody._focusActiveCell();\r\n }\r\n /** Creates an MatCalendarCell for the given year. */\r\n _createCellForYear(year) {\r\n let yearName = this._dateAdapter.getYearName(this._dateAdapter.createDate(year, 0, 1));\r\n return new NgxMatCalendarCell(year, yearName, yearName, this._shouldEnableYear(year));\r\n }\r\n /** Whether the given year is enabled. */\r\n _shouldEnableYear(year) {\r\n // disable if the year is greater than maxDate lower than minDate\r\n if (year === undefined || year === null ||\r\n (this.maxDate && year > this._dateAdapter.getYear(this.maxDate)) ||\r\n (this.minDate && year < this._dateAdapter.getYear(this.minDate))) {\r\n return false;\r\n }\r\n // enable if it reaches here and there's no filter defined\r\n if (!this.dateFilter) {\r\n return true;\r\n }\r\n const firstOfYear = this._dateAdapter.createDate(year, 0, 1);\r\n // If any date in the year is enabled count the year as enabled.\r\n for (let date = firstOfYear; this._dateAdapter.getYear(date) == year; date = this._dateAdapter.addCalendarDays(date, 1)) {\r\n if (this.dateFilter(date)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n /**\r\n * @param obj The object to check.\r\n * @returns The given object if it is both a date instance and valid, otherwise null.\r\n */\r\n _getValidDateOrNull(obj) {\r\n return (this._dateAdapter.isDateInstance(obj) && this._dateAdapter.isValid(obj)) ? obj : null;\r\n }\r\n /** Determines whether the user has the RTL layout direction. */\r\n _isRtl() {\r\n return this._dir && this._dir.value === 'rtl';\r\n }\r\n /** Sets the currently-highlighted year based on a model value. */\r\n _setSelectedYear(value) {\r\n this._selectedYear = null;\r\n if (value instanceof DateRange) {\r\n const displayValue = value.start || value.end;\r\n if (displayValue) {\r\n this._selectedYear = this._dateAdapter.getYear(displayValue);\r\n }\r\n }\r\n else if (value) {\r\n this._selectedYear = this._dateAdapter.getYear(value);\r\n }\r\n }\r\n}\nNgxMatMultiYearView.ɵfac = function NgxMatMultiYearView_Factory(t) { return new (t || NgxMatMultiYearView)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(NgxMatDateAdapter, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.Directionality, 8)); };\nNgxMatMultiYearView.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgxMatMultiYearView, selectors: [[\"ngx-mat-multi-year-view\"]], viewQuery: function NgxMatMultiYearView_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(NgxMatCalendarBody, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._matCalendarBody = _t.first);\n } }, inputs: { activeDate: \"activeDate\", selected: \"selected\", minDate: \"minDate\", maxDate: \"maxDate\", dateFilter: \"dateFilter\" }, outputs: { selectedChange: \"selectedChange\", yearSelected: \"yearSelected\", activeDateChange: \"activeDateChange\" }, exportAs: [\"ngxMatMultiYearView\"], decls: 5, vars: 7, consts: [[\"role\", \"presentation\", 1, \"mat-calendar-table\"], [1, \"mat-calendar-table-header\"], [\"colspan\", \"4\", 1, \"mat-calendar-table-header-divider\"], [\"ngx-mat-calendar-body\", \"\", 3, \"rows\", \"todayValue\", \"startValue\", \"endValue\", \"numCols\", \"cellAspectRatio\", \"activeCell\", \"selectedValueChange\", \"keydown\"]], template: function NgxMatMultiYearView_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"table\", 0)(1, \"thead\", 1)(2, \"tr\");\n ɵngcc0.ɵɵelement(3, \"th\", 2);\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵelementStart(4, \"tbody\", 3);\n ɵngcc0.ɵɵlistener(\"selectedValueChange\", function NgxMatMultiYearView_Template_tbody_selectedValueChange_4_listener($event) { return ctx._yearSelected($event); })(\"keydown\", function NgxMatMultiYearView_Template_tbody_keydown_4_listener($event) { return ctx._handleCalendarBodyKeydown($event); });\n ɵngcc0.ɵɵelementEnd()();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(4);\n ɵngcc0.ɵɵproperty(\"rows\", ctx._years)(\"todayValue\", ctx._todayYear)(\"startValue\", ctx._selectedYear)(\"endValue\", ctx._selectedYear)(\"numCols\", 4)(\"cellAspectRatio\", 4 / 7)(\"activeCell\", ctx._getActiveCell());\n } }, dependencies: [NgxMatCalendarBody], encapsulation: 2, changeDetection: 0 });\r\n/** @nocollapse */\r\nNgxMatMultiYearView.ctorParameters = () => [\r\n { type: ChangeDetectorRef },\r\n { type: NgxMatDateAdapter, decorators: [{ type: Optional }] },\r\n { type: Directionality, decorators: [{ type: Optional }] }\r\n];\r\nNgxMatMultiYearView.propDecorators = {\r\n activeDate: [{ type: Input }],\r\n selected: [{ type: Input }],\r\n minDate: [{ type: Input }],\r\n maxDate: [{ type: Input }],\r\n dateFilter: [{ type: Input }],\r\n selectedChange: [{ type: Output }],\r\n yearSelected: [{ type: Output }],\r\n activeDateChange: [{ type: Output }],\r\n _matCalendarBody: [{ type: ViewChild, args: [NgxMatCalendarBody,] }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxMatMultiYearView, [{\n type: Component,\n args: [{\n selector: 'ngx-mat-multi-year-view',\n template: \"\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n\",\n exportAs: 'ngxMatMultiYearView',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return [{ type: ɵngcc0.ChangeDetectorRef }, { type: NgxMatDateAdapter, decorators: [{\n type: Optional\n }] }, { type: ɵngcc2.Directionality, decorators: [{\n type: Optional\n }] }]; }, { selectedChange: [{\n type: Output\n }], yearSelected: [{\n type: Output\n }], activeDateChange: [{\n type: Output\n }], activeDate: [{\n type: Input\n }], selected: [{\n type: Input\n }], minDate: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], dateFilter: [{\n type: Input\n }], _matCalendarBody: [{\n type: ViewChild,\n args: [NgxMatCalendarBody]\n }] }); })();\r\nfunction isSameMultiYearView(dateAdapter, date1, date2, minDate, maxDate) {\r\n const year1 = dateAdapter.getYear(date1);\r\n const year2 = dateAdapter.getYear(date2);\r\n const startingYear = getStartingYear(dateAdapter, minDate, maxDate);\r\n return Math.floor((year1 - startingYear) / yearsPerPage) ===\r\n Math.floor((year2 - startingYear) / yearsPerPage);\r\n}\r\n/**\r\n * When the multi-year view is first opened, the active year will be in view.\r\n * So we compute how many years are between the active year and the *slot* where our\r\n * \"startingYear\" will render when paged into view.\r\n */\r\nfunction getActiveOffset(dateAdapter, activeDate, minDate, maxDate) {\r\n const activeYear = dateAdapter.getYear(activeDate);\r\n return euclideanModulo((activeYear - getStartingYear(dateAdapter, minDate, maxDate)), yearsPerPage);\r\n}\r\n/**\r\n * We pick a \"starting\" year such that either the maximum year would be at the end\r\n * or the minimum year would be at the beginning of a page.\r\n */\r\nfunction getStartingYear(dateAdapter, minDate, maxDate) {\r\n let startingYear = 0;\r\n if (maxDate) {\r\n const maxYear = dateAdapter.getYear(maxDate);\r\n startingYear = maxYear - yearsPerPage + 1;\r\n }\r\n else if (minDate) {\r\n startingYear = dateAdapter.getYear(minDate);\r\n }\r\n return startingYear;\r\n}\r\n/** Gets remainder that is non-negative, even if first number is negative */\r\nfunction euclideanModulo(a, b) {\r\n return (a % b + b) % b;\r\n}\n\n/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\r\n/**\r\n * An internal component used to display a single year in the datepicker.\r\n * @docs-private\r\n */\r\nclass NgxMatYearView {\r\n constructor(_changeDetectorRef, _dateFormats, _dateAdapter, _dir) {\r\n this._changeDetectorRef = _changeDetectorRef;\r\n this._dateFormats = _dateFormats;\r\n this._dateAdapter = _dateAdapter;\r\n this._dir = _dir;\r\n this._rerenderSubscription = Subscription.EMPTY;\r\n /** Emits when a new month is selected. */\r\n this.selectedChange = new EventEmitter();\r\n /** Emits the selected month. This doesn't imply a change on the selected date */\r\n this.monthSelected = new EventEmitter();\r\n /** Emits when any date is activated. */\r\n this.activeDateChange = new EventEmitter();\r\n if (!this._dateAdapter) {\r\n throw createMissingDateImplError('NgxMatDateAdapter');\r\n }\r\n if (!this._dateFormats) {\r\n throw createMissingDateImplError('NGX_MAT_DATE_FORMATS');\r\n }\r\n this._activeDate = this._dateAdapter.today();\r\n }\r\n /** The date to display in this year view (everything other than the year is ignored). */\r\n get activeDate() { return this._activeDate; }\r\n set activeDate(value) {\r\n let oldActiveDate = this._activeDate;\r\n const validDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value)) || this._dateAdapter.today();\r\n this._activeDate = this._dateAdapter.clampDate(validDate, this.minDate, this.maxDate);\r\n if (this._dateAdapter.getYear(oldActiveDate) !== this._dateAdapter.getYear(this._activeDate)) {\r\n this._init();\r\n }\r\n }\r\n /** The currently selected date. */\r\n get selected() { return this._selected; }\r\n set selected(value) {\r\n if (value instanceof DateRange) {\r\n this._selected = value;\r\n }\r\n else {\r\n this._selected = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\r\n }\r\n this._setSelectedMonth(value);\r\n }\r\n /** The minimum selectable date. */\r\n get minDate() { return this._minDate; }\r\n set minDate(value) {\r\n this._minDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\r\n }\r\n /** The maximum selectable date. */\r\n get maxDate() { return this._maxDate; }\r\n set maxDate(value) {\r\n this._maxDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\r\n }\r\n ngAfterContentInit() {\r\n this._rerenderSubscription = this._dateAdapter.localeChanges\r\n .pipe(startWith(null))\r\n .subscribe(() => this._init());\r\n }\r\n ngOnDestroy() {\r\n this._rerenderSubscription.unsubscribe();\r\n }\r\n /** Handles when a new month is selected. */\r\n _monthSelected(event) {\r\n const month = event.value;\r\n const normalizedDate = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), month, 1);\r\n this.monthSelected.emit(normalizedDate);\r\n const daysInMonth = this._dateAdapter.getNumDaysInMonth(normalizedDate);\r\n this.selectedChange.emit(this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), month, Math.min(this._dateAdapter.getDate(this.activeDate), daysInMonth)));\r\n }\r\n /** Handles keydown events on the calendar body when calendar is in year view. */\r\n _handleCalendarBodyKeydown(event) {\r\n // TODO(mmalerba): We currently allow keyboard navigation to disabled dates, but just prevent\r\n // disabled ones from being selected. This may not be ideal, we should look into whether\r\n // navigation should skip over disabled dates, and if so, how to implement that efficiently.\r\n const oldActiveDate = this._activeDate;\r\n const isRtl = this._isRtl();\r\n switch (event.keyCode) {\r\n case LEFT_ARROW:\r\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, isRtl ? 1 : -1);\r\n break;\r\n case RIGHT_ARROW:\r\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, isRtl ? -1 : 1);\r\n break;\r\n case UP_ARROW:\r\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, -4);\r\n break;\r\n case DOWN_ARROW:\r\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, 4);\r\n break;\r\n case HOME:\r\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, -this._dateAdapter.getMonth(this._activeDate));\r\n break;\r\n case END:\r\n this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, 11 - this._dateAdapter.getMonth(this._activeDate));\r\n break;\r\n case PAGE_UP:\r\n this.activeDate =\r\n this._dateAdapter.addCalendarYears(this._activeDate, event.altKey ? -10 : -1);\r\n break;\r\n case PAGE_DOWN:\r\n this.activeDate =\r\n this._dateAdapter.addCalendarYears(this._activeDate, event.altKey ? 10 : 1);\r\n break;\r\n case ENTER:\r\n case SPACE:\r\n this._monthSelected({ value: this._dateAdapter.getMonth(this._activeDate), event });\r\n break;\r\n default:\r\n // Don't prevent default or focus active cell on keys that we don't explicitly handle.\r\n return;\r\n }\r\n if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) {\r\n this.activeDateChange.emit(this.activeDate);\r\n }\r\n this._focusActiveCell();\r\n // Prevent unexpected default actions such as form submission.\r\n event.preventDefault();\r\n }\r\n /** Initializes this year view. */\r\n _init() {\r\n this._setSelectedMonth(this.selected);\r\n this._todayMonth = this._getMonthInCurrentYear(this._dateAdapter.today());\r\n this._yearLabel = this._dateAdapter.getYearName(this.activeDate);\r\n let monthNames = this._dateAdapter.getMonthNames('short');\r\n // First row of months only contains 5 elements so we can fit the year label on the same row.\r\n this._months = [[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11]].map(row => row.map(month => this._createCellForMonth(month, monthNames[month])));\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n /** Focuses the active cell after the microtask queue is empty. */\r\n _focusActiveCell() {\r\n this._matCalendarBody._focusActiveCell();\r\n }\r\n /**\r\n * Gets the month in this year that the given Date falls on.\r\n * Returns null if the given Date is in another year.\r\n */\r\n _getMonthInCurrentYear(date) {\r\n return date && this._dateAdapter.getYear(date) == this._dateAdapter.getYear(this.activeDate) ?\r\n this._dateAdapter.getMonth(date) : null;\r\n }\r\n /** Creates an MatCalendarCell for the given month. */\r\n _createCellForMonth(month, monthName) {\r\n let ariaLabel = this._dateAdapter.format(this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), month, 1), this._dateFormats.display.monthYearA11yLabel);\r\n return new NgxMatCalendarCell(month, monthName.toLocaleUpperCase(), ariaLabel, this._shouldEnableMonth(month));\r\n }\r\n /** Whether the given month is enabled. */\r\n _shouldEnableMonth(month) {\r\n const activeYear = this._dateAdapter.getYear(this.activeDate);\r\n if (month === undefined || month === null ||\r\n this._isYearAndMonthAfterMaxDate(activeYear, month) ||\r\n this._isYearAndMonthBeforeMinDate(activeYear, month)) {\r\n return false;\r\n }\r\n if (!this.dateFilter) {\r\n return true;\r\n }\r\n const firstOfMonth = this._dateAdapter.createDate(activeYear, month, 1);\r\n // If any date in the month is enabled count the month as enabled.\r\n for (let date = firstOfMonth; this._dateAdapter.getMonth(date) == month; date = this._dateAdapter.addCalendarDays(date, 1)) {\r\n if (this.dateFilter(date)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n /**\r\n * Tests whether the combination month/year is after this.maxDate, considering\r\n * just the month and year of this.maxDate\r\n */\r\n _isYearAndMonthAfterMaxDate(year, month) {\r\n if (this.maxDate) {\r\n const maxYear = this._dateAdapter.getYear(this.maxDate);\r\n const maxMonth = this._dateAdapter.getMonth(this.maxDate);\r\n return year > maxYear || (year === maxYear && month > maxMonth);\r\n }\r\n return false;\r\n }\r\n /**\r\n * Tests whether the combination month/year is before this.minDate, considering\r\n * just the month and year of this.minDate\r\n */\r\n _isYearAndMonthBeforeMinDate(year, month) {\r\n if (this.minDate) {\r\n const minYear = this._dateAdapter.getYear(this.minDate);\r\n const minMonth = this._dateAdapter.getMonth(this.minDate);\r\n return year < minYear || (year === minYear && month < minMonth);\r\n }\r\n return false;\r\n }\r\n /**\r\n * @param obj The object to check.\r\n * @returns The given object if it is both a date instance and valid, otherwise null.\r\n */\r\n _getValidDateOrNull(obj) {\r\n return (this._dateAdapter.isDateInstance(obj) && this._dateAdapter.isValid(obj)) ? obj : null;\r\n }\r\n /** Determines whether the user has the RTL layout direction. */\r\n _isRtl() {\r\n return this._dir && this._dir.value === 'rtl';\r\n }\r\n /** Sets the currently-selected month based on a model value. */\r\n _setSelectedMonth(value) {\r\n if (value instanceof DateRange) {\r\n this._selectedMonth = this._getMonthInCurrentYear(value.start) ||\r\n this._getMonthInCurrentYear(value.end);\r\n }\r\n else {\r\n this._selectedMonth = this._getMonthInCurrentYear(value);\r\n }\r\n }\r\n}\nNgxMatYearView.ɵfac = function NgxMatYearView_Factory(t) { return new (t || NgxMatYearView)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(NGX_MAT_DATE_FORMATS, 8), ɵngcc0.ɵɵdirectiveInject(NgxMatDateAdapter, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.Directionality, 8)); };\nNgxMatYearView.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgxMatYearView, selectors: [[\"ngx-mat-year-view\"]], viewQuery: function NgxMatYearView_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(NgxMatCalendarBody, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._matCalendarBody = _t.first);\n } }, inputs: { activeDate: \"activeDate\", selected: \"selected\", minDate: \"minDate\", maxDate: \"maxDate\", dateFilter: \"dateFilter\" }, outputs: { selectedChange: \"selectedChange\", monthSelected: \"monthSelected\", activeDateChange: \"activeDateChange\" }, exportAs: [\"ngxMatYearView\"], decls: 5, vars: 9, consts: [[\"role\", \"presentation\", 1, \"mat-calendar-table\"], [1, \"mat-calendar-table-header\"], [\"colspan\", \"4\", 1, \"mat-calendar-table-header-divider\"], [\"ngx-mat-calendar-body\", \"\", 3, \"label\", \"rows\", \"todayValue\", \"startValue\", \"endValue\", \"labelMinRequiredCells\", \"numCols\", \"cellAspectRatio\", \"activeCell\", \"selectedValueChange\", \"keydown\"]], template: function NgxMatYearView_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"table\", 0)(1, \"thead\", 1)(2, \"tr\");\n ɵngcc0.ɵɵelement(3, \"th\", 2);\n ɵngcc0.ɵɵelementEnd()();\n ɵngcc0.ɵɵelementStart(4, \"tbody\", 3);\n ɵngcc0.ɵɵlistener(\"selectedValueChange\", function NgxMatYearView_Template_tbody_selectedValueChange_4_listener($event) { return ctx._monthSelected($event); })(\"keydown\", function NgxMatYearView_Template_tbody_keydown_4_listener($event) { return ctx._handleCalendarBodyKeydown($event); });\n ɵngcc0.ɵɵelementEnd()();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(4);\n ɵngcc0.ɵɵproperty(\"label\", ctx._yearLabel)(\"rows\", ctx._months)(\"todayValue\", ctx._todayMonth)(\"startValue\", ctx._selectedMonth)(\"endValue\", ctx._selectedMonth)(\"labelMinRequiredCells\", 2)(\"numCols\", 4)(\"cellAspectRatio\", 4 / 7)(\"activeCell\", ctx._dateAdapter.getMonth(ctx.activeDate));\n } }, dependencies: [NgxMatCalendarBody], encapsulation: 2, changeDetection: 0 });\r\n/** @nocollapse */\r\nNgxMatYearView.ctorParameters = () => [\r\n { type: ChangeDetectorRef },\r\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [NGX_MAT_DATE_FORMATS,] }] },\r\n { type: NgxMatDateAdapter, decorators: [{ type: Optional }] },\r\n { type: Directionality, decorators: [{ type: Optional }] }\r\n];\r\nNgxMatYearView.propDecorators = {\r\n activeDate: [{ type: Input }],\r\n selected: [{ type: Input }],\r\n minDate: [{ type: Input }],\r\n maxDate: [{ type: Input }],\r\n dateFilter: [{ type: Input }],\r\n selectedChange: [{ type: Output }],\r\n monthSelected: [{ type: Output }],\r\n activeDateChange: [{ type: Output }],\r\n _matCalendarBody: [{ type: ViewChild, args: [NgxMatCalendarBody,] }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxMatYearView, [{\n type: Component,\n args: [{\n selector: 'ngx-mat-year-view',\n template: \"\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n\",\n exportAs: 'ngxMatYearView',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return [{ type: ɵngcc0.ChangeDetectorRef }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [NGX_MAT_DATE_FORMATS]\n }] }, { type: NgxMatDateAdapter, decorators: [{\n type: Optional\n }] }, { type: ɵngcc2.Directionality, decorators: [{\n type: Optional\n }] }]; }, { selectedChange: [{\n type: Output\n }], monthSelected: [{\n type: Output\n }], activeDateChange: [{\n type: Output\n }], activeDate: [{\n type: Input\n }], selected: [{\n type: Input\n }], minDate: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], dateFilter: [{\n type: Input\n }], _matCalendarBody: [{\n type: ViewChild,\n args: [NgxMatCalendarBody]\n }] }); })();\n\n/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\r\n/** Default header for NgxMatCalendar */\r\nclass NgxMatCalendarHeader {\r\n constructor(_intl, calendar, _dateAdapter, _dateFormats, changeDetectorRef) {\r\n this._intl = _intl;\r\n this.calendar = calendar;\r\n this._dateAdapter = _dateAdapter;\r\n this._dateFormats = _dateFormats;\r\n this.calendar.stateChanges.subscribe(() => changeDetectorRef.markForCheck());\r\n }\r\n /** The label for the current calendar view. */\r\n get periodButtonText() {\r\n if (this.calendar.currentView == 'month') {\r\n return this._dateAdapter\r\n .format(this.calendar.activeDate, this._dateFormats.display.monthYearLabel)\r\n .toLocaleUpperCase();\r\n }\r\n if (this.calendar.currentView == 'year') {\r\n return this._dateAdapter.getYearName(this.calendar.activeDate);\r\n }\r\n // The offset from the active year to the \"slot\" for the starting year is the\r\n // *actual* first rendered year in the multi-year view, and the last year is\r\n // just yearsPerPage - 1 away.\r\n const activeYear = this._dateAdapter.getYear(this.calendar.activeDate);\r\n const minYearOfPage = activeYear - getActiveOffset(this._dateAdapter, this.calendar.activeDate, this.calendar.minDate, this.calendar.maxDate);\r\n const maxYearOfPage = minYearOfPage + yearsPerPage - 1;\r\n const minYearName = this._dateAdapter.getYearName(this._dateAdapter.createDate(minYearOfPage, 0, 1));\r\n const maxYearName = this._dateAdapter.getYearName(this._dateAdapter.createDate(maxYearOfPage, 0, 1));\r\n return formatYearRange(minYearName, maxYearName);\r\n }\r\n get periodButtonLabel() {\r\n return this.calendar.currentView == 'month' ?\r\n this._intl.switchToMultiYearViewLabel : this._intl.switchToMonthViewLabel;\r\n }\r\n /** The label for the previous button. */\r\n get prevButtonLabel() {\r\n return {\r\n 'month': this._intl.prevMonthLabel,\r\n 'year': this._intl.prevYearLabel,\r\n 'multi-year': this._intl.prevMultiYearLabel\r\n }[this.calendar.currentView];\r\n }\r\n /** The label for the next button. */\r\n get nextButtonLabel() {\r\n return {\r\n 'month': this._intl.nextMonthLabel,\r\n 'year': this._intl.nextYearLabel,\r\n 'multi-year': this._intl.nextMultiYearLabel\r\n }[this.calendar.currentView];\r\n }\r\n /** Handles user clicks on the period label. */\r\n currentPeriodClicked() {\r\n this.calendar.currentView = this.calendar.currentView == 'month' ? 'multi-year' : 'month';\r\n }\r\n /** Handles user clicks on the previous button. */\r\n previousClicked() {\r\n this.calendar.activeDate = this.calendar.currentView == 'month' ?\r\n this._dateAdapter.addCalendarMonths(this.calendar.activeDate, -1) :\r\n this._dateAdapter.addCalendarYears(this.calendar.activeDate, this.calendar.currentView == 'year' ? -1 : -yearsPerPage);\r\n }\r\n /** Handles user clicks on the next button. */\r\n nextClicked() {\r\n this.calendar.activeDate = this.calendar.currentView == 'month' ?\r\n this._dateAdapter.addCalendarMonths(this.calendar.activeDate, 1) :\r\n this._dateAdapter.addCalendarYears(this.calendar.activeDate, this.calendar.currentView == 'year' ? 1 : yearsPerPage);\r\n }\r\n /** Whether the previous period button is enabled. */\r\n previousEnabled() {\r\n if (!this.calendar.minDate) {\r\n return true;\r\n }\r\n return !this.calendar.minDate ||\r\n !this._isSameView(this.calendar.activeDate, this.calendar.minDate);\r\n }\r\n /** Whether the next period button is enabled. */\r\n nextEnabled() {\r\n return !this.calendar.maxDate ||\r\n !this._isSameView(this.calendar.activeDate, this.calendar.maxDate);\r\n }\r\n /** Whether the two dates represent the same view in the current view mode (month or year). */\r\n _isSameView(date1, date2) {\r\n if (this.calendar.currentView == 'month') {\r\n return this._dateAdapter.getYear(date1) == this._dateAdapter.getYear(date2) &&\r\n this._dateAdapter.getMonth(date1) == this._dateAdapter.getMonth(date2);\r\n }\r\n if (this.calendar.currentView == 'year') {\r\n return this._dateAdapter.getYear(date1) == this._dateAdapter.getYear(date2);\r\n }\r\n // Otherwise we are in 'multi-year' view.\r\n return isSameMultiYearView(this._dateAdapter, date1, date2, this.calendar.minDate, this.calendar.maxDate);\r\n }\r\n}\nNgxMatCalendarHeader.ɵfac = function NgxMatCalendarHeader_Factory(t) { return new (t || NgxMatCalendarHeader)(ɵngcc0.ɵɵdirectiveInject(ɵngcc3.MatDatepickerIntl), ɵngcc0.ɵɵdirectiveInject(forwardRef(() => NgxMatCalendar)), ɵngcc0.ɵɵdirectiveInject(NgxMatDateAdapter, 8), ɵngcc0.ɵɵdirectiveInject(NGX_MAT_DATE_FORMATS, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nNgxMatCalendarHeader.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgxMatCalendarHeader, selectors: [[\"ngx-mat-calendar-header\"]], exportAs: [\"ngxMatCalendarHeader\"], ngContentSelectors: _c1, decls: 9, vars: 8, consts: [[1, \"mat-calendar-header\"], [1, \"mat-calendar-controls\"], [\"mat-button\", \"\", \"type\", \"button\", \"cdkAriaLive\", \"polite\", 1, \"mat-calendar-period-button\", 3, \"click\"], [1, \"mat-calendar-arrow\"], [1, \"mat-calendar-spacer\"], [\"mat-icon-button\", \"\", \"type\", \"button\", 1, \"mat-calendar-previous-button\", 3, \"disabled\", \"click\"], [\"mat-icon-button\", \"\", \"type\", \"button\", 1, \"mat-calendar-next-button\", 3, \"disabled\", \"click\"]], template: function NgxMatCalendarHeader_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵprojectionDef();\n ɵngcc0.ɵɵelementStart(0, \"div\", 0)(1, \"div\", 1)(2, \"button\", 2);\n ɵngcc0.ɵɵlistener(\"click\", function NgxMatCalendarHeader_Template_button_click_2_listener() { return ctx.currentPeriodClicked(); });\n ɵngcc0.ɵɵtext(3);\n ɵngcc0.ɵɵelement(4, \"div\", 3);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelement(5, \"div\", 4);\n ɵngcc0.ɵɵprojection(6);\n ɵngcc0.ɵɵelementStart(7, \"button\", 5);\n ɵngcc0.ɵɵlistener(\"click\", function NgxMatCalendarHeader_Template_button_click_7_listener() { return ctx.previousClicked(); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(8, \"button\", 6);\n ɵngcc0.ɵɵlistener(\"click\", function NgxMatCalendarHeader_Template_button_click_8_listener() { return ctx.nextClicked(); });\n ɵngcc0.ɵɵelementEnd()()();\n } if (rf & 2) {\n ɵngcc0.ɵɵadvance(2);\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx.periodButtonLabel);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵtextInterpolate1(\" \", ctx.periodButtonText, \" \");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵclassProp(\"mat-calendar-invert\", ctx.calendar.currentView != \"month\");\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"disabled\", !ctx.previousEnabled());\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx.prevButtonLabel);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"disabled\", !ctx.nextEnabled());\n ɵngcc0.ɵɵattribute(\"aria-label\", ctx.nextButtonLabel);\n } }, dependencies: [ɵngcc4.MatButton], encapsulation: 2, changeDetection: 0 });\r\n/** @nocollapse */\r\nNgxMatCalendarHeader.ctorParameters = () => [\r\n { type: MatDatepickerIntl },\r\n { type: NgxMatCalendar, decorators: [{ type: Inject, args: [forwardRef(() => NgxMatCalendar),] }] },\r\n { type: NgxMatDateAdapter, decorators: [{ type: Optional }] },\r\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [NGX_MAT_DATE_FORMATS,] }] },\r\n { type: ChangeDetectorRef }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxMatCalendarHeader, [{\n type: Component,\n args: [{\n selector: 'ngx-mat-calendar-header',\n template: \"
\\r\\n
\\r\\n \\r\\n\\r\\n
\\r\\n\\r\\n \\r\\n\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n\",\n exportAs: 'ngxMatCalendarHeader',\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n }]\n }], function () { return [{ type: ɵngcc3.MatDatepickerIntl }, { type: NgxMatCalendar, decorators: [{\n type: Inject,\n args: [forwardRef(() => NgxMatCalendar)]\n }] }, { type: NgxMatDateAdapter, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [NGX_MAT_DATE_FORMATS]\n }] }, { type: ɵngcc0.ChangeDetectorRef }]; }, null); })();\r\n/**\r\n * A calendar that is used as part of the datepicker.\r\n * @docs-private\r\n */\r\nclass NgxMatCalendar {\r\n constructor(_intl, _dateAdapter, _dateFormats, _changeDetectorRef) {\r\n this._dateAdapter = _dateAdapter;\r\n this._dateFormats = _dateFormats;\r\n this._changeDetectorRef = _changeDetectorRef;\r\n /**\r\n * Used for scheduling that focus should be moved to the active cell on the next tick.\r\n * We need to schedule it, rather than do it immediately, because we have to wait\r\n * for Angular to re-evaluate the view children.\r\n */\r\n this._moveFocusOnNextTick = false;\r\n /** Whether the calendar should be started in month or year view. */\r\n this.startView = 'month';\r\n /** Emits when the currently selected date changes. */\r\n this.selectedChange = new EventEmitter();\r\n /**\r\n * Emits the year chosen in multiyear view.\r\n * This doesn't imply a change on the selected date.\r\n */\r\n this.yearSelected = new EventEmitter();\r\n /**\r\n * Emits the month chosen in year view.\r\n * This doesn't imply a change on the selected date.\r\n */\r\n this.monthSelected = new EventEmitter();\r\n /** Emits when any date is selected. */\r\n this._userSelection = new EventEmitter();\r\n /**\r\n * Emits whenever there is a state change that the header may need to respond to.\r\n */\r\n this.stateChanges = new Subject();\r\n if (!this._dateAdapter) {\r\n throw createMissingDateImplError('NgxDateAdapter');\r\n }\r\n if (!this._dateFormats) {\r\n throw createMissingDateImplError('NGX_MAT_DATE_FORMATS');\r\n }\r\n this._intlChanges = _intl.changes.subscribe(() => {\r\n _changeDetectorRef.markForCheck();\r\n this.stateChanges.next();\r\n });\r\n }\r\n /** A date representing the period (month or year) to start the calendar in. */\r\n get startAt() { return this._startAt; }\r\n set startAt(value) {\r\n this._startAt = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\r\n }\r\n /** The currently selected date. */\r\n get selected() { return this._selected; }\r\n set selected(value) {\r\n this._selected = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\r\n }\r\n /** The minimum selectable date. */\r\n get minDate() { return this._minDate; }\r\n set minDate(value) {\r\n this._minDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\r\n }\r\n /** The maximum selectable date. */\r\n get maxDate() { return this._maxDate; }\r\n set maxDate(value) {\r\n this._maxDate = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\r\n }\r\n /**\r\n * The current active date. This determines which time period is shown and which date is\r\n * highlighted when using keyboard navigation.\r\n */\r\n get activeDate() { return this._clampedActiveDate; }\r\n set activeDate(value) {\r\n this._clampedActiveDate = this._dateAdapter.clampDate(value, this.minDate, this.maxDate);\r\n this.stateChanges.next();\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n /** Whether the calendar is in month view. */\r\n get currentView() { return this._currentView; }\r\n set currentView(value) {\r\n this._currentView = value;\r\n this._moveFocusOnNextTick = true;\r\n this._changeDetectorRef.markForCheck();\r\n }\r\n ngAfterContentInit() {\r\n this._calendarHeaderPortal = new ComponentPortal(this.headerComponent || NgxMatCalendarHeader);\r\n this.activeDate = this.startAt || this._dateAdapter.today();\r\n // Assign to the private property since we don't want to move focus on init.\r\n this._currentView = this.startView;\r\n }\r\n ngAfterViewChecked() {\r\n if (this._moveFocusOnNextTick) {\r\n this._moveFocusOnNextTick = false;\r\n this.focusActiveCell();\r\n }\r\n }\r\n ngOnDestroy() {\r\n this._intlChanges.unsubscribe();\r\n this.stateChanges.complete();\r\n }\r\n ngOnChanges(changes) {\r\n const change = changes['minDate'] || changes['maxDate'] || changes['dateFilter'];\r\n if (change && !change.firstChange) {\r\n const view = this._getCurrentViewComponent();\r\n if (view) {\r\n // We need to `detectChanges` manually here, because the `minDate`, `maxDate` etc. are\r\n // passed down to the view via data bindings which won't be up-to-date when we call `_init`.\r\n this._changeDetectorRef.detectChanges();\r\n view._init();\r\n }\r\n }\r\n this.stateChanges.next();\r\n }\r\n focusActiveCell() {\r\n this._getCurrentViewComponent()._focusActiveCell();\r\n }\r\n /** Updates today's date after an update of the active date */\r\n updateTodaysDate() {\r\n let view = this.currentView == 'month' ? this.monthView :\r\n (this.currentView == 'year' ? this.yearView : this.multiYearView);\r\n view.ngAfterContentInit();\r\n }\r\n /** Handles date selection in the month view. */\r\n _dateSelected(date) {\r\n if (date && !this._dateAdapter.sameDate(date, this.selected)) {\r\n this.selectedChange.emit(date);\r\n }\r\n }\r\n /** Handles year selection in the multiyear view. */\r\n _yearSelectedInMultiYearView(normalizedYear) {\r\n this.yearSelected.emit(normalizedYear);\r\n }\r\n /** Handles month selection in the year view. */\r\n _monthSelectedInYearView(normalizedMonth) {\r\n this.monthSelected.emit(normalizedMonth);\r\n }\r\n _userSelected() {\r\n this._userSelection.emit();\r\n }\r\n /** Handles year/month selection in the multi-year/year views. */\r\n _goToDateInView(date, view) {\r\n this.activeDate = date;\r\n this.currentView = view;\r\n }\r\n /**\r\n * @param obj The object to check.\r\n * @returns The given object if it is both a date instance and valid, otherwise null.\r\n */\r\n _getValidDateOrNull(obj) {\r\n return (this._dateAdapter.isDateInstance(obj) && this._dateAdapter.isValid(obj)) ? obj : null;\r\n }\r\n /** Returns the component instance that corresponds to the current calendar view. */\r\n _getCurrentViewComponent() {\r\n return this.monthView || this.yearView || this.multiYearView;\r\n }\r\n}\nNgxMatCalendar.ɵfac = function NgxMatCalendar_Factory(t) { return new (t || NgxMatCalendar)(ɵngcc0.ɵɵdirectiveInject(ɵngcc3.MatDatepickerIntl), ɵngcc0.ɵɵdirectiveInject(NgxMatDateAdapter, 8), ɵngcc0.ɵɵdirectiveInject(NGX_MAT_DATE_FORMATS, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef)); };\nNgxMatCalendar.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgxMatCalendar, selectors: [[\"ngx-mat-calendar\"]], viewQuery: function NgxMatCalendar_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(NgxMatMonthView, 5);\n ɵngcc0.ɵɵviewQuery(NgxMatYearView, 5);\n ɵngcc0.ɵɵviewQuery(NgxMatMultiYearView, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.monthView = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.yearView = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx.multiYearView = _t.first);\n } }, hostAttrs: [1, \"mat-calendar\"], inputs: { startView: \"startView\", startAt: \"startAt\", selected: \"selected\", minDate: \"minDate\", maxDate: \"maxDate\", headerComponent: \"headerComponent\", dateFilter: \"dateFilter\", dateClass: \"dateClass\" }, outputs: { selectedChange: \"selectedChange\", yearSelected: \"yearSelected\", monthSelected: \"monthSelected\", _userSelection: \"_userSelection\" }, exportAs: [\"ngxMatCalendar\"], features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 5, vars: 5, consts: [[3, \"cdkPortalOutlet\"], [\"cdkMonitorSubtreeFocus\", \"\", \"tabindex\", \"-1\", 1, \"mat-calendar-content\", 3, \"ngSwitch\"], [3, \"activeDate\", \"selected\", \"dateFilter\", \"maxDate\", \"minDate\", \"dateClass\", \"activeDateChange\", \"selectedChange\", \"_userSelection\", 4, \"ngSwitchCase\"], [3, \"activeDate\", \"selected\", \"dateFilter\", \"maxDate\", \"minDate\", \"activeDateChange\", \"monthSelected\", \"selectedChange\", 4, \"ngSwitchCase\"], [3, \"activeDate\", \"selected\", \"dateFilter\", \"maxDate\", \"minDate\", \"activeDateChange\", \"yearSelected\", \"selectedChange\", 4, \"ngSwitchCase\"], [3, \"activeDate\", \"selected\", \"dateFilter\", \"maxDate\", \"minDate\", \"dateClass\", \"activeDateChange\", \"selectedChange\", \"_userSelection\"], [3, \"activeDate\", \"selected\", \"dateFilter\", \"maxDate\", \"minDate\", \"activeDateChange\", \"monthSelected\", \"selectedChange\"], [3, \"activeDate\", \"selected\", \"dateFilter\", \"maxDate\", \"minDate\", \"activeDateChange\", \"yearSelected\", \"selectedChange\"]], template: function NgxMatCalendar_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵtemplate(0, NgxMatCalendar_ng_template_0_Template, 0, 0, \"ng-template\", 0);\n ɵngcc0.ɵɵelementStart(1, \"div\", 1);\n ɵngcc0.ɵɵtemplate(2, NgxMatCalendar_ngx_mat_month_view_2_Template, 1, 6, \"ngx-mat-month-view\", 2);\n ɵngcc0.ɵɵtemplate(3, NgxMatCalendar_ngx_mat_year_view_3_Template, 1, 5, \"ngx-mat-year-view\", 3);\n ɵngcc0.ɵɵtemplate(4, NgxMatCalendar_ngx_mat_multi_year_view_4_Template, 1, 5, \"ngx-mat-multi-year-view\", 4);\n ɵngcc0.ɵɵelementEnd();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"cdkPortalOutlet\", ctx._calendarHeaderPortal);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitch\", ctx.currentView);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", \"month\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", \"year\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngSwitchCase\", \"multi-year\");\n } }, dependencies: [ɵngcc1.NgSwitch, ɵngcc1.NgSwitchCase, ɵngcc5.CdkPortalOutlet, NgxMatMonthView, NgxMatYearView, NgxMatMultiYearView], styles: [\".mat-calendar{display:block}.mat-calendar-header{padding:8px 8px 0}.mat-calendar-content{padding:0 8px 8px;outline:none}.mat-calendar-controls{display:flex;margin:5% calc(33% / 7 - 16px)}.mat-calendar-spacer{flex:1 1 auto}.mat-calendar-period-button{min-width:0}.mat-calendar-arrow{display:inline-block;width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top-width:5px;border-top-style:solid;margin:0 0 0 5px;vertical-align:middle}.mat-calendar-arrow.mat-calendar-invert{transform:rotate(180deg)}[dir=rtl] .mat-calendar-arrow{margin:0 5px 0 0}.mat-calendar-next-button,.mat-calendar-previous-button{position:relative}.mat-calendar-next-button:after,.mat-calendar-previous-button:after{top:0;left:0;right:0;bottom:0;position:absolute;content:\\\"\\\";margin:15.5px;border:solid;border-width:2px 0 0}[dir=rtl] .mat-calendar-next-button,[dir=rtl] .mat-calendar-previous-button{transform:rotate(180deg)}.mat-calendar-previous-button:after{border-left-width:2px;transform:translateX(2px) rotate(-45deg)}.mat-calendar-next-button:after{border-right-width:2px;transform:translateX(-2px) rotate(45deg)}.mat-calendar-table{border-spacing:0;border-collapse:collapse;width:100%}.mat-calendar-table-header th{text-align:center;padding:0 0 8px}.mat-calendar-table-header-divider{position:relative;height:1px}.mat-calendar-table-header-divider:after{content:\\\"\\\";position:absolute;top:0;left:-8px;right:-8px;height:1px}\"], encapsulation: 2, changeDetection: 0 });\r\n/** @nocollapse */\r\nNgxMatCalendar.ctorParameters = () => [\r\n { type: MatDatepickerIntl },\r\n { type: NgxMatDateAdapter, decorators: [{ type: Optional }] },\r\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [NGX_MAT_DATE_FORMATS,] }] },\r\n { type: ChangeDetectorRef }\r\n];\r\nNgxMatCalendar.propDecorators = {\r\n headerComponent: [{ type: Input }],\r\n startAt: [{ type: Input }],\r\n startView: [{ type: Input }],\r\n selected: [{ type: Input }],\r\n minDate: [{ type: Input }],\r\n maxDate: [{ type: Input }],\r\n dateFilter: [{ type: Input }],\r\n dateClass: [{ type: Input }],\r\n selectedChange: [{ type: Output }],\r\n yearSelected: [{ type: Output }],\r\n monthSelected: [{ type: Output }],\r\n _userSelection: [{ type: Output }],\r\n monthView: [{ type: ViewChild, args: [NgxMatMonthView,] }],\r\n yearView: [{ type: ViewChild, args: [NgxMatYearView,] }],\r\n multiYearView: [{ type: ViewChild, args: [NgxMatMultiYearView,] }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxMatCalendar, [{\n type: Component,\n args: [{ selector: 'ngx-mat-calendar', template: \"\\r\\n\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n
\\r\\n\", host: {\n 'class': 'mat-calendar'\n }, exportAs: 'ngxMatCalendar', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, styles: [\".mat-calendar{display:block}.mat-calendar-header{padding:8px 8px 0}.mat-calendar-content{padding:0 8px 8px;outline:none}.mat-calendar-controls{display:flex;margin:5% calc(33% / 7 - 16px)}.mat-calendar-spacer{flex:1 1 auto}.mat-calendar-period-button{min-width:0}.mat-calendar-arrow{display:inline-block;width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top-width:5px;border-top-style:solid;margin:0 0 0 5px;vertical-align:middle}.mat-calendar-arrow.mat-calendar-invert{transform:rotate(180deg)}[dir=rtl] .mat-calendar-arrow{margin:0 5px 0 0}.mat-calendar-next-button,.mat-calendar-previous-button{position:relative}.mat-calendar-next-button:after,.mat-calendar-previous-button:after{top:0;left:0;right:0;bottom:0;position:absolute;content:\\\"\\\";margin:15.5px;border:solid;border-width:2px 0 0}[dir=rtl] .mat-calendar-next-button,[dir=rtl] .mat-calendar-previous-button{transform:rotate(180deg)}.mat-calendar-previous-button:after{border-left-width:2px;transform:translateX(2px) rotate(-45deg)}.mat-calendar-next-button:after{border-right-width:2px;transform:translateX(-2px) rotate(45deg)}.mat-calendar-table{border-spacing:0;border-collapse:collapse;width:100%}.mat-calendar-table-header th{text-align:center;padding:0 0 8px}.mat-calendar-table-header-divider{position:relative;height:1px}.mat-calendar-table-header-divider:after{content:\\\"\\\";position:absolute;top:0;left:-8px;right:-8px;height:1px}\"] }]\n }], function () { return [{ type: ɵngcc3.MatDatepickerIntl }, { type: NgxMatDateAdapter, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [NGX_MAT_DATE_FORMATS]\n }] }, { type: ɵngcc0.ChangeDetectorRef }]; }, { startView: [{\n type: Input\n }], selectedChange: [{\n type: Output\n }], yearSelected: [{\n type: Output\n }], monthSelected: [{\n type: Output\n }], _userSelection: [{\n type: Output\n }], startAt: [{\n type: Input\n }], selected: [{\n type: Input\n }], minDate: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], headerComponent: [{\n type: Input\n }], dateFilter: [{\n type: Input\n }], dateClass: [{\n type: Input\n }], monthView: [{\n type: ViewChild,\n args: [NgxMatMonthView]\n }], yearView: [{\n type: ViewChild,\n args: [NgxMatYearView]\n }], multiYearView: [{\n type: ViewChild,\n args: [NgxMatMultiYearView]\n }] }); })();\n\nclass NgxMatTimepickerComponent {\r\n constructor(_dateAdapter, cd, formBuilder) {\r\n this._dateAdapter = _dateAdapter;\r\n this.cd = cd;\r\n this.formBuilder = formBuilder;\r\n this.disabled = false;\r\n this.showSpinners = true;\r\n this.stepHour = DEFAULT_STEP;\r\n this.stepMinute = DEFAULT_STEP;\r\n this.stepSecond = DEFAULT_STEP;\r\n this.showSeconds = false;\r\n this.disableMinute = false;\r\n this.enableMeridian = false;\r\n this.color = 'primary';\r\n this.meridian = MERIDIANS.AM;\r\n this._onChange = () => { };\r\n this._onTouched = () => { };\r\n this._destroyed = new Subject();\r\n this.pattern = PATTERN_INPUT_HOUR;\r\n if (!this._dateAdapter) {\r\n throw createMissingDateImplError('NgxMatDateAdapter');\r\n }\r\n this.form = this.formBuilder.group({\r\n hour: [{ value: null, disabled: this.disabled }, [Validators.required, Validators.pattern(PATTERN_INPUT_HOUR)]],\r\n minute: [{ value: null, disabled: this.disabled }, [Validators.required, Validators.pattern(PATTERN_INPUT_MINUTE)]],\r\n second: [{ value: null, disabled: this.disabled }, [Validators.required, Validators.pattern(PATTERN_INPUT_SECOND)]]\r\n });\r\n }\r\n /** Hour */\r\n get hour() {\r\n let val = Number(this.form.controls['hour'].value);\r\n return isNaN(val) ? 0 : val;\r\n }\r\n ;\r\n get minute() {\r\n let val = Number(this.form.controls['minute'].value);\r\n return isNaN(val) ? 0 : val;\r\n }\r\n ;\r\n get second() {\r\n let val = Number(this.form.controls['second'].value);\r\n return isNaN(val) ? 0 : val;\r\n }\r\n ;\r\n /** Whether or not the form is valid */\r\n get valid() {\r\n return this.form.valid;\r\n }\r\n ngOnInit() {\r\n this.form.valueChanges.pipe(takeUntil(this._destroyed), debounceTime(400)).subscribe(val => {\r\n this._updateModel();\r\n });\r\n }\r\n ngOnChanges(changes) {\r\n if (changes.disabled || changes.disableMinute) {\r\n this._setDisableStates();\r\n }\r\n }\r\n ngOnDestroy() {\r\n this._destroyed.next();\r\n this._destroyed.complete();\r\n }\r\n /**\r\n * Writes a new value to the element.\r\n * @param obj\r\n */\r\n writeValue(val) {\r\n if (val != null) {\r\n this._model = val;\r\n }\r\n else {\r\n this._model = this._dateAdapter.today();\r\n if (this.defaultTime != null) {\r\n this._dateAdapter.setTimeByDefaultValues(this._model, this.defaultTime);\r\n }\r\n }\r\n this._updateHourMinuteSecond();\r\n }\r\n /** Registers a callback function that is called when the control's value changes in the UI. */\r\n registerOnChange(fn) {\r\n this._onChange = fn;\r\n }\r\n /**\r\n * Set the function to be called when the control receives a touch event.\r\n */\r\n registerOnTouched(fn) {\r\n this._onTouched = fn;\r\n }\r\n /** Enables or disables the appropriate DOM element */\r\n setDisabledState(isDisabled) {\r\n this._disabled = isDisabled;\r\n this.cd.markForCheck();\r\n }\r\n /**\r\n * Format input\r\n * @param input\r\n */\r\n formatInput(input) {\r\n input.value = input.value.replace(NUMERIC_REGEX, '');\r\n }\r\n /** Toggle meridian */\r\n toggleMeridian() {\r\n this.meridian = (this.meridian === MERIDIANS.AM) ? MERIDIANS.PM : MERIDIANS.AM;\r\n this.change('hour');\r\n }\r\n /** Change property of time */\r\n change(prop, up) {\r\n const next = this._getNextValueByProp(prop, up);\r\n this.form.controls[prop].setValue(formatTwoDigitTimeValue(next), { onlySelf: false, emitEvent: false });\r\n this._updateModel();\r\n }\r\n /** Update controls of form by model */\r\n _updateHourMinuteSecond() {\r\n let _hour = this._dateAdapter.getHour(this._model);\r\n const _minute = this._dateAdapter.getMinute(this._model);\r\n const _second = this._dateAdapter.getSecond(this._model);\r\n if (this.enableMeridian) {\r\n if (_hour >= LIMIT_TIMES.meridian) {\r\n _hour = _hour - LIMIT_TIMES.meridian;\r\n this.meridian = MERIDIANS.PM;\r\n }\r\n else {\r\n this.meridian = MERIDIANS.AM;\r\n }\r\n if (_hour === 0) {\r\n _hour = LIMIT_TIMES.meridian;\r\n }\r\n }\r\n this.form.controls['hour'].setValue(formatTwoDigitTimeValue(_hour));\r\n this.form.controls['minute'].setValue(formatTwoDigitTimeValue(_minute));\r\n this.form.controls['second'].setValue(formatTwoDigitTimeValue(_second));\r\n }\r\n /** Update model */\r\n _updateModel() {\r\n let _hour = this.hour;\r\n if (this.enableMeridian) {\r\n if (this.meridian === MERIDIANS.AM && _hour === LIMIT_TIMES.meridian) {\r\n _hour = 0;\r\n }\r\n else if (this.meridian === MERIDIANS.PM && _hour !== LIMIT_TIMES.meridian) {\r\n _hour = _hour + LIMIT_TIMES.meridian;\r\n }\r\n }\r\n this._dateAdapter.setHour(this._model, _hour);\r\n this._dateAdapter.setMinute(this._model, this.minute);\r\n this._dateAdapter.setSecond(this._model, this.second);\r\n this._onChange(this._model);\r\n }\r\n /**\r\n * Get next value by property\r\n * @param prop\r\n * @param up\r\n */\r\n _getNextValueByProp(prop, up) {\r\n const keyProp = prop[0].toUpperCase() + prop.slice(1);\r\n const min = LIMIT_TIMES[`min${keyProp}`];\r\n let max = LIMIT_TIMES[`max${keyProp}`];\r\n if (prop === 'hour' && this.enableMeridian) {\r\n max = LIMIT_TIMES.meridian;\r\n }\r\n let next;\r\n if (up == null) {\r\n next = this[prop] % (max);\r\n if (prop === 'hour' && this.enableMeridian) {\r\n if (next === 0)\r\n next = max;\r\n }\r\n }\r\n else {\r\n next = up ? this[prop] + this[`step${keyProp}`] : this[prop] - this[`step${keyProp}`];\r\n if (prop === 'hour' && this.enableMeridian) {\r\n next = next % (max + 1);\r\n if (next === 0)\r\n next = up ? 1 : max;\r\n }\r\n else {\r\n next = next % max;\r\n }\r\n if (up) {\r\n next = next > max ? (next - max + min) : next;\r\n }\r\n else {\r\n next = next < min ? (next - min + max) : next;\r\n }\r\n }\r\n return next;\r\n }\r\n /**\r\n * Set disable states\r\n */\r\n _setDisableStates() {\r\n if (this.disabled) {\r\n this.form.disable();\r\n }\r\n else {\r\n this.form.enable();\r\n if (this.disableMinute) {\r\n this.form.get('minute').disable();\r\n if (this.showSeconds) {\r\n this.form.get('second').disable();\r\n }\r\n }\r\n }\r\n }\r\n}\nNgxMatTimepickerComponent.ɵfac = function NgxMatTimepickerComponent_Factory(t) { return new (t || NgxMatTimepickerComponent)(ɵngcc0.ɵɵdirectiveInject(NgxMatDateAdapter, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc6.FormBuilder)); };\nNgxMatTimepickerComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgxMatTimepickerComponent, selectors: [[\"ngx-mat-timepicker\"]], hostAttrs: [1, \"ngx-mat-timepicker\"], inputs: { disabled: \"disabled\", showSpinners: \"showSpinners\", stepHour: \"stepHour\", stepMinute: \"stepMinute\", stepSecond: \"stepSecond\", showSeconds: \"showSeconds\", disableMinute: \"disableMinute\", enableMeridian: \"enableMeridian\", color: \"color\", defaultTime: \"defaultTime\" }, exportAs: [\"ngxMatTimepicker\"], features: [ɵngcc0.ɵɵProvidersFeature([\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NgxMatTimepickerComponent),\n multi: true\n }\n ]), ɵngcc0.ɵɵNgOnChangesFeature], decls: 18, vars: 7, consts: [[3, \"formGroup\"], [1, \"ngx-mat-timepicker-table\"], [1, \"ngx-mat-timepicker-tbody\"], [4, \"ngIf\"], [\"appearance\", \"legacy\"], [\"type\", \"text\", \"matInput\", \"\", \"maxlength\", \"2\", \"formControlName\", \"hour\", 3, \"input\", \"keydown.ArrowUp\", \"keydown.ArrowDown\", \"blur\"], [1, \"ngx-mat-timepicker-spacer\"], [\"type\", \"text\", \"matInput\", \"\", \"maxlength\", \"2\", \"formControlName\", \"minute\", 3, \"input\", \"keydown.ArrowUp\", \"keydown.ArrowDown\", \"blur\"], [\"class\", \"ngx-mat-timepicker-spacer\", 4, \"ngIf\"], [\"class\", \"ngx-mat-timepicker-meridian\", 4, \"ngIf\"], [\"type\", \"button\", \"mat-icon-button\", \"\", \"aria-label\", \"expand_less icon\", 3, \"disabled\", \"click\"], [\"type\", \"text\", \"matInput\", \"\", \"maxlength\", \"2\", \"formControlName\", \"second\", 3, \"input\", \"keydown.ArrowUp\", \"keydown.ArrowDown\", \"blur\"], [1, \"ngx-mat-timepicker-meridian\"], [\"mat-button\", \"\", \"mat-stroked-button\", \"\", 3, \"color\", \"disabled\", \"click\"], [\"type\", \"button\", \"mat-icon-button\", \"\", \"aria-label\", \"expand_more icon\", 3, \"disabled\", \"click\"]], template: function NgxMatTimepickerComponent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"form\", 0)(1, \"table\", 1)(2, \"tbody\", 2);\n ɵngcc0.ɵɵtemplate(3, NgxMatTimepickerComponent_tr_3_Template, 14, 5, \"tr\", 3);\n ɵngcc0.ɵɵelementStart(4, \"tr\")(5, \"td\")(6, \"mat-form-field\", 4)(7, \"input\", 5);\n ɵngcc0.ɵɵlistener(\"input\", function NgxMatTimepickerComponent_Template_input_input_7_listener($event) { return ctx.formatInput($event.target); })(\"keydown.ArrowUp\", function NgxMatTimepickerComponent_Template_input_keydown_ArrowUp_7_listener($event) { ctx.change(\"hour\", true); return $event.preventDefault(); })(\"keydown.ArrowDown\", function NgxMatTimepickerComponent_Template_input_keydown_ArrowDown_7_listener($event) { ctx.change(\"hour\", false); return $event.preventDefault(); })(\"blur\", function NgxMatTimepickerComponent_Template_input_blur_7_listener() { return ctx.change(\"hour\"); });\n ɵngcc0.ɵɵelementEnd()()();\n ɵngcc0.ɵɵelementStart(8, \"td\", 6);\n ɵngcc0.ɵɵtext(9, \":\");\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵelementStart(10, \"td\")(11, \"mat-form-field\", 4)(12, \"input\", 7);\n ɵngcc0.ɵɵlistener(\"input\", function NgxMatTimepickerComponent_Template_input_input_12_listener($event) { return ctx.formatInput($event.target); })(\"keydown.ArrowUp\", function NgxMatTimepickerComponent_Template_input_keydown_ArrowUp_12_listener($event) { ctx.change(\"minute\", true); return $event.preventDefault(); })(\"keydown.ArrowDown\", function NgxMatTimepickerComponent_Template_input_keydown_ArrowDown_12_listener($event) { ctx.change(\"minute\", false); return $event.preventDefault(); })(\"blur\", function NgxMatTimepickerComponent_Template_input_blur_12_listener() { return ctx.change(\"minute\"); });\n ɵngcc0.ɵɵelementEnd()()();\n ɵngcc0.ɵɵtemplate(13, NgxMatTimepickerComponent_td_13_Template, 2, 0, \"td\", 8);\n ɵngcc0.ɵɵtemplate(14, NgxMatTimepickerComponent_td_14_Template, 3, 0, \"td\", 3);\n ɵngcc0.ɵɵtemplate(15, NgxMatTimepickerComponent_td_15_Template, 1, 0, \"td\", 8);\n ɵngcc0.ɵɵtemplate(16, NgxMatTimepickerComponent_td_16_Template, 3, 3, \"td\", 9);\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(17, NgxMatTimepickerComponent_tr_17_Template, 14, 6, \"tr\", 3);\n ɵngcc0.ɵɵelementEnd()()();\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"formGroup\", ctx.form);\n ɵngcc0.ɵɵadvance(3);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showSpinners);\n ɵngcc0.ɵɵadvance(10);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showSeconds);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showSeconds);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.enableMeridian);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.enableMeridian);\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.showSpinners);\n } }, dependencies: [ɵngcc1.NgIf, ɵngcc7.MatFormField, ɵngcc8.MatInput, ɵngcc6.ɵNgNoValidate, ɵngcc6.DefaultValueAccessor, ɵngcc6.NgControlStatus, ɵngcc6.NgControlStatusGroup, ɵngcc6.MaxLengthValidator, ɵngcc6.FormGroupDirective, ɵngcc6.FormControlName, ɵngcc9.MatIcon, ɵngcc4.MatButton], styles: [\".ngx-mat-timepicker{font-size:13px}.ngx-mat-timepicker form{min-width:90px}.ngx-mat-timepicker form .ngx-mat-timepicker-table .ngx-mat-timepicker-tbody tr td{text-align:center}.ngx-mat-timepicker form .ngx-mat-timepicker-table .ngx-mat-timepicker-tbody tr td.ngx-mat-timepicker-spacer{font-weight:700}.ngx-mat-timepicker form .ngx-mat-timepicker-table .ngx-mat-timepicker-tbody tr td.ngx-mat-timepicker-meridian .mat-button{min-width:64px;line-height:36px;border-radius:4px;min-width:0;border-radius:50%;width:36px;height:36px;padding:0;flex-shrink:0}.ngx-mat-timepicker form .ngx-mat-timepicker-table .ngx-mat-timepicker-tbody tr td .mat-icon-button{height:24px;width:24px;line-height:24px}.ngx-mat-timepicker form .ngx-mat-timepicker-table .ngx-mat-timepicker-tbody tr td .mat-icon-button .mat-icon{font-size:24px}.ngx-mat-timepicker form .ngx-mat-timepicker-table .ngx-mat-timepicker-tbody tr td .mat-form-field{width:20px;max-width:20px;text-align:center}\"], encapsulation: 2 });\r\n/** @nocollapse */\r\nNgxMatTimepickerComponent.ctorParameters = () => [\r\n { type: NgxMatDateAdapter, decorators: [{ type: Optional }] },\r\n { type: ChangeDetectorRef },\r\n { type: FormBuilder }\r\n];\r\nNgxMatTimepickerComponent.propDecorators = {\r\n disabled: [{ type: Input }],\r\n showSpinners: [{ type: Input }],\r\n stepHour: [{ type: Input }],\r\n stepMinute: [{ type: Input }],\r\n stepSecond: [{ type: Input }],\r\n showSeconds: [{ type: Input }],\r\n disableMinute: [{ type: Input }],\r\n enableMeridian: [{ type: Input }],\r\n defaultTime: [{ type: Input }],\r\n color: [{ type: Input }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxMatTimepickerComponent, [{\n type: Component,\n args: [{ selector: 'ngx-mat-timepicker', template: \"
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n :\\r\\n \\r\\n \\r\\n \\r\\n :\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\", host: {\n 'class': 'ngx-mat-timepicker'\n }, providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => NgxMatTimepickerComponent),\n multi: true\n }\n ], exportAs: 'ngxMatTimepicker', encapsulation: ViewEncapsulation.None, styles: [\".ngx-mat-timepicker{font-size:13px}.ngx-mat-timepicker form{min-width:90px}.ngx-mat-timepicker form .ngx-mat-timepicker-table .ngx-mat-timepicker-tbody tr td{text-align:center}.ngx-mat-timepicker form .ngx-mat-timepicker-table .ngx-mat-timepicker-tbody tr td.ngx-mat-timepicker-spacer{font-weight:700}.ngx-mat-timepicker form .ngx-mat-timepicker-table .ngx-mat-timepicker-tbody tr td.ngx-mat-timepicker-meridian .mat-button{min-width:64px;line-height:36px;border-radius:4px;min-width:0;border-radius:50%;width:36px;height:36px;padding:0;flex-shrink:0}.ngx-mat-timepicker form .ngx-mat-timepicker-table .ngx-mat-timepicker-tbody tr td .mat-icon-button{height:24px;width:24px;line-height:24px}.ngx-mat-timepicker form .ngx-mat-timepicker-table .ngx-mat-timepicker-tbody tr td .mat-icon-button .mat-icon{font-size:24px}.ngx-mat-timepicker form .ngx-mat-timepicker-table .ngx-mat-timepicker-tbody tr td .mat-form-field{width:20px;max-width:20px;text-align:center}\"] }]\n }], function () { return [{ type: NgxMatDateAdapter, decorators: [{\n type: Optional\n }] }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc6.FormBuilder }]; }, { disabled: [{\n type: Input\n }], showSpinners: [{\n type: Input\n }], stepHour: [{\n type: Input\n }], stepMinute: [{\n type: Input\n }], stepSecond: [{\n type: Input\n }], showSeconds: [{\n type: Input\n }], disableMinute: [{\n type: Input\n }], enableMeridian: [{\n type: Input\n }], color: [{\n type: Input\n }], defaultTime: [{\n type: Input\n }] }); })();\n\n/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\r\n/** Used to generate a unique ID for each datepicker instance. */\r\nlet datepickerUid = 0;\r\n// Boilerplate for applying mixins to MatDatepickerContent.\r\n/** @docs-private */\r\nclass MatDatepickerContentBase {\r\n constructor(_elementRef) {\r\n this._elementRef = _elementRef;\r\n }\r\n}\r\nconst _MatDatepickerContentMixinBase = mixinColor(MatDatepickerContentBase);\r\n/**\r\n * Component used as the content for the datepicker dialog and popup. We use this instead of using\r\n * NgxMatCalendar directly as the content so we can control the initial focus. This also gives us a\r\n * place to put additional features of the popup that are not part of the calendar itself in the\r\n * future. (e.g. confirmation buttons).\r\n * @docs-private\r\n */\r\nclass NgxMatDatetimeContent extends _MatDatepickerContentMixinBase {\r\n constructor(elementRef, cd, _viewContainerRef) {\r\n super(elementRef);\r\n this.cd = cd;\r\n this._viewContainerRef = _viewContainerRef;\r\n }\r\n /** Whether or not the selected date is valid (min,max...) */\r\n get valid() {\r\n if (this.datepicker.hideTime)\r\n return this.datepicker.valid;\r\n return this._timePicker && this._timePicker.valid && this.datepicker.valid;\r\n }\r\n get isViewMonth() {\r\n if (!this._calendar || this._calendar.currentView == null)\r\n return true;\r\n return this._calendar.currentView == 'month';\r\n }\r\n ngAfterViewInit() {\r\n this._calendar.focusActiveCell();\r\n if (this.datepicker._customIcon) {\r\n this._templateCustomIconPortal = new TemplatePortal(this.datepicker._customIcon, this._viewContainerRef);\r\n this.cd.detectChanges();\r\n }\r\n }\r\n}\nNgxMatDatetimeContent.ɵfac = function NgxMatDatetimeContent_Factory(t) { return new (t || NgxMatDatetimeContent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ChangeDetectorRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef)); };\nNgxMatDatetimeContent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgxMatDatetimeContent, selectors: [[\"ngx-mat-datetime-content\"]], viewQuery: function NgxMatDatetimeContent_Query(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵviewQuery(NgxMatCalendar, 5);\n ɵngcc0.ɵɵviewQuery(NgxMatTimepickerComponent, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._calendar = _t.first);\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._timePicker = _t.first);\n } }, hostAttrs: [1, \"mat-datepicker-content\"], hostVars: 3, hostBindings: function NgxMatDatetimeContent_HostBindings(rf, ctx) { if (rf & 2) {\n ɵngcc0.ɵɵsyntheticHostProperty(\"@transformPanel\", \"enter\");\n ɵngcc0.ɵɵclassProp(\"mat-datepicker-content-touch\", ctx.datepicker.touchUi);\n } }, inputs: { color: \"color\" }, exportAs: [\"ngxMatDatetimeContent\"], features: [ɵngcc0.ɵɵInheritDefinitionFeature], decls: 2, vars: 12, consts: [[\"cdkTrapFocus\", \"\", 3, \"id\", \"ngClass\", \"startAt\", \"startView\", \"minDate\", \"maxDate\", \"dateFilter\", \"headerComponent\", \"selected\", \"dateClass\", \"selectedChange\", \"yearSelected\", \"monthSelected\"], [4, \"ngIf\"], [\"class\", \"time-container\", 3, \"disable-seconds\", 4, \"ngIf\"], [1, \"actions\"], [\"mat-button\", \"\", \"mat-stroked-button\", \"\", \"cdkFocusInitial\", \"\", 3, \"color\", \"disabled\", \"click\"], [3, \"cdkPortalOutlet\"], [1, \"time-container\"], [3, \"showSpinners\", \"showSeconds\", \"disabled\", \"stepHour\", \"stepMinute\", \"stepSecond\", \"ngModel\", \"color\", \"enableMeridian\", \"disableMinute\", \"ngModelChange\"]], template: function NgxMatDatetimeContent_Template(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵelementStart(0, \"ngx-mat-calendar\", 0);\n ɵngcc0.ɵɵlistener(\"selectedChange\", function NgxMatDatetimeContent_Template_ngx_mat_calendar_selectedChange_0_listener($event) { return ctx.datepicker.select($event); })(\"yearSelected\", function NgxMatDatetimeContent_Template_ngx_mat_calendar_yearSelected_0_listener($event) { return ctx.datepicker._selectYear($event); })(\"monthSelected\", function NgxMatDatetimeContent_Template_ngx_mat_calendar_monthSelected_0_listener($event) { return ctx.datepicker._selectMonth($event); });\n ɵngcc0.ɵɵelementEnd();\n ɵngcc0.ɵɵtemplate(1, NgxMatDatetimeContent_ng_container_1_Template, 6, 5, \"ng-container\", 1);\n } if (rf & 2) {\n ɵngcc0.ɵɵproperty(\"id\", ctx.datepicker.id)(\"ngClass\", ctx.datepicker.panelClass)(\"startAt\", ctx.datepicker.startAt)(\"startView\", ctx.datepicker.startView)(\"minDate\", ctx.datepicker._minDate)(\"maxDate\", ctx.datepicker._maxDate)(\"dateFilter\", ctx.datepicker._dateFilter)(\"headerComponent\", ctx.datepicker.calendarHeaderComponent)(\"selected\", ctx.datepicker._selected)(\"dateClass\", ctx.datepicker.dateClass)(\"@fadeInCalendar\", \"enter\");\n ɵngcc0.ɵɵadvance(1);\n ɵngcc0.ɵɵproperty(\"ngIf\", ctx.isViewMonth);\n } }, dependencies: [ɵngcc1.NgClass, ɵngcc1.NgIf, ɵngcc5.CdkPortalOutlet, ɵngcc6.NgControlStatus, ɵngcc6.NgModel, ɵngcc9.MatIcon, ɵngcc4.MatButton, NgxMatTimepickerComponent, NgxMatCalendar], styles: [\".mat-datepicker-content{display:block;border-radius:4px;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.mat-datepicker-content .mat-calendar{width:296px}.mat-datepicker-content .time-container{display:flex;position:relative;padding-top:5px;justify-content:center}.mat-datepicker-content .time-container.disable-seconds .ngx-mat-timepicker .table{margin-left:9px}.mat-datepicker-content .time-container:before{content:\\\"\\\";position:absolute;top:0;left:0;right:0;height:1px;background-color:rgba(0,0,0,.12)}.mat-datepicker-content .actions{display:flex;padding:5px 15px 10px;justify-content:flex-end}\"], encapsulation: 2, data: { animation: [\n matDatepickerAnimations.transformPanel,\n matDatepickerAnimations.fadeInCalendar,\n ] }, changeDetection: 0 });\r\n/** @nocollapse */\r\nNgxMatDatetimeContent.ctorParameters = () => [\r\n { type: ElementRef },\r\n { type: ChangeDetectorRef },\r\n { type: ViewContainerRef }\r\n];\r\nNgxMatDatetimeContent.propDecorators = {\r\n _calendar: [{ type: ViewChild, args: [NgxMatCalendar,] }],\r\n _timePicker: [{ type: ViewChild, args: [NgxMatTimepickerComponent,] }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxMatDatetimeContent, [{\n type: Component,\n args: [{ selector: 'ngx-mat-datetime-content', template: \"\\r\\n\\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\", host: {\n 'class': 'mat-datepicker-content',\n '[@transformPanel]': '\"enter\"',\n '[class.mat-datepicker-content-touch]': 'datepicker.touchUi'\n }, animations: [\n matDatepickerAnimations.transformPanel,\n matDatepickerAnimations.fadeInCalendar,\n ], exportAs: 'ngxMatDatetimeContent', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, inputs: ['color'], styles: [\".mat-datepicker-content{display:block;border-radius:4px;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.mat-datepicker-content .mat-calendar{width:296px}.mat-datepicker-content .time-container{display:flex;position:relative;padding-top:5px;justify-content:center}.mat-datepicker-content .time-container.disable-seconds .ngx-mat-timepicker .table{margin-left:9px}.mat-datepicker-content .time-container:before{content:\\\"\\\";position:absolute;top:0;left:0;right:0;height:1px;background-color:rgba(0,0,0,.12)}.mat-datepicker-content .actions{display:flex;padding:5px 15px 10px;justify-content:flex-end}\"] }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.ChangeDetectorRef }, { type: ɵngcc0.ViewContainerRef }]; }, { _calendar: [{\n type: ViewChild,\n args: [NgxMatCalendar]\n }], _timePicker: [{\n type: ViewChild,\n args: [NgxMatTimepickerComponent]\n }] }); })();\r\n// TODO(mmalerba): We use a component instead of a directive here so the user can use implicit\r\n// template reference variables (e.g. #d vs #d=\"matDatepicker\"). We can change this to a directive\r\n// if angular adds support for `exportAs: '$implicit'` on directives.\r\n/** Component responsible for managing the datepicker popup/dialog. */\r\nclass NgxMatDatetimePicker {\r\n constructor(_dialog, _overlay, _ngZone, _viewContainerRef, scrollStrategy, _dateAdapter, _dir, _document) {\r\n this._dialog = _dialog;\r\n this._overlay = _overlay;\r\n this._ngZone = _ngZone;\r\n this._viewContainerRef = _viewContainerRef;\r\n this._dateAdapter = _dateAdapter;\r\n this._dir = _dir;\r\n this._document = _document;\r\n /** The view that the calendar should start in. */\r\n this.startView = 'month';\r\n this._defaultColor = 'primary';\r\n this._touchUi = false;\r\n this._hideTime = false;\r\n /**\r\n * Emits selected year in multiyear view.\r\n * This doesn't imply a change on the selected date.\r\n */\r\n this.yearSelected = new EventEmitter();\r\n /**\r\n * Emits selected month in year view.\r\n * This doesn't imply a change on the selected date.\r\n */\r\n this.monthSelected = new EventEmitter();\r\n /** Emits when the datepicker has been opened. */\r\n this.openedStream = new EventEmitter();\r\n /** Emits when the datepicker has been closed. */\r\n this.closedStream = new EventEmitter();\r\n this._opened = false;\r\n this._showSpinners = true;\r\n this._showSeconds = false;\r\n this._stepHour = DEFAULT_STEP;\r\n this._stepMinute = DEFAULT_STEP;\r\n this._stepSecond = DEFAULT_STEP;\r\n this._enableMeridian = false;\r\n this._hasBackdrop = true;\r\n /** The id for the datepicker calendar. */\r\n this.id = `mat-datepicker-${datepickerUid++}`;\r\n this._validSelected = null;\r\n /** The element that was focused before the datepicker was opened. */\r\n this._focusedElementBeforeOpen = null;\r\n /** Subscription to value changes in the associated input element. */\r\n this._inputSubscription = Subscription.EMPTY;\r\n /** Emits when the datepicker is disabled. */\r\n this.stateChanges = new Subject();\r\n /** Emits new selected date when selected date changes. */\r\n this._selectedChanged = new Subject();\r\n /** The form control validator for the min date. */\r\n this._minValidator = () => {\r\n return (!this._minDate || !this._selected ||\r\n this._dateAdapter.compareDateWithTime(this._minDate, this._selected, this.showSeconds) <= 0) ?\r\n null : { 'matDatetimePickerMin': { 'min': this._minDate, 'actual': this._selected } };\r\n };\r\n /** The form control validator for the max date. */\r\n this._maxValidator = () => {\r\n return (!this._maxDate || !this._selected ||\r\n this._dateAdapter.compareDateWithTime(this._maxDate, this._selected, this.showSeconds) >= 0) ?\r\n null : { 'matDatetimePickerMax': { 'max': this._maxDate, 'actual': this._selected } };\r\n };\r\n if (!this._dateAdapter) {\r\n throw createMissingDateImplError('NgxMatDateAdapter');\r\n }\r\n this._scrollStrategy = scrollStrategy;\r\n }\r\n /** The date to open the calendar to initially. */\r\n get startAt() {\r\n // If an explicit startAt is set we start there, otherwise we start at whatever the currently\r\n // selected value is.\r\n return this._startAt || (this.datepickerInput ? this.datepickerInput.value : null);\r\n }\r\n set startAt(value) {\r\n this._startAt = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\r\n }\r\n /** Default Color palette to use on the datepicker's calendar. */\r\n get defaultColor() {\r\n return this._defaultColor;\r\n }\r\n set defaultColor(value) {\r\n this._defaultColor = value;\r\n }\r\n /** Color palette to use on the datepicker's calendar. */\r\n get color() {\r\n return this._color ||\r\n (this.datepickerInput ? this.datepickerInput._getThemePalette() : 'primary');\r\n }\r\n set color(value) {\r\n this._color = value;\r\n }\r\n /**\r\n * Whether the calendar UI is in touch mode. In touch mode the calendar opens in a dialog rather\r\n * than a popup and elements have more padding to allow for bigger touch targets.\r\n */\r\n get touchUi() { return this._touchUi; }\r\n set touchUi(value) {\r\n this._touchUi = coerceBooleanProperty(value);\r\n }\r\n get hideTime() { return this._hideTime; }\r\n set hideTime(value) {\r\n this._hideTime = coerceBooleanProperty(value);\r\n }\r\n /** Whether the datepicker pop-up should be disabled. */\r\n get disabled() {\r\n return this._disabled === undefined && this.datepickerInput ?\r\n this.datepickerInput.disabled : !!this._disabled;\r\n }\r\n set disabled(value) {\r\n const newValue = coerceBooleanProperty(value);\r\n if (newValue !== this._disabled) {\r\n this._disabled = newValue;\r\n this.stateChanges.next(newValue);\r\n }\r\n }\r\n /** Whether the calendar is open. */\r\n get opened() { return this._opened; }\r\n set opened(value) { value ? this.open() : this.close(); }\r\n /** Whether the timepicker'spinners is shown. */\r\n get showSpinners() { return this._showSpinners; }\r\n set showSpinners(value) { this._showSpinners = value; }\r\n /** Whether the second part is disabled. */\r\n get showSeconds() { return this._showSeconds; }\r\n set showSeconds(value) { this._showSeconds = value; }\r\n /** Step hour */\r\n get stepHour() { return this._stepHour; }\r\n set stepHour(value) { this._stepHour = value; }\r\n /** Step minute */\r\n get stepMinute() { return this._stepMinute; }\r\n set stepMinute(value) { this._stepMinute = value; }\r\n /** Step second */\r\n get stepSecond() { return this._stepSecond; }\r\n set stepSecond(value) { this._stepSecond = value; }\r\n /** Enable meridian */\r\n get enableMeridian() { return this._enableMeridian; }\r\n set enableMeridian(value) { this._enableMeridian = value; }\r\n /** disable minute */\r\n get disableMinute() { return this._disableMinute; }\r\n set disableMinute(value) { this._disableMinute = value; }\r\n /** Step second */\r\n get defaultTime() { return this._defaultTime; }\r\n set defaultTime(value) { this._defaultTime = value; }\r\n /** The currently selected date. */\r\n get _selected() { return this._validSelected; }\r\n set _selected(value) { this._validSelected = value; }\r\n /** The minimum selectable date. */\r\n get _minDate() {\r\n return this.datepickerInput && this.datepickerInput.min;\r\n }\r\n /** The maximum selectable date. */\r\n get _maxDate() {\r\n return this.datepickerInput && this.datepickerInput.max;\r\n }\r\n get valid() {\r\n const minValidators = this._minValidator();\r\n const maxValidators = this._maxValidator();\r\n return minValidators == null && maxValidators == null;\r\n }\r\n get _dateFilter() {\r\n return this.datepickerInput && this.datepickerInput._dateFilter;\r\n }\r\n ngOnDestroy() {\r\n this.close();\r\n if (this._popupRef) {\r\n this._popupRef.dispose();\r\n this._popupComponentRef = null;\r\n }\r\n this._inputSubscription.unsubscribe();\r\n this.stateChanges.complete();\r\n }\r\n /** Selects the given date */\r\n select(date) {\r\n this._dateAdapter.copyTime(date, this._selected);\r\n this._selected = date;\r\n }\r\n /** Emits the selected year in multiyear view */\r\n _selectYear(normalizedYear) {\r\n this.yearSelected.emit(normalizedYear);\r\n }\r\n /** Emits selected month in year view */\r\n _selectMonth(normalizedMonth) {\r\n this.monthSelected.emit(normalizedMonth);\r\n }\r\n /** OK button handler and close*/\r\n ok() {\r\n const cloned = this._dateAdapter.clone(this._selected);\r\n this._selectedChanged.next(cloned);\r\n this.close();\r\n }\r\n /** Cancel and close */\r\n cancel() {\r\n this._selected = this._rawValue;\r\n this.close();\r\n }\r\n /**\r\n * Register an input with this datepicker.\r\n * @param input The datepicker input to register with this datepicker.\r\n */\r\n _registerInput(input) {\r\n if (this.datepickerInput) {\r\n throw Error('A NgxMatDatepicker can only be associated with a single input.');\r\n }\r\n this.datepickerInput = input;\r\n this._inputSubscription =\r\n this.datepickerInput._valueChange.subscribe((value) => this._selected = value);\r\n }\r\n /** Open the calendar. */\r\n open() {\r\n this._rawValue = this._selected != null\r\n ? this._dateAdapter.clone(this._selected) : null;\r\n if (this._selected == null) {\r\n this._selected = this._dateAdapter.today();\r\n if (this.defaultTime != null) {\r\n this._dateAdapter.setTimeByDefaultValues(this._selected, this.defaultTime);\r\n }\r\n }\r\n if (this._opened || this.disabled) {\r\n return;\r\n }\r\n if (!this.datepickerInput) {\r\n throw Error('Attempted to open an NgxMatDatepicker with no associated input.');\r\n }\r\n if (this._document) {\r\n this._focusedElementBeforeOpen = this._document.activeElement;\r\n }\r\n this.touchUi ? this._openAsDialog() : this._openAsPopup();\r\n this._opened = true;\r\n this.openedStream.emit();\r\n }\r\n /** Close the calendar. */\r\n close() {\r\n if (!this._opened) {\r\n return;\r\n }\r\n if (this._popupRef && this._popupRef.hasAttached()) {\r\n this._popupRef.detach();\r\n }\r\n if (this._dialogRef) {\r\n this._dialogRef.close();\r\n this._dialogRef = null;\r\n }\r\n if (this._calendarPortal && this._calendarPortal.isAttached) {\r\n this._calendarPortal.detach();\r\n }\r\n const completeClose = () => {\r\n // The `_opened` could've been reset already if\r\n // we got two events in quick succession.\r\n if (this._opened) {\r\n this._opened = false;\r\n this.closedStream.emit();\r\n this._focusedElementBeforeOpen = null;\r\n }\r\n };\r\n if (this._focusedElementBeforeOpen &&\r\n typeof this._focusedElementBeforeOpen.focus === 'function') {\r\n // Because IE moves focus asynchronously, we can't count on it being restored before we've\r\n // marked the datepicker as closed. If the event fires out of sequence and the element that\r\n // we're refocusing opens the datepicker on focus, the user could be stuck with not being\r\n // able to close the calendar at all. We work around it by making the logic, that marks\r\n // the datepicker as closed, async as well.\r\n this._focusedElementBeforeOpen.focus();\r\n setTimeout(completeClose);\r\n }\r\n else {\r\n completeClose();\r\n }\r\n }\r\n /** Open the calendar as a dialog. */\r\n _openAsDialog() {\r\n // Usually this would be handled by `open` which ensures that we can only have one overlay\r\n // open at a time, however since we reset the variables in async handlers some overlays\r\n // may slip through if the user opens and closes multiple times in quick succession (e.g.\r\n // by holding down the enter key).\r\n if (this._dialogRef) {\r\n this._dialogRef.close();\r\n }\r\n this._dialogRef = this._dialog.open(NgxMatDatetimeContent, {\r\n direction: this._dir ? this._dir.value : 'ltr',\r\n viewContainerRef: this._viewContainerRef,\r\n panelClass: 'mat-datepicker-dialog',\r\n hasBackdrop: this._hasBackdrop\r\n });\r\n this._dialogRef.afterClosed().subscribe(() => this.close());\r\n this._dialogRef.componentInstance.datepicker = this;\r\n this._setColor();\r\n }\r\n /** Open the calendar as a popup. */\r\n _openAsPopup() {\r\n if (!this._calendarPortal) {\r\n this._calendarPortal = new ComponentPortal(NgxMatDatetimeContent, this._viewContainerRef);\r\n }\r\n if (!this._popupRef) {\r\n this._createPopup();\r\n }\r\n if (!this._popupRef.hasAttached()) {\r\n this._popupComponentRef = this._popupRef.attach(this._calendarPortal);\r\n this._popupComponentRef.instance.datepicker = this;\r\n this._setColor();\r\n // Update the position once the calendar has rendered.\r\n this._ngZone.onStable.asObservable().pipe(take(1)).subscribe(() => {\r\n this._popupRef.updatePosition();\r\n });\r\n }\r\n }\r\n /** Create the popup. */\r\n _createPopup() {\r\n const overlayConfig = new OverlayConfig({\r\n positionStrategy: this._createPopupPositionStrategy(),\r\n hasBackdrop: this._hasBackdrop,\r\n backdropClass: 'mat-overlay-transparent-backdrop',\r\n direction: this._dir,\r\n scrollStrategy: this._scrollStrategy(),\r\n panelClass: 'mat-datepicker-popup',\r\n });\r\n this._popupRef = this._overlay.create(overlayConfig);\r\n this._popupRef.overlayElement.setAttribute('role', 'dialog');\r\n merge(this._popupRef.backdropClick(), this._popupRef.detachments(), this._popupRef.keydownEvents().pipe(filter(event => {\r\n // Closing on alt + up is only valid when there's an input associated with the datepicker.\r\n return event.keyCode === ESCAPE ||\r\n (this.datepickerInput && event.altKey && event.keyCode === UP_ARROW);\r\n }))).subscribe(event => {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n (this._hasBackdrop && event) ? this.cancel() : this.close();\r\n });\r\n }\r\n /** Create the popup PositionStrategy. */\r\n _createPopupPositionStrategy() {\r\n return this._overlay.position()\r\n .flexibleConnectedTo(this.datepickerInput.getConnectedOverlayOrigin())\r\n .withTransformOriginOn('.mat-datepicker-content')\r\n .withFlexibleDimensions(false)\r\n .withViewportMargin(8)\r\n .withLockedPosition()\r\n .withPositions([\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top'\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'bottom'\r\n },\r\n {\r\n originX: 'end',\r\n originY: 'bottom',\r\n overlayX: 'end',\r\n overlayY: 'top'\r\n },\r\n {\r\n originX: 'end',\r\n originY: 'top',\r\n overlayX: 'end',\r\n overlayY: 'bottom'\r\n }\r\n ]);\r\n }\r\n /**\r\n * @param obj The object to check.\r\n * @returns The given object if it is both a date instance and valid, otherwise null.\r\n */\r\n _getValidDateOrNull(obj) {\r\n return (this._dateAdapter.isDateInstance(obj) && this._dateAdapter.isValid(obj)) ? obj : null;\r\n }\r\n /** Passes the current theme color along to the calendar overlay. */\r\n _setColor() {\r\n const color = this.color;\r\n if (this._popupComponentRef) {\r\n this._popupComponentRef.instance.color = color;\r\n }\r\n if (this._dialogRef) {\r\n this._dialogRef.componentInstance.color = color;\r\n }\r\n }\r\n}\nNgxMatDatetimePicker.ɵfac = function NgxMatDatetimePicker_Factory(t) { return new (t || NgxMatDatetimePicker)(ɵngcc0.ɵɵdirectiveInject(ɵngcc10.MatDialog), ɵngcc0.ɵɵdirectiveInject(ɵngcc11.Overlay), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ViewContainerRef), ɵngcc0.ɵɵdirectiveInject(MAT_DATEPICKER_SCROLL_STRATEGY), ɵngcc0.ɵɵdirectiveInject(NgxMatDateAdapter, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc2.Directionality, 8), ɵngcc0.ɵɵdirectiveInject(DOCUMENT, 8)); };\nNgxMatDatetimePicker.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: NgxMatDatetimePicker, selectors: [[\"ngx-mat-datetime-picker\"]], contentQueries: function NgxMatDatetimePicker_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {\n ɵngcc0.ɵɵcontentQuery(dirIndex, TemplateRef, 5);\n } if (rf & 2) {\n let _t;\n ɵngcc0.ɵɵqueryRefresh(_t = ɵngcc0.ɵɵloadQuery()) && (ctx._customIcon = _t.first);\n } }, inputs: { startView: \"startView\", startAt: \"startAt\", defaultColor: \"defaultColor\", color: \"color\", touchUi: \"touchUi\", hideTime: \"hideTime\", disabled: \"disabled\", opened: \"opened\", showSpinners: \"showSpinners\", showSeconds: \"showSeconds\", stepHour: \"stepHour\", stepMinute: \"stepMinute\", stepSecond: \"stepSecond\", enableMeridian: \"enableMeridian\", disableMinute: \"disableMinute\", defaultTime: \"defaultTime\", calendarHeaderComponent: \"calendarHeaderComponent\", panelClass: \"panelClass\", dateClass: \"dateClass\" }, outputs: { yearSelected: \"yearSelected\", monthSelected: \"monthSelected\", openedStream: \"opened\", closedStream: \"closed\" }, exportAs: [\"ngxMatDatetimePicker\"], decls: 0, vars: 0, template: function NgxMatDatetimePicker_Template(rf, ctx) { }, encapsulation: 2, changeDetection: 0 });\r\n/** @nocollapse */\r\nNgxMatDatetimePicker.ctorParameters = () => [\r\n { type: MatDialog },\r\n { type: Overlay },\r\n { type: NgZone },\r\n { type: ViewContainerRef },\r\n { type: undefined, decorators: [{ type: Inject, args: [MAT_DATEPICKER_SCROLL_STRATEGY,] }] },\r\n { type: NgxMatDateAdapter, decorators: [{ type: Optional }] },\r\n { type: Directionality, decorators: [{ type: Optional }] },\r\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [DOCUMENT,] }] }\r\n];\r\nNgxMatDatetimePicker.propDecorators = {\r\n calendarHeaderComponent: [{ type: Input }],\r\n _customIcon: [{ type: ContentChild, args: [TemplateRef,] }],\r\n startAt: [{ type: Input }],\r\n startView: [{ type: Input }],\r\n defaultColor: [{ type: Input }],\r\n color: [{ type: Input }],\r\n touchUi: [{ type: Input }],\r\n hideTime: [{ type: Input }],\r\n disabled: [{ type: Input }],\r\n yearSelected: [{ type: Output }],\r\n monthSelected: [{ type: Output }],\r\n panelClass: [{ type: Input }],\r\n dateClass: [{ type: Input }],\r\n openedStream: [{ type: Output, args: ['opened',] }],\r\n closedStream: [{ type: Output, args: ['closed',] }],\r\n opened: [{ type: Input }],\r\n showSpinners: [{ type: Input }],\r\n showSeconds: [{ type: Input }],\r\n stepHour: [{ type: Input }],\r\n stepMinute: [{ type: Input }],\r\n stepSecond: [{ type: Input }],\r\n enableMeridian: [{ type: Input }],\r\n disableMinute: [{ type: Input }],\r\n defaultTime: [{ type: Input }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxMatDatetimePicker, [{\n type: Component,\n args: [{\n selector: 'ngx-mat-datetime-picker',\n template: '',\n exportAs: 'ngxMatDatetimePicker',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None\n }]\n }], function () { return [{ type: ɵngcc10.MatDialog }, { type: ɵngcc11.Overlay }, { type: ɵngcc0.NgZone }, { type: ɵngcc0.ViewContainerRef }, { type: undefined, decorators: [{\n type: Inject,\n args: [MAT_DATEPICKER_SCROLL_STRATEGY]\n }] }, { type: NgxMatDateAdapter, decorators: [{\n type: Optional\n }] }, { type: ɵngcc2.Directionality, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [DOCUMENT]\n }] }]; }, { startView: [{\n type: Input\n }], yearSelected: [{\n type: Output\n }], monthSelected: [{\n type: Output\n }], openedStream: [{\n type: Output,\n args: ['opened']\n }], closedStream: [{\n type: Output,\n args: ['closed']\n }], startAt: [{\n type: Input\n }], defaultColor: [{\n type: Input\n }], color: [{\n type: Input\n }], touchUi: [{\n type: Input\n }], hideTime: [{\n type: Input\n }], disabled: [{\n type: Input\n }], opened: [{\n type: Input\n }], showSpinners: [{\n type: Input\n }], showSeconds: [{\n type: Input\n }], stepHour: [{\n type: Input\n }], stepMinute: [{\n type: Input\n }], stepSecond: [{\n type: Input\n }], enableMeridian: [{\n type: Input\n }], disableMinute: [{\n type: Input\n }], defaultTime: [{\n type: Input\n }], calendarHeaderComponent: [{\n type: Input\n }], _customIcon: [{\n type: ContentChild,\n args: [TemplateRef]\n }], panelClass: [{\n type: Input\n }], dateClass: [{\n type: Input\n }] }); })();\n\n/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\r\n/** @docs-private */\r\nconst MAT_DATEPICKER_VALUE_ACCESSOR = {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => NgxMatDatetimeInput),\r\n multi: true\r\n};\r\n/** @docs-private */\r\nconst MAT_DATEPICKER_VALIDATORS = {\r\n provide: NG_VALIDATORS,\r\n useExisting: forwardRef(() => NgxMatDatetimeInput),\r\n multi: true\r\n};\r\n/**\r\n * An event used for datepicker input and change events. We don't always have access to a native\r\n * input or change event because the event may have been triggered by the user clicking on the\r\n * calendar popup. For consistency, we always use MatDatetimePickerInputEvent instead.\r\n */\r\nclass MatDatetimePickerInputEvent {\r\n constructor(\r\n /** Reference to the datepicker input component that emitted the event. */\r\n target, \r\n /** Reference to the native input element associated with the datepicker input. */\r\n targetElement) {\r\n this.target = target;\r\n this.targetElement = targetElement;\r\n this.value = this.target.value;\r\n }\r\n}\r\n/** Directive used to connect an input to a matDatetimePicker. */\r\nclass NgxMatDatetimeInput {\r\n constructor(_elementRef, _dateAdapter, _dateFormats, _formField) {\r\n this._elementRef = _elementRef;\r\n this._dateAdapter = _dateAdapter;\r\n this._dateFormats = _dateFormats;\r\n this._formField = _formField;\r\n /** Emits when a `change` event is fired on this ``. */\r\n this.dateChange = new EventEmitter();\r\n /** Emits when an `input` event is fired on this ``. */\r\n this.dateInput = new EventEmitter();\r\n /** Emits when the value changes (either due to user input or programmatic change). */\r\n this._valueChange = new EventEmitter();\r\n /** Emits when the disabled state has changed */\r\n this.stateChanges = new EventEmitter();\r\n this._onTouched = () => { };\r\n this._cvaOnChange = () => { };\r\n this._validatorOnChange = () => { };\r\n this._datepickerSubscription = Subscription.EMPTY;\r\n this._localeSubscription = Subscription.EMPTY;\r\n /** The form control validator for whether the input parses. */\r\n this._parseValidator = () => {\r\n return this._lastValueValid ?\r\n null : { 'matDatetimePickerParse': { 'text': this._elementRef.nativeElement.value } };\r\n };\r\n /** The form control validator for the min date. */\r\n this._minValidator = (control) => {\r\n const controlValue = this._getValidDateOrNull(this._dateAdapter.deserialize(control.value));\r\n return (!this.min || !controlValue ||\r\n this._dateAdapter.compareDateWithTime(this.min, controlValue, this._datepicker.showSeconds) <= 0) ?\r\n null : { 'matDatetimePickerMin': { 'min': this.min, 'actual': controlValue } };\r\n };\r\n /** The form control validator for the max date. */\r\n this._maxValidator = (control) => {\r\n const controlValue = this._getValidDateOrNull(this._dateAdapter.deserialize(control.value));\r\n return (!this.max || !controlValue ||\r\n this._dateAdapter.compareDateWithTime(this.max, controlValue, this._datepicker.showSeconds) >= 0) ?\r\n null : { 'matDatetimePickerMax': { 'max': this.max, 'actual': controlValue } };\r\n };\r\n /** The form control validator for the date filter. */\r\n this._filterValidator = (control) => {\r\n const controlValue = this._getValidDateOrNull(this._dateAdapter.deserialize(control.value));\r\n return !this._dateFilter || !controlValue || this._dateFilter(controlValue) ?\r\n null : { 'matDatetimePickerFilter': true };\r\n };\r\n /** The combined form control validator for this input. */\r\n this._validator = Validators.compose([this._parseValidator, this._minValidator, this._maxValidator, this._filterValidator]);\r\n /** Whether the last value set on the input was valid. */\r\n this._lastValueValid = false;\r\n if (!this._dateAdapter) {\r\n throw createMissingDateImplError('NgxMatDateAdapter');\r\n }\r\n if (!this._dateFormats) {\r\n throw createMissingDateImplError('NGX_MAT_DATE_FORMATS');\r\n }\r\n // Update the displayed date when the locale changes.\r\n this._localeSubscription = _dateAdapter.localeChanges.subscribe(() => {\r\n this.value = this.value;\r\n });\r\n }\r\n /** The datepicker that this input is associated with. */\r\n set ngxMatDatetimePicker(value) {\r\n if (!value) {\r\n return;\r\n }\r\n this._datepicker = value;\r\n this._datepicker._registerInput(this);\r\n this._datepickerSubscription.unsubscribe();\r\n this._datepickerSubscription = this._datepicker._selectedChanged.subscribe((selected) => {\r\n this.value = selected;\r\n this._cvaOnChange(selected);\r\n this._onTouched();\r\n this.dateInput.emit(new MatDatetimePickerInputEvent(this, this._elementRef.nativeElement));\r\n this.dateChange.emit(new MatDatetimePickerInputEvent(this, this._elementRef.nativeElement));\r\n });\r\n }\r\n /** Function that can be used to filter out dates within the datepicker. */\r\n set ngxMatDatetimePickerFilter(value) {\r\n this._dateFilter = value;\r\n this._validatorOnChange();\r\n }\r\n /** The value of the input. */\r\n get value() { return this._value; }\r\n set value(value) {\r\n value = this._dateAdapter.deserialize(value);\r\n this._lastValueValid = !value || this._dateAdapter.isValid(value);\r\n value = this._getValidDateOrNull(value);\r\n const oldDate = this.value;\r\n this._value = value;\r\n this._formatValue(value);\r\n if (!this._dateAdapter.sameDate(oldDate, value)) {\r\n this._valueChange.emit(value);\r\n }\r\n }\r\n /** The minimum valid date. */\r\n get min() { return this._min; }\r\n set min(value) {\r\n this._min = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\r\n this._validatorOnChange();\r\n }\r\n /** The maximum valid date. */\r\n get max() { return this._max; }\r\n set max(value) {\r\n this._max = this._getValidDateOrNull(this._dateAdapter.deserialize(value));\r\n this._validatorOnChange();\r\n }\r\n /** Whether the datepicker-input is disabled. */\r\n get disabled() { return !!this._disabled; }\r\n set disabled(value) {\r\n const newValue = value != null && `${value}` !== 'false';\r\n const element = this._elementRef.nativeElement;\r\n if (this._disabled !== newValue) {\r\n this._disabled = newValue;\r\n this.stateChanges.emit(undefined);\r\n }\r\n // We need to null check the `blur` method, because it's undefined during SSR.\r\n if (newValue && element.blur) {\r\n // Normally, native input elements automatically blur if they turn disabled. This behavior\r\n // is problematic, because it would mean that it triggers another change detection cycle,\r\n // which then causes a changed after checked error if the input element was focused before.\r\n element.blur();\r\n }\r\n }\r\n ngOnDestroy() {\r\n this._datepickerSubscription.unsubscribe();\r\n this._localeSubscription.unsubscribe();\r\n this._valueChange.complete();\r\n this.stateChanges.complete();\r\n }\r\n /** @docs-private */\r\n registerOnValidatorChange(fn) {\r\n this._validatorOnChange = fn;\r\n }\r\n /** @docs-private */\r\n validate(c) {\r\n return this._validator ? this._validator(c) : null;\r\n }\r\n /**\r\n * @deprecated\r\n * @breaking-change 8.0.0 Use `getConnectedOverlayOrigin` instead\r\n */\r\n getPopupConnectionElementRef() {\r\n return this.getConnectedOverlayOrigin();\r\n }\r\n /**\r\n * Gets the element that the datepicker popup should be connected to.\r\n * @return The element to connect the popup to.\r\n */\r\n getConnectedOverlayOrigin() {\r\n return this._formField ? this._formField.getConnectedOverlayOrigin() : this._elementRef;\r\n }\r\n // Implemented as part of ControlValueAccessor.\r\n writeValue(value) {\r\n this.value = value;\r\n }\r\n // Implemented as part of ControlValueAccessor.\r\n registerOnChange(fn) {\r\n this._cvaOnChange = fn;\r\n }\r\n // Implemented as part of ControlValueAccessor.\r\n registerOnTouched(fn) {\r\n this._onTouched = fn;\r\n }\r\n // Implemented as part of ControlValueAccessor.\r\n setDisabledState(isDisabled) {\r\n this.disabled = isDisabled;\r\n }\r\n _onKeydown(event) {\r\n const isAltDownArrow = event.altKey && event.keyCode === DOWN_ARROW;\r\n if (this._datepicker && isAltDownArrow && !this._elementRef.nativeElement.readOnly) {\r\n this._datepicker.open();\r\n event.preventDefault();\r\n }\r\n }\r\n _onInput(value) {\r\n const lastValueWasValid = this._lastValueValid;\r\n let date = this._dateAdapter.parse(value, this._dateFormats.parse.dateInput);\r\n this._lastValueValid = !date || this._dateAdapter.isValid(date);\r\n date = this._getValidDateOrNull(date);\r\n const isSameTime = this._dateAdapter.isSameTime(date, this._value);\r\n if ((date != null && (!isSameTime || !this._dateAdapter.sameDate(date, this._value)))\r\n || (date == null && this._value != null)) {\r\n this._value = date;\r\n this._cvaOnChange(date);\r\n this._valueChange.emit(date);\r\n this.dateInput.emit(new MatDatetimePickerInputEvent(this, this._elementRef.nativeElement));\r\n }\r\n else if (lastValueWasValid !== this._lastValueValid) {\r\n this._validatorOnChange();\r\n }\r\n }\r\n _onChange() {\r\n this.dateChange.emit(new MatDatetimePickerInputEvent(this, this._elementRef.nativeElement));\r\n }\r\n /** Returns the palette used by the input's form field, if any. */\r\n _getThemePalette() {\r\n return this._formField ? this._formField.color : undefined;\r\n }\r\n /** Handles blur events on the input. */\r\n _onBlur() {\r\n // Reformat the input only if we have a valid value.\r\n if (this.value) {\r\n this._formatValue(this.value);\r\n }\r\n this._onTouched();\r\n }\r\n /** Handles focus events on the input. */\r\n _onFocus() {\r\n // Close datetime picker if opened\r\n if (this._datepicker && this._datepicker.opened) {\r\n this._datepicker.cancel();\r\n }\r\n }\r\n /** Formats a value and sets it on the input element. */\r\n _formatValue(value) {\r\n this._elementRef.nativeElement.value =\r\n value ? this._dateAdapter.format(value, this._dateFormats.display.dateInput) : '';\r\n }\r\n /**\r\n * @param obj The object to check.\r\n * @returns The given object if it is both a date instance and valid, otherwise null.\r\n */\r\n _getValidDateOrNull(obj) {\r\n return (this._dateAdapter.isDateInstance(obj) && this._dateAdapter.isValid(obj)) ? obj : null;\r\n }\r\n}\nNgxMatDatetimeInput.ɵfac = function NgxMatDatetimeInput_Factory(t) { return new (t || NgxMatDatetimeInput)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(NgxMatDateAdapter, 8), ɵngcc0.ɵɵdirectiveInject(NGX_MAT_DATE_FORMATS, 8), ɵngcc0.ɵɵdirectiveInject(ɵngcc7.MatFormField, 8)); };\nNgxMatDatetimeInput.ɵdir = /*@__PURE__*/ ɵngcc0.ɵɵdefineDirective({ type: NgxMatDatetimeInput, selectors: [[\"input\", \"ngxMatDatetimePicker\", \"\"]], hostVars: 5, hostBindings: function NgxMatDatetimeInput_HostBindings(rf, ctx) { if (rf & 1) {\n ɵngcc0.ɵɵlistener(\"input\", function NgxMatDatetimeInput_input_HostBindingHandler($event) { return ctx._onInput($event.target.value); })(\"change\", function NgxMatDatetimeInput_change_HostBindingHandler() { return ctx._onChange(); })(\"blur\", function NgxMatDatetimeInput_blur_HostBindingHandler() { return ctx._onBlur(); })(\"focus\", function NgxMatDatetimeInput_focus_HostBindingHandler() { return ctx._onFocus(); })(\"keydown\", function NgxMatDatetimeInput_keydown_HostBindingHandler($event) { return ctx._onKeydown($event); });\n } if (rf & 2) {\n ɵngcc0.ɵɵhostProperty(\"disabled\", ctx.disabled);\n ɵngcc0.ɵɵattribute(\"aria-haspopup\", ctx._datepicker ? \"dialog\" : null)(\"aria-owns\", (ctx._datepicker == null ? null : ctx._datepicker.opened) && ctx._datepicker.id || null)(\"min\", ctx.min ? ctx._dateAdapter.toIso8601(ctx.min) : null)(\"max\", ctx.max ? ctx._dateAdapter.toIso8601(ctx.max) : null);\n } }, inputs: { value: \"value\", ngxMatDatetimePicker: \"ngxMatDatetimePicker\", ngxMatDatetimePickerFilter: \"ngxMatDatetimePickerFilter\", min: \"min\", max: \"max\", disabled: \"disabled\" }, outputs: { dateChange: \"dateChange\", dateInput: \"dateInput\" }, exportAs: [\"ngxMatDatetimePickerInput\"], features: [ɵngcc0.ɵɵProvidersFeature([\n MAT_DATEPICKER_VALUE_ACCESSOR,\n MAT_DATEPICKER_VALIDATORS,\n { provide: MAT_INPUT_VALUE_ACCESSOR, useExisting: NgxMatDatetimeInput },\n ])] });\r\n/** @nocollapse */\r\nNgxMatDatetimeInput.ctorParameters = () => [\r\n { type: ElementRef },\r\n { type: NgxMatDateAdapter, decorators: [{ type: Optional }] },\r\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [NGX_MAT_DATE_FORMATS,] }] },\r\n { type: MatFormField, decorators: [{ type: Optional }] }\r\n];\r\nNgxMatDatetimeInput.propDecorators = {\r\n ngxMatDatetimePicker: [{ type: Input }],\r\n ngxMatDatetimePickerFilter: [{ type: Input }],\r\n value: [{ type: Input }],\r\n min: [{ type: Input }],\r\n max: [{ type: Input }],\r\n disabled: [{ type: Input }],\r\n dateChange: [{ type: Output }],\r\n dateInput: [{ type: Output }]\r\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxMatDatetimeInput, [{\n type: Directive,\n args: [{\n selector: 'input[ngxMatDatetimePicker]',\n providers: [\n MAT_DATEPICKER_VALUE_ACCESSOR,\n MAT_DATEPICKER_VALIDATORS,\n { provide: MAT_INPUT_VALUE_ACCESSOR, useExisting: NgxMatDatetimeInput },\n ],\n host: {\n '[attr.aria-haspopup]': '_datepicker ? \"dialog\" : null',\n '[attr.aria-owns]': '(_datepicker?.opened && _datepicker.id) || null',\n '[attr.min]': 'min ? _dateAdapter.toIso8601(min) : null',\n '[attr.max]': 'max ? _dateAdapter.toIso8601(max) : null',\n '[disabled]': 'disabled',\n '(input)': '_onInput($event.target.value)',\n '(change)': '_onChange()',\n '(blur)': '_onBlur()',\n '(focus)': '_onFocus()',\n '(keydown)': '_onKeydown($event)'\n },\n exportAs: 'ngxMatDatetimePickerInput'\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: NgxMatDateAdapter, decorators: [{\n type: Optional\n }] }, { type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [NGX_MAT_DATE_FORMATS]\n }] }, { type: ɵngcc7.MatFormField, decorators: [{\n type: Optional\n }] }]; }, { dateChange: [{\n type: Output\n }], dateInput: [{\n type: Output\n }], value: [{\n type: Input\n }], ngxMatDatetimePicker: [{\n type: Input\n }], ngxMatDatetimePickerFilter: [{\n type: Input\n }], min: [{\n type: Input\n }], max: [{\n type: Input\n }], disabled: [{\n type: Input\n }] }); })();\n\nclass NgxMatTimepickerModule {\r\n}\nNgxMatTimepickerModule.ɵfac = function NgxMatTimepickerModule_Factory(t) { return new (t || NgxMatTimepickerModule)(); };\nNgxMatTimepickerModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgxMatTimepickerModule });\nNgxMatTimepickerModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ imports: [CommonModule,\n MatInputModule,\n ReactiveFormsModule,\n FormsModule,\n MatIconModule,\n MatButtonModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxMatTimepickerModule, [{\n type: NgModule,\n args: [{\n imports: [\n CommonModule,\n MatInputModule,\n ReactiveFormsModule,\n FormsModule,\n MatIconModule,\n MatButtonModule,\n ],\n exports: [\n NgxMatTimepickerComponent\n ],\n declarations: [\n NgxMatTimepickerComponent\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgxMatTimepickerModule, { declarations: function () { return [NgxMatTimepickerComponent]; }, imports: function () { return [CommonModule,\n MatInputModule,\n ReactiveFormsModule,\n FormsModule,\n MatIconModule,\n MatButtonModule]; }, exports: function () { return [NgxMatTimepickerComponent]; } }); })();\n\nclass NgxMatDatetimePickerModule {\r\n}\nNgxMatDatetimePickerModule.ɵfac = function NgxMatDatetimePickerModule_Factory(t) { return new (t || NgxMatDatetimePickerModule)(); };\nNgxMatDatetimePickerModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgxMatDatetimePickerModule });\nNgxMatDatetimePickerModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: [\n MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER,\n {\n provide: NGX_MAT_DATE_RANGE_SELECTION_STRATEGY,\n useClass: DefaultNgxMatCalendarRangeStrategy\n }\n ], imports: [CommonModule,\n MatDatepickerModule,\n MatDialogModule,\n PortalModule,\n FormsModule,\n MatIconModule,\n MatButtonModule,\n MatInputModule,\n NgxMatTimepickerModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxMatDatetimePickerModule, [{\n type: NgModule,\n args: [{\n imports: [\n CommonModule,\n MatDatepickerModule,\n MatDialogModule,\n PortalModule,\n FormsModule,\n MatIconModule,\n MatButtonModule,\n MatInputModule,\n NgxMatTimepickerModule\n ],\n exports: [\n NgxMatDatetimePicker,\n NgxMatDatetimeInput,\n NgxMatCalendar,\n NgxMatMonthView,\n NgxMatCalendarBody,\n NgxMatYearView,\n NgxMatMultiYearView,\n NgxMatCalendarHeader\n ],\n declarations: [\n NgxMatDatetimePicker,\n NgxMatDatetimeContent,\n NgxMatDatetimeInput,\n NgxMatCalendar,\n NgxMatMonthView,\n NgxMatCalendarBody,\n NgxMatYearView,\n NgxMatMultiYearView,\n NgxMatCalendarHeader\n ],\n entryComponents: [\n NgxMatDatetimeContent,\n NgxMatCalendarHeader\n ],\n providers: [\n MAT_DATEPICKER_SCROLL_STRATEGY_FACTORY_PROVIDER,\n {\n provide: NGX_MAT_DATE_RANGE_SELECTION_STRATEGY,\n useClass: DefaultNgxMatCalendarRangeStrategy\n }\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgxMatDatetimePickerModule, { declarations: function () { return [NgxMatDatetimePicker, NgxMatDatetimeContent, NgxMatDatetimeInput, NgxMatCalendar, NgxMatMonthView, NgxMatCalendarBody, NgxMatYearView, NgxMatMultiYearView, NgxMatCalendarHeader]; }, imports: function () { return [CommonModule,\n MatDatepickerModule,\n MatDialogModule,\n PortalModule,\n FormsModule,\n MatIconModule,\n MatButtonModule,\n MatInputModule, NgxMatTimepickerModule]; }, exports: function () { return [NgxMatDatetimePicker, NgxMatDatetimeInput, NgxMatCalendar, NgxMatMonthView, NgxMatCalendarBody, NgxMatYearView, NgxMatMultiYearView, NgxMatCalendarHeader]; } }); })();\n\n/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\r\n// TODO(mmalerba): Remove when we no longer support safari 9.\r\n/** Whether the browser supports the Intl API. */\r\nlet SUPPORTS_INTL_API;\r\n// We need a try/catch around the reference to `Intl`, because accessing it in some cases can\r\n// cause IE to throw. These cases are tied to particular versions of Windows and can happen if\r\n// the consumer is providing a polyfilled `Map`. See:\r\n// https://github.com/Microsoft/ChakraCore/issues/3189\r\n// https://github.com/angular/components/issues/15687\r\ntry {\r\n SUPPORTS_INTL_API = typeof Intl != 'undefined';\r\n}\r\ncatch (_a) {\r\n SUPPORTS_INTL_API = false;\r\n}\r\n/** The default month names to use if Intl API is not available. */\r\nconst DEFAULT_MONTH_NAMES = {\r\n 'long': [\r\n 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September',\r\n 'October', 'November', 'December'\r\n ],\r\n 'short': ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\r\n 'narrow': ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D']\r\n};\r\nconst ɵ0$1 = i => String(i + 1);\r\n/** The default date names to use if Intl API is not available. */\r\nconst DEFAULT_DATE_NAMES = range(31, ɵ0$1);\r\n/** The default day of the week names to use if Intl API is not available. */\r\nconst DEFAULT_DAY_OF_WEEK_NAMES = {\r\n 'long': ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\r\n 'short': ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\r\n 'narrow': ['S', 'M', 'T', 'W', 'T', 'F', 'S']\r\n};\r\n/**\r\n * Matches strings that have the form of a valid RFC 3339 string\r\n * (https://tools.ietf.org/html/rfc3339). Note that the string may not actually be a valid date\r\n * because the regex will match strings an with out of bounds month, date, etc.\r\n */\r\nconst ISO_8601_REGEX = /^\\d{4}-\\d{2}-\\d{2}(?:T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?(?:Z|(?:(?:\\+|-)\\d{2}:\\d{2}))?)?$/;\r\n/** Creates an array and fills it with values. */\r\nfunction range(length, valueFunction) {\r\n const valuesArray = Array(length);\r\n for (let i = 0; i < length; i++) {\r\n valuesArray[i] = valueFunction(i);\r\n }\r\n return valuesArray;\r\n}\r\n/** Adapts the native JS Date for use with cdk-based components that work with dates. */\r\nclass NgxMatNativeDateAdapter extends NgxMatDateAdapter {\r\n constructor(matDateLocale, platform) {\r\n super();\r\n /**\r\n * Whether to use `timeZone: 'utc'` with `Intl.DateTimeFormat` when formatting dates.\r\n * Without this `Intl.DateTimeFormat` sometimes chooses the wrong timeZone, which can throw off\r\n * the result. (e.g. in the en-US locale `new Date(1800, 7, 14).toLocaleDateString()`\r\n * will produce `'8/13/1800'`.\r\n *\r\n * TODO(mmalerba): drop this variable. It's not being used in the code right now. We're now\r\n * getting the string representation of a Date object from its utc representation. We're keeping\r\n * it here for sometime, just for precaution, in case we decide to revert some of these changes\r\n * though.\r\n */\r\n this.useUtcForDisplay = true;\r\n super.setLocale(matDateLocale);\r\n // IE does its own time zone correction, so we disable this on IE.\r\n this.useUtcForDisplay = !platform.TRIDENT;\r\n this._clampDate = platform.TRIDENT || platform.EDGE;\r\n }\r\n getYear(date) {\r\n return date.getFullYear();\r\n }\r\n getMonth(date) {\r\n return date.getMonth();\r\n }\r\n getDate(date) {\r\n return date.getDate();\r\n }\r\n getDayOfWeek(date) {\r\n return date.getDay();\r\n }\r\n getMonthNames(style) {\r\n if (SUPPORTS_INTL_API) {\r\n const dtf = new Intl.DateTimeFormat(this.locale, { month: style, timeZone: 'utc' });\r\n return range(12, i => this._stripDirectionalityCharacters(this._format(dtf, new Date(2017, i, 1))));\r\n }\r\n return DEFAULT_MONTH_NAMES[style];\r\n }\r\n getDateNames() {\r\n if (SUPPORTS_INTL_API) {\r\n const dtf = new Intl.DateTimeFormat(this.locale, { day: 'numeric', timeZone: 'utc' });\r\n return range(31, i => this._stripDirectionalityCharacters(this._format(dtf, new Date(2017, 0, i + 1))));\r\n }\r\n return DEFAULT_DATE_NAMES;\r\n }\r\n getDayOfWeekNames(style) {\r\n if (SUPPORTS_INTL_API) {\r\n const dtf = new Intl.DateTimeFormat(this.locale, { weekday: style, timeZone: 'utc' });\r\n return range(7, i => this._stripDirectionalityCharacters(this._format(dtf, new Date(2017, 0, i + 1))));\r\n }\r\n return DEFAULT_DAY_OF_WEEK_NAMES[style];\r\n }\r\n getYearName(date) {\r\n if (SUPPORTS_INTL_API) {\r\n const dtf = new Intl.DateTimeFormat(this.locale, { year: 'numeric', timeZone: 'utc' });\r\n return this._stripDirectionalityCharacters(this._format(dtf, date));\r\n }\r\n return String(this.getYear(date));\r\n }\r\n getFirstDayOfWeek() {\r\n // We can't tell using native JS Date what the first day of the week is, we default to Sunday.\r\n return 0;\r\n }\r\n getNumDaysInMonth(date) {\r\n return this.getDate(this._createDateWithOverflow(this.getYear(date), this.getMonth(date) + 1, 0));\r\n }\r\n clone(date) {\r\n return new Date(date.getTime());\r\n }\r\n createDate(year, month, date) {\r\n // Check for invalid month and date (except upper bound on date which we have to check after\r\n // creating the Date).\r\n if (month < 0 || month > 11) {\r\n throw Error(`Invalid month index \"${month}\". Month index has to be between 0 and 11.`);\r\n }\r\n if (date < 1) {\r\n throw Error(`Invalid date \"${date}\". Date has to be greater than 0.`);\r\n }\r\n let result = this._createDateWithOverflow(year, month, date);\r\n // Check that the date wasn't above the upper bound for the month, causing the month to overflow\r\n if (result.getMonth() != month) {\r\n throw Error(`Invalid date \"${date}\" for month with index \"${month}\".`);\r\n }\r\n return result;\r\n }\r\n today() {\r\n return new Date();\r\n }\r\n parse(value) {\r\n // We have no way using the native JS Date to set the parse format or locale, so we ignore these\r\n // parameters.\r\n if (typeof value == 'number') {\r\n return new Date(value);\r\n }\r\n return value ? new Date(Date.parse(value)) : null;\r\n }\r\n format(date, displayFormat) {\r\n if (!this.isValid(date)) {\r\n throw Error('NativeDateAdapter: Cannot format invalid date.');\r\n }\r\n if (SUPPORTS_INTL_API) {\r\n // On IE and Edge the i18n API will throw a hard error that can crash the entire app\r\n // if we attempt to format a date whose year is less than 1 or greater than 9999.\r\n if (this._clampDate && (date.getFullYear() < 1 || date.getFullYear() > 9999)) {\r\n date = this.clone(date);\r\n date.setFullYear(Math.max(1, Math.min(9999, date.getFullYear())));\r\n }\r\n displayFormat = Object.assign(Object.assign({}, displayFormat), { timeZone: 'utc' });\r\n const dtf = new Intl.DateTimeFormat(this.locale, displayFormat);\r\n return this._stripDirectionalityCharacters(this._format(dtf, date));\r\n }\r\n return this._stripDirectionalityCharacters(date.toDateString());\r\n }\r\n addCalendarYears(date, years) {\r\n return this.addCalendarMonths(date, years * 12);\r\n }\r\n addCalendarMonths(date, months) {\r\n let newDate = this._createDateWithOverflow(this.getYear(date), this.getMonth(date) + months, this.getDate(date));\r\n // It's possible to wind up in the wrong month if the original month has more days than the new\r\n // month. In this case we want to go to the last day of the desired month.\r\n // Note: the additional + 12 % 12 ensures we end up with a positive number, since JS % doesn't\r\n // guarantee this.\r\n if (this.getMonth(newDate) != ((this.getMonth(date) + months) % 12 + 12) % 12) {\r\n newDate = this._createDateWithOverflow(this.getYear(newDate), this.getMonth(newDate), 0);\r\n }\r\n return newDate;\r\n }\r\n addCalendarDays(date, days) {\r\n return this._createDateWithOverflow(this.getYear(date), this.getMonth(date), this.getDate(date) + days);\r\n }\r\n toIso8601(date) {\r\n return [\r\n date.getUTCFullYear(),\r\n this._2digit(date.getUTCMonth() + 1),\r\n this._2digit(date.getUTCDate())\r\n ].join('-');\r\n }\r\n /**\r\n * Returns the given value if given a valid Date or null. Deserializes valid ISO 8601 strings\r\n * (https://www.ietf.org/rfc/rfc3339.txt) into valid Dates and empty string into null. Returns an\r\n * invalid date for all other values.\r\n */\r\n deserialize(value) {\r\n if (typeof value === 'string') {\r\n if (!value) {\r\n return null;\r\n }\r\n // The `Date` constructor accepts formats other than ISO 8601, so we need to make sure the\r\n // string is the right format first.\r\n if (ISO_8601_REGEX.test(value)) {\r\n let date = new Date(value);\r\n if (this.isValid(date)) {\r\n return date;\r\n }\r\n }\r\n }\r\n return super.deserialize(value);\r\n }\r\n isDateInstance(obj) {\r\n return obj instanceof Date;\r\n }\r\n isValid(date) {\r\n return !isNaN(date.getTime());\r\n }\r\n invalid() {\r\n return new Date(NaN);\r\n }\r\n getHour(date) {\r\n return date.getHours();\r\n }\r\n getMinute(date) {\r\n return date.getMinutes();\r\n }\r\n getSecond(date) {\r\n return date.getSeconds();\r\n }\r\n setHour(date, value) {\r\n date.setHours(value);\r\n }\r\n setMinute(date, value) {\r\n date.setMinutes(value);\r\n }\r\n setSecond(date, value) {\r\n date.setSeconds(value);\r\n }\r\n /** Creates a date but allows the month and date to overflow. */\r\n _createDateWithOverflow(year, month, date) {\r\n const result = new Date(year, month, date);\r\n // We need to correct for the fact that JS native Date treats years in range [0, 99] as\r\n // abbreviations for 19xx.\r\n if (year >= 0 && year < 100) {\r\n result.setFullYear(this.getYear(result) - 1900);\r\n }\r\n return result;\r\n }\r\n /**\r\n * Pads a number to make it two digits.\r\n * @param n The number to pad.\r\n * @returns The padded number.\r\n */\r\n _2digit(n) {\r\n return ('00' + n).slice(-2);\r\n }\r\n /**\r\n * Strip out unicode LTR and RTL characters. Edge and IE insert these into formatted dates while\r\n * other browsers do not. We remove them to make output consistent and because they interfere with\r\n * date parsing.\r\n * @param str The string to strip direction characters from.\r\n * @returns The stripped string.\r\n */\r\n _stripDirectionalityCharacters(str) {\r\n return str.replace(/[\\u200e\\u200f]/g, '');\r\n }\r\n /**\r\n * When converting Date object to string, javascript built-in functions may return wrong\r\n * results because it applies its internal DST rules. The DST rules around the world change\r\n * very frequently, and the current valid rule is not always valid in previous years though.\r\n * We work around this problem building a new Date object which has its internal UTC\r\n * representation with the local date and time.\r\n * @param dtf Intl.DateTimeFormat object, containg the desired string format. It must have\r\n * timeZone set to 'utc' to work fine.\r\n * @param date Date from which we want to get the string representation according to dtf\r\n * @returns A Date object with its UTC representation based on the passed in date info\r\n */\r\n _format(dtf, date) {\r\n // Passing the year to the constructor causes year numbers <100 to be converted to 19xx.\r\n // To work around this we use `setUTCFullYear` and `setUTCHours` instead.\r\n const d = new Date();\r\n d.setUTCFullYear(date.getFullYear(), date.getMonth(), date.getDate());\r\n d.setUTCHours(date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\r\n return dtf.format(d);\r\n }\r\n}\nNgxMatNativeDateAdapter.ɵfac = function NgxMatNativeDateAdapter_Factory(t) { return new (t || NgxMatNativeDateAdapter)(ɵngcc0.ɵɵinject(MAT_DATE_LOCALE, 8), ɵngcc0.ɵɵinject(ɵngcc12.Platform)); };\nNgxMatNativeDateAdapter.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: NgxMatNativeDateAdapter, factory: NgxMatNativeDateAdapter.ɵfac });\r\n/** @nocollapse */\r\nNgxMatNativeDateAdapter.ctorParameters = () => [\r\n { type: String, decorators: [{ type: Optional }, { type: Inject, args: [MAT_DATE_LOCALE,] }] },\r\n { type: Platform }\r\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxMatNativeDateAdapter, [{\n type: Injectable\n }], function () { return [{ type: String, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [MAT_DATE_LOCALE]\n }] }, { type: ɵngcc12.Platform }]; }, null); })();\n\n/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\r\nconst DEFAULT_DATE_INPUT = {\r\n year: 'numeric', month: 'numeric', day: 'numeric',\r\n hour12: false, hour: \"2-digit\", minute: \"2-digit\", second: \"2-digit\"\r\n};\r\nconst NGX_MAT_NATIVE_DATE_FORMATS = {\r\n parse: {\r\n dateInput: DEFAULT_DATE_INPUT,\r\n },\r\n display: {\r\n dateInput: DEFAULT_DATE_INPUT,\r\n monthYearLabel: { year: 'numeric', month: 'short' },\r\n dateA11yLabel: { year: 'numeric', month: 'long', day: 'numeric' },\r\n monthYearA11yLabel: { year: 'numeric', month: 'long' },\r\n }\r\n};\n\n/**\r\n * @license\r\n * Copyright Google LLC All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file at https://angular.io/license\r\n */\r\nclass NgxNativeDateModule {\r\n}\nNgxNativeDateModule.ɵfac = function NgxNativeDateModule_Factory(t) { return new (t || NgxNativeDateModule)(); };\nNgxNativeDateModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgxNativeDateModule });\nNgxNativeDateModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: [\n { provide: NgxMatDateAdapter, useClass: NgxMatNativeDateAdapter },\n ], imports: [PlatformModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxNativeDateModule, [{\n type: NgModule,\n args: [{\n imports: [PlatformModule],\n providers: [\n { provide: NgxMatDateAdapter, useClass: NgxMatNativeDateAdapter },\n ]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgxNativeDateModule, { imports: function () { return [PlatformModule]; } }); })();\r\nconst ɵ0 = NGX_MAT_NATIVE_DATE_FORMATS;\r\nclass NgxMatNativeDateModule {\r\n}\nNgxMatNativeDateModule.ɵfac = function NgxMatNativeDateModule_Factory(t) { return new (t || NgxMatNativeDateModule)(); };\nNgxMatNativeDateModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: NgxMatNativeDateModule });\nNgxMatNativeDateModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({ providers: [{ provide: NGX_MAT_DATE_FORMATS, useValue: ɵ0 }], imports: [NgxNativeDateModule] });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(NgxMatNativeDateModule, [{\n type: NgModule,\n args: [{\n imports: [NgxNativeDateModule],\n providers: [{ provide: NGX_MAT_DATE_FORMATS, useValue: ɵ0 }]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(NgxMatNativeDateModule, { imports: [NgxNativeDateModule] }); })();\n\n/*\r\n * Public API Surface of ngx-mat-datetime-picker\r\n */\n\n/**\r\n * Generated bundle index. Do not edit.\r\n */\n\nexport { DefaultNgxMatCalendarRangeStrategy, MAT_DATEPICKER_VALIDATORS, MAT_DATEPICKER_VALUE_ACCESSOR, MatDatetimePickerInputEvent, NGX_MAT_DATE_FORMATS, NGX_MAT_DATE_RANGE_SELECTION_STRATEGY, NGX_MAT_NATIVE_DATE_FORMATS, NgxMatCalendar, NgxMatCalendarBody, NgxMatCalendarCell, NgxMatCalendarHeader, NgxMatDateAdapter, NgxMatDatetimeContent, NgxMatDatetimeInput, NgxMatDatetimePicker, NgxMatDatetimePickerModule, NgxMatMonthView, NgxMatMultiYearView, NgxMatNativeDateAdapter, NgxMatNativeDateModule, NgxMatTimepickerComponent, NgxMatTimepickerModule, NgxMatYearView, NgxNativeDateModule, getActiveOffset, isSameMultiYearView, yearsPerPage, yearsPerRow };\n\n"],"mappings":"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"},"metadata":{},"sourceType":"module"}