diff --git a/packages/calendar/src/LionCalendar.js b/packages/calendar/src/LionCalendar.js index e8bd3ff6e..737ddf1c5 100644 --- a/packages/calendar/src/LionCalendar.js +++ b/packages/calendar/src/LionCalendar.js @@ -454,11 +454,10 @@ export class LionCalendar extends LocalizeMixin(LitElement) { } __addEventDelegationForClickDate() { - const isDayCellOrButton = el => - el.classList.contains('calendar__day-cell') || el.classList.contains('calendar__day-button'); + const isDayButton = el => el.classList.contains('calendar__day-button'); this.__clickDateDelegation = this.__contentWrapperElement.addEventListener('click', ev => { - const el = ev.composedPath()[0]; - if (isDayCellOrButton(el)) { + const el = ev.target; + if (isDayButton(el)) { this.__dateSelectedByUser(el.date); } }); diff --git a/packages/calendar/test/lion-calendar.test.js b/packages/calendar/test/lion-calendar.test.js index c2d720bd5..56ea85fe0 100644 --- a/packages/calendar/test/lion-calendar.test.js +++ b/packages/calendar/test/lion-calendar.test.js @@ -204,6 +204,22 @@ describe('', () => { ).to.equal(true); }); + it('doesn\'t send event "user-selected-date-changed" when user selects a disabled date', async () => { + const dateChangedSpy = sinon.spy(); + const disable15th = d => d.getDate() === 15; + const el = await fixture(html` + + `); + const elObj = new CalendarObject(el); + elObj.getDayEl(15).click(); + await el.updateComplete; + expect(dateChangedSpy.called).to.equal(false); + }); + it('exposes focusedDate getter', async () => { const el = await fixture(html`