From 91e4c32d614191e8c8a0a65d34482f3afde68901 Mon Sep 17 00:00:00 2001 From: Egor Volvachev Date: Wed, 1 Jun 2022 10:41:55 +0300 Subject: [PATCH] fix(primeng/calendar): `yearpicker` wont show value with reactive forms Fixes #11223. --- src/app/components/calendar/calendar.ts | 22 +++++++++++++------ .../components/calendar/calendardemo.html | 2 +- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/app/components/calendar/calendar.ts b/src/app/components/calendar/calendar.ts index a09a7fd5cc4..ad563df9eab 100755 --- a/src/app/components/calendar/calendar.ts +++ b/src/app/components/calendar/calendar.ts @@ -29,6 +29,8 @@ export interface LocaleSettings { weekHeader?: string; } +export type CalendarTypeView = 'date' | 'month' | 'year'; + @Component({ selector: 'p-calendar', template: ` @@ -466,15 +468,15 @@ export class Calendar implements OnInit,OnDestroy,ControlValueAccessor { _firstDayOfWeek: number; - _view: string = 'date'; + _view: CalendarTypeView = 'date'; preventFocus: boolean; - @Input() get view(): string { + @Input() get view(): CalendarTypeView { return this._view; }; - set view(view: string) { + set view(view: CalendarTypeView) { this._view = view; this.currentView = this._view; } @@ -1063,7 +1065,7 @@ export class Calendar implements OnInit,OnDestroy,ControlValueAccessor { } } - setCurrentView(currentView: string) { + setCurrentView(currentView: CalendarTypeView) { this.currentView = currentView; this.cd.detectChanges(); this.alignOverlay(); @@ -2857,10 +2859,16 @@ export class Calendar implements OnInit,OnDestroy,ControlValueAccessor { } while (true); } + if (this.view === 'year') { + month = month === - 1 ? 1 : month; + day = day === - 1 ? 1 : day; + } + date = this.daylightSavingAdjust(new Date(year, month - 1, day)); - if (date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day) { - throw "Invalid date"; // E.g. 31/02/00 - } + + if (date.getFullYear() !== year || date.getMonth() + 1 !== month || date.getDate() !== day) { + throw "Invalid date"; // E.g. 31/02/00 + } return date; } diff --git a/src/app/showcase/components/calendar/calendardemo.html b/src/app/showcase/components/calendar/calendardemo.html index 8c110396fb2..108a89c4a6c 100755 --- a/src/app/showcase/components/calendar/calendardemo.html +++ b/src/app/showcase/components/calendar/calendardemo.html @@ -576,7 +576,7 @@
Properties
view - string + 'date' | 'month' | 'year' date Type of view to display, valid values are "date" for datepicker and "month" for month picker.