Skip to content

Commit 1123d7d

Browse files
committed
test(row-drag): Adding a test about custom ghost #6081
1 parent 3197c63 commit 1123d7d

File tree

1 file changed

+81
-0
lines changed

1 file changed

+81
-0
lines changed

projects/igniteui-angular/src/lib/grids/grid/row-drag.directive.spec.ts

+81
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ describe('IgxGrid - Row Drag Tests #grid', () => {
4444
TestBed.configureTestingModule({
4545
declarations: [
4646
IgxGridRowDraggableComponent,
47+
IgxGridRowCustomGhostDraggableComponent,
4748
IgxGridFeaturesRowDragComponent,
4849
IgxHierarchicalGridTestComponent,
4950
IgxTreeGridTestComponent
@@ -189,6 +190,27 @@ describe('IgxGrid - Row Drag Tests #grid', () => {
189190
ghostElements = document.getElementsByClassName(CSS_CLASS_GHOST_ROW);
190191
expect(ghostElements.length).toEqual(0);
191192
}));
193+
it('should correctly create custom ghost element', (async () => {
194+
fixture = TestBed.createComponent(IgxGridRowCustomGhostDraggableComponent);
195+
grid = fixture.componentInstance.instance;
196+
fixture.detectChanges();
197+
dragIndicatorElements = fixture.debugElement.queryAll(By.css('.' + CSS_CLASS_DRAG_INDICATOR));
198+
dragRows = fixture.debugElement.queryAll(By.directive(IgxRowDragDirective));
199+
const dragIndicatorElement = dragIndicatorElements[2].nativeElement;
200+
const startPoint: Point = UIInteractions.getPointFromElement(dragIndicatorElement);
201+
const movePoint: Point = UIInteractions.getPointFromElement(rows[4].nativeElement);
202+
const dropPoint: Point = UIInteractions.getPointFromElement(dropAreaElement);
203+
let ghostElements: HTMLCollection;
204+
205+
await pointerDown(dragIndicatorElement, startPoint, fixture);
206+
await pointerMove(dragIndicatorElement, movePoint, fixture);
207+
await pointerMove(dragIndicatorElement, dropPoint, fixture);
208+
ghostElements = document.getElementsByClassName(CSS_CLASS_GHOST_ROW);
209+
expect(ghostElements.length).toEqual(1);
210+
211+
const ghostText = document.getElementsByClassName(CSS_CLASS_GHOST_ROW)[0].textContent;
212+
expect(ghostText).toEqual(' Moving a row! ');
213+
}));
192214
it('should apply drag class to row upon row dragging', (async () => {
193215
const dragIndicatorElement = dragIndicatorElements[2].nativeElement;
194216
const row = rows[1];
@@ -960,6 +982,65 @@ export class IgxGridRowDraggableComponent extends DataParent {
960982
}
961983
}
962984

985+
@Component({
986+
template: `
987+
<igx-grid #grid
988+
[width]='width'
989+
[height]='height'
990+
primaryKey="ID"
991+
[data]="data"
992+
[autoGenerate]="true" (onColumnInit)="columnsCreated($event)" (onGroupingDone)="onGroupingDoneHandler($event)"
993+
[rowEditable]="true" [rowDraggable]="enableRowDraggable"
994+
>
995+
<ng-template let-data igxRowDragGhost>
996+
<div class="dragGhost">
997+
<igx-icon fontSet="material"></igx-icon>
998+
Moving a row!
999+
</div>
1000+
</ng-template>
1001+
</igx-grid>
1002+
<div #dropArea class="droppable-area" igxDrop (dropped)="onRowDrop($event)"
1003+
[ngStyle]="{width:'100px', height:'100px', backgroundColor:'red'}">
1004+
</div>
1005+
<div #nonDroppableArea class="non-droppable-area"
1006+
[ngStyle]="{width:'100px', height:'100px', backgroundColor:'yellow'}">
1007+
</div>
1008+
`
1009+
})
1010+
export class IgxGridRowCustomGhostDraggableComponent extends DataParent {
1011+
public width = '800px';
1012+
public height = null;
1013+
1014+
@ViewChild(IgxGridComponent, { read: IgxGridComponent, static: true })
1015+
public instance: IgxGridComponent;
1016+
1017+
@ViewChild('dropArea', { read: IgxDropDirective, static: true })
1018+
public dropArea: IgxDropDirective;
1019+
1020+
public enableSorting = false;
1021+
public enableFiltering = false;
1022+
public enableResizing = false;
1023+
public enableEditing = true;
1024+
public enableGrouping = true;
1025+
public enableRowEditing = true;
1026+
public enableRowDraggable = true;
1027+
public currentSortExpressions;
1028+
1029+
public columnsCreated(column: IgxColumnComponent) {
1030+
column.sortable = this.enableSorting;
1031+
column.filterable = this.enableFiltering;
1032+
column.resizable = this.enableResizing;
1033+
column.editable = this.enableEditing;
1034+
column.groupable = this.enableGrouping;
1035+
}
1036+
public onGroupingDoneHandler(sortExpr) {
1037+
this.currentSortExpressions = sortExpr;
1038+
}
1039+
public onRowDrop(args) {
1040+
args.cancel = true;
1041+
}
1042+
}
1043+
9631044
@Component({
9641045
template: `
9651046
<igx-grid #dragGrid

0 commit comments

Comments
 (0)