@@ -5,6 +5,7 @@ import * as sinon from 'sinon';
5
5
import { triggerDomEvent } from './util' ;
6
6
import { DragAndDropModule } from '../src/index' ;
7
7
import { DraggableDirective } from '../src/draggable.directive' ;
8
+ import { st } from '@angular/core/src/render3' ;
8
9
9
10
describe ( 'droppable directive' , ( ) => {
10
11
@Component ( {
@@ -17,7 +18,8 @@ describe('droppable directive', () => {
17
18
(dragOver)="dragEvent('over', $event)"
18
19
(dragLeave)="dragEvent('leave', $event)"
19
20
(drop)="drop($event)"
20
- [dragOverClass]="dragOverClass">
21
+ [dragOverClass]="dragOverClass"
22
+ [dragActiveClass]="dragActiveClass">
21
23
Drop here
22
24
</div>
23
25
` ,
@@ -50,6 +52,7 @@ describe('droppable directive', () => {
50
52
foo : 'bar' ;
51
53
} ;
52
54
dragOverClass : string ;
55
+ dragActiveClass : string ;
53
56
}
54
57
55
58
beforeEach ( ( ) => {
@@ -166,6 +169,7 @@ describe('droppable directive', () => {
166
169
fixture . componentInstance . droppableElement . nativeElement ;
167
170
expect ( droppableElement . classList . contains ( 'drag-over' ) ) . to . be . false ;
168
171
triggerDomEvent ( 'mousedown' , draggableElement , { clientX : 5 , clientY : 10 } ) ;
172
+ triggerDomEvent ( 'mousemove' , draggableElement , { clientX : 5 , clientY : 10 } ) ;
169
173
expect ( droppableElement . classList . contains ( 'drag-over' ) ) . to . be . false ;
170
174
triggerDomEvent ( 'mousemove' , draggableElement , {
171
175
clientX : 5 ,
@@ -190,4 +194,24 @@ describe('droppable directive', () => {
190
194
fixture . componentInstance . dragEnd
191
195
) ;
192
196
} ) ;
197
+
198
+ it ( 'should add a class to the droppable element when an element is being dragged anywhere' , ( ) => {
199
+ fixture . componentInstance . dragActiveClass = 'drag-active' ;
200
+ fixture . detectChanges ( ) ;
201
+ const draggableElement : HTMLElement =
202
+ fixture . componentInstance . draggable . element . nativeElement ;
203
+ const droppableElement : HTMLElement =
204
+ fixture . componentInstance . droppableElement . nativeElement ;
205
+ expect ( droppableElement . classList . contains ( 'drag-active' ) ) . to . be . false ;
206
+ triggerDomEvent ( 'mousedown' , draggableElement , { clientX : 5 , clientY : 10 } ) ;
207
+ triggerDomEvent ( 'mousemove' , draggableElement , { clientX : 5 , clientY : 10 } ) ;
208
+ expect ( droppableElement . classList . contains ( 'drag-active' ) ) . to . be . true ;
209
+ triggerDomEvent ( 'mousemove' , draggableElement , {
210
+ clientX : 5 ,
211
+ clientY : 100
212
+ } ) ;
213
+ expect ( droppableElement . classList . contains ( 'drag-active' ) ) . to . be . true ;
214
+ triggerDomEvent ( 'mouseup' , draggableElement , { clientX : 5 , clientY : 120 } ) ;
215
+ expect ( droppableElement . classList . contains ( 'drag-active' ) ) . to . be . false ;
216
+ } ) ;
193
217
} ) ;
0 commit comments