Skip to content

Commit 55c2135

Browse files
committed
docs(demos): add beforeViewRender demos for day and week view
Closes #825 Closes #905
1 parent 408d1d4 commit 55c2135

File tree

2 files changed

+46
-7
lines changed

2 files changed

+46
-7
lines changed

projects/demos/app/demo-modules/before-view-render/component.ts

+39-7
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,12 @@ import {
33
ChangeDetectionStrategy,
44
ViewEncapsulation
55
} from '@angular/core';
6-
import { CalendarEvent, CalendarMonthViewDay } from 'angular-calendar';
6+
import {
7+
CalendarEvent,
8+
CalendarMonthViewBeforeRenderEvent,
9+
CalendarWeekViewBeforeRenderEvent,
10+
CalendarDayViewBeforeRenderEvent
11+
} from 'angular-calendar';
712

813
@Component({
914
selector: 'mwl-demo-component',
@@ -12,8 +17,8 @@ import { CalendarEvent, CalendarMonthViewDay } from 'angular-calendar';
1217
templateUrl: 'template.html',
1318
styles: [
1419
`
15-
.odd-cell {
16-
background-color: pink !important;
20+
.bg-pink {
21+
background-color: hotpink !important;
1722
}
1823
`
1924
]
@@ -25,11 +30,38 @@ export class DemoComponent {
2530

2631
events: CalendarEvent[] = [];
2732

28-
beforeMonthViewRender({ body }: { body: CalendarMonthViewDay[] }): void {
29-
body.forEach(day => {
30-
if (day.date.getDate() % 2 === 1 && day.inMonth) {
31-
day.cssClass = 'odd-cell';
33+
beforeMonthViewRender(renderEvent: CalendarMonthViewBeforeRenderEvent): void {
34+
renderEvent.body.forEach(day => {
35+
const dayOfMonth = day.date.getDate();
36+
if (dayOfMonth > 5 && dayOfMonth < 10 && day.inMonth) {
37+
day.cssClass = 'bg-pink';
3238
}
3339
});
3440
}
41+
42+
beforeWeekViewRender(renderEvent: CalendarWeekViewBeforeRenderEvent) {
43+
renderEvent.hourColumns.forEach(hourColumn => {
44+
hourColumn.hours.forEach(hour => {
45+
hour.segments.forEach(segment => {
46+
if (
47+
segment.date.getHours() >= 2 &&
48+
segment.date.getHours() <= 5 &&
49+
segment.date.getDay() === 2
50+
) {
51+
segment.cssClass = 'bg-pink';
52+
}
53+
});
54+
});
55+
});
56+
}
57+
58+
beforeDayViewRender(renderEvent: CalendarDayViewBeforeRenderEvent) {
59+
renderEvent.body.hourGrid.forEach(hour => {
60+
hour.segments.forEach((segment, index) => {
61+
if (segment.date.getHours() >= 2 && segment.date.getHours() <= 5) {
62+
segment.cssClass = 'bg-pink';
63+
}
64+
});
65+
});
66+
}
3567
}

projects/demos/app/demo-modules/before-view-render/template.html

+7
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
<mwl-demo-utils-calendar-header [(view)]="view" [(viewDate)]="viewDate">
22
</mwl-demo-utils-calendar-header>
33

4+
<div class="alert alert-info">
5+
You can use each views beforeViewRender output to add a custom cssClass to
6+
different cells to add styling for disabled time slots
7+
</div>
8+
49
<div [ngSwitch]="view">
510
<mwl-calendar-month-view
611
*ngSwitchCase="'month'"
@@ -13,12 +18,14 @@
1318
*ngSwitchCase="'week'"
1419
[viewDate]="viewDate"
1520
[events]="events"
21+
(beforeViewRender)="beforeWeekViewRender($event)"
1622
>
1723
</mwl-calendar-week-view>
1824
<mwl-calendar-day-view
1925
*ngSwitchCase="'day'"
2026
[viewDate]="viewDate"
2127
[events]="events"
28+
(beforeViewRender)="beforeDayViewRender($event)"
2229
>
2330
</mwl-calendar-day-view>
2431
</div>

0 commit comments

Comments
 (0)