@@ -838,7 +838,7 @@ export class CalendarWeekViewComponent
838
838
resizeEvent : ResizeEvent
839
839
) : void {
840
840
this . timeEventResizes . set ( timeEvent . event , resizeEvent ) ;
841
- this . resizeStarted ( eventsContainer ) ;
841
+ this . resizeStarted ( eventsContainer , timeEvent ) ;
842
842
}
843
843
844
844
/**
@@ -900,6 +900,7 @@ export class CalendarWeekViewComponent
900
900
} ) ;
901
901
this . resizeStarted (
902
902
allDayEventsContainer ,
903
+ allDayEvent ,
903
904
this . getDayColumnWidth ( allDayEventsContainer )
904
905
) ;
905
906
}
@@ -949,27 +950,15 @@ export class CalendarWeekViewComponent
949
950
allDayEvent . offset = currentResize . originalOffset ;
950
951
allDayEvent . span = currentResize . originalSpan ;
951
952
952
- let newStart : Date = allDayEvent . event . start ;
953
- let newEnd : Date = allDayEvent . event . end || allDayEvent . event . start ;
954
- if ( allDayEventResizingBeforeStart ) {
955
- newStart = addDaysWithExclusions (
956
- this . dateAdapter ,
957
- newStart ,
958
- daysDiff ,
959
- this . excludeDays
960
- ) ;
961
- } else {
962
- newEnd = addDaysWithExclusions (
963
- this . dateAdapter ,
964
- newEnd ,
965
- daysDiff ,
966
- this . excludeDays
967
- ) ;
968
- }
953
+ const newDates = this . getAllDayEventResizedDates (
954
+ allDayEvent . event ,
955
+ daysDiff ,
956
+ allDayEventResizingBeforeStart
957
+ ) ;
969
958
970
959
this . eventTimesChanged . emit ( {
971
- newStart,
972
- newEnd,
960
+ newStart : newDates . start ,
961
+ newEnd : newDates . end ,
973
962
event : allDayEvent . event ,
974
963
type : CalendarEventTimesChangedEventType . Resize ,
975
964
} ) ;
@@ -1422,15 +1411,87 @@ export class CalendarWeekViewComponent
1422
1411
return newEventDates ;
1423
1412
}
1424
1413
1425
- protected resizeStarted ( eventsContainer : HTMLElement , minWidth ?: number ) {
1414
+ protected resizeStarted (
1415
+ eventsContainer : HTMLElement ,
1416
+ event : WeekViewTimeEvent | WeekViewAllDayEvent ,
1417
+ dayWidth ?: number
1418
+ ) {
1426
1419
this . dayColumnWidth = this . getDayColumnWidth ( eventsContainer ) ;
1427
- const resizeHelper : CalendarResizeHelper = new CalendarResizeHelper (
1420
+ const resizeHelper = new CalendarResizeHelper (
1428
1421
eventsContainer ,
1429
- minWidth ,
1422
+ dayWidth ,
1430
1423
this . rtl
1431
1424
) ;
1432
- this . validateResize = ( { rectangle, edges } ) =>
1433
- resizeHelper . validateResize ( { rectangle : { ...rectangle } , edges } ) ;
1425
+ this . validateResize = ( { rectangle, edges } ) => {
1426
+ const isWithinBoundary = resizeHelper . validateResize ( {
1427
+ rectangle : { ...rectangle } ,
1428
+ edges,
1429
+ } ) ;
1430
+
1431
+ if ( isWithinBoundary && this . validateEventTimesChanged ) {
1432
+ let newEventDates ;
1433
+ if ( ! dayWidth ) {
1434
+ newEventDates = this . getTimeEventResizedDates ( event . event , {
1435
+ rectangle,
1436
+ edges,
1437
+ } ) ;
1438
+ } else {
1439
+ const modifier = this . rtl ? - 1 : 1 ;
1440
+ if ( typeof edges . left !== 'undefined' ) {
1441
+ const diff = Math . round ( + edges . left / dayWidth ) * modifier ;
1442
+ newEventDates = this . getAllDayEventResizedDates (
1443
+ event . event ,
1444
+ diff ,
1445
+ ! this . rtl
1446
+ ) ;
1447
+ } else {
1448
+ const diff = Math . round ( + edges . right / dayWidth ) * modifier ;
1449
+ newEventDates = this . getAllDayEventResizedDates (
1450
+ event . event ,
1451
+ diff ,
1452
+ this . rtl
1453
+ ) ;
1454
+ }
1455
+ }
1456
+ return this . validateEventTimesChanged ( {
1457
+ type : CalendarEventTimesChangedEventType . Resize ,
1458
+ event : event . event ,
1459
+ newStart : newEventDates . start ,
1460
+ newEnd : newEventDates . end ,
1461
+ } ) ;
1462
+ }
1463
+
1464
+ return isWithinBoundary ;
1465
+ } ;
1434
1466
this . cdr . markForCheck ( ) ;
1435
1467
}
1468
+
1469
+ /**
1470
+ * @hidden
1471
+ */
1472
+ protected getAllDayEventResizedDates (
1473
+ event : CalendarEvent ,
1474
+ daysDiff : number ,
1475
+ beforeStart : boolean
1476
+ ) {
1477
+ let start : Date = event . start ;
1478
+ let end : Date = event . end || event . start ;
1479
+ if ( beforeStart ) {
1480
+ start = addDaysWithExclusions (
1481
+ this . dateAdapter ,
1482
+ start ,
1483
+ daysDiff ,
1484
+ this . excludeDays
1485
+ ) ;
1486
+ } else {
1487
+ end = addDaysWithExclusions (
1488
+ this . dateAdapter ,
1489
+ end ,
1490
+ daysDiff ,
1491
+ this . excludeDays
1492
+ ) ;
1493
+ }
1494
+
1495
+ return { start, end } ;
1496
+ }
1436
1497
}
0 commit comments