1
- import { Component , ElementRef , ViewChild } from '@angular/core' ;
1
+ import { Component , ElementRef , TemplateRef , ViewChild } from '@angular/core' ;
2
2
import { TestBed , ComponentFixture } from '@angular/core/testing' ;
3
3
import { expect } from 'chai' ;
4
4
import * as sinon from 'sinon' ;
@@ -20,16 +20,21 @@ describe('draggable directive', () => {
20
20
[dragCursor]="dragCursor"
21
21
[dragActiveClass]="dragActiveClass"
22
22
[ghostElementAppendTo]="ghostElementAppendTo"
23
+ [ghostElementTemplate]="ghostElementTemplate"
23
24
(dragPointerDown)="dragPointerDown($event)"
24
25
(dragStart)="dragStart($event)"
25
26
(dragging)="dragging($event)"
26
27
(dragEnd)="dragEnd($event)">
27
28
Drag me!
28
- </div>`
29
+ </div>
30
+ <ng-template #ghostElementTemplateRef><span>I'm being dragged!</span></ng-template>
31
+ `
29
32
} )
30
33
class TestComponent {
31
34
@ViewChild ( DraggableDirective ) draggable : DraggableDirective ;
32
35
@ViewChild ( 'draggableElement' ) draggableElement : ElementRef < HTMLDivElement > ;
36
+ @ViewChild ( 'ghostElementTemplateRef' )
37
+ ghostElementTemplateRef : TemplateRef < any > ;
33
38
dragPointerDown = sinon . spy ( ) ;
34
39
dragStart = sinon . spy ( ) ;
35
40
dragging = sinon . spy ( ) ;
@@ -42,6 +47,7 @@ describe('draggable directive', () => {
42
47
dragCursor = 'move' ;
43
48
dragActiveClass : string ;
44
49
ghostElementAppendTo : HTMLElement ;
50
+ ghostElementTemplate : TemplateRef < any > ;
45
51
}
46
52
47
53
beforeEach ( ( ) => {
@@ -697,4 +703,16 @@ describe('draggable directive', () => {
697
703
'auto'
698
704
) ;
699
705
} ) ;
706
+
707
+ it ( 'should use the contents of the ghost element template as the inner html of the ghost element' , ( ) => {
708
+ fixture . componentInstance . ghostElementTemplate =
709
+ fixture . componentInstance . ghostElementTemplateRef ;
710
+ fixture . detectChanges ( ) ;
711
+ const draggableElement =
712
+ fixture . componentInstance . draggableElement . nativeElement ;
713
+ triggerDomEvent ( 'mousedown' , draggableElement , { clientX : 5 , clientY : 10 } ) ;
714
+ triggerDomEvent ( 'mousemove' , draggableElement , { clientX : 7 , clientY : 10 } ) ;
715
+ const ghostElement = draggableElement . nextSibling as HTMLElement ;
716
+ expect ( ghostElement . innerHTML ) . to . equal ( "<span>I'm being dragged!</span>" ) ;
717
+ } ) ;
700
718
} ) ;
0 commit comments