Skip to content

Commit c5306a1

Browse files
authored
Merge branch 'master' into rkaraivanov/ivy-rc6
2 parents bfecbcc + 7d39798 commit c5306a1

File tree

2 files changed

+39
-1
lines changed

2 files changed

+39
-1
lines changed

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

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ import { GridFunctions, GridSelectionFunctions } from '../../test-utils/grid-fun
1919
import { SampleTestData } from '../../test-utils/sample-test-data.spec';
2020
import { GridSelectionMode } from '../common/enums';
2121
import { IgxGridSelectionModule } from '../selection/selection.module';
22+
import { FilteringExpressionsTree } from '../../data-operations/filtering-expressions-tree';
23+
import { FilteringLogic } from '../../data-operations/filtering-expression.interface';
2224

2325
const DEBOUNCETIME = 30;
2426

@@ -1671,6 +1673,38 @@ describe('IgxGrid - Row Selection #grid', () => {
16711673
expect(grid.getRowByIndex(1).selected).toBeTruthy();
16721674
expect(grid.onRowSelectionChange.emit).toHaveBeenCalledTimes(6);
16731675
}));
1676+
1677+
it('Should select only filtered records', fakeAsync(() => {
1678+
grid.height = '1100px';
1679+
const tree = new FilteringExpressionsTree(FilteringLogic.And);
1680+
tree.filteringOperands.push({
1681+
fieldName: 'UnitsInStock',
1682+
searchVal: 0,
1683+
condition: IgxNumberFilteringOperand.instance().condition('greaterThan'),
1684+
});
1685+
tree.filteringOperands.push({
1686+
fieldName: 'ProductName',
1687+
searchVal: 'a',
1688+
condition: IgxStringFilteringOperand.instance().condition('contains'),
1689+
ignoreCase: true
1690+
});
1691+
grid.advancedFilteringExpressionsTree = tree;
1692+
GridSelectionFunctions.headerCheckboxClick(grid);
1693+
fix.detectChanges();
1694+
tick();
1695+
1696+
expect(grid.rowList.length).toBe(9);
1697+
expect(grid.selectedRows().length).toBe(9);
1698+
GridSelectionFunctions.verifyHeaderRowCheckboxState(grid, true, false);
1699+
1700+
grid.advancedFilteringExpressionsTree = null;
1701+
fix.detectChanges();
1702+
tick();
1703+
1704+
expect(grid.rowList.length).toBe(19);
1705+
expect(grid.selectedRows().length).toBe(9);
1706+
GridSelectionFunctions.verifyHeaderRowCheckboxState(grid, false, true);
1707+
}));
16741708
});
16751709

16761710
describe('Integration with CRUD and transactions', () => {

projects/igniteui-angular/src/lib/grids/selection/selection.service.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import { Injectable, EventEmitter, NgZone } from '@angular/core';
22
import { IGridEditEventArgs } from '../common/events';
3+
import { IgxGridBaseDirective } from '../grid';
4+
import { FilteringExpressionsTree } from '../../data-operations/filtering-expressions-tree';
35

46

57
export interface GridSelectionRange {
@@ -689,7 +691,9 @@ export class IgxGridSelectionService {
689691
}
690692

691693
private isFilteringApplied(): boolean {
692-
return this.grid.filteringExpressionsTree.filteringOperands.length > 0;
694+
const grid = this.grid as IgxGridBaseDirective;
695+
return !FilteringExpressionsTree.empty(grid.filteringExpressionsTree) ||
696+
!FilteringExpressionsTree.empty(grid.advancedFilteringExpressionsTree);
693697
}
694698

695699
private isRowDeleted(rowID): boolean {

0 commit comments

Comments
 (0)