Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
a36aa13
feat(overlay): remove outlet from pickers
wnvko Apr 3, 2026
d9f13ed
feat(overlay): remove outlet from notifications
wnvko Apr 3, 2026
20cc250
feat(overlay): remove outlet from toggle directive
wnvko Apr 3, 2026
c2f3146
feat(overlay): remove row editing outlet
wnvko Apr 3, 2026
835c6fc
feat(overlay): remove grid loading outlet
wnvko Apr 3, 2026
b793b4d
feat(overlay): remove outlet from query builder
wnvko Apr 3, 2026
f748bfc
feat(overlay): remove outlet from grid toolbar
wnvko Apr 3, 2026
c67e0a7
feat(overlay): remove outlet from column moving
wnvko Apr 6, 2026
3149ee2
feat(overlay): remove outlet from filtering row
wnvko Apr 6, 2026
1a703a9
feat(overlay): remove outlet form grid's action strip
wnvko Apr 6, 2026
4d1292d
feat(overlay): remove outlet from grid paginator
wnvko Apr 6, 2026
838eab6
feat(overlay): remove outlet from query builder tree
wnvko Apr 6, 2026
975ec1f
chore(overlay): address PR comments
wnvko Apr 6, 2026
fd142ac
chore(overlay): address PR comments - 2
wnvko Apr 6, 2026
dbd78cf
Merge remote-tracking branch 'remotes/origin/master' into mvenkov/rem…
wnvko Apr 6, 2026
df2ca1a
Merge branch 'master' into mvenkov/remove-internal-overlay-outlets
ChronosSF Apr 6, 2026
be730aa
chore(overlay): revert public properties removal
wnvko Apr 7, 2026
af6099e
feat(overlay): remove igxDragGhostHost and reuse grid outlet instead
wnvko Apr 7, 2026
60c6392
Merge branch 'mvenkov/remove-internal-overlay-outlets' of https://git…
wnvko Apr 7, 2026
713812b
chore(overlay): remove unnecessary change in notifications directive
wnvko Apr 7, 2026
e26d8c5
Merge branch 'master' into mvenkov/remove-internal-overlay-outlets
ChronosSF Apr 8, 2026
8c14e94
Merge branch 'master' into mvenkov/remove-internal-overlay-outlets
damyanpetev Apr 8, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,9 @@ import { IFormattingViews, IgxCalendarComponent, IgxCalendarHeaderTemplateDirect
import { IgxCalendarContainerComponent } from './calendar-container/calendar-container.component';
import { IgxDatePickerComponent } from './date-picker.component';
import {
IgxOverlayOutletDirective,
IgxOverlayService,
OverlayCancelableEventArgs, OverlayClosingEventArgs, OverlayEventArgs, OverlaySettings,
WEEKDAYS,
BaseFormatter,
I18N_FORMATTER
WEEKDAYS
} from 'igniteui-angular/core';
import { ChangeDetectorRef, Component, DebugElement, ElementRef, EventEmitter, Injector, QueryList, Renderer2, ViewChild } from '@angular/core';
import { By } from '@angular/platform-browser';
Expand Down Expand Up @@ -1064,7 +1061,6 @@ describe('IgxDatePicker', () => {
expect(datePicker.isDropdown).toEqual(true);
expect(datePicker.minValue).toEqual(undefined);
expect(datePicker.maxValue).toEqual(undefined);
expect(datePicker.outlet).toEqual(undefined);
expect(datePicker.specialDates).toEqual(null);
expect(datePicker.spinDelta).toEqual(undefined);
expect(datePicker.spinLoop).toEqual(true);
Expand Down Expand Up @@ -1152,15 +1148,6 @@ describe('IgxDatePicker', () => {
expect(datePicker.maxValue).toEqual(today);
datePicker.maxValue = '12/12/1998';
expect(datePicker.maxValue).toEqual('12/12/1998');
datePicker.outlet = null;
expect(datePicker.outlet).toEqual(null);
const mockEl: ElementRef = jasmine.createSpyObj<ElementRef>('mockEl', ['nativeElement']);
datePicker.outlet = mockEl;
expect(datePicker.outlet).toEqual(mockEl);
const mockOverlayDirective: IgxOverlayOutletDirective =
jasmine.createSpyObj<IgxOverlayOutletDirective>('mockEl', ['nativeElement']);
datePicker.outlet = mockOverlayDirective;
expect(datePicker.outlet).toEqual(mockOverlayDirective);
const specialDates: DateRangeDescriptor[] = [{ type: DateRangeType.Weekdays },
{ type: DateRangeType.Before, dateRange: [today] }];
datePicker.specialDates = specialDates;
Expand Down Expand Up @@ -1286,21 +1273,18 @@ describe('IgxDatePicker', () => {
datePicker.open();
expect(overlay.attach).toHaveBeenCalledWith(IgxCalendarContainerComponent, viewsContainerRef, baseDropdownSettings);
expect(overlay.show).toHaveBeenCalledWith(mockOverlayId);
const mockOutlet = {} as any;
datePicker.outlet = mockOutlet;
datePicker.open();
expect(overlay.attach).toHaveBeenCalledWith(
IgxCalendarContainerComponent,
viewsContainerRef,
Object.assign({}, baseDropdownSettings, { outlet: mockOutlet }),
Object.assign({}, baseDropdownSettings),
);
expect(overlay.show).toHaveBeenCalledWith(mockOverlayId);
let mockSettings: OverlaySettings = {
closeOnEscape: true,
closeOnOutsideClick: true,
modal: false
};
datePicker.outlet = null;
datePicker.open(mockSettings);
expect(overlay.attach).toHaveBeenCalledWith(
IgxCalendarContainerComponent,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import {
ChangeDetectorRef,
Component,
ContentChild,
ElementRef,
EventEmitter,
HostBinding,
HostListener,
Expand Down Expand Up @@ -243,25 +242,6 @@ export class IgxDatePickerComponent extends PickerBaseDirective implements Contr
@Input()
public spinDelta: Pick<DatePartDeltas, 'date' | 'month' | 'year'>;

/**
* Gets/Sets the container used for the popup element.
* @remarks
* `outlet` is an instance of `IgxOverlayOutletDirective` or an `ElementRef`.
* @example
* ```html
* <div igxOverlayOutlet #outlet="overlay-outlet"></div>
* //..
* <igx-date-picker [outlet]="outlet"></igx-date-picker>
* //..
* ```
*
* @deprecated in version 21.2.0. Overlays now use the HTML Popover API and no longer move to the document
* body by default, so using outlet is also no longer needed - just define the overlay in the intended
* DOM tree position instead.
*/
@Input()
public override outlet: IgxOverlayOutletDirective | ElementRef;

/**
* Gets/Sets the value of `id` attribute.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,7 @@ import {
DateTimeUtil,
IgxPickerActionsDirective,
isDateInRanges,
PickerCalendarOrientation,
IgxOverlayOutletDirective
PickerCalendarOrientation
} from 'igniteui-angular/core';
import { IgxCalendarContainerComponent } from '../date-picker/calendar-container/calendar-container.component';
import { PickerBaseDirective } from '../date-picker/picker-base.directive';
Expand Down Expand Up @@ -364,26 +363,6 @@ export class IgxDateRangePickerComponent extends PickerBaseDirective
@Input()
public override placeholder = '';

/**
* Gets/Sets the container used for the popup element.
*
* @remarks
* `outlet` is an instance of `IgxOverlayOutletDirective` or an `ElementRef`.
* @example
* ```html
* <div igxOverlayOutlet #outlet="overlay-outlet"></div>
* //..
* <igx-date-range-picker [outlet]="outlet"></igx-date-range-picker>
* //..
* ```
*
* @deprecated in version 21.2.0. Overlays now use the HTML Popover API and no longer move to the document
* body by default, so using outlet is also no longer needed - just define the overlay in the intended
* DOM tree position instead.
*/
@Input()
public override outlet: IgxOverlayOutletDirective | ElementRef<any>;

/**
* Show/hide week numbers
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { IgxToggleActionDirective, IgxToggleDirective } from './toggle.directive';

import { first } from 'rxjs/operators';
import { AbsoluteScrollStrategy, AutoPositionStrategy, CancelableEventArgs, ConnectedPositioningStrategy, HorizontalAlignment, IgxOverlayOutletDirective, IgxOverlayService, OffsetMode, OverlaySettings } from 'igniteui-angular/core';
import { AbsoluteScrollStrategy, AutoPositionStrategy, CancelableEventArgs, ConnectedPositioningStrategy, HorizontalAlignment, IgxOverlayService, OffsetMode, OverlaySettings } from 'igniteui-angular/core';

describe('IgxToggle', () => {
const HIDDEN_TOGGLER_CLASS = 'igx-toggle--hidden';
Expand All @@ -15,7 +15,6 @@ describe('IgxToggle', () => {
imports: [
NoopAnimationsModule,
IgxToggleActionTestComponent,
IgxToggleOutletComponent,
IgxToggleServiceInjectComponent,
IgxOverlayServiceComponent,
IgxToggleTestComponent,
Expand Down Expand Up @@ -610,29 +609,6 @@ describe('IgxToggle', () => {
expect(toggle.closing.emit).toHaveBeenCalledWith({ id: '0', owner: toggle, cancel: false, event: new Event('click') });
expect(toggle.closed.emit).toHaveBeenCalledTimes(1);
}));

it('should pass IgxOverlayOutletDirective input from IgxToggleActionDirective', () => {
const fixture = TestBed.createComponent(IgxToggleOutletComponent);
const outlet = fixture.debugElement.query(By.css('.outlet-container')).nativeElement;
const toggleSpy = spyOn(IgxToggleDirective.prototype, 'toggle');
const button = fixture.debugElement.query(By.directive(IgxToggleActionDirective)).nativeElement;
fixture.detectChanges();

const settings: OverlaySettings = {
target: button,
positionStrategy: jasmine.any(ConnectedPositioningStrategy) as any,
closeOnOutsideClick: true,
modal: false,
scrollStrategy: jasmine.any(AbsoluteScrollStrategy) as any,
outlet: jasmine.any(IgxOverlayOutletDirective) as any,
excludeFromOutsideClick: [button]
};

fixture.componentInstance.toggleAction.onClick();
expect(IgxToggleDirective.prototype.toggle).toHaveBeenCalledWith(settings);
const directive = toggleSpy.calls.mostRecent().args[0].outlet as IgxOverlayOutletDirective;
expect(directive.nativeElement).toBe(outlet);
});
});
});

Expand Down Expand Up @@ -678,16 +654,6 @@ export class IgxToggleActionTestComponent {
}
}

@Component({
template: `
<button type="button" [igxToggleAction]="toggleRef" [overlaySettings]="{}" [igxToggleOutlet]="outlet"></button>
<div igxToggle #toggleRef="toggle"></div>
<div igxOverlayOutlet #outlet="overlay-outlet" class="outlet-container"></div>
`,
imports: [IgxToggleActionDirective, IgxToggleDirective, IgxOverlayOutletDirective]
})
export class IgxToggleOutletComponent extends IgxToggleActionTestComponent { }

@Component({
template: `
<button type="button" igxToggleAction="toggleID">Open/Close Toggle</button>
Expand Down
3 changes: 0 additions & 3 deletions projects/igniteui-angular/grids/core/src/cell.component.html
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,6 @@
<ng-container [formGroup]="formGroup">
<igx-date-picker
[style.width.%]="100"
[outlet]="grid.outlet"
mode="dropdown"
[locale]="grid.locale"
[weekStart]="column.pipeArgs.weekStart"
Expand All @@ -142,7 +141,6 @@
<ng-container [formGroup]="formGroup">
<igx-time-picker
[style.width.%]="100"
[outlet]="grid.outlet"
mode="dropdown"
[locale]="grid.locale"
[inputFormat]="column.editorOptions?.dateTimeFormat"
Expand Down Expand Up @@ -215,7 +213,6 @@
name="error"
#errorIcon
[igxTooltipTarget]="tooltipRef"
[igxToggleOutlet]="grid.outlet"
(mouseover)='errorShowing = true'
(mouseout)='errorShowing = false'>
</igx-icon>
Expand Down
1 change: 0 additions & 1 deletion projects/igniteui-angular/grids/core/src/cell.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -920,7 +920,6 @@ export class IgxGridCellComponent implements OnInit, OnChanges, OnDestroy, CellT
closeOnOutsideClick: true,
excludeFromOutsideClick: [this.nativeElement],
closeOnEscape: false,
outlet: this.grid.outlet,
modal: false,
positionStrategy: new AutoPositionStrategy({
horizontalStartPoint: HorizontalAlignment.Center,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Component, Input, ViewChild, ChangeDetectorRef, AfterViewInit, OnDestroy, HostBinding, inject } from '@angular/core';
import { Component, Input, ViewChild, ChangeDetectorRef, OnDestroy, HostBinding, inject } from '@angular/core';
import { Subject } from 'rxjs';
import { IActiveNode } from '../../grid-navigation.service';
import { GridType } from '../../common/grid.interface';
Expand Down Expand Up @@ -34,7 +34,7 @@ import {
templateUrl: './advanced-filtering-dialog.component.html',
imports: [IgxDragDirective, NgClass, IgxQueryBuilderComponent, IgxQueryBuilderHeaderComponent, IgxDragHandleDirective, IgxButtonDirective]
})
export class IgxAdvancedFilteringDialogComponent implements AfterViewInit, OnDestroy {
export class IgxAdvancedFilteringDialogComponent implements OnDestroy {
public cdr = inject(ChangeDetectorRef);
protected platform = inject(PlatformUtil);

Expand Down Expand Up @@ -75,12 +75,6 @@ export class IgxAdvancedFilteringDialogComponent implements AfterViewInit, OnDes
this.assignResourceStrings(false);
}, this);
}
/**
* @hidden @internal
*/
public ngAfterViewInit(): void {
this.queryBuilder.setPickerOutlet(this.grid.outlet);
}

/**
* @hidden @internal
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,6 @@
<ng-template #defaultDateUI>
<igx-date-picker #picker
[(value)]="value"
[outlet]="filteringService.grid.outlet"
[locale]="filteringService.grid.locale"
(click)="expression.condition.isUnary ? null : picker.open()"
type="box"
Expand Down Expand Up @@ -112,7 +111,6 @@
[displayFormat]="column.pipeArgs.format"
[locale]="filteringService.grid.locale"
[formatter]="column.formatter"
[outlet]="filteringService.grid.outlet"
type="box"
[style.--ig-size]="filteringElementsSize"
[placeholder]="placeholder"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -245,9 +245,6 @@ export class IgxGridFilteringRowComponent implements OnInit, AfterViewInit, OnDe
}

public ngAfterViewInit() {
this._conditionsOverlaySettings.outlet = this.column.grid.outlet;
this._operatorsOverlaySettings.outlet = this.column.grid.outlet;

const selectedItem = this.expressionsList.find(expr => expr.isSelected === true);
if (selectedItem) {
this.expression = selectedItem.expression;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
[weekStart]="column.pipeArgs.weekStart ?? weekStart"
[(ngModel)]="searchVal"
[locale]="grid.locale"
[outlet]="grid.outlet"
(click)="picker.open()"
[placeholder]="inputDatePlaceholder"
[formatter]="column.formatter"
Expand All @@ -41,7 +40,6 @@
<igx-time-picker #picker
[(ngModel)]="searchVal"
[locale]="grid.locale"
[outlet]="grid.outlet"
(click)="picker.open()"
[placeholder]="inputTimePlaceholder"
[displayFormat]="column.pipeArgs.format"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ export abstract class BaseToolbarDirective implements OnDestroy {
}
toggleRef.toggle({
...this.overlaySettings, ...{
target: anchorElement, outlet: this.grid.outlet,
target: anchorElement,
excludeFromOutsideClick: [anchorElement]
}
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -255,15 +255,15 @@ describe('Column Pinning UI #grid', () => {
pinningUIButton.click();
fix.detectChanges();

expect(GridFunctions.getOverlay(fix).querySelectorAll('igx-checkbox').length).toEqual(5);
expect(fix.nativeElement.querySelectorAll('igx-grid-toolbar-pinning igx-checkbox').length).toEqual(5);

grid.columnList.get(0).disablePinning = true;
fix.detectChanges();

pinningUIButton.click();
fix.detectChanges();

expect(GridFunctions.getOverlay(fix).querySelectorAll('igx-checkbox').length).toEqual(4);
expect(fix.nativeElement.querySelectorAll('igx-grid-toolbar-pinning igx-checkbox').length).toEqual(4);
});

it('Checks order of columns after unpinning', () => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,6 @@
<ng-container [formGroup]="formGroup">
<igx-date-picker
[style.width.%]="100"
[outlet]="grid.outlet"
mode="dropdown"
[locale]="grid.locale"
[weekStart]="column.pipeArgs.weekStart"
Expand All @@ -125,7 +124,6 @@
<ng-container [formGroup]="formGroup">
<igx-time-picker
[style.width.%]="100"
[outlet]="grid.outlet"
mode="dropdown"
[locale]="grid.locale"
[(value)]="editValue"
Expand Down Expand Up @@ -204,7 +202,6 @@
name="error"
#errorIcon
[igxTooltipTarget]="tooltipRef"
[igxToggleOutlet]="grid.outlet"
(mouseover)='errorShowing = true'
(mouseout)='errorShowing = false'>
</igx-icon>
Expand Down
4 changes: 0 additions & 4 deletions projects/igniteui-angular/grids/grid/src/grid-add-row.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1145,10 +1145,6 @@ describe('IgxGrid - Row Adding #grid', () => {
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);
});
});
});
Loading
Loading