diff --git a/packages/calendar/src/LionCalendar.js b/packages/calendar/src/LionCalendar.js index 18771d5de..6e02ee04b 100644 --- a/packages/calendar/src/LionCalendar.js +++ b/packages/calendar/src/LionCalendar.js @@ -430,6 +430,13 @@ export class LionCalendar extends LocalizeMixin(LitElement) { this.minDate && this.minDate > date ? new Date(this.minDate) : new Date(date); const pastDate = this.maxDate && this.maxDate < date ? new Date(this.maxDate) : new Date(date); + if (this.minDate && this.minDate > date) { + futureDate.setDate(futureDate.getDate() - 1); + } + if (this.maxDate && this.maxDate < date) { + pastDate.setDate(pastDate.getDate() + 1); + } + let i = 0; do { i += 1; diff --git a/packages/calendar/test/lion-calendar.test.js b/packages/calendar/test/lion-calendar.test.js index 84c0b02f7..c52976d21 100644 --- a/packages/calendar/test/lion-calendar.test.js +++ b/packages/calendar/test/lion-calendar.test.js @@ -339,6 +339,20 @@ describe('', () => { clock.restore(); }); + it('should set centralDate to the unique valid value when minDate and maxDate are equal', async () => { + const clock = sinon.useFakeTimers({ now: new Date('2019/06/03').getTime() }); + + const el = await fixture(html` + + `); + expect(isSameDate(el.centralDate, new Date('2019/07/03')), 'central date').to.be.true; + + clock.restore(); + }); + describe('Normalization', () => { it('normalizes all generated dates', async () => { function isNormalizedDate(d) { @@ -504,7 +518,7 @@ describe('', () => { elObj.previousMonthButtonEl.click(); await el.updateComplete; expect(elObj.activeMonthAndYear).to.equal('November 2000'); - expect(isSameDate(el.centralDate, new Date('2000/11/21'))).to.be.true; + expect(isSameDate(el.centralDate, new Date('2000/11/20'))).to.be.true; clock.restore(); }); @@ -527,7 +541,7 @@ describe('', () => { elObj.nextMonthButtonEl.click(); await el.updateComplete; expect(elObj.activeMonthAndYear).to.equal('January 2001'); - expect(isSameDate(el.centralDate, new Date('2001/01/09'))).to.be.true; + expect(isSameDate(el.centralDate, new Date('2001/01/10'))).to.be.true; clock.restore(); });