From 142c6ae7543d2724f8ca67738b7d4e6a1ccf172b Mon Sep 17 00:00:00 2001 From: Bartosz Sekula Date: Thu, 27 Mar 2025 14:59:09 +0100 Subject: [PATCH] AAE-33340 Async Form Enrichment - Spinner doesnt hide on process completion (#10749) --- .../spinner/form-cloud-spinner.service.spec.ts | 12 ++++++++++++ .../services/spinner/form-cloud-spinner.service.ts | 5 +++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/lib/process-services-cloud/src/lib/form/services/spinner/form-cloud-spinner.service.spec.ts b/lib/process-services-cloud/src/lib/form/services/spinner/form-cloud-spinner.service.spec.ts index cd8561c7cc..868e96d698 100644 --- a/lib/process-services-cloud/src/lib/form/services/spinner/form-cloud-spinner.service.spec.ts +++ b/lib/process-services-cloud/src/lib/form/services/spinner/form-cloud-spinner.service.spec.ts @@ -83,4 +83,16 @@ describe('FormCloudSpinnerService', () => { hasSpinner = await rootLoader.hasHarness(MatProgressSpinnerHarness); expect(hasSpinner).toBeFalse(); }); + + it('should show only one spinner at time', async () => { + spinnerService.initSpinnerHandling(destroyRef); + formService.toggleFormSpinner.next(showSpinnerEvent); + const otherShowSpinnerEvent = new FormSpinnerEvent('toggle-spinner', { showSpinner: true, message: 'ANOTHER' }); + formService.toggleFormSpinner.next(otherShowSpinnerEvent); + + fixture.detectChanges(); + + const spinners = await rootLoader.getAllHarnesses(MatProgressSpinnerHarness); + expect(spinners.length).toBe(1); + }); }); diff --git a/lib/process-services-cloud/src/lib/form/services/spinner/form-cloud-spinner.service.ts b/lib/process-services-cloud/src/lib/form/services/spinner/form-cloud-spinner.service.ts index a3f031a086..e6cf92e986 100644 --- a/lib/process-services-cloud/src/lib/form/services/spinner/form-cloud-spinner.service.ts +++ b/lib/process-services-cloud/src/lib/form/services/spinner/form-cloud-spinner.service.ts @@ -27,11 +27,11 @@ export class FormCloudSpinnerService { private formService = inject(FormService); private overlay = inject(Overlay); - private overlayRef?: OverlayRef; + private overlayRef?: OverlayRef = null; initSpinnerHandling(destroyRef: DestroyRef): void { this.formService.toggleFormSpinner.pipe(takeUntilDestroyed(destroyRef)).subscribe((event: FormSpinnerEvent) => { - if (event?.payload.showSpinner) { + if (event?.payload.showSpinner && this.overlayRef === null) { this.overlayRef = this.overlay.create({ hasBackdrop: true }); @@ -41,6 +41,7 @@ export class FormCloudSpinnerService { componentRef.instance.message = event.payload.message; } else if (event?.payload.showSpinner === false) { this.overlayRef?.detach(); + this.overlayRef = null; } }); }