@@ -1600,6 +1600,66 @@ describe('calendarWeekView component', () => {
1600
1600
} ) ;
1601
1601
} ) ;
1602
1602
1603
+ it ( 'should drag time events back to their original position while snapping to a grid' , ( ) => {
1604
+ const fixture : ComponentFixture <
1605
+ CalendarWeekViewComponent
1606
+ > = TestBed . createComponent ( CalendarWeekViewComponent ) ;
1607
+ fixture . componentInstance . viewDate = new Date ( '2018-07-29' ) ;
1608
+ const originalEvent = {
1609
+ start : moment ( new Date ( '2018-07-29' ) )
1610
+ . startOf ( 'day' )
1611
+ . add ( 3 , 'hours' )
1612
+ . toDate ( ) ,
1613
+ end : moment ( new Date ( '2018-07-29' ) )
1614
+ . startOf ( 'day' )
1615
+ . add ( 5 , 'hours' )
1616
+ . toDate ( ) ,
1617
+ title : 'foo' ,
1618
+ draggable : true
1619
+ } ;
1620
+ fixture . componentInstance . events = [ originalEvent ] ;
1621
+ fixture . componentInstance . ngOnChanges ( { viewDate : { } , events : { } } ) ;
1622
+ fixture . detectChanges ( ) ;
1623
+ document . body . appendChild ( fixture . nativeElement ) ;
1624
+ const event = fixture . nativeElement . querySelector ( '.cal-event-container' ) ;
1625
+ const rect : ClientRect = event . getBoundingClientRect ( ) ;
1626
+ let dragEvent : CalendarEventTimesChangedEvent ;
1627
+ fixture . componentInstance . eventTimesChanged . subscribe ( e => {
1628
+ dragEvent = e ;
1629
+ } ) ;
1630
+ triggerDomEvent ( 'mousedown' , event , {
1631
+ clientX : rect . right ,
1632
+ clientY : rect . bottom
1633
+ } ) ;
1634
+ fixture . detectChanges ( ) ;
1635
+ triggerDomEvent ( 'mousemove' , event , {
1636
+ clientX : rect . right ,
1637
+ clientY : rect . bottom + 95
1638
+ } ) ;
1639
+ fixture . detectChanges ( ) ;
1640
+ const updatedEvent1 = fixture . nativeElement . querySelector (
1641
+ '.cal-event-container'
1642
+ ) ;
1643
+ expect ( updatedEvent1 . getBoundingClientRect ( ) . top ) . to . equal ( rect . top + 90 ) ;
1644
+ triggerDomEvent ( 'mousemove' , event , {
1645
+ clientX : rect . right ,
1646
+ clientY : rect . bottom
1647
+ } ) ;
1648
+ fixture . detectChanges ( ) ;
1649
+ const updatedEvent2 = fixture . nativeElement . querySelector (
1650
+ '.cal-event-container'
1651
+ ) ;
1652
+ expect ( updatedEvent2 . getBoundingClientRect ( ) . top ) . to . equal ( rect . top ) ;
1653
+ triggerDomEvent ( 'mouseup' , event , {
1654
+ clientX : rect . right ,
1655
+ clientY : rect . bottom
1656
+ } ) ;
1657
+ fixture . detectChanges ( ) ;
1658
+ fixture . destroy ( ) ;
1659
+ expect ( dragEvent . newStart ) . to . deep . equal ( originalEvent . start ) ;
1660
+ expect ( dragEvent . newEnd ) . to . deep . equal ( originalEvent . end ) ;
1661
+ } ) ;
1662
+
1603
1663
it ( 'should drag time events without end dates' , ( ) => {
1604
1664
const fixture : ComponentFixture <
1605
1665
CalendarWeekViewComponent
@@ -1733,6 +1793,60 @@ describe('calendarWeekView component', () => {
1733
1793
} ) ;
1734
1794
} ) ;
1735
1795
1796
+ it ( 'should drag time events back to their original position while not snapping to a grid' , ( ) => {
1797
+ const fixture : ComponentFixture <
1798
+ CalendarWeekViewComponent
1799
+ > = TestBed . createComponent ( CalendarWeekViewComponent ) ;
1800
+ fixture . componentInstance . viewDate = new Date ( '2018-07-29' ) ;
1801
+ const originalEvent = {
1802
+ start : moment ( new Date ( '2018-07-29' ) )
1803
+ . startOf ( 'day' )
1804
+ . add ( 3 , 'hours' )
1805
+ . toDate ( ) ,
1806
+ end : moment ( new Date ( '2018-07-29' ) )
1807
+ . startOf ( 'day' )
1808
+ . add ( 5 , 'hours' )
1809
+ . toDate ( ) ,
1810
+ title : 'foo' ,
1811
+ draggable : true
1812
+ } ;
1813
+ fixture . componentInstance . events = [ originalEvent ] ;
1814
+ fixture . componentInstance . snapDraggedEvents = false ;
1815
+ fixture . componentInstance . ngOnChanges ( { viewDate : { } , events : { } } ) ;
1816
+ fixture . detectChanges ( ) ;
1817
+ document . body . appendChild ( fixture . nativeElement ) ;
1818
+ const event = fixture . nativeElement . querySelector ( '.cal-event-container' ) ;
1819
+ const rect : ClientRect = event . getBoundingClientRect ( ) ;
1820
+ let dragEvent : CalendarEventTimesChangedEvent ;
1821
+ fixture . componentInstance . eventTimesChanged . subscribe ( e => {
1822
+ dragEvent = e ;
1823
+ } ) ;
1824
+ triggerDomEvent ( 'mousedown' , event , {
1825
+ clientX : rect . left ,
1826
+ clientY : rect . top
1827
+ } ) ;
1828
+ const timeEvents = fixture . nativeElement . querySelector ( '.cal-time-events' ) ;
1829
+ fixture . detectChanges ( ) ;
1830
+ triggerDomEvent ( 'mousemove' , timeEvents , {
1831
+ clientX : rect . left ,
1832
+ clientY : rect . top + 95
1833
+ } ) ;
1834
+ fixture . detectChanges ( ) ;
1835
+ triggerDomEvent ( 'mousemove' , timeEvents , {
1836
+ clientX : rect . left ,
1837
+ clientY : rect . top
1838
+ } ) ;
1839
+ fixture . detectChanges ( ) ;
1840
+ triggerDomEvent ( 'mouseup' , timeEvents , {
1841
+ clientX : rect . left ,
1842
+ clientY : rect . top
1843
+ } ) ;
1844
+ fixture . detectChanges ( ) ;
1845
+ fixture . destroy ( ) ;
1846
+ expect ( dragEvent . newStart ) . to . deep . equal ( originalEvent . start ) ;
1847
+ expect ( dragEvent . newEnd ) . to . deep . equal ( originalEvent . end ) ;
1848
+ } ) ;
1849
+
1736
1850
it ( 'should drag an all day event onto the time grid' , ( ) => {
1737
1851
const fixture : ComponentFixture <
1738
1852
CalendarWeekViewComponent
0 commit comments