@@ -356,7 +356,31 @@ describe('CdkDrag', () => {
356356
357357 // Assert the event like this, rather than `toHaveBeenCalledWith`, because Jasmine will
358358 // go into an infinite loop trying to stringify the event, if the test fails.
359- expect ( event ) . toEqual ( { source : fixture . componentInstance . dragInstance } ) ;
359+ expect ( event ) . toEqual ( {
360+ source : fixture . componentInstance . dragInstance ,
361+ distance : { x : jasmine . any ( Number ) , y : jasmine . any ( Number ) }
362+ } ) ;
363+ } ) ) ;
364+
365+ it ( 'should include the drag distance in the ended event' , fakeAsync ( ( ) => {
366+ const fixture = createComponent ( StandaloneDraggable ) ;
367+ fixture . detectChanges ( ) ;
368+
369+ dragElementViaMouse ( fixture , fixture . componentInstance . dragElement . nativeElement , 25 , 30 ) ;
370+ let event = fixture . componentInstance . endedSpy . calls . mostRecent ( ) . args [ 0 ] ;
371+
372+ expect ( event ) . toEqual ( {
373+ source : jasmine . anything ( ) ,
374+ distance : { x : 25 , y : 30 }
375+ } ) ;
376+
377+ dragElementViaMouse ( fixture , fixture . componentInstance . dragElement . nativeElement , 40 , 50 ) ;
378+ event = fixture . componentInstance . endedSpy . calls . mostRecent ( ) . args [ 0 ] ;
379+
380+ expect ( event ) . toEqual ( {
381+ source : jasmine . anything ( ) ,
382+ distance : { x : 40 , y : 50 }
383+ } ) ;
360384 } ) ) ;
361385
362386 it ( 'should emit when the user is moving the drag element' , ( ) => {
@@ -855,6 +879,30 @@ describe('CdkDrag', () => {
855879 expect ( dragElement . style . transform ) . toBe ( 'translate3d(150px, 300px, 0px)' ) ;
856880 } ) ) ;
857881
882+ it ( 'should include the dragged distance as the user is dragging' , fakeAsync ( ( ) => {
883+ const fixture = createComponent ( StandaloneDraggable ) ;
884+ fixture . detectChanges ( ) ;
885+ const dragElement = fixture . componentInstance . dragElement . nativeElement ;
886+ const spy = jasmine . createSpy ( 'moved spy' ) ;
887+ const subscription = fixture . componentInstance . dragInstance . moved . subscribe ( spy ) ;
888+
889+ startDraggingViaMouse ( fixture , dragElement ) ;
890+
891+ dispatchMouseEvent ( document , 'mousemove' , 50 , 100 ) ;
892+ fixture . detectChanges ( ) ;
893+
894+ let event = spy . calls . mostRecent ( ) . args [ 0 ] ;
895+ expect ( event . distance ) . toEqual ( { x : 50 , y : 100 } ) ;
896+
897+ dispatchMouseEvent ( document , 'mousemove' , 75 , 50 ) ;
898+ fixture . detectChanges ( ) ;
899+
900+ event = spy . calls . mostRecent ( ) . args [ 0 ] ;
901+ expect ( event . distance ) . toEqual ( { x : 75 , y : 50 } ) ;
902+
903+ subscription . unsubscribe ( ) ;
904+ } ) ) ;
905+
858906 } ) ;
859907
860908 describe ( 'draggable with a handle' , ( ) => {
@@ -1160,7 +1208,8 @@ describe('CdkDrag', () => {
11601208 item : firstItem ,
11611209 container : fixture . componentInstance . dropInstance ,
11621210 previousContainer : fixture . componentInstance . dropInstance ,
1163- isPointerOverContainer : true
1211+ isPointerOverContainer : true ,
1212+ distance : { x : jasmine . any ( Number ) , y : jasmine . any ( Number ) }
11641213 } ) ;
11651214
11661215 expect ( dragItems . map ( drag => drag . element . nativeElement . textContent ! . trim ( ) ) )
@@ -1187,6 +1236,24 @@ describe('CdkDrag', () => {
11871236 expect ( event . isPointerOverContainer ) . toBe ( true ) ;
11881237 } ) ) ;
11891238
1239+ it ( 'should expose the drag distance when an item is dropped' , fakeAsync ( ( ) => {
1240+ const fixture = createComponent ( DraggableInDropZone ) ;
1241+ fixture . detectChanges ( ) ;
1242+ const dragItems = fixture . componentInstance . dragItems ;
1243+ const firstItem = dragItems . first ;
1244+
1245+ dragElementViaMouse ( fixture , firstItem . element . nativeElement , 50 , 60 ) ;
1246+ flush ( ) ;
1247+ fixture . detectChanges ( ) ;
1248+
1249+ expect ( fixture . componentInstance . droppedSpy ) . toHaveBeenCalledTimes ( 1 ) ;
1250+
1251+ const event : CdkDragDrop < any > =
1252+ fixture . componentInstance . droppedSpy . calls . mostRecent ( ) . args [ 0 ] ;
1253+
1254+ expect ( event . distance ) . toEqual ( { x : 50 , y : 60 } ) ;
1255+ } ) ) ;
1256+
11901257 it ( 'should expose whether an item was dropped outside of a container' , fakeAsync ( ( ) => {
11911258 const fixture = createComponent ( DraggableInDropZone ) ;
11921259 fixture . detectChanges ( ) ;
@@ -1267,7 +1334,8 @@ describe('CdkDrag', () => {
12671334 item : firstItem ,
12681335 container : fixture . componentInstance . dropInstance ,
12691336 previousContainer : fixture . componentInstance . dropInstance ,
1270- isPointerOverContainer : false
1337+ isPointerOverContainer : false ,
1338+ distance : { x : jasmine . any ( Number ) , y : jasmine . any ( Number ) }
12711339 } ) ;
12721340
12731341 expect ( dragItems . map ( drag => drag . element . nativeElement . textContent ! . trim ( ) ) )
@@ -1325,7 +1393,8 @@ describe('CdkDrag', () => {
13251393 item : firstItem ,
13261394 container : fixture . componentInstance . dropInstance ,
13271395 previousContainer : fixture . componentInstance . dropInstance ,
1328- isPointerOverContainer : true
1396+ isPointerOverContainer : true ,
1397+ distance : { x : jasmine . any ( Number ) , y : jasmine . any ( Number ) }
13291398 } ) ;
13301399
13311400 expect ( dragItems . map ( drag => drag . element . nativeElement . textContent ! . trim ( ) ) )
@@ -1365,7 +1434,8 @@ describe('CdkDrag', () => {
13651434 item : firstItem ,
13661435 container : fixture . componentInstance . dropInstance ,
13671436 previousContainer : fixture . componentInstance . dropInstance ,
1368- isPointerOverContainer : true
1437+ isPointerOverContainer : true ,
1438+ distance : { x : jasmine . any ( Number ) , y : jasmine . any ( Number ) }
13691439 } ) ;
13701440
13711441 expect ( dragItems . map ( drag => drag . element . nativeElement . textContent ! . trim ( ) ) )
@@ -1401,7 +1471,8 @@ describe('CdkDrag', () => {
14011471 item : firstItem ,
14021472 container : fixture . componentInstance . dropInstance ,
14031473 previousContainer : fixture . componentInstance . dropInstance ,
1404- isPointerOverContainer : false
1474+ isPointerOverContainer : false ,
1475+ distance : { x : jasmine . any ( Number ) , y : jasmine . any ( Number ) }
14051476 } ) ;
14061477
14071478 expect ( dragItems . map ( drag => drag . element . nativeElement . textContent ! . trim ( ) ) )
@@ -2539,7 +2610,8 @@ describe('CdkDrag', () => {
25392610 item : firstItem ,
25402611 container : dropInstance ,
25412612 previousContainer : dropInstance ,
2542- isPointerOverContainer : true
2613+ isPointerOverContainer : true ,
2614+ distance : { x : jasmine . any ( Number ) , y : jasmine . any ( Number ) }
25432615 } ) ;
25442616
25452617 expect ( dragItems . map ( drag => drag . element . nativeElement . textContent ! . trim ( ) ) )
@@ -2595,7 +2667,8 @@ describe('CdkDrag', () => {
25952667 item,
25962668 container : fixture . componentInstance . dropInstances . toArray ( ) [ 1 ] ,
25972669 previousContainer : fixture . componentInstance . dropInstances . first ,
2598- isPointerOverContainer : true
2670+ isPointerOverContainer : true ,
2671+ distance : { x : jasmine . any ( Number ) , y : jasmine . any ( Number ) }
25992672 } ) ;
26002673 } ) ) ;
26012674
@@ -2697,7 +2770,8 @@ describe('CdkDrag', () => {
26972770 item : groups [ 0 ] [ 1 ] ,
26982771 container : dropInstances [ 1 ] ,
26992772 previousContainer : dropInstances [ 0 ] ,
2700- isPointerOverContainer : true
2773+ isPointerOverContainer : true ,
2774+ distance : { x : jasmine . any ( Number ) , y : jasmine . any ( Number ) }
27012775 } ) ;
27022776 } ) ) ;
27032777
@@ -2727,7 +2801,8 @@ describe('CdkDrag', () => {
27272801 item : groups [ 0 ] [ 1 ] ,
27282802 container : dropInstances [ 0 ] ,
27292803 previousContainer : dropInstances [ 0 ] ,
2730- isPointerOverContainer : false
2804+ isPointerOverContainer : false ,
2805+ distance : { x : jasmine . any ( Number ) , y : jasmine . any ( Number ) }
27312806 } ) ;
27322807 } ) ) ;
27332808
@@ -2757,7 +2832,8 @@ describe('CdkDrag', () => {
27572832 item : groups [ 0 ] [ 1 ] ,
27582833 container : dropInstances [ 0 ] ,
27592834 previousContainer : dropInstances [ 0 ] ,
2760- isPointerOverContainer : false
2835+ isPointerOverContainer : false ,
2836+ distance : { x : jasmine . any ( Number ) , y : jasmine . any ( Number ) }
27612837 } ) ;
27622838 } ) ) ;
27632839
@@ -2880,7 +2956,8 @@ describe('CdkDrag', () => {
28802956 item : groups [ 0 ] [ 1 ] ,
28812957 container : dropInstances [ 1 ] ,
28822958 previousContainer : dropInstances [ 0 ] ,
2883- isPointerOverContainer : true
2959+ isPointerOverContainer : true ,
2960+ distance : { x : jasmine . any ( Number ) , y : jasmine . any ( Number ) }
28842961 } ) ;
28852962 } ) ) ;
28862963
@@ -2906,7 +2983,8 @@ describe('CdkDrag', () => {
29062983 item : groups [ 0 ] [ 1 ] ,
29072984 container : dropInstances [ 1 ] ,
29082985 previousContainer : dropInstances [ 0 ] ,
2909- isPointerOverContainer : true
2986+ isPointerOverContainer : true ,
2987+ distance : { x : jasmine . any ( Number ) , y : jasmine . any ( Number ) }
29102988 } ) ;
29112989 } ) ) ;
29122990
@@ -2937,7 +3015,8 @@ describe('CdkDrag', () => {
29373015 item : groups [ 0 ] [ 1 ] ,
29383016 container : dropInstances [ 1 ] ,
29393017 previousContainer : dropInstances [ 0 ] ,
2940- isPointerOverContainer : true
3018+ isPointerOverContainer : true ,
3019+ distance : { x : jasmine . any ( Number ) , y : jasmine . any ( Number ) }
29413020 } ) ;
29423021 } ) ) ;
29433022
@@ -2972,7 +3051,8 @@ describe('CdkDrag', () => {
29723051 item,
29733052 container : fixture . componentInstance . dropInstances . toArray ( ) [ 1 ] ,
29743053 previousContainer : fixture . componentInstance . dropInstances . first ,
2975- isPointerOverContainer : true
3054+ isPointerOverContainer : true ,
3055+ distance : { x : jasmine . any ( Number ) , y : jasmine . any ( Number ) }
29763056 } ) ;
29773057
29783058 expect ( dropContainers [ 0 ] . contains ( item . element . nativeElement ) ) . toBe ( true ,
@@ -3068,7 +3148,8 @@ describe('CdkDrag', () => {
30683148 item : groups [ 0 ] [ 1 ] ,
30693149 container : dropInstances [ 0 ] ,
30703150 previousContainer : dropInstances [ 0 ] ,
3071- isPointerOverContainer : false
3151+ isPointerOverContainer : false ,
3152+ distance : { x : jasmine . any ( Number ) , y : jasmine . any ( Number ) }
30723153 } ) ;
30733154 } ) ) ;
30743155
@@ -3188,7 +3269,8 @@ describe('CdkDrag', () => {
31883269 item : groups [ 0 ] [ 1 ] ,
31893270 container : dropInstances [ 2 ] ,
31903271 previousContainer : dropInstances [ 0 ] ,
3191- isPointerOverContainer : false
3272+ isPointerOverContainer : false ,
3273+ distance : { x : jasmine . any ( Number ) , y : jasmine . any ( Number ) }
31923274 } ) ) ;
31933275
31943276 } ) ) ;
0 commit comments