Skip to content

Commit e956463

Browse files
author
Matt Lewis
committed
feat(eventTitleTemplate): allow the event title template to be customised
Closes #312
1 parent 02be419 commit e956463

8 files changed

+51
-6
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,32 @@
1-
import { Component, Input } from '@angular/core';
1+
import { Component, Input, TemplateRef } from '@angular/core';
22
import { CalendarEvent } from 'calendar-utils';
33

44
@Component({
55
selector: 'mwl-calendar-event-title',
66
template: `
7-
<a
8-
class="cal-event-title"
9-
href="javascript:;"
10-
[innerHTML]="event.title | calendarEventTitle:view:event">
11-
</a>
7+
<ng-template
8+
#defaultTemplate
9+
let-event="event"
10+
let-view="view">
11+
<a
12+
class="cal-event-title"
13+
href="javascript:;"
14+
[innerHTML]="event.title | calendarEventTitle:view:event">
15+
</a>
16+
</ng-template>
17+
<ng-template
18+
[ngTemplateOutlet]="customTemplate || defaultTemplate"
19+
[ngTemplateOutletContext]="{
20+
event: event,
21+
view: view
22+
}">
23+
</ng-template>
1224
`
1325
})
1426
export class CalendarEventTitleComponent {
1527
@Input() event: CalendarEvent;
1628

29+
@Input() customTemplate: TemplateRef<any>;
30+
1731
@Input() view: string;
1832
}

src/components/day/calendarAllDayEvent.component.ts

+3
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import { CalendarEvent } from 'calendar-utils';
2121
<mwl-calendar-event-actions [event]="event"></mwl-calendar-event-actions>
2222
<mwl-calendar-event-title
2323
[event]="event"
24+
[customTemplate]="eventTitleTemplate"
2425
view="day"
2526
(mwlClick)="eventClicked.emit()">
2627
</mwl-calendar-event-title>
@@ -40,5 +41,7 @@ export class CalendarAllDayEventComponent {
4041

4142
@Input() customTemplate: TemplateRef<any>;
4243

44+
@Input() eventTitleTemplate: TemplateRef<any>;
45+
4346
@Output() eventClicked: EventEmitter<any> = new EventEmitter();
4447
}

src/components/day/calendarDayView.component.ts

+7
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ export interface DayViewEventResize {
6464
*ngFor="let event of view.allDayEvents"
6565
[event]="event"
6666
[customTemplate]="allDayEventTemplate"
67+
[eventTitleTemplate]="eventTitleTemplate"
6768
(eventClicked)="eventClicked.emit({event: event})">
6869
</mwl-calendar-all-day-event>
6970
<div class="cal-hour-rows">
@@ -99,6 +100,7 @@ export interface DayViewEventResize {
99100
[tooltipTemplate]="tooltipTemplate"
100101
[tooltipAppendToBody]="tooltipAppendToBody"
101102
[customTemplate]="eventTemplate"
103+
[eventTitleTemplate]="eventTitleTemplate"
102104
(eventClicked)="eventClicked.emit({event: dayEvent.event})">
103105
</mwl-calendar-day-view-event>
104106
</div>
@@ -208,6 +210,11 @@ export class CalendarDayViewComponent implements OnChanges, OnInit, OnDestroy {
208210
*/
209211
@Input() eventTemplate: TemplateRef<any>;
210212

213+
/**
214+
* A custom template to use for event titles
215+
*/
216+
@Input() eventTitleTemplate: TemplateRef<any>;
217+
211218
/**
212219
* Called when an event title is clicked
213220
*/

src/components/day/calendarDayViewEvent.component.ts

+3
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import { DayViewEvent } from 'calendar-utils';
2929
<mwl-calendar-event-actions [event]="dayEvent.event"></mwl-calendar-event-actions>
3030
<mwl-calendar-event-title
3131
[event]="dayEvent.event"
32+
[customTemplate]="eventTitleTemplate"
3233
view="day"
3334
(mwlClick)="eventClicked.emit()">
3435
</mwl-calendar-event-title>
@@ -55,6 +56,8 @@ export class CalendarDayViewEventComponent {
5556

5657
@Input() customTemplate: TemplateRef<any>;
5758

59+
@Input() eventTitleTemplate: TemplateRef<any>;
60+
5861
@Input() tooltipTemplate: TemplateRef<any>;
5962

6063
@Output() eventClicked: EventEmitter<any> = new EventEmitter();

src/components/month/calendarMonthView.component.ts

+6
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ import { CalendarUtils } from '../../providers/calendarUtils.provider';
7878
[isOpen]="openRowIndex === rowIndex"
7979
[events]="openDay?.events"
8080
[customTemplate]="openDayEventsTemplate"
81+
[eventTitleTemplate]="eventTitleTemplate"
8182
(eventClicked)="eventClicked.emit({event: $event.event})">
8283
</mwl-calendar-open-day-events>
8384
</div>
@@ -153,6 +154,11 @@ export class CalendarMonthViewComponent
153154
*/
154155
@Input() openDayEventsTemplate: TemplateRef<any>;
155156

157+
/**
158+
* A custom template to use for event titles
159+
*/
160+
@Input() eventTitleTemplate: TemplateRef<any>;
161+
156162
/**
157163
* An array of day indexes (0 = sunday, 1 = monday etc) that indicate which days are weekends
158164
*/

src/components/month/calendarOpenDayEvents.component.ts

+3
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import { CalendarEvent } from 'calendar-utils';
2727
</span>
2828
<mwl-calendar-event-title
2929
[event]="event"
30+
[customTemplate]="eventTitleTemplate"
3031
view="month"
3132
(mwlClick)="eventClicked.emit({event: event})">
3233
</mwl-calendar-event-title>
@@ -63,6 +64,8 @@ export class CalendarOpenDayEventsComponent {
6364

6465
@Input() customTemplate: TemplateRef<any>;
6566

67+
@Input() eventTitleTemplate: TemplateRef<any>;
68+
6669
@Output()
6770
eventClicked: EventEmitter<{ event: CalendarEvent }> = new EventEmitter<{
6871
event: CalendarEvent;

src/components/week/calendarWeekView.component.ts

+6
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ export interface WeekViewEventResize {
8383
[tooltipTemplate]="tooltipTemplate"
8484
[tooltipAppendToBody]="tooltipAppendToBody"
8585
[customTemplate]="eventTemplate"
86+
[eventTitleTemplate]="eventTitleTemplate"
8687
(eventClicked)="eventClicked.emit({event: weekEvent.event})">
8788
</mwl-calendar-week-view-event>
8889
</div>
@@ -147,6 +148,11 @@ export class CalendarWeekViewComponent implements OnChanges, OnInit, OnDestroy {
147148
*/
148149
@Input() eventTemplate: TemplateRef<any>;
149150

151+
/**
152+
* A custom template to use for event titles
153+
*/
154+
@Input() eventTitleTemplate: TemplateRef<any>;
155+
150156
/**
151157
* The precision to display events.
152158
* `days` will round event start and end dates to the nearest day and `minutes` will not do this rounding

src/components/week/calendarWeekViewEvent.component.ts

+3
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import { WeekViewEvent } from 'calendar-utils';
2828
<mwl-calendar-event-actions [event]="weekEvent.event"></mwl-calendar-event-actions>
2929
<mwl-calendar-event-title
3030
[event]="weekEvent.event"
31+
[customTemplate]="eventTitleTemplate"
3132
view="week"
3233
(mwlClick)="eventClicked.emit()">
3334
</mwl-calendar-event-title>
@@ -54,6 +55,8 @@ export class CalendarWeekViewEventComponent {
5455

5556
@Input() customTemplate: TemplateRef<any>;
5657

58+
@Input() eventTitleTemplate: TemplateRef<any>;
59+
5760
@Input() tooltipTemplate: TemplateRef<any>;
5861

5962
@Output() eventClicked: EventEmitter<any> = new EventEmitter();

0 commit comments

Comments
 (0)