From a5f044b621b22266b3601538ee257b48e3ec7582 Mon Sep 17 00:00:00 2001 From: 3phase Date: Wed, 9 Oct 2019 17:52:17 +0300 Subject: [PATCH 1/7] feat(grid): Exposes verticalScrollContainer elems as a public property #5069 --- .../src/lib/grids/grid/grid.component.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/projects/igniteui-angular/src/lib/grids/grid/grid.component.ts b/projects/igniteui-angular/src/lib/grids/grid/grid.component.ts index 09a3d625277..4b177a29d66 100644 --- a/projects/igniteui-angular/src/lib/grids/grid/grid.component.ts +++ b/projects/igniteui-angular/src/lib/grids/grid/grid.component.ts @@ -340,6 +340,17 @@ export class IgxGridComponent extends IgxGridBaseComponent implements IGridDataB } } + /** + * Returns a complete list of the elements in the current vertical dataview. + * ```typescript + * const dataView = this.grid.dataView; + * ``` + * @memberof IgxGridComponent + */ + get dataView(): any { + return this.verticalScrollContainer.igxForOf; + } + /** *@hidden */ From 00b2e93f29d9d1537a4be2992bdd3316d9de166e Mon Sep 17 00:00:00 2001 From: 3phase Date: Thu, 10 Oct 2019 10:52:25 +0300 Subject: [PATCH 2/7] feat(grid): Moves dataView in grid-base and refactors all uses #5069 --- .../src/lib/grids/common/grid.interface.ts | 1 + .../src/lib/grids/grid-base.component.ts | 41 ++++++++++++------- .../lib/grids/grid-mrl-navigation.service.ts | 4 +- .../src/lib/grids/grid-navigation.service.ts | 14 +++---- .../grids/grid/grid-cell-selection.spec.ts | 8 ++-- .../lib/grids/grid/grid-keyBoardNav.spec.ts | 4 +- .../src/lib/grids/grid/grid-summary.spec.ts | 12 +++--- .../src/lib/grids/grid/grid.component.ts | 13 +----- .../src/lib/grids/grid/grid.groupby.spec.ts | 4 +- .../lib/grids/grid/groupby-row.component.ts | 2 +- .../hierarchical-grid-navigation.service.ts | 22 +++++----- .../hierarchical-grid.component.ts | 6 +-- .../hierarchical-grid.integration.spec.ts | 32 +++++++-------- .../hierarchical-grid.navigation.spec.ts | 8 ++-- .../hierarchical-grid.spec.ts | 4 +- .../hierarchical-grid.virtualization.spec.ts | 2 +- .../tree-grid-multi-cell-selection.spec.ts | 4 +- .../tree-grid/tree-grid-summaries.spec.ts | 2 +- .../grids/tree-grid/tree-grid.component.ts | 6 +-- 19 files changed, 95 insertions(+), 94 deletions(-) diff --git a/projects/igniteui-angular/src/lib/grids/common/grid.interface.ts b/projects/igniteui-angular/src/lib/grids/common/grid.interface.ts index 6bae484aec3..733fdd66e6c 100644 --- a/projects/igniteui-angular/src/lib/grids/common/grid.interface.ts +++ b/projects/igniteui-angular/src/lib/grids/common/grid.interface.ts @@ -24,6 +24,7 @@ export interface GridType { pinnedColumns: any; summariesRowList: any; headerContainer: any; + dataView: any; rowInEditMode: any; rowEditTabs: any; diff --git a/projects/igniteui-angular/src/lib/grids/grid-base.component.ts b/projects/igniteui-angular/src/lib/grids/grid-base.component.ts index cbc146a7c32..a12c7f84461 100644 --- a/projects/igniteui-angular/src/lib/grids/grid-base.component.ts +++ b/projects/igniteui-angular/src/lib/grids/grid-base.component.ts @@ -4630,8 +4630,8 @@ export abstract class IgxGridBaseComponent extends DisplayDensityBase implements public hasVerticalSroll() { if (this._init) { return false; } const isScrollable = this.verticalScrollContainer ? this.verticalScrollContainer.isScrollable() : false; - return !!(this.calcWidth && this.verticalScrollContainer.igxForOf && - this.verticalScrollContainer.igxForOf.length > 0 && + return !!(this.calcWidth && this.dataView && + this.dataView.length > 0 && isScrollable); } @@ -4997,6 +4997,17 @@ export abstract class IgxGridBaseComponent extends DisplayDensityBase implements return 0; } + /** + * Returns a complete list of the elements in the current vertical dataview. + * ```typescript + * const dataView = this.grid.dataView; + * ``` + * @memberof IgxGridComponent + */ + get dataView(): any { + return this.verticalScrollContainer.igxForOf; + } + /** * Get current selection state. * Returns an array with selected rows' IDs (primaryKey or rowData) @@ -5215,7 +5226,7 @@ export abstract class IgxGridBaseComponent extends DisplayDensityBase implements * If `headers` is enabled, it will use the column header (if any) instead of the column field. */ getSelectedData(formatters = false, headers = false) { - const source = this.verticalScrollContainer.igxForOf; + const source = this.dataView; return this.extractDataFromSelection(source, formatters, headers); } @@ -5284,12 +5295,12 @@ export abstract class IgxGridBaseComponent extends DisplayDensityBase implements * @memberof IgxGridBaseComponent */ public navigateTo(rowIndex: number, visibleColIndex = -1, cb: Function = null) { - if (rowIndex < 0 || rowIndex > this.verticalScrollContainer.igxForOf.length - 1 + if (rowIndex < 0 || rowIndex > this.dataView.length - 1 || (visibleColIndex !== -1 && this.columnList.map(col => col.visibleIndex).indexOf(visibleColIndex) === -1)) { return; } this.wheelHandler(); - if (this.verticalScrollContainer.igxForOf.slice(rowIndex, rowIndex + 1).find(rec => rec.expression || rec.childGridsData)) { + if (this.dataView.slice(rowIndex, rowIndex + 1).find(rec => rec.expression || rec.childGridsData)) { visibleColIndex = -1; } if (visibleColIndex === -1 || this.navigation.isColumnFullyVisible(visibleColIndex)) { @@ -5325,7 +5336,7 @@ export abstract class IgxGridBaseComponent extends DisplayDensityBase implements const colIndexes = callback ? columns.filter((col) => callback(col)).map(editCol => editCol.visibleIndex).sort((a, b) => a - b) : columns.map(editCol => editCol.visibleIndex).sort((a, b) => a - b); const nextCellIndex = colIndexes.find(index => index > curVisibleColIndex); - if (this.verticalScrollContainer.igxForOf.slice(currRowIndex, currRowIndex + 1) + if (this.dataView.slice(currRowIndex, currRowIndex + 1) .find(rec => !rec.expression && !rec.summaries && !rec.childGridsData) && nextCellIndex !== undefined) { return { rowIndex: currRowIndex, visibleColumnIndex: nextCellIndex }; } else { @@ -5357,7 +5368,7 @@ export abstract class IgxGridBaseComponent extends DisplayDensityBase implements const colIndexes = callback ? columns.filter((col) => callback(col)).map(editCol => editCol.visibleIndex).sort((a, b) => b - a) : columns.map(editCol => editCol.visibleIndex).sort((a, b) => b - a); const prevCellIndex = colIndexes.find(index => index < curVisibleColIndex); - if (this.verticalScrollContainer.igxForOf.slice(currRowIndex, currRowIndex + 1) + if (this.dataView.slice(currRowIndex, currRowIndex + 1) .find(rec => !rec.expression && !rec.summaries && !rec.childGridsData) && prevCellIndex !== undefined) { return { rowIndex: currRowIndex, visibleColumnIndex: prevCellIndex }; } else { @@ -5400,24 +5411,24 @@ export abstract class IgxGridBaseComponent extends DisplayDensityBase implements private getPrevDataRowIndex(currentRowIndex): number { if (currentRowIndex <= 0) { return currentRowIndex; } - const prevRow = this.verticalScrollContainer.igxForOf.slice(0, currentRowIndex).reverse() + const prevRow = this.dataView.slice(0, currentRowIndex).reverse() .find(rec => !rec.expression && !rec.summaries && !rec.childGridsData); - return prevRow ? this.verticalScrollContainer.igxForOf.indexOf(prevRow) : currentRowIndex; + return prevRow ? this.dataView.indexOf(prevRow) : currentRowIndex; } private getNextDataRowIndex(currentRowIndex): number { - if (currentRowIndex === this.verticalScrollContainer.igxForOf.length) { return currentRowIndex; } + if (currentRowIndex === this.dataView.length) { return currentRowIndex; } - const nextRow = this.verticalScrollContainer.igxForOf.slice(currentRowIndex + 1, this.verticalScrollContainer.igxForOf.length) + const nextRow = this.dataView.slice(currentRowIndex + 1, this.dataView.length) .find(rec => !rec.expression && !rec.summaries && !rec.childGridsData); - return nextRow ? this.verticalScrollContainer.igxForOf.indexOf(nextRow) : currentRowIndex; + return nextRow ? this.dataView.indexOf(nextRow) : currentRowIndex; } private isValidPosition(rowIndex, colIndex): boolean { const rows = this.summariesRowList.filter(s => s.index !== 0).concat(this.rowList.toArray()).length; const cols = this.columnList.filter(col => !col.columnGroup && col.visibleIndex >= 0).length; if (rows < 1 || cols < 1) { return false; } - if (rowIndex > -1 && rowIndex < this.verticalScrollContainer.igxForOf.length && + if (rowIndex > -1 && rowIndex < this.dataView.length && colIndex > - 1 && colIndex <= this.unpinnedColumns[this.unpinnedColumns.length - 1].visibleIndex) { return true; } @@ -5614,11 +5625,11 @@ export abstract class IgxGridBaseComponent extends DisplayDensityBase implements if (delayScrolling) { this.verticalScrollContainer.onDataChanged.pipe(first()).subscribe(() => { this.scrollDirective(this.verticalScrollContainer, - typeof (row) === 'number' ? row : this.verticalScrollContainer.igxForOf.indexOf(row)); + typeof (row) === 'number' ? row : this.dataView.indexOf(row)); }); } else { this.scrollDirective(this.verticalScrollContainer, - typeof (row) === 'number' ? row : this.verticalScrollContainer.igxForOf.indexOf(row)); + typeof (row) === 'number' ? row : this.dataView.indexOf(row)); } this.scrollToHorizontally(column); diff --git a/projects/igniteui-angular/src/lib/grids/grid-mrl-navigation.service.ts b/projects/igniteui-angular/src/lib/grids/grid-mrl-navigation.service.ts index 3eff15e7133..dac709b9091 100644 --- a/projects/igniteui-angular/src/lib/grids/grid-mrl-navigation.service.ts +++ b/projects/igniteui-angular/src/lib/grids/grid-mrl-navigation.service.ts @@ -249,7 +249,7 @@ export class IgxGridMRLNavigationService extends IgxGridNavigationService { moveNext = true; } const rowIndex = moveNext ? selectedNode.row + 1 : selectedNode.row; - if (rowIndex > this.grid.verticalScrollContainer.igxForOf.length - 1) { + if (rowIndex > this.grid.dataView.length - 1) { // end of rows reached. return; } @@ -469,7 +469,7 @@ export class IgxGridMRLNavigationService extends IgxGridNavigationService { } private _isGroupRecordAt(rowIndex: number) { - const record = this.grid.verticalScrollContainer.igxForOf[rowIndex]; + const record = this.grid.dataView[rowIndex]; return record.records && record.records.length; } diff --git a/projects/igniteui-angular/src/lib/grids/grid-navigation.service.ts b/projects/igniteui-angular/src/lib/grids/grid-navigation.service.ts index abaaeede32f..b1c12511d93 100644 --- a/projects/igniteui-angular/src/lib/grids/grid-navigation.service.ts +++ b/projects/igniteui-angular/src/lib/grids/grid-navigation.service.ts @@ -267,7 +267,7 @@ export class IgxGridNavigationService { (cells[cells.length - 1] as HTMLElement).focus(); } else { this.getFocusableGrid().nativeElement.focus({ preventScroll: true }); - this.grid.verticalScrollContainer.scrollTo(this.grid.verticalScrollContainer.igxForOf.length - 1); + this.grid.verticalScrollContainer.scrollTo(this.grid.dataView.length - 1); this.grid.verticalScrollContainer.onChunkLoad .pipe(first()).subscribe(() => { const cells = this.grid.nativeElement.querySelectorAll( @@ -315,7 +315,7 @@ export class IgxGridNavigationService { public navigateDown(rowElement, selectedNode: ISelectionNode) { const currentRowIndex = selectedNode.row; const visibleColumnIndex = selectedNode.column; - if (currentRowIndex === this.grid.verticalScrollContainer.igxForOf.length - 1 || + if (currentRowIndex === this.grid.dataView.length - 1 || (currentRowIndex === 0 && rowElement.tagName.toLowerCase() === 'igx-grid-summary-row')) { // check if this is rootSummary row return; @@ -389,7 +389,7 @@ export class IgxGridNavigationService { this.onKeydownEnd(rowIndex); } else { this.getFocusableGrid().nativeElement.focus({ preventScroll: true }); - this.grid.verticalScrollContainer.scrollTo(this.grid.verticalScrollContainer.igxForOf.length - 1); + this.grid.verticalScrollContainer.scrollTo(this.grid.dataView.length - 1); this.grid.verticalScrollContainer.onChunkLoad .pipe(first()).subscribe(() => { const rows = this.getAllRows(); @@ -405,7 +405,7 @@ export class IgxGridNavigationService { const verticalScroll = this.grid.verticalScrollContainer.getVerticalScroll(); if (verticalScroll.scrollHeight === 0 || verticalScroll.scrollTop === verticalScroll.scrollHeight - this.grid.verticalScrollContainer.igxForContainerSize) { - const rowIndex = this.grid.verticalScrollContainer.igxForOf.length - 1; + const rowIndex = this.grid.dataView.length - 1; const row = this.grid.nativeElement.querySelector(`[data-rowindex="${rowIndex}"]`) as HTMLElement; if (row && row.tagName.toLowerCase() === 'igx-grid-groupby-row') { row.focus(); @@ -414,10 +414,10 @@ export class IgxGridNavigationService { const isSummary = (row && row.tagName.toLowerCase() === 'igx-grid-summary-row') ? true : false; this.onKeydownEnd(rowIndex, isSummary); } else { - this.grid.verticalScrollContainer.scrollTo(this.grid.verticalScrollContainer.igxForOf.length - 1); + this.grid.verticalScrollContainer.scrollTo(this.grid.dataView.length - 1); this.grid.verticalScrollContainer.onChunkLoad .pipe(first()).subscribe(() => { - const rowIndex = this.grid.verticalScrollContainer.igxForOf.length - 1; + const rowIndex = this.grid.dataView.length - 1; const row = this.grid.nativeElement.querySelector(`[data-rowindex="${rowIndex}"]`) as HTMLElement; if (row && row.tagName.toLowerCase() === 'igx-grid-groupby-row') { row.focus(); @@ -447,7 +447,7 @@ export class IgxGridNavigationService { const rowEl = this.grid.rowList.find(row => row.index === rowIndex + 1) ? this.grid.rowList.find(row => row.index === rowIndex + 1) : this.grid.summariesRowList.find(row => row.index === rowIndex + 1); - if (rowIndex === this.grid.verticalScrollContainer.igxForOf.length - 1 && this.grid.rootSummariesEnabled) { + if (rowIndex === this.grid.dataView.length - 1 && this.grid.rootSummariesEnabled) { this.onKeydownHome(0, true); return; } diff --git a/projects/igniteui-angular/src/lib/grids/grid/grid-cell-selection.spec.ts b/projects/igniteui-angular/src/lib/grids/grid/grid-cell-selection.spec.ts index 28ca55b6fb9..4f36db382dc 100644 --- a/projects/igniteui-angular/src/lib/grids/grid/grid-cell-selection.spec.ts +++ b/projects/igniteui-angular/src/lib/grids/grid/grid-cell-selection.spec.ts @@ -293,7 +293,7 @@ describe('IgxGrid - Cell selection #grid', () => { GridSelectionFunctions.verifyCellSelected(firstCell); - grid.verticalScrollContainer.scrollTo(grid.verticalScrollContainer.igxForOf.length - 1); + grid.verticalScrollContainer.scrollTo(grid.dataView.length - 1); await wait(100); fix.detectChanges(); @@ -514,7 +514,7 @@ describe('IgxGrid - Cell selection #grid', () => { expect(selectionChangeSpy).toHaveBeenCalledTimes(0); expect(grid.getSelectedData()).toEqual(expectedData); - grid.verticalScrollContainer.scrollTo(grid.verticalScrollContainer.igxForOf.length - 1); + grid.verticalScrollContainer.scrollTo(grid.dataView.length - 1); await wait(100); fix.detectChanges(); @@ -538,7 +538,7 @@ describe('IgxGrid - Cell selection #grid', () => { expect(selectionChangeSpy).toHaveBeenCalledTimes(0); expect(grid.getSelectedData()).toEqual(expectedData); - grid.verticalScrollContainer.scrollTo(grid.verticalScrollContainer.igxForOf.length - 1); + grid.verticalScrollContainer.scrollTo(grid.dataView.length - 1); await wait(100); fix.detectChanges(); @@ -1040,7 +1040,7 @@ describe('IgxGrid - Cell selection #grid', () => { GridSelectionFunctions.verifyCellsRegionSelected(grid, 0, 0, 0, 0); GridSelectionFunctions.verifySelectedRange(grid, 0, 0, 0, 0); - grid.verticalScrollContainer.scrollTo(grid.verticalScrollContainer.igxForOf.length - 1); + grid.verticalScrollContainer.scrollTo(grid.dataView.length - 1); await wait(100); fix.detectChanges(); diff --git a/projects/igniteui-angular/src/lib/grids/grid/grid-keyBoardNav.spec.ts b/projects/igniteui-angular/src/lib/grids/grid/grid-keyBoardNav.spec.ts index df5082eef47..d5326063aee 100644 --- a/projects/igniteui-angular/src/lib/grids/grid/grid-keyBoardNav.spec.ts +++ b/projects/igniteui-angular/src/lib/grids/grid/grid-keyBoardNav.spec.ts @@ -981,7 +981,7 @@ describe('IgxGrid - Keyboard navigation #grid', () => { }); fix.detectChanges(); - grid.verticalScrollContainer.scrollTo(grid.verticalScrollContainer.igxForOf.length - 1); + grid.verticalScrollContainer.scrollTo(grid.dataView.length - 1); await wait(100); fix.detectChanges(); @@ -1009,7 +1009,7 @@ describe('IgxGrid - Keyboard navigation #grid', () => { }); fix.detectChanges(); - grid.verticalScrollContainer.scrollTo(grid.verticalScrollContainer.igxForOf.length - 1); + grid.verticalScrollContainer.scrollTo(grid.dataView.length - 1); await wait(100); fix.detectChanges(); diff --git a/projects/igniteui-angular/src/lib/grids/grid/grid-summary.spec.ts b/projects/igniteui-angular/src/lib/grids/grid/grid-summary.spec.ts index 362e715bd4d..1c87838582e 100644 --- a/projects/igniteui-angular/src/lib/grids/grid/grid-summary.spec.ts +++ b/projects/igniteui-angular/src/lib/grids/grid/grid-summary.spec.ts @@ -1389,7 +1389,7 @@ describe('IgxGrid - Summaries #grid', () => { }); fix.detectChanges(); - grid.verticalScrollContainer.scrollTo(grid.verticalScrollContainer.igxForOf.length - 1); + grid.verticalScrollContainer.scrollTo(grid.dataView.length - 1); await wait(100); fix.detectChanges(); @@ -1455,7 +1455,7 @@ describe('IgxGrid - Summaries #grid', () => { ['Count', 'Earliest', 'Latest'], ['9', 'Dec 18, 2007', 'Dec 9, 2017']); GridSummaryFunctions.verifyColumnSummaries(summaryRow, 4, ['Min', 'Max'], ['19', '50']); - grid.verticalScrollContainer.scrollTo(grid.verticalScrollContainer.igxForOf.length - 1); + grid.verticalScrollContainer.scrollTo(grid.dataView.length - 1); await wait(50); fix.detectChanges(); @@ -1485,7 +1485,7 @@ describe('IgxGrid - Summaries #grid', () => { GridSummaryFunctions.verifyColumnSummariesBySummaryRowIndex(fix, 0, 4, ['Min', 'Max'], ['19', '50']); GridSummaryFunctions.verifyColumnSummariesBySummaryRowIndex(fix, 0, 5, ['Count'], ['9']); - grid.verticalScrollContainer.scrollTo(grid.verticalScrollContainer.igxForOf.length - 1); + grid.verticalScrollContainer.scrollTo(grid.dataView.length - 1); await wait(50); fix.detectChanges(); GridSummaryFunctions.verifyColumnSummariesBySummaryRowIndex(fix, 18, 5, ['Count'], ['1']); @@ -1548,7 +1548,7 @@ describe('IgxGrid - Summaries #grid', () => { GridSummaryFunctions.verifyColumnSummariesBySummaryRowIndex(fix, 0, 2, ['Count'], ['8']); GridSummaryFunctions.verifyColumnSummariesBySummaryRowIndex(fix, 0, 4, ['Min', 'Max'], ['19', '50']); - grid.verticalScrollContainer.scrollTo(grid.verticalScrollContainer.igxForOf.length - 1); + grid.verticalScrollContainer.scrollTo(grid.dataView.length - 1); await wait(50); fix.detectChanges(); @@ -1617,7 +1617,7 @@ describe('IgxGrid - Summaries #grid', () => { GridSummaryFunctions.verifyColumnSummariesBySummaryRowIndex(fix, 4, 2, ['Count'], ['3']); GridSummaryFunctions.verifyColumnSummariesBySummaryRowIndex(fix, 4, 4, ['Min', 'Max'], ['19', '50']); - grid.verticalScrollContainer.scrollTo(grid.verticalScrollContainer.igxForOf.length - 1); + grid.verticalScrollContainer.scrollTo(grid.dataView.length - 1); await wait(50); fix.detectChanges(); @@ -1757,7 +1757,7 @@ describe('IgxGrid - Summaries #grid', () => { expect(groupRows[0].groupRow.value).toEqual(-1); expect(groupRows[1].groupRow.value).toEqual(19); - grid.verticalScrollContainer.scrollTo(grid.verticalScrollContainer.igxForOf.length - 1); + grid.verticalScrollContainer.scrollTo(grid.dataView.length - 1); await wait(50); fix.detectChanges(); diff --git a/projects/igniteui-angular/src/lib/grids/grid/grid.component.ts b/projects/igniteui-angular/src/lib/grids/grid/grid.component.ts index 4b177a29d66..c56306be442 100644 --- a/projects/igniteui-angular/src/lib/grids/grid/grid.component.ts +++ b/projects/igniteui-angular/src/lib/grids/grid/grid.component.ts @@ -340,17 +340,6 @@ export class IgxGridComponent extends IgxGridBaseComponent implements IGridDataB } } - /** - * Returns a complete list of the elements in the current vertical dataview. - * ```typescript - * const dataView = this.grid.dataView; - * ``` - * @memberof IgxGridComponent - */ - get dataView(): any { - return this.verticalScrollContainer.igxForOf; - } - /** *@hidden */ @@ -990,7 +979,7 @@ export class IgxGridComponent extends IgxGridBaseComponent implements IGridDataB }; - this.verticalScrollContainer.igxForOf.forEach(process); + this.dataView.forEach(process); return this.extractDataFromSelection(source, formatters, headers); } else { return super.getSelectedData(formatters, headers); diff --git a/projects/igniteui-angular/src/lib/grids/grid/grid.groupby.spec.ts b/projects/igniteui-angular/src/lib/grids/grid/grid.groupby.spec.ts index 8c870292433..c2c00c9ad9f 100644 --- a/projects/igniteui-angular/src/lib/grids/grid/grid.groupby.spec.ts +++ b/projects/igniteui-angular/src/lib/grids/grid/grid.groupby.spec.ts @@ -905,10 +905,10 @@ describe('IgxGrid - GroupBy #grid', () => { // verify virtualization states - should be in last chunk const virtState = grid.verticalScrollContainer.state; - expect(virtState.startIndex).toBe(grid.verticalScrollContainer.igxForOf.length - virtState.chunkSize); + expect(virtState.startIndex).toBe(grid.dataView.length - virtState.chunkSize); // verify last row is visible at bottom - const lastRow = grid.getRowByIndex(grid.verticalScrollContainer.igxForOf.length - 1); + const lastRow = grid.getRowByIndex(grid.dataView.length - 1); expect(lastRow.nativeElement.getBoundingClientRect().bottom).toBe(grid.tbody.nativeElement.getBoundingClientRect().bottom); }); diff --git a/projects/igniteui-angular/src/lib/grids/grid/groupby-row.component.ts b/projects/igniteui-angular/src/lib/grids/grid/groupby-row.component.ts index e8e96ecc011..33513cc53ef 100644 --- a/projects/igniteui-angular/src/lib/grids/grid/groupby-row.component.ts +++ b/projects/igniteui-angular/src/lib/grids/grid/groupby-row.component.ts @@ -274,7 +274,7 @@ export class IgxGridGroupByRowComponent { if (shift) { this.grid.navigation.performShiftTabKey(this.nativeElement, activeNode); } else { - if (this.index === this.grid.verticalScrollContainer.igxForOf.length - 1 && this.grid.rootSummariesEnabled) { + if (this.index === this.grid.dataView.length - 1 && this.grid.rootSummariesEnabled) { this.grid.navigation.onKeydownHome(0, true); } else { const orderedColumns = this.grid.navigation.gridOrderedColumns; diff --git a/projects/igniteui-angular/src/lib/grids/hierarchical-grid/hierarchical-grid-navigation.service.ts b/projects/igniteui-angular/src/lib/grids/hierarchical-grid/hierarchical-grid-navigation.service.ts index 4e5307a8b0a..160eb9d69a0 100644 --- a/projects/igniteui-angular/src/lib/grids/hierarchical-grid/hierarchical-grid-navigation.service.ts +++ b/projects/igniteui-angular/src/lib/grids/hierarchical-grid/hierarchical-grid-navigation.service.ts @@ -52,7 +52,7 @@ export class IgxHierarchicalGridNavigationService extends IgxGridNavigationServi return scrollHeight === 0 || Math.round(scrollTop + grid.verticalScrollContainer.igxForContainerSize) === scrollHeight; } private getIsChildAtIndex(index) { - return this.grid.isChildGridRecord(this.grid.verticalScrollContainer.igxForOf[index]); + return this.grid.isChildGridRecord(this.grid.dataView[index]); } public getCellElementByVisibleIndex(rowIndex, visibleColumnIndex, isSummary = false) { @@ -120,11 +120,11 @@ export class IgxHierarchicalGridNavigationService extends IgxGridNavigationServi super.navigateDown(rowElement, selectedNode); } } - } else if (currentRowIndex !== this.grid.verticalScrollContainer.igxForOf.length - 1) { + } else if (currentRowIndex !== this.grid.dataView.length - 1) { // scroll next in view super.navigateDown(rowElement, selectedNode); } else if (this.grid.parent !== null && - currentRowIndex === this.grid.verticalScrollContainer.igxForOf.length - 1) { + currentRowIndex === this.grid.dataView.length - 1) { // move to next row in sibling layout or in parent this.focusNext(visibleColumnIndex); } @@ -152,7 +152,7 @@ export class IgxHierarchicalGridNavigationService extends IgxGridNavigationServi public navigateBottom(visibleColumnIndex) { // handle scenario where last index is child grid // in that case focus cell in last data row - const lastIndex = this.grid.verticalScrollContainer.igxForOf.length - 1; + const lastIndex = this.grid.dataView.length - 1; if (this.getIsChildAtIndex(lastIndex)) { const targetIndex = lastIndex - 1; const scrTopPosition = this.grid.verticalScrollContainer.getScrollForIndex(targetIndex, true); @@ -189,7 +189,7 @@ export class IgxHierarchicalGridNavigationService extends IgxGridNavigationServi public goToLastCell() { // handle scenario where last index is child grid // in that case focus last cell in last data row - const lastIndex = this.grid.verticalScrollContainer.igxForOf.length - 1; + const lastIndex = this.grid.dataView.length - 1; if (this.getIsChildAtIndex(lastIndex)) { const targetIndex = lastIndex - 1; const scrTopPosition = this.grid.verticalScrollContainer.getScrollForIndex(targetIndex, true); @@ -269,7 +269,7 @@ export class IgxHierarchicalGridNavigationService extends IgxGridNavigationServi const isSummaryRow = selectedNode.isSummaryRow; const summaryRows = this.grid.summariesRowList.toArray(); const hasSummaries = summaryRows.length > 0; - const isLastDataRow = rowIndex === this.grid.verticalScrollContainer.igxForOf.length - 1; + const isLastDataRow = rowIndex === this.grid.dataView.length - 1; const nextIsDataRow = this.grid.dataRowList.find(row => row.index === rowIndex + 1); const isLastColumn = this.grid.unpinnedColumns[this.grid.unpinnedColumns.length - 1].visibleIndex === visibleColumnIndex; const isLastSummaryRow = hasSummaries && isSummaryRow; @@ -313,7 +313,7 @@ export class IgxHierarchicalGridNavigationService extends IgxGridNavigationServi const parentHasSummary = parent.summariesRowList.length > 0; const parentRowIndex = parseInt( this.getClosestElemByTag(currentRowEl, 'igx-child-grid-row').parentNode.getAttribute('data-rowindex'), 10); - const isLastRowInParent = parent.verticalScrollContainer.igxForOf.length - 1 === parentRowIndex; + const isLastRowInParent = parent.dataView.length - 1 === parentRowIndex; // check if next is sibling const childRowContainer = this.getChildGridRowContainer(this.grid); const nextIsSiblingChild = !!childRowContainer.nextElementSibling; @@ -404,7 +404,7 @@ export class IgxHierarchicalGridNavigationService extends IgxGridNavigationServi const gridElem = this.getLastGridElem(currentRowEl.previousElementSibling); this.performShiftTabIntoChild(gridElem, currentRowEl, rowIndex); } else if (visibleColumnIndex === 0 && isSummary) { - const lastRowIndex = this.grid.verticalScrollContainer.igxForOf.length - 1; + const lastRowIndex = this.grid.dataView.length - 1; if (lastRowIndex === -1) { // no child data if (this.grid.allowFiltering && this.grid.filterMode === FilterMode.quickFilter) { @@ -531,7 +531,7 @@ export class IgxHierarchicalGridNavigationService extends IgxGridNavigationServi visibleColumnIndex = Math.min(lastCellIndex, visibleColumnIndex); const isScrolledToBottom = this._isScrolledToBottom(childGrid); - const lastIndex = childGrid.verticalScrollContainer.igxForOf.length - 1; + const lastIndex = childGrid.dataView.length - 1; if (!isScrolledToBottom) { // scroll to end this.scrollGrid(childGrid, 'bottom', () => this.focusPrevChild(elem, visibleColumnIndex, grid)); @@ -609,7 +609,7 @@ export class IgxHierarchicalGridNavigationService extends IgxGridNavigationServi const verticalScroll = nextParentGrid.verticalScrollContainer.getVerticalScroll(); const parentState = nextParentGrid.verticalScrollContainer.state; const atLastChunk = parentState.startIndex + parentState.chunkSize === - nextParentGrid.verticalScrollContainer.igxForOf.length; + nextParentGrid.dataView.length; if (next) { if (nextIsSiblingChild) { this.focusNextChild(next, visibleColumnIndex, nextParentGrid); @@ -752,7 +752,7 @@ export class IgxHierarchicalGridNavigationService extends IgxGridNavigationServi } else { switch (target) { case 'top': grid.verticalScrollContainer.scrollTo(0); break; - case 'bottom': grid.verticalScrollContainer.scrollTo(grid.verticalScrollContainer.igxForOf.length - 1); break; + case 'bottom': grid.verticalScrollContainer.scrollTo(grid.dataView.length - 1); break; case 'next': grid.verticalScrollContainer.scrollNext(); break; case 'prev': grid.verticalScrollContainer.scrollPrev(); break; } diff --git a/projects/igniteui-angular/src/lib/grids/hierarchical-grid/hierarchical-grid.component.ts b/projects/igniteui-angular/src/lib/grids/hierarchical-grid/hierarchical-grid.component.ts index 122572f73b5..b6abff92f15 100644 --- a/projects/igniteui-angular/src/lib/grids/hierarchical-grid/hierarchical-grid.component.ts +++ b/projects/igniteui-angular/src/lib/grids/hierarchical-grid/hierarchical-grid.component.ts @@ -618,7 +618,7 @@ export class IgxHierarchicalGridComponent extends IgxHierarchicalGridBaseCompone $implicit: rowData, moveView: view, owner: tmlpOutlet, - index: this.verticalScrollContainer.igxForOf.indexOf(rowData) + index: this.dataView.indexOf(rowData) }; } else { const rowID = this.primaryKey ? rowData.rowID : this.data.indexOf(rowData.rowID); @@ -626,14 +626,14 @@ export class IgxHierarchicalGridComponent extends IgxHierarchicalGridBaseCompone return { $implicit: rowData, templateID: 'childRow-' + rowID, - index: this.verticalScrollContainer.igxForOf.indexOf(rowData) + index: this.dataView.indexOf(rowData) }; } } else { return { $implicit: rowData, templateID: 'dataRow', - index: this.verticalScrollContainer.igxForOf.indexOf(rowData) + index: this.dataView.indexOf(rowData) }; } } diff --git a/projects/igniteui-angular/src/lib/grids/hierarchical-grid/hierarchical-grid.integration.spec.ts b/projects/igniteui-angular/src/lib/grids/hierarchical-grid/hierarchical-grid.integration.spec.ts index dd014678dcd..382e88a1ede 100644 --- a/projects/igniteui-angular/src/lib/grids/hierarchical-grid/hierarchical-grid.integration.spec.ts +++ b/projects/igniteui-angular/src/lib/grids/hierarchical-grid/hierarchical-grid.integration.spec.ts @@ -237,10 +237,10 @@ describe('IgxHierarchicalGrid Integration #hGrid', () => { }); fixture.detectChanges(); - hierarchicalGrid.verticalScrollContainer.scrollTo(hierarchicalGrid.verticalScrollContainer.igxForOf.length - 1); + hierarchicalGrid.verticalScrollContainer.scrollTo(hierarchicalGrid.dataView.length - 1); await wait(100); fixture.detectChanges(); - hierarchicalGrid.verticalScrollContainer.scrollTo(hierarchicalGrid.verticalScrollContainer.igxForOf.length - 1); + hierarchicalGrid.verticalScrollContainer.scrollTo(hierarchicalGrid.dataView.length - 1); await wait(100); fixture.detectChanges(); @@ -316,10 +316,10 @@ describe('IgxHierarchicalGrid Integration #hGrid', () => { // }); // fixture.detectChanges(); - // hierarchicalGrid.verticalScrollContainer.scrollTo(hierarchicalGrid.verticalScrollContainer.igxForOf.length - 1); + // hierarchicalGrid.verticalScrollContainer.scrollTo(hierarchicalGrid.dataView.length - 1); // await wait(100); // fixture.detectChanges(); - // hierarchicalGrid.verticalScrollContainer.scrollTo(hierarchicalGrid.verticalScrollContainer.igxForOf.length - 1); + // hierarchicalGrid.verticalScrollContainer.scrollTo(hierarchicalGrid.dataView.length - 1); // await wait(100); // fixture.detectChanges(); // const childGrids = fixture.debugElement.queryAll(By.css('igx-child-grid-row')); @@ -520,17 +520,17 @@ describe('IgxHierarchicalGrid Integration #hGrid', () => { hierarchicalGrid.reflow(); fixture.detectChanges(); - expect(hierarchicalGrid.verticalScrollContainer.igxForOf.length).toEqual(15); + expect(hierarchicalGrid.dataView.length).toEqual(15); hierarchicalGrid.dataRowList.toArray()[1].nativeElement.children[0].click(); fixture.detectChanges(); - expect(hierarchicalGrid.verticalScrollContainer.igxForOf.length).toEqual(16); + expect(hierarchicalGrid.dataView.length).toEqual(16); hierarchicalGrid.dataRowList.toArray()[0].nativeElement.children[0].click(); fixture.detectChanges(); - expect(hierarchicalGrid.verticalScrollContainer.igxForOf.length).toEqual(17); + expect(hierarchicalGrid.dataView.length).toEqual(17); - hierarchicalGrid.verticalScrollContainer.scrollTo(hierarchicalGrid.verticalScrollContainer.igxForOf.length - 1); + hierarchicalGrid.verticalScrollContainer.scrollTo(hierarchicalGrid.dataView.length - 1); await wait(100); fixture.detectChanges(); @@ -549,7 +549,7 @@ describe('IgxHierarchicalGrid Integration #hGrid', () => { expect((hierarchicalGrid.dataRowList.toArray()[0] as IgxHierarchicalRowComponent).expanded).toBeTruthy(); expect((hierarchicalGrid.dataRowList.toArray()[1] as IgxHierarchicalRowComponent).expanded).toBeTruthy(); - expect(hierarchicalGrid.verticalScrollContainer.igxForOf.length).toEqual(17); + expect(hierarchicalGrid.dataView.length).toEqual(17); let childGrids = fixture.debugElement.queryAll(By.css('igx-child-grid-row')); let childGrid = childGrids[0].query(By.css('igx-hierarchical-grid')).componentInstance; @@ -563,7 +563,7 @@ describe('IgxHierarchicalGrid Integration #hGrid', () => { expect(hierarchicalGrid.dataRowList.toArray()[0].cells.first.value).toEqual('15'); expect((hierarchicalGrid.dataRowList.toArray()[0] as IgxHierarchicalRowComponent).expanded).toBeFalsy(); expect((hierarchicalGrid.dataRowList.toArray()[1] as IgxHierarchicalRowComponent).expanded).toBeFalsy(); - expect(hierarchicalGrid.verticalScrollContainer.igxForOf.length).toEqual(15); + expect(hierarchicalGrid.dataView.length).toEqual(15); childGrids = fixture.debugElement.queryAll(By.css('igx-child-grid-row')); expect(childGrids.length).toEqual(0); @@ -575,7 +575,7 @@ describe('IgxHierarchicalGrid Integration #hGrid', () => { expect(hierarchicalGrid.dataRowList.toArray()[0].cells.first.value).toEqual('0'); expect((hierarchicalGrid.dataRowList.toArray()[0] as IgxHierarchicalRowComponent).expanded).toBeTruthy(); expect((hierarchicalGrid.dataRowList.toArray()[1] as IgxHierarchicalRowComponent).expanded).toBeTruthy(); - expect(hierarchicalGrid.verticalScrollContainer.igxForOf.length).toEqual(17); + expect(hierarchicalGrid.dataView.length).toEqual(17); childGrids = fixture.debugElement.queryAll(By.css('igx-child-grid-row')); childGrid = childGrids[0].query(By.css('igx-hierarchical-grid')).componentInstance; @@ -605,7 +605,7 @@ describe('IgxHierarchicalGrid Integration #hGrid', () => { expect(hierarchicalGrid.hasVerticalSroll()).toBeTruthy(); // scroll bottom - hierarchicalGrid.verticalScrollContainer.scrollTo(hierarchicalGrid.verticalScrollContainer.igxForOf.length - 1); + hierarchicalGrid.verticalScrollContainer.scrollTo(hierarchicalGrid.dataView.length - 1); await wait(30); fixture.detectChanges(); @@ -620,7 +620,7 @@ describe('IgxHierarchicalGrid Integration #hGrid', () => { hierarchicalGrid.getRowByKey('1').nativeElement.children[0].click(); await wait(30); fixture.detectChanges(); - hierarchicalGrid.verticalScrollContainer.scrollTo(hierarchicalGrid.verticalScrollContainer.igxForOf.length - 1); + hierarchicalGrid.verticalScrollContainer.scrollTo(hierarchicalGrid.dataView.length - 1); await wait(30); fixture.detectChanges(); @@ -635,7 +635,7 @@ describe('IgxHierarchicalGrid Integration #hGrid', () => { hierarchicalGrid.getRowByKey('2').nativeElement.children[0].click(); await wait(30); fixture.detectChanges(); - hierarchicalGrid.verticalScrollContainer.scrollTo(hierarchicalGrid.verticalScrollContainer.igxForOf.length - 1); + hierarchicalGrid.verticalScrollContainer.scrollTo(hierarchicalGrid.dataView.length - 1); await wait(30); fixture.detectChanges(); @@ -650,7 +650,7 @@ describe('IgxHierarchicalGrid Integration #hGrid', () => { hierarchicalGrid.getRowByKey('3').nativeElement.children[0].click(); await wait(30); fixture.detectChanges(); - hierarchicalGrid.verticalScrollContainer.scrollTo(hierarchicalGrid.verticalScrollContainer.igxForOf.length - 1); + hierarchicalGrid.verticalScrollContainer.scrollTo(hierarchicalGrid.dataView.length - 1); await wait(30); fixture.detectChanges(); @@ -665,7 +665,7 @@ describe('IgxHierarchicalGrid Integration #hGrid', () => { hierarchicalGrid.getRowByKey('4').nativeElement.children[0].click(); await wait(30); fixture.detectChanges(); - hierarchicalGrid.verticalScrollContainer.scrollTo(hierarchicalGrid.verticalScrollContainer.igxForOf.length - 1); + hierarchicalGrid.verticalScrollContainer.scrollTo(hierarchicalGrid.dataView.length - 1); await wait(30); fixture.detectChanges(); diff --git a/projects/igniteui-angular/src/lib/grids/hierarchical-grid/hierarchical-grid.navigation.spec.ts b/projects/igniteui-angular/src/lib/grids/hierarchical-grid/hierarchical-grid.navigation.spec.ts index a57492403a0..27dd2958085 100644 --- a/projects/igniteui-angular/src/lib/grids/hierarchical-grid/hierarchical-grid.navigation.spec.ts +++ b/projects/igniteui-angular/src/lib/grids/hierarchical-grid/hierarchical-grid.navigation.spec.ts @@ -537,7 +537,7 @@ describe('IgxHierarchicalGrid Basic Navigation #hGrid', () => { it('should retain focused cell when expand/collapse hierarchical row using ALT+Arrow Right/ALT+Arrow Left.', (async () => { // scroll to last row - const lastDataIndex = hierarchicalGrid.verticalScrollContainer.igxForOf.length - 2; + const lastDataIndex = hierarchicalGrid.dataView.length - 2; hierarchicalGrid.verticalScrollContainer.scrollTo(lastDataIndex); await wait(100); fixture.detectChanges(); @@ -877,7 +877,7 @@ describe('IgxHierarchicalGrid Complex Navigation #hGrid', () => { await wait(100); fixture.detectChanges(); const child = hierarchicalGrid.hgridAPI.getChildGrids(false)[0]; - const lastIndex = child.verticalScrollContainer.igxForOf.length - 1; + const lastIndex = child.dataView.length - 1; child.verticalScrollContainer.scrollTo(lastIndex); await wait(100); fixture.detectChanges(); @@ -956,7 +956,7 @@ describe('IgxHierarchicalGrid Multi-layout Navigation #hGrid', () => { const child1 = hierarchicalGrid.hgridAPI.getChildGrids(false)[0]; const child2 = hierarchicalGrid.hgridAPI.getChildGrids(false)[4]; - child1.verticalScrollContainer.scrollTo(child1.verticalScrollContainer.igxForOf.length - 1); + child1.verticalScrollContainer.scrollTo(child1.dataView.length - 1); await wait(100); fixture.detectChanges(); @@ -977,7 +977,7 @@ describe('IgxHierarchicalGrid Multi-layout Navigation #hGrid', () => { const child1 = hierarchicalGrid.hgridAPI.getChildGrids(false)[0]; const child2 = hierarchicalGrid.hgridAPI.getChildGrids(false)[4]; - child1.verticalScrollContainer.scrollTo(child1.verticalScrollContainer.igxForOf.length - 1); + child1.verticalScrollContainer.scrollTo(child1.dataView.length - 1); await wait(100); fixture.detectChanges(); const rowVirt = child1.dataRowList.toArray()[0].virtDirRow; diff --git a/projects/igniteui-angular/src/lib/grids/hierarchical-grid/hierarchical-grid.spec.ts b/projects/igniteui-angular/src/lib/grids/hierarchical-grid/hierarchical-grid.spec.ts index ce0c241b6c9..96c9c5f2aa8 100644 --- a/projects/igniteui-angular/src/lib/grids/hierarchical-grid/hierarchical-grid.spec.ts +++ b/projects/igniteui-angular/src/lib/grids/hierarchical-grid/hierarchical-grid.spec.ts @@ -144,7 +144,7 @@ describe('Basic IgxHierarchicalGrid #hGrid', () => { fixture.detectChanges(); expect(row.expanded).toBe(true); // scroll to bottom - hierarchicalGrid.verticalScrollContainer.scrollTo(hierarchicalGrid.verticalScrollContainer.igxForOf.length - 1); + hierarchicalGrid.verticalScrollContainer.scrollTo(hierarchicalGrid.dataView.length - 1); await wait(100); fixture.detectChanges(); // scroll to top @@ -622,7 +622,7 @@ describe('IgxHierarchicalGrid Row Islands #hGrid', () => { const child2 = children[1]; expect(child1._destroyed).toBeFalsy(); expect(child2._destroyed).toBeFalsy(); - hierarchicalGrid.verticalScrollContainer.scrollTo(hierarchicalGrid.verticalScrollContainer.igxForOf.length - 1); + hierarchicalGrid.verticalScrollContainer.scrollTo(hierarchicalGrid.dataView.length - 1); await wait(100); fixture.detectChanges(); diff --git a/projects/igniteui-angular/src/lib/grids/hierarchical-grid/hierarchical-grid.virtualization.spec.ts b/projects/igniteui-angular/src/lib/grids/hierarchical-grid/hierarchical-grid.virtualization.spec.ts index 85f2e4655a7..4fc9cea09f9 100644 --- a/projects/igniteui-angular/src/lib/grids/hierarchical-grid/hierarchical-grid.virtualization.spec.ts +++ b/projects/igniteui-angular/src/lib/grids/hierarchical-grid/hierarchical-grid.virtualization.spec.ts @@ -252,7 +252,7 @@ describe('IgxHierarchicalGrid Virtualization #hGrid', () => { fixture.detectChanges(); await wait(100); // scroll to bottom - hierarchicalGrid.verticalScrollContainer.scrollTo(hierarchicalGrid.verticalScrollContainer.igxForOf.length - 1); + hierarchicalGrid.verticalScrollContainer.scrollTo(hierarchicalGrid.dataView.length - 1); fixture.detectChanges(); await wait(100); fixture.detectChanges(); diff --git a/projects/igniteui-angular/src/lib/grids/tree-grid/tree-grid-multi-cell-selection.spec.ts b/projects/igniteui-angular/src/lib/grids/tree-grid/tree-grid-multi-cell-selection.spec.ts index 1d13b701893..0785e785487 100644 --- a/projects/igniteui-angular/src/lib/grids/tree-grid/tree-grid-multi-cell-selection.spec.ts +++ b/projects/igniteui-angular/src/lib/grids/tree-grid/tree-grid-multi-cell-selection.spec.ts @@ -127,7 +127,7 @@ describe('IgxTreeGrid - Multi Cell selection #tGrid', () => { { ID: 17 } ]; - treeGrid.verticalScrollContainer.scrollTo(treeGrid.verticalScrollContainer.igxForOf.length - 1); + treeGrid.verticalScrollContainer.scrollTo(treeGrid.dataView.length - 1); await wait(30); fix.detectChanges(); @@ -169,7 +169,7 @@ describe('IgxTreeGrid - Multi Cell selection #tGrid', () => { GridSelectionFunctions.verifyCellSelected(firstCell); - treeGrid.verticalScrollContainer.scrollTo(treeGrid.verticalScrollContainer.igxForOf.length - 1); + treeGrid.verticalScrollContainer.scrollTo(treeGrid.dataView.length - 1); await wait(200); fix.detectChanges(); diff --git a/projects/igniteui-angular/src/lib/grids/tree-grid/tree-grid-summaries.spec.ts b/projects/igniteui-angular/src/lib/grids/tree-grid/tree-grid-summaries.spec.ts index ef6f1bcb8ac..35230a18b1e 100644 --- a/projects/igniteui-angular/src/lib/grids/tree-grid/tree-grid-summaries.spec.ts +++ b/projects/igniteui-angular/src/lib/grids/tree-grid/tree-grid-summaries.spec.ts @@ -1391,7 +1391,7 @@ describe('IgxTreeGrid - Summaries #tGrid', () => { treeGrid.expandAll(); fix.detectChanges(); - treeGrid.verticalScrollContainer.scrollTo(treeGrid.verticalScrollContainer.igxForOf.length - 1); + treeGrid.verticalScrollContainer.scrollTo(treeGrid.dataView.length - 1); await wait(100); fix.detectChanges(); diff --git a/projects/igniteui-angular/src/lib/grids/tree-grid/tree-grid.component.ts b/projects/igniteui-angular/src/lib/grids/tree-grid/tree-grid.component.ts index 47eade9b688..7950acc7628 100644 --- a/projects/igniteui-angular/src/lib/grids/tree-grid/tree-grid.component.ts +++ b/projects/igniteui-angular/src/lib/grids/tree-grid/tree-grid.component.ts @@ -697,11 +697,11 @@ export class IgxTreeGridComponent extends IgxGridBaseComponent implements IGridD if (delayScrolling) { this.verticalScrollContainer.onDataChanged.pipe(first()).subscribe(() => { this.scrollDirective(this.verticalScrollContainer, - typeof(row) === 'number' ? row : this.verticalScrollContainer.igxForOf.indexOf(record)); + typeof(row) === 'number' ? row : this.dataView.indexOf(record)); }); } else { this.scrollDirective(this.verticalScrollContainer, - typeof(row) === 'number' ? row : this.verticalScrollContainer.igxForOf.indexOf(record)); + typeof(row) === 'number' ? row : this.dataView.indexOf(record)); } this.scrollToHorizontally(column); @@ -732,7 +732,7 @@ export class IgxTreeGridComponent extends IgxGridBaseComponent implements IGridD source.push(record.data); }; - this.verticalScrollContainer.igxForOf.forEach(process); + this.dataView.forEach(process); return this.extractDataFromSelection(source, formatters, headers); } From 40a52c2985fdad3b3e1afd25d3210f2783937f27 Mon Sep 17 00:00:00 2001 From: 3phase Date: Thu, 10 Oct 2019 10:56:49 +0300 Subject: [PATCH 3/7] feat(grid): Fixes lint errors #5069 --- projects/igniteui-angular/src/lib/grids/grid-base.component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/igniteui-angular/src/lib/grids/grid-base.component.ts b/projects/igniteui-angular/src/lib/grids/grid-base.component.ts index a12c7f84461..786bd76230d 100644 --- a/projects/igniteui-angular/src/lib/grids/grid-base.component.ts +++ b/projects/igniteui-angular/src/lib/grids/grid-base.component.ts @@ -4630,7 +4630,7 @@ export abstract class IgxGridBaseComponent extends DisplayDensityBase implements public hasVerticalSroll() { if (this._init) { return false; } const isScrollable = this.verticalScrollContainer ? this.verticalScrollContainer.isScrollable() : false; - return !!(this.calcWidth && this.dataView && + return !!(this.calcWidth && this.dataView && this.dataView.length > 0 && isScrollable); } From 992b3ba2e89be1937ce157ef6963fb24ad7b7e63 Mon Sep 17 00:00:00 2001 From: 3phase Date: Thu, 10 Oct 2019 11:01:10 +0300 Subject: [PATCH 4/7] feat(grid): Adds made changes to CHANGELOG #5069 --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 232dc500cb0..cdef589b23e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -75,6 +75,7 @@ For more information about the theming please read our [documentation](https://w - `isCellSelected` method has been deprecated. Now you can use `selected` property. - `rowSelectable` property has been deprecated. Now you can use `rowSelection` property to enable row selection and also you can show and hide the row selectors by setting `hideRowSelectors` property to true or false (which is the default value). - Removed deprecated event `OnFocusChange` + - Privately accessed method, `verticalScrollContainer.igxForOf`, is now publicly exposed as `dataView` - **Breaking Change** `igxExcelStyleSortingTemplate` directive is renamed to `igxExcelStyleSorting`. - **Breaking Change** `igxExcelStyleMovingTemplate` directive is renamed to `igxExcelStyleMoving`. - **Breaking Change** `igxExcelStyleHidingTemplate` directive is renamed to `igxExcelStyleHiding`. From d8f82281e9de302190fec4a44c08bd482a64fc4a Mon Sep 17 00:00:00 2001 From: 3phase Date: Thu, 10 Oct 2019 12:36:59 +0300 Subject: [PATCH 5/7] feat(grid): Resolves requested changes #5069 --- CHANGELOG.md | 2 +- .../igniteui-angular/src/lib/grids/common/grid.interface.ts | 2 +- projects/igniteui-angular/src/lib/grids/grid-base.component.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cdef589b23e..11ef6dc54c8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -75,7 +75,7 @@ For more information about the theming please read our [documentation](https://w - `isCellSelected` method has been deprecated. Now you can use `selected` property. - `rowSelectable` property has been deprecated. Now you can use `rowSelection` property to enable row selection and also you can show and hide the row selectors by setting `hideRowSelectors` property to true or false (which is the default value). - Removed deprecated event `OnFocusChange` - - Privately accessed method, `verticalScrollContainer.igxForOf`, is now publicly exposed as `dataView` + - `IgxGridBaseComponent` exposes a new method, `dataView` that returns the currently transformed paged/filtered/sorted/grouped data, displayed in the grid - **Breaking Change** `igxExcelStyleSortingTemplate` directive is renamed to `igxExcelStyleSorting`. - **Breaking Change** `igxExcelStyleMovingTemplate` directive is renamed to `igxExcelStyleMoving`. - **Breaking Change** `igxExcelStyleHidingTemplate` directive is renamed to `igxExcelStyleHiding`. diff --git a/projects/igniteui-angular/src/lib/grids/common/grid.interface.ts b/projects/igniteui-angular/src/lib/grids/common/grid.interface.ts index 733fdd66e6c..43e978b0622 100644 --- a/projects/igniteui-angular/src/lib/grids/common/grid.interface.ts +++ b/projects/igniteui-angular/src/lib/grids/common/grid.interface.ts @@ -24,7 +24,7 @@ export interface GridType { pinnedColumns: any; summariesRowList: any; headerContainer: any; - dataView: any; + dataView: any[]; rowInEditMode: any; rowEditTabs: any; diff --git a/projects/igniteui-angular/src/lib/grids/grid-base.component.ts b/projects/igniteui-angular/src/lib/grids/grid-base.component.ts index 786bd76230d..59d6a01ed42 100644 --- a/projects/igniteui-angular/src/lib/grids/grid-base.component.ts +++ b/projects/igniteui-angular/src/lib/grids/grid-base.component.ts @@ -4998,7 +4998,7 @@ export abstract class IgxGridBaseComponent extends DisplayDensityBase implements } /** - * Returns a complete list of the elements in the current vertical dataview. + * Returns the currently transformed paged/filtered/sorted/grouped data, displayed in the grid. * ```typescript * const dataView = this.grid.dataView; * ``` From 5521a1f9b247004176ced9b897f4f464d6f85e29 Mon Sep 17 00:00:00 2001 From: 3phase Date: Thu, 10 Oct 2019 15:37:16 +0300 Subject: [PATCH 6/7] feat(grid): Resolves requested changes #5069 --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 11ef6dc54c8..dcfef97747a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -75,7 +75,7 @@ For more information about the theming please read our [documentation](https://w - `isCellSelected` method has been deprecated. Now you can use `selected` property. - `rowSelectable` property has been deprecated. Now you can use `rowSelection` property to enable row selection and also you can show and hide the row selectors by setting `hideRowSelectors` property to true or false (which is the default value). - Removed deprecated event `OnFocusChange` - - `IgxGridBaseComponent` exposes a new method, `dataView` that returns the currently transformed paged/filtered/sorted/grouped data, displayed in the grid + - `IgxGridBaseComponent` exposes a new property, `dataView` that returns the currently transformed paged/filtered/sorted/grouped data, displayed in the grid - **Breaking Change** `igxExcelStyleSortingTemplate` directive is renamed to `igxExcelStyleSorting`. - **Breaking Change** `igxExcelStyleMovingTemplate` directive is renamed to `igxExcelStyleMoving`. - **Breaking Change** `igxExcelStyleHidingTemplate` directive is renamed to `igxExcelStyleHiding`. From 108cd8c97b3dc9123328e25444c8a3413765534c Mon Sep 17 00:00:00 2001 From: Pepo <3phase@users.noreply.github.com> Date: Thu, 10 Oct 2019 15:52:17 +0300 Subject: [PATCH 7/7] Update grid-base.component.ts --- projects/igniteui-angular/src/lib/grids/grid-base.component.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/projects/igniteui-angular/src/lib/grids/grid-base.component.ts b/projects/igniteui-angular/src/lib/grids/grid-base.component.ts index 59d6a01ed42..8dc5fa29045 100644 --- a/projects/igniteui-angular/src/lib/grids/grid-base.component.ts +++ b/projects/igniteui-angular/src/lib/grids/grid-base.component.ts @@ -5004,7 +5004,7 @@ export abstract class IgxGridBaseComponent extends DisplayDensityBase implements * ``` * @memberof IgxGridComponent */ - get dataView(): any { + get dataView(): any[] { return this.verticalScrollContainer.igxForOf; }