Skip to content

Commit 2b70011

Browse files
committed
chore(*): Add loading indicator while processing esf list data
1 parent accd8dd commit 2b70011

File tree

5 files changed

+51
-25
lines changed

5 files changed

+51
-25
lines changed

projects/igniteui-angular/src/lib/grids/filtering/excel-style/excel-style-filtering.component.ts

Lines changed: 41 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -160,29 +160,13 @@ export class IgxGridExcelStyleFilteringComponent extends BaseFilteringComponent
160160
*/
161161
@Input()
162162
public set column(value: ColumnType) {
163-
this._column = value;
164-
this.listData = new Array<FilterListItem>();
165-
this.columnChange.emit(this._column);
166-
167-
this.subscriptions?.unsubscribe();
168-
169-
if (this._column) {
170-
this.grid.filteringService.registerSVGIcons();
171-
this.init();
172-
this.sortingChanged.emit();
173-
174-
this.subscriptions = this.grid.columnPin.subscribe(() => {
175-
requestAnimationFrame(() => {
176-
if (!(this.cdr as ViewRef).destroyed) {
177-
this.cdr.detectChanges();
178-
}
179-
});
180-
});
181-
182-
this.subscriptions.add(this.grid.columnVisibilityChanged.subscribe(() => this.detectChanges()));
183-
this.subscriptions.add(this.grid.sortingExpressionsChange.subscribe(() => this.sortingChanged.emit()));
184-
this.subscriptions.add(this.grid.filteringExpressionsTreeChange.subscribe(() => this.init()));
185-
this.subscriptions.add(this.grid.columnMovingEnd.subscribe(() => this.cdr.markForCheck()));
163+
if (value) {
164+
this._column = value;
165+
this.columnChange.emit(this._column);
166+
if (this.inline) {
167+
// In case external filtering
168+
this.populateData();
169+
}
186170
}
187171
}
188172

@@ -326,6 +310,16 @@ export class IgxGridExcelStyleFilteringComponent extends BaseFilteringComponent
326310
this.inline = false;
327311
this.column = column;
328312
this.overlayService = overlayService;
313+
314+
}
315+
316+
/**
317+
* @hidden @internal
318+
*/
319+
public populateData() {
320+
if (this.column) {
321+
this.afterColumnChange();
322+
}
329323
if (this._originalDisplay) {
330324
this.element.nativeElement.style.display = this._originalDisplay;
331325
}
@@ -421,6 +415,30 @@ export class IgxGridExcelStyleFilteringComponent extends BaseFilteringComponent
421415
return this.computedStyles?.getPropertyValue('--component-size');
422416
}
423417

418+
protected afterColumnChange() {
419+
this.listData = new Array<FilterListItem>();
420+
this.subscriptions?.unsubscribe();
421+
422+
if (this._column) {
423+
this.grid.filteringService.registerSVGIcons();
424+
this.init();
425+
this.sortingChanged.emit();
426+
427+
this.subscriptions = this.grid.columnPin.subscribe(() => {
428+
requestAnimationFrame(() => {
429+
if (!(this.cdr as ViewRef).destroyed) {
430+
this.cdr.detectChanges();
431+
}
432+
});
433+
});
434+
435+
this.subscriptions.add(this.grid.columnVisibilityChanged.subscribe(() => this.detectChanges()));
436+
this.subscriptions.add(this.grid.sortingExpressionsChange.subscribe(() => this.sortingChanged.emit()));
437+
this.subscriptions.add(this.grid.filteringExpressionsTreeChange.subscribe(() => this.init()));
438+
this.subscriptions.add(this.grid.columnMovingEnd.subscribe(() => this.cdr.markForCheck()));
439+
}
440+
}
441+
424442
private init() {
425443
this.expressionsList = new Array<ExpressionUI>();
426444
generateExpressionsList(this.column.filteringExpressionsTree, this.grid.filteringLogic, this.expressionsList);

projects/igniteui-angular/src/lib/grids/filtering/excel-style/excel-style-search.component.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ export class IgxExcelStyleSearchComponent implements AfterViewInit, OnDestroy {
203203
protected activeDescendant = '';
204204

205205
private _id = `igx-excel-style-search-${NEXT_ID++}`;
206-
private _isLoading;
206+
private _isLoading = true;
207207
private _addToCurrentFilterItem: FilterListItem;
208208
private _selectAllItem: FilterListItem;
209209
private _hierarchicalSelectedItems: FilterListItem[];

projects/igniteui-angular/src/lib/grids/filtering/grid-filtering.service.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import { takeUntil, first } from 'rxjs/operators';
99
import { IForOfState } from '../../directives/for-of/for_of.directive';
1010
import { IFilteringOperation } from '../../data-operations/filtering-condition';
1111
import { IColumnResizeEventArgs, IFilteringEventArgs } from '../common/events';
12-
import { OverlayCancelableEventArgs, OverlaySettings, VerticalAlignment } from '../../services/overlay/utilities';
12+
import { OverlayCancelableEventArgs, OverlayEventArgs, OverlaySettings, VerticalAlignment } from '../../services/overlay/utilities';
1313
import { IgxOverlayService } from '../../services/overlay/overlay';
1414
import { useAnimation } from '@angular/animations';
1515
import { AbsoluteScrollStrategy } from '../../services/overlay/scroll/absolute-scroll-strategy';
@@ -86,6 +86,12 @@ export class IgxFilteringService implements OnDestroy {
8686
this.lastActiveNode = this.grid.navigation.activeNode;
8787
});
8888

89+
this._overlayService.opened.pipe(first(overlay => overlay.id === id), takeUntil(this.destroy$)).subscribe((event: OverlayEventArgs) => {
90+
if (event.componentRef) {
91+
event.componentRef.instance.populateData();
92+
}
93+
});
94+
8995
this._overlayService.closed
9096
.pipe(
9197
first(overlay => overlay.id === id),

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4143,6 +4143,7 @@ export abstract class IgxGridBaseDirective implements GridType,
41434143
options.outlet = this.outlet;
41444144
if (this.excelStyleFilteringComponent) {
41454145
this.excelStyleFilteringComponent.initialize(column, this.overlayService);
4146+
this.excelStyleFilteringComponent.populateData();
41464147
const id = this.overlayService.attach(this.excelStyleFilteringComponent.element, options);
41474148
this.excelStyleFilteringComponent.overlayComponentId = id;
41484149
return id;

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1164,6 +1164,7 @@ export class IgxPivotGridComponent extends IgxGridBaseDirective implements OnIni
11641164
options.outlet = this.outlet;
11651165
if (dropdown) {
11661166
dropdown.initialize(column, this.overlayService);
1167+
dropdown.populateData();
11671168
if (shouldReatach) {
11681169
const id = this.overlayService.attach(dropdown.element, options);
11691170
dropdown.overlayComponentId = id;

0 commit comments

Comments
 (0)