Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 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
1acabf6
Merge branch 'master' into mvenkov/remove-internal-overlay-outlets
ChronosSF Apr 14, 2026
6498eb4
Merge branch 'master' into mvenkov/remove-internal-overlay-outlets
ChronosSF Apr 14, 2026
d8361c6
feat(overlay): remove unused outlet related styles
wnvko Apr 14, 2026
f311db7
test(overlay): better way to get select items in query builder
wnvko Apr 14, 2026
7b44604
chore(overlay): fix overload order and put deprecated last
wnvko Apr 14, 2026
a9c55f9
fix(overlay): make static view-child not nullable
wnvko Apr 14, 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 @@ -458,14 +458,6 @@
@extend %igx-grid__outlet !optional;
}

@include e(loading-outlet) {
@extend %igx-grid__loading-outlet !optional;
}

@include e(row-editing-outlet) {
@extend %igx-grid__row-editing-outlet !optional;
}

@include e(addrow-snackbar) {
@extend %igx-grid__addrow-snackbar !optional;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2335,35 +2335,6 @@

%igx-grid__outlet {
--ig-size: var(--grid-size);

z-index: 10002;
position: fixed;
}

%igx-grid__loading-outlet {
width: 100%;
height: 100%;
z-index: -1;
position: absolute;

> %overlay-wrapper--modal {
background: none;
}

%circular-display {
width: rem(50);
height: rem(50);
}
}

%igx-grid__row-editing-outlet {
z-index: 10000;
position: absolute;

%overlay-wrapper {
/* Change wrapper position from 'fixed' to 'absolute' so that it is hidden when scrolled below the parent grid body content. */
position: absolute;
}
}

%igx-grid__addrow-snackbar {
Expand Down
22 changes: 11 additions & 11 deletions projects/igniteui-angular/core/src/services/overlay/overlay.ts
Original file line number Diff line number Diff line change
Expand Up @@ -136,17 +136,6 @@ export class IgxOverlayService implements OnDestroy {
this._document = this.document;
}

/**
* @param position Preset position settings. Default position is 'center'
* @param outlet The outlet container to attach the overlay to
* @returns Non-modal overlay settings based on Global or Container position strategy and the provided position.
*
* @deprecated in version 21.2.0. The outlet parameter is deprecated. Please provide the container or outlet element through the
* `createAbsoluteOverlaySettings` method when calling `attach` method.
* Creates overlay settings with global or container position strategy and preset position settings
*/
public static createAbsoluteOverlaySettings(
position?: AbsolutePosition, outlet?: IgxOverlayOutletDirective | ElementRef): OverlaySettings;
/**
* Creates overlay settings with global or container position strategy and preset position settings.
*
Expand All @@ -159,6 +148,17 @@ export class IgxOverlayService implements OnDestroy {
*/
public static createAbsoluteOverlaySettings(
position?: AbsolutePosition, useContainerStrategy?: boolean): OverlaySettings;
/**
* @param position Preset position settings. Default position is 'center'
* @param outlet The outlet container to attach the overlay to
* @returns Non-modal overlay settings based on Global or Container position strategy and the provided position.
*
* @deprecated in version 21.2.0. The outlet parameter is deprecated. Please provide the container or outlet element through the
* `createAbsoluteOverlaySettings` method when calling `attach` method.
* Creates overlay settings with global or container position strategy and preset position settings
*/
public static createAbsoluteOverlaySettings(
position?: AbsolutePosition, outlet?: IgxOverlayOutletDirective | ElementRef): OverlaySettings;
public static createAbsoluteOverlaySettings(
position?: AbsolutePosition, containerOrOutlet?: IgxOverlayOutletDirective | ElementRef | boolean): OverlaySettings {
const positionSettings = this.createAbsolutePositionSettings(position);
Expand Down
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;
Comment thread
wnvko marked this conversation as resolved.

/**
* 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
Loading
Loading