Skip to content

Commit 7efa0ad

Browse files
authored
Merge pull request #7790 from IgniteUI/mkirova/fix-7788
fix(igxHierarchicalGrid): Move onDataPreLoad in base hierarchical gri…
2 parents 912f075 + c53b172 commit 7efa0ad

File tree

3 files changed

+42
-16
lines changed

3 files changed

+42
-16
lines changed

projects/igniteui-angular/src/lib/grids/hierarchical-grid/hierarchical-grid-base.directive.ts

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@ import {
1010
Input,
1111
ViewChild,
1212
TemplateRef,
13-
Directive
13+
Directive,
14+
Output,
15+
EventEmitter
1416
} from '@angular/core';
1517
import { IgxGridBaseDirective, IgxGridTransaction } from '../grid-base.directive';
1618
import { GridBaseAPIService } from '../api.service';
@@ -29,6 +31,7 @@ import { IgxColumnResizingService } from '../resizing/resizing.service';
2931
import { GridType } from '../common/grid.interface';
3032
import { IgxColumnGroupComponent } from '../columns/column-group.component';
3133
import { IgxColumnComponent } from '../columns/column.component';
34+
import { IForOfState } from '../../directives/for-of/for_of.directive';
3235

3336
export const IgxHierarchicalTransactionServiceFactory = {
3437
provide: IgxGridTransaction,
@@ -59,6 +62,17 @@ export class IgxHierarchicalGridBaseDirective extends IgxGridBaseDirective {
5962
@Input()
6063
public showExpandAll = false;
6164

65+
/**
66+
* Emitted when a new chunk of data is loaded from virtualization.
67+
* @example
68+
* ```typescript
69+
* <igx-hierarchical-grid [id]="'igx-grid-1'" [data]="Data" [autoGenerate]="true" (onDataPreLoad)="handleEvent()">
70+
* </igx-hierarchical-grid>
71+
* ```
72+
*/
73+
@Output()
74+
public onDataPreLoad = new EventEmitter<IForOfState>();
75+
6276
/**
6377
* @hidden
6478
*/

projects/igniteui-angular/src/lib/grids/hierarchical-grid/hierarchical-grid.component.ts

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,7 @@ import {
1414
AfterContentInit,
1515
OnInit,
1616
OnDestroy,
17-
DoCheck,
18-
EventEmitter,
19-
Output
17+
DoCheck
2018
} from '@angular/core';
2119
import { IgxGridBaseDirective } from '../grid-base.directive';
2220
import { GridBaseAPIService } from '../api.service';
@@ -32,7 +30,6 @@ import { IgxHierarchicalGridBaseDirective } from './hierarchical-grid-base.direc
3230
import { takeUntil } from 'rxjs/operators';
3331
import { IgxTemplateOutletDirective } from '../../directives/template-outlet/template_outlet.directive';
3432
import { IgxGridSelectionService, IgxGridCRUDService } from '../selection/selection.service';
35-
import { IForOfState } from '../../directives/for-of/for_of.directive';
3633
import { IgxTransactionService } from '../../services/public_api';
3734
import { IgxForOfSyncService, IgxForOfScrollSyncService } from '../../directives/for-of/for_of.sync.service';
3835
import { GridType } from '../common/grid.interface';
@@ -142,17 +139,6 @@ export class IgxHierarchicalGridComponent extends IgxHierarchicalGridBaseDirecti
142139
return this._filteredData;
143140
}
144141

145-
/**
146-
* Emitted when a new chunk of data is loaded from virtualization.
147-
* @example
148-
* ```typescript
149-
* <igx-hierarchical-grid [id]="'igx-grid-1'" [data]="Data" [autoGenerate]="true" (onDataPreLoad)="handleEvent()">
150-
* </igx-hierarchical-grid>
151-
* ```
152-
*/
153-
@Output()
154-
public onDataPreLoad = new EventEmitter<IForOfState>();
155-
156142
/**
157143
* Gets/Sets the total number of records in the data source.
158144
* @remarks

projects/igniteui-angular/src/lib/grids/hierarchical-grid/hierarchical-grid.virtualization.spec.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -369,6 +369,32 @@ describe('IgxHierarchicalGrid Virtualization #hGrid', () => {
369369

370370
expect(hierarchicalGrid.verticalScrollContainer.getScroll().children[0].offsetHeight).toEqual(561);
371371
});
372+
373+
it('should emit onScroll and onDataPreLoad on row island when child grid is scrolled.', async() => {
374+
const ri = fixture.componentInstance.rowIsland;
375+
const firstRow = hierarchicalGrid.dataRowList.toArray()[0];
376+
(firstRow.nativeElement.children[0] as HTMLElement).click();
377+
fixture.detectChanges();
378+
379+
const childGrid = hierarchicalGrid.hgridAPI.getChildGrids(false)[0];
380+
const verticalScroll = childGrid.verticalScrollContainer;
381+
const elem = verticalScroll['scrollComponent'].elementRef.nativeElement;
382+
383+
384+
spyOn(ri.onScroll, 'emit').and.callThrough();
385+
spyOn(ri.onDataPreLoad, 'emit').and.callThrough();
386+
387+
388+
// scroll down
389+
elem.scrollTop = 400;
390+
fixture.detectChanges();
391+
fixture.componentRef.hostView.detectChanges();
392+
await wait();
393+
fixture.detectChanges();
394+
395+
expect(ri.onScroll.emit).toHaveBeenCalled();
396+
expect(ri.onDataPreLoad.emit).toHaveBeenCalled();
397+
});
372398
});
373399

374400
describe('IgxHierarchicalGrid Virtualization Custom Scenarios #hGrid', () => {

0 commit comments

Comments
 (0)