{"ast":null,"code":"import * as i0 from '@angular/core';\nimport { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ContentChildren, ViewChild, NgModule } from '@angular/core';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport * as i2 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i3 from 'primeng/button';\nimport { ButtonModule } from 'primeng/button';\nimport * as i4 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';\nimport * as i1 from 'primeng/api';\nimport { TranslationKeys, PrimeTemplate, SharedModule } from 'primeng/api';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ZIndexUtils } from 'primeng/utils';\nconst _c0 = [\"container\"];\nconst _c1 = [\"inputfield\"];\nconst _c2 = [\"contentWrapper\"];\n\nfunction Calendar_ng_template_2_button_2_Template(rf, ctx) {\n if (rf & 1) {\n const _r6 = i0.ɵɵgetCurrentView();\n\n i0.ɵɵelementStart(0, \"button\", 7);\n i0.ɵɵlistener(\"click\", function Calendar_ng_template_2_button_2_Template_button_click_0_listener($event) {\n i0.ɵɵrestoreView(_r6);\n i0.ɵɵnextContext();\n\n const _r3 = i0.ɵɵreference(1);\n\n const ctx_r5 = i0.ɵɵnextContext();\n return ctx_r5.onButtonClick($event, _r3);\n });\n i0.ɵɵelementEnd();\n }\n\n if (rf & 2) {\n const ctx_r4 = i0.ɵɵnextContext(2);\n i0.ɵɵproperty(\"icon\", ctx_r4.icon)(\"disabled\", ctx_r4.disabled);\n i0.ɵɵattribute(\"aria-label\", ctx_r4.iconAriaLabel);\n }\n}\n\nfunction Calendar_ng_template_2_Template(rf, ctx) {\n if (rf & 1) {\n const _r8 = i0.ɵɵgetCurrentView();\n\n i0.ɵɵelementStart(0, \"input\", 4, 5);\n i0.ɵɵlistener(\"focus\", function Calendar_ng_template_2_Template_input_focus_0_listener($event) {\n i0.ɵɵrestoreView(_r8);\n const ctx_r7 = i0.ɵɵnextContext();\n return ctx_r7.onInputFocus($event);\n })(\"keydown\", function Calendar_ng_template_2_Template_input_keydown_0_listener($event) {\n i0.ɵɵrestoreView(_r8);\n const ctx_r9 = i0.ɵɵnextContext();\n return ctx_r9.onInputKeydown($event);\n })(\"click\", function Calendar_ng_template_2_Template_input_click_0_listener() {\n i0.ɵɵrestoreView(_r8);\n const ctx_r10 = i0.ɵɵnextContext();\n return ctx_r10.onInputClick();\n })(\"blur\", function Calendar_ng_template_2_Template_input_blur_0_listener($event) {\n i0.ɵɵrestoreView(_r8);\n const ctx_r11 = i0.ɵɵnextContext();\n return ctx_r11.onInputBlur($event);\n })(\"input\", function Calendar_ng_template_2_Template_input_input_0_listener($event) {\n i0.ɵɵrestoreView(_r8);\n const ctx_r12 = i0.ɵɵnextContext();\n return ctx_r12.onUserInput($event);\n });\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(2, Calendar_ng_template_2_button_2_Template, 1, 3, \"button\", 6);\n }\n\n if (rf & 2) {\n const ctx_r1 = i0.ɵɵnextContext();\n i0.ɵɵclassMap(ctx_r1.inputStyleClass);\n i0.ɵɵproperty(\"value\", ctx_r1.inputFieldValue)(\"readonly\", ctx_r1.readonlyInput)(\"ngStyle\", ctx_r1.inputStyle)(\"placeholder\", ctx_r1.placeholder || \"\")(\"disabled\", ctx_r1.disabled)(\"ngClass\", \"p-inputtext p-component\");\n i0.ɵɵattribute(\"id\", ctx_r1.inputId)(\"name\", ctx_r1.name)(\"required\", ctx_r1.required)(\"aria-required\", ctx_r1.required)(\"tabindex\", ctx_r1.tabindex)(\"inputmode\", ctx_r1.touchUI ? \"off\" : null)(\"aria-labelledby\", ctx_r1.ariaLabelledBy);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", ctx_r1.showIcon);\n }\n}\n\nfunction Calendar_div_3_ng_container_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainer(0);\n }\n}\n\nfunction Calendar_div_3_ng_container_4_div_2_button_2_Template(rf, ctx) {\n if (rf & 1) {\n const _r31 = i0.ɵɵgetCurrentView();\n\n i0.ɵɵelementStart(0, \"button\", 27);\n i0.ɵɵlistener(\"keydown\", function Calendar_div_3_ng_container_4_div_2_button_2_Template_button_keydown_0_listener($event) {\n i0.ɵɵrestoreView(_r31);\n const ctx_r30 = i0.ɵɵnextContext(4);\n return ctx_r30.onContainerButtonKeydown($event);\n })(\"click\", function Calendar_div_3_ng_container_4_div_2_button_2_Template_button_click_0_listener($event) {\n i0.ɵɵrestoreView(_r31);\n const ctx_r32 = i0.ɵɵnextContext(4);\n return ctx_r32.onPrevButtonClick($event);\n });\n i0.ɵɵelement(1, \"span\", 28);\n i0.ɵɵelementEnd();\n }\n}\n\nfunction Calendar_div_3_ng_container_4_div_2_span_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 29);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n\n if (rf & 2) {\n const month_r21 = i0.ɵɵnextContext().$implicit;\n const ctx_r24 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance(1);\n i0.ɵɵtextInterpolate(ctx_r24.getTranslation(\"monthNames\")[month_r21.month]);\n }\n}\n\nfunction Calendar_div_3_ng_container_4_div_2_select_5_option_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"option\", 32);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n\n if (rf & 2) {\n const monthName_r35 = ctx.$implicit;\n const i_r36 = ctx.index;\n const month_r21 = i0.ɵɵnextContext(2).$implicit;\n i0.ɵɵproperty(\"value\", i_r36)(\"selected\", i_r36 === month_r21.month);\n i0.ɵɵadvance(1);\n i0.ɵɵtextInterpolate(monthName_r35);\n }\n}\n\nfunction Calendar_div_3_ng_container_4_div_2_select_5_Template(rf, ctx) {\n if (rf & 1) {\n const _r39 = i0.ɵɵgetCurrentView();\n\n i0.ɵɵelementStart(0, \"select\", 30);\n i0.ɵɵlistener(\"change\", function Calendar_div_3_ng_container_4_div_2_select_5_Template_select_change_0_listener($event) {\n i0.ɵɵrestoreView(_r39);\n const ctx_r38 = i0.ɵɵnextContext(4);\n return ctx_r38.onMonthDropdownChange($event.target.value);\n });\n i0.ɵɵtemplate(1, Calendar_div_3_ng_container_4_div_2_select_5_option_1_Template, 2, 3, \"option\", 31);\n i0.ɵɵelementEnd();\n }\n\n if (rf & 2) {\n const ctx_r25 = i0.ɵɵnextContext(4);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngForOf\", ctx_r25.getTranslation(\"monthNames\"));\n }\n}\n\nfunction Calendar_div_3_ng_container_4_div_2_select_6_option_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"option\", 32);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n\n if (rf & 2) {\n const year_r41 = ctx.$implicit;\n const ctx_r40 = i0.ɵɵnextContext(5);\n i0.ɵɵproperty(\"value\", year_r41)(\"selected\", year_r41 === ctx_r40.currentYear);\n i0.ɵɵadvance(1);\n i0.ɵɵtextInterpolate(year_r41);\n }\n}\n\nfunction Calendar_div_3_ng_container_4_div_2_select_6_Template(rf, ctx) {\n if (rf & 1) {\n const _r43 = i0.ɵɵgetCurrentView();\n\n i0.ɵɵelementStart(0, \"select\", 33);\n i0.ɵɵlistener(\"change\", function Calendar_div_3_ng_container_4_div_2_select_6_Template_select_change_0_listener($event) {\n i0.ɵɵrestoreView(_r43);\n const ctx_r42 = i0.ɵɵnextContext(4);\n return ctx_r42.onYearDropdownChange($event.target.value);\n });\n i0.ɵɵtemplate(1, Calendar_div_3_ng_container_4_div_2_select_6_option_1_Template, 2, 3, \"option\", 31);\n i0.ɵɵelementEnd();\n }\n\n if (rf & 2) {\n const ctx_r26 = i0.ɵɵnextContext(4);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngForOf\", ctx_r26.yearOptions);\n }\n}\n\nfunction Calendar_div_3_ng_container_4_div_2_span_7_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"span\", 34);\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n\n if (rf & 2) {\n const month_r21 = i0.ɵɵnextContext().$implicit;\n const ctx_r27 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance(1);\n i0.ɵɵtextInterpolate(ctx_r27.view === \"month\" ? ctx_r27.currentYear : month_r21.year);\n }\n}\n\nfunction Calendar_div_3_ng_container_4_div_2_button_8_Template(rf, ctx) {\n if (rf & 1) {\n const _r46 = i0.ɵɵgetCurrentView();\n\n i0.ɵɵelementStart(0, \"button\", 35);\n i0.ɵɵlistener(\"keydown\", function Calendar_div_3_ng_container_4_div_2_button_8_Template_button_keydown_0_listener($event) {\n i0.ɵɵrestoreView(_r46);\n const ctx_r45 = i0.ɵɵnextContext(4);\n return ctx_r45.onContainerButtonKeydown($event);\n })(\"click\", function Calendar_div_3_ng_container_4_div_2_button_8_Template_button_click_0_listener($event) {\n i0.ɵɵrestoreView(_r46);\n const ctx_r47 = i0.ɵɵnextContext(4);\n return ctx_r47.onNextButtonClick($event);\n });\n i0.ɵɵelement(1, \"span\", 36);\n i0.ɵɵelementEnd();\n }\n}\n\nfunction Calendar_div_3_ng_container_4_div_2_div_9_th_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"th\", 42);\n i0.ɵɵelementStart(1, \"span\");\n i0.ɵɵtext(2);\n i0.ɵɵelementEnd();\n i0.ɵɵelementEnd();\n }\n\n if (rf & 2) {\n const ctx_r48 = i0.ɵɵnextContext(5);\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(ctx_r48.getTranslation(\"weekHeader\"));\n }\n}\n\nfunction Calendar_div_3_ng_container_4_div_2_div_9_th_5_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"th\", 43);\n i0.ɵɵelementStart(1, \"span\");\n i0.ɵɵtext(2);\n i0.ɵɵelementEnd();\n i0.ɵɵelementEnd();\n }\n\n if (rf & 2) {\n const weekDay_r51 = ctx.$implicit;\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(weekDay_r51);\n }\n}\n\nfunction Calendar_div_3_ng_container_4_div_2_div_9_tr_7_td_1_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"td\", 46);\n i0.ɵɵelementStart(1, \"span\", 47);\n i0.ɵɵtext(2);\n i0.ɵɵelementEnd();\n i0.ɵɵelementEnd();\n }\n\n if (rf & 2) {\n const j_r55 = i0.ɵɵnextContext().index;\n const month_r21 = i0.ɵɵnextContext(2).$implicit;\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate1(\" \", month_r21.weekNumbers[j_r55], \" \");\n }\n}\n\nfunction Calendar_div_3_ng_container_4_div_2_div_9_tr_7_td_2_ng_container_1_ng_container_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtext(1);\n i0.ɵɵelementContainerEnd();\n }\n\n if (rf & 2) {\n const date_r60 = i0.ɵɵnextContext(2).$implicit;\n i0.ɵɵadvance(1);\n i0.ɵɵtextInterpolate(date_r60.day);\n }\n}\n\nfunction Calendar_div_3_ng_container_4_div_2_div_9_tr_7_td_2_ng_container_1_ng_container_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainer(0);\n }\n}\n\nconst _c3 = function (a0, a1) {\n return {\n \"p-highlight\": a0,\n \"p-disabled\": a1\n };\n};\n\nconst _c4 = function (a0) {\n return {\n $implicit: a0\n };\n};\n\nfunction Calendar_div_3_ng_container_4_div_2_div_9_tr_7_td_2_ng_container_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r67 = i0.ɵɵgetCurrentView();\n\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelementStart(1, \"span\", 49);\n i0.ɵɵlistener(\"click\", function Calendar_div_3_ng_container_4_div_2_div_9_tr_7_td_2_ng_container_1_Template_span_click_1_listener($event) {\n i0.ɵɵrestoreView(_r67);\n const date_r60 = i0.ɵɵnextContext().$implicit;\n const ctx_r65 = i0.ɵɵnextContext(6);\n return ctx_r65.onDateSelect($event, date_r60);\n })(\"keydown\", function Calendar_div_3_ng_container_4_div_2_div_9_tr_7_td_2_ng_container_1_Template_span_keydown_1_listener($event) {\n i0.ɵɵrestoreView(_r67);\n const date_r60 = i0.ɵɵnextContext().$implicit;\n const i_r22 = i0.ɵɵnextContext(3).index;\n const ctx_r68 = i0.ɵɵnextContext(3);\n return ctx_r68.onDateCellKeydown($event, date_r60, i_r22);\n });\n i0.ɵɵtemplate(2, Calendar_div_3_ng_container_4_div_2_div_9_tr_7_td_2_ng_container_1_ng_container_2_Template, 2, 1, \"ng-container\", 11);\n i0.ɵɵtemplate(3, Calendar_div_3_ng_container_4_div_2_div_9_tr_7_td_2_ng_container_1_ng_container_3_Template, 1, 0, \"ng-container\", 50);\n i0.ɵɵelementEnd();\n i0.ɵɵelementContainerEnd();\n }\n\n if (rf & 2) {\n const date_r60 = i0.ɵɵnextContext().$implicit;\n const ctx_r61 = i0.ɵɵnextContext(6);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction2(4, _c3, ctx_r61.isSelected(date_r60), !date_r60.selectable));\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngIf\", !ctx_r61.dateTemplate);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r61.dateTemplate)(\"ngTemplateOutletContext\", i0.ɵɵpureFunction1(7, _c4, date_r60));\n }\n}\n\nconst _c5 = function (a0, a1) {\n return {\n \"p-datepicker-other-month\": a0,\n \"p-datepicker-today\": a1\n };\n};\n\nfunction Calendar_div_3_ng_container_4_div_2_div_9_tr_7_td_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"td\", 48);\n i0.ɵɵtemplate(1, Calendar_div_3_ng_container_4_div_2_div_9_tr_7_td_2_ng_container_1_Template, 4, 9, \"ng-container\", 11);\n i0.ɵɵelementEnd();\n }\n\n if (rf & 2) {\n const date_r60 = ctx.$implicit;\n const ctx_r57 = i0.ɵɵnextContext(6);\n i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction2(2, _c5, date_r60.otherMonth, date_r60.today));\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngIf\", date_r60.otherMonth ? ctx_r57.showOtherMonths : true);\n }\n}\n\nfunction Calendar_div_3_ng_container_4_div_2_div_9_tr_7_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"tr\");\n i0.ɵɵtemplate(1, Calendar_div_3_ng_container_4_div_2_div_9_tr_7_td_1_Template, 3, 1, \"td\", 44);\n i0.ɵɵtemplate(2, Calendar_div_3_ng_container_4_div_2_div_9_tr_7_td_2_Template, 2, 5, \"td\", 45);\n i0.ɵɵelementEnd();\n }\n\n if (rf & 2) {\n const week_r54 = ctx.$implicit;\n const ctx_r50 = i0.ɵɵnextContext(5);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngIf\", ctx_r50.showWeek);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngForOf\", week_r54);\n }\n}\n\nfunction Calendar_div_3_ng_container_4_div_2_div_9_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 37);\n i0.ɵɵelementStart(1, \"table\", 38);\n i0.ɵɵelementStart(2, \"thead\");\n i0.ɵɵelementStart(3, \"tr\");\n i0.ɵɵtemplate(4, Calendar_div_3_ng_container_4_div_2_div_9_th_4_Template, 3, 1, \"th\", 39);\n i0.ɵɵtemplate(5, Calendar_div_3_ng_container_4_div_2_div_9_th_5_Template, 3, 1, \"th\", 40);\n i0.ɵɵelementEnd();\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(6, \"tbody\");\n i0.ɵɵtemplate(7, Calendar_div_3_ng_container_4_div_2_div_9_tr_7_Template, 3, 2, \"tr\", 41);\n i0.ɵɵelementEnd();\n i0.ɵɵelementEnd();\n i0.ɵɵelementEnd();\n }\n\n if (rf & 2) {\n const month_r21 = i0.ɵɵnextContext().$implicit;\n const ctx_r29 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance(4);\n i0.ɵɵproperty(\"ngIf\", ctx_r29.showWeek);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngForOf\", ctx_r29.weekDays);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngForOf\", month_r21.dates);\n }\n}\n\nfunction Calendar_div_3_ng_container_4_div_2_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 17);\n i0.ɵɵelementStart(1, \"div\", 18);\n i0.ɵɵtemplate(2, Calendar_div_3_ng_container_4_div_2_button_2_Template, 2, 0, \"button\", 19);\n i0.ɵɵelementStart(3, \"div\", 20);\n i0.ɵɵtemplate(4, Calendar_div_3_ng_container_4_div_2_span_4_Template, 2, 1, \"span\", 21);\n i0.ɵɵtemplate(5, Calendar_div_3_ng_container_4_div_2_select_5_Template, 2, 1, \"select\", 22);\n i0.ɵɵtemplate(6, Calendar_div_3_ng_container_4_div_2_select_6_Template, 2, 1, \"select\", 23);\n i0.ɵɵtemplate(7, Calendar_div_3_ng_container_4_div_2_span_7_Template, 2, 1, \"span\", 24);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(8, Calendar_div_3_ng_container_4_div_2_button_8_Template, 2, 0, \"button\", 25);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(9, Calendar_div_3_ng_container_4_div_2_div_9_Template, 8, 3, \"div\", 26);\n i0.ɵɵelementEnd();\n }\n\n if (rf & 2) {\n const i_r22 = ctx.index;\n const ctx_r19 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", i_r22 === 0);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", !ctx_r19.monthNavigator && ctx_r19.view !== \"month\");\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngIf\", ctx_r19.monthNavigator && ctx_r19.view !== \"month\" && ctx_r19.numberOfMonths === 1);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngIf\", ctx_r19.yearNavigator && ctx_r19.numberOfMonths === 1);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngIf\", !ctx_r19.yearNavigator);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngIf\", ctx_r19.numberOfMonths === 1 ? true : i_r22 === ctx_r19.numberOfMonths - 1);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngIf\", ctx_r19.view === \"date\");\n }\n}\n\nfunction Calendar_div_3_ng_container_4_div_3_span_1_Template(rf, ctx) {\n if (rf & 1) {\n const _r77 = i0.ɵɵgetCurrentView();\n\n i0.ɵɵelementStart(0, \"span\", 53);\n i0.ɵɵlistener(\"click\", function Calendar_div_3_ng_container_4_div_3_span_1_Template_span_click_0_listener($event) {\n const restoredCtx = i0.ɵɵrestoreView(_r77);\n const i_r75 = restoredCtx.index;\n const ctx_r76 = i0.ɵɵnextContext(4);\n return ctx_r76.onMonthSelect($event, i_r75);\n })(\"keydown\", function Calendar_div_3_ng_container_4_div_3_span_1_Template_span_keydown_0_listener($event) {\n const restoredCtx = i0.ɵɵrestoreView(_r77);\n const i_r75 = restoredCtx.index;\n const ctx_r78 = i0.ɵɵnextContext(4);\n return ctx_r78.onMonthCellKeydown($event, i_r75);\n });\n i0.ɵɵtext(1);\n i0.ɵɵelementEnd();\n }\n\n if (rf & 2) {\n const m_r74 = ctx.$implicit;\n const i_r75 = ctx.index;\n const ctx_r73 = i0.ɵɵnextContext(4);\n i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction2(2, _c3, ctx_r73.isMonthSelected(i_r75), !ctx_r73.isSelectable(1, i_r75, ctx_r73.currentYear, false)));\n i0.ɵɵadvance(1);\n i0.ɵɵtextInterpolate1(\" \", m_r74, \" \");\n }\n}\n\nfunction Calendar_div_3_ng_container_4_div_3_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 51);\n i0.ɵɵtemplate(1, Calendar_div_3_ng_container_4_div_3_span_1_Template, 2, 5, \"span\", 52);\n i0.ɵɵelementEnd();\n }\n\n if (rf & 2) {\n const ctx_r20 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngForOf\", ctx_r20.monthPickerValues);\n }\n}\n\nfunction Calendar_div_3_ng_container_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵelementStart(1, \"div\", 14);\n i0.ɵɵtemplate(2, Calendar_div_3_ng_container_4_div_2_Template, 10, 7, \"div\", 15);\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(3, Calendar_div_3_ng_container_4_div_3_Template, 2, 1, \"div\", 16);\n i0.ɵɵelementContainerEnd();\n }\n\n if (rf & 2) {\n const ctx_r15 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngForOf\", ctx_r15.months);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngIf\", ctx_r15.view === \"month\");\n }\n}\n\nfunction Calendar_div_3_div_5_ng_container_5_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtext(1, \"0\");\n i0.ɵɵelementContainerEnd();\n }\n}\n\nfunction Calendar_div_3_div_5_ng_container_16_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtext(1, \"0\");\n i0.ɵɵelementContainerEnd();\n }\n}\n\nfunction Calendar_div_3_div_5_div_20_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementStart(0, \"div\", 59);\n i0.ɵɵelementStart(1, \"span\");\n i0.ɵɵtext(2);\n i0.ɵɵelementEnd();\n i0.ɵɵelementEnd();\n }\n\n if (rf & 2) {\n const ctx_r81 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance(2);\n i0.ɵɵtextInterpolate(ctx_r81.timeSeparator);\n }\n}\n\nfunction Calendar_div_3_div_5_div_21_ng_container_4_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainerStart(0);\n i0.ɵɵtext(1, \"0\");\n i0.ɵɵelementContainerEnd();\n }\n}\n\nfunction Calendar_div_3_div_5_div_21_Template(rf, ctx) {\n if (rf & 1) {\n const _r86 = i0.ɵɵgetCurrentView();\n\n i0.ɵɵelementStart(0, \"div\", 64);\n i0.ɵɵelementStart(1, \"button\", 56);\n i0.ɵɵlistener(\"keydown\", function Calendar_div_3_div_5_div_21_Template_button_keydown_1_listener($event) {\n i0.ɵɵrestoreView(_r86);\n const ctx_r85 = i0.ɵɵnextContext(3);\n return ctx_r85.onContainerButtonKeydown($event);\n })(\"keydown.enter\", function Calendar_div_3_div_5_div_21_Template_button_keydown_enter_1_listener($event) {\n i0.ɵɵrestoreView(_r86);\n const ctx_r87 = i0.ɵɵnextContext(3);\n return ctx_r87.incrementSecond($event);\n })(\"mousedown\", function Calendar_div_3_div_5_div_21_Template_button_mousedown_1_listener($event) {\n i0.ɵɵrestoreView(_r86);\n const ctx_r88 = i0.ɵɵnextContext(3);\n return ctx_r88.onTimePickerElementMouseDown($event, 2, 1);\n })(\"mouseup\", function Calendar_div_3_div_5_div_21_Template_button_mouseup_1_listener($event) {\n i0.ɵɵrestoreView(_r86);\n const ctx_r89 = i0.ɵɵnextContext(3);\n return ctx_r89.onTimePickerElementMouseUp($event);\n })(\"mouseleave\", function Calendar_div_3_div_5_div_21_Template_button_mouseleave_1_listener() {\n i0.ɵɵrestoreView(_r86);\n const ctx_r90 = i0.ɵɵnextContext(3);\n return ctx_r90.onTimePickerElementMouseLeave();\n });\n i0.ɵɵelement(2, \"span\", 57);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(3, \"span\");\n i0.ɵɵtemplate(4, Calendar_div_3_div_5_div_21_ng_container_4_Template, 2, 0, \"ng-container\", 11);\n i0.ɵɵtext(5);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(6, \"button\", 56);\n i0.ɵɵlistener(\"keydown\", function Calendar_div_3_div_5_div_21_Template_button_keydown_6_listener($event) {\n i0.ɵɵrestoreView(_r86);\n const ctx_r91 = i0.ɵɵnextContext(3);\n return ctx_r91.onContainerButtonKeydown($event);\n })(\"keydown.enter\", function Calendar_div_3_div_5_div_21_Template_button_keydown_enter_6_listener($event) {\n i0.ɵɵrestoreView(_r86);\n const ctx_r92 = i0.ɵɵnextContext(3);\n return ctx_r92.decrementSecond($event);\n })(\"mousedown\", function Calendar_div_3_div_5_div_21_Template_button_mousedown_6_listener($event) {\n i0.ɵɵrestoreView(_r86);\n const ctx_r93 = i0.ɵɵnextContext(3);\n return ctx_r93.onTimePickerElementMouseDown($event, 2, -1);\n })(\"mouseup\", function Calendar_div_3_div_5_div_21_Template_button_mouseup_6_listener($event) {\n i0.ɵɵrestoreView(_r86);\n const ctx_r94 = i0.ɵɵnextContext(3);\n return ctx_r94.onTimePickerElementMouseUp($event);\n })(\"mouseleave\", function Calendar_div_3_div_5_div_21_Template_button_mouseleave_6_listener() {\n i0.ɵɵrestoreView(_r86);\n const ctx_r95 = i0.ɵɵnextContext(3);\n return ctx_r95.onTimePickerElementMouseLeave();\n });\n i0.ɵɵelement(7, \"span\", 58);\n i0.ɵɵelementEnd();\n i0.ɵɵelementEnd();\n }\n\n if (rf & 2) {\n const ctx_r82 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance(4);\n i0.ɵɵproperty(\"ngIf\", ctx_r82.currentSecond < 10);\n i0.ɵɵadvance(1);\n i0.ɵɵtextInterpolate(ctx_r82.currentSecond);\n }\n}\n\nfunction Calendar_div_3_div_5_div_22_Template(rf, ctx) {\n if (rf & 1) {\n const _r97 = i0.ɵɵgetCurrentView();\n\n i0.ɵɵelementStart(0, \"div\", 65);\n i0.ɵɵelementStart(1, \"button\", 66);\n i0.ɵɵlistener(\"keydown\", function Calendar_div_3_div_5_div_22_Template_button_keydown_1_listener($event) {\n i0.ɵɵrestoreView(_r97);\n const ctx_r96 = i0.ɵɵnextContext(3);\n return ctx_r96.onContainerButtonKeydown($event);\n })(\"click\", function Calendar_div_3_div_5_div_22_Template_button_click_1_listener($event) {\n i0.ɵɵrestoreView(_r97);\n const ctx_r98 = i0.ɵɵnextContext(3);\n return ctx_r98.toggleAMPM($event);\n })(\"keydown.enter\", function Calendar_div_3_div_5_div_22_Template_button_keydown_enter_1_listener($event) {\n i0.ɵɵrestoreView(_r97);\n const ctx_r99 = i0.ɵɵnextContext(3);\n return ctx_r99.toggleAMPM($event);\n });\n i0.ɵɵelement(2, \"span\", 57);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(3, \"span\");\n i0.ɵɵtext(4);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(5, \"button\", 66);\n i0.ɵɵlistener(\"keydown\", function Calendar_div_3_div_5_div_22_Template_button_keydown_5_listener($event) {\n i0.ɵɵrestoreView(_r97);\n const ctx_r100 = i0.ɵɵnextContext(3);\n return ctx_r100.onContainerButtonKeydown($event);\n })(\"click\", function Calendar_div_3_div_5_div_22_Template_button_click_5_listener($event) {\n i0.ɵɵrestoreView(_r97);\n const ctx_r101 = i0.ɵɵnextContext(3);\n return ctx_r101.toggleAMPM($event);\n })(\"keydown.enter\", function Calendar_div_3_div_5_div_22_Template_button_keydown_enter_5_listener($event) {\n i0.ɵɵrestoreView(_r97);\n const ctx_r102 = i0.ɵɵnextContext(3);\n return ctx_r102.toggleAMPM($event);\n });\n i0.ɵɵelement(6, \"span\", 58);\n i0.ɵɵelementEnd();\n i0.ɵɵelementEnd();\n }\n\n if (rf & 2) {\n const ctx_r83 = i0.ɵɵnextContext(3);\n i0.ɵɵadvance(4);\n i0.ɵɵtextInterpolate(ctx_r83.pm ? \"PM\" : \"AM\");\n }\n}\n\nfunction Calendar_div_3_div_5_Template(rf, ctx) {\n if (rf & 1) {\n const _r104 = i0.ɵɵgetCurrentView();\n\n i0.ɵɵelementStart(0, \"div\", 54);\n i0.ɵɵelementStart(1, \"div\", 55);\n i0.ɵɵelementStart(2, \"button\", 56);\n i0.ɵɵlistener(\"keydown\", function Calendar_div_3_div_5_Template_button_keydown_2_listener($event) {\n i0.ɵɵrestoreView(_r104);\n const ctx_r103 = i0.ɵɵnextContext(2);\n return ctx_r103.onContainerButtonKeydown($event);\n })(\"keydown.enter\", function Calendar_div_3_div_5_Template_button_keydown_enter_2_listener($event) {\n i0.ɵɵrestoreView(_r104);\n const ctx_r105 = i0.ɵɵnextContext(2);\n return ctx_r105.incrementHour($event);\n })(\"mousedown\", function Calendar_div_3_div_5_Template_button_mousedown_2_listener($event) {\n i0.ɵɵrestoreView(_r104);\n const ctx_r106 = i0.ɵɵnextContext(2);\n return ctx_r106.onTimePickerElementMouseDown($event, 0, 1);\n })(\"mouseup\", function Calendar_div_3_div_5_Template_button_mouseup_2_listener($event) {\n i0.ɵɵrestoreView(_r104);\n const ctx_r107 = i0.ɵɵnextContext(2);\n return ctx_r107.onTimePickerElementMouseUp($event);\n })(\"mouseleave\", function Calendar_div_3_div_5_Template_button_mouseleave_2_listener() {\n i0.ɵɵrestoreView(_r104);\n const ctx_r108 = i0.ɵɵnextContext(2);\n return ctx_r108.onTimePickerElementMouseLeave();\n });\n i0.ɵɵelement(3, \"span\", 57);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(4, \"span\");\n i0.ɵɵtemplate(5, Calendar_div_3_div_5_ng_container_5_Template, 2, 0, \"ng-container\", 11);\n i0.ɵɵtext(6);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(7, \"button\", 56);\n i0.ɵɵlistener(\"keydown\", function Calendar_div_3_div_5_Template_button_keydown_7_listener($event) {\n i0.ɵɵrestoreView(_r104);\n const ctx_r109 = i0.ɵɵnextContext(2);\n return ctx_r109.onContainerButtonKeydown($event);\n })(\"keydown.enter\", function Calendar_div_3_div_5_Template_button_keydown_enter_7_listener($event) {\n i0.ɵɵrestoreView(_r104);\n const ctx_r110 = i0.ɵɵnextContext(2);\n return ctx_r110.decrementHour($event);\n })(\"mousedown\", function Calendar_div_3_div_5_Template_button_mousedown_7_listener($event) {\n i0.ɵɵrestoreView(_r104);\n const ctx_r111 = i0.ɵɵnextContext(2);\n return ctx_r111.onTimePickerElementMouseDown($event, 0, -1);\n })(\"mouseup\", function Calendar_div_3_div_5_Template_button_mouseup_7_listener($event) {\n i0.ɵɵrestoreView(_r104);\n const ctx_r112 = i0.ɵɵnextContext(2);\n return ctx_r112.onTimePickerElementMouseUp($event);\n })(\"mouseleave\", function Calendar_div_3_div_5_Template_button_mouseleave_7_listener() {\n i0.ɵɵrestoreView(_r104);\n const ctx_r113 = i0.ɵɵnextContext(2);\n return ctx_r113.onTimePickerElementMouseLeave();\n });\n i0.ɵɵelement(8, \"span\", 58);\n i0.ɵɵelementEnd();\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(9, \"div\", 59);\n i0.ɵɵelementStart(10, \"span\");\n i0.ɵɵtext(11);\n i0.ɵɵelementEnd();\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(12, \"div\", 60);\n i0.ɵɵelementStart(13, \"button\", 56);\n i0.ɵɵlistener(\"keydown\", function Calendar_div_3_div_5_Template_button_keydown_13_listener($event) {\n i0.ɵɵrestoreView(_r104);\n const ctx_r114 = i0.ɵɵnextContext(2);\n return ctx_r114.onContainerButtonKeydown($event);\n })(\"keydown.enter\", function Calendar_div_3_div_5_Template_button_keydown_enter_13_listener($event) {\n i0.ɵɵrestoreView(_r104);\n const ctx_r115 = i0.ɵɵnextContext(2);\n return ctx_r115.incrementMinute($event);\n })(\"mousedown\", function Calendar_div_3_div_5_Template_button_mousedown_13_listener($event) {\n i0.ɵɵrestoreView(_r104);\n const ctx_r116 = i0.ɵɵnextContext(2);\n return ctx_r116.onTimePickerElementMouseDown($event, 1, 1);\n })(\"mouseup\", function Calendar_div_3_div_5_Template_button_mouseup_13_listener($event) {\n i0.ɵɵrestoreView(_r104);\n const ctx_r117 = i0.ɵɵnextContext(2);\n return ctx_r117.onTimePickerElementMouseUp($event);\n })(\"mouseleave\", function Calendar_div_3_div_5_Template_button_mouseleave_13_listener() {\n i0.ɵɵrestoreView(_r104);\n const ctx_r118 = i0.ɵɵnextContext(2);\n return ctx_r118.onTimePickerElementMouseLeave();\n });\n i0.ɵɵelement(14, \"span\", 57);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(15, \"span\");\n i0.ɵɵtemplate(16, Calendar_div_3_div_5_ng_container_16_Template, 2, 0, \"ng-container\", 11);\n i0.ɵɵtext(17);\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(18, \"button\", 56);\n i0.ɵɵlistener(\"keydown\", function Calendar_div_3_div_5_Template_button_keydown_18_listener($event) {\n i0.ɵɵrestoreView(_r104);\n const ctx_r119 = i0.ɵɵnextContext(2);\n return ctx_r119.onContainerButtonKeydown($event);\n })(\"keydown.enter\", function Calendar_div_3_div_5_Template_button_keydown_enter_18_listener($event) {\n i0.ɵɵrestoreView(_r104);\n const ctx_r120 = i0.ɵɵnextContext(2);\n return ctx_r120.decrementMinute($event);\n })(\"mousedown\", function Calendar_div_3_div_5_Template_button_mousedown_18_listener($event) {\n i0.ɵɵrestoreView(_r104);\n const ctx_r121 = i0.ɵɵnextContext(2);\n return ctx_r121.onTimePickerElementMouseDown($event, 1, -1);\n })(\"mouseup\", function Calendar_div_3_div_5_Template_button_mouseup_18_listener($event) {\n i0.ɵɵrestoreView(_r104);\n const ctx_r122 = i0.ɵɵnextContext(2);\n return ctx_r122.onTimePickerElementMouseUp($event);\n })(\"mouseleave\", function Calendar_div_3_div_5_Template_button_mouseleave_18_listener() {\n i0.ɵɵrestoreView(_r104);\n const ctx_r123 = i0.ɵɵnextContext(2);\n return ctx_r123.onTimePickerElementMouseLeave();\n });\n i0.ɵɵelement(19, \"span\", 58);\n i0.ɵɵelementEnd();\n i0.ɵɵelementEnd();\n i0.ɵɵtemplate(20, Calendar_div_3_div_5_div_20_Template, 3, 1, \"div\", 61);\n i0.ɵɵtemplate(21, Calendar_div_3_div_5_div_21_Template, 8, 2, \"div\", 62);\n i0.ɵɵtemplate(22, Calendar_div_3_div_5_div_22_Template, 7, 1, \"div\", 63);\n i0.ɵɵelementEnd();\n }\n\n if (rf & 2) {\n const ctx_r16 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance(5);\n i0.ɵɵproperty(\"ngIf\", ctx_r16.currentHour < 10);\n i0.ɵɵadvance(1);\n i0.ɵɵtextInterpolate(ctx_r16.currentHour);\n i0.ɵɵadvance(5);\n i0.ɵɵtextInterpolate(ctx_r16.timeSeparator);\n i0.ɵɵadvance(5);\n i0.ɵɵproperty(\"ngIf\", ctx_r16.currentMinute < 10);\n i0.ɵɵadvance(1);\n i0.ɵɵtextInterpolate(ctx_r16.currentMinute);\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"ngIf\", ctx_r16.showSeconds);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngIf\", ctx_r16.showSeconds);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngIf\", ctx_r16.hourFormat == \"12\");\n }\n}\n\nconst _c6 = function (a0) {\n return [a0];\n};\n\nfunction Calendar_div_3_div_6_Template(rf, ctx) {\n if (rf & 1) {\n const _r125 = i0.ɵɵgetCurrentView();\n\n i0.ɵɵelementStart(0, \"div\", 67);\n i0.ɵɵelementStart(1, \"button\", 68);\n i0.ɵɵlistener(\"keydown\", function Calendar_div_3_div_6_Template_button_keydown_1_listener($event) {\n i0.ɵɵrestoreView(_r125);\n const ctx_r124 = i0.ɵɵnextContext(2);\n return ctx_r124.onContainerButtonKeydown($event);\n })(\"click\", function Calendar_div_3_div_6_Template_button_click_1_listener($event) {\n i0.ɵɵrestoreView(_r125);\n const ctx_r126 = i0.ɵɵnextContext(2);\n return ctx_r126.onTodayButtonClick($event);\n });\n i0.ɵɵelementEnd();\n i0.ɵɵelementStart(2, \"button\", 68);\n i0.ɵɵlistener(\"keydown\", function Calendar_div_3_div_6_Template_button_keydown_2_listener($event) {\n i0.ɵɵrestoreView(_r125);\n const ctx_r127 = i0.ɵɵnextContext(2);\n return ctx_r127.onContainerButtonKeydown($event);\n })(\"click\", function Calendar_div_3_div_6_Template_button_click_2_listener($event) {\n i0.ɵɵrestoreView(_r125);\n const ctx_r128 = i0.ɵɵnextContext(2);\n return ctx_r128.onClearButtonClick($event);\n });\n i0.ɵɵelementEnd();\n i0.ɵɵelementEnd();\n }\n\n if (rf & 2) {\n const ctx_r17 = i0.ɵɵnextContext(2);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"label\", ctx_r17.getTranslation(\"today\"))(\"ngClass\", i0.ɵɵpureFunction1(4, _c6, ctx_r17.todayButtonStyleClass));\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"label\", ctx_r17.getTranslation(\"clear\"))(\"ngClass\", i0.ɵɵpureFunction1(6, _c6, ctx_r17.clearButtonStyleClass));\n }\n}\n\nfunction Calendar_div_3_ng_container_8_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵelementContainer(0);\n }\n}\n\nconst _c7 = function (a1, a2, a3, a4, a5, a6) {\n return {\n \"p-datepicker p-component\": true,\n \"p-datepicker-inline\": a1,\n \"p-disabled\": a2,\n \"p-datepicker-timeonly\": a3,\n \"p-datepicker-multiple-month\": a4,\n \"p-datepicker-monthpicker\": a5,\n \"p-datepicker-touch-ui\": a6\n };\n};\n\nconst _c8 = function (a0, a1) {\n return {\n showTransitionParams: a0,\n hideTransitionParams: a1\n };\n};\n\nconst _c9 = function (a1) {\n return {\n value: \"visibleTouchUI\",\n params: a1\n };\n};\n\nconst _c10 = function (a1) {\n return {\n value: \"visible\",\n params: a1\n };\n};\n\nfunction Calendar_div_3_Template(rf, ctx) {\n if (rf & 1) {\n const _r130 = i0.ɵɵgetCurrentView();\n\n i0.ɵɵelementStart(0, \"div\", 8, 9);\n i0.ɵɵlistener(\"@overlayAnimation.start\", function Calendar_div_3_Template_div_animation_overlayAnimation_start_0_listener($event) {\n i0.ɵɵrestoreView(_r130);\n const ctx_r129 = i0.ɵɵnextContext();\n return ctx_r129.onOverlayAnimationStart($event);\n })(\"@overlayAnimation.done\", function Calendar_div_3_Template_div_animation_overlayAnimation_done_0_listener($event) {\n i0.ɵɵrestoreView(_r130);\n const ctx_r131 = i0.ɵɵnextContext();\n return ctx_r131.onOverlayAnimationDone($event);\n })(\"click\", function Calendar_div_3_Template_div_click_0_listener($event) {\n i0.ɵɵrestoreView(_r130);\n const ctx_r132 = i0.ɵɵnextContext();\n return ctx_r132.onOverlayClick($event);\n });\n i0.ɵɵprojection(2);\n i0.ɵɵtemplate(3, Calendar_div_3_ng_container_3_Template, 1, 0, \"ng-container\", 10);\n i0.ɵɵtemplate(4, Calendar_div_3_ng_container_4_Template, 4, 2, \"ng-container\", 11);\n i0.ɵɵtemplate(5, Calendar_div_3_div_5_Template, 23, 8, \"div\", 12);\n i0.ɵɵtemplate(6, Calendar_div_3_div_6_Template, 3, 8, \"div\", 13);\n i0.ɵɵprojection(7, 1);\n i0.ɵɵtemplate(8, Calendar_div_3_ng_container_8_Template, 1, 0, \"ng-container\", 10);\n i0.ɵɵelementEnd();\n }\n\n if (rf & 2) {\n const ctx_r2 = i0.ɵɵnextContext();\n i0.ɵɵclassMap(ctx_r2.panelStyleClass);\n i0.ɵɵproperty(\"ngStyle\", ctx_r2.panelStyle)(\"ngClass\", i0.ɵɵpureFunction6(11, _c7, ctx_r2.inline, ctx_r2.disabled, ctx_r2.timeOnly, ctx_r2.numberOfMonths > 1, ctx_r2.view === \"month\", ctx_r2.touchUI))(\"@overlayAnimation\", ctx_r2.touchUI ? i0.ɵɵpureFunction1(21, _c9, i0.ɵɵpureFunction2(18, _c8, ctx_r2.showTransitionOptions, ctx_r2.hideTransitionOptions)) : i0.ɵɵpureFunction1(26, _c10, i0.ɵɵpureFunction2(23, _c8, ctx_r2.showTransitionOptions, ctx_r2.hideTransitionOptions)))(\"@.disabled\", ctx_r2.inline === true);\n i0.ɵɵadvance(3);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r2.headerTemplate);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngIf\", !ctx_r2.timeOnly);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngIf\", ctx_r2.showTime || ctx_r2.timeOnly);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngIf\", ctx_r2.showButtonBar);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngTemplateOutlet\", ctx_r2.footerTemplate);\n }\n}\n\nconst _c11 = [[[\"p-header\"]], [[\"p-footer\"]]];\n\nconst _c12 = function (a1, a2, a3, a4) {\n return {\n \"p-calendar\": true,\n \"p-calendar-w-btn\": a1,\n \"p-calendar-timeonly\": a2,\n \"p-calendar-disabled\": a3,\n \"p-focus\": a4\n };\n};\n\nconst _c13 = [\"p-header\", \"p-footer\"];\nconst CALENDAR_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Calendar),\n multi: true\n};\n\nclass Calendar {\n constructor(el, renderer, cd, zone, config, overlayService) {\n this.el = el;\n this.renderer = renderer;\n this.cd = cd;\n this.zone = zone;\n this.config = config;\n this.overlayService = overlayService;\n this.multipleSeparator = ',';\n this.rangeSeparator = '-';\n this.inline = false;\n this.showOtherMonths = true;\n this.icon = 'pi pi-calendar';\n this.shortYearCutoff = '+10';\n this.hourFormat = '24';\n this.stepHour = 1;\n this.stepMinute = 1;\n this.stepSecond = 1;\n this.showSeconds = false;\n this.showOnFocus = true;\n this.showWeek = false;\n this.dataType = 'date';\n this.selectionMode = 'single';\n this.todayButtonStyleClass = 'p-button-text';\n this.clearButtonStyleClass = 'p-button-text';\n this.autoZIndex = true;\n this.baseZIndex = 0;\n this.keepInvalid = false;\n this.hideOnDateTimeSelect = true;\n this.numberOfMonths = 1;\n this.view = 'date';\n this.timeSeparator = \":\";\n this.focusTrap = true;\n this.firstDayOfWeek = 0;\n this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';\n this.hideTransitionOptions = '.1s linear';\n this.onFocus = new EventEmitter();\n this.onBlur = new EventEmitter();\n this.onClose = new EventEmitter();\n this.onSelect = new EventEmitter();\n this.onInput = new EventEmitter();\n this.onTodayClick = new EventEmitter();\n this.onClearClick = new EventEmitter();\n this.onMonthChange = new EventEmitter();\n this.onYearChange = new EventEmitter();\n this.onClickOutside = new EventEmitter();\n this.onShow = new EventEmitter();\n\n this.onModelChange = () => {};\n\n this.onModelTouched = () => {};\n\n this.inputFieldValue = null;\n this.navigationState = null;\n\n this.convertTo24Hour = function (hours, pm) {\n if (this.hourFormat == '12') {\n if (hours === 12) {\n return pm ? 12 : 0;\n } else {\n return pm ? hours + 12 : hours;\n }\n }\n\n return hours;\n };\n }\n\n set content(content) {\n this.contentViewChild = content;\n\n if (this.contentViewChild) {\n if (this.isMonthNavigate) {\n Promise.resolve(null).then(() => this.updateFocus());\n this.isMonthNavigate = false;\n } else {\n this.initFocusableCell();\n }\n }\n }\n\n get defaultDate() {\n return this._defaultDate;\n }\n\n set defaultDate(defaultDate) {\n this._defaultDate = defaultDate;\n\n if (this.initialized) {\n const date = defaultDate || new Date();\n this.currentMonth = date.getMonth();\n this.currentYear = date.getFullYear();\n this.initTime(date);\n this.createMonths(this.currentMonth, this.currentYear);\n }\n }\n\n get minDate() {\n return this._minDate;\n }\n\n set minDate(date) {\n this._minDate = date;\n\n if (this.currentMonth != undefined && this.currentMonth != null && this.currentYear) {\n this.createMonths(this.currentMonth, this.currentYear);\n }\n }\n\n get maxDate() {\n return this._maxDate;\n }\n\n set maxDate(date) {\n this._maxDate = date;\n\n if (this.currentMonth != undefined && this.currentMonth != null && this.currentYear) {\n this.createMonths(this.currentMonth, this.currentYear);\n }\n }\n\n get disabledDates() {\n return this._disabledDates;\n }\n\n set disabledDates(disabledDates) {\n this._disabledDates = disabledDates;\n\n if (this.currentMonth != undefined && this.currentMonth != null && this.currentYear) {\n this.createMonths(this.currentMonth, this.currentYear);\n }\n }\n\n get disabledDays() {\n return this._disabledDays;\n }\n\n set disabledDays(disabledDays) {\n this._disabledDays = disabledDays;\n\n if (this.currentMonth != undefined && this.currentMonth != null && this.currentYear) {\n this.createMonths(this.currentMonth, this.currentYear);\n }\n }\n\n get yearRange() {\n return this._yearRange;\n }\n\n set yearRange(yearRange) {\n this._yearRange = yearRange;\n\n if (yearRange) {\n const years = yearRange.split(':');\n const yearStart = parseInt(years[0]);\n const yearEnd = parseInt(years[1]);\n this.populateYearOptions(yearStart, yearEnd);\n }\n }\n\n get showTime() {\n return this._showTime;\n }\n\n set showTime(showTime) {\n this._showTime = showTime;\n\n if (this.currentHour === undefined) {\n this.initTime(this.value || new Date());\n }\n\n this.updateInputfield();\n }\n\n get locale() {\n return this._locale;\n }\n\n set locale(newLocale) {\n console.warn(\"Locale property has no effect, use new i18n API instead.\");\n }\n\n ngOnInit() {\n const date = this.defaultDate || new Date();\n this.currentMonth = date.getMonth();\n this.currentYear = date.getFullYear();\n\n if (this.view === 'date') {\n this.createWeekDays();\n this.initTime(date);\n this.createMonths(this.currentMonth, this.currentYear);\n this.ticksTo1970 = ((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) + Math.floor(1970 / 400)) * 24 * 60 * 60 * 10000000;\n } else if (this.view === 'month') {\n this.createMonthPickerValues();\n }\n\n this.translationSubscription = this.config.translationObserver.subscribe(() => {\n this.createWeekDays();\n });\n this.initialized = true;\n }\n\n ngAfterContentInit() {\n this.templates.forEach(item => {\n switch (item.getType()) {\n case 'date':\n this.dateTemplate = item.template;\n break;\n\n case 'disabledDate':\n this.disabledDateTemplate = item.template;\n break;\n\n case 'header':\n this.headerTemplate = item.template;\n break;\n\n case 'footer':\n this.footerTemplate = item.template;\n break;\n\n default:\n this.dateTemplate = item.template;\n break;\n }\n });\n }\n\n getTranslation(option) {\n return this.config.getTranslation(option);\n }\n\n populateYearOptions(start, end) {\n this.yearOptions = [];\n\n for (let i = start; i <= end; i++) {\n this.yearOptions.push(i);\n }\n }\n\n createWeekDays() {\n this.weekDays = [];\n let dayIndex = this.firstDayOfWeek;\n let dayLabels = this.getTranslation(TranslationKeys.DAY_NAMES_MIN);\n\n for (let i = 0; i < 7; i++) {\n this.weekDays.push(dayLabels[dayIndex]);\n dayIndex = dayIndex == 6 ? 0 : ++dayIndex;\n }\n }\n\n createMonthPickerValues() {\n this.monthPickerValues = [];\n let monthLabels = this.getTranslation(TranslationKeys.MONTH_NAMES_SHORT);\n\n for (let i = 0; i <= 11; i++) {\n this.monthPickerValues.push(monthLabels[i]);\n }\n }\n\n createMonths(month, year) {\n this.months = this.months = [];\n\n for (let i = 0; i < this.numberOfMonths; i++) {\n let m = month + i;\n let y = year;\n\n if (m > 11) {\n m = m % 11 - 1;\n y = year + 1;\n }\n\n this.months.push(this.createMonth(m, y));\n }\n }\n\n getWeekNumber(date) {\n let checkDate = new Date(date.getTime());\n checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));\n let time = checkDate.getTime();\n checkDate.setMonth(0);\n checkDate.setDate(1);\n return Math.floor(Math.round((time - checkDate.getTime()) / 86400000) / 7) + 1;\n }\n\n createMonth(month, year) {\n let dates = [];\n let firstDay = this.getFirstDayOfMonthIndex(month, year);\n let daysLength = this.getDaysCountInMonth(month, year);\n let prevMonthDaysLength = this.getDaysCountInPrevMonth(month, year);\n let dayNo = 1;\n let today = new Date();\n let weekNumbers = [];\n let monthRows = Math.ceil((daysLength + firstDay) / 7);\n\n for (let i = 0; i < monthRows; i++) {\n let week = [];\n\n if (i == 0) {\n for (let j = prevMonthDaysLength - firstDay + 1; j <= prevMonthDaysLength; j++) {\n let prev = this.getPreviousMonthAndYear(month, year);\n week.push({\n day: j,\n month: prev.month,\n year: prev.year,\n otherMonth: true,\n today: this.isToday(today, j, prev.month, prev.year),\n selectable: this.isSelectable(j, prev.month, prev.year, true)\n });\n }\n\n let remainingDaysLength = 7 - week.length;\n\n for (let j = 0; j < remainingDaysLength; j++) {\n week.push({\n day: dayNo,\n month: month,\n year: year,\n today: this.isToday(today, dayNo, month, year),\n selectable: this.isSelectable(dayNo, month, year, false)\n });\n dayNo++;\n }\n } else {\n for (let j = 0; j < 7; j++) {\n if (dayNo > daysLength) {\n let next = this.getNextMonthAndYear(month, year);\n week.push({\n day: dayNo - daysLength,\n month: next.month,\n year: next.year,\n otherMonth: true,\n today: this.isToday(today, dayNo - daysLength, next.month, next.year),\n selectable: this.isSelectable(dayNo - daysLength, next.month, next.year, true)\n });\n } else {\n week.push({\n day: dayNo,\n month: month,\n year: year,\n today: this.isToday(today, dayNo, month, year),\n selectable: this.isSelectable(dayNo, month, year, false)\n });\n }\n\n dayNo++;\n }\n }\n\n if (this.showWeek) {\n weekNumbers.push(this.getWeekNumber(new Date(week[0].year, week[0].month, week[0].day)));\n }\n\n dates.push(week);\n }\n\n return {\n month: month,\n year: year,\n dates: dates,\n weekNumbers: weekNumbers\n };\n }\n\n initTime(date) {\n this.pm = date.getHours() > 11;\n\n if (this.showTime) {\n this.currentMinute = date.getMinutes();\n this.currentSecond = date.getSeconds();\n this.setCurrentHourPM(date.getHours());\n } else if (this.timeOnly) {\n this.currentMinute = 0;\n this.currentHour = 0;\n this.currentSecond = 0;\n }\n }\n\n navBackward(event) {\n event.stopPropagation();\n\n if (this.disabled) {\n event.preventDefault();\n return;\n }\n\n this.isMonthNavigate = true;\n\n if (this.view === 'month') {\n this.decrementYear();\n setTimeout(() => {\n this.updateFocus();\n }, 1);\n } else {\n if (this.currentMonth === 0) {\n this.currentMonth = 11;\n this.decrementYear();\n } else {\n this.currentMonth--;\n }\n\n this.onMonthChange.emit({\n month: this.currentMonth + 1,\n year: this.currentYear\n });\n this.createMonths(this.currentMonth, this.currentYear);\n }\n }\n\n navForward(event) {\n event.stopPropagation();\n\n if (this.disabled) {\n event.preventDefault();\n return;\n }\n\n this.isMonthNavigate = true;\n\n if (this.view === 'month') {\n this.incrementYear();\n setTimeout(() => {\n this.updateFocus();\n }, 1);\n } else {\n if (this.currentMonth === 11) {\n this.currentMonth = 0;\n this.incrementYear();\n } else {\n this.currentMonth++;\n }\n\n this.onMonthChange.emit({\n month: this.currentMonth + 1,\n year: this.currentYear\n });\n this.createMonths(this.currentMonth, this.currentYear);\n }\n }\n\n decrementYear() {\n this.currentYear--;\n\n if (this.yearNavigator && this.currentYear < this.yearOptions[0]) {\n let difference = this.yearOptions[this.yearOptions.length - 1] - this.yearOptions[0];\n this.populateYearOptions(this.yearOptions[0] - difference, this.yearOptions[this.yearOptions.length - 1] - difference);\n }\n }\n\n incrementYear() {\n this.currentYear++;\n\n if (this.yearNavigator && this.currentYear > this.yearOptions[this.yearOptions.length - 1]) {\n let difference = this.yearOptions[this.yearOptions.length - 1] - this.yearOptions[0];\n this.populateYearOptions(this.yearOptions[0] + difference, this.yearOptions[this.yearOptions.length - 1] + difference);\n }\n }\n\n onDateSelect(event, dateMeta) {\n if (this.disabled || !dateMeta.selectable) {\n event.preventDefault();\n return;\n }\n\n if (this.isMultipleSelection() && this.isSelected(dateMeta)) {\n this.value = this.value.filter((date, i) => {\n return !this.isDateEquals(date, dateMeta);\n });\n\n if (this.value.length === 0) {\n this.value = null;\n }\n\n this.updateModel(this.value);\n } else {\n if (this.shouldSelectDate(dateMeta)) {\n this.selectDate(dateMeta);\n }\n }\n\n if (this.isSingleSelection() && this.hideOnDateTimeSelect) {\n setTimeout(() => {\n event.preventDefault();\n this.hideOverlay();\n\n if (this.mask) {\n this.disableModality();\n }\n\n this.cd.markForCheck();\n }, 150);\n }\n\n this.updateInputfield();\n event.preventDefault();\n }\n\n shouldSelectDate(dateMeta) {\n if (this.isMultipleSelection()) return this.maxDateCount != null ? this.maxDateCount > (this.value ? this.value.length : 0) : true;else return true;\n }\n\n onMonthSelect(event, index) {\n if (!DomHandler.hasClass(event.target, 'p-disabled')) {\n this.onDateSelect(event, {\n year: this.currentYear,\n month: index,\n day: 1,\n selectable: true\n });\n }\n }\n\n updateInputfield() {\n let formattedValue = '';\n\n if (this.value) {\n if (this.isSingleSelection()) {\n formattedValue = this.formatDateTime(this.value);\n } else if (this.isMultipleSelection()) {\n for (let i = 0; i < this.value.length; i++) {\n let dateAsString = this.formatDateTime(this.value[i]);\n formattedValue += dateAsString;\n\n if (i !== this.value.length - 1) {\n formattedValue += this.multipleSeparator + ' ';\n }\n }\n } else if (this.isRangeSelection()) {\n if (this.value && this.value.length) {\n let startDate = this.value[0];\n let endDate = this.value[1];\n formattedValue = this.formatDateTime(startDate);\n\n if (endDate) {\n formattedValue += ' ' + this.rangeSeparator + ' ' + this.formatDateTime(endDate);\n }\n }\n }\n }\n\n this.inputFieldValue = formattedValue;\n this.updateFilledState();\n\n if (this.inputfieldViewChild && this.inputfieldViewChild.nativeElement) {\n this.inputfieldViewChild.nativeElement.value = this.inputFieldValue;\n }\n }\n\n formatDateTime(date) {\n let formattedValue = null;\n\n if (date) {\n if (this.timeOnly) {\n formattedValue = this.formatTime(date);\n } else {\n formattedValue = this.formatDate(date, this.getDateFormat());\n\n if (this.showTime) {\n formattedValue += ' ' + this.formatTime(date);\n }\n }\n }\n\n return formattedValue;\n }\n\n setCurrentHourPM(hours) {\n if (this.hourFormat == '12') {\n this.pm = hours > 11;\n\n if (hours >= 12) {\n this.currentHour = hours == 12 ? 12 : hours - 12;\n } else {\n this.currentHour = hours == 0 ? 12 : hours;\n }\n } else {\n this.currentHour = hours;\n }\n }\n\n selectDate(dateMeta) {\n let date = new Date(dateMeta.year, dateMeta.month, dateMeta.day);\n\n if (this.showTime) {\n if (this.hourFormat == '12') {\n if (this.currentHour === 12) date.setHours(this.pm ? 12 : 0);else date.setHours(this.pm ? this.currentHour + 12 : this.currentHour);\n } else {\n date.setHours(this.currentHour);\n }\n\n date.setMinutes(this.currentMinute);\n date.setSeconds(this.currentSecond);\n }\n\n if (this.minDate && this.minDate > date) {\n date = this.minDate;\n this.setCurrentHourPM(date.getHours());\n this.currentMinute = date.getMinutes();\n this.currentSecond = date.getSeconds();\n }\n\n if (this.maxDate && this.maxDate < date) {\n date = this.maxDate;\n this.setCurrentHourPM(date.getHours());\n this.currentMinute = date.getMinutes();\n this.currentSecond = date.getSeconds();\n }\n\n if (this.isSingleSelection()) {\n this.updateModel(date);\n } else if (this.isMultipleSelection()) {\n this.updateModel(this.value ? [...this.value, date] : [date]);\n } else if (this.isRangeSelection()) {\n if (this.value && this.value.length) {\n let startDate = this.value[0];\n let endDate = this.value[1];\n\n if (!endDate && date.getTime() >= startDate.getTime()) {\n endDate = date;\n } else {\n startDate = date;\n endDate = null;\n }\n\n this.updateModel([startDate, endDate]);\n } else {\n this.updateModel([date, null]);\n }\n }\n\n this.onSelect.emit(date);\n }\n\n updateModel(value) {\n this.value = value;\n\n if (this.dataType == 'date') {\n this.onModelChange(this.value);\n } else if (this.dataType == 'string') {\n if (this.isSingleSelection()) {\n this.onModelChange(this.formatDateTime(this.value));\n } else {\n let stringArrValue = null;\n\n if (this.value) {\n stringArrValue = this.value.map(date => this.formatDateTime(date));\n }\n\n this.onModelChange(stringArrValue);\n }\n }\n }\n\n getFirstDayOfMonthIndex(month, year) {\n let day = new Date();\n day.setDate(1);\n day.setMonth(month);\n day.setFullYear(year);\n let dayIndex = day.getDay() + this.getSundayIndex();\n return dayIndex >= 7 ? dayIndex - 7 : dayIndex;\n }\n\n getDaysCountInMonth(month, year) {\n return 32 - this.daylightSavingAdjust(new Date(year, month, 32)).getDate();\n }\n\n getDaysCountInPrevMonth(month, year) {\n let prev = this.getPreviousMonthAndYear(month, year);\n return this.getDaysCountInMonth(prev.month, prev.year);\n }\n\n getPreviousMonthAndYear(month, year) {\n let m, y;\n\n if (month === 0) {\n m = 11;\n y = year - 1;\n } else {\n m = month - 1;\n y = year;\n }\n\n return {\n 'month': m,\n 'year': y\n };\n }\n\n getNextMonthAndYear(month, year) {\n let m, y;\n\n if (month === 11) {\n m = 0;\n y = year + 1;\n } else {\n m = month + 1;\n y = year;\n }\n\n return {\n 'month': m,\n 'year': y\n };\n }\n\n getSundayIndex() {\n return this.firstDayOfWeek > 0 ? 7 - this.firstDayOfWeek : 0;\n }\n\n isSelected(dateMeta) {\n if (this.value) {\n if (this.isSingleSelection()) {\n return this.isDateEquals(this.value, dateMeta);\n } else if (this.isMultipleSelection()) {\n let selected = false;\n\n for (let date of this.value) {\n selected = this.isDateEquals(date, dateMeta);\n\n if (selected) {\n break;\n }\n }\n\n return selected;\n } else if (this.isRangeSelection()) {\n if (this.value[1]) return this.isDateEquals(this.value[0], dateMeta) || this.isDateEquals(this.value[1], dateMeta) || this.isDateBetween(this.value[0], this.value[1], dateMeta);else return this.isDateEquals(this.value[0], dateMeta);\n }\n } else {\n return false;\n }\n }\n\n isMonthSelected(month) {\n let day = this.value ? Array.isArray(this.value) ? this.value[0].getDate() : this.value.getDate() : 1;\n return this.isSelected({\n year: this.currentYear,\n month: month,\n day: day,\n selectable: true\n });\n }\n\n isDateEquals(value, dateMeta) {\n if (value) return value.getDate() === dateMeta.day && value.getMonth() === dateMeta.month && value.getFullYear() === dateMeta.year;else return false;\n }\n\n isDateBetween(start, end, dateMeta) {\n let between = false;\n\n if (start && end) {\n let date = new Date(dateMeta.year, dateMeta.month, dateMeta.day);\n return start.getTime() <= date.getTime() && end.getTime() >= date.getTime();\n }\n\n return between;\n }\n\n isSingleSelection() {\n return this.selectionMode === 'single';\n }\n\n isRangeSelection() {\n return this.selectionMode === 'range';\n }\n\n isMultipleSelection() {\n return this.selectionMode === 'multiple';\n }\n\n isToday(today, day, month, year) {\n return today.getDate() === day && today.getMonth() === month && today.getFullYear() === year;\n }\n\n isSelectable(day, month, year, otherMonth) {\n let validMin = true;\n let validMax = true;\n let validDate = true;\n let validDay = true;\n\n if (otherMonth && !this.selectOtherMonths) {\n return false;\n }\n\n if (this.minDate) {\n if (this.minDate.getFullYear() > year) {\n validMin = false;\n } else if (this.minDate.getFullYear() === year) {\n if (this.minDate.getMonth() > month) {\n validMin = false;\n } else if (this.minDate.getMonth() === month) {\n if (this.minDate.getDate() > day) {\n validMin = false;\n }\n }\n }\n }\n\n if (this.maxDate) {\n if (this.maxDate.getFullYear() < year) {\n validMax = false;\n } else if (this.maxDate.getFullYear() === year) {\n if (this.maxDate.getMonth() < month) {\n validMax = false;\n } else if (this.maxDate.getMonth() === month) {\n if (this.maxDate.getDate() < day) {\n validMax = false;\n }\n }\n }\n }\n\n if (this.disabledDates) {\n validDate = !this.isDateDisabled(day, month, year);\n }\n\n if (this.disabledDays) {\n validDay = !this.isDayDisabled(day, month, year);\n }\n\n return validMin && validMax && validDate && validDay;\n }\n\n isDateDisabled(day, month, year) {\n if (this.disabledDates) {\n for (let disabledDate of this.disabledDates) {\n if (disabledDate.getFullYear() === year && disabledDate.getMonth() === month && disabledDate.getDate() === day) {\n return true;\n }\n }\n }\n\n return false;\n }\n\n isDayDisabled(day, month, year) {\n if (this.disabledDays) {\n let weekday = new Date(year, month, day);\n let weekdayNumber = weekday.getDay();\n return this.disabledDays.indexOf(weekdayNumber) !== -1;\n }\n\n return false;\n }\n\n onInputFocus(event) {\n this.focus = true;\n\n if (this.showOnFocus) {\n this.showOverlay();\n }\n\n this.onFocus.emit(event);\n }\n\n onInputClick() {\n if (this.showOnFocus && !this.overlayVisible) {\n this.showOverlay();\n }\n }\n\n onInputBlur(event) {\n this.focus = false;\n this.onBlur.emit(event);\n\n if (!this.keepInvalid) {\n this.updateInputfield();\n }\n\n this.onModelTouched();\n }\n\n onButtonClick(event, inputfield) {\n if (!this.overlayVisible) {\n inputfield.focus();\n this.showOverlay();\n } else {\n this.hideOverlay();\n }\n }\n\n onOverlayClick(event) {\n this.overlayService.add({\n originalEvent: event,\n target: this.el.nativeElement\n });\n }\n\n onPrevButtonClick(event) {\n this.navigationState = {\n backward: true,\n button: true\n };\n this.navBackward(event);\n }\n\n onNextButtonClick(event) {\n this.navigationState = {\n backward: false,\n button: true\n };\n this.navForward(event);\n }\n\n onContainerButtonKeydown(event) {\n switch (event.which) {\n //tab\n case 9:\n if (!this.inline) {\n this.trapFocus(event);\n }\n\n break;\n //escape\n\n case 27:\n this.overlayVisible = false;\n event.preventDefault();\n break;\n\n default:\n //Noop\n break;\n }\n }\n\n onInputKeydown(event) {\n this.isKeydown = true;\n\n if (event.keyCode === 40 && this.contentViewChild) {\n this.trapFocus(event);\n } else if (event.keyCode === 27) {\n if (this.overlayVisible) {\n this.overlayVisible = false;\n event.preventDefault();\n }\n } else if (event.keyCode === 13) {\n if (this.overlayVisible) {\n this.overlayVisible = false;\n event.preventDefault();\n }\n } else if (event.keyCode === 9 && this.contentViewChild) {\n DomHandler.getFocusableElements(this.contentViewChild.nativeElement).forEach(el => el.tabIndex = '-1');\n\n if (this.overlayVisible) {\n this.overlayVisible = false;\n }\n }\n }\n\n onDateCellKeydown(event, date, groupIndex) {\n const cellContent = event.currentTarget;\n const cell = cellContent.parentElement;\n\n switch (event.which) {\n //down arrow\n case 40:\n {\n cellContent.tabIndex = '-1';\n let cellIndex = DomHandler.index(cell);\n let nextRow = cell.parentElement.nextElementSibling;\n\n if (nextRow) {\n let focusCell = nextRow.children[cellIndex].children[0];\n\n if (DomHandler.hasClass(focusCell, 'p-disabled')) {\n this.navigationState = {\n backward: false\n };\n this.navForward(event);\n } else {\n nextRow.children[cellIndex].children[0].tabIndex = '0';\n nextRow.children[cellIndex].children[0].focus();\n }\n } else {\n this.navigationState = {\n backward: false\n };\n this.navForward(event);\n }\n\n event.preventDefault();\n break;\n }\n //up arrow\n\n case 38:\n {\n cellContent.tabIndex = '-1';\n let cellIndex = DomHandler.index(cell);\n let prevRow = cell.parentElement.previousElementSibling;\n\n if (prevRow) {\n let focusCell = prevRow.children[cellIndex].children[0];\n\n if (DomHandler.hasClass(focusCell, 'p-disabled')) {\n this.navigationState = {\n backward: true\n };\n this.navBackward(event);\n } else {\n focusCell.tabIndex = '0';\n focusCell.focus();\n }\n } else {\n this.navigationState = {\n backward: true\n };\n this.navBackward(event);\n }\n\n event.preventDefault();\n break;\n }\n //left arrow\n\n case 37:\n {\n cellContent.tabIndex = '-1';\n let prevCell = cell.previousElementSibling;\n\n if (prevCell) {\n let focusCell = prevCell.children[0];\n\n if (DomHandler.hasClass(focusCell, 'p-disabled') || DomHandler.hasClass(focusCell.parentElement, 'p-datepicker-weeknumber')) {\n this.navigateToMonth(true, groupIndex);\n } else {\n focusCell.tabIndex = '0';\n focusCell.focus();\n }\n } else {\n this.navigateToMonth(true, groupIndex);\n }\n\n event.preventDefault();\n break;\n }\n //right arrow\n\n case 39:\n {\n cellContent.tabIndex = '-1';\n let nextCell = cell.nextElementSibling;\n\n if (nextCell) {\n let focusCell = nextCell.children[0];\n\n if (DomHandler.hasClass(focusCell, 'p-disabled')) {\n this.navigateToMonth(false, groupIndex);\n } else {\n focusCell.tabIndex = '0';\n focusCell.focus();\n }\n } else {\n this.navigateToMonth(false, groupIndex);\n }\n\n event.preventDefault();\n break;\n }\n //enter\n\n case 13:\n {\n this.onDateSelect(event, date);\n event.preventDefault();\n break;\n }\n //escape\n\n case 27:\n {\n this.overlayVisible = false;\n event.preventDefault();\n break;\n }\n //tab\n\n case 9:\n {\n if (!this.inline) {\n this.trapFocus(event);\n }\n\n break;\n }\n\n default:\n //no op\n break;\n }\n }\n\n onMonthCellKeydown(event, index) {\n const cell = event.currentTarget;\n\n switch (event.which) {\n //arrows\n case 38:\n case 40:\n {\n cell.tabIndex = '-1';\n var cells = cell.parentElement.children;\n var cellIndex = DomHandler.index(cell);\n let nextCell = cells[event.which === 40 ? cellIndex + 3 : cellIndex - 3];\n\n if (nextCell) {\n nextCell.tabIndex = '0';\n nextCell.focus();\n }\n\n event.preventDefault();\n break;\n }\n //left arrow\n\n case 37:\n {\n cell.tabIndex = '-1';\n let prevCell = cell.previousElementSibling;\n\n if (prevCell) {\n prevCell.tabIndex = '0';\n prevCell.focus();\n }\n\n event.preventDefault();\n break;\n }\n //right arrow\n\n case 39:\n {\n cell.tabIndex = '-1';\n let nextCell = cell.nextElementSibling;\n\n if (nextCell) {\n nextCell.tabIndex = '0';\n nextCell.focus();\n }\n\n event.preventDefault();\n break;\n }\n //enter\n\n case 13:\n {\n this.onMonthSelect(event, index);\n event.preventDefault();\n break;\n }\n //escape\n\n case 27:\n {\n this.overlayVisible = false;\n event.preventDefault();\n break;\n }\n //tab\n\n case 9:\n {\n if (!this.inline) {\n this.trapFocus(event);\n }\n\n break;\n }\n\n default:\n //no op\n break;\n }\n }\n\n navigateToMonth(prev, groupIndex) {\n if (prev) {\n if (this.numberOfMonths === 1 || groupIndex === 0) {\n this.navigationState = {\n backward: true\n };\n this.navBackward(event);\n } else {\n let prevMonthContainer = this.contentViewChild.nativeElement.children[groupIndex - 1];\n let cells = DomHandler.find(prevMonthContainer, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');\n let focusCell = cells[cells.length - 1];\n focusCell.tabIndex = '0';\n focusCell.focus();\n }\n } else {\n if (this.numberOfMonths === 1 || groupIndex === this.numberOfMonths - 1) {\n this.navigationState = {\n backward: false\n };\n this.navForward(event);\n } else {\n let nextMonthContainer = this.contentViewChild.nativeElement.children[groupIndex + 1];\n let focusCell = DomHandler.findSingle(nextMonthContainer, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');\n focusCell.tabIndex = '0';\n focusCell.focus();\n }\n }\n }\n\n updateFocus() {\n let cell;\n\n if (this.navigationState) {\n if (this.navigationState.button) {\n this.initFocusableCell();\n if (this.navigationState.backward) DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-datepicker-prev').focus();else DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-datepicker-next').focus();\n } else {\n if (this.navigationState.backward) {\n let cells = DomHandler.find(this.contentViewChild.nativeElement, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');\n cell = cells[cells.length - 1];\n } else {\n cell = DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');\n }\n\n if (cell) {\n cell.tabIndex = '0';\n cell.focus();\n }\n }\n\n this.navigationState = null;\n } else {\n this.initFocusableCell();\n }\n }\n\n initFocusableCell() {\n let cell;\n\n if (this.view === 'month') {\n let cells = DomHandler.find(this.contentViewChild.nativeElement, '.p-monthpicker .p-monthpicker-month:not(.p-disabled)');\n let selectedCell = DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-monthpicker .p-monthpicker-month.p-highlight');\n cells.forEach(cell => cell.tabIndex = -1);\n cell = selectedCell || cells[0];\n\n if (cells.length === 0) {\n let disabledCells = DomHandler.find(this.contentViewChild.nativeElement, '.p-monthpicker .p-monthpicker-month.p-disabled[tabindex = \"0\"]');\n disabledCells.forEach(cell => cell.tabIndex = -1);\n }\n } else {\n cell = DomHandler.findSingle(this.contentViewChild.nativeElement, 'span.p-highlight');\n\n if (!cell) {\n let todayCell = DomHandler.findSingle(this.contentViewChild.nativeElement, 'td.p-datepicker-today span:not(.p-disabled):not(.p-ink)');\n if (todayCell) cell = todayCell;else cell = DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');\n }\n }\n\n if (cell) {\n cell.tabIndex = '0';\n }\n }\n\n trapFocus(event) {\n let focusableElements = DomHandler.getFocusableElements(this.contentViewChild.nativeElement);\n\n if (focusableElements && focusableElements.length > 0) {\n if (!focusableElements[0].ownerDocument.activeElement) {\n focusableElements[0].focus();\n } else {\n let focusedIndex = focusableElements.indexOf(focusableElements[0].ownerDocument.activeElement);\n\n if (event.shiftKey) {\n if (focusedIndex == -1 || focusedIndex === 0) {\n if (this.focusTrap) {\n focusableElements[focusableElements.length - 1].focus();\n } else {\n if (focusedIndex === -1) return this.hideOverlay();else if (focusedIndex === 0) return;\n }\n } else {\n focusableElements[focusedIndex - 1].focus();\n }\n } else {\n if (focusedIndex == -1 || focusedIndex === focusableElements.length - 1) {\n if (!this.focusTrap && focusedIndex != -1) return this.hideOverlay();else focusableElements[0].focus();\n } else {\n focusableElements[focusedIndex + 1].focus();\n }\n }\n }\n }\n\n event.preventDefault();\n }\n\n onMonthDropdownChange(m) {\n this.currentMonth = parseInt(m);\n this.onMonthChange.emit({\n month: this.currentMonth + 1,\n year: this.currentYear\n });\n this.createMonths(this.currentMonth, this.currentYear);\n }\n\n onYearDropdownChange(y) {\n this.currentYear = parseInt(y);\n this.onYearChange.emit({\n month: this.currentMonth + 1,\n year: this.currentYear\n });\n this.createMonths(this.currentMonth, this.currentYear);\n }\n\n validateTime(hour, minute, second, pm) {\n let value = this.value;\n const convertedHour = this.convertTo24Hour(hour, pm);\n\n if (this.isRangeSelection()) {\n value = this.value[1] || this.value[0];\n }\n\n if (this.isMultipleSelection()) {\n value = this.value[this.value.length - 1];\n }\n\n const valueDateString = value ? value.toDateString() : null;\n\n if (this.minDate && valueDateString && this.minDate.toDateString() === valueDateString) {\n if (this.minDate.getHours() > convertedHour) {\n return false;\n }\n\n if (this.minDate.getHours() === convertedHour) {\n if (this.minDate.getMinutes() > minute) {\n return false;\n }\n\n if (this.minDate.getMinutes() === minute) {\n if (this.minDate.getSeconds() > second) {\n return false;\n }\n }\n }\n }\n\n if (this.maxDate && valueDateString && this.maxDate.toDateString() === valueDateString) {\n if (this.maxDate.getHours() < convertedHour) {\n return false;\n }\n\n if (this.maxDate.getHours() === convertedHour) {\n if (this.maxDate.getMinutes() < minute) {\n return false;\n }\n\n if (this.maxDate.getMinutes() === minute) {\n if (this.maxDate.getSeconds() < second) {\n return false;\n }\n }\n }\n }\n\n return true;\n }\n\n incrementHour(event) {\n const prevHour = this.currentHour;\n let newHour = this.currentHour + this.stepHour;\n let newPM = this.pm;\n if (this.hourFormat == '24') newHour = newHour >= 24 ? newHour - 24 : newHour;else if (this.hourFormat == '12') {\n // Before the AM/PM break, now after\n if (prevHour < 12 && newHour > 11) {\n newPM = !this.pm;\n }\n\n newHour = newHour >= 13 ? newHour - 12 : newHour;\n }\n\n if (this.validateTime(newHour, this.currentMinute, this.currentSecond, newPM)) {\n this.currentHour = newHour;\n this.pm = newPM;\n }\n\n event.preventDefault();\n }\n\n onTimePickerElementMouseDown(event, type, direction) {\n if (!this.disabled) {\n this.repeat(event, null, type, direction);\n event.preventDefault();\n }\n }\n\n onTimePickerElementMouseUp(event) {\n if (!this.disabled) {\n this.clearTimePickerTimer();\n this.updateTime();\n }\n }\n\n onTimePickerElementMouseLeave() {\n if (!this.disabled && this.timePickerTimer) {\n this.clearTimePickerTimer();\n this.updateTime();\n }\n }\n\n repeat(event, interval, type, direction) {\n let i = interval || 500;\n this.clearTimePickerTimer();\n this.timePickerTimer = setTimeout(() => {\n this.repeat(event, 100, type, direction);\n this.cd.markForCheck();\n }, i);\n\n switch (type) {\n case 0:\n if (direction === 1) this.incrementHour(event);else this.decrementHour(event);\n break;\n\n case 1:\n if (direction === 1) this.incrementMinute(event);else this.decrementMinute(event);\n break;\n\n case 2:\n if (direction === 1) this.incrementSecond(event);else this.decrementSecond(event);\n break;\n }\n\n this.updateInputfield();\n }\n\n clearTimePickerTimer() {\n if (this.timePickerTimer) {\n clearTimeout(this.timePickerTimer);\n this.timePickerTimer = null;\n }\n }\n\n decrementHour(event) {\n let newHour = this.currentHour - this.stepHour;\n let newPM = this.pm;\n if (this.hourFormat == '24') newHour = newHour < 0 ? 24 + newHour : newHour;else if (this.hourFormat == '12') {\n // If we were at noon/midnight, then switch\n if (this.currentHour === 12) {\n newPM = !this.pm;\n }\n\n newHour = newHour <= 0 ? 12 + newHour : newHour;\n }\n\n if (this.validateTime(newHour, this.currentMinute, this.currentSecond, newPM)) {\n this.currentHour = newHour;\n this.pm = newPM;\n }\n\n event.preventDefault();\n }\n\n incrementMinute(event) {\n let newMinute = this.currentMinute + this.stepMinute;\n newMinute = newMinute > 59 ? newMinute - 60 : newMinute;\n\n if (this.validateTime(this.currentHour, newMinute, this.currentSecond, this.pm)) {\n this.currentMinute = newMinute;\n }\n\n event.preventDefault();\n }\n\n decrementMinute(event) {\n let newMinute = this.currentMinute - this.stepMinute;\n newMinute = newMinute < 0 ? 60 + newMinute : newMinute;\n\n if (this.validateTime(this.currentHour, newMinute, this.currentSecond, this.pm)) {\n this.currentMinute = newMinute;\n }\n\n event.preventDefault();\n }\n\n incrementSecond(event) {\n let newSecond = this.currentSecond + this.stepSecond;\n newSecond = newSecond > 59 ? newSecond - 60 : newSecond;\n\n if (this.validateTime(this.currentHour, this.currentMinute, newSecond, this.pm)) {\n this.currentSecond = newSecond;\n }\n\n event.preventDefault();\n }\n\n decrementSecond(event) {\n let newSecond = this.currentSecond - this.stepSecond;\n newSecond = newSecond < 0 ? 60 + newSecond : newSecond;\n\n if (this.validateTime(this.currentHour, this.currentMinute, newSecond, this.pm)) {\n this.currentSecond = newSecond;\n }\n\n event.preventDefault();\n }\n\n updateTime() {\n let value = this.value;\n\n if (this.isRangeSelection()) {\n value = this.value[1] || this.value[0];\n }\n\n if (this.isMultipleSelection()) {\n value = this.value[this.value.length - 1];\n }\n\n value = value ? new Date(value.getTime()) : new Date();\n\n if (this.hourFormat == '12') {\n if (this.currentHour === 12) value.setHours(this.pm ? 12 : 0);else value.setHours(this.pm ? this.currentHour + 12 : this.currentHour);\n } else {\n value.setHours(this.currentHour);\n }\n\n value.setMinutes(this.currentMinute);\n value.setSeconds(this.currentSecond);\n\n if (this.isRangeSelection()) {\n if (this.value[1]) value = [this.value[0], value];else value = [value, null];\n }\n\n if (this.isMultipleSelection()) {\n value = [...this.value.slice(0, -1), value];\n }\n\n this.updateModel(value);\n this.onSelect.emit(value);\n this.updateInputfield();\n }\n\n toggleAMPM(event) {\n const newPM = !this.pm;\n\n if (this.validateTime(this.currentHour, this.currentMinute, this.currentSecond, newPM)) {\n this.pm = newPM;\n this.updateTime();\n }\n\n event.preventDefault();\n }\n\n onUserInput(event) {\n // IE 11 Workaround for input placeholder : https://github.com/primefaces/primeng/issues/2026\n if (!this.isKeydown) {\n return;\n }\n\n this.isKeydown = false;\n let val = event.target.value;\n\n try {\n let value = this.parseValueFromString(val);\n\n if (this.isValidSelection(value)) {\n this.updateModel(value);\n this.updateUI();\n }\n } catch (err) {\n //invalid date\n this.updateModel(null);\n }\n\n this.filled = val != null && val.length;\n this.onInput.emit(event);\n }\n\n isValidSelection(value) {\n let isValid = true;\n\n if (this.isSingleSelection()) {\n if (!this.isSelectable(value.getDate(), value.getMonth(), value.getFullYear(), false)) {\n isValid = false;\n }\n } else if (value.every(v => this.isSelectable(v.getDate(), v.getMonth(), v.getFullYear(), false))) {\n if (this.isRangeSelection()) {\n isValid = value.length > 1 && value[1] > value[0] ? true : false;\n }\n }\n\n return isValid;\n }\n\n parseValueFromString(text) {\n if (!text || text.trim().length === 0) {\n return null;\n }\n\n let value;\n\n if (this.isSingleSelection()) {\n value = this.parseDateTime(text);\n } else if (this.isMultipleSelection()) {\n let tokens = text.split(this.multipleSeparator);\n value = [];\n\n for (let token of tokens) {\n value.push(this.parseDateTime(token.trim()));\n }\n } else if (this.isRangeSelection()) {\n let tokens = text.split(' ' + this.rangeSeparator + ' ');\n value = [];\n\n for (let i = 0; i < tokens.length; i++) {\n value[i] = this.parseDateTime(tokens[i].trim());\n }\n }\n\n return value;\n }\n\n parseDateTime(text) {\n let date;\n let parts = text.split(' ');\n\n if (this.timeOnly) {\n date = new Date();\n this.populateTime(date, parts[0], parts[1]);\n } else {\n const dateFormat = this.getDateFormat();\n\n if (this.showTime) {\n let ampm = this.hourFormat == '12' ? parts.pop() : null;\n let timeString = parts.pop();\n date = this.parseDate(parts.join(' '), dateFormat);\n this.populateTime(date, timeString, ampm);\n } else {\n date = this.parseDate(text, dateFormat);\n }\n }\n\n return date;\n }\n\n populateTime(value, timeString, ampm) {\n if (this.hourFormat == '12' && !ampm) {\n throw 'Invalid Time';\n }\n\n this.pm = ampm === 'PM' || ampm === 'pm';\n let time = this.parseTime(timeString);\n value.setHours(time.hour);\n value.setMinutes(time.minute);\n value.setSeconds(time.second);\n }\n\n updateUI() {\n let val = this.value || this.defaultDate || new Date();\n\n if (Array.isArray(val)) {\n val = val[0];\n }\n\n this.currentMonth = val.getMonth();\n this.currentYear = val.getFullYear();\n this.createMonths(this.currentMonth, this.currentYear);\n\n if (this.showTime || this.timeOnly) {\n this.setCurrentHourPM(val.getHours());\n this.currentMinute = val.getMinutes();\n this.currentSecond = val.getSeconds();\n }\n }\n\n showOverlay() {\n if (!this.overlayVisible) {\n this.updateUI();\n this.overlayVisible = true;\n }\n }\n\n hideOverlay() {\n this.overlayVisible = false;\n this.clearTimePickerTimer();\n\n if (this.touchUI) {\n this.disableModality();\n }\n\n this.cd.markForCheck();\n }\n\n toggle() {\n if (!this.inline) {\n if (!this.overlayVisible) {\n this.showOverlay();\n this.inputfieldViewChild.nativeElement.focus();\n } else {\n this.hideOverlay();\n }\n }\n }\n\n onOverlayAnimationStart(event) {\n switch (event.toState) {\n case 'visible':\n case 'visibleTouchUI':\n if (!this.inline) {\n this.overlay = event.element;\n this.appendOverlay();\n\n if (this.autoZIndex) {\n if (this.touchUI) ZIndexUtils.set('modal', this.overlay, this.baseZIndex || this.config.zIndex.modal);else ZIndexUtils.set('overlay', this.overlay, this.baseZIndex || this.config.zIndex.overlay);\n }\n\n this.alignOverlay();\n this.onShow.emit(event);\n }\n\n break;\n\n case 'void':\n this.onOverlayHide();\n this.onClose.emit(event);\n break;\n }\n }\n\n onOverlayAnimationDone(event) {\n switch (event.toState) {\n case 'visible':\n case 'visibleTouchUI':\n if (!this.inline) {\n this.bindDocumentClickListener();\n this.bindDocumentResizeListener();\n this.bindScrollListener();\n }\n\n break;\n\n case 'void':\n if (this.autoZIndex) {\n ZIndexUtils.clear(event.element);\n }\n\n break;\n }\n }\n\n appendOverlay() {\n if (this.appendTo) {\n if (this.appendTo === 'body') document.body.appendChild(this.overlay);else DomHandler.appendChild(this.overlay, this.appendTo);\n }\n }\n\n restoreOverlayAppend() {\n if (this.overlay && this.appendTo) {\n this.el.nativeElement.appendChild(this.overlay);\n }\n }\n\n alignOverlay() {\n if (this.touchUI) {\n this.enableModality(this.overlay);\n } else {\n if (this.appendTo) DomHandler.absolutePosition(this.overlay, this.inputfieldViewChild.nativeElement);else DomHandler.relativePosition(this.overlay, this.inputfieldViewChild.nativeElement);\n }\n }\n\n enableModality(element) {\n if (!this.mask) {\n this.mask = document.createElement('div');\n this.mask.style.zIndex = String(parseInt(element.style.zIndex) - 1);\n let maskStyleClass = 'p-component-overlay p-datepicker-mask p-datepicker-mask-scrollblocker p-component-overlay p-component-overlay-enter';\n DomHandler.addMultipleClasses(this.mask, maskStyleClass);\n this.maskClickListener = this.renderer.listen(this.mask, 'click', event => {\n this.disableModality();\n });\n document.body.appendChild(this.mask);\n DomHandler.addClass(document.body, 'p-overflow-hidden');\n }\n }\n\n disableModality() {\n if (this.mask) {\n DomHandler.addClass(this.mask, 'p-component-overlay-leave');\n this.animationEndListener = this.destroyMask.bind(this);\n this.mask.addEventListener('animationend', this.animationEndListener);\n }\n }\n\n destroyMask() {\n document.body.removeChild(this.mask);\n let bodyChildren = document.body.children;\n let hasBlockerMasks;\n\n for (let i = 0; i < bodyChildren.length; i++) {\n let bodyChild = bodyChildren[i];\n\n if (DomHandler.hasClass(bodyChild, 'p-datepicker-mask-scrollblocker')) {\n hasBlockerMasks = true;\n break;\n }\n }\n\n if (!hasBlockerMasks) {\n DomHandler.removeClass(document.body, 'p-overflow-hidden');\n }\n\n this.unbindAnimationEndListener();\n this.unbindMaskClickListener();\n this.mask = null;\n }\n\n unbindMaskClickListener() {\n if (this.maskClickListener) {\n this.maskClickListener();\n this.maskClickListener = null;\n }\n }\n\n unbindAnimationEndListener() {\n if (this.animationEndListener && this.mask) {\n this.mask.removeEventListener('animationend', this.animationEndListener);\n this.animationEndListener = null;\n }\n }\n\n writeValue(value) {\n this.value = value;\n\n if (this.value && typeof this.value === 'string') {\n this.value = this.parseValueFromString(this.value);\n }\n\n this.updateInputfield();\n this.updateUI();\n this.cd.markForCheck();\n }\n\n registerOnChange(fn) {\n this.onModelChange = fn;\n }\n\n registerOnTouched(fn) {\n this.onModelTouched = fn;\n }\n\n setDisabledState(val) {\n this.disabled = val;\n this.cd.markForCheck();\n }\n\n getDateFormat() {\n return this.dateFormat || this.getTranslation('dateFormat');\n } // Ported from jquery-ui datepicker formatDate\n\n\n formatDate(date, format) {\n if (!date) {\n return '';\n }\n\n let iFormat;\n\n const lookAhead = match => {\n const matches = iFormat + 1 < format.length && format.charAt(iFormat + 1) === match;\n\n if (matches) {\n iFormat++;\n }\n\n return matches;\n },\n formatNumber = (match, value, len) => {\n let num = '' + value;\n\n if (lookAhead(match)) {\n while (num.length < len) {\n num = '0' + num;\n }\n }\n\n return num;\n },\n formatName = (match, value, shortNames, longNames) => {\n return lookAhead(match) ? longNames[value] : shortNames[value];\n };\n\n let output = '';\n let literal = false;\n\n if (date) {\n for (iFormat = 0; iFormat < format.length; iFormat++) {\n if (literal) {\n if (format.charAt(iFormat) === '\\'' && !lookAhead('\\'')) {\n literal = false;\n } else {\n output += format.charAt(iFormat);\n }\n } else {\n switch (format.charAt(iFormat)) {\n case 'd':\n output += formatNumber('d', date.getDate(), 2);\n break;\n\n case 'D':\n output += formatName('D', date.getDay(), this.getTranslation(TranslationKeys.DAY_NAMES_SHORT), this.getTranslation(TranslationKeys.DAY_NAMES));\n break;\n\n case 'o':\n output += formatNumber('o', Math.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() - new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3);\n break;\n\n case 'm':\n output += formatNumber('m', date.getMonth() + 1, 2);\n break;\n\n case 'M':\n output += formatName('M', date.getMonth(), this.getTranslation(TranslationKeys.MONTH_NAMES_SHORT), this.getTranslation(TranslationKeys.MONTH_NAMES));\n break;\n\n case 'y':\n output += lookAhead('y') ? date.getFullYear() : (date.getFullYear() % 100 < 10 ? '0' : '') + date.getFullYear() % 100;\n break;\n\n case '@':\n output += date.getTime();\n break;\n\n case '!':\n output += date.getTime() * 10000 + this.ticksTo1970;\n break;\n\n case '\\'':\n if (lookAhead('\\'')) {\n output += '\\'';\n } else {\n literal = true;\n }\n\n break;\n\n default:\n output += format.charAt(iFormat);\n }\n }\n }\n }\n\n return output;\n }\n\n formatTime(date) {\n if (!date) {\n return '';\n }\n\n let output = '';\n let hours = date.getHours();\n let minutes = date.getMinutes();\n let seconds = date.getSeconds();\n\n if (this.hourFormat == '12' && hours > 11 && hours != 12) {\n hours -= 12;\n }\n\n if (this.hourFormat == '12') {\n output += hours === 0 ? 12 : hours < 10 ? '0' + hours : hours;\n } else {\n output += hours < 10 ? '0' + hours : hours;\n }\n\n output += ':';\n output += minutes < 10 ? '0' + minutes : minutes;\n\n if (this.showSeconds) {\n output += ':';\n output += seconds < 10 ? '0' + seconds : seconds;\n }\n\n if (this.hourFormat == '12') {\n output += date.getHours() > 11 ? ' PM' : ' AM';\n }\n\n return output;\n }\n\n parseTime(value) {\n let tokens = value.split(':');\n let validTokenLength = this.showSeconds ? 3 : 2;\n\n if (tokens.length !== validTokenLength) {\n throw \"Invalid time\";\n }\n\n let h = parseInt(tokens[0]);\n let m = parseInt(tokens[1]);\n let s = this.showSeconds ? parseInt(tokens[2]) : null;\n\n if (isNaN(h) || isNaN(m) || h > 23 || m > 59 || this.hourFormat == '12' && h > 12 || this.showSeconds && (isNaN(s) || s > 59)) {\n throw \"Invalid time\";\n } else {\n if (this.hourFormat == '12') {\n if (h !== 12 && this.pm) {\n h += 12;\n } else if (!this.pm && h === 12) {\n h -= 12;\n }\n }\n\n return {\n hour: h,\n minute: m,\n second: s\n };\n }\n } // Ported from jquery-ui datepicker parseDate\n\n\n parseDate(value, format) {\n if (format == null || value == null) {\n throw \"Invalid arguments\";\n }\n\n value = typeof value === \"object\" ? value.toString() : value + \"\";\n\n if (value === \"\") {\n return null;\n }\n\n let iFormat,\n dim,\n extra,\n iValue = 0,\n shortYearCutoff = typeof this.shortYearCutoff !== \"string\" ? this.shortYearCutoff : new Date().getFullYear() % 100 + parseInt(this.shortYearCutoff, 10),\n year = -1,\n month = -1,\n day = -1,\n doy = -1,\n literal = false,\n date,\n lookAhead = match => {\n let matches = iFormat + 1 < format.length && format.charAt(iFormat + 1) === match;\n\n if (matches) {\n iFormat++;\n }\n\n return matches;\n },\n getNumber = match => {\n let isDoubled = lookAhead(match),\n size = match === \"@\" ? 14 : match === \"!\" ? 20 : match === \"y\" && isDoubled ? 4 : match === \"o\" ? 3 : 2,\n minSize = match === \"y\" ? size : 1,\n digits = new RegExp(\"^\\\\d{\" + minSize + \",\" + size + \"}\"),\n num = value.substring(iValue).match(digits);\n\n if (!num) {\n throw \"Missing number at position \" + iValue;\n }\n\n iValue += num[0].length;\n return parseInt(num[0], 10);\n },\n getName = (match, shortNames, longNames) => {\n let index = -1;\n let arr = lookAhead(match) ? longNames : shortNames;\n let names = [];\n\n for (let i = 0; i < arr.length; i++) {\n names.push([i, arr[i]]);\n }\n\n names.sort((a, b) => {\n return -(a[1].length - b[1].length);\n });\n\n for (let i = 0; i < names.length; i++) {\n let name = names[i][1];\n\n if (value.substr(iValue, name.length).toLowerCase() === name.toLowerCase()) {\n index = names[i][0];\n iValue += name.length;\n break;\n }\n }\n\n if (index !== -1) {\n return index + 1;\n } else {\n throw \"Unknown name at position \" + iValue;\n }\n },\n checkLiteral = () => {\n if (value.charAt(iValue) !== format.charAt(iFormat)) {\n throw \"Unexpected literal at position \" + iValue;\n }\n\n iValue++;\n };\n\n if (this.view === 'month') {\n day = 1;\n }\n\n for (iFormat = 0; iFormat < format.length; iFormat++) {\n if (literal) {\n if (format.charAt(iFormat) === \"'\" && !lookAhead(\"'\")) {\n literal = false;\n } else {\n checkLiteral();\n }\n } else {\n switch (format.charAt(iFormat)) {\n case \"d\":\n day = getNumber(\"d\");\n break;\n\n case \"D\":\n getName(\"D\", this.getTranslation(TranslationKeys.DAY_NAMES_SHORT), this.getTranslation(TranslationKeys.DAY_NAMES));\n break;\n\n case \"o\":\n doy = getNumber(\"o\");\n break;\n\n case \"m\":\n month = getNumber(\"m\");\n break;\n\n case \"M\":\n month = getName(\"M\", this.getTranslation(TranslationKeys.MONTH_NAMES_SHORT), this.getTranslation(TranslationKeys.MONTH_NAMES));\n break;\n\n case \"y\":\n year = getNumber(\"y\");\n break;\n\n case \"@\":\n date = new Date(getNumber(\"@\"));\n year = date.getFullYear();\n month = date.getMonth() + 1;\n day = date.getDate();\n break;\n\n case \"!\":\n date = new Date((getNumber(\"!\") - this.ticksTo1970) / 10000);\n year = date.getFullYear();\n month = date.getMonth() + 1;\n day = date.getDate();\n break;\n\n case \"'\":\n if (lookAhead(\"'\")) {\n checkLiteral();\n } else {\n literal = true;\n }\n\n break;\n\n default:\n checkLiteral();\n }\n }\n }\n\n if (iValue < value.length) {\n extra = value.substr(iValue);\n\n if (!/^\\s+/.test(extra)) {\n throw \"Extra/unparsed characters found in date: \" + extra;\n }\n }\n\n if (year === -1) {\n year = new Date().getFullYear();\n } else if (year < 100) {\n year += new Date().getFullYear() - new Date().getFullYear() % 100 + (year <= shortYearCutoff ? 0 : -100);\n }\n\n if (doy > -1) {\n month = 1;\n day = doy;\n\n do {\n dim = this.getDaysCountInMonth(year, month - 1);\n\n if (day <= dim) {\n break;\n }\n\n month++;\n day -= dim;\n } while (true);\n }\n\n date = this.daylightSavingAdjust(new Date(year, month - 1, day));\n\n if (date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day) {\n throw \"Invalid date\"; // E.g. 31/02/00\n }\n\n return date;\n }\n\n daylightSavingAdjust(date) {\n if (!date) {\n return null;\n }\n\n date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);\n return date;\n }\n\n updateFilledState() {\n this.filled = this.inputFieldValue && this.inputFieldValue != '';\n }\n\n onTodayButtonClick(event) {\n let date = new Date();\n let dateMeta = {\n day: date.getDate(),\n month: date.getMonth(),\n year: date.getFullYear(),\n otherMonth: date.getMonth() !== this.currentMonth || date.getFullYear() !== this.currentYear,\n today: true,\n selectable: true\n };\n this.onDateSelect(event, dateMeta);\n this.onTodayClick.emit(event);\n }\n\n onClearButtonClick(event) {\n this.updateModel(null);\n this.updateInputfield();\n this.hideOverlay();\n this.onClearClick.emit(event);\n }\n\n bindDocumentClickListener() {\n if (!this.documentClickListener) {\n this.zone.runOutsideAngular(() => {\n const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';\n this.documentClickListener = this.renderer.listen(documentTarget, 'click', event => {\n if (this.isOutsideClicked(event) && this.overlayVisible) {\n this.zone.run(() => {\n this.hideOverlay();\n this.onClickOutside.emit(event);\n this.cd.markForCheck();\n });\n }\n });\n });\n }\n }\n\n unbindDocumentClickListener() {\n if (this.documentClickListener) {\n this.documentClickListener();\n this.documentClickListener = null;\n }\n }\n\n bindDocumentResizeListener() {\n if (!this.documentResizeListener && !this.touchUI) {\n this.documentResizeListener = this.onWindowResize.bind(this);\n window.addEventListener('resize', this.documentResizeListener);\n }\n }\n\n unbindDocumentResizeListener() {\n if (this.documentResizeListener) {\n window.removeEventListener('resize', this.documentResizeListener);\n this.documentResizeListener = null;\n }\n }\n\n bindScrollListener() {\n if (!this.scrollHandler) {\n this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerViewChild.nativeElement, () => {\n if (this.overlayVisible) {\n this.hideOverlay();\n }\n });\n }\n\n this.scrollHandler.bindScrollListener();\n }\n\n unbindScrollListener() {\n if (this.scrollHandler) {\n this.scrollHandler.unbindScrollListener();\n }\n }\n\n isOutsideClicked(event) {\n return !(this.el.nativeElement.isSameNode(event.target) || this.isNavIconClicked(event) || this.el.nativeElement.contains(event.target) || this.overlay && this.overlay.contains(event.target));\n }\n\n isNavIconClicked(event) {\n return DomHandler.hasClass(event.target, 'p-datepicker-prev') || DomHandler.hasClass(event.target, 'p-datepicker-prev-icon') || DomHandler.hasClass(event.target, 'p-datepicker-next') || DomHandler.hasClass(event.target, 'p-datepicker-next-icon');\n }\n\n onWindowResize() {\n if (this.overlayVisible && !DomHandler.isAndroid()) {\n this.hideOverlay();\n }\n }\n\n onOverlayHide() {\n if (this.mask) {\n this.destroyMask();\n }\n\n this.unbindDocumentClickListener();\n this.unbindDocumentResizeListener();\n this.unbindScrollListener();\n this.overlay = null;\n }\n\n ngOnDestroy() {\n if (this.scrollHandler) {\n this.scrollHandler.destroy();\n this.scrollHandler = null;\n }\n\n if (this.translationSubscription) {\n this.translationSubscription.unsubscribe();\n }\n\n if (this.overlay && this.autoZIndex) {\n ZIndexUtils.clear(this.overlay);\n }\n\n this.clearTimePickerTimer();\n this.restoreOverlayAppend();\n this.onOverlayHide();\n }\n\n}\n\nCalendar.ɵfac = function Calendar_Factory(t) {\n return new (t || Calendar)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i0.Renderer2), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i0.NgZone), i0.ɵɵdirectiveInject(i1.PrimeNGConfig), i0.ɵɵdirectiveInject(i1.OverlayService));\n};\n\nCalendar.ɵcmp = /* @__PURE__ */i0.ɵɵdefineComponent({\n type: Calendar,\n selectors: [[\"p-calendar\"]],\n contentQueries: function Calendar_ContentQueries(rf, ctx, dirIndex) {\n if (rf & 1) {\n i0.ɵɵcontentQuery(dirIndex, PrimeTemplate, 4);\n }\n\n if (rf & 2) {\n let _t;\n\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.templates = _t);\n }\n },\n viewQuery: function Calendar_Query(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵviewQuery(_c0, 5);\n i0.ɵɵviewQuery(_c1, 5);\n i0.ɵɵviewQuery(_c2, 5);\n }\n\n if (rf & 2) {\n let _t;\n\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.containerViewChild = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.inputfieldViewChild = _t.first);\n i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.content = _t.first);\n }\n },\n hostAttrs: [1, \"p-element\", \"p-inputwrapper\"],\n hostVars: 4,\n hostBindings: function Calendar_HostBindings(rf, ctx) {\n if (rf & 2) {\n i0.ɵɵclassProp(\"p-inputwrapper-filled\", ctx.filled)(\"p-inputwrapper-focus\", ctx.focus);\n }\n },\n inputs: {\n style: \"style\",\n styleClass: \"styleClass\",\n inputStyle: \"inputStyle\",\n inputId: \"inputId\",\n name: \"name\",\n inputStyleClass: \"inputStyleClass\",\n placeholder: \"placeholder\",\n ariaLabelledBy: \"ariaLabelledBy\",\n iconAriaLabel: \"iconAriaLabel\",\n disabled: \"disabled\",\n dateFormat: \"dateFormat\",\n multipleSeparator: \"multipleSeparator\",\n rangeSeparator: \"rangeSeparator\",\n inline: \"inline\",\n showOtherMonths: \"showOtherMonths\",\n selectOtherMonths: \"selectOtherMonths\",\n showIcon: \"showIcon\",\n icon: \"icon\",\n appendTo: \"appendTo\",\n readonlyInput: \"readonlyInput\",\n shortYearCutoff: \"shortYearCutoff\",\n monthNavigator: \"monthNavigator\",\n yearNavigator: \"yearNavigator\",\n hourFormat: \"hourFormat\",\n timeOnly: \"timeOnly\",\n stepHour: \"stepHour\",\n stepMinute: \"stepMinute\",\n stepSecond: \"stepSecond\",\n showSeconds: \"showSeconds\",\n required: \"required\",\n showOnFocus: \"showOnFocus\",\n showWeek: \"showWeek\",\n dataType: \"dataType\",\n selectionMode: \"selectionMode\",\n maxDateCount: \"maxDateCount\",\n showButtonBar: \"showButtonBar\",\n todayButtonStyleClass: \"todayButtonStyleClass\",\n clearButtonStyleClass: \"clearButtonStyleClass\",\n autoZIndex: \"autoZIndex\",\n baseZIndex: \"baseZIndex\",\n panelStyleClass: \"panelStyleClass\",\n panelStyle: \"panelStyle\",\n keepInvalid: \"keepInvalid\",\n hideOnDateTimeSelect: \"hideOnDateTimeSelect\",\n numberOfMonths: \"numberOfMonths\",\n view: \"view\",\n touchUI: \"touchUI\",\n timeSeparator: \"timeSeparator\",\n focusTrap: \"focusTrap\",\n firstDayOfWeek: \"firstDayOfWeek\",\n showTransitionOptions: \"showTransitionOptions\",\n hideTransitionOptions: \"hideTransitionOptions\",\n tabindex: \"tabindex\",\n defaultDate: \"defaultDate\",\n minDate: \"minDate\",\n maxDate: \"maxDate\",\n disabledDates: \"disabledDates\",\n disabledDays: \"disabledDays\",\n yearRange: \"yearRange\",\n showTime: \"showTime\",\n locale: \"locale\"\n },\n outputs: {\n onFocus: \"onFocus\",\n onBlur: \"onBlur\",\n onClose: \"onClose\",\n onSelect: \"onSelect\",\n onInput: \"onInput\",\n onTodayClick: \"onTodayClick\",\n onClearClick: \"onClearClick\",\n onMonthChange: \"onMonthChange\",\n onYearChange: \"onYearChange\",\n onClickOutside: \"onClickOutside\",\n onShow: \"onShow\"\n },\n features: [i0.ɵɵProvidersFeature([CALENDAR_VALUE_ACCESSOR])],\n ngContentSelectors: _c13,\n decls: 4,\n vars: 11,\n consts: [[3, \"ngClass\", \"ngStyle\"], [\"container\", \"\"], [3, \"ngIf\"], [3, \"class\", \"ngStyle\", \"ngClass\", \"click\", 4, \"ngIf\"], [\"type\", \"text\", \"autocomplete\", \"off\", 3, \"value\", \"readonly\", \"ngStyle\", \"placeholder\", \"disabled\", \"ngClass\", \"focus\", \"keydown\", \"click\", \"blur\", \"input\"], [\"inputfield\", \"\"], [\"type\", \"button\", \"pButton\", \"\", \"pRipple\", \"\", \"class\", \"p-datepicker-trigger\", \"tabindex\", \"0\", 3, \"icon\", \"disabled\", \"click\", 4, \"ngIf\"], [\"type\", \"button\", \"pButton\", \"\", \"pRipple\", \"\", \"tabindex\", \"0\", 1, \"p-datepicker-trigger\", 3, \"icon\", \"disabled\", \"click\"], [3, \"ngStyle\", \"ngClass\", \"click\"], [\"contentWrapper\", \"\"], [4, \"ngTemplateOutlet\"], [4, \"ngIf\"], [\"class\", \"p-timepicker\", 4, \"ngIf\"], [\"class\", \"p-datepicker-buttonbar\", 4, \"ngIf\"], [1, \"p-datepicker-group-container\"], [\"class\", \"p-datepicker-group\", 4, \"ngFor\", \"ngForOf\"], [\"class\", \"p-monthpicker\", 4, \"ngIf\"], [1, \"p-datepicker-group\"], [1, \"p-datepicker-header\"], [\"class\", \"p-datepicker-prev p-link\", \"type\", \"button\", \"pRipple\", \"\", 3, \"keydown\", \"click\", 4, \"ngIf\"], [1, \"p-datepicker-title\"], [\"class\", \"p-datepicker-month\", 4, \"ngIf\"], [\"tabindex\", \"0\", \"class\", \"p-datepicker-month\", 3, \"change\", 4, \"ngIf\"], [\"tabindex\", \"0\", \"class\", \"p-datepicker-year\", 3, \"change\", 4, \"ngIf\"], [\"class\", \"p-datepicker-year\", 4, \"ngIf\"], [\"class\", \"p-datepicker-next p-link\", \"type\", \"button\", \"pRipple\", \"\", 3, \"keydown\", \"click\", 4, \"ngIf\"], [\"class\", \"p-datepicker-calendar-container\", 4, \"ngIf\"], [\"type\", \"button\", \"pRipple\", \"\", 1, \"p-datepicker-prev\", \"p-link\", 3, \"keydown\", \"click\"], [1, \"p-datepicker-prev-icon\", \"pi\", \"pi-chevron-left\"], [1, \"p-datepicker-month\"], [\"tabindex\", \"0\", 1, \"p-datepicker-month\", 3, \"change\"], [3, \"value\", \"selected\", 4, \"ngFor\", \"ngForOf\"], [3, \"value\", \"selected\"], [\"tabindex\", \"0\", 1, \"p-datepicker-year\", 3, \"change\"], [1, \"p-datepicker-year\"], [\"type\", \"button\", \"pRipple\", \"\", 1, \"p-datepicker-next\", \"p-link\", 3, \"keydown\", \"click\"], [1, \"p-datepicker-next-icon\", \"pi\", \"pi-chevron-right\"], [1, \"p-datepicker-calendar-container\"], [1, \"p-datepicker-calendar\"], [\"class\", \"p-datepicker-weekheader p-disabled\", 4, \"ngIf\"], [\"scope\", \"col\", 4, \"ngFor\", \"ngForOf\"], [4, \"ngFor\", \"ngForOf\"], [1, \"p-datepicker-weekheader\", \"p-disabled\"], [\"scope\", \"col\"], [\"class\", \"p-datepicker-weeknumber\", 4, \"ngIf\"], [3, \"ngClass\", 4, \"ngFor\", \"ngForOf\"], [1, \"p-datepicker-weeknumber\"], [1, \"p-disabled\"], [3, \"ngClass\"], [\"draggable\", \"false\", \"pRipple\", \"\", 3, \"ngClass\", \"click\", \"keydown\"], [4, \"ngTemplateOutlet\", \"ngTemplateOutletContext\"], [1, \"p-monthpicker\"], [\"class\", \"p-monthpicker-month\", \"pRipple\", \"\", 3, \"ngClass\", \"click\", \"keydown\", 4, \"ngFor\", \"ngForOf\"], [\"pRipple\", \"\", 1, \"p-monthpicker-month\", 3, \"ngClass\", \"click\", \"keydown\"], [1, \"p-timepicker\"], [1, \"p-hour-picker\"], [\"type\", \"button\", \"pRipple\", \"\", 1, \"p-link\", 3, \"keydown\", \"keydown.enter\", \"mousedown\", \"mouseup\", \"mouseleave\"], [1, \"pi\", \"pi-chevron-up\"], [1, \"pi\", \"pi-chevron-down\"], [1, \"p-separator\"], [1, \"p-minute-picker\"], [\"class\", \"p-separator\", 4, \"ngIf\"], [\"class\", \"p-second-picker\", 4, \"ngIf\"], [\"class\", \"p-ampm-picker\", 4, \"ngIf\"], [1, \"p-second-picker\"], [1, \"p-ampm-picker\"], [\"type\", \"button\", \"pRipple\", \"\", 1, \"p-link\", 3, \"keydown\", \"click\", \"keydown.enter\"], [1, \"p-datepicker-buttonbar\"], [\"type\", \"button\", \"pButton\", \"\", \"pRipple\", \"\", 3, \"label\", \"ngClass\", \"keydown\", \"click\"]],\n template: function Calendar_Template(rf, ctx) {\n if (rf & 1) {\n i0.ɵɵprojectionDef(_c11);\n i0.ɵɵelementStart(0, \"span\", 0, 1);\n i0.ɵɵtemplate(2, Calendar_ng_template_2_Template, 3, 16, \"ng-template\", 2);\n i0.ɵɵtemplate(3, Calendar_div_3_Template, 9, 28, \"div\", 3);\n i0.ɵɵelementEnd();\n }\n\n if (rf & 2) {\n i0.ɵɵclassMap(ctx.styleClass);\n i0.ɵɵproperty(\"ngClass\", i0.ɵɵpureFunction4(6, _c12, ctx.showIcon, ctx.timeOnly, ctx.disabled, ctx.focus))(\"ngStyle\", ctx.style);\n i0.ɵɵadvance(2);\n i0.ɵɵproperty(\"ngIf\", !ctx.inline);\n i0.ɵɵadvance(1);\n i0.ɵɵproperty(\"ngIf\", ctx.inline || ctx.overlayVisible);\n }\n },\n directives: [i2.NgClass, i2.NgStyle, i2.NgIf, i3.ButtonDirective, i4.Ripple, i2.NgTemplateOutlet, i2.NgForOf],\n styles: [\".p-calendar{position:relative;display:inline-flex}.p-calendar .p-inputtext{flex:1 1 auto;width:1%}.p-calendar-w-btn .p-inputtext{border-top-right-radius:0;border-bottom-right-radius:0}.p-calendar-w-btn .p-datepicker-trigger{border-top-left-radius:0;border-bottom-left-radius:0}.p-fluid .p-calendar{display:flex}.p-fluid .p-calendar .p-inputtext{width:1%}.p-calendar .p-datepicker{min-width:100%}.p-datepicker{width:auto;position:absolute;top:0;left:0}.p-datepicker-inline{position:static}.p-datepicker-header{display:flex;align-items:center;justify-content:space-between}.p-datepicker-header .p-datepicker-title{margin:0 auto}.p-datepicker-prev,.p-datepicker-next{cursor:pointer;display:inline-flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-datepicker-multiple-month .p-datepicker-group-container{display:flex}.p-datepicker table{width:100%;border-collapse:collapse}.p-datepicker td>span{display:flex;justify-content:center;align-items:center;cursor:pointer;margin:0 auto;overflow:hidden;position:relative}.p-monthpicker-month{width:33.3%;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;position:relative}.p-datepicker-buttonbar{display:flex;justify-content:space-between;align-items:center}.p-timepicker{display:flex;justify-content:center;align-items:center}.p-timepicker button{display:flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;position:relative}.p-timepicker>div{display:flex;align-items:center;flex-direction:column}.p-datepicker-touch-ui,.p-calendar .p-datepicker-touch-ui{position:fixed;top:50%;left:50%;min-width:80vw;transform:translate(-50%,-50%)}\\n\"],\n encapsulation: 2,\n data: {\n animation: [trigger('overlayAnimation', [state('visibleTouchUI', style({\n transform: 'translate(-50%,-50%)',\n opacity: 1\n })), transition('void => visible', [style({\n opacity: 0,\n transform: 'scaleY(0.8)'\n }), animate('{{showTransitionParams}}', style({\n opacity: 1,\n transform: '*'\n }))]), transition('visible => void', [animate('{{hideTransitionParams}}', style({\n opacity: 0\n }))]), transition('void => visibleTouchUI', [style({\n opacity: 0,\n transform: 'translate3d(-50%, -40%, 0) scale(0.9)'\n }), animate('{{showTransitionParams}}')]), transition('visibleTouchUI => void', [animate('{{hideTransitionParams}}', style({\n opacity: 0,\n transform: 'translate3d(-50%, -40%, 0) scale(0.9)'\n }))])])]\n },\n changeDetection: 0\n});\n\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(Calendar, [{\n type: Component,\n args: [{\n selector: 'p-calendar',\n template: `\n \n \n \n \n
1, 'p-datepicker-monthpicker': (view === 'month'), 'p-datepicker-touch-ui': touchUI}\"\n [@overlayAnimation]=\"touchUI ? {value: 'visibleTouchUI', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}:\n {value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\"\n [@.disabled]=\"inline === true\" (@overlayAnimation.start)=\"onOverlayAnimationStart($event)\" (@overlayAnimation.done)=\"onOverlayAnimationDone($event)\" (click)=\"onOverlayClick($event)\" *ngIf=\"inline || overlayVisible\">\n \n \n \n
\n
\n
\n \n
\n {{getTranslation('monthNames')[month.month]}}\n \n \n {{view === 'month' ? currentYear : month.year}}\n
\n \n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {{getTranslation('weekHeader')}}\n \n {{weekDay}}\n
\n \n {{month.weekNumbers[j]}}\n \n \n \n \n {{date.day}}\n \n \n \n
\n
\n
\n
\n
\n \n {{m}}\n \n
\n
\n
\n
\n \n 0{{currentHour}}\n \n
\n
\n {{timeSeparator}}\n
\n
\n \n 0{{currentMinute}}\n \n
\n
\n {{timeSeparator}}\n
\n
\n \n 0{{currentSecond}}\n \n
\n
\n \n {{pm ? 'PM' : 'AM'}}\n \n
\n
\n
\n \n \n
\n \n \n
\n
\n `,\n animations: [trigger('overlayAnimation', [state('visibleTouchUI', style({\n transform: 'translate(-50%,-50%)',\n opacity: 1\n })), transition('void => visible', [style({\n opacity: 0,\n transform: 'scaleY(0.8)'\n }), animate('{{showTransitionParams}}', style({\n opacity: 1,\n transform: '*'\n }))]), transition('visible => void', [animate('{{hideTransitionParams}}', style({\n opacity: 0\n }))]), transition('void => visibleTouchUI', [style({\n opacity: 0,\n transform: 'translate3d(-50%, -40%, 0) scale(0.9)'\n }), animate('{{showTransitionParams}}')]), transition('visibleTouchUI => void', [animate('{{hideTransitionParams}}', style({\n opacity: 0,\n transform: 'translate3d(-50%, -40%, 0) scale(0.9)'\n }))])])],\n host: {\n 'class': 'p-element p-inputwrapper',\n '[class.p-inputwrapper-filled]': 'filled',\n '[class.p-inputwrapper-focus]': 'focus'\n },\n providers: [CALENDAR_VALUE_ACCESSOR],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n styles: [\".p-calendar{position:relative;display:inline-flex}.p-calendar .p-inputtext{flex:1 1 auto;width:1%}.p-calendar-w-btn .p-inputtext{border-top-right-radius:0;border-bottom-right-radius:0}.p-calendar-w-btn .p-datepicker-trigger{border-top-left-radius:0;border-bottom-left-radius:0}.p-fluid .p-calendar{display:flex}.p-fluid .p-calendar .p-inputtext{width:1%}.p-calendar .p-datepicker{min-width:100%}.p-datepicker{width:auto;position:absolute;top:0;left:0}.p-datepicker-inline{position:static}.p-datepicker-header{display:flex;align-items:center;justify-content:space-between}.p-datepicker-header .p-datepicker-title{margin:0 auto}.p-datepicker-prev,.p-datepicker-next{cursor:pointer;display:inline-flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-datepicker-multiple-month .p-datepicker-group-container{display:flex}.p-datepicker table{width:100%;border-collapse:collapse}.p-datepicker td>span{display:flex;justify-content:center;align-items:center;cursor:pointer;margin:0 auto;overflow:hidden;position:relative}.p-monthpicker-month{width:33.3%;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;position:relative}.p-datepicker-buttonbar{display:flex;justify-content:space-between;align-items:center}.p-timepicker{display:flex;justify-content:center;align-items:center}.p-timepicker button{display:flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;position:relative}.p-timepicker>div{display:flex;align-items:center;flex-direction:column}.p-datepicker-touch-ui,.p-calendar .p-datepicker-touch-ui{position:fixed;top:50%;left:50%;min-width:80vw;transform:translate(-50%,-50%)}\\n\"]\n }]\n }], function () {\n return [{\n type: i0.ElementRef\n }, {\n type: i0.Renderer2\n }, {\n type: i0.ChangeDetectorRef\n }, {\n type: i0.NgZone\n }, {\n type: i1.PrimeNGConfig\n }, {\n type: i1.OverlayService\n }];\n }, {\n style: [{\n type: Input\n }],\n styleClass: [{\n type: Input\n }],\n inputStyle: [{\n type: Input\n }],\n inputId: [{\n type: Input\n }],\n name: [{\n type: Input\n }],\n inputStyleClass: [{\n type: Input\n }],\n placeholder: [{\n type: Input\n }],\n ariaLabelledBy: [{\n type: Input\n }],\n iconAriaLabel: [{\n type: Input\n }],\n disabled: [{\n type: Input\n }],\n dateFormat: [{\n type: Input\n }],\n multipleSeparator: [{\n type: Input\n }],\n rangeSeparator: [{\n type: Input\n }],\n inline: [{\n type: Input\n }],\n showOtherMonths: [{\n type: Input\n }],\n selectOtherMonths: [{\n type: Input\n }],\n showIcon: [{\n type: Input\n }],\n icon: [{\n type: Input\n }],\n appendTo: [{\n type: Input\n }],\n readonlyInput: [{\n type: Input\n }],\n shortYearCutoff: [{\n type: Input\n }],\n monthNavigator: [{\n type: Input\n }],\n yearNavigator: [{\n type: Input\n }],\n hourFormat: [{\n type: Input\n }],\n timeOnly: [{\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 required: [{\n type: Input\n }],\n showOnFocus: [{\n type: Input\n }],\n showWeek: [{\n type: Input\n }],\n dataType: [{\n type: Input\n }],\n selectionMode: [{\n type: Input\n }],\n maxDateCount: [{\n type: Input\n }],\n showButtonBar: [{\n type: Input\n }],\n todayButtonStyleClass: [{\n type: Input\n }],\n clearButtonStyleClass: [{\n type: Input\n }],\n autoZIndex: [{\n type: Input\n }],\n baseZIndex: [{\n type: Input\n }],\n panelStyleClass: [{\n type: Input\n }],\n panelStyle: [{\n type: Input\n }],\n keepInvalid: [{\n type: Input\n }],\n hideOnDateTimeSelect: [{\n type: Input\n }],\n numberOfMonths: [{\n type: Input\n }],\n view: [{\n type: Input\n }],\n touchUI: [{\n type: Input\n }],\n timeSeparator: [{\n type: Input\n }],\n focusTrap: [{\n type: Input\n }],\n firstDayOfWeek: [{\n type: Input\n }],\n showTransitionOptions: [{\n type: Input\n }],\n hideTransitionOptions: [{\n type: Input\n }],\n onFocus: [{\n type: Output\n }],\n onBlur: [{\n type: Output\n }],\n onClose: [{\n type: Output\n }],\n onSelect: [{\n type: Output\n }],\n onInput: [{\n type: Output\n }],\n onTodayClick: [{\n type: Output\n }],\n onClearClick: [{\n type: Output\n }],\n onMonthChange: [{\n type: Output\n }],\n onYearChange: [{\n type: Output\n }],\n onClickOutside: [{\n type: Output\n }],\n onShow: [{\n type: Output\n }],\n templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }],\n tabindex: [{\n type: Input\n }],\n containerViewChild: [{\n type: ViewChild,\n args: ['container', {\n static: false\n }]\n }],\n inputfieldViewChild: [{\n type: ViewChild,\n args: ['inputfield', {\n static: false\n }]\n }],\n content: [{\n type: ViewChild,\n args: ['contentWrapper', {\n static: false\n }]\n }],\n defaultDate: [{\n type: Input\n }],\n minDate: [{\n type: Input\n }],\n maxDate: [{\n type: Input\n }],\n disabledDates: [{\n type: Input\n }],\n disabledDays: [{\n type: Input\n }],\n yearRange: [{\n type: Input\n }],\n showTime: [{\n type: Input\n }],\n locale: [{\n type: Input\n }]\n });\n})();\n\nclass CalendarModule {}\n\nCalendarModule.ɵfac = function CalendarModule_Factory(t) {\n return new (t || CalendarModule)();\n};\n\nCalendarModule.ɵmod = /* @__PURE__ */i0.ɵɵdefineNgModule({\n type: CalendarModule\n});\nCalendarModule.ɵinj = /* @__PURE__ */i0.ɵɵdefineInjector({\n imports: [[CommonModule, ButtonModule, SharedModule, RippleModule], ButtonModule, SharedModule]\n});\n\n(function () {\n (typeof ngDevMode === \"undefined\" || ngDevMode) && i0.ɵsetClassMetadata(CalendarModule, [{\n type: NgModule,\n args: [{\n imports: [CommonModule, ButtonModule, SharedModule, RippleModule],\n exports: [Calendar, ButtonModule, SharedModule],\n declarations: [Calendar]\n }]\n }], null, null);\n})();\n/**\n * Generated bundle index. Do not edit.\n */\n\n\nexport { CALENDAR_VALUE_ACCESSOR, Calendar, CalendarModule };","map":{"version":3,"sources":["C:/Users/DELL/Desktop/bachelor-thesis/trip-planner-front/node_modules/primeng/fesm2015/primeng-calendar.mjs"],"names":["i0","forwardRef","EventEmitter","Component","ChangeDetectionStrategy","ViewEncapsulation","Input","Output","ContentChildren","ViewChild","NgModule","trigger","state","style","transition","animate","i2","CommonModule","i3","ButtonModule","i4","RippleModule","DomHandler","ConnectedOverlayScrollHandler","i1","TranslationKeys","PrimeTemplate","SharedModule","NG_VALUE_ACCESSOR","ZIndexUtils","CALENDAR_VALUE_ACCESSOR","provide","useExisting","Calendar","multi","constructor","el","renderer","cd","zone","config","overlayService","multipleSeparator","rangeSeparator","inline","showOtherMonths","icon","shortYearCutoff","hourFormat","stepHour","stepMinute","stepSecond","showSeconds","showOnFocus","showWeek","dataType","selectionMode","todayButtonStyleClass","clearButtonStyleClass","autoZIndex","baseZIndex","keepInvalid","hideOnDateTimeSelect","numberOfMonths","view","timeSeparator","focusTrap","firstDayOfWeek","showTransitionOptions","hideTransitionOptions","onFocus","onBlur","onClose","onSelect","onInput","onTodayClick","onClearClick","onMonthChange","onYearChange","onClickOutside","onShow","onModelChange","onModelTouched","inputFieldValue","navigationState","convertTo24Hour","hours","pm","content","contentViewChild","isMonthNavigate","Promise","resolve","then","updateFocus","initFocusableCell","defaultDate","_defaultDate","initialized","date","Date","currentMonth","getMonth","currentYear","getFullYear","initTime","createMonths","minDate","_minDate","undefined","maxDate","_maxDate","disabledDates","_disabledDates","disabledDays","_disabledDays","yearRange","_yearRange","years","split","yearStart","parseInt","yearEnd","populateYearOptions","showTime","_showTime","currentHour","value","updateInputfield","locale","_locale","newLocale","console","warn","ngOnInit","createWeekDays","ticksTo1970","Math","floor","createMonthPickerValues","translationSubscription","translationObserver","subscribe","ngAfterContentInit","templates","forEach","item","getType","dateTemplate","template","disabledDateTemplate","headerTemplate","footerTemplate","getTranslation","option","start","end","yearOptions","i","push","weekDays","dayIndex","dayLabels","DAY_NAMES_MIN","monthPickerValues","monthLabels","MONTH_NAMES_SHORT","month","year","months","m","y","createMonth","getWeekNumber","checkDate","getTime","setDate","getDate","getDay","time","setMonth","round","dates","firstDay","getFirstDayOfMonthIndex","daysLength","getDaysCountInMonth","prevMonthDaysLength","getDaysCountInPrevMonth","dayNo","today","weekNumbers","monthRows","ceil","week","j","prev","getPreviousMonthAndYear","day","otherMonth","isToday","selectable","isSelectable","remainingDaysLength","length","next","getNextMonthAndYear","getHours","currentMinute","getMinutes","currentSecond","getSeconds","setCurrentHourPM","timeOnly","navBackward","event","stopPropagation","disabled","preventDefault","decrementYear","setTimeout","emit","navForward","incrementYear","yearNavigator","difference","onDateSelect","dateMeta","isMultipleSelection","isSelected","filter","isDateEquals","updateModel","shouldSelectDate","selectDate","isSingleSelection","hideOverlay","mask","disableModality","markForCheck","maxDateCount","onMonthSelect","index","hasClass","target","formattedValue","formatDateTime","dateAsString","isRangeSelection","startDate","endDate","updateFilledState","inputfieldViewChild","nativeElement","formatTime","formatDate","getDateFormat","setHours","setMinutes","setSeconds","stringArrValue","map","setFullYear","getSundayIndex","daylightSavingAdjust","selected","isDateBetween","isMonthSelected","Array","isArray","between","validMin","validMax","validDate","validDay","selectOtherMonths","isDateDisabled","isDayDisabled","disabledDate","weekday","weekdayNumber","indexOf","onInputFocus","focus","showOverlay","onInputClick","overlayVisible","onInputBlur","onButtonClick","inputfield","onOverlayClick","add","originalEvent","onPrevButtonClick","backward","button","onNextButtonClick","onContainerButtonKeydown","which","trapFocus","onInputKeydown","isKeydown","keyCode","getFocusableElements","tabIndex","onDateCellKeydown","groupIndex","cellContent","currentTarget","cell","parentElement","cellIndex","nextRow","nextElementSibling","focusCell","children","prevRow","previousElementSibling","prevCell","navigateToMonth","nextCell","onMonthCellKeydown","cells","prevMonthContainer","find","nextMonthContainer","findSingle","selectedCell","disabledCells","todayCell","focusableElements","ownerDocument","activeElement","focusedIndex","shiftKey","onMonthDropdownChange","onYearDropdownChange","validateTime","hour","minute","second","convertedHour","valueDateString","toDateString","incrementHour","prevHour","newHour","newPM","onTimePickerElementMouseDown","type","direction","repeat","onTimePickerElementMouseUp","clearTimePickerTimer","updateTime","onTimePickerElementMouseLeave","timePickerTimer","interval","decrementHour","incrementMinute","decrementMinute","incrementSecond","decrementSecond","clearTimeout","newMinute","newSecond","slice","toggleAMPM","onUserInput","val","parseValueFromString","isValidSelection","updateUI","err","filled","isValid","every","v","text","trim","parseDateTime","tokens","token","parts","populateTime","dateFormat","ampm","pop","timeString","parseDate","join","parseTime","touchUI","toggle","onOverlayAnimationStart","toState","overlay","element","appendOverlay","set","zIndex","modal","alignOverlay","onOverlayHide","onOverlayAnimationDone","bindDocumentClickListener","bindDocumentResizeListener","bindScrollListener","clear","appendTo","document","body","appendChild","restoreOverlayAppend","enableModality","absolutePosition","relativePosition","createElement","String","maskStyleClass","addMultipleClasses","maskClickListener","listen","addClass","animationEndListener","destroyMask","bind","addEventListener","removeChild","bodyChildren","hasBlockerMasks","bodyChild","removeClass","unbindAnimationEndListener","unbindMaskClickListener","removeEventListener","writeValue","registerOnChange","fn","registerOnTouched","setDisabledState","format","iFormat","lookAhead","match","matches","charAt","formatNumber","len","num","formatName","shortNames","longNames","output","literal","DAY_NAMES_SHORT","DAY_NAMES","MONTH_NAMES","minutes","seconds","validTokenLength","h","s","isNaN","toString","dim","extra","iValue","doy","getNumber","isDoubled","size","minSize","digits","RegExp","substring","getName","arr","names","sort","a","b","name","substr","toLowerCase","checkLiteral","test","onTodayButtonClick","onClearButtonClick","documentClickListener","runOutsideAngular","documentTarget","isOutsideClicked","run","unbindDocumentClickListener","documentResizeListener","onWindowResize","window","unbindDocumentResizeListener","scrollHandler","containerViewChild","unbindScrollListener","isSameNode","isNavIconClicked","contains","isAndroid","ngOnDestroy","destroy","unsubscribe","ɵfac","ElementRef","Renderer2","ChangeDetectorRef","NgZone","PrimeNGConfig","OverlayService","ɵcmp","NgClass","NgStyle","NgIf","ButtonDirective","Ripple","NgTemplateOutlet","NgForOf","transform","opacity","args","selector","animations","host","providers","changeDetection","OnPush","encapsulation","None","styles","styleClass","inputStyle","inputId","inputStyleClass","placeholder","ariaLabelledBy","iconAriaLabel","showIcon","readonlyInput","monthNavigator","required","showButtonBar","panelStyleClass","panelStyle","tabindex","static","CalendarModule","ɵmod","ɵinj","imports","exports","declarations"],"mappings":"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KAAK,CAAC;AACxCggB,MAAAA,OAAO,EAAE,CAD+B;AAExCD,MAAAA,SAAS,EAAE;AAF6B,KAAD,CAApC,CAD0B,CAA3B,CAhBc,CAArB,CAD8xE;AAjI7yE;AAAA;AAAA;;AA0JA;AAAA,qDA3J2F5gB,EA2J3F,mBAA2FiC,QAA3F,EAAiH,CAAC;AACtG4T,IAAAA,IAAI,EAAE1V,SADgG;AAEtG2gB,IAAAA,IAAI,EAAE,CAAC;AAAEC,MAAAA,QAAQ,EAAE,YAAZ;AAA0B1X,MAAAA,QAAQ,EAAG;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAjImB;AAiIZ2X,MAAAA,UAAU,EAAE,CACKrgB,OAAO,CAAC,kBAAD,EAAqB,CACxBC,KAAK,CAAC,gBAAD,EAAmBC,KAAK,CAAC;AAC1B+f,QAAAA,SAAS,EAAE,sBADe;AAE1BC,QAAAA,OAAO,EAAE;AAFiB,OAAD,CAAxB,CADmB,EAKxB/f,UAAU,CAAC,iBAAD,EAAoB,CAC1BD,KAAK,CAAC;AAAEggB,QAAAA,OAAO,EAAE,CAAX;AA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","sourcesContent":["import * as i0 from '@angular/core';\nimport { forwardRef, EventEmitter, Component, ChangeDetectionStrategy, ViewEncapsulation, Input, Output, ContentChildren, ViewChild, NgModule } from '@angular/core';\nimport { trigger, state, style, transition, animate } from '@angular/animations';\nimport * as i2 from '@angular/common';\nimport { CommonModule } from '@angular/common';\nimport * as i3 from 'primeng/button';\nimport { ButtonModule } from 'primeng/button';\nimport * as i4 from 'primeng/ripple';\nimport { RippleModule } from 'primeng/ripple';\nimport { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';\nimport * as i1 from 'primeng/api';\nimport { TranslationKeys, PrimeTemplate, SharedModule } from 'primeng/api';\nimport { NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { ZIndexUtils } from 'primeng/utils';\n\nconst CALENDAR_VALUE_ACCESSOR = {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => Calendar),\n multi: true\n};\nclass Calendar {\n constructor(el, renderer, cd, zone, config, overlayService) {\n this.el = el;\n this.renderer = renderer;\n this.cd = cd;\n this.zone = zone;\n this.config = config;\n this.overlayService = overlayService;\n this.multipleSeparator = ',';\n this.rangeSeparator = '-';\n this.inline = false;\n this.showOtherMonths = true;\n this.icon = 'pi pi-calendar';\n this.shortYearCutoff = '+10';\n this.hourFormat = '24';\n this.stepHour = 1;\n this.stepMinute = 1;\n this.stepSecond = 1;\n this.showSeconds = false;\n this.showOnFocus = true;\n this.showWeek = false;\n this.dataType = 'date';\n this.selectionMode = 'single';\n this.todayButtonStyleClass = 'p-button-text';\n this.clearButtonStyleClass = 'p-button-text';\n this.autoZIndex = true;\n this.baseZIndex = 0;\n this.keepInvalid = false;\n this.hideOnDateTimeSelect = true;\n this.numberOfMonths = 1;\n this.view = 'date';\n this.timeSeparator = \":\";\n this.focusTrap = true;\n this.firstDayOfWeek = 0;\n this.showTransitionOptions = '.12s cubic-bezier(0, 0, 0.2, 1)';\n this.hideTransitionOptions = '.1s linear';\n this.onFocus = new EventEmitter();\n this.onBlur = new EventEmitter();\n this.onClose = new EventEmitter();\n this.onSelect = new EventEmitter();\n this.onInput = new EventEmitter();\n this.onTodayClick = new EventEmitter();\n this.onClearClick = new EventEmitter();\n this.onMonthChange = new EventEmitter();\n this.onYearChange = new EventEmitter();\n this.onClickOutside = new EventEmitter();\n this.onShow = new EventEmitter();\n this.onModelChange = () => { };\n this.onModelTouched = () => { };\n this.inputFieldValue = null;\n this.navigationState = null;\n this.convertTo24Hour = function (hours, pm) {\n if (this.hourFormat == '12') {\n if (hours === 12) {\n return (pm ? 12 : 0);\n }\n else {\n return (pm ? hours + 12 : hours);\n }\n }\n return hours;\n };\n }\n set content(content) {\n this.contentViewChild = content;\n if (this.contentViewChild) {\n if (this.isMonthNavigate) {\n Promise.resolve(null).then(() => this.updateFocus());\n this.isMonthNavigate = false;\n }\n else {\n this.initFocusableCell();\n }\n }\n }\n ;\n get defaultDate() {\n return this._defaultDate;\n }\n ;\n set defaultDate(defaultDate) {\n this._defaultDate = defaultDate;\n if (this.initialized) {\n const date = defaultDate || new Date();\n this.currentMonth = date.getMonth();\n this.currentYear = date.getFullYear();\n this.initTime(date);\n this.createMonths(this.currentMonth, this.currentYear);\n }\n }\n get minDate() {\n return this._minDate;\n }\n set minDate(date) {\n this._minDate = date;\n if (this.currentMonth != undefined && this.currentMonth != null && this.currentYear) {\n this.createMonths(this.currentMonth, this.currentYear);\n }\n }\n get maxDate() {\n return this._maxDate;\n }\n set maxDate(date) {\n this._maxDate = date;\n if (this.currentMonth != undefined && this.currentMonth != null && this.currentYear) {\n this.createMonths(this.currentMonth, this.currentYear);\n }\n }\n get disabledDates() {\n return this._disabledDates;\n }\n set disabledDates(disabledDates) {\n this._disabledDates = disabledDates;\n if (this.currentMonth != undefined && this.currentMonth != null && this.currentYear) {\n this.createMonths(this.currentMonth, this.currentYear);\n }\n }\n get disabledDays() {\n return this._disabledDays;\n }\n set disabledDays(disabledDays) {\n this._disabledDays = disabledDays;\n if (this.currentMonth != undefined && this.currentMonth != null && this.currentYear) {\n this.createMonths(this.currentMonth, this.currentYear);\n }\n }\n get yearRange() {\n return this._yearRange;\n }\n set yearRange(yearRange) {\n this._yearRange = yearRange;\n if (yearRange) {\n const years = yearRange.split(':');\n const yearStart = parseInt(years[0]);\n const yearEnd = parseInt(years[1]);\n this.populateYearOptions(yearStart, yearEnd);\n }\n }\n get showTime() {\n return this._showTime;\n }\n set showTime(showTime) {\n this._showTime = showTime;\n if (this.currentHour === undefined) {\n this.initTime(this.value || new Date());\n }\n this.updateInputfield();\n }\n get locale() {\n return this._locale;\n }\n set locale(newLocale) {\n console.warn(\"Locale property has no effect, use new i18n API instead.\");\n }\n ngOnInit() {\n const date = this.defaultDate || new Date();\n this.currentMonth = date.getMonth();\n this.currentYear = date.getFullYear();\n if (this.view === 'date') {\n this.createWeekDays();\n this.initTime(date);\n this.createMonths(this.currentMonth, this.currentYear);\n this.ticksTo1970 = (((1970 - 1) * 365 + Math.floor(1970 / 4) - Math.floor(1970 / 100) + Math.floor(1970 / 400)) * 24 * 60 * 60 * 10000000);\n }\n else if (this.view === 'month') {\n this.createMonthPickerValues();\n }\n this.translationSubscription = this.config.translationObserver.subscribe(() => {\n this.createWeekDays();\n });\n this.initialized = true;\n }\n ngAfterContentInit() {\n this.templates.forEach((item) => {\n switch (item.getType()) {\n case 'date':\n this.dateTemplate = item.template;\n break;\n case 'disabledDate':\n this.disabledDateTemplate = item.template;\n break;\n case 'header':\n this.headerTemplate = item.template;\n break;\n case 'footer':\n this.footerTemplate = item.template;\n break;\n default:\n this.dateTemplate = item.template;\n break;\n }\n });\n }\n getTranslation(option) {\n return this.config.getTranslation(option);\n }\n populateYearOptions(start, end) {\n this.yearOptions = [];\n for (let i = start; i <= end; i++) {\n this.yearOptions.push(i);\n }\n }\n createWeekDays() {\n this.weekDays = [];\n let dayIndex = this.firstDayOfWeek;\n let dayLabels = this.getTranslation(TranslationKeys.DAY_NAMES_MIN);\n for (let i = 0; i < 7; i++) {\n this.weekDays.push(dayLabels[dayIndex]);\n dayIndex = (dayIndex == 6) ? 0 : ++dayIndex;\n }\n }\n createMonthPickerValues() {\n this.monthPickerValues = [];\n let monthLabels = this.getTranslation(TranslationKeys.MONTH_NAMES_SHORT);\n for (let i = 0; i <= 11; i++) {\n this.monthPickerValues.push(monthLabels[i]);\n }\n }\n createMonths(month, year) {\n this.months = this.months = [];\n for (let i = 0; i < this.numberOfMonths; i++) {\n let m = month + i;\n let y = year;\n if (m > 11) {\n m = m % 11 - 1;\n y = year + 1;\n }\n this.months.push(this.createMonth(m, y));\n }\n }\n getWeekNumber(date) {\n let checkDate = new Date(date.getTime());\n checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7));\n let time = checkDate.getTime();\n checkDate.setMonth(0);\n checkDate.setDate(1);\n return Math.floor(Math.round((time - checkDate.getTime()) / 86400000) / 7) + 1;\n }\n createMonth(month, year) {\n let dates = [];\n let firstDay = this.getFirstDayOfMonthIndex(month, year);\n let daysLength = this.getDaysCountInMonth(month, year);\n let prevMonthDaysLength = this.getDaysCountInPrevMonth(month, year);\n let dayNo = 1;\n let today = new Date();\n let weekNumbers = [];\n let monthRows = Math.ceil((daysLength + firstDay) / 7);\n for (let i = 0; i < monthRows; i++) {\n let week = [];\n if (i == 0) {\n for (let j = (prevMonthDaysLength - firstDay + 1); j <= prevMonthDaysLength; j++) {\n let prev = this.getPreviousMonthAndYear(month, year);\n week.push({ day: j, month: prev.month, year: prev.year, otherMonth: true,\n today: this.isToday(today, j, prev.month, prev.year), selectable: this.isSelectable(j, prev.month, prev.year, true) });\n }\n let remainingDaysLength = 7 - week.length;\n for (let j = 0; j < remainingDaysLength; j++) {\n week.push({ day: dayNo, month: month, year: year, today: this.isToday(today, dayNo, month, year),\n selectable: this.isSelectable(dayNo, month, year, false) });\n dayNo++;\n }\n }\n else {\n for (let j = 0; j < 7; j++) {\n if (dayNo > daysLength) {\n let next = this.getNextMonthAndYear(month, year);\n week.push({ day: dayNo - daysLength, month: next.month, year: next.year, otherMonth: true,\n today: this.isToday(today, dayNo - daysLength, next.month, next.year),\n selectable: this.isSelectable((dayNo - daysLength), next.month, next.year, true) });\n }\n else {\n week.push({ day: dayNo, month: month, year: year, today: this.isToday(today, dayNo, month, year),\n selectable: this.isSelectable(dayNo, month, year, false) });\n }\n dayNo++;\n }\n }\n if (this.showWeek) {\n weekNumbers.push(this.getWeekNumber(new Date(week[0].year, week[0].month, week[0].day)));\n }\n dates.push(week);\n }\n return {\n month: month,\n year: year,\n dates: dates,\n weekNumbers: weekNumbers\n };\n }\n initTime(date) {\n this.pm = date.getHours() > 11;\n if (this.showTime) {\n this.currentMinute = date.getMinutes();\n this.currentSecond = date.getSeconds();\n this.setCurrentHourPM(date.getHours());\n }\n else if (this.timeOnly) {\n this.currentMinute = 0;\n this.currentHour = 0;\n this.currentSecond = 0;\n }\n }\n navBackward(event) {\n event.stopPropagation();\n if (this.disabled) {\n event.preventDefault();\n return;\n }\n this.isMonthNavigate = true;\n if (this.view === 'month') {\n this.decrementYear();\n setTimeout(() => {\n this.updateFocus();\n }, 1);\n }\n else {\n if (this.currentMonth === 0) {\n this.currentMonth = 11;\n this.decrementYear();\n }\n else {\n this.currentMonth--;\n }\n this.onMonthChange.emit({ month: this.currentMonth + 1, year: this.currentYear });\n this.createMonths(this.currentMonth, this.currentYear);\n }\n }\n navForward(event) {\n event.stopPropagation();\n if (this.disabled) {\n event.preventDefault();\n return;\n }\n this.isMonthNavigate = true;\n if (this.view === 'month') {\n this.incrementYear();\n setTimeout(() => {\n this.updateFocus();\n }, 1);\n }\n else {\n if (this.currentMonth === 11) {\n this.currentMonth = 0;\n this.incrementYear();\n }\n else {\n this.currentMonth++;\n }\n this.onMonthChange.emit({ month: this.currentMonth + 1, year: this.currentYear });\n this.createMonths(this.currentMonth, this.currentYear);\n }\n }\n decrementYear() {\n this.currentYear--;\n if (this.yearNavigator && this.currentYear < this.yearOptions[0]) {\n let difference = this.yearOptions[this.yearOptions.length - 1] - this.yearOptions[0];\n this.populateYearOptions(this.yearOptions[0] - difference, this.yearOptions[this.yearOptions.length - 1] - difference);\n }\n }\n incrementYear() {\n this.currentYear++;\n if (this.yearNavigator && this.currentYear > this.yearOptions[this.yearOptions.length - 1]) {\n let difference = this.yearOptions[this.yearOptions.length - 1] - this.yearOptions[0];\n this.populateYearOptions(this.yearOptions[0] + difference, this.yearOptions[this.yearOptions.length - 1] + difference);\n }\n }\n onDateSelect(event, dateMeta) {\n if (this.disabled || !dateMeta.selectable) {\n event.preventDefault();\n return;\n }\n if (this.isMultipleSelection() && this.isSelected(dateMeta)) {\n this.value = this.value.filter((date, i) => {\n return !this.isDateEquals(date, dateMeta);\n });\n if (this.value.length === 0) {\n this.value = null;\n }\n this.updateModel(this.value);\n }\n else {\n if (this.shouldSelectDate(dateMeta)) {\n this.selectDate(dateMeta);\n }\n }\n if (this.isSingleSelection() && this.hideOnDateTimeSelect) {\n setTimeout(() => {\n event.preventDefault();\n this.hideOverlay();\n if (this.mask) {\n this.disableModality();\n }\n this.cd.markForCheck();\n }, 150);\n }\n this.updateInputfield();\n event.preventDefault();\n }\n shouldSelectDate(dateMeta) {\n if (this.isMultipleSelection())\n return this.maxDateCount != null ? this.maxDateCount > (this.value ? this.value.length : 0) : true;\n else\n return true;\n }\n onMonthSelect(event, index) {\n if (!DomHandler.hasClass(event.target, 'p-disabled')) {\n this.onDateSelect(event, { year: this.currentYear, month: index, day: 1, selectable: true });\n }\n }\n updateInputfield() {\n let formattedValue = '';\n if (this.value) {\n if (this.isSingleSelection()) {\n formattedValue = this.formatDateTime(this.value);\n }\n else if (this.isMultipleSelection()) {\n for (let i = 0; i < this.value.length; i++) {\n let dateAsString = this.formatDateTime(this.value[i]);\n formattedValue += dateAsString;\n if (i !== (this.value.length - 1)) {\n formattedValue += this.multipleSeparator + ' ';\n }\n }\n }\n else if (this.isRangeSelection()) {\n if (this.value && this.value.length) {\n let startDate = this.value[0];\n let endDate = this.value[1];\n formattedValue = this.formatDateTime(startDate);\n if (endDate) {\n formattedValue += ' ' + this.rangeSeparator + ' ' + this.formatDateTime(endDate);\n }\n }\n }\n }\n this.inputFieldValue = formattedValue;\n this.updateFilledState();\n if (this.inputfieldViewChild && this.inputfieldViewChild.nativeElement) {\n this.inputfieldViewChild.nativeElement.value = this.inputFieldValue;\n }\n }\n formatDateTime(date) {\n let formattedValue = null;\n if (date) {\n if (this.timeOnly) {\n formattedValue = this.formatTime(date);\n }\n else {\n formattedValue = this.formatDate(date, this.getDateFormat());\n if (this.showTime) {\n formattedValue += ' ' + this.formatTime(date);\n }\n }\n }\n return formattedValue;\n }\n setCurrentHourPM(hours) {\n if (this.hourFormat == '12') {\n this.pm = hours > 11;\n if (hours >= 12) {\n this.currentHour = (hours == 12) ? 12 : hours - 12;\n }\n else {\n this.currentHour = (hours == 0) ? 12 : hours;\n }\n }\n else {\n this.currentHour = hours;\n }\n }\n selectDate(dateMeta) {\n let date = new Date(dateMeta.year, dateMeta.month, dateMeta.day);\n if (this.showTime) {\n if (this.hourFormat == '12') {\n if (this.currentHour === 12)\n date.setHours(this.pm ? 12 : 0);\n else\n date.setHours(this.pm ? this.currentHour + 12 : this.currentHour);\n }\n else {\n date.setHours(this.currentHour);\n }\n date.setMinutes(this.currentMinute);\n date.setSeconds(this.currentSecond);\n }\n if (this.minDate && this.minDate > date) {\n date = this.minDate;\n this.setCurrentHourPM(date.getHours());\n this.currentMinute = date.getMinutes();\n this.currentSecond = date.getSeconds();\n }\n if (this.maxDate && this.maxDate < date) {\n date = this.maxDate;\n this.setCurrentHourPM(date.getHours());\n this.currentMinute = date.getMinutes();\n this.currentSecond = date.getSeconds();\n }\n if (this.isSingleSelection()) {\n this.updateModel(date);\n }\n else if (this.isMultipleSelection()) {\n this.updateModel(this.value ? [...this.value, date] : [date]);\n }\n else if (this.isRangeSelection()) {\n if (this.value && this.value.length) {\n let startDate = this.value[0];\n let endDate = this.value[1];\n if (!endDate && date.getTime() >= startDate.getTime()) {\n endDate = date;\n }\n else {\n startDate = date;\n endDate = null;\n }\n this.updateModel([startDate, endDate]);\n }\n else {\n this.updateModel([date, null]);\n }\n }\n this.onSelect.emit(date);\n }\n updateModel(value) {\n this.value = value;\n if (this.dataType == 'date') {\n this.onModelChange(this.value);\n }\n else if (this.dataType == 'string') {\n if (this.isSingleSelection()) {\n this.onModelChange(this.formatDateTime(this.value));\n }\n else {\n let stringArrValue = null;\n if (this.value) {\n stringArrValue = this.value.map(date => this.formatDateTime(date));\n }\n this.onModelChange(stringArrValue);\n }\n }\n }\n getFirstDayOfMonthIndex(month, year) {\n let day = new Date();\n day.setDate(1);\n day.setMonth(month);\n day.setFullYear(year);\n let dayIndex = day.getDay() + this.getSundayIndex();\n return dayIndex >= 7 ? dayIndex - 7 : dayIndex;\n }\n getDaysCountInMonth(month, year) {\n return 32 - this.daylightSavingAdjust(new Date(year, month, 32)).getDate();\n }\n getDaysCountInPrevMonth(month, year) {\n let prev = this.getPreviousMonthAndYear(month, year);\n return this.getDaysCountInMonth(prev.month, prev.year);\n }\n getPreviousMonthAndYear(month, year) {\n let m, y;\n if (month === 0) {\n m = 11;\n y = year - 1;\n }\n else {\n m = month - 1;\n y = year;\n }\n return { 'month': m, 'year': y };\n }\n getNextMonthAndYear(month, year) {\n let m, y;\n if (month === 11) {\n m = 0;\n y = year + 1;\n }\n else {\n m = month + 1;\n y = year;\n }\n return { 'month': m, 'year': y };\n }\n getSundayIndex() {\n return this.firstDayOfWeek > 0 ? 7 - this.firstDayOfWeek : 0;\n }\n isSelected(dateMeta) {\n if (this.value) {\n if (this.isSingleSelection()) {\n return this.isDateEquals(this.value, dateMeta);\n }\n else if (this.isMultipleSelection()) {\n let selected = false;\n for (let date of this.value) {\n selected = this.isDateEquals(date, dateMeta);\n if (selected) {\n break;\n }\n }\n return selected;\n }\n else if (this.isRangeSelection()) {\n if (this.value[1])\n return this.isDateEquals(this.value[0], dateMeta) || this.isDateEquals(this.value[1], dateMeta) || this.isDateBetween(this.value[0], this.value[1], dateMeta);\n else\n return this.isDateEquals(this.value[0], dateMeta);\n }\n }\n else {\n return false;\n }\n }\n isMonthSelected(month) {\n let day = this.value ? (Array.isArray(this.value) ? this.value[0].getDate() : this.value.getDate()) : 1;\n return this.isSelected({ year: this.currentYear, month: month, day: day, selectable: true });\n }\n isDateEquals(value, dateMeta) {\n if (value)\n return value.getDate() === dateMeta.day && value.getMonth() === dateMeta.month && value.getFullYear() === dateMeta.year;\n else\n return false;\n }\n isDateBetween(start, end, dateMeta) {\n let between = false;\n if (start && end) {\n let date = new Date(dateMeta.year, dateMeta.month, dateMeta.day);\n return start.getTime() <= date.getTime() && end.getTime() >= date.getTime();\n }\n return between;\n }\n isSingleSelection() {\n return this.selectionMode === 'single';\n }\n isRangeSelection() {\n return this.selectionMode === 'range';\n }\n isMultipleSelection() {\n return this.selectionMode === 'multiple';\n }\n isToday(today, day, month, year) {\n return today.getDate() === day && today.getMonth() === month && today.getFullYear() === year;\n }\n isSelectable(day, month, year, otherMonth) {\n let validMin = true;\n let validMax = true;\n let validDate = true;\n let validDay = true;\n if (otherMonth && !this.selectOtherMonths) {\n return false;\n }\n if (this.minDate) {\n if (this.minDate.getFullYear() > year) {\n validMin = false;\n }\n else if (this.minDate.getFullYear() === year) {\n if (this.minDate.getMonth() > month) {\n validMin = false;\n }\n else if (this.minDate.getMonth() === month) {\n if (this.minDate.getDate() > day) {\n validMin = false;\n }\n }\n }\n }\n if (this.maxDate) {\n if (this.maxDate.getFullYear() < year) {\n validMax = false;\n }\n else if (this.maxDate.getFullYear() === year) {\n if (this.maxDate.getMonth() < month) {\n validMax = false;\n }\n else if (this.maxDate.getMonth() === month) {\n if (this.maxDate.getDate() < day) {\n validMax = false;\n }\n }\n }\n }\n if (this.disabledDates) {\n validDate = !this.isDateDisabled(day, month, year);\n }\n if (this.disabledDays) {\n validDay = !this.isDayDisabled(day, month, year);\n }\n return validMin && validMax && validDate && validDay;\n }\n isDateDisabled(day, month, year) {\n if (this.disabledDates) {\n for (let disabledDate of this.disabledDates) {\n if (disabledDate.getFullYear() === year && disabledDate.getMonth() === month && disabledDate.getDate() === day) {\n return true;\n }\n }\n }\n return false;\n }\n isDayDisabled(day, month, year) {\n if (this.disabledDays) {\n let weekday = new Date(year, month, day);\n let weekdayNumber = weekday.getDay();\n return this.disabledDays.indexOf(weekdayNumber) !== -1;\n }\n return false;\n }\n onInputFocus(event) {\n this.focus = true;\n if (this.showOnFocus) {\n this.showOverlay();\n }\n this.onFocus.emit(event);\n }\n onInputClick() {\n if (this.showOnFocus && !this.overlayVisible) {\n this.showOverlay();\n }\n }\n onInputBlur(event) {\n this.focus = false;\n this.onBlur.emit(event);\n if (!this.keepInvalid) {\n this.updateInputfield();\n }\n this.onModelTouched();\n }\n onButtonClick(event, inputfield) {\n if (!this.overlayVisible) {\n inputfield.focus();\n this.showOverlay();\n }\n else {\n this.hideOverlay();\n }\n }\n onOverlayClick(event) {\n this.overlayService.add({\n originalEvent: event,\n target: this.el.nativeElement\n });\n }\n onPrevButtonClick(event) {\n this.navigationState = { backward: true, button: true };\n this.navBackward(event);\n }\n onNextButtonClick(event) {\n this.navigationState = { backward: false, button: true };\n this.navForward(event);\n }\n onContainerButtonKeydown(event) {\n switch (event.which) {\n //tab\n case 9:\n if (!this.inline) {\n this.trapFocus(event);\n }\n break;\n //escape\n case 27:\n this.overlayVisible = false;\n event.preventDefault();\n break;\n default:\n //Noop\n break;\n }\n }\n onInputKeydown(event) {\n this.isKeydown = true;\n if (event.keyCode === 40 && this.contentViewChild) {\n this.trapFocus(event);\n }\n else if (event.keyCode === 27) {\n if (this.overlayVisible) {\n this.overlayVisible = false;\n event.preventDefault();\n }\n }\n else if (event.keyCode === 13) {\n if (this.overlayVisible) {\n this.overlayVisible = false;\n event.preventDefault();\n }\n }\n else if (event.keyCode === 9 && this.contentViewChild) {\n DomHandler.getFocusableElements(this.contentViewChild.nativeElement).forEach(el => el.tabIndex = '-1');\n if (this.overlayVisible) {\n this.overlayVisible = false;\n }\n }\n }\n onDateCellKeydown(event, date, groupIndex) {\n const cellContent = event.currentTarget;\n const cell = cellContent.parentElement;\n switch (event.which) {\n //down arrow\n case 40: {\n cellContent.tabIndex = '-1';\n let cellIndex = DomHandler.index(cell);\n let nextRow = cell.parentElement.nextElementSibling;\n if (nextRow) {\n let focusCell = nextRow.children[cellIndex].children[0];\n if (DomHandler.hasClass(focusCell, 'p-disabled')) {\n this.navigationState = { backward: false };\n this.navForward(event);\n }\n else {\n nextRow.children[cellIndex].children[0].tabIndex = '0';\n nextRow.children[cellIndex].children[0].focus();\n }\n }\n else {\n this.navigationState = { backward: false };\n this.navForward(event);\n }\n event.preventDefault();\n break;\n }\n //up arrow\n case 38: {\n cellContent.tabIndex = '-1';\n let cellIndex = DomHandler.index(cell);\n let prevRow = cell.parentElement.previousElementSibling;\n if (prevRow) {\n let focusCell = prevRow.children[cellIndex].children[0];\n if (DomHandler.hasClass(focusCell, 'p-disabled')) {\n this.navigationState = { backward: true };\n this.navBackward(event);\n }\n else {\n focusCell.tabIndex = '0';\n focusCell.focus();\n }\n }\n else {\n this.navigationState = { backward: true };\n this.navBackward(event);\n }\n event.preventDefault();\n break;\n }\n //left arrow\n case 37: {\n cellContent.tabIndex = '-1';\n let prevCell = cell.previousElementSibling;\n if (prevCell) {\n let focusCell = prevCell.children[0];\n if (DomHandler.hasClass(focusCell, 'p-disabled') || DomHandler.hasClass(focusCell.parentElement, 'p-datepicker-weeknumber')) {\n this.navigateToMonth(true, groupIndex);\n }\n else {\n focusCell.tabIndex = '0';\n focusCell.focus();\n }\n }\n else {\n this.navigateToMonth(true, groupIndex);\n }\n event.preventDefault();\n break;\n }\n //right arrow\n case 39: {\n cellContent.tabIndex = '-1';\n let nextCell = cell.nextElementSibling;\n if (nextCell) {\n let focusCell = nextCell.children[0];\n if (DomHandler.hasClass(focusCell, 'p-disabled')) {\n this.navigateToMonth(false, groupIndex);\n }\n else {\n focusCell.tabIndex = '0';\n focusCell.focus();\n }\n }\n else {\n this.navigateToMonth(false, groupIndex);\n }\n event.preventDefault();\n break;\n }\n //enter\n case 13: {\n this.onDateSelect(event, date);\n event.preventDefault();\n break;\n }\n //escape\n case 27: {\n this.overlayVisible = false;\n event.preventDefault();\n break;\n }\n //tab\n case 9: {\n if (!this.inline) {\n this.trapFocus(event);\n }\n break;\n }\n default:\n //no op\n break;\n }\n }\n onMonthCellKeydown(event, index) {\n const cell = event.currentTarget;\n switch (event.which) {\n //arrows\n case 38:\n case 40: {\n cell.tabIndex = '-1';\n var cells = cell.parentElement.children;\n var cellIndex = DomHandler.index(cell);\n let nextCell = cells[event.which === 40 ? cellIndex + 3 : cellIndex - 3];\n if (nextCell) {\n nextCell.tabIndex = '0';\n nextCell.focus();\n }\n event.preventDefault();\n break;\n }\n //left arrow\n case 37: {\n cell.tabIndex = '-1';\n let prevCell = cell.previousElementSibling;\n if (prevCell) {\n prevCell.tabIndex = '0';\n prevCell.focus();\n }\n event.preventDefault();\n break;\n }\n //right arrow\n case 39: {\n cell.tabIndex = '-1';\n let nextCell = cell.nextElementSibling;\n if (nextCell) {\n nextCell.tabIndex = '0';\n nextCell.focus();\n }\n event.preventDefault();\n break;\n }\n //enter\n case 13: {\n this.onMonthSelect(event, index);\n event.preventDefault();\n break;\n }\n //escape\n case 27: {\n this.overlayVisible = false;\n event.preventDefault();\n break;\n }\n //tab\n case 9: {\n if (!this.inline) {\n this.trapFocus(event);\n }\n break;\n }\n default:\n //no op\n break;\n }\n }\n navigateToMonth(prev, groupIndex) {\n if (prev) {\n if (this.numberOfMonths === 1 || (groupIndex === 0)) {\n this.navigationState = { backward: true };\n this.navBackward(event);\n }\n else {\n let prevMonthContainer = this.contentViewChild.nativeElement.children[groupIndex - 1];\n let cells = DomHandler.find(prevMonthContainer, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');\n let focusCell = cells[cells.length - 1];\n focusCell.tabIndex = '0';\n focusCell.focus();\n }\n }\n else {\n if (this.numberOfMonths === 1 || (groupIndex === this.numberOfMonths - 1)) {\n this.navigationState = { backward: false };\n this.navForward(event);\n }\n else {\n let nextMonthContainer = this.contentViewChild.nativeElement.children[groupIndex + 1];\n let focusCell = DomHandler.findSingle(nextMonthContainer, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');\n focusCell.tabIndex = '0';\n focusCell.focus();\n }\n }\n }\n updateFocus() {\n let cell;\n if (this.navigationState) {\n if (this.navigationState.button) {\n this.initFocusableCell();\n if (this.navigationState.backward)\n DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-datepicker-prev').focus();\n else\n DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-datepicker-next').focus();\n }\n else {\n if (this.navigationState.backward) {\n let cells = DomHandler.find(this.contentViewChild.nativeElement, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');\n cell = cells[cells.length - 1];\n }\n else {\n cell = DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');\n }\n if (cell) {\n cell.tabIndex = '0';\n cell.focus();\n }\n }\n this.navigationState = null;\n }\n else {\n this.initFocusableCell();\n }\n }\n initFocusableCell() {\n let cell;\n if (this.view === 'month') {\n let cells = DomHandler.find(this.contentViewChild.nativeElement, '.p-monthpicker .p-monthpicker-month:not(.p-disabled)');\n let selectedCell = DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-monthpicker .p-monthpicker-month.p-highlight');\n cells.forEach(cell => cell.tabIndex = -1);\n cell = selectedCell || cells[0];\n if (cells.length === 0) {\n let disabledCells = DomHandler.find(this.contentViewChild.nativeElement, '.p-monthpicker .p-monthpicker-month.p-disabled[tabindex = \"0\"]');\n disabledCells.forEach(cell => cell.tabIndex = -1);\n }\n }\n else {\n cell = DomHandler.findSingle(this.contentViewChild.nativeElement, 'span.p-highlight');\n if (!cell) {\n let todayCell = DomHandler.findSingle(this.contentViewChild.nativeElement, 'td.p-datepicker-today span:not(.p-disabled):not(.p-ink)');\n if (todayCell)\n cell = todayCell;\n else\n cell = DomHandler.findSingle(this.contentViewChild.nativeElement, '.p-datepicker-calendar td span:not(.p-disabled):not(.p-ink)');\n }\n }\n if (cell) {\n cell.tabIndex = '0';\n }\n }\n trapFocus(event) {\n let focusableElements = DomHandler.getFocusableElements(this.contentViewChild.nativeElement);\n if (focusableElements && focusableElements.length > 0) {\n if (!focusableElements[0].ownerDocument.activeElement) {\n focusableElements[0].focus();\n }\n else {\n let focusedIndex = focusableElements.indexOf(focusableElements[0].ownerDocument.activeElement);\n if (event.shiftKey) {\n if (focusedIndex == -1 || focusedIndex === 0) {\n if (this.focusTrap) {\n focusableElements[focusableElements.length - 1].focus();\n }\n else {\n if (focusedIndex === -1)\n return this.hideOverlay();\n else if (focusedIndex === 0)\n return;\n }\n }\n else {\n focusableElements[focusedIndex - 1].focus();\n }\n }\n else {\n if (focusedIndex == -1 || focusedIndex === (focusableElements.length - 1)) {\n if (!this.focusTrap && focusedIndex != -1)\n return this.hideOverlay();\n else\n focusableElements[0].focus();\n }\n else {\n focusableElements[focusedIndex + 1].focus();\n }\n }\n }\n }\n event.preventDefault();\n }\n onMonthDropdownChange(m) {\n this.currentMonth = parseInt(m);\n this.onMonthChange.emit({ month: this.currentMonth + 1, year: this.currentYear });\n this.createMonths(this.currentMonth, this.currentYear);\n }\n onYearDropdownChange(y) {\n this.currentYear = parseInt(y);\n this.onYearChange.emit({ month: this.currentMonth + 1, year: this.currentYear });\n this.createMonths(this.currentMonth, this.currentYear);\n }\n validateTime(hour, minute, second, pm) {\n let value = this.value;\n const convertedHour = this.convertTo24Hour(hour, pm);\n if (this.isRangeSelection()) {\n value = this.value[1] || this.value[0];\n }\n if (this.isMultipleSelection()) {\n value = this.value[this.value.length - 1];\n }\n const valueDateString = value ? value.toDateString() : null;\n if (this.minDate && valueDateString && this.minDate.toDateString() === valueDateString) {\n if (this.minDate.getHours() > convertedHour) {\n return false;\n }\n if (this.minDate.getHours() === convertedHour) {\n if (this.minDate.getMinutes() > minute) {\n return false;\n }\n if (this.minDate.getMinutes() === minute) {\n if (this.minDate.getSeconds() > second) {\n return false;\n }\n }\n }\n }\n if (this.maxDate && valueDateString && this.maxDate.toDateString() === valueDateString) {\n if (this.maxDate.getHours() < convertedHour) {\n return false;\n }\n if (this.maxDate.getHours() === convertedHour) {\n if (this.maxDate.getMinutes() < minute) {\n return false;\n }\n if (this.maxDate.getMinutes() === minute) {\n if (this.maxDate.getSeconds() < second) {\n return false;\n }\n }\n }\n }\n return true;\n }\n incrementHour(event) {\n const prevHour = this.currentHour;\n let newHour = this.currentHour + this.stepHour;\n let newPM = this.pm;\n if (this.hourFormat == '24')\n newHour = (newHour >= 24) ? (newHour - 24) : newHour;\n else if (this.hourFormat == '12') {\n // Before the AM/PM break, now after\n if (prevHour < 12 && newHour > 11) {\n newPM = !this.pm;\n }\n newHour = (newHour >= 13) ? (newHour - 12) : newHour;\n }\n if (this.validateTime(newHour, this.currentMinute, this.currentSecond, newPM)) {\n this.currentHour = newHour;\n this.pm = newPM;\n }\n event.preventDefault();\n }\n onTimePickerElementMouseDown(event, type, direction) {\n if (!this.disabled) {\n this.repeat(event, null, type, direction);\n event.preventDefault();\n }\n }\n onTimePickerElementMouseUp(event) {\n if (!this.disabled) {\n this.clearTimePickerTimer();\n this.updateTime();\n }\n }\n onTimePickerElementMouseLeave() {\n if (!this.disabled && this.timePickerTimer) {\n this.clearTimePickerTimer();\n this.updateTime();\n }\n }\n repeat(event, interval, type, direction) {\n let i = interval || 500;\n this.clearTimePickerTimer();\n this.timePickerTimer = setTimeout(() => {\n this.repeat(event, 100, type, direction);\n this.cd.markForCheck();\n }, i);\n switch (type) {\n case 0:\n if (direction === 1)\n this.incrementHour(event);\n else\n this.decrementHour(event);\n break;\n case 1:\n if (direction === 1)\n this.incrementMinute(event);\n else\n this.decrementMinute(event);\n break;\n case 2:\n if (direction === 1)\n this.incrementSecond(event);\n else\n this.decrementSecond(event);\n break;\n }\n this.updateInputfield();\n }\n clearTimePickerTimer() {\n if (this.timePickerTimer) {\n clearTimeout(this.timePickerTimer);\n this.timePickerTimer = null;\n }\n }\n decrementHour(event) {\n let newHour = this.currentHour - this.stepHour;\n let newPM = this.pm;\n if (this.hourFormat == '24')\n newHour = (newHour < 0) ? (24 + newHour) : newHour;\n else if (this.hourFormat == '12') {\n // If we were at noon/midnight, then switch\n if (this.currentHour === 12) {\n newPM = !this.pm;\n }\n newHour = (newHour <= 0) ? (12 + newHour) : newHour;\n }\n if (this.validateTime(newHour, this.currentMinute, this.currentSecond, newPM)) {\n this.currentHour = newHour;\n this.pm = newPM;\n }\n event.preventDefault();\n }\n incrementMinute(event) {\n let newMinute = this.currentMinute + this.stepMinute;\n newMinute = (newMinute > 59) ? newMinute - 60 : newMinute;\n if (this.validateTime(this.currentHour, newMinute, this.currentSecond, this.pm)) {\n this.currentMinute = newMinute;\n }\n event.preventDefault();\n }\n decrementMinute(event) {\n let newMinute = this.currentMinute - this.stepMinute;\n newMinute = (newMinute < 0) ? 60 + newMinute : newMinute;\n if (this.validateTime(this.currentHour, newMinute, this.currentSecond, this.pm)) {\n this.currentMinute = newMinute;\n }\n event.preventDefault();\n }\n incrementSecond(event) {\n let newSecond = this.currentSecond + this.stepSecond;\n newSecond = (newSecond > 59) ? newSecond - 60 : newSecond;\n if (this.validateTime(this.currentHour, this.currentMinute, newSecond, this.pm)) {\n this.currentSecond = newSecond;\n }\n event.preventDefault();\n }\n decrementSecond(event) {\n let newSecond = this.currentSecond - this.stepSecond;\n newSecond = (newSecond < 0) ? 60 + newSecond : newSecond;\n if (this.validateTime(this.currentHour, this.currentMinute, newSecond, this.pm)) {\n this.currentSecond = newSecond;\n }\n event.preventDefault();\n }\n updateTime() {\n let value = this.value;\n if (this.isRangeSelection()) {\n value = this.value[1] || this.value[0];\n }\n if (this.isMultipleSelection()) {\n value = this.value[this.value.length - 1];\n }\n value = value ? new Date(value.getTime()) : new Date();\n if (this.hourFormat == '12') {\n if (this.currentHour === 12)\n value.setHours(this.pm ? 12 : 0);\n else\n value.setHours(this.pm ? this.currentHour + 12 : this.currentHour);\n }\n else {\n value.setHours(this.currentHour);\n }\n value.setMinutes(this.currentMinute);\n value.setSeconds(this.currentSecond);\n if (this.isRangeSelection()) {\n if (this.value[1])\n value = [this.value[0], value];\n else\n value = [value, null];\n }\n if (this.isMultipleSelection()) {\n value = [...this.value.slice(0, -1), value];\n }\n this.updateModel(value);\n this.onSelect.emit(value);\n this.updateInputfield();\n }\n toggleAMPM(event) {\n const newPM = !this.pm;\n if (this.validateTime(this.currentHour, this.currentMinute, this.currentSecond, newPM)) {\n this.pm = newPM;\n this.updateTime();\n }\n event.preventDefault();\n }\n onUserInput(event) {\n // IE 11 Workaround for input placeholder : https://github.com/primefaces/primeng/issues/2026\n if (!this.isKeydown) {\n return;\n }\n this.isKeydown = false;\n let val = event.target.value;\n try {\n let value = this.parseValueFromString(val);\n if (this.isValidSelection(value)) {\n this.updateModel(value);\n this.updateUI();\n }\n }\n catch (err) {\n //invalid date\n this.updateModel(null);\n }\n this.filled = val != null && val.length;\n this.onInput.emit(event);\n }\n isValidSelection(value) {\n let isValid = true;\n if (this.isSingleSelection()) {\n if (!this.isSelectable(value.getDate(), value.getMonth(), value.getFullYear(), false)) {\n isValid = false;\n }\n }\n else if (value.every(v => this.isSelectable(v.getDate(), v.getMonth(), v.getFullYear(), false))) {\n if (this.isRangeSelection()) {\n isValid = value.length > 1 && value[1] > value[0] ? true : false;\n }\n }\n return isValid;\n }\n parseValueFromString(text) {\n if (!text || text.trim().length === 0) {\n return null;\n }\n let value;\n if (this.isSingleSelection()) {\n value = this.parseDateTime(text);\n }\n else if (this.isMultipleSelection()) {\n let tokens = text.split(this.multipleSeparator);\n value = [];\n for (let token of tokens) {\n value.push(this.parseDateTime(token.trim()));\n }\n }\n else if (this.isRangeSelection()) {\n let tokens = text.split(' ' + this.rangeSeparator + ' ');\n value = [];\n for (let i = 0; i < tokens.length; i++) {\n value[i] = this.parseDateTime(tokens[i].trim());\n }\n }\n return value;\n }\n parseDateTime(text) {\n let date;\n let parts = text.split(' ');\n if (this.timeOnly) {\n date = new Date();\n this.populateTime(date, parts[0], parts[1]);\n }\n else {\n const dateFormat = this.getDateFormat();\n if (this.showTime) {\n let ampm = this.hourFormat == '12' ? parts.pop() : null;\n let timeString = parts.pop();\n date = this.parseDate(parts.join(' '), dateFormat);\n this.populateTime(date, timeString, ampm);\n }\n else {\n date = this.parseDate(text, dateFormat);\n }\n }\n return date;\n }\n populateTime(value, timeString, ampm) {\n if (this.hourFormat == '12' && !ampm) {\n throw 'Invalid Time';\n }\n this.pm = (ampm === 'PM' || ampm === 'pm');\n let time = this.parseTime(timeString);\n value.setHours(time.hour);\n value.setMinutes(time.minute);\n value.setSeconds(time.second);\n }\n updateUI() {\n let val = this.value || this.defaultDate || new Date();\n if (Array.isArray(val)) {\n val = val[0];\n }\n this.currentMonth = val.getMonth();\n this.currentYear = val.getFullYear();\n this.createMonths(this.currentMonth, this.currentYear);\n if (this.showTime || this.timeOnly) {\n this.setCurrentHourPM(val.getHours());\n this.currentMinute = val.getMinutes();\n this.currentSecond = val.getSeconds();\n }\n }\n showOverlay() {\n if (!this.overlayVisible) {\n this.updateUI();\n this.overlayVisible = true;\n }\n }\n hideOverlay() {\n this.overlayVisible = false;\n this.clearTimePickerTimer();\n if (this.touchUI) {\n this.disableModality();\n }\n this.cd.markForCheck();\n }\n toggle() {\n if (!this.inline) {\n if (!this.overlayVisible) {\n this.showOverlay();\n this.inputfieldViewChild.nativeElement.focus();\n }\n else {\n this.hideOverlay();\n }\n }\n }\n onOverlayAnimationStart(event) {\n switch (event.toState) {\n case 'visible':\n case 'visibleTouchUI':\n if (!this.inline) {\n this.overlay = event.element;\n this.appendOverlay();\n if (this.autoZIndex) {\n if (this.touchUI)\n ZIndexUtils.set('modal', this.overlay, this.baseZIndex || this.config.zIndex.modal);\n else\n ZIndexUtils.set('overlay', this.overlay, this.baseZIndex || this.config.zIndex.overlay);\n }\n this.alignOverlay();\n this.onShow.emit(event);\n }\n break;\n case 'void':\n this.onOverlayHide();\n this.onClose.emit(event);\n break;\n }\n }\n onOverlayAnimationDone(event) {\n switch (event.toState) {\n case 'visible':\n case 'visibleTouchUI':\n if (!this.inline) {\n this.bindDocumentClickListener();\n this.bindDocumentResizeListener();\n this.bindScrollListener();\n }\n break;\n case 'void':\n if (this.autoZIndex) {\n ZIndexUtils.clear(event.element);\n }\n break;\n }\n }\n appendOverlay() {\n if (this.appendTo) {\n if (this.appendTo === 'body')\n document.body.appendChild(this.overlay);\n else\n DomHandler.appendChild(this.overlay, this.appendTo);\n }\n }\n restoreOverlayAppend() {\n if (this.overlay && this.appendTo) {\n this.el.nativeElement.appendChild(this.overlay);\n }\n }\n alignOverlay() {\n if (this.touchUI) {\n this.enableModality(this.overlay);\n }\n else {\n if (this.appendTo)\n DomHandler.absolutePosition(this.overlay, this.inputfieldViewChild.nativeElement);\n else\n DomHandler.relativePosition(this.overlay, this.inputfieldViewChild.nativeElement);\n }\n }\n enableModality(element) {\n if (!this.mask) {\n this.mask = document.createElement('div');\n this.mask.style.zIndex = String(parseInt(element.style.zIndex) - 1);\n let maskStyleClass = 'p-component-overlay p-datepicker-mask p-datepicker-mask-scrollblocker p-component-overlay p-component-overlay-enter';\n DomHandler.addMultipleClasses(this.mask, maskStyleClass);\n this.maskClickListener = this.renderer.listen(this.mask, 'click', (event) => {\n this.disableModality();\n });\n document.body.appendChild(this.mask);\n DomHandler.addClass(document.body, 'p-overflow-hidden');\n }\n }\n disableModality() {\n if (this.mask) {\n DomHandler.addClass(this.mask, 'p-component-overlay-leave');\n this.animationEndListener = this.destroyMask.bind(this);\n this.mask.addEventListener('animationend', this.animationEndListener);\n }\n }\n destroyMask() {\n document.body.removeChild(this.mask);\n let bodyChildren = document.body.children;\n let hasBlockerMasks;\n for (let i = 0; i < bodyChildren.length; i++) {\n let bodyChild = bodyChildren[i];\n if (DomHandler.hasClass(bodyChild, 'p-datepicker-mask-scrollblocker')) {\n hasBlockerMasks = true;\n break;\n }\n }\n if (!hasBlockerMasks) {\n DomHandler.removeClass(document.body, 'p-overflow-hidden');\n }\n this.unbindAnimationEndListener();\n this.unbindMaskClickListener();\n this.mask = null;\n }\n unbindMaskClickListener() {\n if (this.maskClickListener) {\n this.maskClickListener();\n this.maskClickListener = null;\n }\n }\n unbindAnimationEndListener() {\n if (this.animationEndListener && this.mask) {\n this.mask.removeEventListener('animationend', this.animationEndListener);\n this.animationEndListener = null;\n }\n }\n writeValue(value) {\n this.value = value;\n if (this.value && typeof this.value === 'string') {\n this.value = this.parseValueFromString(this.value);\n }\n this.updateInputfield();\n this.updateUI();\n this.cd.markForCheck();\n }\n registerOnChange(fn) {\n this.onModelChange = fn;\n }\n registerOnTouched(fn) {\n this.onModelTouched = fn;\n }\n setDisabledState(val) {\n this.disabled = val;\n this.cd.markForCheck();\n }\n getDateFormat() {\n return this.dateFormat || this.getTranslation('dateFormat');\n }\n // Ported from jquery-ui datepicker formatDate\n formatDate(date, format) {\n if (!date) {\n return '';\n }\n let iFormat;\n const lookAhead = (match) => {\n const matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match);\n if (matches) {\n iFormat++;\n }\n return matches;\n }, formatNumber = (match, value, len) => {\n let num = '' + value;\n if (lookAhead(match)) {\n while (num.length < len) {\n num = '0' + num;\n }\n }\n return num;\n }, formatName = (match, value, shortNames, longNames) => {\n return (lookAhead(match) ? longNames[value] : shortNames[value]);\n };\n let output = '';\n let literal = false;\n if (date) {\n for (iFormat = 0; iFormat < format.length; iFormat++) {\n if (literal) {\n if (format.charAt(iFormat) === '\\'' && !lookAhead('\\'')) {\n literal = false;\n }\n else {\n output += format.charAt(iFormat);\n }\n }\n else {\n switch (format.charAt(iFormat)) {\n case 'd':\n output += formatNumber('d', date.getDate(), 2);\n break;\n case 'D':\n output += formatName('D', date.getDay(), this.getTranslation(TranslationKeys.DAY_NAMES_SHORT), this.getTranslation(TranslationKeys.DAY_NAMES));\n break;\n case 'o':\n output += formatNumber('o', Math.round((new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime() -\n new Date(date.getFullYear(), 0, 0).getTime()) / 86400000), 3);\n break;\n case 'm':\n output += formatNumber('m', date.getMonth() + 1, 2);\n break;\n case 'M':\n output += formatName('M', date.getMonth(), this.getTranslation(TranslationKeys.MONTH_NAMES_SHORT), this.getTranslation(TranslationKeys.MONTH_NAMES));\n break;\n case 'y':\n output += lookAhead('y') ? date.getFullYear() : (date.getFullYear() % 100 < 10 ? '0' : '') + (date.getFullYear() % 100);\n break;\n case '@':\n output += date.getTime();\n break;\n case '!':\n output += date.getTime() * 10000 + this.ticksTo1970;\n break;\n case '\\'':\n if (lookAhead('\\'')) {\n output += '\\'';\n }\n else {\n literal = true;\n }\n break;\n default:\n output += format.charAt(iFormat);\n }\n }\n }\n }\n return output;\n }\n formatTime(date) {\n if (!date) {\n return '';\n }\n let output = '';\n let hours = date.getHours();\n let minutes = date.getMinutes();\n let seconds = date.getSeconds();\n if (this.hourFormat == '12' && hours > 11 && hours != 12) {\n hours -= 12;\n }\n if (this.hourFormat == '12') {\n output += hours === 0 ? 12 : (hours < 10) ? '0' + hours : hours;\n }\n else {\n output += (hours < 10) ? '0' + hours : hours;\n }\n output += ':';\n output += (minutes < 10) ? '0' + minutes : minutes;\n if (this.showSeconds) {\n output += ':';\n output += (seconds < 10) ? '0' + seconds : seconds;\n }\n if (this.hourFormat == '12') {\n output += date.getHours() > 11 ? ' PM' : ' AM';\n }\n return output;\n }\n parseTime(value) {\n let tokens = value.split(':');\n let validTokenLength = this.showSeconds ? 3 : 2;\n if (tokens.length !== validTokenLength) {\n throw \"Invalid time\";\n }\n let h = parseInt(tokens[0]);\n let m = parseInt(tokens[1]);\n let s = this.showSeconds ? parseInt(tokens[2]) : null;\n if (isNaN(h) || isNaN(m) || h > 23 || m > 59 || (this.hourFormat == '12' && h > 12) || (this.showSeconds && (isNaN(s) || s > 59))) {\n throw \"Invalid time\";\n }\n else {\n if (this.hourFormat == '12') {\n if (h !== 12 && this.pm) {\n h += 12;\n }\n else if (!this.pm && h === 12) {\n h -= 12;\n }\n }\n return { hour: h, minute: m, second: s };\n }\n }\n // Ported from jquery-ui datepicker parseDate\n parseDate(value, format) {\n if (format == null || value == null) {\n throw \"Invalid arguments\";\n }\n value = (typeof value === \"object\" ? value.toString() : value + \"\");\n if (value === \"\") {\n return null;\n }\n let iFormat, dim, extra, iValue = 0, shortYearCutoff = (typeof this.shortYearCutoff !== \"string\" ? this.shortYearCutoff : new Date().getFullYear() % 100 + parseInt(this.shortYearCutoff, 10)), year = -1, month = -1, day = -1, doy = -1, literal = false, date, lookAhead = (match) => {\n let matches = (iFormat + 1 < format.length && format.charAt(iFormat + 1) === match);\n if (matches) {\n iFormat++;\n }\n return matches;\n }, getNumber = (match) => {\n let isDoubled = lookAhead(match), size = (match === \"@\" ? 14 : (match === \"!\" ? 20 :\n (match === \"y\" && isDoubled ? 4 : (match === \"o\" ? 3 : 2)))), minSize = (match === \"y\" ? size : 1), digits = new RegExp(\"^\\\\d{\" + minSize + \",\" + size + \"}\"), num = value.substring(iValue).match(digits);\n if (!num) {\n throw \"Missing number at position \" + iValue;\n }\n iValue += num[0].length;\n return parseInt(num[0], 10);\n }, getName = (match, shortNames, longNames) => {\n let index = -1;\n let arr = lookAhead(match) ? longNames : shortNames;\n let names = [];\n for (let i = 0; i < arr.length; i++) {\n names.push([i, arr[i]]);\n }\n names.sort((a, b) => {\n return -(a[1].length - b[1].length);\n });\n for (let i = 0; i < names.length; i++) {\n let name = names[i][1];\n if (value.substr(iValue, name.length).toLowerCase() === name.toLowerCase()) {\n index = names[i][0];\n iValue += name.length;\n break;\n }\n }\n if (index !== -1) {\n return index + 1;\n }\n else {\n throw \"Unknown name at position \" + iValue;\n }\n }, checkLiteral = () => {\n if (value.charAt(iValue) !== format.charAt(iFormat)) {\n throw \"Unexpected literal at position \" + iValue;\n }\n iValue++;\n };\n if (this.view === 'month') {\n day = 1;\n }\n for (iFormat = 0; iFormat < format.length; iFormat++) {\n if (literal) {\n if (format.charAt(iFormat) === \"'\" && !lookAhead(\"'\")) {\n literal = false;\n }\n else {\n checkLiteral();\n }\n }\n else {\n switch (format.charAt(iFormat)) {\n case \"d\":\n day = getNumber(\"d\");\n break;\n case \"D\":\n getName(\"D\", this.getTranslation(TranslationKeys.DAY_NAMES_SHORT), this.getTranslation(TranslationKeys.DAY_NAMES));\n break;\n case \"o\":\n doy = getNumber(\"o\");\n break;\n case \"m\":\n month = getNumber(\"m\");\n break;\n case \"M\":\n month = getName(\"M\", this.getTranslation(TranslationKeys.MONTH_NAMES_SHORT), this.getTranslation(TranslationKeys.MONTH_NAMES));\n break;\n case \"y\":\n year = getNumber(\"y\");\n break;\n case \"@\":\n date = new Date(getNumber(\"@\"));\n year = date.getFullYear();\n month = date.getMonth() + 1;\n day = date.getDate();\n break;\n case \"!\":\n date = new Date((getNumber(\"!\") - this.ticksTo1970) / 10000);\n year = date.getFullYear();\n month = date.getMonth() + 1;\n day = date.getDate();\n break;\n case \"'\":\n if (lookAhead(\"'\")) {\n checkLiteral();\n }\n else {\n literal = true;\n }\n break;\n default:\n checkLiteral();\n }\n }\n }\n if (iValue < value.length) {\n extra = value.substr(iValue);\n if (!/^\\s+/.test(extra)) {\n throw \"Extra/unparsed characters found in date: \" + extra;\n }\n }\n if (year === -1) {\n year = new Date().getFullYear();\n }\n else if (year < 100) {\n year += new Date().getFullYear() - new Date().getFullYear() % 100 +\n (year <= shortYearCutoff ? 0 : -100);\n }\n if (doy > -1) {\n month = 1;\n day = doy;\n do {\n dim = this.getDaysCountInMonth(year, month - 1);\n if (day <= dim) {\n break;\n }\n month++;\n day -= dim;\n } while (true);\n }\n date = this.daylightSavingAdjust(new Date(year, month - 1, day));\n if (date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day) {\n throw \"Invalid date\"; // E.g. 31/02/00\n }\n return date;\n }\n daylightSavingAdjust(date) {\n if (!date) {\n return null;\n }\n date.setHours(date.getHours() > 12 ? date.getHours() + 2 : 0);\n return date;\n }\n updateFilledState() {\n this.filled = this.inputFieldValue && this.inputFieldValue != '';\n }\n onTodayButtonClick(event) {\n let date = new Date();\n let dateMeta = { day: date.getDate(), month: date.getMonth(), year: date.getFullYear(), otherMonth: date.getMonth() !== this.currentMonth || date.getFullYear() !== this.currentYear, today: true, selectable: true };\n this.onDateSelect(event, dateMeta);\n this.onTodayClick.emit(event);\n }\n onClearButtonClick(event) {\n this.updateModel(null);\n this.updateInputfield();\n this.hideOverlay();\n this.onClearClick.emit(event);\n }\n bindDocumentClickListener() {\n if (!this.documentClickListener) {\n this.zone.runOutsideAngular(() => {\n const documentTarget = this.el ? this.el.nativeElement.ownerDocument : 'document';\n this.documentClickListener = this.renderer.listen(documentTarget, 'click', (event) => {\n if (this.isOutsideClicked(event) && this.overlayVisible) {\n this.zone.run(() => {\n this.hideOverlay();\n this.onClickOutside.emit(event);\n this.cd.markForCheck();\n });\n }\n });\n });\n }\n }\n unbindDocumentClickListener() {\n if (this.documentClickListener) {\n this.documentClickListener();\n this.documentClickListener = null;\n }\n }\n bindDocumentResizeListener() {\n if (!this.documentResizeListener && !this.touchUI) {\n this.documentResizeListener = this.onWindowResize.bind(this);\n window.addEventListener('resize', this.documentResizeListener);\n }\n }\n unbindDocumentResizeListener() {\n if (this.documentResizeListener) {\n window.removeEventListener('resize', this.documentResizeListener);\n this.documentResizeListener = null;\n }\n }\n bindScrollListener() {\n if (!this.scrollHandler) {\n this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerViewChild.nativeElement, () => {\n if (this.overlayVisible) {\n this.hideOverlay();\n }\n });\n }\n this.scrollHandler.bindScrollListener();\n }\n unbindScrollListener() {\n if (this.scrollHandler) {\n this.scrollHandler.unbindScrollListener();\n }\n }\n isOutsideClicked(event) {\n return !(this.el.nativeElement.isSameNode(event.target) || this.isNavIconClicked(event) ||\n this.el.nativeElement.contains(event.target) || (this.overlay && this.overlay.contains(event.target)));\n }\n isNavIconClicked(event) {\n return (DomHandler.hasClass(event.target, 'p-datepicker-prev') || DomHandler.hasClass(event.target, 'p-datepicker-prev-icon')\n || DomHandler.hasClass(event.target, 'p-datepicker-next') || DomHandler.hasClass(event.target, 'p-datepicker-next-icon'));\n }\n onWindowResize() {\n if (this.overlayVisible && !DomHandler.isAndroid()) {\n this.hideOverlay();\n }\n }\n onOverlayHide() {\n if (this.mask) {\n this.destroyMask();\n }\n this.unbindDocumentClickListener();\n this.unbindDocumentResizeListener();\n this.unbindScrollListener();\n this.overlay = null;\n }\n ngOnDestroy() {\n if (this.scrollHandler) {\n this.scrollHandler.destroy();\n this.scrollHandler = null;\n }\n if (this.translationSubscription) {\n this.translationSubscription.unsubscribe();\n }\n if (this.overlay && this.autoZIndex) {\n ZIndexUtils.clear(this.overlay);\n }\n this.clearTimePickerTimer();\n this.restoreOverlayAppend();\n this.onOverlayHide();\n }\n}\nCalendar.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Calendar, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }, { token: i0.NgZone }, { token: i1.PrimeNGConfig }, { token: i1.OverlayService }], target: i0.ɵɵFactoryTarget.Component });\nCalendar.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"12.0.0\", version: \"13.0.0\", type: Calendar, selector: \"p-calendar\", inputs: { style: \"style\", styleClass: \"styleClass\", inputStyle: \"inputStyle\", inputId: \"inputId\", name: \"name\", inputStyleClass: \"inputStyleClass\", placeholder: \"placeholder\", ariaLabelledBy: \"ariaLabelledBy\", iconAriaLabel: \"iconAriaLabel\", disabled: \"disabled\", dateFormat: \"dateFormat\", multipleSeparator: \"multipleSeparator\", rangeSeparator: \"rangeSeparator\", inline: \"inline\", showOtherMonths: \"showOtherMonths\", selectOtherMonths: \"selectOtherMonths\", showIcon: \"showIcon\", icon: \"icon\", appendTo: \"appendTo\", readonlyInput: \"readonlyInput\", shortYearCutoff: \"shortYearCutoff\", monthNavigator: \"monthNavigator\", yearNavigator: \"yearNavigator\", hourFormat: \"hourFormat\", timeOnly: \"timeOnly\", stepHour: \"stepHour\", stepMinute: \"stepMinute\", stepSecond: \"stepSecond\", showSeconds: \"showSeconds\", required: \"required\", showOnFocus: \"showOnFocus\", showWeek: \"showWeek\", dataType: \"dataType\", selectionMode: \"selectionMode\", maxDateCount: \"maxDateCount\", showButtonBar: \"showButtonBar\", todayButtonStyleClass: \"todayButtonStyleClass\", clearButtonStyleClass: \"clearButtonStyleClass\", autoZIndex: \"autoZIndex\", baseZIndex: \"baseZIndex\", panelStyleClass: \"panelStyleClass\", panelStyle: \"panelStyle\", keepInvalid: \"keepInvalid\", hideOnDateTimeSelect: \"hideOnDateTimeSelect\", numberOfMonths: \"numberOfMonths\", view: \"view\", touchUI: \"touchUI\", timeSeparator: \"timeSeparator\", focusTrap: \"focusTrap\", firstDayOfWeek: \"firstDayOfWeek\", showTransitionOptions: \"showTransitionOptions\", hideTransitionOptions: \"hideTransitionOptions\", tabindex: \"tabindex\", defaultDate: \"defaultDate\", minDate: \"minDate\", maxDate: \"maxDate\", disabledDates: \"disabledDates\", disabledDays: \"disabledDays\", yearRange: \"yearRange\", showTime: \"showTime\", locale: \"locale\" }, outputs: { onFocus: \"onFocus\", onBlur: \"onBlur\", onClose: \"onClose\", onSelect: \"onSelect\", onInput: \"onInput\", onTodayClick: \"onTodayClick\", onClearClick: \"onClearClick\", onMonthChange: \"onMonthChange\", onYearChange: \"onYearChange\", onClickOutside: \"onClickOutside\", onShow: \"onShow\" }, host: { properties: { \"class.p-inputwrapper-filled\": \"filled\", \"class.p-inputwrapper-focus\": \"focus\" }, classAttribute: \"p-element p-inputwrapper\" }, providers: [CALENDAR_VALUE_ACCESSOR], queries: [{ propertyName: \"templates\", predicate: PrimeTemplate }], viewQueries: [{ propertyName: \"containerViewChild\", first: true, predicate: [\"container\"], descendants: true }, { propertyName: \"inputfieldViewChild\", first: true, predicate: [\"inputfield\"], descendants: true }, { propertyName: \"content\", first: true, predicate: [\"contentWrapper\"], descendants: true }], ngImport: i0, template: `\n \n \n \n \n
1, 'p-datepicker-monthpicker': (view === 'month'), 'p-datepicker-touch-ui': touchUI}\"\n [@overlayAnimation]=\"touchUI ? {value: 'visibleTouchUI', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}:\n {value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\"\n [@.disabled]=\"inline === true\" (@overlayAnimation.start)=\"onOverlayAnimationStart($event)\" (@overlayAnimation.done)=\"onOverlayAnimationDone($event)\" (click)=\"onOverlayClick($event)\" *ngIf=\"inline || overlayVisible\">\n \n \n \n
\n
\n
\n \n
\n {{getTranslation('monthNames')[month.month]}}\n \n \n {{view === 'month' ? currentYear : month.year}}\n
\n \n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {{getTranslation('weekHeader')}}\n \n {{weekDay}}\n
\n \n {{month.weekNumbers[j]}}\n \n \n \n \n {{date.day}}\n \n \n \n
\n
\n
\n
\n
\n \n {{m}}\n \n
\n
\n
\n
\n \n 0{{currentHour}}\n \n
\n
\n {{timeSeparator}}\n
\n
\n \n 0{{currentMinute}}\n \n
\n
\n {{timeSeparator}}\n
\n
\n \n 0{{currentSecond}}\n \n
\n
\n \n {{pm ? 'PM' : 'AM'}}\n \n
\n
\n
\n \n \n
\n \n \n
\n
\n `, isInline: true, styles: [\".p-calendar{position:relative;display:inline-flex}.p-calendar .p-inputtext{flex:1 1 auto;width:1%}.p-calendar-w-btn .p-inputtext{border-top-right-radius:0;border-bottom-right-radius:0}.p-calendar-w-btn .p-datepicker-trigger{border-top-left-radius:0;border-bottom-left-radius:0}.p-fluid .p-calendar{display:flex}.p-fluid .p-calendar .p-inputtext{width:1%}.p-calendar .p-datepicker{min-width:100%}.p-datepicker{width:auto;position:absolute;top:0;left:0}.p-datepicker-inline{position:static}.p-datepicker-header{display:flex;align-items:center;justify-content:space-between}.p-datepicker-header .p-datepicker-title{margin:0 auto}.p-datepicker-prev,.p-datepicker-next{cursor:pointer;display:inline-flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-datepicker-multiple-month .p-datepicker-group-container{display:flex}.p-datepicker table{width:100%;border-collapse:collapse}.p-datepicker td>span{display:flex;justify-content:center;align-items:center;cursor:pointer;margin:0 auto;overflow:hidden;position:relative}.p-monthpicker-month{width:33.3%;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;position:relative}.p-datepicker-buttonbar{display:flex;justify-content:space-between;align-items:center}.p-timepicker{display:flex;justify-content:center;align-items:center}.p-timepicker button{display:flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;position:relative}.p-timepicker>div{display:flex;align-items:center;flex-direction:column}.p-datepicker-touch-ui,.p-calendar .p-datepicker-touch-ui{position:fixed;top:50%;left:50%;min-width:80vw;transform:translate(-50%,-50%)}\\n\"], directives: [{ type: i2.NgClass, selector: \"[ngClass]\", inputs: [\"class\", \"ngClass\"] }, { type: i2.NgStyle, selector: \"[ngStyle]\", inputs: [\"ngStyle\"] }, { type: i2.NgIf, selector: \"[ngIf]\", inputs: [\"ngIf\", \"ngIfThen\", \"ngIfElse\"] }, { type: i3.ButtonDirective, selector: \"[pButton]\", inputs: [\"iconPos\", \"loadingIcon\", \"label\", \"icon\", \"loading\"] }, { type: i4.Ripple, selector: \"[pRipple]\" }, { type: i2.NgTemplateOutlet, selector: \"[ngTemplateOutlet]\", inputs: [\"ngTemplateOutletContext\", \"ngTemplateOutlet\"] }, { type: i2.NgForOf, selector: \"[ngFor][ngForOf]\", inputs: [\"ngForOf\", \"ngForTrackBy\", \"ngForTemplate\"] }], animations: [\n trigger('overlayAnimation', [\n state('visibleTouchUI', style({\n transform: 'translate(-50%,-50%)',\n opacity: 1\n })),\n transition('void => visible', [\n style({ opacity: 0, transform: 'scaleY(0.8)' }),\n animate('{{showTransitionParams}}', style({ opacity: 1, transform: '*' }))\n ]),\n transition('visible => void', [\n animate('{{hideTransitionParams}}', style({ opacity: 0 }))\n ]),\n transition('void => visibleTouchUI', [\n style({ opacity: 0, transform: 'translate3d(-50%, -40%, 0) scale(0.9)' }),\n animate('{{showTransitionParams}}')\n ]),\n transition('visibleTouchUI => void', [\n animate(('{{hideTransitionParams}}'), style({\n opacity: 0,\n transform: 'translate3d(-50%, -40%, 0) scale(0.9)'\n }))\n ])\n ])\n ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: Calendar, decorators: [{\n type: Component,\n args: [{ selector: 'p-calendar', template: `\n \n \n \n \n
1, 'p-datepicker-monthpicker': (view === 'month'), 'p-datepicker-touch-ui': touchUI}\"\n [@overlayAnimation]=\"touchUI ? {value: 'visibleTouchUI', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}:\n {value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\"\n [@.disabled]=\"inline === true\" (@overlayAnimation.start)=\"onOverlayAnimationStart($event)\" (@overlayAnimation.done)=\"onOverlayAnimationDone($event)\" (click)=\"onOverlayClick($event)\" *ngIf=\"inline || overlayVisible\">\n \n \n \n
\n
\n
\n \n
\n {{getTranslation('monthNames')[month.month]}}\n \n \n {{view === 'month' ? currentYear : month.year}}\n
\n \n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n {{getTranslation('weekHeader')}}\n \n {{weekDay}}\n
\n \n {{month.weekNumbers[j]}}\n \n \n \n \n {{date.day}}\n \n \n \n
\n
\n
\n
\n
\n \n {{m}}\n \n
\n
\n
\n
\n \n 0{{currentHour}}\n \n
\n
\n {{timeSeparator}}\n
\n
\n \n 0{{currentMinute}}\n \n
\n
\n {{timeSeparator}}\n
\n
\n \n 0{{currentSecond}}\n \n
\n
\n \n {{pm ? 'PM' : 'AM'}}\n \n
\n
\n
\n \n \n
\n \n \n
\n
\n `, animations: [\n trigger('overlayAnimation', [\n state('visibleTouchUI', style({\n transform: 'translate(-50%,-50%)',\n opacity: 1\n })),\n transition('void => visible', [\n style({ opacity: 0, transform: 'scaleY(0.8)' }),\n animate('{{showTransitionParams}}', style({ opacity: 1, transform: '*' }))\n ]),\n transition('visible => void', [\n animate('{{hideTransitionParams}}', style({ opacity: 0 }))\n ]),\n transition('void => visibleTouchUI', [\n style({ opacity: 0, transform: 'translate3d(-50%, -40%, 0) scale(0.9)' }),\n animate('{{showTransitionParams}}')\n ]),\n transition('visibleTouchUI => void', [\n animate(('{{hideTransitionParams}}'), style({\n opacity: 0,\n transform: 'translate3d(-50%, -40%, 0) scale(0.9)'\n }))\n ])\n ])\n ], host: {\n 'class': 'p-element p-inputwrapper',\n '[class.p-inputwrapper-filled]': 'filled',\n '[class.p-inputwrapper-focus]': 'focus'\n }, providers: [CALENDAR_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [\".p-calendar{position:relative;display:inline-flex}.p-calendar .p-inputtext{flex:1 1 auto;width:1%}.p-calendar-w-btn .p-inputtext{border-top-right-radius:0;border-bottom-right-radius:0}.p-calendar-w-btn .p-datepicker-trigger{border-top-left-radius:0;border-bottom-left-radius:0}.p-fluid .p-calendar{display:flex}.p-fluid .p-calendar .p-inputtext{width:1%}.p-calendar .p-datepicker{min-width:100%}.p-datepicker{width:auto;position:absolute;top:0;left:0}.p-datepicker-inline{position:static}.p-datepicker-header{display:flex;align-items:center;justify-content:space-between}.p-datepicker-header .p-datepicker-title{margin:0 auto}.p-datepicker-prev,.p-datepicker-next{cursor:pointer;display:inline-flex;justify-content:center;align-items:center;overflow:hidden;position:relative}.p-datepicker-multiple-month .p-datepicker-group-container{display:flex}.p-datepicker table{width:100%;border-collapse:collapse}.p-datepicker td>span{display:flex;justify-content:center;align-items:center;cursor:pointer;margin:0 auto;overflow:hidden;position:relative}.p-monthpicker-month{width:33.3%;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;position:relative}.p-datepicker-buttonbar{display:flex;justify-content:space-between;align-items:center}.p-timepicker{display:flex;justify-content:center;align-items:center}.p-timepicker button{display:flex;align-items:center;justify-content:center;cursor:pointer;overflow:hidden;position:relative}.p-timepicker>div{display:flex;align-items:center;flex-direction:column}.p-datepicker-touch-ui,.p-calendar .p-datepicker-touch-ui{position:fixed;top:50%;left:50%;min-width:80vw;transform:translate(-50%,-50%)}\\n\"] }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i1.PrimeNGConfig }, { type: i1.OverlayService }]; }, propDecorators: { style: [{\n type: Input\n }], styleClass: [{\n type: Input\n }], inputStyle: [{\n type: Input\n }], inputId: [{\n type: Input\n }], name: [{\n type: Input\n }], inputStyleClass: [{\n type: Input\n }], placeholder: [{\n type: Input\n }], ariaLabelledBy: [{\n type: Input\n }], iconAriaLabel: [{\n type: Input\n }], disabled: [{\n type: Input\n }], dateFormat: [{\n type: Input\n }], multipleSeparator: [{\n type: Input\n }], rangeSeparator: [{\n type: Input\n }], inline: [{\n type: Input\n }], showOtherMonths: [{\n type: Input\n }], selectOtherMonths: [{\n type: Input\n }], showIcon: [{\n type: Input\n }], icon: [{\n type: Input\n }], appendTo: [{\n type: Input\n }], readonlyInput: [{\n type: Input\n }], shortYearCutoff: [{\n type: Input\n }], monthNavigator: [{\n type: Input\n }], yearNavigator: [{\n type: Input\n }], hourFormat: [{\n type: Input\n }], timeOnly: [{\n type: Input\n }], stepHour: [{\n type: Input\n }], stepMinute: [{\n type: Input\n }], stepSecond: [{\n type: Input\n }], showSeconds: [{\n type: Input\n }], required: [{\n type: Input\n }], showOnFocus: [{\n type: Input\n }], showWeek: [{\n type: Input\n }], dataType: [{\n type: Input\n }], selectionMode: [{\n type: Input\n }], maxDateCount: [{\n type: Input\n }], showButtonBar: [{\n type: Input\n }], todayButtonStyleClass: [{\n type: Input\n }], clearButtonStyleClass: [{\n type: Input\n }], autoZIndex: [{\n type: Input\n }], baseZIndex: [{\n type: Input\n }], panelStyleClass: [{\n type: Input\n }], panelStyle: [{\n type: Input\n }], keepInvalid: [{\n type: Input\n }], hideOnDateTimeSelect: [{\n type: Input\n }], numberOfMonths: [{\n type: Input\n }], view: [{\n type: Input\n }], touchUI: [{\n type: Input\n }], timeSeparator: [{\n type: Input\n }], focusTrap: [{\n type: Input\n }], firstDayOfWeek: [{\n type: Input\n }], showTransitionOptions: [{\n type: Input\n }], hideTransitionOptions: [{\n type: Input\n }], onFocus: [{\n type: Output\n }], onBlur: [{\n type: Output\n }], onClose: [{\n type: Output\n }], onSelect: [{\n type: Output\n }], onInput: [{\n type: Output\n }], onTodayClick: [{\n type: Output\n }], onClearClick: [{\n type: Output\n }], onMonthChange: [{\n type: Output\n }], onYearChange: [{\n type: Output\n }], onClickOutside: [{\n type: Output\n }], onShow: [{\n type: Output\n }], templates: [{\n type: ContentChildren,\n args: [PrimeTemplate]\n }], tabindex: [{\n type: Input\n }], containerViewChild: [{\n type: ViewChild,\n args: ['container', { static: false }]\n }], inputfieldViewChild: [{\n type: ViewChild,\n args: ['inputfield', { static: false }]\n }], content: [{\n type: ViewChild,\n args: ['contentWrapper', { static: false }]\n }], defaultDate: [{\n type: Input\n }], minDate: [{\n type: Input\n }], maxDate: [{\n type: Input\n }], disabledDates: [{\n type: Input\n }], disabledDays: [{\n type: Input\n }], yearRange: [{\n type: Input\n }], showTime: [{\n type: Input\n }], locale: [{\n type: Input\n }] } });\nclass CalendarModule {\n}\nCalendarModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: CalendarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\nCalendarModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: CalendarModule, declarations: [Calendar], imports: [CommonModule, ButtonModule, SharedModule, RippleModule], exports: [Calendar, ButtonModule, SharedModule] });\nCalendarModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: CalendarModule, imports: [[CommonModule, ButtonModule, SharedModule, RippleModule], ButtonModule, SharedModule] });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.0\", ngImport: i0, type: CalendarModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule, ButtonModule, SharedModule, RippleModule],\n exports: [Calendar, ButtonModule, SharedModule],\n declarations: [Calendar]\n }]\n }] });\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { CALENDAR_VALUE_ACCESSOR, Calendar, CalendarModule };\n"]},"metadata":{},"sourceType":"module"}