From dde4930f00039bb8a4c501503ad340500ce54675 Mon Sep 17 00:00:00 2001 From: ardentia Date: Tue, 19 Mar 2024 15:16:25 +0200 Subject: [PATCH] check if current month is the same as selected date --- projects/ng-datetime-picker/package.json | 2 +- .../datetime-picker.component.ts | 49 ++++++++++--------- 2 files changed, 27 insertions(+), 24 deletions(-) diff --git a/projects/ng-datetime-picker/package.json b/projects/ng-datetime-picker/package.json index 048ba9cc..34b4c864 100644 --- a/projects/ng-datetime-picker/package.json +++ b/projects/ng-datetime-picker/package.json @@ -1,6 +1,6 @@ { "name": "@sq-ui/ng-datetime-picker", - "version": "2.0.1", + "version": "2.0.4", "license": "MIT", "private": false, "description": "Simple Quality UI Datetime-Picker for Angular", diff --git a/projects/ng-datetime-picker/src/lib/datetime-picker/datetime-picker/datetime-picker.component.ts b/projects/ng-datetime-picker/src/lib/datetime-picker/datetime-picker/datetime-picker.component.ts index b6a589d3..d4ad5780 100644 --- a/projects/ng-datetime-picker/src/lib/datetime-picker/datetime-picker/datetime-picker.component.ts +++ b/projects/ng-datetime-picker/src/lib/datetime-picker/datetime-picker/datetime-picker.component.ts @@ -65,7 +65,6 @@ export class DatetimePickerComponent extends InputCoreComponent implements OnIni this.selectedDates = List([now.clone()]); this.weekdays = this.calendarManager.getWeekdays(); this.calendar = this.getMonthCalendar(now.clone()); - this.initializeAuthorValuesIfAny(); } ngAfterViewInit() { @@ -80,6 +79,32 @@ export class DatetimePickerComponent extends InputCoreComponent implements OnIni } } + override writeValue(newValue: any): void { + super.writeValue(newValue); + + if (this.selectedDates.size === 1 && this.selectedDates.get(0).isSame(moment(), 'day')) { + if (newValue) { + this.deselectAll(); + + if (Array.isArray(newValue)) { + newValue.forEach((date) => { + if (!this.currentMonth.isSame(moment(date), 'month')) { + this.calendar = this.getMonthCalendar(moment(date)); + } + const convertedDate = this.calendarManager.findADateFromCalendar(moment(date), this.calendar); + this.markDateAsSelected(convertedDate); + }); + } else { + if (!this.currentMonth.isSame(moment(newValue), 'month')) { + this.calendar = this.getMonthCalendar(moment(newValue)); + } + const calendarDay = this.calendarManager.findADateFromCalendar(moment(newValue), this.calendar); + this.markDateAsSelected(calendarDay); + } + } + } + } + onDateClick(date: CalendarDay) { switch (date.relativityToCurrentMonth) { case CalendarPeriodRelativityEnum.After: @@ -196,28 +221,6 @@ export class DatetimePickerComponent extends InputCoreComponent implements OnIni this.dateSelectionChange.emit(this.value); } - private initializeAuthorValuesIfAny() { - const subscription = this._modelToViewChange.subscribe((newValue) => { - if (this.selectedDates.size === 1 && this.selectedDates.get(0).isSame(moment(), 'day')) { - if (newValue) { - this.deselectAll(); - - if (Array.isArray(newValue)) { - newValue.forEach((date) => { - const convertedDate = this.calendarManager.findADateFromCalendar(moment(date), this.calendar); - this.markDateAsSelected(convertedDate); - }); - } else { - const calendarDay = this.calendarManager.findADateFromCalendar(moment(newValue), this.calendar); - this.markDateAsSelected(calendarDay); - } - } - } - - subscription.unsubscribe(); - }); - } - private markDateAsSelected(date: CalendarDay) { const selectedMomentObj = moment(date.momentObj); const selectedIndex = this.calendarManager.getSelectedItemIndex(selectedMomentObj, this.selectedDates.toArray());