Skip to content

Commit 3d33f1d

Browse files
Merge pull request #7839 from IgniteUI/ibarakov/fix-7379-9.1.x
feat(grid): create a setter for grid's outlet #7379
2 parents d6ae226 + 34a7eb9 commit 3d33f1d

File tree

14 files changed

+55
-33
lines changed

14 files changed

+55
-33
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22

33
All notable changes for each version of this project will be documented in this file.
44

5+
## 9.1.9
6+
7+
### New Features
8+
- `IgxGrid`, `IgxTreeGrid`, `IgxHierarchicalGrid`
9+
- Expose a setter for grid's `outlet` property, which can be used to set the outlet used to attach the grid's overlays to.
10+
511
## 9.1.4
612

713
### New Features

projects/igniteui-angular/src/lib/grids/cell.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
[igxFocus]="true" [disableRipple]="true"></igx-checkbox>
2525
</ng-container>
2626
<ng-container *ngIf="column.dataType === 'date'">
27-
<igx-date-picker [style.width.%]="100" [outlet]="grid.outletDirective" mode="dropdown"
27+
<igx-date-picker [style.width.%]="100" [outlet]="grid.outlet" mode="dropdown"
2828
[locale]="grid.locale" [(value)]="editValue" [igxFocus]="true" [labelVisibility]="false">
2929
</igx-date-picker>
3030
</ng-container>

projects/igniteui-angular/src/lib/grids/common/grid.interface.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ export interface GridType extends IGridDataBindable {
3030
selectionService: any;
3131
navigation: any;
3232
filteringService: any;
33-
outletDirective: any;
33+
outlet: any;
3434

3535
calcHeight: number;
3636

projects/igniteui-angular/src/lib/grids/filtering/advanced-filtering/advanced-filtering-dialog.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ <h6 class="igx-filter-empty__title">
182182
mode="dropdown"
183183
[(ngModel)]="searchValue"
184184
[locale]="grid.locale"
185-
[outlet]="grid.outletDirective">
185+
[outlet]="grid.outlet">
186186
<ng-template igxDatePickerTemplate let-openDialog="openDialog" let-value="value">
187187
<igx-input-group #dropDownTarget type="box" [displayDensity]="'compact'">
188188
<input #searchValueInput

projects/igniteui-angular/src/lib/grids/filtering/base/grid-filtering-row.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@
4444
tabindex="0"
4545
mode="dropdown"
4646
[value]="value"
47-
[outlet]="filteringService.grid.outletDirective"
47+
[outlet]="filteringService.grid.outlet"
4848
[locale]="filteringService.grid.locale"
4949
(onSelection)="onDateSelected($event)"
5050
(onClosed)="datePickerClose()">

projects/igniteui-angular/src/lib/grids/filtering/base/grid-filtering-row.component.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,8 +147,8 @@ export class IgxGridFilteringRowComponent implements AfterViewInit {
147147
constructor(public filteringService: IgxFilteringService, public element: ElementRef, public cdr: ChangeDetectorRef) { }
148148

149149
ngAfterViewInit() {
150-
this._conditionsOverlaySettings.outlet = this.column.grid.outletDirective;
151-
this._operatorsOverlaySettings.outlet = this.column.grid.outletDirective;
150+
this._conditionsOverlaySettings.outlet = this.column.grid.outlet;
151+
this._operatorsOverlaySettings.outlet = this.column.grid.outlet;
152152

153153
const selectedItem = this.expressionsList.find(expr => expr.isSelected === true);
154154
if (selectedItem) {

projects/igniteui-angular/src/lib/grids/filtering/excel-style/excel-style-date-expression.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
</igx-select-item>
1515
</igx-select>
1616

17-
<igx-date-picker #datePicker mode="dropdown" [(ngModel)]="expressionUI.expression.searchVal" [locale]="grid.locale" [outlet]="grid.outletDirective">
17+
<igx-date-picker #datePicker mode="dropdown" [(ngModel)]="expressionUI.expression.searchVal" [locale]="grid.locale" [outlet]="grid.outlet">
1818
<ng-template igxDatePickerTemplate let-openDialog="openDialog" let-value="value">
1919
<igx-input-group #dropDownTarget type="box" [displayDensity]="displayDensity">
2020
<input #input

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

Lines changed: 21 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,8 @@ export class IgxGridBaseDirective extends DisplayDensityBase implements
208208
positionStrategy: new ConnectedPositioningStrategy(this._advancedFilteringPositionSettings),
209209
};
210210

211+
protected _userOutletDirective: IgxOverlayOutletDirective;
212+
211213
/**
212214
* @hidden @internal
213215
*/
@@ -1795,20 +1797,12 @@ export class IgxGridBaseDirective extends DisplayDensityBase implements
17951797
@ViewChild('tfoot', { static: true })
17961798
public tfoot: ElementRef;
17971799

1798-
17991800
/**
18001801
* @hidden @internal
18011802
*/
18021803
@ViewChild('igxFilteringOverlayOutlet', { read: IgxOverlayOutletDirective, static: true })
18031804
protected _outletDirective: IgxOverlayOutletDirective;
18041805

1805-
/**
1806-
* @hidden @internal
1807-
*/
1808-
public get outletDirective() {
1809-
return this._outletDirective;
1810-
}
1811-
18121806
/**
18131807
* @hidden @internal
18141808
*/
@@ -1833,7 +1827,7 @@ export class IgxGridBaseDirective extends DisplayDensityBase implements
18331827
* @hidden @internal
18341828
*/
18351829
public get parentRowOutletDirective() {
1836-
return this.outletDirective;
1830+
return this.outlet;
18371831
}
18381832

18391833
/**
@@ -2898,7 +2892,7 @@ export class IgxGridBaseDirective extends DisplayDensityBase implements
28982892
return;
28992893
}
29002894

2901-
if (this.overlayService.getOverlayById(event.id)?.settings?.outlet === this.outletDirective &&
2895+
if (this.overlayService.getOverlayById(event.id)?.settings?.outlet === this.outlet &&
29022896
this.overlayIDs.indexOf(event.id) < 0) {
29032897
this.overlayIDs.push(event.id);
29042898
}
@@ -3341,10 +3335,23 @@ export class IgxGridBaseDirective extends DisplayDensityBase implements
33413335
}
33423336

33433337
/**
3344-
* @hidden @internal
3338+
* Gets the outlet used to attach the grid's overlays to.
3339+
* @remark
3340+
* If set, returns the outlet defined outside the grid. Otherwise returns the grid's internal outlet directive.
3341+
*/
3342+
get outlet() {
3343+
return this.resolveOutlet();
3344+
}
3345+
3346+
protected resolveOutlet() {
3347+
return this._userOutletDirective ? this._userOutletDirective : this._outletDirective;
3348+
}
3349+
3350+
/**
3351+
* Sets the outlet used to attach the grid's overlays to.
33453352
*/
3346-
protected get outlet() {
3347-
return this.outletDirective;
3353+
set outlet(val: any) {
3354+
this._userOutletDirective = val;
33483355
}
33493356

33503357
/**
@@ -6471,7 +6478,7 @@ export class IgxGridBaseDirective extends DisplayDensityBase implements
64716478
if (!this._advancedFilteringOverlayId) {
64726479
this._advancedFilteringOverlaySettings.positionStrategy.settings.target =
64736480
(this as any).rootGrid ? (this as any).rootGrid.nativeElement : this.nativeElement;
6474-
this._advancedFilteringOverlaySettings.outlet = this.outletDirective;
6481+
this._advancedFilteringOverlaySettings.outlet = this.outlet;
64756482

64766483
this._advancedFilteringOverlayId = this.overlayService.attach(
64776484
IgxAdvancedFilteringDialogComponent,

projects/igniteui-angular/src/lib/grids/grid/expandable-cell.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
<igx-checkbox (change)="editValue = $event.checked" [value]="editValue" [checked]="editValue" [disableRipple]="true"></igx-checkbox>
2424
</ng-container>
2525
<ng-container *ngIf="column.dataType === 'date'">
26-
<igx-date-picker [style.width.%]="100" [outlet]="grid.outletDirective" mode="dropdown"
26+
<igx-date-picker [style.width.%]="100" [outlet]="grid.outlet" mode="dropdown"
2727
[locale]="grid.locale" [(value)]="editValue" [igxFocus]="true" [labelVisibility]="false">
2828
</igx-date-picker>
2929
</ng-container>

projects/igniteui-angular/src/lib/grids/headers/grid-header-group.component.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
[column]="child"
1515
[gridID]="child.grid.id"
1616
[igxColumnMovingDrag]="child"
17-
[ghostHost]="grid.outletDirective.nativeElement"
17+
[ghostHost]="grid.outlet.nativeElement"
1818
[attr.droppable]="true"
1919
[igxColumnMovingDrop]="child">
2020
</igx-grid-header-group>
@@ -48,7 +48,7 @@
4848
'igx-grid__th--selected': selected,
4949
'igx-grid__th--active': activeGroup}"
5050
[igxColumnMovingDrag]="column"
51-
[ghostHost]="grid.outletDirective.nativeElement"
51+
[ghostHost]="grid.outlet.nativeElement"
5252
[attr.droppable]="true"
5353
[igxColumnMovingDrop]="column"
5454
(pointerdown)="activate()"
@@ -81,7 +81,7 @@
8181

8282
<ng-container *ngIf="!column.columnGroup">
8383
<span *ngIf="grid.hasMovableColumns" class="igx-grid__th-drop-indicator-left"></span>
84-
<igx-grid-header [igxColumnMovingDrag]="column" [ghostHost]="grid.outletDirective.nativeElement" [attr.droppable]="true" (pointerdown)="activate()" [igxColumnMovingDrop]="column" [gridID]="column.grid.id" [column]="column"></igx-grid-header>
84+
<igx-grid-header [igxColumnMovingDrag]="column" [ghostHost]="grid.outlet.nativeElement" [attr.droppable]="true" (pointerdown)="activate()" [igxColumnMovingDrop]="column" [gridID]="column.grid.id" [column]="column"></igx-grid-header>
8585
<igx-grid-filtering-cell *ngIf="grid.allowFiltering && grid.filterMode == 'quickFilter'" [column]="column" [attr.draggable]="false"></igx-grid-filtering-cell>
8686
<span *ngIf="!column.columnGroup && column.resizable" class="igx-grid__th-resize-handle"
8787
[igxResizeHandle]="column"

0 commit comments

Comments
 (0)