From f261bd1379fe1d6696634c296b601e46353b79e2 Mon Sep 17 00:00:00 2001 From: Wouter Willems Date: Mon, 7 Oct 2024 10:30:41 +0200 Subject: [PATCH] optimize formElement scroll --- .../klippa/ngx-enhancy-forms/package.json | 2 +- .../form-element/form-element.component.ts | 23 +++++++++++-------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/projects/klippa/ngx-enhancy-forms/package.json b/projects/klippa/ngx-enhancy-forms/package.json index 74427ec..483375c 100644 --- a/projects/klippa/ngx-enhancy-forms/package.json +++ b/projects/klippa/ngx-enhancy-forms/package.json @@ -1,6 +1,6 @@ { "name": "@klippa/ngx-enhancy-forms", - "version": "18.23.7", + "version": "18.23.8", "publishConfig": { "access": "public" }, diff --git a/projects/klippa/ngx-enhancy-forms/src/lib/form/form-element/form-element.component.ts b/projects/klippa/ngx-enhancy-forms/src/lib/form/form-element/form-element.component.ts index 7c2e1e4..9d653b6 100644 --- a/projects/klippa/ngx-enhancy-forms/src/lib/form/form-element/form-element.component.ts +++ b/projects/klippa/ngx-enhancy-forms/src/lib/form/form-element/form-element.component.ts @@ -5,7 +5,7 @@ import { ElementRef, Inject, InjectionToken, - Input, OnDestroy, + Input, NgZone, OnDestroy, Optional, TemplateRef, ViewChild @@ -69,6 +69,7 @@ export class FormElementComponent implements AfterViewInit, OnDestroy { @Optional() private parent: FormComponent, @Inject(FORM_ERROR_MESSAGES) @Optional() private customMessages: CustomErrorMessages, private elRef: ElementRef, + private ngZone: NgZone, ) { } @@ -123,15 +124,17 @@ export class FormElementComponent implements AfterViewInit, OnDestroy { return; } const containers = [...getAllLimitingContainers(this.elRef.nativeElement), window]; - if (current === 'lockedOpen') { - containers.forEach(e => { - e.addEventListener('scroll', this.setErrorTooltipOffset); - }); - } else { - containers.forEach(e => { - e.removeEventListener('scroll', this.setErrorTooltipOffset); - }); - } + this.ngZone.runOutsideAngular(() => { + if (current === 'lockedOpen') { + containers.forEach(e => { + e.addEventListener('scroll', this.setErrorTooltipOffset); + }); + } else { + containers.forEach(e => { + e.removeEventListener('scroll', this.setErrorTooltipOffset); + }); + } + }); } public unregisterControl(formControl: UntypedFormControl): void {