Skip to content

Commit 241f7c3

Browse files
committed
fix(week-view): respect hourSegmentHeight when resizing events
Closes #929
1 parent b627aa7 commit 241f7c3

File tree

2 files changed

+67
-1
lines changed

2 files changed

+67
-1
lines changed

projects/angular-calendar/src/modules/common/util.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,9 @@ export function getMinimumEventHeightInMinutes(
7272
hourSegments: number,
7373
hourSegmentHeight: number
7474
) {
75-
return (MINUTES_IN_HOUR / (hourSegments * hourSegmentHeight)) * 30;
75+
return (
76+
(MINUTES_IN_HOUR / (hourSegments * hourSegmentHeight)) * hourSegmentHeight
77+
);
7678
}
7779

7880
export function getDefaultEventEnd(

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

+64
Original file line numberDiff line numberDiff line change
@@ -2193,4 +2193,68 @@ describe('calendarWeekView component', () => {
21932193
.classList.contains('disabled-cell')
21942194
).to.be.true;
21952195
});
2196+
2197+
it('should resize a time event to the minimum height', () => {
2198+
const fixture: ComponentFixture<
2199+
CalendarWeekViewComponent
2200+
> = TestBed.createComponent(CalendarWeekViewComponent);
2201+
fixture.componentInstance.viewDate = new Date('2018-07-29');
2202+
fixture.componentInstance.events = [
2203+
{
2204+
start: moment(new Date('2018-07-29'))
2205+
.startOf('day')
2206+
.add(3, 'hours')
2207+
.toDate(),
2208+
end: moment(new Date('2018-07-29'))
2209+
.startOf('day')
2210+
.add(5, 'hours')
2211+
.toDate(),
2212+
title: 'foo',
2213+
resizable: {
2214+
afterEnd: true
2215+
}
2216+
}
2217+
];
2218+
fixture.componentInstance.hourSegmentHeight = 20;
2219+
fixture.componentInstance.ngOnChanges({
2220+
viewDate: {},
2221+
events: {},
2222+
hourSegmentHeight: {}
2223+
});
2224+
fixture.detectChanges();
2225+
document.body.appendChild(fixture.nativeElement);
2226+
const event: HTMLElement = fixture.nativeElement.querySelectorAll(
2227+
'.cal-event-container'
2228+
)[0];
2229+
const rect: ClientRect = event.getBoundingClientRect();
2230+
const resizeHandle = event.querySelector('.cal-resize-handle-after-end');
2231+
let resizeEvent: CalendarEventTimesChangedEvent;
2232+
fixture.componentInstance.eventTimesChanged.subscribe(e => {
2233+
resizeEvent = e;
2234+
});
2235+
triggerDomEvent('mousedown', resizeHandle, {
2236+
clientX: rect.right,
2237+
clientY: rect.bottom
2238+
});
2239+
fixture.detectChanges();
2240+
triggerDomEvent('mousemove', document.body, {
2241+
clientX: rect.right,
2242+
clientY: rect.bottom - 200
2243+
});
2244+
fixture.detectChanges();
2245+
expect(event.getBoundingClientRect().height).to.equal(20);
2246+
triggerDomEvent('mouseup', document.body, {
2247+
clientX: rect.right,
2248+
clientY: rect.bottom - 200
2249+
});
2250+
fixture.detectChanges();
2251+
expect(resizeEvent).to.deep.equal({
2252+
type: 'resize',
2253+
event: fixture.componentInstance.events[0],
2254+
newStart: fixture.componentInstance.events[0].start,
2255+
newEnd: moment(fixture.componentInstance.events[0].start)
2256+
.add(30, 'minutes')
2257+
.toDate()
2258+
});
2259+
});
21962260
});

0 commit comments

Comments
 (0)