From b2ed0646bba9708ba35ae2c335a84958da35f793 Mon Sep 17 00:00:00 2001 From: MKirova Date: Fri, 6 Feb 2026 14:10:12 +0200 Subject: [PATCH 1/3] fix(igxGrid): Add handling for outlet in case actionstrip is added post init. --- .../igniteui-angular/grids/grid/src/grid-base.directive.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/projects/igniteui-angular/grids/grid/src/grid-base.directive.ts b/projects/igniteui-angular/grids/grid/src/grid-base.directive.ts index 5f9569e92a3..e8637039b4f 100644 --- a/projects/igniteui-angular/grids/grid/src/grid-base.directive.ts +++ b/projects/igniteui-angular/grids/grid/src/grid-base.directive.ts @@ -4004,6 +4004,13 @@ export abstract class IgxGridBaseDirective implements GridType, this.paginationComponents.changes.pipe(takeUntil(this.destroy$)).subscribe(() => { this.setUpPaginator(); }); + + this.actionStripComponents.changes.pipe(takeUntil(this.destroy$)).subscribe(() => { + if (this.actionStrip) { + this.actionStrip.menuOverlaySettings.outlet = this.outlet; + } + }); + if (this.actionStrip) { this.actionStrip.menuOverlaySettings.outlet = this.outlet; } From ad3130c93a9842e3de95ff793b8f537b5138c968 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 6 Feb 2026 12:20:17 +0000 Subject: [PATCH 2/3] test(grid): Add tests for dynamic action strip addition and outlet handling --- .../grids/grid/src/grid-add-row.spec.ts | 33 ++++++++++++- .../test-utils/grid-samples.spec.ts | 48 +++++++++++++++++++ 2 files changed, 80 insertions(+), 1 deletion(-) diff --git a/projects/igniteui-angular/grids/grid/src/grid-add-row.spec.ts b/projects/igniteui-angular/grids/grid/src/grid-add-row.spec.ts index bc3beb7bfeb..23dd061e945 100644 --- a/projects/igniteui-angular/grids/grid/src/grid-add-row.spec.ts +++ b/projects/igniteui-angular/grids/grid/src/grid-add-row.spec.ts @@ -4,7 +4,8 @@ import { TestBed, fakeAsync, tick, waitForAsync } from '@angular/core/testing'; import { DebugElement } from '@angular/core'; import { GridFunctions, GridSummaryFunctions } from '../../../test-utils/grid-functions.spec'; import { - IgxAddRowComponent, IgxGridRowEditingDefinedColumnsComponent, IgxGridRowEditingTransactionComponent + IgxAddRowComponent, IgxGridRowEditingDefinedColumnsComponent, IgxGridRowEditingTransactionComponent, + GridDynamicActionStripComponent } from '../../../test-utils/grid-samples.spec'; import { By } from '@angular/platform-browser'; @@ -1121,4 +1122,34 @@ describe('IgxGrid - Row Adding #grid', () => { expect(grid.rowChangesCount).toEqual(3); }); }); + + describe('ActionStrip - Dynamic Addition', () => { + let actionStrip: IgxActionStripComponent; + + beforeEach(() => { + fixture = TestBed.createComponent(GridDynamicActionStripComponent); + fixture.detectChanges(); + grid = fixture.componentInstance.grid; + }); + + it('Should set outlet for actionstrip menu when added post-init', async () => { + // Verify no actionstrip initially + expect(fixture.componentInstance.actionStrip).toBeUndefined(); + expect(grid.actionStrip).toBeUndefined(); + + // Add the actionstrip dynamically + fixture.componentInstance.showActionStrip = true; + fixture.detectChanges(); + await wait(16); + + // Get reference to the actionstrip + actionStrip = fixture.componentInstance.actionStrip; + expect(actionStrip).toBeDefined(); + expect(grid.actionStrip).toBeDefined(); + + // Verify that the outlet is properly set + expect(actionStrip.menuOverlaySettings.outlet).toBeDefined(); + expect(actionStrip.menuOverlaySettings.outlet).toBe(grid.outlet); + }); + }); }); diff --git a/projects/igniteui-angular/test-utils/grid-samples.spec.ts b/projects/igniteui-angular/test-utils/grid-samples.spec.ts index 05685a5cd69..7cf8a9e9aec 100644 --- a/projects/igniteui-angular/test-utils/grid-samples.spec.ts +++ b/projects/igniteui-angular/test-utils/grid-samples.spec.ts @@ -2419,6 +2419,54 @@ export class IgxAddRowComponent implements OnInit { } } +@Component({ + template: ` + + @for (c of columns; track c.field) { + + } + + @if (showActionStrip) { + + + + } + +`, + imports: [ + IgxGridComponent, + IgxColumnComponent, + IgxActionStripComponent, + IgxGridEditingActionsComponent + ] +}) +export class GridDynamicActionStripComponent implements OnInit { + @ViewChild('actionStrip', { read: IgxActionStripComponent }) + public actionStrip: IgxActionStripComponent; + + @ViewChild('grid', { read: IgxGridComponent, static: true }) + public grid: IgxGridComponent; + + public data: any[]; + public columns: any[]; + public showActionStrip = false; + + public ngOnInit() { + this.columns = [ + { field: 'ID', width: '200px' }, + { field: 'CompanyName', width: '200px' }, + { field: 'ContactName', width: '200px' } + ]; + + this.data = [ + { ID: 'ALFKI', CompanyName: 'Alfreds Futterkiste', ContactName: 'Maria Anders' }, + { ID: 'ANATR', CompanyName: 'Ana Trujillo Emparedados y helados', ContactName: 'Ana Trujillo' }, + { ID: 'ANTON', CompanyName: 'Antonio Moreno Taquería', ContactName: 'Antonio Moreno' } + ]; + } +} + @Component({ template: GridTemplateStrings.declareGrid(` [hideGroupedColumns]="true"`, '', ColumnDefinitions.exportGroupedDataColumns), imports: [IgxGridComponent, IgxColumnComponent] From 3f5790d0b38bf8f291772f8c923c20d9e5cc4328 Mon Sep 17 00:00:00 2001 From: MKirova Date: Fri, 6 Feb 2026 14:29:04 +0200 Subject: [PATCH 3/3] chore(*): Fix error lint. --- projects/igniteui-angular/grids/grid/src/grid-add-row.spec.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/projects/igniteui-angular/grids/grid/src/grid-add-row.spec.ts b/projects/igniteui-angular/grids/grid/src/grid-add-row.spec.ts index 23dd061e945..dc9e7ea29e8 100644 --- a/projects/igniteui-angular/grids/grid/src/grid-add-row.spec.ts +++ b/projects/igniteui-angular/grids/grid/src/grid-add-row.spec.ts @@ -1124,8 +1124,6 @@ describe('IgxGrid - Row Adding #grid', () => { }); describe('ActionStrip - Dynamic Addition', () => { - let actionStrip: IgxActionStripComponent; - beforeEach(() => { fixture = TestBed.createComponent(GridDynamicActionStripComponent); fixture.detectChanges();