Skip to content

Commit 3e3b3fe

Browse files
authored
fix(grid): strict string typing the grid paging mode (#15706)
1 parent ff00688 commit 3e3b3fe

File tree

10 files changed

+19
-64
lines changed

10 files changed

+19
-64
lines changed

projects/igniteui-angular/migrations/update-11_1_0/index.spec.ts

Lines changed: 0 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -708,47 +708,4 @@ export class CsvExportComponent {
708708
)
709709
).toEqual(expectedContent);
710710
});
711-
712-
it('should update GridPagingMode enum from lowerCase to TitleCase', async () => {
713-
appTree.create(
714-
'/testSrc/appPrefix/component/paging-test.component.ts',
715-
`import { Component } from '@angular/core';
716-
import { GridPagingMode } from "igniteui-angular";
717-
718-
@Component({
719-
selector: "app-paging-test",
720-
styleUrls: ["./paging-test.component.scss"],
721-
templateUrl: "./paging-test.component.html"
722-
})
723-
export class PagingComponent {
724-
public pagingLocal: GridPagingMode = GridPagingMode.local;
725-
public pagingRemote: GridPagingMode = GridPagingMode.remote;
726-
constructor(){}
727-
}
728-
`);
729-
730-
const tree = await runner
731-
.runSchematic('migration-19', {}, appTree);
732-
733-
const expectedContent =
734-
`import { Component } from '@angular/core';
735-
import { GridPagingMode } from "igniteui-angular";
736-
737-
@Component({
738-
selector: "app-paging-test",
739-
styleUrls: ["./paging-test.component.scss"],
740-
templateUrl: "./paging-test.component.html"
741-
})
742-
export class PagingComponent {
743-
public pagingLocal: GridPagingMode = GridPagingMode.Local;
744-
public pagingRemote: GridPagingMode = GridPagingMode.Remote;
745-
constructor(){}
746-
}
747-
`;
748-
expect(
749-
tree.readContent(
750-
'/testSrc/appPrefix/component/paging-test.component.ts'
751-
)
752-
).toEqual(expectedContent);
753-
});
754711
});

projects/igniteui-angular/src/lib/grids/columns/column.component.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1422,7 +1422,8 @@ export class IgxColumnComponent implements AfterContentInit, OnDestroy, ColumnTy
14221422
return this.grid.dataView
14231423
.map((rec, index) => {
14241424
if (!this.grid.isGroupByRecord(rec) && !this.grid.isSummaryRow(rec)) {
1425-
this.grid.pagingMode === 1 && this.grid.page !== 0 ? index = index + this.grid.perPage * this.grid.page : index = this.grid.dataRowList.first.index + index;
1425+
this.grid.pagingMode === 'remote' && this.grid.page !== 0 ?
1426+
index = index + this.grid.perPage * this.grid.page : index = this.grid.dataRowList.first.index + index;
14261427
const cell = new IgxGridCell(this.grid as any, index, this);
14271428
return cell;
14281429
}

projects/igniteui-angular/src/lib/grids/common/enums.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -103,16 +103,16 @@ export enum RowPinningPosition {
103103
Bottom
104104
}
105105

106-
/* mustCoerceToInt */
107106
/**
108107
* Enumeration representing different paging modes for the grid.
109108
* - Local: The grid will use local data to extract pages during paging.
110109
* - Remote: The grid will expect pages to be delivered from a remote location and will only raise events during paging interactions.
111110
*/
112-
export enum GridPagingMode {
113-
Local,
114-
Remote
115-
}
111+
export const GridPagingMode = /*@__PURE__*/mkenum({
112+
Local: 'local',
113+
Remote: 'remote'
114+
});
115+
export type GridPagingMode = (typeof GridPagingMode)[keyof typeof GridPagingMode];
116116

117117
/**
118118
* @hidden @internal

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3053,7 +3053,7 @@ export abstract class IgxGridBaseDirective implements GridType,
30533053
/**
30543054
* @hidden
30553055
*/
3056-
protected _pagingMode = GridPagingMode.Local;
3056+
protected _pagingMode: GridPagingMode = 'local';
30573057
/**
30583058
* @hidden
30593059
*/
@@ -4625,7 +4625,7 @@ export abstract class IgxGridBaseDirective implements GridType,
46254625
*/
46264626
protected _getDataViewIndex(index: number): number {
46274627
let newIndex = index;
4628-
if ((index < 0 || index >= this.dataView.length) && this.pagingMode === 1 && this.page !== 0) {
4628+
if ((index < 0 || index >= this.dataView.length) && this.pagingMode === 'remote' && this.page !== 0) {
46294629
newIndex = index - this.perPage * this.page;
46304630
} else if (this.gridAPI.grid.verticalScrollContainer.isRemote) {
46314631
newIndex = index - this.gridAPI.grid.virtualizationState.startIndex;
@@ -7270,7 +7270,7 @@ export abstract class IgxGridBaseDirective implements GridType,
72707270

72717271
// eslint-disable-next-line prefer-const
72727272
for (let [row, set] of selectionMap) {
7273-
row = this.paginator && (this.pagingMode === GridPagingMode.Local && source === this.filteredSortedData) ? row + (this.perPage * this.page) : row;
7273+
row = this.paginator && (this.pagingMode === 'local' && source === this.filteredSortedData) ? row + (this.perPage * this.page) : row;
72747274
row = isRemote ? row - this.virtualizationState.startIndex : row;
72757275
if (!source[row] || source[row].detailsData !== undefined) {
72767276
continue;

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1126,7 +1126,7 @@ export class IgxGridComponent extends IgxGridBaseDirective implements GridType,
11261126
}
11271127
}
11281128

1129-
if (this.pagingMode === 1 && this.page !== 0) {
1129+
if (this.pagingMode === 'remote' && this.page !== 0) {
11301130
row.index = index + this.perPage * this.page;
11311131
}
11321132
return row;
@@ -1160,7 +1160,8 @@ export class IgxGridComponent extends IgxGridBaseDirective implements GridType,
11601160
*/
11611161
public allRows(): RowType[] {
11621162
return this.dataView.map((rec, index) => {
1163-
this.pagingMode === 1 && this.page !== 0 ? index = index + this.perPage * this.page : index = this.dataRowList.first.index + index;
1163+
this.pagingMode === 'remote' && this.page !== 0 ?
1164+
index = index + this.perPage * this.page : index = this.dataRowList.first.index + index;
11641165
return this.createRow(index);
11651166
});
11661167
}
@@ -1201,7 +1202,7 @@ export class IgxGridComponent extends IgxGridBaseDirective implements GridType,
12011202
const row = this.getRowByIndex(rowIndex);
12021203
const column = this._columns.find((col) => col.field === columnField);
12031204
if (row && row instanceof IgxGridRow && !row.data?.detailsData && column) {
1204-
if (this.pagingMode === 1 && this.page !== 0) {
1205+
if (this.pagingMode === 'remote' && this.page !== 0) {
12051206
row.index = rowIndex + this.perPage * this.page;
12061207
}
12071208
return new IgxGridCell(this, row.index, column);

projects/igniteui-angular/src/lib/grids/grid/grid.pipes.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import { IFilteringExpressionsTree, FilteringExpressionsTree } from '../../data-
77
import { IGroupingExpression } from '../../data-operations/grouping-expression.interface';
88
import { GridType, IGX_GRID_BASE } from '../common/grid.interface';
99
import { FilterUtil, IFilteringStrategy } from '../../data-operations/filtering-strategy';
10-
import { GridPagingMode } from '../common/enums';
1110
import { ISortingExpression } from '../../data-operations/sorting-strategy';
1211
import { IGridSortingStrategy, IGridGroupingStrategy } from '../common/strategy';
1312

@@ -89,7 +88,7 @@ export class IgxGridPagingPipe implements PipeTransform {
8988
constructor(@Inject(IGX_GRID_BASE) private grid: GridType) { }
9089

9190
public transform(collection: IGroupByResult, enabled: boolean, page = 0, perPage = 15, _: number): IGroupByResult {
92-
if (!enabled || this.grid.pagingMode !== GridPagingMode.Local) {
91+
if (!enabled || this.grid.pagingMode !== 'local') {
9392
return collection;
9493
}
9594
const state = {

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { Inject, Pipe, PipeTransform } from '@angular/core';
22
import { cloneArray, resolveNestedPath } from '../../core/utils';
33
import { DataUtil } from '../../data-operations/data-util';
4-
import { GridPagingMode } from '../common/enums';
54
import { GridType, IGX_GRID_BASE } from '../common/grid.interface';
65

76
/**
@@ -68,7 +67,7 @@ export class IgxGridHierarchicalPagingPipe implements PipeTransform {
6867
constructor(@Inject(IGX_GRID_BASE) private grid: GridType) { }
6968

7069
public transform(collection: any[], enabled: boolean, page = 0, perPage = 15, _id: string, _pipeTrigger: number): any[] {
71-
if (!enabled || this.grid.pagingMode !== GridPagingMode.Local) {
70+
if (!enabled || this.grid.pagingMode !== 'local') {
7271
return collection;
7372
}
7473

projects/igniteui-angular/src/lib/grids/tree-grid/tree-grid.pipes.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import { cloneArray, cloneHierarchicalArray } from '../../core/utils';
33
import { DataUtil } from '../../data-operations/data-util';
44
import { ITreeGridRecord } from './tree-grid.interfaces';
55
import { GridType, IGX_GRID_BASE } from '../common/grid.interface';
6-
import { GridPagingMode } from '../common/enums';
76
import { TransactionType } from '../../services/public_api';
87
import { IgxAddRow } from '../common/crud.service';
98
import { ISortingExpression } from '../../data-operations/sorting-strategy';
@@ -233,7 +232,7 @@ export class IgxTreeGridPagingPipe implements PipeTransform {
233232
constructor(@Inject(IGX_GRID_BASE) private grid: GridType) { }
234233

235234
public transform(collection: ITreeGridRecord[], enabled: boolean, page = 0, perPage = 15, _: number): ITreeGridRecord[] {
236-
if (!enabled || this.grid.pagingMode !== GridPagingMode.Local) {
235+
if (!enabled || this.grid.pagingMode !== 'local') {
237236
return collection;
238237
}
239238

projects/igniteui-angular/src/lib/test-utils/grid-base-components.spec.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import { SampleTestData } from './sample-test-data.spec';
33
import { ColumnDefinitions, GridTemplateStrings } from './template-strings.spec';
44
import { IgxGridComponent } from '../grids/grid/grid.component';
55
import { IgxColumnActionsComponent } from '../grids/column-actions/column-actions.component';
6-
import { GridPagingMode } from '../grids/common/enums';
76
import { IgxColumnComponent } from '../grids/columns/column.component';
87
import { IgxGridToolbarComponent } from '../grids/toolbar/grid-toolbar.component';
98
import { IgxGridToolbarHidingComponent } from '../grids/toolbar/grid-toolbar-hiding.component';
@@ -123,7 +122,7 @@ export class PagingComponent extends GridWithSizeComponent {
123122
imports: [IgxGridComponent, IgxColumnComponent, IgxPaginatorComponent]
124123
})
125124
export class RemotePagingComponent extends GridWithSizeComponent {
126-
public pagingMode = GridPagingMode.Remote;
125+
public pagingMode = 'remote';
127126
public perPage = 3;
128127
public totalRecords = 10;
129128
public override data = SampleTestData.personJobDataFull();

src/app/grid-remote-paging/grid-remote-paging.sample.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import { GridPagingMode, IgxButtonDirective, IgxCardComponent, IgxCardContentDir
1515
export class GridRemotePagingSampleComponent implements OnInit, AfterViewInit, OnDestroy {
1616
@ViewChild('grid1', { static: true }) public grid1: IgxGridComponent;
1717

18-
public mode: GridPagingMode = GridPagingMode.Remote;
18+
public mode: GridPagingMode = 'remote';
1919
public page = 0;
2020
public totalCount = 0;
2121
public pages = [];

0 commit comments

Comments
 (0)