From 466df77035fe86959351e177f9052945b643e6a9 Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Fri, 31 May 2024 15:53:17 +0200
Subject: [PATCH] OZG-5810 Add spinner to button

---
 ...ail-bescheiden-steps-content.component.html |  2 ++
 ...etail-bescheiden-steps-content.component.ts | 18 +++++++++++++++---
 ...ail-bescheiden-weiter-button.component.html |  5 +++--
 ...etail-bescheiden-weiter-button.component.ts | 12 +++++++++---
 4 files changed, 29 insertions(+), 8 deletions(-)

diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-steps-content.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-steps-content.component.html
index 3eec0104f9..5e02a4c177 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-steps-content.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-steps-content.component.html
@@ -7,6 +7,7 @@
   <alfa-vorgang-detail-bescheiden-antrag-bescheiden></alfa-vorgang-detail-bescheiden-antrag-bescheiden>
   <alfa-vorgang-detail-bescheiden-weiter-button
     (clickEmitter)="changeActiveStep(2)"
+    [submitResource]="submitResource"
   ></alfa-vorgang-detail-bescheiden-weiter-button>
 </alfa-vorgang-detail-bescheiden-step-content>
 
@@ -22,6 +23,7 @@
   ></alfa-vorgang-detail-bescheiden-dokumente-hinzufuegen>
   <alfa-vorgang-detail-bescheiden-weiter-button
     (clickEmitter)="changeActiveStep(3)"
+    [submitResource]="submitResource"
   ></alfa-vorgang-detail-bescheiden-weiter-button>
 </alfa-vorgang-detail-bescheiden-step-content>
 
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-steps-content.component.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-steps-content.component.ts
index a05c072bc6..ce42b5dcd7 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-steps-content.component.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-steps-content.component.ts
@@ -1,4 +1,10 @@
-import { HttpError, StateResource, hasStateResourceError, isLoaded } from '@alfa-client/tech-shared';
+import {
+  HttpError,
+  StateResource,
+  createEmptyStateResource,
+  hasStateResourceError,
+  isLoaded,
+} from '@alfa-client/tech-shared';
 import {
   VorgangService,
   VorgangWithEingangLinkRel,
@@ -6,7 +12,7 @@ import {
 } from '@alfa-client/vorgang-shared';
 import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
 import { Resource, hasLink } from '@ngxp/rest';
-import { BehaviorSubject, Observable, combineLatest, filter, first, map } from 'rxjs';
+import { BehaviorSubject, Observable, combineLatest, filter, first, map, tap } from 'rxjs';
 import { BescheidenFormService } from '../../bescheiden.formservice';
 
 @Component({
@@ -24,6 +30,8 @@ export class VorgangDetailBescheidenStepsContentComponent implements OnInit {
 
   showBescheidErstellungUeberspringen$: Observable<boolean>;
 
+  submitResource: StateResource<Resource | HttpError> = createEmptyStateResource();
+
   constructor(
     private readonly vorgangService: VorgangService,
     private formService: BescheidenFormService,
@@ -45,7 +53,11 @@ export class VorgangDetailBescheidenStepsContentComponent implements OnInit {
     if (this.canChangeTo(step)) {
       this.formService
         .submit()
-        .pipe(filter(this.noError), first())
+        .pipe(
+          tap((resource: StateResource<Resource | HttpError>) => (this.submitResource = resource)),
+          filter(this.noError),
+          first(),
+        )
         .subscribe(() => {
           this.formService.setActiveStep(step);
           this.activeStepChange.emit(step);
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-weiter-button/vorgang-detail-bescheiden-weiter-button.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-weiter-button/vorgang-detail-bescheiden-weiter-button.component.html
index 55a9f67956..775963a150 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-weiter-button/vorgang-detail-bescheiden-weiter-button.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-weiter-button/vorgang-detail-bescheiden-weiter-button.component.html
@@ -1,10 +1,11 @@
-<ods-button
+<ods-button-with-spinner
   *ngIf="showButton$ | async"
   (clickEmitter)="clickEmitter.emit()"
+  [stateResource]="submitResource"
   variant="primary"
   size="medium"
   class="mt-8 flex"
   dataTestId="bescheid-weiter-button"
   text="Weiter"
 >
-</ods-button>
+</ods-button-with-spinner>
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-weiter-button/vorgang-detail-bescheiden-weiter-button.component.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-weiter-button/vorgang-detail-bescheiden-weiter-button.component.ts
index f08201eec7..5e89e7dd34 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-weiter-button/vorgang-detail-bescheiden-weiter-button.component.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-weiter-button/vorgang-detail-bescheiden-weiter-button.component.ts
@@ -1,8 +1,13 @@
 import { BescheidLinkRel, BescheidService } from '@alfa-client/bescheid-shared';
-import { isLoaded } from '@alfa-client/tech-shared';
+import {
+  HttpError,
+  StateResource,
+  createEmptyStateResource,
+  isLoaded,
+} from '@alfa-client/tech-shared';
 import { VorgangService, VorgangWithEingangLinkRel } from '@alfa-client/vorgang-shared';
-import { Component, EventEmitter, OnInit, Output } from '@angular/core';
-import { hasLink } from '@ngxp/rest';
+import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core';
+import { Resource, hasLink } from '@ngxp/rest';
 import { Observable, filter, map, merge } from 'rxjs';
 import { BescheidenFormService } from '../../bescheiden.formservice';
 
@@ -11,6 +16,7 @@ import { BescheidenFormService } from '../../bescheiden.formservice';
   templateUrl: './vorgang-detail-bescheiden-weiter-button.component.html',
 })
 export class VorgangDetailBescheidenWeiterButtonComponent implements OnInit {
+  @Input() submitResource: StateResource<Resource | HttpError> = createEmptyStateResource();
   @Output() clickEmitter: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>();
 
   showButton$: Observable<boolean>;
-- 
GitLab