From 0d5c0c99fa69906e1d13e9be96da6ab98f0a8715 Mon Sep 17 00:00:00 2001 From: Simeon Simeonoff Date: Thu, 1 Oct 2020 11:02:08 +0300 Subject: [PATCH] refactor(grid): do not hide editing row on scroll --- .../src/lib/directives/toggle/toggle.directive.ts | 10 ++++++++++ .../src/lib/grids/grid-base.directive.ts | 10 ++++++++-- projects/igniteui-angular/src/lib/grids/grid.common.ts | 2 +- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/projects/igniteui-angular/src/lib/directives/toggle/toggle.directive.ts b/projects/igniteui-angular/src/lib/directives/toggle/toggle.directive.ts index 1db48870e9e..87d4dc5a352 100644 --- a/projects/igniteui-angular/src/lib/directives/toggle/toggle.directive.ts +++ b/projects/igniteui-angular/src/lib/directives/toggle/toggle.directive.ts @@ -297,6 +297,16 @@ export class IgxToggleDirective implements IToggleView, OnInit, OnDestroy { return info ? info.closeAnimationPlayer : false; } + /** + * Returns the id of the overlay the content is rendered in. + * ```typescript + * this.myToggle.overlayId; + * ``` + */ + public get overlayId() { + return this._overlayId; + } + /** * Repositions the toggle. * ```typescript diff --git a/projects/igniteui-angular/src/lib/grids/grid-base.directive.ts b/projects/igniteui-angular/src/lib/grids/grid-base.directive.ts index a6eba271a66..60a49344141 100644 --- a/projects/igniteui-angular/src/lib/grids/grid-base.directive.ts +++ b/projects/igniteui-angular/src/lib/grids/grid-base.directive.ts @@ -2893,6 +2893,8 @@ export class IgxGridBaseDirective extends DisplayDensityBase implements }); this.overlayService.onOpened.pipe(destructor).subscribe((event) => { + const overlaySettings = this.overlayService.getOverlayById(event.id)?.settings; + // do not hide the advanced filtering overlay on scroll if (this._advancedFilteringOverlayId === event.id) { const instance = event.componentRef.instance as IgxAdvancedFilteringDialogComponent; @@ -2903,8 +2905,12 @@ export class IgxGridBaseDirective extends DisplayDensityBase implements return; } - if (this.overlayService.getOverlayById(event.id)?.settings?.outlet === this.outlet && - this.overlayIDs.indexOf(event.id) < 0) { + // do not hide the overlay if it's attached to a row + if (this.rowEditingOverlay?.overlayId === event.id) { + return; + } + + if (overlaySettings?.outlet === this.outlet && this.overlayIDs.indexOf(event.id) === -1) { this.overlayIDs.push(event.id); } }); diff --git a/projects/igniteui-angular/src/lib/grids/grid.common.ts b/projects/igniteui-angular/src/lib/grids/grid.common.ts index e66c07513da..fbbcebc5c0d 100644 --- a/projects/igniteui-angular/src/lib/grids/grid.common.ts +++ b/projects/igniteui-angular/src/lib/grids/grid.common.ts @@ -1,4 +1,4 @@ -import { Directive } from '@angular/core'; +import { Directive } from '@angular/core'; import { ConnectedPositioningStrategy } from '../services/public_api'; import { VerticalAlignment, PositionSettings } from '../services/overlay/utilities'; import { scaleInVerBottom, scaleInVerTop } from '../animations/main';