Skip to content

Commit 9a9c30a

Browse files
committed
fix(esf): modified new strategy to be only for the excel style filter #6670
1 parent 7266613 commit 9a9c30a

File tree

3 files changed

+18
-18
lines changed

3 files changed

+18
-18
lines changed

projects/igniteui-angular/src/lib/services/overlay/position/auto-elastic-position-strategy.ts renamed to projects/igniteui-angular/src/lib/grids/filtering/excel-style/excel-style-position-strategy.ts

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,12 @@
1-
import { ConnectedFit, Size } from './../utilities';
2-
import { AutoPositionStrategy } from './auto-position-strategy';
1+
import { AutoPositionStrategy } from '../../../services/overlay/position/auto-position-strategy';
2+
import { ConnectedFit } from '../../../services/overlay/utilities';
33

4-
/**
5-
* TODO
6-
*/
7-
export class AutoElasticPositionStrategy extends AutoPositionStrategy {
8-
/** @inheritdoc */
9-
position(contentElement: HTMLElement, size: Size, document?: Document, initialCall?: boolean): void {
10-
this._forceFit = true;
11-
super.position(contentElement, size, document, initialCall);
4+
/** @hidden */
5+
export class ExcelStylePositionStrategy extends AutoPositionStrategy {
6+
protected shouldFitInViewPort(connectedFit: ConnectedFit) {
7+
return true;
128
}
139

14-
/** @inheritdoc */
1510
protected fitInViewport(element: HTMLElement, connectedFit: ConnectedFit) {
1611
const heightOverflow = connectedFit.contentElementRect.height - connectedFit.viewPortRect.height;
1712
if (heightOverflow > 0) {

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,13 @@ import { IgxColumnResizingService } from '../resizing/resizing.service';
2424
import { IgxOverlayService } from '../../services/overlay/overlay';
2525
import { IgxGridExcelStyleFilteringComponent } from '../filtering/excel-style/grid.excel-style-filtering.component';
2626
import { OverlaySettings, PositionSettings, VerticalAlignment } from '../../services/overlay/utilities';
27-
import { AutoElasticPositionStrategy } from '../../services/overlay/position/auto-elastic-position-strategy';
2827
import { useAnimation } from '@angular/animations';
2928
import { filter, takeUntil } from 'rxjs/operators';
3029
import { Subject } from 'rxjs';
3130
import { fadeIn, fadeOut } from '../../animations/main';
3231
import { AbsoluteScrollStrategy } from '../../services/overlay/scroll/absolute-scroll-strategy';
3332
import { GridType } from '../common/grid.interface';
33+
import { ExcelStylePositionStrategy } from '../filtering/excel-style/excel-style-position-strategy';
3434

3535
/**
3636
* @hidden
@@ -234,7 +234,7 @@ export class IgxGridHeaderComponent implements DoCheck, OnInit, OnDestroy {
234234
this._filterMenuOverlaySettings = {
235235
closeOnOutsideClick: true,
236236
modal: false,
237-
positionStrategy: new AutoElasticPositionStrategy(this._filterMenuPositionSettings),
237+
positionStrategy: new ExcelStylePositionStrategy(this._filterMenuPositionSettings),
238238
scrollStrategy: new AbsoluteScrollStrategy()
239239
};
240240

projects/igniteui-angular/src/lib/services/overlay/position/base-fit-position-strategy.ts

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import { HorizontalAlignment, VerticalAlignment, PositionSettings, Size, Util, C
44
export abstract class BaseFitPositionStrategy extends ConnectedPositioningStrategy {
55
protected _initialSize: Size;
66
protected _initialSettings: PositionSettings;
7-
protected _forceFit = false;
87

98
/** @inheritdoc */
109
position(contentElement: HTMLElement, size: Size, document?: Document, initialCall?: boolean): void {
@@ -17,8 +16,7 @@ export abstract class BaseFitPositionStrategy extends ConnectedPositioningStrate
1716
this.settings = Object.assign({}, this._initialSettings);
1817
connectedFit.viewPortRect = Util.getViewportRect(document);
1918
this.updateViewPortFit(connectedFit);
20-
if (connectedFit.fitHorizontal.back < 0 || connectedFit.fitHorizontal.forward < 0 ||
21-
connectedFit.fitVertical.back < 0 || connectedFit.fitVertical.forward < 0 || this._forceFit) {
19+
if (this.shouldFitInViewPort(connectedFit)) {
2220
this.fitInViewport(contentElement, connectedFit);
2321
}
2422
}
@@ -84,6 +82,15 @@ export abstract class BaseFitPositionStrategy extends ConnectedPositioningStrate
8482
return targetRect.bottom + targetRect.height * startPoint + elementRect.height * direction + offset;
8583
}
8684

85+
/**
86+
* Returns whether the element should fit in viewport
87+
* @param connectedFit connectedFit object containing all necessary parameters
88+
*/
89+
protected shouldFitInViewPort(connectedFit: ConnectedFit) {
90+
return connectedFit.fitHorizontal.back < 0 || connectedFit.fitHorizontal.forward < 0 ||
91+
connectedFit.fitVertical.back < 0 || connectedFit.fitVertical.forward < 0;
92+
}
93+
8794
/**
8895
* Fits the element into viewport according to the position settings
8996
* @param element element to fit in viewport
@@ -93,5 +100,3 @@ export abstract class BaseFitPositionStrategy extends ConnectedPositioningStrate
93100
element: HTMLElement,
94101
connectedFit: ConnectedFit);
95102
}
96-
97-

0 commit comments

Comments
 (0)