Skip to content

Commit 688693c

Browse files
author
Matt Lewis
committed
feat(day-view): allow the hour segment height to be customised
Closes #360
1 parent 7d72665 commit 688693c

4 files changed

+31
-10
lines changed

scss/day-view.scss

-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
mwl-calendar-day-view-hour-segment, // fix for https://github.com/mattlewis92/angular-calendar/issues/260
2323
.cal-hour-segment {
2424
display: block;
25-
height: 30px;
2625
}
2726

2827
.cal-hour-segment::after {

src/components/day/calendar-day-view-hour-segment.component.ts

+3
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { DayViewHourSegment } from 'calendar-utils';
1010
let-locale="locale">
1111
<div
1212
class="cal-hour-segment"
13+
[style.height.px]="segmentHeight"
1314
[class.cal-hour-start]="segment.isStart"
1415
[class.cal-after-hour-start]="!segment.isStart"
1516
[ngClass]="segment.cssClass">
@@ -30,6 +31,8 @@ import { DayViewHourSegment } from 'calendar-utils';
3031
export class CalendarDayViewHourSegmentComponent {
3132
@Input() segment: DayViewHourSegment;
3233

34+
@Input() segmentHeight: number;
35+
3336
@Input() locale: string;
3437

3538
@Input() customTemplate: TemplateRef<any>;

src/components/day/calendar-day-view.component.ts

+11-9
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,6 @@ import { CalendarEventTimesChangedEvent } from '../../interfaces/calendar-event-
2828
import { CalendarUtils } from '../../providers/calendar-utils.provider';
2929
import { validateEvents } from '../../providers/util';
3030

31-
/**
32-
* @hidden
33-
*/
34-
const SEGMENT_HEIGHT: number = 30;
35-
3631
/**
3732
* @hidden
3833
*/
@@ -109,7 +104,9 @@ export interface DayViewEventResize {
109104
<div class="cal-hour" *ngFor="let hour of hours" [style.minWidth.px]="view?.width + 70">
110105
<mwl-calendar-day-view-hour-segment
111106
*ngFor="let segment of hour.segments"
107+
[style.height.px]="hourSegmentHeight"
112108
[segment]="segment"
109+
[segmentHeight]="hourSegmentHeight"
113110
[locale]="locale"
114111
[customTemplate]="hourSegmentTemplate"
115112
(mwlClick)="hourSegmentClicked.emit({date: segment.date})"
@@ -141,6 +138,11 @@ export class CalendarDayViewComponent implements OnChanges, OnInit, OnDestroy {
141138
*/
142139
@Input() hourSegments: number = 2;
143140

141+
/**
142+
* The height in pixels of each hour segment
143+
*/
144+
@Input() hourSegmentHeight: number = 30;
145+
144146
/**
145147
* The day start hours in 24 hour time. Must be 0-23
146148
*/
@@ -179,7 +181,7 @@ export class CalendarDayViewComponent implements OnChanges, OnInit, OnDestroy {
179181
/**
180182
* The grid size to snap resizing and dragging of events to
181183
*/
182-
@Input() eventSnapSize: number = 30;
184+
@Input() eventSnapSize: number = this.hourSegmentHeight;
183185

184186
/**
185187
* The placement of the event tooltip
@@ -399,7 +401,7 @@ export class CalendarDayViewComponent implements OnChanges, OnInit, OnDestroy {
399401
dayEvent.height = currentResize.originalHeight;
400402

401403
const pixelAmountInMinutes: number =
402-
MINUTES_IN_HOUR / (this.hourSegments * SEGMENT_HEIGHT);
404+
MINUTES_IN_HOUR / (this.hourSegments * this.hourSegmentHeight);
403405
const minutesMoved: number = pixelsMoved * pixelAmountInMinutes;
404406
let newStart: Date = dayEvent.event.start;
405407
let newEnd: Date = dayEvent.event.end;
@@ -425,7 +427,7 @@ export class CalendarDayViewComponent implements OnChanges, OnInit, OnDestroy {
425427

426428
eventDragged(dayEvent: DayViewEvent, draggedInPixels: number): void {
427429
const pixelAmountInMinutes: number =
428-
MINUTES_IN_HOUR / (this.hourSegments * SEGMENT_HEIGHT);
430+
MINUTES_IN_HOUR / (this.hourSegments * this.hourSegmentHeight);
429431
const minutesMoved: number = draggedInPixels * pixelAmountInMinutes;
430432
const newStart: Date = addMinutes(dayEvent.event.start, minutesMoved);
431433
let newEnd: Date;
@@ -467,7 +469,7 @@ export class CalendarDayViewComponent implements OnChanges, OnInit, OnDestroy {
467469
minute: this.dayEndMinute
468470
},
469471
eventWidth: this.eventWidth,
470-
segmentHeight: SEGMENT_HEIGHT
472+
segmentHeight: this.hourSegmentHeight
471473
});
472474
}
473475

test/calendar-day-view.component.spec.ts

+17
Original file line numberDiff line numberDiff line change
@@ -995,4 +995,21 @@ describe('CalendarDayViewComponent component', () => {
995995
stub.restore();
996996
expect(stub).to.have.been.calledOnce; // tslint:disable-line
997997
});
998+
999+
it('should allow the hour segment height to be customised', () => {
1000+
const fixture: ComponentFixture<
1001+
CalendarDayViewComponent
1002+
> = TestBed.createComponent(CalendarDayViewComponent);
1003+
fixture.componentInstance.hourSegmentHeight = 45;
1004+
fixture.componentInstance.viewDate = new Date('2016-06-01');
1005+
fixture.componentInstance.ngOnChanges({ viewDate: {} });
1006+
fixture.detectChanges();
1007+
expect(
1008+
fixture.nativeElement.querySelector('mwl-calendar-day-view-hour-segment')
1009+
.style.height
1010+
).to.equal('45px');
1011+
expect(
1012+
fixture.nativeElement.querySelector('.cal-hour-segment').style.height
1013+
).to.equal('45px');
1014+
});
9981015
});

0 commit comments

Comments
 (0)