@@ -1400,4 +1400,132 @@ describe('CalendarDayViewComponent component', () => {
1400
1400
expect ( events ) . to . deep . equal ( [ fixture . componentInstance . events [ 0 ] ] ) ;
1401
1401
expect ( allDayEvents ) . to . deep . equal ( [ fixture . componentInstance . events [ 1 ] ] ) ;
1402
1402
} ) ;
1403
+
1404
+ it ( 'should drag an all day event onto the time grid' , ( ) => {
1405
+ const fixture : ComponentFixture <
1406
+ CalendarDayViewComponent
1407
+ > = TestBed . createComponent ( CalendarDayViewComponent ) ;
1408
+ fixture . componentInstance . viewDate = new Date ( '2018-07-29' ) ;
1409
+ fixture . componentInstance . events = [
1410
+ {
1411
+ start : moment ( new Date ( '2018-07-29' ) )
1412
+ . startOf ( 'day' )
1413
+ . add ( 3 , 'hours' )
1414
+ . toDate ( ) ,
1415
+ end : moment ( new Date ( '2018-07-29' ) )
1416
+ . startOf ( 'day' )
1417
+ . add ( 18 , 'hours' )
1418
+ . toDate ( ) ,
1419
+ title : 'foo' ,
1420
+ draggable : true ,
1421
+ allDay : true
1422
+ }
1423
+ ] ;
1424
+ fixture . componentInstance . snapDraggedEvents = false ;
1425
+ fixture . componentInstance . ngOnChanges ( { viewDate : { } , events : { } } ) ;
1426
+ fixture . detectChanges ( ) ;
1427
+ document . body . appendChild ( fixture . nativeElement ) ;
1428
+ const event = fixture . nativeElement . querySelector (
1429
+ '.cal-all-day-events mwl-calendar-all-day-event'
1430
+ ) ;
1431
+ const rect : ClientRect = event . getBoundingClientRect ( ) ;
1432
+ let dragEvent : CalendarEventTimesChangedEvent ;
1433
+ fixture . componentInstance . eventTimesChanged . subscribe ( e => {
1434
+ dragEvent = e ;
1435
+ } ) ;
1436
+ triggerDomEvent ( 'mousedown' , event , {
1437
+ clientX : rect . left ,
1438
+ clientY : rect . top
1439
+ } ) ;
1440
+ fixture . detectChanges ( ) ;
1441
+ const hourSegment = fixture . nativeElement . querySelectorAll (
1442
+ 'mwl-calendar-day-view-hour-segment'
1443
+ ) [ 3 ] ;
1444
+ const hourSegmentPosition = hourSegment . getBoundingClientRect ( ) ;
1445
+ triggerDomEvent ( 'mousemove' , hourSegment , {
1446
+ clientX : hourSegmentPosition . left ,
1447
+ clientY : hourSegmentPosition . top
1448
+ } ) ;
1449
+ fixture . detectChanges ( ) ;
1450
+ triggerDomEvent ( 'mouseup' , hourSegment , {
1451
+ clientX : hourSegmentPosition . left ,
1452
+ clientY : hourSegmentPosition . top
1453
+ } ) ;
1454
+ fixture . detectChanges ( ) ;
1455
+ fixture . destroy ( ) ;
1456
+ expect ( dragEvent ) . to . deep . equal ( {
1457
+ type : 'drop' ,
1458
+ allDay : false ,
1459
+ event : fixture . componentInstance . events [ 0 ] ,
1460
+ newStart : moment ( new Date ( '2018-07-29' ) )
1461
+ . startOf ( 'day' )
1462
+ . add ( 90 , 'minutes' )
1463
+ . toDate ( )
1464
+ } ) ;
1465
+ } ) ;
1466
+
1467
+ it ( 'should drag a time event onto the all day events' , ( ) => {
1468
+ const fixture : ComponentFixture <
1469
+ CalendarDayViewComponent
1470
+ > = TestBed . createComponent ( CalendarDayViewComponent ) ;
1471
+ fixture . componentInstance . viewDate = new Date ( '2018-07-29' ) ;
1472
+ fixture . componentInstance . events = [
1473
+ {
1474
+ start : moment ( new Date ( '2018-07-29' ) )
1475
+ . startOf ( 'day' )
1476
+ . add ( 3 , 'hours' )
1477
+ . toDate ( ) ,
1478
+ end : moment ( new Date ( '2018-07-29' ) )
1479
+ . startOf ( 'day' )
1480
+ . add ( 18 , 'hours' )
1481
+ . toDate ( ) ,
1482
+ title : 'foo' ,
1483
+ draggable : true ,
1484
+ allDay : false
1485
+ } ,
1486
+ {
1487
+ start : new Date ( '2018-07-29' ) ,
1488
+ allDay : true ,
1489
+ title : 'bar'
1490
+ }
1491
+ ] ;
1492
+ fixture . componentInstance . snapDraggedEvents = false ;
1493
+ fixture . componentInstance . ngOnChanges ( { viewDate : { } , events : { } } ) ;
1494
+ fixture . detectChanges ( ) ;
1495
+ document . body . appendChild ( fixture . nativeElement ) ;
1496
+ const event = fixture . nativeElement . querySelector ( '.cal-event-container' ) ;
1497
+ const rect : ClientRect = event . getBoundingClientRect ( ) ;
1498
+ let dragEvent : CalendarEventTimesChangedEvent ;
1499
+ fixture . componentInstance . eventTimesChanged . subscribe ( e => {
1500
+ dragEvent = e ;
1501
+ } ) ;
1502
+ triggerDomEvent ( 'mousedown' , event , {
1503
+ clientX : rect . left ,
1504
+ clientY : rect . top
1505
+ } ) ;
1506
+ fixture . detectChanges ( ) ;
1507
+ const allDayEvents = fixture . nativeElement . querySelector (
1508
+ '.cal-all-day-events'
1509
+ ) ;
1510
+ const allDayEventsPosition = allDayEvents . getBoundingClientRect ( ) ;
1511
+ triggerDomEvent ( 'mousemove' , allDayEvents , {
1512
+ clientX : allDayEventsPosition . left ,
1513
+ clientY : allDayEventsPosition . top
1514
+ } ) ;
1515
+ fixture . detectChanges ( ) ;
1516
+ triggerDomEvent ( 'mouseup' , allDayEvents , {
1517
+ clientX : allDayEventsPosition . left ,
1518
+ clientY : allDayEventsPosition . top
1519
+ } ) ;
1520
+ fixture . detectChanges ( ) ;
1521
+ fixture . destroy ( ) ;
1522
+ expect ( dragEvent ) . to . deep . equal ( {
1523
+ type : 'drop' ,
1524
+ allDay : true ,
1525
+ event : fixture . componentInstance . events [ 0 ] ,
1526
+ newStart : moment ( new Date ( '2018-07-29' ) )
1527
+ . startOf ( 'day' )
1528
+ . toDate ( )
1529
+ } ) ;
1530
+ } ) ;
1403
1531
} ) ;
0 commit comments