Skip to content

Commit 595a667

Browse files
author
Matt Lewis
committed
feat(weekView): allow the header template to be customised
1 parent 2a2c93c commit 595a667

File tree

2 files changed

+35
-20
lines changed

2 files changed

+35
-20
lines changed

src/components/week/calendarWeekView.component.ts

+8-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ import {
88
OnInit,
99
OnDestroy,
1010
LOCALE_ID,
11-
Inject
11+
Inject,
12+
TemplateRef
1213
} from '@angular/core';
1314
import { Subject } from 'rxjs/Subject';
1415
import { Subscription } from 'rxjs/Subscription';
@@ -43,6 +44,7 @@ import { CalendarEventTimesChangedEvent } from '../../interfaces/calendarEventTi
4344
<mwl-calendar-week-view-header
4445
[days]="days"
4546
[locale]="locale"
47+
[customTemplate]="headerTemplate"
4648
(dayClicked)="dayClicked.emit($event)"
4749
(eventDropped)="eventTimesChanged.emit($event)">
4850
</mwl-calendar-week-view-header>
@@ -114,6 +116,11 @@ export class CalendarWeekViewComponent implements OnChanges, OnInit, OnDestroy {
114116
*/
115117
@Input() weekStartsOn: number;
116118

119+
/**
120+
* A custom template to use to replace the header
121+
*/
122+
@Input() headerTemplate: TemplateRef<any>;
123+
117124
/**
118125
* Called when a header week day is clicked
119126
*/

src/components/week/calendarWeekViewHeader.component.ts

+27-19
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,33 @@
1-
import { Component, Input, Output, EventEmitter } from '@angular/core';
1+
import { Component, Input, Output, EventEmitter, TemplateRef } from '@angular/core';
22
import { CalendarEvent, WeekDay } from 'calendar-utils';
33

44
@Component({
55
selector: 'mwl-calendar-week-view-header',
6-
template: `
7-
<div class="cal-day-headers">
8-
<div
9-
class="cal-header"
10-
*ngFor="let day of days"
11-
[class.cal-past]="day.isPast"
12-
[class.cal-today]="day.isToday"
13-
[class.cal-future]="day.isFuture"
14-
[class.cal-weekend]="day.isWeekend"
15-
[class.cal-drag-over]="day.dragOver"
16-
(click)="dayClicked.emit({date: day.date})"
17-
mwlDroppable
18-
(dragEnter)="day.dragOver = true"
19-
(dragLeave)="day.dragOver = false"
20-
(drop)="day.dragOver = false; eventDropped.emit({event: $event.dropData.event, newStart: day.date})">
21-
<b>{{ day.date | calendarDate:'weekViewColumnHeader':locale }}</b><br>
22-
<span>{{ day.date | calendarDate:'weekViewColumnSubHeader':locale }}</span>
6+
template: `
7+
<template #defaultTemplate>
8+
<div class="cal-day-headers">
9+
<div
10+
class="cal-header"
11+
*ngFor="let day of days"
12+
[class.cal-past]="day.isPast"
13+
[class.cal-today]="day.isToday"
14+
[class.cal-future]="day.isFuture"
15+
[class.cal-weekend]="day.isWeekend"
16+
[class.cal-drag-over]="day.dragOver"
17+
(click)="dayClicked.emit({date: day.date})"
18+
mwlDroppable
19+
(dragEnter)="day.dragOver = true"
20+
(dragLeave)="day.dragOver = false"
21+
(drop)="day.dragOver = false; eventDropped.emit({event: $event.dropData.event, newStart: day.date})">
22+
<b>{{ day.date | calendarDate:'weekViewColumnHeader':locale }}</b><br>
23+
<span>{{ day.date | calendarDate:'weekViewColumnSubHeader':locale }}</span>
24+
</div>
2325
</div>
24-
</div>
26+
</template>
27+
<template
28+
[ngTemplateOutlet]="customTemplate || defaultTemplate"
29+
[ngOutletContext]="{days: days, locale: locale, dayClicked: dayClicked, eventDropped: eventDropped}">
30+
</template>
2531
`
2632
})
2733
export class CalendarWeekViewHeaderComponent {
@@ -30,6 +36,8 @@ export class CalendarWeekViewHeaderComponent {
3036

3137
@Input() locale: string;
3238

39+
@Input() customTemplate: TemplateRef<any>;
40+
3341
@Output() dayClicked: EventEmitter<{date: Date}> = new EventEmitter<{date: Date}>();
3442

3543
@Output() eventDropped: EventEmitter<{event: CalendarEvent, newStart: Date}> = new EventEmitter<{event: CalendarEvent, newStart: Date}>();

0 commit comments

Comments
 (0)