mirror of
https://code.equilibrium.co.ao/ITO/doneit-web.git
synced 2026-04-19 04:57:52 +00:00
1 line
630 KiB
JSON
1 line
630 KiB
JSON
{"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 If there's not enough space in the first row, create a separate label row. We mark this row as\\r\\n aria-hidden because we don't want it to be read out as one of the weeks in the month.\\r\\n-->\\r\\n<tr *ngIf=\\\"_firstRowOffset < labelMinRequiredCells\\\" aria-hidden=\\\"true\\\">\\r\\n <td class=\\\"mat-calendar-body-label\\\"\\r\\n [attr.colspan]=\\\"numCols\\\"\\r\\n [style.paddingTop]=\\\"_cellPadding\\\"\\r\\n [style.paddingBottom]=\\\"_cellPadding\\\">\\r\\n {{label}}\\r\\n </td>\\r\\n</tr>\\r\\n\\r\\n<!-- Create the first row separately so we can include a special spacer cell. -->\\r\\n<tr *ngFor=\\\"let row of rows; let rowIndex = index\\\" role=\\\"row\\\">\\r\\n <!--\\r\\n We mark this cell as aria-hidden so it doesn't get read out as one of the days in the week.\\r\\n The aspect ratio of the table cells is maintained by setting the top and bottom padding as a\\r\\n percentage of the width (a variant of the trick described here:\\r\\n https://www.w3schools.com/howto/howto_css_aspect_ratio.asp).\\r\\n -->\\r\\n <td *ngIf=\\\"rowIndex === 0 && _firstRowOffset\\\"\\r\\n aria-hidden=\\\"true\\\"\\r\\n class=\\\"mat-calendar-body-label\\\"\\r\\n [attr.colspan]=\\\"_firstRowOffset\\\"\\r\\n [style.paddingTop]=\\\"_cellPadding\\\"\\r\\n [style.paddingBottom]=\\\"_cellPadding\\\">\\r\\n {{_firstRowOffset >= labelMinRequiredCells ? label : ''}}\\r\\n </td>\\r\\n <td *ngFor=\\\"let item of row; let colIndex = index\\\"\\r\\n role=\\\"gridcell\\\"\\r\\n class=\\\"mat-calendar-body-cell\\\"\\r\\n [ngClass]=\\\"item.cssClasses\\\"\\r\\n [tabindex]=\\\"_isActiveCell(rowIndex, colIndex) ? 0 : -1\\\"\\r\\n [attr.data-mat-row]=\\\"rowIndex\\\"\\r\\n [attr.data-mat-col]=\\\"colIndex\\\"\\r\\n [class.mat-calendar-body-disabled]=\\\"!item.enabled\\\"\\r\\n [class.mat-calendar-body-active]=\\\"_isActiveCell(rowIndex, colIndex)\\\"\\r\\n [class.mat-calendar-body-range-start]=\\\"_isRangeStart(item.compareValue)\\\"\\r\\n [class.mat-calendar-body-range-end]=\\\"_isRangeEnd(item.compareValue)\\\"\\r\\n [class.mat-calendar-body-in-range]=\\\"_isInRange(item.compareValue)\\\"\\r\\n [class.mat-calendar-body-comparison-bridge-start]=\\\"_isComparisonBridgeStart(item.compareValue, rowIndex, colIndex)\\\"\\r\\n [class.mat-calendar-body-comparison-bridge-end]=\\\"_isComparisonBridgeEnd(item.compareValue, rowIndex, colIndex)\\\"\\r\\n [class.mat-calendar-body-comparison-start]=\\\"_isComparisonStart(item.compareValue)\\\"\\r\\n [class.mat-calendar-body-comparison-end]=\\\"_isComparisonEnd(item.compareValue)\\\"\\r\\n [class.mat-calendar-body-in-comparison-range]=\\\"_isInComparisonRange(item.compareValue)\\\"\\r\\n [class.mat-calendar-body-preview-start]=\\\"_isPreviewStart(item.compareValue)\\\"\\r\\n [class.mat-calendar-body-preview-end]=\\\"_isPreviewEnd(item.compareValue)\\\"\\r\\n [class.mat-calendar-body-in-preview]=\\\"_isInPreview(item.compareValue)\\\"\\r\\n [attr.aria-label]=\\\"item.ariaLabel\\\"\\r\\n [attr.aria-disabled]=\\\"!item.enabled || null\\\"\\r\\n [attr.aria-selected]=\\\"_isSelected(item)\\\"\\r\\n (click)=\\\"_cellClicked(item, $event)\\\"\\r\\n [style.width]=\\\"_cellWidth\\\"\\r\\n [style.paddingTop]=\\\"_cellPadding\\\"\\r\\n [style.paddingBottom]=\\\"_cellPadding\\\">\\r\\n <div class=\\\"mat-calendar-body-cell-content mat-focus-indicator\\\"\\r\\n [class.mat-calendar-body-selected]=\\\"_isSelected(item)\\\"\\r\\n [class.mat-calendar-body-today]=\\\"todayValue === item.compareValue\\\">\\r\\n {{item.displayValue}}\\r\\n </div>\\r\\n <div class=\\\"mat-calendar-body-cell-preview\\\"></div>\\r\\n </td>\\r\\n</tr>\\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: \"<table class=\\\"mat-calendar-table\\\" role=\\\"presentation\\\">\\r\\n <thead class=\\\"mat-calendar-table-header\\\">\\r\\n <tr>\\r\\n <th scope=\\\"col\\\" *ngFor=\\\"let day of _weekdays\\\" [attr.aria-label]=\\\"day.long\\\">{{day.narrow}}</th>\\r\\n </tr>\\r\\n <tr><th class=\\\"mat-calendar-table-header-divider\\\" colspan=\\\"7\\\" aria-hidden=\\\"true\\\"></th></tr>\\r\\n </thead>\\r\\n <tbody ngx-mat-calendar-body\\r\\n [label]=\\\"_monthLabel\\\"\\r\\n [rows]=\\\"_weeks\\\"\\r\\n [todayValue]=\\\"_todayDate!\\\"\\r\\n [startValue]=\\\"_rangeStart!\\\"\\r\\n [endValue]=\\\"_rangeEnd!\\\"\\r\\n [comparisonStart]=\\\"_comparisonRangeStart\\\"\\r\\n [comparisonEnd]=\\\"_comparisonRangeEnd\\\"\\r\\n [previewStart]=\\\"_previewStart\\\"\\r\\n [previewEnd]=\\\"_previewEnd\\\"\\r\\n [isRange]=\\\"_isRange\\\"\\r\\n [labelMinRequiredCells]=\\\"3\\\"\\r\\n [activeCell]=\\\"_dateAdapter.getDate(activeDate) - 1\\\"\\r\\n (selectedValueChange)=\\\"_dateSelected($event)\\\"\\r\\n (previewChange)=\\\"_previewChanged($event)\\\"\\r\\n (keydown)=\\\"_handleCalendarBodyKeydown($event)\\\">\\r\\n </tbody>\\r\\n</table>\\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: \"<table class=\\\"mat-calendar-table\\\" role=\\\"presentation\\\">\\r\\n <thead class=\\\"mat-calendar-table-header\\\">\\r\\n <tr><th class=\\\"mat-calendar-table-header-divider\\\" colspan=\\\"4\\\"></th></tr>\\r\\n </thead>\\r\\n <tbody ngx-mat-calendar-body\\r\\n [rows]=\\\"_years\\\"\\r\\n [todayValue]=\\\"_todayYear\\\"\\r\\n [startValue]=\\\"_selectedYear!\\\"\\r\\n [endValue]=\\\"_selectedYear!\\\"\\r\\n [numCols]=\\\"4\\\"\\r\\n [cellAspectRatio]=\\\"4 / 7\\\"\\r\\n [activeCell]=\\\"_getActiveCell()\\\"\\r\\n (selectedValueChange)=\\\"_yearSelected($event)\\\"\\r\\n (keydown)=\\\"_handleCalendarBodyKeydown($event)\\\">\\r\\n </tbody>\\r\\n</table>\\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: \"<table class=\\\"mat-calendar-table\\\" role=\\\"presentation\\\">\\r\\n <thead class=\\\"mat-calendar-table-header\\\">\\r\\n <tr><th class=\\\"mat-calendar-table-header-divider\\\" colspan=\\\"4\\\"></th></tr>\\r\\n </thead>\\r\\n <tbody ngx-mat-calendar-body\\r\\n [label]=\\\"_yearLabel\\\"\\r\\n [rows]=\\\"_months\\\"\\r\\n [todayValue]=\\\"_todayMonth!\\\"\\r\\n [startValue]=\\\"_selectedMonth!\\\"\\r\\n [endValue]=\\\"_selectedMonth!\\\"\\r\\n [labelMinRequiredCells]=\\\"2\\\"\\r\\n [numCols]=\\\"4\\\"\\r\\n [cellAspectRatio]=\\\"4 / 7\\\"\\r\\n [activeCell]=\\\"_dateAdapter.getMonth(activeDate)\\\"\\r\\n (selectedValueChange)=\\\"_monthSelected($event)\\\"\\r\\n (keydown)=\\\"_handleCalendarBodyKeydown($event)\\\">\\r\\n </tbody>\\r\\n</table>\\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: \"<div class=\\\"mat-calendar-header\\\">\\r\\n <div class=\\\"mat-calendar-controls\\\">\\r\\n <button mat-button type=\\\"button\\\" class=\\\"mat-calendar-period-button\\\"\\r\\n (click)=\\\"currentPeriodClicked()\\\" [attr.aria-label]=\\\"periodButtonLabel\\\"\\r\\n cdkAriaLive=\\\"polite\\\">\\r\\n {{periodButtonText}}\\r\\n <div class=\\\"mat-calendar-arrow\\\"\\r\\n [class.mat-calendar-invert]=\\\"calendar.currentView != 'month'\\\"></div>\\r\\n </button>\\r\\n\\r\\n <div class=\\\"mat-calendar-spacer\\\"></div>\\r\\n\\r\\n <ng-content></ng-content>\\r\\n\\r\\n <button mat-icon-button type=\\\"button\\\" class=\\\"mat-calendar-previous-button\\\"\\r\\n [disabled]=\\\"!previousEnabled()\\\" (click)=\\\"previousClicked()\\\"\\r\\n [attr.aria-label]=\\\"prevButtonLabel\\\">\\r\\n </button>\\r\\n\\r\\n <button mat-icon-button type=\\\"button\\\" class=\\\"mat-calendar-next-button\\\"\\r\\n [disabled]=\\\"!nextEnabled()\\\" (click)=\\\"nextClicked()\\\"\\r\\n [attr.aria-label]=\\\"nextButtonLabel\\\">\\r\\n </button>\\r\\n </div>\\r\\n</div>\\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<ng-template [cdkPortalOutlet]=\\\"_calendarHeaderPortal\\\"></ng-template>\\r\\n\\r\\n<div class=\\\"mat-calendar-content\\\" [ngSwitch]=\\\"currentView\\\" cdkMonitorSubtreeFocus tabindex=\\\"-1\\\">\\r\\n <ngx-mat-month-view\\r\\n *ngSwitchCase=\\\"'month'\\\"\\r\\n [(activeDate)]=\\\"activeDate\\\"\\r\\n [selected]=\\\"selected\\\"\\r\\n [dateFilter]=\\\"dateFilter\\\"\\r\\n [maxDate]=\\\"maxDate\\\"\\r\\n [minDate]=\\\"minDate\\\"\\r\\n [dateClass]=\\\"dateClass\\\"\\r\\n (selectedChange)=\\\"_dateSelected($event)\\\"\\r\\n (_userSelection)=\\\"_userSelected()\\\">\\r\\n </ngx-mat-month-view>\\r\\n\\r\\n <ngx-mat-year-view\\r\\n *ngSwitchCase=\\\"'year'\\\"\\r\\n [(activeDate)]=\\\"activeDate\\\"\\r\\n [selected]=\\\"selected\\\"\\r\\n [dateFilter]=\\\"dateFilter\\\"\\r\\n [maxDate]=\\\"maxDate\\\"\\r\\n [minDate]=\\\"minDate\\\"\\r\\n (monthSelected)=\\\"_monthSelectedInYearView($event)\\\"\\r\\n (selectedChange)=\\\"_goToDateInView($event, 'month')\\\">\\r\\n </ngx-mat-year-view>\\r\\n\\r\\n <ngx-mat-multi-year-view\\r\\n *ngSwitchCase=\\\"'multi-year'\\\"\\r\\n [(activeDate)]=\\\"activeDate\\\"\\r\\n [selected]=\\\"selected\\\"\\r\\n [dateFilter]=\\\"dateFilter\\\"\\r\\n [maxDate]=\\\"maxDate\\\"\\r\\n [minDate]=\\\"minDate\\\"\\r\\n (yearSelected)=\\\"_yearSelectedInMultiYearView($event)\\\"\\r\\n (selectedChange)=\\\"_goToDateInView($event, 'year')\\\">\\r\\n </ngx-mat-multi-year-view>\\r\\n</div>\\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: \"<form [formGroup]=\\\"form\\\">\\r\\n <table class=\\\"ngx-mat-timepicker-table\\\">\\r\\n <tbody class=\\\"ngx-mat-timepicker-tbody\\\">\\r\\n <tr *ngIf=\\\"showSpinners\\\">\\r\\n <td>\\r\\n <button type=\\\"button\\\" mat-icon-button aria-label=\\\"expand_less icon\\\" (click)=\\\"change('hour', true)\\\"\\r\\n [disabled]=\\\"disabled\\\">\\r\\n <mat-icon>expand_less</mat-icon>\\r\\n </button>\\r\\n </td>\\r\\n <td></td>\\r\\n <td>\\r\\n <button type=\\\"button\\\" mat-icon-button aria-label=\\\"expand_less icon\\\" (click)=\\\"change('minute', true)\\\"\\r\\n [disabled]=\\\"disabled || disableMinute\\\">\\r\\n <mat-icon>expand_less</mat-icon>\\r\\n </button> </td>\\r\\n <td></td>\\r\\n <td *ngIf=\\\"showSeconds\\\">\\r\\n <button type=\\\"button\\\" mat-icon-button aria-label=\\\"expand_less icon\\\" (click)=\\\"change('second', true)\\\"\\r\\n [disabled]=\\\"disabled || disableMinute\\\">\\r\\n <mat-icon>expand_less</mat-icon>\\r\\n </button>\\r\\n </td>\\r\\n <td *ngIf=\\\"enableMeridian\\\" class=\\\"ngx-mat-timepicker-spacer\\\"></td>\\r\\n <td *ngIf=\\\"enableMeridian\\\"></td>\\r\\n </tr>\\r\\n\\r\\n <tr>\\r\\n <td>\\r\\n <mat-form-field appearance=\\\"legacy\\\">\\r\\n <input type=\\\"text\\\" matInput (input)=\\\"formatInput($any($event).target)\\\" maxlength=\\\"2\\\" formControlName=\\\"hour\\\"\\r\\n (keydown.ArrowUp)=\\\"change('hour', true); $event.preventDefault()\\\"\\r\\n (keydown.ArrowDown)=\\\"change('hour', false); $event.preventDefault()\\\" (blur)=\\\"change('hour')\\\">\\r\\n </mat-form-field>\\r\\n </td>\\r\\n <td class=\\\"ngx-mat-timepicker-spacer\\\">:</td>\\r\\n <td>\\r\\n <mat-form-field appearance=\\\"legacy\\\">\\r\\n <input type=\\\"text\\\" matInput (input)=\\\"formatInput($any($event).target)\\\" maxlength=\\\"2\\\"\\r\\n formControlName=\\\"minute\\\" (keydown.ArrowUp)=\\\"change('minute', true); $event.preventDefault()\\\"\\r\\n (keydown.ArrowDown)=\\\"change('minute', false); $event.preventDefault()\\\" (blur)=\\\"change('minute')\\\">\\r\\n </mat-form-field>\\r\\n </td>\\r\\n <td *ngIf=\\\"showSeconds\\\" class=\\\"ngx-mat-timepicker-spacer\\\">:</td>\\r\\n <td *ngIf=\\\"showSeconds\\\">\\r\\n <mat-form-field appearance=\\\"legacy\\\">\\r\\n <input type=\\\"text\\\" matInput (input)=\\\"formatInput($any($event).target)\\\" maxlength=\\\"2\\\"\\r\\n formControlName=\\\"second\\\" (keydown.ArrowUp)=\\\"change('second', true); $event.preventDefault()\\\"\\r\\n (keydown.ArrowDown)=\\\"change('second', false); $event.preventDefault()\\\" (blur)=\\\"change('second')\\\">\\r\\n </mat-form-field>\\r\\n </td>\\r\\n\\r\\n <td *ngIf=\\\"enableMeridian\\\" class=\\\"ngx-mat-timepicker-spacer\\\"></td>\\r\\n <td *ngIf=\\\"enableMeridian\\\" class=\\\"ngx-mat-timepicker-meridian\\\">\\r\\n <button mat-button (click)=\\\"toggleMeridian()\\\" mat-stroked-button [color]=\\\"color\\\" [disabled]=\\\"disabled\\\">\\r\\n {{meridian}}\\r\\n </button>\\r\\n </td>\\r\\n </tr>\\r\\n\\r\\n <tr *ngIf=\\\"showSpinners\\\">\\r\\n <td>\\r\\n <button type=\\\"button\\\" mat-icon-button aria-label=\\\"expand_more icon\\\" (click)=\\\"change('hour', false)\\\"\\r\\n [disabled]=\\\"disabled\\\">\\r\\n <mat-icon>expand_more</mat-icon>\\r\\n </button> </td>\\r\\n <td></td>\\r\\n <td>\\r\\n <button type=\\\"button\\\" mat-icon-button aria-label=\\\"expand_more icon\\\" (click)=\\\"change('minute', false)\\\"\\r\\n [disabled]=\\\"disabled || disableMinute\\\">\\r\\n <mat-icon>expand_more</mat-icon>\\r\\n </button> </td>\\r\\n <td *ngIf=\\\"showSeconds\\\"></td>\\r\\n <td *ngIf=\\\"showSeconds\\\">\\r\\n <button type=\\\"button\\\" mat-icon-button aria-label=\\\"expand_more icon\\\" (click)=\\\"change('second', false)\\\"\\r\\n [disabled]=\\\"disabled || disableMinute\\\">\\r\\n <mat-icon>expand_more</mat-icon>\\r\\n </button>\\r\\n </td>\\r\\n <td *ngIf=\\\"enableMeridian\\\" class=\\\"ngx-mat-timepicker-spacer\\\"></td>\\r\\n <td *ngIf=\\\"enableMeridian\\\"></td>\\r\\n </tr>\\r\\n </tbody>\\r\\n </table>\\r\\n</form>\",\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: \"<ngx-mat-calendar cdkTrapFocus [id]=\\\"datepicker.id\\\" [ngClass]=\\\"datepicker.panelClass\\\" [startAt]=\\\"datepicker.startAt\\\"\\r\\n [startView]=\\\"datepicker.startView\\\" [minDate]=\\\"datepicker._minDate\\\" [maxDate]=\\\"datepicker._maxDate\\\"\\r\\n [dateFilter]=\\\"datepicker._dateFilter\\\" [headerComponent]=\\\"datepicker.calendarHeaderComponent\\\"\\r\\n [selected]=\\\"datepicker._selected\\\" [dateClass]=\\\"datepicker.dateClass\\\" [@fadeInCalendar]=\\\"'enter'\\\"\\r\\n (selectedChange)=\\\"datepicker.select($event)\\\" (yearSelected)=\\\"datepicker._selectYear($event)\\\"\\r\\n (monthSelected)=\\\"datepicker._selectMonth($event)\\\">\\r\\n</ngx-mat-calendar>\\r\\n<ng-container *ngIf=\\\"isViewMonth\\\">\\r\\n <div *ngIf=\\\"!datepicker._hideTime\\\" class=\\\"time-container\\\" [class.disable-seconds]=\\\"!datepicker._showSeconds\\\">\\r\\n <ngx-mat-timepicker [showSpinners]=\\\"datepicker._showSpinners\\\" [showSeconds]=\\\"datepicker._showSeconds\\\"\\r\\n [disabled]=\\\"datepicker._disabled\\\" [stepHour]=\\\"datepicker._stepHour\\\" [stepMinute]=\\\"datepicker._stepMinute\\\"\\r\\n [stepSecond]=\\\"datepicker._stepSecond\\\" [(ngModel)]=\\\"datepicker._selected\\\" [color]=\\\"datepicker._color\\\"\\r\\n [enableMeridian]=\\\"datepicker._enableMeridian\\\" [disableMinute]=\\\"datepicker._disableMinute\\\">\\r\\n </ngx-mat-timepicker>\\r\\n </div>\\r\\n <div class=\\\"actions\\\">\\r\\n <button mat-button (click)=\\\"datepicker.ok()\\\" mat-stroked-button [color]=\\\"datepicker._color\\\" cdkFocusInitial\\r\\n [disabled]=\\\"!valid\\\">\\r\\n <mat-icon *ngIf=\\\"!datepicker._customIcon\\\">done</mat-icon>\\r\\n <ng-template [cdkPortalOutlet]=\\\"_templateCustomIconPortal\\\"></ng-template>\\r\\n </button>\\r\\n </div>\\r\\n</ng-container>\",\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 `<input>`. */\n this.dateChange = new EventEmitter();\n /** Emits when an `input` event is fired on this `<input>`. */\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 If there's not enough space in the first row, create a separate label row. We mark this row as\\r\\n aria-hidden because we don't want it to be read out as one of the weeks in the month.\\r\\n-->\\r\\n<tr *ngIf=\\\"_firstRowOffset < labelMinRequiredCells\\\" aria-hidden=\\\"true\\\">\\r\\n <td class=\\\"mat-calendar-body-label\\\"\\r\\n [attr.colspan]=\\\"numCols\\\"\\r\\n [style.paddingTop]=\\\"_cellPadding\\\"\\r\\n [style.paddingBottom]=\\\"_cellPadding\\\">\\r\\n {{label}}\\r\\n </td>\\r\\n</tr>\\r\\n\\r\\n<!-- Create the first row separately so we can include a special spacer cell. -->\\r\\n<tr *ngFor=\\\"let row of rows; let rowIndex = index\\\" role=\\\"row\\\">\\r\\n <!--\\r\\n We mark this cell as aria-hidden so it doesn't get read out as one of the days in the week.\\r\\n The aspect ratio of the table cells is maintained by setting the top and bottom padding as a\\r\\n percentage of the width (a variant of the trick described here:\\r\\n https://www.w3schools.com/howto/howto_css_aspect_ratio.asp).\\r\\n -->\\r\\n <td *ngIf=\\\"rowIndex === 0 && _firstRowOffset\\\"\\r\\n aria-hidden=\\\"true\\\"\\r\\n class=\\\"mat-calendar-body-label\\\"\\r\\n [attr.colspan]=\\\"_firstRowOffset\\\"\\r\\n [style.paddingTop]=\\\"_cellPadding\\\"\\r\\n [style.paddingBottom]=\\\"_cellPadding\\\">\\r\\n {{_firstRowOffset >= labelMinRequiredCells ? label : ''}}\\r\\n </td>\\r\\n <td *ngFor=\\\"let item of row; let colIndex = index\\\"\\r\\n role=\\\"gridcell\\\"\\r\\n class=\\\"mat-calendar-body-cell\\\"\\r\\n [ngClass]=\\\"item.cssClasses\\\"\\r\\n [tabindex]=\\\"_isActiveCell(rowIndex, colIndex) ? 0 : -1\\\"\\r\\n [attr.data-mat-row]=\\\"rowIndex\\\"\\r\\n [attr.data-mat-col]=\\\"colIndex\\\"\\r\\n [class.mat-calendar-body-disabled]=\\\"!item.enabled\\\"\\r\\n [class.mat-calendar-body-active]=\\\"_isActiveCell(rowIndex, colIndex)\\\"\\r\\n [class.mat-calendar-body-range-start]=\\\"_isRangeStart(item.compareValue)\\\"\\r\\n [class.mat-calendar-body-range-end]=\\\"_isRangeEnd(item.compareValue)\\\"\\r\\n [class.mat-calendar-body-in-range]=\\\"_isInRange(item.compareValue)\\\"\\r\\n [class.mat-calendar-body-comparison-bridge-start]=\\\"_isComparisonBridgeStart(item.compareValue, rowIndex, colIndex)\\\"\\r\\n [class.mat-calendar-body-comparison-bridge-end]=\\\"_isComparisonBridgeEnd(item.compareValue, rowIndex, colIndex)\\\"\\r\\n [class.mat-calendar-body-comparison-start]=\\\"_isComparisonStart(item.compareValue)\\\"\\r\\n [class.mat-calendar-body-comparison-end]=\\\"_isComparisonEnd(item.compareValue)\\\"\\r\\n [class.mat-calendar-body-in-comparison-range]=\\\"_isInComparisonRange(item.compareValue)\\\"\\r\\n [class.mat-calendar-body-preview-start]=\\\"_isPreviewStart(item.compareValue)\\\"\\r\\n [class.mat-calendar-body-preview-end]=\\\"_isPreviewEnd(item.compareValue)\\\"\\r\\n [class.mat-calendar-body-in-preview]=\\\"_isInPreview(item.compareValue)\\\"\\r\\n [attr.aria-label]=\\\"item.ariaLabel\\\"\\r\\n [attr.aria-disabled]=\\\"!item.enabled || null\\\"\\r\\n [attr.aria-selected]=\\\"_isSelected(item)\\\"\\r\\n (click)=\\\"_cellClicked(item, $event)\\\"\\r\\n [style.width]=\\\"_cellWidth\\\"\\r\\n [style.paddingTop]=\\\"_cellPadding\\\"\\r\\n [style.paddingBottom]=\\\"_cellPadding\\\">\\r\\n <div class=\\\"mat-calendar-body-cell-content mat-focus-indicator\\\"\\r\\n [class.mat-calendar-body-selected]=\\\"_isSelected(item)\\\"\\r\\n [class.mat-calendar-body-today]=\\\"todayValue === item.compareValue\\\">\\r\\n {{item.displayValue}}\\r\\n </div>\\r\\n <div class=\\\"mat-calendar-body-cell-preview\\\"></div>\\r\\n </td>\\r\\n</tr>\\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: \"<table class=\\\"mat-calendar-table\\\" role=\\\"presentation\\\">\\r\\n <thead class=\\\"mat-calendar-table-header\\\">\\r\\n <tr>\\r\\n <th scope=\\\"col\\\" *ngFor=\\\"let day of _weekdays\\\" [attr.aria-label]=\\\"day.long\\\">{{day.narrow}}</th>\\r\\n </tr>\\r\\n <tr><th class=\\\"mat-calendar-table-header-divider\\\" colspan=\\\"7\\\" aria-hidden=\\\"true\\\"></th></tr>\\r\\n </thead>\\r\\n <tbody ngx-mat-calendar-body\\r\\n [label]=\\\"_monthLabel\\\"\\r\\n [rows]=\\\"_weeks\\\"\\r\\n [todayValue]=\\\"_todayDate!\\\"\\r\\n [startValue]=\\\"_rangeStart!\\\"\\r\\n [endValue]=\\\"_rangeEnd!\\\"\\r\\n [comparisonStart]=\\\"_comparisonRangeStart\\\"\\r\\n [comparisonEnd]=\\\"_comparisonRangeEnd\\\"\\r\\n [previewStart]=\\\"_previewStart\\\"\\r\\n [previewEnd]=\\\"_previewEnd\\\"\\r\\n [isRange]=\\\"_isRange\\\"\\r\\n [labelMinRequiredCells]=\\\"3\\\"\\r\\n [activeCell]=\\\"_dateAdapter.getDate(activeDate) - 1\\\"\\r\\n (selectedValueChange)=\\\"_dateSelected($event)\\\"\\r\\n (previewChange)=\\\"_previewChanged($event)\\\"\\r\\n (keydown)=\\\"_handleCalendarBodyKeydown($event)\\\">\\r\\n </tbody>\\r\\n</table>\\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: \"<table class=\\\"mat-calendar-table\\\" role=\\\"presentation\\\">\\r\\n <thead class=\\\"mat-calendar-table-header\\\">\\r\\n <tr><th class=\\\"mat-calendar-table-header-divider\\\" colspan=\\\"4\\\"></th></tr>\\r\\n </thead>\\r\\n <tbody ngx-mat-calendar-body\\r\\n [rows]=\\\"_years\\\"\\r\\n [todayValue]=\\\"_todayYear\\\"\\r\\n [startValue]=\\\"_selectedYear!\\\"\\r\\n [endValue]=\\\"_selectedYear!\\\"\\r\\n [numCols]=\\\"4\\\"\\r\\n [cellAspectRatio]=\\\"4 / 7\\\"\\r\\n [activeCell]=\\\"_getActiveCell()\\\"\\r\\n (selectedValueChange)=\\\"_yearSelected($event)\\\"\\r\\n (keydown)=\\\"_handleCalendarBodyKeydown($event)\\\">\\r\\n </tbody>\\r\\n</table>\\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: \"<table class=\\\"mat-calendar-table\\\" role=\\\"presentation\\\">\\r\\n <thead class=\\\"mat-calendar-table-header\\\">\\r\\n <tr><th class=\\\"mat-calendar-table-header-divider\\\" colspan=\\\"4\\\"></th></tr>\\r\\n </thead>\\r\\n <tbody ngx-mat-calendar-body\\r\\n [label]=\\\"_yearLabel\\\"\\r\\n [rows]=\\\"_months\\\"\\r\\n [todayValue]=\\\"_todayMonth!\\\"\\r\\n [startValue]=\\\"_selectedMonth!\\\"\\r\\n [endValue]=\\\"_selectedMonth!\\\"\\r\\n [labelMinRequiredCells]=\\\"2\\\"\\r\\n [numCols]=\\\"4\\\"\\r\\n [cellAspectRatio]=\\\"4 / 7\\\"\\r\\n [activeCell]=\\\"_dateAdapter.getMonth(activeDate)\\\"\\r\\n (selectedValueChange)=\\\"_monthSelected($event)\\\"\\r\\n (keydown)=\\\"_handleCalendarBodyKeydown($event)\\\">\\r\\n </tbody>\\r\\n</table>\\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: \"<div class=\\\"mat-calendar-header\\\">\\r\\n <div class=\\\"mat-calendar-controls\\\">\\r\\n <button mat-button type=\\\"button\\\" class=\\\"mat-calendar-period-button\\\"\\r\\n (click)=\\\"currentPeriodClicked()\\\" [attr.aria-label]=\\\"periodButtonLabel\\\"\\r\\n cdkAriaLive=\\\"polite\\\">\\r\\n {{periodButtonText}}\\r\\n <div class=\\\"mat-calendar-arrow\\\"\\r\\n [class.mat-calendar-invert]=\\\"calendar.currentView != 'month'\\\"></div>\\r\\n </button>\\r\\n\\r\\n <div class=\\\"mat-calendar-spacer\\\"></div>\\r\\n\\r\\n <ng-content></ng-content>\\r\\n\\r\\n <button mat-icon-button type=\\\"button\\\" class=\\\"mat-calendar-previous-button\\\"\\r\\n [disabled]=\\\"!previousEnabled()\\\" (click)=\\\"previousClicked()\\\"\\r\\n [attr.aria-label]=\\\"prevButtonLabel\\\">\\r\\n </button>\\r\\n\\r\\n <button mat-icon-button type=\\\"button\\\" class=\\\"mat-calendar-next-button\\\"\\r\\n [disabled]=\\\"!nextEnabled()\\\" (click)=\\\"nextClicked()\\\"\\r\\n [attr.aria-label]=\\\"nextButtonLabel\\\">\\r\\n </button>\\r\\n </div>\\r\\n</div>\\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<ng-template [cdkPortalOutlet]=\\\"_calendarHeaderPortal\\\"></ng-template>\\r\\n\\r\\n<div class=\\\"mat-calendar-content\\\" [ngSwitch]=\\\"currentView\\\" cdkMonitorSubtreeFocus tabindex=\\\"-1\\\">\\r\\n <ngx-mat-month-view\\r\\n *ngSwitchCase=\\\"'month'\\\"\\r\\n [(activeDate)]=\\\"activeDate\\\"\\r\\n [selected]=\\\"selected\\\"\\r\\n [dateFilter]=\\\"dateFilter\\\"\\r\\n [maxDate]=\\\"maxDate\\\"\\r\\n [minDate]=\\\"minDate\\\"\\r\\n [dateClass]=\\\"dateClass\\\"\\r\\n (selectedChange)=\\\"_dateSelected($event)\\\"\\r\\n (_userSelection)=\\\"_userSelected()\\\">\\r\\n </ngx-mat-month-view>\\r\\n\\r\\n <ngx-mat-year-view\\r\\n *ngSwitchCase=\\\"'year'\\\"\\r\\n [(activeDate)]=\\\"activeDate\\\"\\r\\n [selected]=\\\"selected\\\"\\r\\n [dateFilter]=\\\"dateFilter\\\"\\r\\n [maxDate]=\\\"maxDate\\\"\\r\\n [minDate]=\\\"minDate\\\"\\r\\n (monthSelected)=\\\"_monthSelectedInYearView($event)\\\"\\r\\n (selectedChange)=\\\"_goToDateInView($event, 'month')\\\">\\r\\n </ngx-mat-year-view>\\r\\n\\r\\n <ngx-mat-multi-year-view\\r\\n *ngSwitchCase=\\\"'multi-year'\\\"\\r\\n [(activeDate)]=\\\"activeDate\\\"\\r\\n [selected]=\\\"selected\\\"\\r\\n [dateFilter]=\\\"dateFilter\\\"\\r\\n [maxDate]=\\\"maxDate\\\"\\r\\n [minDate]=\\\"minDate\\\"\\r\\n (yearSelected)=\\\"_yearSelectedInMultiYearView($event)\\\"\\r\\n (selectedChange)=\\\"_goToDateInView($event, 'year')\\\">\\r\\n </ngx-mat-multi-year-view>\\r\\n</div>\\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: \"<form [formGroup]=\\\"form\\\">\\r\\n <table class=\\\"ngx-mat-timepicker-table\\\">\\r\\n <tbody class=\\\"ngx-mat-timepicker-tbody\\\">\\r\\n <tr *ngIf=\\\"showSpinners\\\">\\r\\n <td>\\r\\n <button type=\\\"button\\\" mat-icon-button aria-label=\\\"expand_less icon\\\" (click)=\\\"change('hour', true)\\\"\\r\\n [disabled]=\\\"disabled\\\">\\r\\n <mat-icon>expand_less</mat-icon>\\r\\n </button>\\r\\n </td>\\r\\n <td></td>\\r\\n <td>\\r\\n <button type=\\\"button\\\" mat-icon-button aria-label=\\\"expand_less icon\\\" (click)=\\\"change('minute', true)\\\"\\r\\n [disabled]=\\\"disabled || disableMinute\\\">\\r\\n <mat-icon>expand_less</mat-icon>\\r\\n </button> </td>\\r\\n <td></td>\\r\\n <td *ngIf=\\\"showSeconds\\\">\\r\\n <button type=\\\"button\\\" mat-icon-button aria-label=\\\"expand_less icon\\\" (click)=\\\"change('second', true)\\\"\\r\\n [disabled]=\\\"disabled || disableMinute\\\">\\r\\n <mat-icon>expand_less</mat-icon>\\r\\n </button>\\r\\n </td>\\r\\n <td *ngIf=\\\"enableMeridian\\\" class=\\\"ngx-mat-timepicker-spacer\\\"></td>\\r\\n <td *ngIf=\\\"enableMeridian\\\"></td>\\r\\n </tr>\\r\\n\\r\\n <tr>\\r\\n <td>\\r\\n <mat-form-field appearance=\\\"legacy\\\">\\r\\n <input type=\\\"text\\\" matInput (input)=\\\"formatInput($any($event).target)\\\" maxlength=\\\"2\\\" formControlName=\\\"hour\\\"\\r\\n (keydown.ArrowUp)=\\\"change('hour', true); $event.preventDefault()\\\"\\r\\n (keydown.ArrowDown)=\\\"change('hour', false); $event.preventDefault()\\\" (blur)=\\\"change('hour')\\\">\\r\\n </mat-form-field>\\r\\n </td>\\r\\n <td class=\\\"ngx-mat-timepicker-spacer\\\">:</td>\\r\\n <td>\\r\\n <mat-form-field appearance=\\\"legacy\\\">\\r\\n <input type=\\\"text\\\" matInput (input)=\\\"formatInput($any($event).target)\\\" maxlength=\\\"2\\\"\\r\\n formControlName=\\\"minute\\\" (keydown.ArrowUp)=\\\"change('minute', true); $event.preventDefault()\\\"\\r\\n (keydown.ArrowDown)=\\\"change('minute', false); $event.preventDefault()\\\" (blur)=\\\"change('minute')\\\">\\r\\n </mat-form-field>\\r\\n </td>\\r\\n <td *ngIf=\\\"showSeconds\\\" class=\\\"ngx-mat-timepicker-spacer\\\">:</td>\\r\\n <td *ngIf=\\\"showSeconds\\\">\\r\\n <mat-form-field appearance=\\\"legacy\\\">\\r\\n <input type=\\\"text\\\" matInput (input)=\\\"formatInput($any($event).target)\\\" maxlength=\\\"2\\\"\\r\\n formControlName=\\\"second\\\" (keydown.ArrowUp)=\\\"change('second', true); $event.preventDefault()\\\"\\r\\n (keydown.ArrowDown)=\\\"change('second', false); $event.preventDefault()\\\" (blur)=\\\"change('second')\\\">\\r\\n </mat-form-field>\\r\\n </td>\\r\\n\\r\\n <td *ngIf=\\\"enableMeridian\\\" class=\\\"ngx-mat-timepicker-spacer\\\"></td>\\r\\n <td *ngIf=\\\"enableMeridian\\\" class=\\\"ngx-mat-timepicker-meridian\\\">\\r\\n <button mat-button (click)=\\\"toggleMeridian()\\\" mat-stroked-button [color]=\\\"color\\\" [disabled]=\\\"disabled\\\">\\r\\n {{meridian}}\\r\\n </button>\\r\\n </td>\\r\\n </tr>\\r\\n\\r\\n <tr *ngIf=\\\"showSpinners\\\">\\r\\n <td>\\r\\n <button type=\\\"button\\\" mat-icon-button aria-label=\\\"expand_more icon\\\" (click)=\\\"change('hour', false)\\\"\\r\\n [disabled]=\\\"disabled\\\">\\r\\n <mat-icon>expand_more</mat-icon>\\r\\n </button> </td>\\r\\n <td></td>\\r\\n <td>\\r\\n <button type=\\\"button\\\" mat-icon-button aria-label=\\\"expand_more icon\\\" (click)=\\\"change('minute', false)\\\"\\r\\n [disabled]=\\\"disabled || disableMinute\\\">\\r\\n <mat-icon>expand_more</mat-icon>\\r\\n </button> </td>\\r\\n <td *ngIf=\\\"showSeconds\\\"></td>\\r\\n <td *ngIf=\\\"showSeconds\\\">\\r\\n <button type=\\\"button\\\" mat-icon-button aria-label=\\\"expand_more icon\\\" (click)=\\\"change('second', false)\\\"\\r\\n [disabled]=\\\"disabled || disableMinute\\\">\\r\\n <mat-icon>expand_more</mat-icon>\\r\\n </button>\\r\\n </td>\\r\\n <td *ngIf=\\\"enableMeridian\\\" class=\\\"ngx-mat-timepicker-spacer\\\"></td>\\r\\n <td *ngIf=\\\"enableMeridian\\\"></td>\\r\\n </tr>\\r\\n </tbody>\\r\\n </table>\\r\\n</form>\", 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: \"<ngx-mat-calendar cdkTrapFocus [id]=\\\"datepicker.id\\\" [ngClass]=\\\"datepicker.panelClass\\\" [startAt]=\\\"datepicker.startAt\\\"\\r\\n [startView]=\\\"datepicker.startView\\\" [minDate]=\\\"datepicker._minDate\\\" [maxDate]=\\\"datepicker._maxDate\\\"\\r\\n [dateFilter]=\\\"datepicker._dateFilter\\\" [headerComponent]=\\\"datepicker.calendarHeaderComponent\\\"\\r\\n [selected]=\\\"datepicker._selected\\\" [dateClass]=\\\"datepicker.dateClass\\\" [@fadeInCalendar]=\\\"'enter'\\\"\\r\\n (selectedChange)=\\\"datepicker.select($event)\\\" (yearSelected)=\\\"datepicker._selectYear($event)\\\"\\r\\n (monthSelected)=\\\"datepicker._selectMonth($event)\\\">\\r\\n</ngx-mat-calendar>\\r\\n<ng-container *ngIf=\\\"isViewMonth\\\">\\r\\n <div *ngIf=\\\"!datepicker._hideTime\\\" class=\\\"time-container\\\" [class.disable-seconds]=\\\"!datepicker._showSeconds\\\">\\r\\n <ngx-mat-timepicker [showSpinners]=\\\"datepicker._showSpinners\\\" [showSeconds]=\\\"datepicker._showSeconds\\\"\\r\\n [disabled]=\\\"datepicker._disabled\\\" [stepHour]=\\\"datepicker._stepHour\\\" [stepMinute]=\\\"datepicker._stepMinute\\\"\\r\\n [stepSecond]=\\\"datepicker._stepSecond\\\" [(ngModel)]=\\\"datepicker._selected\\\" [color]=\\\"datepicker._color\\\"\\r\\n [enableMeridian]=\\\"datepicker._enableMeridian\\\" [disableMinute]=\\\"datepicker._disableMinute\\\">\\r\\n </ngx-mat-timepicker>\\r\\n </div>\\r\\n <div class=\\\"actions\\\">\\r\\n <button mat-button (click)=\\\"datepicker.ok()\\\" mat-stroked-button [color]=\\\"datepicker._color\\\" cdkFocusInitial\\r\\n [disabled]=\\\"!valid\\\">\\r\\n <mat-icon *ngIf=\\\"!datepicker._customIcon\\\">done</mat-icon>\\r\\n <ng-template [cdkPortalOutlet]=\\\"_templateCustomIconPortal\\\"></ng-template>\\r\\n </button>\\r\\n </div>\\r\\n</ng-container>\", 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 `<input>`. */\r\n this.dateChange = new EventEmitter();\r\n /** Emits when an `input` event is fired on this `<input>`. */\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"} |