diff --git a/packages/calendar/src/LionCalendar.js b/packages/calendar/src/LionCalendar.js index f76641009..18771d5de 100644 --- a/packages/calendar/src/LionCalendar.js +++ b/packages/calendar/src/LionCalendar.js @@ -331,7 +331,7 @@ export class LionCalendar extends LocalizeMixin(LitElement) { __coreDayPreprocessor(_day, { currentMonth = false } = {}) { const day = createDay(new Date(_day.date), _day); - const today = new Date(); + const today = normalizeDateTime(new Date()); day.central = isSameDate(day.date, this.centralDate); day.previousMonth = currentMonth && day.date.getMonth() < currentMonth.getMonth(); day.currentMonth = currentMonth && day.date.getMonth() === currentMonth.getMonth(); @@ -342,11 +342,11 @@ export class LionCalendar extends LocalizeMixin(LitElement) { day.future = day.date > today; day.disabled = this.disableDates(day.date); - if (this.minDate && day.date < this.minDate) { + if (this.minDate && normalizeDateTime(day.date) < normalizeDateTime(this.minDate)) { day.disabled = true; } - if (this.maxDate && day.date > this.maxDate) { + if (this.maxDate && normalizeDateTime(day.date) > normalizeDateTime(this.maxDate)) { day.disabled = true; } diff --git a/packages/calendar/src/utils/normalizeDateTime.js b/packages/calendar/src/utils/normalizeDateTime.js index de7e1d72f..290b79df1 100644 --- a/packages/calendar/src/utils/normalizeDateTime.js +++ b/packages/calendar/src/utils/normalizeDateTime.js @@ -1,4 +1,3 @@ - /** * @desc Makes suitable for date comparisons * @param {Date} d diff --git a/packages/calendar/test/lion-calendar.test.js b/packages/calendar/test/lion-calendar.test.js index e6438165b..84c0b02f7 100644 --- a/packages/calendar/test/lion-calendar.test.js +++ b/packages/calendar/test/lion-calendar.test.js @@ -354,6 +354,31 @@ describe('', () => { // dates in the month view will be derived from. expect(isNormalizedDate(el.centralDate)).to.be.true; }); + + it('normalizes dates in date comparisons', async () => { + const selectedDate = new Date('2000-11-04T03:00:00'); + // without normalization, selectedDate > maxDate would wrongfully be disabled + const maxDate = new Date('2000-11-29T02:00:00'); + // without normalization, selectedDate < minDate would wrongfully be disabled + const minDate = new Date('2000-11-02T04:00:00'); + + const el = await fixture( + html` + + `, + ); + const elObj = new CalendarObject(el); + + expect(elObj.getDayObj(29).isDisabled).to.equal(false); + expect(elObj.getDayObj(30).isDisabled).to.equal(true); + + expect(elObj.getDayObj(2).isDisabled).to.equal(false); + expect(elObj.getDayObj(1).isDisabled).to.equal(true); + }); }); }); });