@@ -14,6 +14,7 @@ describe('draggable directive', () => {
14
14
mwlDraggable
15
15
[dragAxis]="dragAxis"
16
16
[snapGrid]="snapGrid"
17
+ [ghostDragEnabled]="ghostDragEnabled"
17
18
(dragStart)="dragStart($event)"
18
19
(dragging)="dragging($event)"
19
20
(dragEnd)="dragEnd($event)">
@@ -28,6 +29,7 @@ describe('draggable directive', () => {
28
29
public dragEnd : sinon . SinonSpy = sinon . spy ( ) ;
29
30
public dragAxis : any = { x : true , y : true } ;
30
31
public snapGrid : any = { } ;
32
+ public ghostDragEnabled : boolean = true ;
31
33
32
34
}
33
35
@@ -154,4 +156,38 @@ describe('draggable directive', () => {
154
156
expect ( fixture . componentInstance . dragEnd ) . to . have . been . calledWith ( { x : 12 , y : 10 } ) ;
155
157
} ) ;
156
158
159
+ it ( 'should snap all vertical and horizontal drags to a grid' , ( ) => {
160
+ fixture . componentInstance . snapGrid = { y : 10 , x : 10 } ;
161
+ fixture . detectChanges ( ) ;
162
+ const draggableElement : HTMLElement = fixture . componentInstance . draggable . element . nativeElement ;
163
+ triggerDomEvent ( 'mousedown' , draggableElement , { clientX : 10 , clientY : 5 } ) ;
164
+ triggerDomEvent ( 'mousemove' , draggableElement , { clientX : 12 , clientY : 7 } ) ;
165
+ expect ( fixture . componentInstance . dragging ) . to . have . been . calledWith ( { x : 0 , y : 0 } ) ;
166
+ triggerDomEvent ( 'mousemove' , draggableElement , { clientX : 18 , clientY : 14 } ) ;
167
+ expect ( fixture . componentInstance . dragging ) . to . have . been . calledWith ( { x : 0 , y : 0 } ) ;
168
+ triggerDomEvent ( 'mousemove' , draggableElement , { clientX : 20 , clientY : 15 } ) ;
169
+ expect ( fixture . componentInstance . dragging ) . to . have . been . calledWith ( { x : 10 , y : 10 } ) ;
170
+ triggerDomEvent ( 'mousemove' , draggableElement , { clientX : 22 , clientY : 16 } ) ;
171
+ expect ( fixture . componentInstance . dragging ) . to . have . been . calledWith ( { x : 10 , y : 10 } ) ;
172
+ triggerDomEvent ( 'mouseup' , draggableElement , { clientX : 22 , clientY : 16 } ) ;
173
+ expect ( fixture . componentInstance . dragEnd ) . to . have . been . calledWith ( { x : 10 , y : 10 } ) ;
174
+ } ) ;
175
+
176
+ it ( 'should disable the ghost dragging effect' , ( ) => {
177
+ fixture . componentInstance . ghostDragEnabled = false ;
178
+ fixture . detectChanges ( ) ;
179
+ const draggableElement : HTMLElement = fixture . componentInstance . draggable . element . nativeElement ;
180
+ triggerDomEvent ( 'mousedown' , draggableElement , { clientX : 5 , clientY : 10 } ) ;
181
+ expect ( fixture . componentInstance . dragStart ) . to . have . been . calledWith ( { x : 0 , y : 0 } ) ;
182
+ triggerDomEvent ( 'mousemove' , draggableElement , { clientX : 7 , clientY : 10 } ) ;
183
+ expect ( fixture . componentInstance . dragging ) . to . have . been . calledWith ( { x : 2 , y : 0 } ) ;
184
+ expect ( draggableElement . style . transform ) . not . to . ok ;
185
+ triggerDomEvent ( 'mousemove' , draggableElement , { clientX : 7 , clientY : 8 } ) ;
186
+ expect ( fixture . componentInstance . dragging ) . to . have . been . calledWith ( { x : 2 , y : - 2 } ) ;
187
+ expect ( draggableElement . style . transform ) . not . to . ok ;
188
+ triggerDomEvent ( 'mouseup' , draggableElement , { clientX : 7 , clientY : 8 } ) ;
189
+ expect ( fixture . componentInstance . dragEnd ) . to . have . been . calledWith ( { x : 2 , y : - 2 } ) ;
190
+ expect ( draggableElement . style . transform ) . not . to . ok ;
191
+ } ) ;
192
+
157
193
} ) ;
0 commit comments