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; } }); }