Skip to content

Commit 2bd5e2b

Browse files
agilobmattlewis92
authored andcommitted
feat(month-view): add columnHeaderClicked output
Closes #722
1 parent 481eb02 commit 2bd5e2b

File tree

5 files changed

+37
-2
lines changed

5 files changed

+37
-2
lines changed

projects/angular-calendar/src/modules/month/calendar-month-view-header.component.ts

+9-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Component, Input, TemplateRef } from '@angular/core';
1+
import { Component, Input, TemplateRef, EventEmitter, Output } from '@angular/core';
22
import { WeekDay } from 'calendar-utils';
33
import { trackByWeekDayHeaderDate } from '../common/util';
44

@@ -17,6 +17,7 @@ import { trackByWeekDayHeaderDate } from '../common/util';
1717
[class.cal-today]="day.isToday"
1818
[class.cal-future]="day.isFuture"
1919
[class.cal-weekend]="day.isWeekend"
20+
(click)="handleCellClicked(day)"
2021
[ngClass]="day.cssClass">
2122
{{ day.date | calendarDate:'monthViewColumnHeader':locale }}
2223
</div>
@@ -38,5 +39,12 @@ export class CalendarMonthViewHeaderComponent {
3839
@Input()
3940
customTemplate: TemplateRef<any>;
4041

42+
@Output()
43+
columnHeaderClicked: EventEmitter<number> = new EventEmitter<number>();
44+
4145
trackByWeekDayHeaderDate = trackByWeekDayHeaderDate;
46+
47+
public handleCellClicked(event: WeekDay) {
48+
this.columnHeaderClicked.emit(event.date.getDay());
49+
}
4250
}

projects/angular-calendar/src/modules/month/calendar-month-view.component.ts

+8
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ export interface CalendarMonthViewEventTimesChangedEvent<
5858
<mwl-calendar-month-view-header
5959
[days]="columnHeaders"
6060
[locale]="locale"
61+
(columnHeaderClicked)="columnHeaderClicked.emit($event)"
6162
[customTemplate]="headerTemplate">
6263
</mwl-calendar-month-view-header>
6364
<div class="cal-days">
@@ -220,6 +221,13 @@ export class CalendarMonthViewComponent
220221
event: CalendarEvent;
221222
}>();
222223

224+
225+
/**
226+
* Called when a header week day is clicked. Returns ISO day number.
227+
*/
228+
@Output()
229+
columnHeaderClicked = new EventEmitter<number>();
230+
223231
/**
224232
* Called when an event is dragged and dropped
225233
*/

projects/angular-calendar/test/calendar-month-view.component.spec.ts

+15
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,21 @@ describe('calendarMonthView component', () => {
7777
fixture.destroy();
7878
});
7979

80+
it('should emit on the columnHeaderClicked output', (done) => {
81+
const fixture: ComponentFixture<
82+
CalendarMonthViewComponent
83+
> = TestBed.createComponent(CalendarMonthViewComponent);
84+
fixture.componentInstance.viewDate = new Date('2016-06-29');
85+
fixture.componentInstance.ngOnChanges({ viewDate: {} });
86+
fixture.detectChanges();
87+
fixture.componentInstance.columnHeaderClicked.subscribe(val => {
88+
expect(val).to.equal(0);
89+
done();
90+
});
91+
fixture.nativeElement.querySelector('.cal-header .cal-cell').click();
92+
fixture.detectChanges();
93+
});
94+
8095
it('should generate the week view with default colors for events', () => {
8196
const fixture: ComponentFixture<
8297
CalendarMonthViewComponent

src/app/demo-modules/clickable-days/component.ts

+2
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,6 @@ export class DemoComponent {
1414
events: CalendarEvent[] = [];
1515

1616
clickedDate: Date;
17+
18+
clickedColumn: number;
1719
}

src/app/demo-modules/clickable-days/template.html

+3-1
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,15 @@
66
<div class="alert alert-info">
77
Click on a day on the view.
88
<strong *ngIf="clickedDate">You clicked on this day: {{ clickedDate | date:'medium' }}</strong>
9+
<strong *ngIf="clickedColumn != null">You clicked on this column: {{ clickedColumn }}</strong>
910
</div>
1011

1112
<div [ngSwitch]="view">
1213
<mwl-calendar-month-view
1314
*ngSwitchCase="'month'"
1415
[viewDate]="viewDate"
1516
[events]="events"
17+
(columnHeaderClicked)="clickedColumn = $event"
1618
(dayClicked)="clickedDate = $event.day.date">
1719
</mwl-calendar-month-view>
1820
<mwl-calendar-week-view
@@ -26,4 +28,4 @@
2628
[viewDate]="viewDate"
2729
[events]="events">
2830
</mwl-calendar-day-view>
29-
</div>
31+
</div>

0 commit comments

Comments
 (0)