Skip to content

Commit e900ee5

Browse files
authored
Merge branch '9.0.x' into dmdimitrov/issue7480-9.0.x
2 parents 0aa410b + 6c382a4 commit e900ee5

File tree

4 files changed

+62
-12
lines changed

4 files changed

+62
-12
lines changed

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

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ import {
2828
Directive
2929
} from '@angular/core';
3030
import ResizeObserver from 'resize-observer-polyfill';
31-
import { Subject, combineLatest, pipe } from 'rxjs';
31+
import { Subject, pipe } from 'rxjs';
3232
import { takeUntil, first, filter, throttleTime, map } from 'rxjs/operators';
3333
import { cloneArray, isEdge, isNavigationKey, flatten, mergeObjects, isIE } from '../core/utils';
3434
import { DataType } from '../data-operations/data-util';
@@ -2821,6 +2821,15 @@ export class IgxGridBaseDirective extends DisplayDensityBase implements
28212821
this.setupColumns();
28222822
}
28232823

2824+
/**
2825+
* @hidden
2826+
* @internal
2827+
*/
2828+
public setFilteredSortedData(data) {
2829+
this._filteredSortedData = data;
2830+
this.refreshSearch(true, false);
2831+
}
2832+
28242833
/**
28252834
* @hidden @internal
28262835
*/
@@ -4024,7 +4033,7 @@ export class IgxGridBaseDirective extends DisplayDensityBase implements
40244033
* ```
40254034
* @param updateActiveInfo
40264035
*/
4027-
public refreshSearch(updateActiveInfo?: boolean): number {
4036+
public refreshSearch(updateActiveInfo?: boolean, endEdit = true): number {
40284037
if (this.lastSearchInfo.searchText) {
40294038
this.rebuildMatchCache();
40304039

@@ -4039,7 +4048,12 @@ export class IgxGridBaseDirective extends DisplayDensityBase implements
40394048
});
40404049
}
40414050

4042-
return this.find(this.lastSearchInfo.searchText, 0, this.lastSearchInfo.caseSensitive, this.lastSearchInfo.exactMatch, false);
4051+
return this.find(this.lastSearchInfo.searchText,
4052+
0,
4053+
this.lastSearchInfo.caseSensitive,
4054+
this.lastSearchInfo.exactMatch,
4055+
false,
4056+
endEdit);
40434057
} else {
40444058
return 0;
40454059
}
@@ -5356,12 +5370,14 @@ export class IgxGridBaseDirective extends DisplayDensityBase implements
53565370
return col.field + col._calcWidth;
53575371
}
53585372

5359-
private find(text: string, increment: number, caseSensitive?: boolean, exactMatch?: boolean, scroll?: boolean) {
5373+
private find(text: string, increment: number, caseSensitive?: boolean, exactMatch?: boolean, scroll?: boolean, endEdit = true) {
53605374
if (!this.rowList) {
53615375
return 0;
53625376
}
53635377

5364-
this.endEdit(false);
5378+
if (endEdit) {
5379+
this.endEdit(false);
5380+
}
53655381

53665382
if (!text) {
53675383
this.clearSearch();
@@ -5437,10 +5453,6 @@ export class IgxGridBaseDirective extends DisplayDensityBase implements
54375453
get filteredSortedData(): any[] {
54385454
return this._filteredSortedData;
54395455
}
5440-
set filteredSortedData(value: any[]) {
5441-
this._filteredSortedData = value;
5442-
this.refreshSearch(true);
5443-
}
54445456

54455457
/**
54465458
* @hidden

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ export class IgxGridSortingPipe implements PipeTransform {
3838
} else {
3939
result = DataUtil.sort(cloneArray(collection), expressions, sorting);
4040
}
41-
grid.filteredSortedData = result;
41+
grid.setFilteredSortedData(result);
4242

4343
return result;
4444
}

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

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { IForOfState } from '../../directives/for-of/for_of.directive';
99
import { IgxStringFilteringOperand } from '../../data-operations/filtering-condition';
1010
import { DefaultSortingStrategy } from '../../data-operations/sorting-strategy';
1111
import { configureTestSuite } from '../../test-utils/configure-suite';
12-
import { wait } from '../../test-utils/ui-interactions.spec';
12+
import { wait, UIInteractions } from '../../test-utils/ui-interactions.spec';
1313
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
1414
import { DataType } from '../../data-operations/data-util';
1515
import { setupGridScrollDetection } from '../../test-utils/helper-utils.spec';
@@ -686,6 +686,44 @@ describe('IgxGrid - search API #grid - ', () => {
686686
expect(highlights.length).toBe(1);
687687
expect(row.inEditMode).toBe(false);
688688
});
689+
690+
it('Should keep edit mode when tabbing, after search is applied', () => {
691+
grid.primaryKey = 'ID';
692+
grid.getColumnByName('Name').editable = true;
693+
grid.getColumnByName('JobTitle').editable = true;
694+
fix.detectChanges();
695+
const cell = grid.getCellByColumn(1, 'Name');
696+
const caseyCell = grid.getCellByColumn(0, 'Name');
697+
const newVal = 'newCellValue';
698+
699+
grid.findNext('Casey');
700+
fix.detectChanges();
701+
let highlights = caseyCell.nativeElement.querySelectorAll(HIGHLIGHT_CSS_CLASS);
702+
expect(highlights.length).toBe(1);
703+
704+
cell.nativeElement.dispatchEvent(new MouseEvent('dblclick'));
705+
fix.detectChanges();
706+
707+
expect(cell.editMode).toBeTruthy();
708+
highlights = caseyCell.nativeElement.querySelectorAll(HIGHLIGHT_CSS_CLASS);
709+
expect(highlights.length).toBe(1);
710+
711+
let cellInput = null;
712+
cellInput = cell.nativeElement.querySelector('[igxinput]');
713+
UIInteractions.setInputElementValue(cellInput, newVal);
714+
715+
// press tab on edited cell
716+
UIInteractions.triggerKeyDownEvtUponElem('tab', cell.nativeElement, true);
717+
fix.detectChanges();
718+
719+
expect(cell.value).toBe(newVal);
720+
expect(cell.editMode).toBeFalsy();
721+
highlights = caseyCell.nativeElement.querySelectorAll(HIGHLIGHT_CSS_CLASS);
722+
723+
const nextCell = grid.getCellByColumn(1, 'JobTitle');
724+
expect(nextCell.editMode).toBeTruthy();
725+
expect(highlights.length).toBe(1);
726+
});
689727
});
690728

691729
describe('ScrollableGrid - ', () => {

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ export class IgxTreeGridSortingPipe implements PipeTransform {
213213
}
214214
const filteredSortedData = [];
215215
this.flattenTreeGridRecords(result, filteredSortedData);
216-
grid.filteredSortedData = filteredSortedData;
216+
grid.setFilteredSortedData(filteredSortedData);
217217

218218
return result;
219219
}

0 commit comments

Comments
 (0)