Skip to content

Commit d61719e

Browse files
author
Matt Lewis
committed
fix(monthView): cell events should be clickable
Closes #111
1 parent 9df7ca0 commit d61719e

File tree

3 files changed

+38
-3
lines changed

3 files changed

+38
-3
lines changed

src/components/month/calendarMonthCell.component.ts

+5-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Component, Input, Output, EventEmitter } from '@angular/core';
2-
import { MonthViewDay } from 'calendar-utils';
2+
import { MonthViewDay, CalendarEvent } from 'calendar-utils';
33

44
@Component({
55
selector: 'mwl-calendar-month-cell',
@@ -20,7 +20,8 @@ import { MonthViewDay } from 'calendar-utils';
2020
[tooltipPlacement]="tooltipPlacement"
2121
mwlDraggable
2222
[dropData]="{event: event}"
23-
[dragAxis]="{x: event.draggable, y: event.draggable}">
23+
[dragAxis]="{x: event.draggable, y: event.draggable}"
24+
(click)="$event.stopPropagation(); eventClicked.emit({event: event})">
2425
</div>
2526
</div>
2627
`,
@@ -51,4 +52,6 @@ export class CalendarMonthCellComponent {
5152

5253
@Output() unhighlightDay: EventEmitter<any> = new EventEmitter();
5354

55+
@Output() eventClicked: EventEmitter<{event: CalendarEvent}> = new EventEmitter<{event: CalendarEvent}>();
56+
5457
}

src/components/month/calendarMonthView.component.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,8 @@ import { CalendarEventTimesChangedEvent } from '../../interfaces/calendarEventTi
5656
mwlDroppable
5757
(dragEnter)="day.dragOver = true"
5858
(dragLeave)="day.dragOver = false"
59-
(drop)="day.dragOver = false; eventDropped(day, $event.dropData.event)">
59+
(drop)="day.dragOver = false; eventDropped(day, $event.dropData.event)"
60+
(eventClicked)="eventClicked.emit({event: $event.event})">
6061
</mwl-calendar-month-cell>
6162
</div>
6263
<mwl-calendar-open-day-events

test/calendarMonthView.component.spec.ts

+31
Original file line numberDiff line numberDiff line change
@@ -383,4 +383,35 @@ describe('calendarMonthView component', () => {
383383
fixture.destroy();
384384
});
385385

386+
it('should handle the click event on month cell events', () => {
387+
const fixture: ComponentFixture<CalendarMonthViewComponent> = TestBed.createComponent(CalendarMonthViewComponent);
388+
fixture.componentInstance.viewDate = new Date('2016-06-27');
389+
fixture.componentInstance.events = [{
390+
start: new Date('2016-05-30'),
391+
end: new Date('2016-06-02'),
392+
title: 'foo',
393+
color: {
394+
primary: 'blue',
395+
secondary: ''
396+
}
397+
}];
398+
fixture.componentInstance.ngOnChanges({viewDate: {}, events: {}});
399+
fixture.detectChanges();
400+
let eventClickedEvent: any;
401+
fixture.componentInstance.eventClicked.subscribe((event) => {
402+
eventClickedEvent = event;
403+
});
404+
let dayClickedFired: boolean = false;
405+
fixture.componentInstance.dayClicked.subscribe(() => {
406+
dayClickedFired = true;
407+
});
408+
const event: HTMLElement = fixture.nativeElement.querySelector(
409+
'.cal-days .cal-cell-row .cal-cell:nth-child(4) .cal-events .cal-event'
410+
);
411+
event.click();
412+
fixture.destroy();
413+
expect(eventClickedEvent).to.deep.equal({event: fixture.componentInstance.events[0]});
414+
expect(dayClickedFired).to.be.false;
415+
});
416+
386417
});

0 commit comments

Comments
 (0)