Skip to content

Commit 5db634b

Browse files
authored
Merge branch '15.1.x' into ibarakov/fix-12581-15.1.x
2 parents e87eed0 + fcd8129 commit 5db634b

File tree

7 files changed

+89
-12
lines changed

7 files changed

+89
-12
lines changed

projects/igniteui-angular/src/lib/chips/chip.component.ts

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@
1111
Renderer2,
1212
TemplateRef,
1313
Inject,
14-
Optional
14+
Optional,
15+
OnDestroy
1516
} from '@angular/core';
1617
import { IDisplayDensityOptions, DisplayDensityToken, DisplayDensityBase } from '../core/displayDensity';
1718
import {
@@ -24,7 +25,7 @@ import {
2425
import { IBaseEventArgs } from '../core/utils';
2526
import { IChipResourceStrings } from '../core/i18n/chip-resources';
2627
import { CurrentResourceStrings } from '../core/i18n/resources';
27-
import { fromEvent } from 'rxjs';
28+
import { fromEvent, Subject } from 'rxjs';
2829
import { take, filter } from 'rxjs/operators';
2930

3031
export interface IBaseChipEventArgs extends IBaseEventArgs {
@@ -79,7 +80,7 @@ let CHIP_ID = 0;
7980
selector: 'igx-chip',
8081
templateUrl: 'chip.component.html'
8182
})
82-
export class IgxChipComponent extends DisplayDensityBase {
83+
export class IgxChipComponent extends DisplayDensityBase implements OnDestroy {
8384
/**
8485
* An @Input property that sets the value of `id` attribute. If not provided it will be automatically generated.
8586
*
@@ -536,6 +537,12 @@ export class IgxChipComponent extends DisplayDensityBase {
536537
*/
537538
public hideBaseElement = false;
538539

540+
/**
541+
* @hidden
542+
* @internal
543+
*/
544+
public destroy$ = new Subject();
545+
539546
protected _tabIndex = null;
540547
protected _selected = false;
541548
protected _selectedItemClass = 'igx-chip__item--selected';
@@ -854,4 +861,9 @@ export class IgxChipComponent extends DisplayDensityBase {
854861
}
855862
}
856863
}
864+
865+
public ngOnDestroy(): void {
866+
this.destroy$.next();
867+
this.destroy$.complete();
868+
}
857869
}

projects/igniteui-angular/src/lib/chips/chips-area.component.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -223,20 +223,20 @@ export class IgxChipsAreaComponent implements DoCheck, AfterViewInit, OnDestroy
223223
const changes = this._differ.diff(this.chipsList.toArray());
224224
if (changes) {
225225
changes.forEachAddedItem((addedChip) => {
226-
addedChip.item.moveStart.pipe(takeUntil(this.destroy$)).subscribe((args) => {
226+
addedChip.item.moveStart.pipe(takeUntil(addedChip.item.destroy$)).subscribe((args) => {
227227
this.onChipMoveStart(args);
228228
});
229-
addedChip.item.moveEnd.pipe(takeUntil(this.destroy$)).subscribe((args) => {
229+
addedChip.item.moveEnd.pipe(takeUntil(addedChip.item.destroy$)).subscribe((args) => {
230230
this.onChipMoveEnd(args);
231231
});
232-
addedChip.item.dragEnter.pipe(takeUntil(this.destroy$)).subscribe((args) => {
232+
addedChip.item.dragEnter.pipe(takeUntil(addedChip.item.destroy$)).subscribe((args) => {
233233
this.onChipDragEnter(args);
234234
});
235-
addedChip.item.keyDown.pipe(takeUntil(this.destroy$)).subscribe((args) => {
235+
addedChip.item.keyDown.pipe(takeUntil(addedChip.item.destroy$)).subscribe((args) => {
236236
this.onChipKeyDown(args);
237237
});
238238
if (addedChip.item.selectable) {
239-
addedChip.item.selectedChanging.pipe(takeUntil(this.destroy$)).subscribe((args) => {
239+
addedChip.item.selectedChanging.pipe(takeUntil(addedChip.item.destroy$)).subscribe((args) => {
240240
this.onChipSelectionChange(args);
241241
});
242242
}

projects/igniteui-angular/src/lib/core/styles/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ Learn how to create themes:
3333
* [Component Themes](https://www.infragistics.com/products/ignite-ui-angular/angular/components/themes/component-themes.html)
3434

3535
Learn how to create a component schema:
36-
* [Schemas](https://www.infragistics.com/products/ignite-ui-angular/angular/components/themes/schemas.html)
36+
* [Schemas](https://www.infragistics.com/products/ignite-ui-angular/angular/components/themes/sass/schemas)
3737

3838
Learn how to build color palettes:
3939
* [Palettes](https://www.infragistics.com/products/ignite-ui-angular/angular/components/themes/palette.html)

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

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2144,6 +2144,63 @@ describe('IgxGrid - Advanced Filtering #grid - ', () => {
21442144
expect(GridFunctions.getAdvancedFilteringTreeChildItems(secondItem, false).length).toBe(1);
21452145
}));
21462146

2147+
it('Should respect the changes of the groups applied from the context menu.',
2148+
fakeAsync(() => {
2149+
// Apply advanced filter through API.
2150+
const tree = new FilteringExpressionsTree(FilteringLogic.And);
2151+
tree.filteringOperands.push({
2152+
fieldName: 'ProductName', searchVal: 'angular', condition: IgxStringFilteringOperand.instance().condition('contains'),
2153+
ignoreCase: true
2154+
});
2155+
tree.filteringOperands.push({
2156+
fieldName: 'ProductName', searchVal: 'script', condition: IgxStringFilteringOperand.instance().condition('contains'),
2157+
ignoreCase: true
2158+
});
2159+
grid.advancedFilteringExpressionsTree = tree;
2160+
fix.detectChanges();
2161+
2162+
// Verify the filter changes are applied.
2163+
expect(grid.filteredData.length).toEqual(0);
2164+
2165+
// Open Advanced Filtering dialog.
2166+
grid.openAdvancedFilteringDialog();
2167+
fix.detectChanges();
2168+
2169+
// Verify tree layout before the group change through context menu.
2170+
let rootGroup = GridFunctions.getAdvancedFilteringTreeRootGroup(fix);
2171+
expect(GridFunctions.getAdvancedFilteringTreeChildItems(rootGroup, true).length).toBe(2);
2172+
expect(GridFunctions.getAdvancedFilteringTreeChildItems(rootGroup, false).length).toBe(2);
2173+
2174+
// Select two chips.
2175+
GridFunctions.clickAdvancedFilteringTreeExpressionChip(fix, [0]);
2176+
GridFunctions.clickAdvancedFilteringTreeExpressionChip(fix, [1]);
2177+
tick(200);
2178+
2179+
// Click "Create Or Group" in context menu.
2180+
const buttons = GridFunctions.getAdvancedFilteringContextMenuButtons(fix);
2181+
buttons[2].click();
2182+
tick(100);
2183+
fix.detectChanges();
2184+
2185+
// Close dialog through API.
2186+
grid.closeAdvancedFilteringDialog(true);
2187+
tick(100);
2188+
fix.detectChanges();
2189+
2190+
// Open Advanced Filtering dialog.
2191+
grid.openAdvancedFilteringDialog();
2192+
fix.detectChanges();
2193+
2194+
// Verify tree layout after the group change through context menu.
2195+
rootGroup = GridFunctions.getAdvancedFilteringTreeRootGroup(fix);
2196+
expect(GridFunctions.getAdvancedFilteringTreeChildItems(rootGroup, true).length).toBe(1);
2197+
expect(GridFunctions.getAdvancedFilteringTreeChildItems(rootGroup, false).length).toBe(3);
2198+
2199+
// Verify the filter changes are applied.
2200+
expect(grid.filteredData.length).toEqual(3);
2201+
}));
2202+
2203+
21472204
it('Should delete all selected conditions when the \'delete filters\' option from context menu is clicked.',
21482205
fakeAsync(() => {
21492206
// Apply advanced filter through API.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
<div class="igx-grid__hierarchical-indent" [ngClass]="{'igx-grid__hierarchical-indent--scroll': parentHasScroll}">
2-
<igx-hierarchical-grid #hgrid [data]='data.childGridsData[layout.key]'></igx-hierarchical-grid>
2+
<ng-container #container></ng-container>
33
</div>

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

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,12 @@ export class IgxChildGridRowComponent implements AfterViewInit, OnInit {
9595
@Input()
9696
public index: number;
9797

98-
@ViewChild('hgrid', { static: true })
98+
@ViewChild('container', {read: ViewContainerRef, static: true})
99+
public container: ViewContainerRef;
100+
101+
/**
102+
* @hidden
103+
*/
99104
public hGrid: IgxHierarchicalGridComponent;
100105

101106
/**
@@ -155,6 +160,9 @@ export class IgxChildGridRowComponent implements AfterViewInit, OnInit {
155160
* @hidden
156161
*/
157162
public ngOnInit() {
163+
const ref = this.container.createComponent(IgxHierarchicalGridComponent, { injector: this.container.injector });
164+
this.hGrid = ref.instance;
165+
this.hGrid.data = this.data.childGridsData[this.layout.key];
158166
this.layout.layoutChange.subscribe((ch) => {
159167
this._handleLayoutChanges(ch);
160168
});

projects/igniteui-angular/src/lib/query-builder/query-builder.component.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1164,8 +1164,8 @@ export class IgxQueryBuilderComponent extends DisplayDensityBase implements Afte
11641164
parent.children.splice(index, 0, groupItem);
11651165

11661166
for (const expr of this.selectedExpressions) {
1167-
this.deleteItem(expr);
11681167
groupItem.children.push(expr);
1168+
this.deleteItem(expr);
11691169
expr.parent = groupItem;
11701170
}
11711171

0 commit comments

Comments
 (0)