From 7c87a355ae6a0d4533bbf06508a3e62db066d490 Mon Sep 17 00:00:00 2001
From: Martin <git@mail.de>
Date: Mon, 3 Feb 2025 09:04:42 +0100
Subject: [PATCH 01/57] OZG-7474 OZG-7634 create button container component

---
 alfa-client/libs/forwarding/src/index.ts      |  1 +
 ...y-ozgcloud-button-container.component.html |  1 +
 ...zgcloud-button-container.component.spec.ts | 21 +++++++++++++++++++
 ...-by-ozgcloud-button-container.component.ts | 13 ++++++++++++
 alfa-client/tsconfig.base.json                |  4 ++--
 5 files changed, 38 insertions(+), 2 deletions(-)
 create mode 100644 alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.html
 create mode 100644 alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.spec.ts
 create mode 100644 alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.ts

diff --git a/alfa-client/libs/forwarding/src/index.ts b/alfa-client/libs/forwarding/src/index.ts
index 504fbb0e7e..24d937c340 100644
--- a/alfa-client/libs/forwarding/src/index.ts
+++ b/alfa-client/libs/forwarding/src/index.ts
@@ -21,5 +21,6 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
+export * from './lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component';
 export * from './lib/forwarding.module';
 export * from './lib/vorgang-forwarding-container/vorgang-forwarding-container.component';
diff --git a/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.html b/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.html
new file mode 100644
index 0000000000..d44d1ca87b
--- /dev/null
+++ b/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.html
@@ -0,0 +1 @@
+<p>forward-by-ozgcloud-button-container works!</p>
diff --git a/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.spec.ts b/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.spec.ts
new file mode 100644
index 0000000000..e947e57270
--- /dev/null
+++ b/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.spec.ts
@@ -0,0 +1,21 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { ForwardByOzgcloudButtonContainerComponent } from './forward-by-ozgcloud-button-container.component';
+
+describe('ForwardByOzgcloudButtonContainerComponent', () => {
+  let component: ForwardByOzgcloudButtonContainerComponent;
+  let fixture: ComponentFixture<ForwardByOzgcloudButtonContainerComponent>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      imports: [ForwardByOzgcloudButtonContainerComponent],
+    }).compileComponents();
+
+    fixture = TestBed.createComponent(ForwardByOzgcloudButtonContainerComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.ts b/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.ts
new file mode 100644
index 0000000000..cc94c34ebd
--- /dev/null
+++ b/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.ts
@@ -0,0 +1,13 @@
+import { VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
+import { CommonModule } from '@angular/common';
+import { Component, Input } from '@angular/core';
+
+@Component({
+  selector: 'alfa-forward-by-ozgcloud-button-container',
+  standalone: true,
+  imports: [CommonModule],
+  templateUrl: './forward-by-ozgcloud-button-container.component.html',
+})
+export class ForwardByOzgcloudButtonContainerComponent {
+  @Input() vorgangWithEingang: VorgangWithEingangResource;
+}
diff --git a/alfa-client/tsconfig.base.json b/alfa-client/tsconfig.base.json
index 645b71e1ce..6850f74e4e 100644
--- a/alfa-client/tsconfig.base.json
+++ b/alfa-client/tsconfig.base.json
@@ -18,7 +18,6 @@
     "paths": {
       "@admin-client/configuration": ["libs/admin/configuration/src/index.ts"],
       "@admin-client/configuration-shared": ["libs/admin/configuration-shared/src/index.ts"],
-      "@admin/keycloak-shared": ["libs/admin/keycloak-shared/src/index.ts"],
       "@admin-client/organisations-einheit": ["libs/admin/organisations-einheit/src/index.ts"],
       "@admin-client/organisations-einheit-shared": ["libs/admin/organisations-einheit-shared/src/index.ts"],
       "@admin-client/postfach": ["libs/admin/postfach/src/index.ts"],
@@ -28,6 +27,7 @@
       "@admin-client/statistik": ["libs/admin/statistik/src/index.ts"],
       "@admin-client/user": ["libs/admin/user/src/index.ts"],
       "@admin-client/user-shared": ["libs/admin/user-shared/src/index.ts"],
+      "@admin/keycloak-shared": ["libs/admin/keycloak-shared/src/index.ts"],
       "@alfa-client/api-root-shared": ["libs/api-root-shared/src/index.ts"],
       "@alfa-client/app-shared": ["libs/app-shared/src/index.ts"],
       "@alfa-client/bescheid": ["libs/bescheid/src/index.ts"],
@@ -77,7 +77,7 @@
       "@alfa-client/zustaendige-stelle-shared": ["libs/zustaendige-stelle-shared/src/index.ts"],
       "@authentication": ["libs/authentication/src/index.ts"],
       "@ods/component": ["libs/design-component/src/index.ts"],
-      "@ods/system": ["libs/design-system/src/index.ts"],
+      "@ods/system": ["libs/design-system/src/index.ts"]
     }
   },
   "exclude": ["node_modules", "tmp"]
-- 
GitLab


From 2762fb9c287aa9a75bbe87be7eb25fd4745c1134 Mon Sep 17 00:00:00 2001
From: Martin <git@mail.de>
Date: Mon, 3 Feb 2025 09:09:31 +0100
Subject: [PATCH 02/57] OZG-7474 OZG-7634 add button to formular/action buttons

---
 ...rgang-detail-action-buttons.component.html | 45 +++++--------------
 ...ng-detail-action-buttons.component.spec.ts | 38 +++++++++++-----
 ...ang-detail-formular-buttons.component.html |  5 +--
 ...-detail-formular-buttons.component.spec.ts | 32 ++++++++-----
 .../src/lib/vorgang-detail.module.ts          |  3 +-
 5 files changed, 63 insertions(+), 60 deletions(-)

diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-action-buttons/vorgang-detail-action-buttons.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-action-buttons/vorgang-detail-action-buttons.component.html
index 2505c2406e..108f8600a4 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-action-buttons/vorgang-detail-action-buttons.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-action-buttons/vorgang-detail-action-buttons.component.html
@@ -23,38 +23,14 @@
     unter der Lizenz sind dem Lizenztext zu entnehmen.
 
 -->
-<alfa-annehmen-button
-  [showAsIconButton]="showAsIconButton"
-  [vorgang]="vorgangWithEingang"
-></alfa-annehmen-button>
-<alfa-zurueckholen-button
-  [showAsIconButton]="showAsIconButton"
-  [vorgang]="vorgangWithEingang"
-></alfa-zurueckholen-button>
-<alfa-bearbeiten-button
-  [showAsIconButton]="showAsIconButton"
-  [vorgang]="vorgangWithEingang"
-></alfa-bearbeiten-button>
-<alfa-bescheiden-button
-  [showAsIconButton]="showAsIconButton"
-  [vorgang]="vorgangWithEingang"
-></alfa-bescheiden-button>
-<alfa-zurueckstellen-button
-  [showAsIconButton]="showAsIconButton"
-  [vorgang]="vorgangWithEingang"
-></alfa-zurueckstellen-button>
-<alfa-abschliessen-button
-  [showAsIconButton]="showAsIconButton"
-  [vorgang]="vorgangWithEingang"
-></alfa-abschliessen-button>
-<alfa-verwerfen-button
-  [showAsIconButton]="showAsIconButton"
-  [vorgang]="vorgangWithEingang"
-></alfa-verwerfen-button>
-<alfa-wiedereroeffnen-button
-  [showAsIconButton]="showAsIconButton"
-  [vorgang]="vorgangWithEingang"
-></alfa-wiedereroeffnen-button>
+<alfa-annehmen-button [showAsIconButton]="showAsIconButton" [vorgang]="vorgangWithEingang"></alfa-annehmen-button>
+<alfa-zurueckholen-button [showAsIconButton]="showAsIconButton" [vorgang]="vorgangWithEingang"></alfa-zurueckholen-button>
+<alfa-bearbeiten-button [showAsIconButton]="showAsIconButton" [vorgang]="vorgangWithEingang"></alfa-bearbeiten-button>
+<alfa-bescheiden-button [showAsIconButton]="showAsIconButton" [vorgang]="vorgangWithEingang"></alfa-bescheiden-button>
+<alfa-zurueckstellen-button [showAsIconButton]="showAsIconButton" [vorgang]="vorgangWithEingang"></alfa-zurueckstellen-button>
+<alfa-abschliessen-button [showAsIconButton]="showAsIconButton" [vorgang]="vorgangWithEingang"></alfa-abschliessen-button>
+<alfa-verwerfen-button [showAsIconButton]="showAsIconButton" [vorgang]="vorgangWithEingang"></alfa-verwerfen-button>
+<alfa-wiedereroeffnen-button [showAsIconButton]="showAsIconButton" [vorgang]="vorgangWithEingang"></alfa-wiedereroeffnen-button>
 <!-- TODO Anhand des Links Library dynamisch laden -->
 <alfa-loeschen-anfordern-button-container
   *ngIf="vorgangWithEingang | hasLink: vorgangWithEingangLinkRel.LOESCHEN_ANFORDERN"
@@ -75,10 +51,9 @@
   [showAsIconButton]="showAsIconButton"
   [vorgang]="vorgangWithEingang"
 ></alfa-create-wiedervorlage-button-container>
-<alfa-assign-user-profile-button-container
-  [vorgang]="vorgangWithEingang"
-></alfa-assign-user-profile-button-container>
+<alfa-assign-user-profile-button-container [vorgang]="vorgangWithEingang"></alfa-assign-user-profile-button-container>
 <alfa-postfach-mail-button-container
   [showAsIconButton]="showAsIconButton"
   [vorgang]="vorgangWithEingang"
 ></alfa-postfach-mail-button-container>
+<alfa-forward-by-ozgcloud-button-container [vorgangWithEingang]="vorgangWithEingang"></alfa-forward-by-ozgcloud-button-container>
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-action-buttons/vorgang-detail-action-buttons.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-action-buttons/vorgang-detail-action-buttons.component.spec.ts
index e5e841336b..7a54317356 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-action-buttons/vorgang-detail-action-buttons.component.spec.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-action-buttons/vorgang-detail-action-buttons.component.spec.ts
@@ -21,13 +21,18 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { EndgueltigLoeschenButtonContainerComponent, LoeschAnforderungZuruecknehmenButtonContainerComponent, LoeschenAnfordernButtonContainerComponent } from '@alfa-client/loesch-anforderung';
+import { ForwardByOzgcloudButtonContainerComponent } from '@alfa-client/forwarding';
+import {
+  EndgueltigLoeschenButtonContainerComponent,
+  LoeschAnforderungZuruecknehmenButtonContainerComponent,
+  LoeschenAnfordernButtonContainerComponent,
+} from '@alfa-client/loesch-anforderung';
 import { PostfachMailButtonContainerComponent } from '@alfa-client/postfach';
 import { HasLinkPipe } from '@alfa-client/tech-shared';
-import { existsAsHtmlElement, notExistsAsHtmlElement } from '@alfa-client/test-utils';
+import { existsAsHtmlElement, getMockComponent, notExistsAsHtmlElement } from '@alfa-client/test-utils';
 import { IconButtonWithSpinnerComponent } from '@alfa-client/ui';
 import { AssignUserProfileButtonContainerComponent } from '@alfa-client/user-profile';
-import { VorgangWithEingangLinkRel } from '@alfa-client/vorgang-shared';
+import { VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
 import { CreateWiedervorlageButtonContainerComponent } from '@alfa-client/wiedervorlage';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { getDataTestIdOf } from 'libs/tech-shared/test/data-test';
@@ -47,11 +52,11 @@ describe('VorgangDetailActionButtonsComponent', () => {
   let component: VorgangDetailActionButtonsComponent;
   let fixture: ComponentFixture<VorgangDetailActionButtonsComponent>;
 
-  const loeschenAnfordernIconButtonContainer: string = getDataTestIdOf(
-    'loeschen-anfordern-icon-button-container',
-  );
+  const loeschenAnfordernIconButtonContainer: string = getDataTestIdOf('loeschen-anfordern-icon-button-container');
   const createBescheidButtonContainer: string = getDataTestIdOf('create-bescheid-button-container');
 
+  const vorgangWithEingang: VorgangWithEingangResource = createVorgangWithEingangResource();
+
   beforeEach(async () => {
     await TestBed.configureTestingModule({
       declarations: [
@@ -72,6 +77,7 @@ describe('VorgangDetailActionButtonsComponent', () => {
         MockComponent(LoeschenAnfordernButtonContainerComponent),
         MockComponent(EndgueltigLoeschenButtonContainerComponent),
         MockComponent(LoeschAnforderungZuruecknehmenButtonContainerComponent),
+        MockComponent(ForwardByOzgcloudButtonContainerComponent),
       ],
     });
   });
@@ -88,16 +94,14 @@ describe('VorgangDetailActionButtonsComponent', () => {
 
   describe('loeschenAnfordernIconButtonContainer', () => {
     it('should show if link is present', () => {
-      component.vorgangWithEingang = createVorgangWithEingangResource([
-        VorgangWithEingangLinkRel.LOESCHEN_ANFORDERN,
-      ]);
+      component.vorgangWithEingang = createVorgangWithEingangResource([VorgangWithEingangLinkRel.LOESCHEN_ANFORDERN]);
       fixture.detectChanges();
 
       existsAsHtmlElement(fixture, loeschenAnfordernIconButtonContainer);
     });
 
     it('should hide if link is not present', () => {
-      component.vorgangWithEingang = createVorgangWithEingangResource();
+      component.vorgangWithEingang = vorgangWithEingang;
       fixture.detectChanges();
 
       notExistsAsHtmlElement(fixture, loeschenAnfordernIconButtonContainer);
@@ -106,11 +110,23 @@ describe('VorgangDetailActionButtonsComponent', () => {
 
   describe('create bescheid button', () => {
     it('should hide if link not exists', () => {
-      component.vorgangWithEingang = createVorgangWithEingangResource();
+      component.vorgangWithEingang = vorgangWithEingang;
 
       fixture.detectChanges();
 
       notExistsAsHtmlElement(fixture, createBescheidButtonContainer);
     });
   });
+
+  it('forward button should be called', () => {
+    component.vorgangWithEingang = vorgangWithEingang;
+
+    fixture.detectChanges();
+
+    const button: ForwardByOzgcloudButtonContainerComponent = getMockComponent(
+      fixture,
+      ForwardByOzgcloudButtonContainerComponent,
+    );
+    expect(button.vorgangWithEingang).toBe(vorgangWithEingang);
+  });
 });
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-buttons/vorgang-detail-formular-buttons.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-buttons/vorgang-detail-formular-buttons.component.html
index 5da29c28cf..2c75ebab3e 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-buttons/vorgang-detail-formular-buttons.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-buttons/vorgang-detail-formular-buttons.component.html
@@ -38,8 +38,7 @@
   [vorgang]="vorgangWithEingang"
 >
 </alfa-loeschen-anfordern-button-container>
-<alfa-endgueltig-loeschen-button-container
-  [vorgang]="vorgangWithEingang"
-></alfa-endgueltig-loeschen-button-container>
+<alfa-endgueltig-loeschen-button-container [vorgang]="vorgangWithEingang"></alfa-endgueltig-loeschen-button-container>
 <alfa-loesch-anforderung-zuruecknehmen-button-container></alfa-loesch-anforderung-zuruecknehmen-button-container>
+<alfa-forward-by-ozgcloud-button-container [vorgangWithEingang]="vorgangWithEingang"></alfa-forward-by-ozgcloud-button-container>
 <!--  -->
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-buttons/vorgang-detail-formular-buttons.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-buttons/vorgang-detail-formular-buttons.component.spec.ts
index b106093111..4b16a16ee5 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-buttons/vorgang-detail-formular-buttons.component.spec.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-buttons/vorgang-detail-formular-buttons.component.spec.ts
@@ -21,16 +21,17 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { ForwardByOzgcloudButtonContainerComponent } from '@alfa-client/forwarding';
 import {
   EndgueltigLoeschenButtonContainerComponent,
   LoeschAnforderungZuruecknehmenButtonContainerComponent,
   LoeschenAnfordernButtonContainerComponent,
 } from '@alfa-client/loesch-anforderung';
 import { HasLinkPipe } from '@alfa-client/tech-shared';
-import { existsAsHtmlElement, notExistsAsHtmlElement } from '@alfa-client/test-utils';
+import { existsAsHtmlElement, getMockComponent, notExistsAsHtmlElement } from '@alfa-client/test-utils';
 import { OzgcloudStrokedButtonWithSpinnerComponent } from '@alfa-client/ui';
-import { VorgangWithEingangLinkRel } from '@alfa-client/vorgang-shared';
+import { VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
+import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { getDataTestIdOf } from 'libs/tech-shared/test/data-test';
 import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang';
 import { MockComponent } from 'ng-mocks';
@@ -48,9 +49,9 @@ describe('VorgangDetailFormularButtonsComponent', () => {
   let component: VorgangDetailFormularButtonsComponent;
   let fixture: ComponentFixture<VorgangDetailFormularButtonsComponent>;
 
-  const loeschenAnfordernButtonContainer: string = getDataTestIdOf(
-    'loeschen-anfordern-button-container',
-  );
+  const loeschenAnfordernButtonContainer: string = getDataTestIdOf('loeschen-anfordern-button-container');
+
+  const vorgangWithEingang: VorgangWithEingangResource = createVorgangWithEingangResource();
 
   beforeEach(async () => {
     await TestBed.configureTestingModule({
@@ -69,6 +70,7 @@ describe('VorgangDetailFormularButtonsComponent', () => {
         MockComponent(LoeschenAnfordernButtonContainerComponent),
         MockComponent(EndgueltigLoeschenButtonContainerComponent),
         MockComponent(LoeschAnforderungZuruecknehmenButtonContainerComponent),
+        MockComponent(ForwardByOzgcloudButtonContainerComponent),
       ],
     });
   });
@@ -76,6 +78,7 @@ describe('VorgangDetailFormularButtonsComponent', () => {
   beforeEach(() => {
     fixture = TestBed.createComponent(VorgangDetailFormularButtonsComponent);
     component = fixture.componentInstance;
+    component.vorgangWithEingang = vorgangWithEingang;
     fixture.detectChanges();
   });
 
@@ -85,19 +88,28 @@ describe('VorgangDetailFormularButtonsComponent', () => {
 
   describe('loeschenAnfordernButtonContainer', () => {
     it('should show if link is present', () => {
-      component.vorgangWithEingang = createVorgangWithEingangResource([
-        VorgangWithEingangLinkRel.LOESCHEN_ANFORDERN,
-      ]);
+      component.vorgangWithEingang = createVorgangWithEingangResource([VorgangWithEingangLinkRel.LOESCHEN_ANFORDERN]);
       fixture.detectChanges();
 
       existsAsHtmlElement(fixture, loeschenAnfordernButtonContainer);
     });
 
     it('should hide if link is not present', () => {
-      component.vorgangWithEingang = createVorgangWithEingangResource();
+      component.vorgangWithEingang = vorgangWithEingang;
       fixture.detectChanges();
 
       notExistsAsHtmlElement(fixture, loeschenAnfordernButtonContainer);
     });
   });
+
+  it('forwarding button should be called', () => {
+    component.vorgangWithEingang = vorgangWithEingang;
+    fixture.detectChanges();
+
+    const button: ForwardByOzgcloudButtonContainerComponent = getMockComponent(
+      fixture,
+      ForwardByOzgcloudButtonContainerComponent,
+    );
+    expect(button.vorgangWithEingang).toBe(vorgangWithEingang);
+  });
 });
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts
index 9c96835792..579b092e9c 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts
@@ -24,7 +24,7 @@
 import { BescheidModule } from '@alfa-client/bescheid';
 import { BinaryFileModule } from '@alfa-client/binary-file';
 import { CollaborationModule } from '@alfa-client/collaboration';
-import { ForwardingModule } from '@alfa-client/forwarding';
+import { ForwardByOzgcloudButtonContainerComponent, ForwardingModule } from '@alfa-client/forwarding';
 import { HistorieModule } from '@alfa-client/historie';
 import { KommentarModule } from '@alfa-client/kommentar';
 import { LoeschAnforderungModule } from '@alfa-client/loesch-anforderung';
@@ -178,6 +178,7 @@ const routes: Routes = [
     DropdownMenuTextItemComponent,
     MoreIconComponent,
     FileIconComponent,
+    ForwardByOzgcloudButtonContainerComponent,
   ],
   declarations: [
     VorgangDetailPageComponent,
-- 
GitLab


From 2f8bd222c166428e9ff205a9abaa82fc3c7d7e92 Mon Sep 17 00:00:00 2001
From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com>
Date: Mon, 3 Feb 2025 13:31:45 +0100
Subject: [PATCH 03/57] OZG-7474 OZG-7661 Add forward icon

---
 alfa-client/libs/design-system/src/index.ts   |  1 +
 .../forward-icon.component.spec.ts            | 44 +++++++++++++++
 .../forward-icon/forward-icon.component.ts    | 53 +++++++++++++++++++
 .../forward-icon/forward-icon.stories.ts      | 50 +++++++++++++++++
 4 files changed, 148 insertions(+)
 create mode 100644 alfa-client/libs/design-system/src/lib/icons/forward-icon/forward-icon.component.spec.ts
 create mode 100644 alfa-client/libs/design-system/src/lib/icons/forward-icon/forward-icon.component.ts
 create mode 100644 alfa-client/libs/design-system/src/lib/icons/forward-icon/forward-icon.stories.ts

diff --git a/alfa-client/libs/design-system/src/index.ts b/alfa-client/libs/design-system/src/index.ts
index 1f46fdee2b..71313e8af6 100644
--- a/alfa-client/libs/design-system/src/index.ts
+++ b/alfa-client/libs/design-system/src/index.ts
@@ -53,6 +53,7 @@ export * from './lib/icons/error-icon/error-icon.component';
 export * from './lib/icons/exclamation-icon/exclamation-icon.component';
 export * from './lib/icons/external-unit-icon/external-unit-icon.component';
 export * from './lib/icons/file-icon/file-icon.component';
+export * from './lib/icons/forward-icon/forward-icon.component';
 export * from './lib/icons/help-icon/help-icon.component';
 export * from './lib/icons/iconVariants';
 export * from './lib/icons/logout-icon/logout-icon.component';
diff --git a/alfa-client/libs/design-system/src/lib/icons/forward-icon/forward-icon.component.spec.ts b/alfa-client/libs/design-system/src/lib/icons/forward-icon/forward-icon.component.spec.ts
new file mode 100644
index 0000000000..6f765213a0
--- /dev/null
+++ b/alfa-client/libs/design-system/src/lib/icons/forward-icon/forward-icon.component.spec.ts
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2025 Das Land Schleswig-Holstein vertreten durch den
+ * Ministerpräsidenten des Landes Schleswig-Holstein
+ * Staatskanzlei
+ * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
+ *
+ * Lizenziert unter der EUPL, Version 1.2 oder - sobald
+ * diese von der Europäischen Kommission genehmigt wurden -
+ * Folgeversionen der EUPL ("Lizenz");
+ * Sie dürfen dieses Werk ausschließlich gemäß
+ * dieser Lizenz nutzen.
+ * Eine Kopie der Lizenz finden Sie hier:
+ *
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+ *
+ * Sofern nicht durch anwendbare Rechtsvorschriften
+ * gefordert oder in schriftlicher Form vereinbart, wird
+ * die unter der Lizenz verbreitete Software "so wie sie
+ * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
+ * ausdrücklich oder stillschweigend - verbreitet.
+ * Die sprachspezifischen Genehmigungen und Beschränkungen
+ * unter der Lizenz sind dem Lizenztext zu entnehmen.
+ */
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { ForwardIconComponent } from './forward-icon.component';
+
+describe('ForwardIconComponent', () => {
+  let component: ForwardIconComponent;
+  let fixture: ComponentFixture<ForwardIconComponent>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      imports: [ForwardIconComponent],
+    }).compileComponents();
+
+    fixture = TestBed.createComponent(ForwardIconComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/alfa-client/libs/design-system/src/lib/icons/forward-icon/forward-icon.component.ts b/alfa-client/libs/design-system/src/lib/icons/forward-icon/forward-icon.component.ts
new file mode 100644
index 0000000000..586fbe1527
--- /dev/null
+++ b/alfa-client/libs/design-system/src/lib/icons/forward-icon/forward-icon.component.ts
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2025 Das Land Schleswig-Holstein vertreten durch den
+ * Ministerpräsidenten des Landes Schleswig-Holstein
+ * Staatskanzlei
+ * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
+ *
+ * Lizenziert unter der EUPL, Version 1.2 oder - sobald
+ * diese von der Europäischen Kommission genehmigt wurden -
+ * Folgeversionen der EUPL ("Lizenz");
+ * Sie dürfen dieses Werk ausschließlich gemäß
+ * dieser Lizenz nutzen.
+ * Eine Kopie der Lizenz finden Sie hier:
+ *
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+ *
+ * Sofern nicht durch anwendbare Rechtsvorschriften
+ * gefordert oder in schriftlicher Form vereinbart, wird
+ * die unter der Lizenz verbreitete Software "so wie sie
+ * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
+ * ausdrücklich oder stillschweigend - verbreitet.
+ * Die sprachspezifischen Genehmigungen und Beschränkungen
+ * unter der Lizenz sind dem Lizenztext zu entnehmen.
+ */
+import { NgClass } from '@angular/common';
+import { Component, Input } from '@angular/core';
+import { twMerge } from 'tailwind-merge';
+import { iconVariants, IconVariants } from '../iconVariants';
+
+@Component({
+  selector: 'ods-forward-icon',
+  standalone: true,
+  imports: [NgClass],
+  template: `<svg
+    viewBox="0 0 24 24"
+    xmlns="http://www.w3.org/2000/svg"
+    [ngClass]="twMerge(iconVariants({ size }), 'fill-primary', class)"
+    aria-hidden="true"
+  >
+    <path d="M17.7222 16.4V14L22 18.2L17.7222 22.4V19.94C14.6667 19.94 12.5278 20.9 11 23C11.6111 20 13.4444 17 17.7222 16.4Z" />
+    <path
+      fill-rule="evenodd"
+      clip-rule="evenodd"
+      d="M16.25 11V3.77384H11.2794L6.875 7.93078L6.875 18.408H9V20.1818H6.875C5.83947 20.1818 5 19.3876 5 18.408V7.93078C5 7.4596 5.19815 7.00779 5.55074 6.67501L9.95513 2.51807C10.3066 2.18631 10.7829 2 11.2794 2H16.25C17.2855 2 18.125 2.79417 18.125 3.77384V11H16.25Z"
+    />
+  </svg>`,
+})
+export class ForwardIconComponent {
+  @Input() size: IconVariants['size'] = 'medium';
+  @Input() class: string = undefined;
+
+  readonly iconVariants = iconVariants;
+  readonly twMerge = twMerge;
+}
diff --git a/alfa-client/libs/design-system/src/lib/icons/forward-icon/forward-icon.stories.ts b/alfa-client/libs/design-system/src/lib/icons/forward-icon/forward-icon.stories.ts
new file mode 100644
index 0000000000..07e7e62158
--- /dev/null
+++ b/alfa-client/libs/design-system/src/lib/icons/forward-icon/forward-icon.stories.ts
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2025 Das Land Schleswig-Holstein vertreten durch den
+ * Ministerpräsidenten des Landes Schleswig-Holstein
+ * Staatskanzlei
+ * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
+ *
+ * Lizenziert unter der EUPL, Version 1.2 oder - sobald
+ * diese von der Europäischen Kommission genehmigt wurden -
+ * Folgeversionen der EUPL ("Lizenz");
+ * Sie dürfen dieses Werk ausschließlich gemäß
+ * dieser Lizenz nutzen.
+ * Eine Kopie der Lizenz finden Sie hier:
+ *
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+ *
+ * Sofern nicht durch anwendbare Rechtsvorschriften
+ * gefordert oder in schriftlicher Form vereinbart, wird
+ * die unter der Lizenz verbreitete Software "so wie sie
+ * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
+ * ausdrücklich oder stillschweigend - verbreitet.
+ * Die sprachspezifischen Genehmigungen und Beschränkungen
+ * unter der Lizenz sind dem Lizenztext zu entnehmen.
+ */
+import type { Meta, StoryObj } from '@storybook/angular';
+
+import { ForwardIconComponent } from './forward-icon.component';
+
+const meta: Meta<ForwardIconComponent> = {
+  title: 'Icons/Forward icon',
+  component: ForwardIconComponent,
+  excludeStories: /.*Data$/,
+  tags: ['autodocs'],
+};
+
+export default meta;
+type Story = StoryObj<ForwardIconComponent>;
+
+export const Default: Story = {
+  args: { size: 'large' },
+  argTypes: {
+    size: {
+      control: 'select',
+      options: ['small', 'medium', 'large', 'extra-large', 'full'],
+      description: 'Size of icon. Property "full" means 100%',
+      table: {
+        defaultValue: { summary: 'medium' },
+      },
+    },
+  },
+};
-- 
GitLab


From 13e81fa0ee1fb945cef4133cc84b1a53dd3ef1fa Mon Sep 17 00:00:00 2001
From: Martin <git@mail.de>
Date: Mon, 3 Feb 2025 19:20:38 +0100
Subject: [PATCH 04/57] OZG-7474 create buttons for weiterleitung

---
 ...y-ozgcloud-button-container.component.html | 17 ++++++-
 ...zgcloud-button-container.component.spec.ts | 44 +++++++++++++++++++
 ...-by-ozgcloud-button-container.component.ts | 10 ++++-
 ...rgang-detail-action-buttons.component.html | 42 +++++++-----------
 ...ng-detail-action-buttons.component.spec.ts |  1 +
 ...ang-detail-formular-buttons.component.html | 24 +++++-----
 .../vorgang-shared/src/lib/vorgang.linkrel.ts |  1 +
 7 files changed, 97 insertions(+), 42 deletions(-)

diff --git a/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.html b/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.html
index d44d1ca87b..c722062fb1 100644
--- a/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.html
+++ b/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.html
@@ -1 +1,16 @@
-<p>forward-by-ozgcloud-button-container works!</p>
+@if (vorgangWithEingang | hasLink: vorgangWithEingangLinkRel.FORWARD_BY_OZGCLOUD) {
+  @if (showAsIconButton) {
+    <ods-button-with-spinner variant="icon" size="fit" dataTestId="forwarding-by-ozgcloud-icon-button">
+      <ods-close-icon icon />
+    </ods-button-with-spinner>
+  } @else {
+    <ods-button-with-spinner
+      *ngIf="!showAsIconButton"
+      text="Weiterleiten"
+      variant="outline"
+      dataTestId="forwarding-by-ozgcloud-button"
+    >
+      <ods-close-icon icon />
+    </ods-button-with-spinner>
+  }
+}
diff --git a/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.spec.ts b/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.spec.ts
index e947e57270..70ee26b0f8 100644
--- a/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.spec.ts
+++ b/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.spec.ts
@@ -1,13 +1,24 @@
+import { existsAsHtmlElement, notExistsAsHtmlElement } from '@alfa-client/test-utils';
+import { VorgangWithEingangLinkRel } from '@alfa-client/vorgang-shared';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { ButtonWithSpinnerComponent } from '@ods/component';
+import { CloseIconComponent } from '@ods/system';
+import { getDataTestIdAttributeOf } from 'libs/tech-shared/test/data-test';
+import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang';
+import { MockComponent } from 'ng-mocks';
 import { ForwardByOzgcloudButtonContainerComponent } from './forward-by-ozgcloud-button-container.component';
 
 describe('ForwardByOzgcloudButtonContainerComponent', () => {
   let component: ForwardByOzgcloudButtonContainerComponent;
   let fixture: ComponentFixture<ForwardByOzgcloudButtonContainerComponent>;
 
+  const iconButton: string = getDataTestIdAttributeOf('forwarding-by-ozgcloud-icon-button');
+  const button: string = getDataTestIdAttributeOf('forwarding-by-ozgcloud-button');
+
   beforeEach(async () => {
     await TestBed.configureTestingModule({
       imports: [ForwardByOzgcloudButtonContainerComponent],
+      declarations: [MockComponent(ButtonWithSpinnerComponent), MockComponent(CloseIconComponent)],
     }).compileComponents();
 
     fixture = TestBed.createComponent(ForwardByOzgcloudButtonContainerComponent);
@@ -18,4 +29,37 @@ describe('ForwardByOzgcloudButtonContainerComponent', () => {
   it('should create', () => {
     expect(component).toBeTruthy();
   });
+
+  describe('on existing link', () => {
+    beforeEach(() => {
+      component.vorgangWithEingang = createVorgangWithEingangResource([VorgangWithEingangLinkRel.FORWARD_BY_OZGCLOUD]);
+    });
+
+    it('show as button', () => {
+      component.showAsIconButton = false;
+
+      fixture.detectChanges();
+
+      existsAsHtmlElement(fixture, button);
+    });
+
+    it('show as iconButton', () => {
+      component.showAsIconButton = true;
+
+      fixture.detectChanges();
+
+      existsAsHtmlElement(fixture, iconButton);
+    });
+  });
+
+  describe('on missing link', () => {
+    it('should hide buttons', () => {
+      component.vorgangWithEingang = createVorgangWithEingangResource();
+
+      fixture.detectChanges();
+
+      notExistsAsHtmlElement(fixture, button);
+      notExistsAsHtmlElement(fixture, iconButton);
+    });
+  });
 });
diff --git a/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.ts b/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.ts
index cc94c34ebd..cb812ddcd2 100644
--- a/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.ts
+++ b/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.ts
@@ -1,13 +1,19 @@
-import { VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
+import { TechSharedModule } from '@alfa-client/tech-shared';
+import { VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
 import { CommonModule } from '@angular/common';
 import { Component, Input } from '@angular/core';
+import { ButtonWithSpinnerComponent } from '@ods/component';
+import { CloseIconComponent } from '@ods/system';
 
 @Component({
   selector: 'alfa-forward-by-ozgcloud-button-container',
   standalone: true,
-  imports: [CommonModule],
+  imports: [CommonModule, TechSharedModule, ButtonWithSpinnerComponent, CloseIconComponent],
   templateUrl: './forward-by-ozgcloud-button-container.component.html',
 })
 export class ForwardByOzgcloudButtonContainerComponent {
   @Input() vorgangWithEingang: VorgangWithEingangResource;
+  @Input() showAsIconButton: boolean = false;
+
+  public readonly vorgangWithEingangLinkRel = VorgangWithEingangLinkRel;
 }
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-action-buttons/vorgang-detail-action-buttons.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-action-buttons/vorgang-detail-action-buttons.component.html
index 108f8600a4..6ef3191b65 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-action-buttons/vorgang-detail-action-buttons.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-action-buttons/vorgang-detail-action-buttons.component.html
@@ -23,37 +23,25 @@
     unter der Lizenz sind dem Lizenztext zu entnehmen.
 
 -->
-<alfa-annehmen-button [showAsIconButton]="showAsIconButton" [vorgang]="vorgangWithEingang"></alfa-annehmen-button>
-<alfa-zurueckholen-button [showAsIconButton]="showAsIconButton" [vorgang]="vorgangWithEingang"></alfa-zurueckholen-button>
-<alfa-bearbeiten-button [showAsIconButton]="showAsIconButton" [vorgang]="vorgangWithEingang"></alfa-bearbeiten-button>
-<alfa-bescheiden-button [showAsIconButton]="showAsIconButton" [vorgang]="vorgangWithEingang"></alfa-bescheiden-button>
-<alfa-zurueckstellen-button [showAsIconButton]="showAsIconButton" [vorgang]="vorgangWithEingang"></alfa-zurueckstellen-button>
-<alfa-abschliessen-button [showAsIconButton]="showAsIconButton" [vorgang]="vorgangWithEingang"></alfa-abschliessen-button>
-<alfa-verwerfen-button [showAsIconButton]="showAsIconButton" [vorgang]="vorgangWithEingang"></alfa-verwerfen-button>
-<alfa-wiedereroeffnen-button [showAsIconButton]="showAsIconButton" [vorgang]="vorgangWithEingang"></alfa-wiedereroeffnen-button>
+<alfa-annehmen-button [showAsIconButton]="showAsIconButton" [vorgang]="vorgangWithEingang" />
+<alfa-zurueckholen-button [showAsIconButton]="showAsIconButton" [vorgang]="vorgangWithEingang" />
+<alfa-bearbeiten-button [showAsIconButton]="showAsIconButton" [vorgang]="vorgangWithEingang" />
+<alfa-bescheiden-button [showAsIconButton]="showAsIconButton" [vorgang]="vorgangWithEingang" />
+<alfa-zurueckstellen-button [showAsIconButton]="showAsIconButton" [vorgang]="vorgangWithEingang" />
+<alfa-abschliessen-button [showAsIconButton]="showAsIconButton" [vorgang]="vorgangWithEingang" />
+<alfa-verwerfen-button [showAsIconButton]="showAsIconButton" [vorgang]="vorgangWithEingang" />
+<alfa-wiedereroeffnen-button [showAsIconButton]="showAsIconButton" [vorgang]="vorgangWithEingang" />
 <!-- TODO Anhand des Links Library dynamisch laden -->
 <alfa-loeschen-anfordern-button-container
   *ngIf="vorgangWithEingang | hasLink: vorgangWithEingangLinkRel.LOESCHEN_ANFORDERN"
   data-test-id="loeschen-anfordern-icon-button-container"
   [showAsIconButton]="showAsIconButton"
   [vorgang]="vorgangWithEingang"
->
-</alfa-loeschen-anfordern-button-container>
-<alfa-endgueltig-loeschen-button-container
-  [showAsIconButton]="showAsIconButton"
-  [vorgang]="vorgangWithEingang"
-></alfa-endgueltig-loeschen-button-container>
-<alfa-loesch-anforderung-zuruecknehmen-button-container
-  [showAsIconButton]="showAsIconButton"
-></alfa-loesch-anforderung-zuruecknehmen-button-container>
+/>
+<alfa-endgueltig-loeschen-button-container [showAsIconButton]="showAsIconButton" [vorgang]="vorgangWithEingang" />
+<alfa-loesch-anforderung-zuruecknehmen-button-container [showAsIconButton]="showAsIconButton" />
 <!--  -->
-<alfa-create-wiedervorlage-button-container
-  [showAsIconButton]="showAsIconButton"
-  [vorgang]="vorgangWithEingang"
-></alfa-create-wiedervorlage-button-container>
-<alfa-assign-user-profile-button-container [vorgang]="vorgangWithEingang"></alfa-assign-user-profile-button-container>
-<alfa-postfach-mail-button-container
-  [showAsIconButton]="showAsIconButton"
-  [vorgang]="vorgangWithEingang"
-></alfa-postfach-mail-button-container>
-<alfa-forward-by-ozgcloud-button-container [vorgangWithEingang]="vorgangWithEingang"></alfa-forward-by-ozgcloud-button-container>
+<alfa-create-wiedervorlage-button-container [showAsIconButton]="showAsIconButton" [vorgang]="vorgangWithEingang" />
+<alfa-assign-user-profile-button-container [vorgang]="vorgangWithEingang" />
+<alfa-postfach-mail-button-container [showAsIconButton]="showAsIconButton" [vorgang]="vorgangWithEingang" />
+<alfa-forward-by-ozgcloud-button-container [vorgangWithEingang]="vorgangWithEingang" [showAsIconButton]="showAsIconButton" />
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-action-buttons/vorgang-detail-action-buttons.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-action-buttons/vorgang-detail-action-buttons.component.spec.ts
index 7a54317356..b8c3aed662 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-action-buttons/vorgang-detail-action-buttons.component.spec.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-action-buttons/vorgang-detail-action-buttons.component.spec.ts
@@ -128,5 +128,6 @@ describe('VorgangDetailActionButtonsComponent', () => {
       ForwardByOzgcloudButtonContainerComponent,
     );
     expect(button.vorgangWithEingang).toBe(vorgangWithEingang);
+    expect(button.showAsIconButton).toBeTruthy();
   });
 });
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-buttons/vorgang-detail-formular-buttons.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-buttons/vorgang-detail-formular-buttons.component.html
index 2c75ebab3e..a8e1579582 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-buttons/vorgang-detail-formular-buttons.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-buttons/vorgang-detail-formular-buttons.component.html
@@ -23,22 +23,22 @@
     unter der Lizenz sind dem Lizenztext zu entnehmen.
 
 -->
-<alfa-annehmen-button [vorgang]="vorgangWithEingang"></alfa-annehmen-button>
-<alfa-zurueckholen-button [vorgang]="vorgangWithEingang"></alfa-zurueckholen-button>
-<alfa-verwerfen-button [vorgang]="vorgangWithEingang"></alfa-verwerfen-button>
-<alfa-bearbeiten-button [vorgang]="vorgangWithEingang"></alfa-bearbeiten-button>
-<alfa-bescheiden-button [vorgang]="vorgangWithEingang"></alfa-bescheiden-button>
-<alfa-zurueckstellen-button [vorgang]="vorgangWithEingang"></alfa-zurueckstellen-button>
-<alfa-abschliessen-button [vorgang]="vorgangWithEingang"></alfa-abschliessen-button>
-<alfa-wiedereroeffnen-button [vorgang]="vorgangWithEingang"></alfa-wiedereroeffnen-button>
+<alfa-annehmen-button [vorgang]="vorgangWithEingang" />
+<alfa-zurueckholen-button [vorgang]="vorgangWithEingang" />
+<alfa-verwerfen-button [vorgang]="vorgangWithEingang" />
+<alfa-bearbeiten-button [vorgang]="vorgangWithEingang" />
+<alfa-bescheiden-button [vorgang]="vorgangWithEingang" />
+<alfa-zurueckstellen-button [vorgang]="vorgangWithEingang" />
+<alfa-abschliessen-button [vorgang]="vorgangWithEingang" />
+<alfa-wiedereroeffnen-button [vorgang]="vorgangWithEingang" />
 <!-- TODO LoeschAnforderung dynamisch laden, wenn Link vorhanden -->
 <alfa-loeschen-anfordern-button-container
   *ngIf="vorgangWithEingang | hasLink: vorgangWithEingangLinkRel.LOESCHEN_ANFORDERN"
   data-test-id="loeschen-anfordern-button-container"
   [vorgang]="vorgangWithEingang"
 >
+  <!--  -->
 </alfa-loeschen-anfordern-button-container>
-<alfa-endgueltig-loeschen-button-container [vorgang]="vorgangWithEingang"></alfa-endgueltig-loeschen-button-container>
-<alfa-loesch-anforderung-zuruecknehmen-button-container></alfa-loesch-anforderung-zuruecknehmen-button-container>
-<alfa-forward-by-ozgcloud-button-container [vorgangWithEingang]="vorgangWithEingang"></alfa-forward-by-ozgcloud-button-container>
-<!--  -->
+<alfa-endgueltig-loeschen-button-container [vorgang]="vorgangWithEingang" />
+<alfa-loesch-anforderung-zuruecknehmen-button-container />
+<alfa-forward-by-ozgcloud-button-container [vorgangWithEingang]="vorgangWithEingang" />
diff --git a/alfa-client/libs/vorgang-shared/src/lib/vorgang.linkrel.ts b/alfa-client/libs/vorgang-shared/src/lib/vorgang.linkrel.ts
index ed59d9c3e4..f36fa5e7f8 100644
--- a/alfa-client/libs/vorgang-shared/src/lib/vorgang.linkrel.ts
+++ b/alfa-client/libs/vorgang-shared/src/lib/vorgang.linkrel.ts
@@ -50,6 +50,7 @@ export enum VorgangWithEingangLinkRel {
   ATTACHMENTS = 'attachments',
   FORWARD = 'forward',
   FORWARDING = 'forwarding',
+  FORWARD_BY_OZGCLOUD = 'forwardByOzgCloud',
   PENDING_COMMANDS = 'pending-commands',
   ASSIGN = 'assign',
   REPRESENTATIONS = 'representations',
-- 
GitLab


From 6dee42fed2bdeaeb6bb977a9db3239971d51344f Mon Sep 17 00:00:00 2001
From: Martin <git@mail.de>
Date: Mon, 3 Feb 2025 19:29:58 +0100
Subject: [PATCH 05/57] OZG-7474 switch icons

---
 ...ward-by-ozgcloud-button-container.component.html | 13 ++++---------
 ...d-by-ozgcloud-button-container.component.spec.ts |  8 ++++----
 ...orward-by-ozgcloud-button-container.component.ts |  4 ++--
 3 files changed, 10 insertions(+), 15 deletions(-)

diff --git a/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.html b/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.html
index c722062fb1..415baac659 100644
--- a/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.html
+++ b/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.html
@@ -1,16 +1,11 @@
 @if (vorgangWithEingang | hasLink: vorgangWithEingangLinkRel.FORWARD_BY_OZGCLOUD) {
   @if (showAsIconButton) {
-    <ods-button-with-spinner variant="icon" size="fit" dataTestId="forwarding-by-ozgcloud-icon-button">
-      <ods-close-icon icon />
+    <ods-button-with-spinner variant="icon" size="fit" dataTestId="forward-by-ozgcloud-icon-button">
+      <ods-forward-icon icon />
     </ods-button-with-spinner>
   } @else {
-    <ods-button-with-spinner
-      *ngIf="!showAsIconButton"
-      text="Weiterleiten"
-      variant="outline"
-      dataTestId="forwarding-by-ozgcloud-button"
-    >
-      <ods-close-icon icon />
+    <ods-button-with-spinner text="Weiterleiten" variant="outline" dataTestId="forward-by-ozgcloud-button">
+      <ods-forward-icon icon />
     </ods-button-with-spinner>
   }
 }
diff --git a/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.spec.ts b/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.spec.ts
index 70ee26b0f8..5a38308bdc 100644
--- a/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.spec.ts
+++ b/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.spec.ts
@@ -2,7 +2,7 @@ import { existsAsHtmlElement, notExistsAsHtmlElement } from '@alfa-client/test-u
 import { VorgangWithEingangLinkRel } from '@alfa-client/vorgang-shared';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { ButtonWithSpinnerComponent } from '@ods/component';
-import { CloseIconComponent } from '@ods/system';
+import { ForwardIconComponent } from '@ods/system';
 import { getDataTestIdAttributeOf } from 'libs/tech-shared/test/data-test';
 import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang';
 import { MockComponent } from 'ng-mocks';
@@ -12,13 +12,13 @@ describe('ForwardByOzgcloudButtonContainerComponent', () => {
   let component: ForwardByOzgcloudButtonContainerComponent;
   let fixture: ComponentFixture<ForwardByOzgcloudButtonContainerComponent>;
 
-  const iconButton: string = getDataTestIdAttributeOf('forwarding-by-ozgcloud-icon-button');
-  const button: string = getDataTestIdAttributeOf('forwarding-by-ozgcloud-button');
+  const iconButton: string = getDataTestIdAttributeOf('forward-by-ozgcloud-icon-button');
+  const button: string = getDataTestIdAttributeOf('forward-by-ozgcloud-button');
 
   beforeEach(async () => {
     await TestBed.configureTestingModule({
       imports: [ForwardByOzgcloudButtonContainerComponent],
-      declarations: [MockComponent(ButtonWithSpinnerComponent), MockComponent(CloseIconComponent)],
+      declarations: [MockComponent(ButtonWithSpinnerComponent), MockComponent(ForwardIconComponent)],
     }).compileComponents();
 
     fixture = TestBed.createComponent(ForwardByOzgcloudButtonContainerComponent);
diff --git a/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.ts b/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.ts
index cb812ddcd2..4316c3ee5f 100644
--- a/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.ts
+++ b/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.ts
@@ -3,12 +3,12 @@ import { VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-cli
 import { CommonModule } from '@angular/common';
 import { Component, Input } from '@angular/core';
 import { ButtonWithSpinnerComponent } from '@ods/component';
-import { CloseIconComponent } from '@ods/system';
+import { ForwardIconComponent } from '@ods/system';
 
 @Component({
   selector: 'alfa-forward-by-ozgcloud-button-container',
   standalone: true,
-  imports: [CommonModule, TechSharedModule, ButtonWithSpinnerComponent, CloseIconComponent],
+  imports: [CommonModule, TechSharedModule, ButtonWithSpinnerComponent, ForwardIconComponent],
   templateUrl: './forward-by-ozgcloud-button-container.component.html',
 })
 export class ForwardByOzgcloudButtonContainerComponent {
-- 
GitLab


From 201b3d38be842da01b40157b775a3218f7b31e6b Mon Sep 17 00:00:00 2001
From: Martin <git@mail.de>
Date: Mon, 3 Feb 2025 19:38:43 +0100
Subject: [PATCH 06/57] OZG-7474 adjust linkRel: forwarding -> forwardByEmail

---
 .../src/lib/forwarding.repository.spec.ts       |  6 ++----
 .../src/lib/forwarding.repository.ts            |  4 ++--
 .../vorgang-forwarding-container.component.html | 10 ++--------
 ...rgang-forwarding-container.component.spec.ts | 15 +++++----------
 .../vorgang-forwarding-container.component.ts   | 17 ++++++-----------
 .../vorgang-detail-area.component.html          |  2 +-
 .../vorgang-detail-area.component.spec.ts       |  2 +-
 .../vorgang-shared/src/lib/vorgang.linkrel.ts   |  2 +-
 8 files changed, 20 insertions(+), 38 deletions(-)

diff --git a/alfa-client/libs/forwarding-shared/src/lib/forwarding.repository.spec.ts b/alfa-client/libs/forwarding-shared/src/lib/forwarding.repository.spec.ts
index f675f96336..34a7bd065f 100644
--- a/alfa-client/libs/forwarding-shared/src/lib/forwarding.repository.spec.ts
+++ b/alfa-client/libs/forwarding-shared/src/lib/forwarding.repository.spec.ts
@@ -43,9 +43,7 @@ describe('ForwardingRepository', () => {
   });
 
   describe('getForwardings', () => {
-    const vorgang: VorgangWithEingangResource = createVorgangWithEingangResource([
-      VorgangWithEingangLinkRel.FORWARDING,
-    ]);
+    const vorgang: VorgangWithEingangResource = createVorgangWithEingangResource([VorgangWithEingangLinkRel.FORWARD_BY_EMAIL]);
     const commandList: ForwardingListResource = createForwardingListResource();
 
     beforeEach(() => {
@@ -61,7 +59,7 @@ describe('ForwardingRepository', () => {
     it('should call resourceWrapper', () => {
       repository.getForwardings(vorgang);
 
-      expect(resourceWrapper.get).toHaveBeenCalledWith(VorgangWithEingangLinkRel.FORWARDING);
+      expect(resourceWrapper.get).toHaveBeenCalledWith(VorgangWithEingangLinkRel.FORWARD_BY_EMAIL);
     });
 
     it('should return result', () => {
diff --git a/alfa-client/libs/forwarding-shared/src/lib/forwarding.repository.ts b/alfa-client/libs/forwarding-shared/src/lib/forwarding.repository.ts
index 33d6a4d7a9..a83ca3536d 100644
--- a/alfa-client/libs/forwarding-shared/src/lib/forwarding.repository.ts
+++ b/alfa-client/libs/forwarding-shared/src/lib/forwarding.repository.ts
@@ -21,8 +21,8 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { Injectable } from '@angular/core';
 import { VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
+import { Injectable } from '@angular/core';
 import { ResourceFactory } from '@ngxp/rest';
 import { Observable } from 'rxjs';
 import { ForwardingListResource } from './forwarding.model';
@@ -32,6 +32,6 @@ export class ForwardingRepository {
   constructor(private resourceFactory: ResourceFactory) {}
 
   public getForwardings(vorgang: VorgangWithEingangResource): Observable<ForwardingListResource> {
-    return this.resourceFactory.from(vorgang).get(VorgangWithEingangLinkRel.FORWARDING);
+    return this.resourceFactory.from(vorgang).get(VorgangWithEingangLinkRel.FORWARD_BY_EMAIL);
   }
 }
diff --git a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-container.component.html b/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-container.component.html
index 435e66f601..2698ddc7e7 100644
--- a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-container.component.html
+++ b/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-container.component.html
@@ -23,20 +23,14 @@
     unter der Lizenz sind dem Lizenztext zu entnehmen.
 
 -->
-<ng-container
-  *ngIf="
-    (vorgang | hasLink: vorgangLinkRel.FORWARD) || (vorgang | hasLink: vorgangLinkRel.FORWARDING)
-  "
->
+<ng-container *ngIf="(vorgang | hasLink: vorgangLinkRel.FORWARD) || (vorgang | hasLink: vorgangLinkRel.FORWARD_BY_EMAIL)">
   <ozgcloud-expansion-panel
     headline="Vorgang weiterleiten"
     data-test-id="forwarding"
     *ngIf="forwardingStateResources$ | async as forwardingStateResources"
   >
     <ozgcloud-spinner [stateResource]="forwardingStateResources">
-      <alfa-vorgang-forwarding-info-list
-        [forwardingList]="forwardingStateResources"
-      ></alfa-vorgang-forwarding-info-list>
+      <alfa-vorgang-forwarding-info-list [forwardingList]="forwardingStateResources"></alfa-vorgang-forwarding-info-list>
     </ozgcloud-spinner>
 
     <alfa-vorgang-forward-formular
diff --git a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-container.component.spec.ts b/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-container.component.spec.ts
index 33d4a94562..25691e2e36 100644
--- a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-container.component.spec.ts
+++ b/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-container.component.spec.ts
@@ -21,18 +21,15 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-import { UntypedFormBuilder } from '@angular/forms';
 import { ForwardingService } from '@alfa-client/forwarding-shared';
 import { createStateResource, HasLinkPipe } from '@alfa-client/tech-shared';
 import { mock } from '@alfa-client/test-utils';
 import { ExpansionPanelComponent, SpinnerComponent } from '@alfa-client/ui';
 import { VorgangWithEingangLinkRel } from '@alfa-client/vorgang-shared';
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { UntypedFormBuilder } from '@angular/forms';
 import { createCommandResource } from 'libs/command-shared/test/command';
-import {
-  createVorgangForwardRequest,
-  createVorgangWithEingangResource,
-} from 'libs/vorgang-shared/test/vorgang';
+import { createVorgangForwardRequest, createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang';
 import { MockComponent } from 'ng-mocks';
 import { of } from 'rxjs';
 import { VorgangForwardFormService } from './vorgang-forward-formular/vorgang-forward-form/vorgang-forward.formservice';
@@ -127,7 +124,7 @@ describe('VorgangForwardingContainerComponent', () => {
     });
 
     it('should call service get forward commands', () => {
-      component.vorgang = createVorgangWithEingangResource([VorgangWithEingangLinkRel.FORWARDING]);
+      component.vorgang = createVorgangWithEingangResource([VorgangWithEingangLinkRel.FORWARD_BY_EMAIL]);
       fixture.detectChanges();
 
       component.getForwardings();
@@ -150,9 +147,7 @@ describe('VorgangForwardingContainerComponent', () => {
   describe('forwarding', () => {
     describe('on forwarding link', () => {
       it('should show if exists', () => {
-        component.vorgang = createVorgangWithEingangResource([
-          VorgangWithEingangLinkRel.FORWARDING,
-        ]);
+        component.vorgang = createVorgangWithEingangResource([VorgangWithEingangLinkRel.FORWARD_BY_EMAIL]);
         fixture.detectChanges();
 
         const element = fixture.nativeElement.querySelector(forwarding);
diff --git a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-container.component.ts b/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-container.component.ts
index e9aedf3441..9613957552 100644
--- a/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-container.component.ts
+++ b/alfa-client/libs/forwarding/src/lib/vorgang-forwarding-container/vorgang-forwarding-container.component.ts
@@ -21,11 +21,11 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { Component, Input, OnChanges } from '@angular/core';
 import { CommandResource } from '@alfa-client/command-shared';
 import { ForwardingListResource, ForwardingService } from '@alfa-client/forwarding-shared';
 import { createEmptyStateResource, StateResource } from '@alfa-client/tech-shared';
 import { VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
+import { Component, Input, OnChanges } from '@angular/core';
 import { hasLink } from '@ngxp/rest';
 import { CommandLinkRel } from 'libs/command-shared/src/lib/command.linkrel';
 import { Observable, of } from 'rxjs';
@@ -40,12 +40,9 @@ import { VorgangForwardFormService } from './vorgang-forward-formular/vorgang-fo
 export class VorgangForwardingContainerComponent implements OnChanges {
   @Input() public vorgang: VorgangWithEingangResource;
 
-  forwardingStateResources$: Observable<StateResource<ForwardingListResource>> = of(
-    createEmptyStateResource<ForwardingListResource>(),
-  );
-  pendingForwardStateResource$: Observable<StateResource<CommandResource>> = of(
-    createEmptyStateResource<CommandResource>(),
-  );
+  forwardingStateResources$: Observable<StateResource<ForwardingListResource>> =
+    of(createEmptyStateResource<ForwardingListResource>());
+  pendingForwardStateResource$: Observable<StateResource<CommandResource>> = of(createEmptyStateResource<CommandResource>());
 
   readonly linkRel = CommandLinkRel;
   readonly vorgangLinkRel = VorgangWithEingangLinkRel;
@@ -67,7 +64,7 @@ export class VorgangForwardingContainerComponent implements OnChanges {
   }
 
   getForwardings(): void {
-    if (hasLink(this.vorgang, VorgangWithEingangLinkRel.FORWARDING)) {
+    if (hasLink(this.vorgang, VorgangWithEingangLinkRel.FORWARD_BY_EMAIL)) {
       this.forwardingStateResources$ = this.forwardingService.getForwardings(this.vorgang);
     }
   }
@@ -77,8 +74,6 @@ export class VorgangForwardingContainerComponent implements OnChanges {
   }
 
   submit(): void {
-    this.pendingForwardStateResource$ = <Observable<StateResource<CommandResource>>>(
-      this.formService.submit()
-    );
+    this.pendingForwardStateResource$ = <Observable<StateResource<CommandResource>>>this.formService.submit();
   }
 }
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-area.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-area.component.html
index 9c2c2212dc..bc73d5f4c8 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-area.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-area.component.html
@@ -58,7 +58,7 @@
       </div>
 
       <div class="two-column">
-        <div class="section" *ngIf="vorgangResource | hasLink: vorgangWithEingangLinkRel.FORWARDING">
+        <div class="section" *ngIf="vorgangResource | hasLink: vorgangWithEingangLinkRel.FORWARD_BY_EMAIL">
           <alfa-vorgang-forwarding-container
             [vorgang]="vorgangResource"
             data-test-id="forwarding-container-in-vorgang"
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-area.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-area.component.spec.ts
index 523eb42b38..79d55a0dd7 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-area.component.spec.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-area.component.spec.ts
@@ -192,7 +192,7 @@ describe('VorgangDetailAreaComponent', () => {
   describe('forwarding', () => {
     it('should be visible', () => {
       component.vorgangStateResource = createStateResource(
-        createVorgangWithEingangResource([VorgangWithEingangLinkRel.FORWARDING]),
+        createVorgangWithEingangResource([VorgangWithEingangLinkRel.FORWARD_BY_EMAIL]),
       );
       fixture.detectChanges();
 
diff --git a/alfa-client/libs/vorgang-shared/src/lib/vorgang.linkrel.ts b/alfa-client/libs/vorgang-shared/src/lib/vorgang.linkrel.ts
index f36fa5e7f8..81efa35cbd 100644
--- a/alfa-client/libs/vorgang-shared/src/lib/vorgang.linkrel.ts
+++ b/alfa-client/libs/vorgang-shared/src/lib/vorgang.linkrel.ts
@@ -49,7 +49,7 @@ export enum VorgangWithEingangLinkRel {
 
   ATTACHMENTS = 'attachments',
   FORWARD = 'forward',
-  FORWARDING = 'forwarding',
+  FORWARD_BY_EMAIL = 'forwardByEmail',
   FORWARD_BY_OZGCLOUD = 'forwardByOzgCloud',
   PENDING_COMMANDS = 'pending-commands',
   ASSIGN = 'assign',
-- 
GitLab


From c0e068a51cb0406a2063bc27d0095d3e83e178bd Mon Sep 17 00:00:00 2001
From: Albert <Albert.Bruns@mgm-tp.com>
Date: Tue, 4 Feb 2025 14:08:04 +0100
Subject: [PATCH 07/57] OZG-7472-7632 ods buttons

---
 .../libs/test-utils/src/lib/jest.helper.ts    |   8 +-
 .../annehmen-button.component.html            |  45 +-
 .../annehmen-button.component.spec.ts         | 122 +++--
 .../bescheiden-button.component.html          |  45 +-
 .../bescheiden-button.component.spec.ts       | 459 +++++++++---------
 .../src/lib/vorgang-detail.module.ts          |   2 +
 6 files changed, 373 insertions(+), 308 deletions(-)

diff --git a/alfa-client/libs/test-utils/src/lib/jest.helper.ts b/alfa-client/libs/test-utils/src/lib/jest.helper.ts
index 1f05a4791c..60df8592af 100644
--- a/alfa-client/libs/test-utils/src/lib/jest.helper.ts
+++ b/alfa-client/libs/test-utils/src/lib/jest.helper.ts
@@ -23,7 +23,8 @@
  */
 import { ComponentFixture } from '@angular/core/testing';
 import { expect } from '@jest/globals';
-import { getElementFromFixture } from './helper';
+import { TooltipDirective } from '@ods/system';
+import { getDebugElementFromFixtureByCss, getElementFromFixture } from './helper';
 
 export function notExistsAsHtmlElement(fixture: ComponentFixture<any>, domElement: string): void {
   expect(getElementFromFixture(fixture, domElement)).not.toBeInstanceOf(HTMLElement);
@@ -32,3 +33,8 @@ export function notExistsAsHtmlElement(fixture: ComponentFixture<any>, domElemen
 export function existsAsHtmlElement(fixture: ComponentFixture<any>, domElement: string): void {
   expect(getElementFromFixture(fixture, domElement)).toBeInstanceOf(HTMLElement);
 }
+
+export function tooltipExistsWithText(fixture: ComponentFixture<any>, domElement: string, tooltipText: string) {
+  const tooltipInstance = getDebugElementFromFixtureByCss(fixture, domElement).injector.get(TooltipDirective);
+  expect(tooltipInstance.componentRef.instance.text).toBe(tooltipText);
+}
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/annehmen-button/annehmen-button.component.html b/alfa-client/libs/vorgang-detail/src/lib/buttons/annehmen-button/annehmen-button.component.html
index 97c685caf7..b93172bd7e 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/annehmen-button/annehmen-button.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/annehmen-button/annehmen-button.component.html
@@ -23,24 +23,27 @@
     unter der Lizenz sind dem Lizenztext zu entnehmen.
 
 -->
-<ng-container *ngIf="vorgang | hasLink: linkRel.ANNEHMEN">
-  <ozgcloud-stroked-button-with-spinner
-    *ngIf="!showAsIconButton"
-    data-test-id="annehmen-button"
-    text="Annehmen"
-    icon="check_circle_outline"
-    [stateResource]="commandStateResource$ | async"
-    (clickEmitter)="annehmen()"
-  >
-  </ozgcloud-stroked-button-with-spinner>
-
-  <ozgcloud-icon-button-with-spinner
-    *ngIf="showAsIconButton"
-    data-test-id="annehmen-icon-button"
-    icon="check_circle_outline"
-    toolTip="Vorgang annehmen"
-    [stateResource]="commandStateResource$ | async"
-    (clickEmitter)="annehmen()"
-  >
-  </ozgcloud-icon-button-with-spinner>
-</ng-container>
+@if(vorgang | hasLink: linkRel.ANNEHMEN){
+  @if(showAsIconButton){
+    <ods-button-with-spinner
+      [stateResource]="commandStateResource$ | async"
+      (clickEmitter)="annehmen()"
+      toolTip="Vorgang annehmen"
+      variant="icon"
+      size="fit"
+      data-test-id="annehmen-icon-button"
+    >
+      <ods-check-icon icon class="fill-primary"/>
+    </ods-button-with-spinner>
+  } @else {
+    <ods-button-with-spinner
+      [stateResource]="commandStateResource$ | async"
+      (clickEmitter)="annehmen()"
+      toolTip="Vorgang annehmen"
+      variant="outline"
+      data-test-id="annehmen-button"
+    >
+      <ods-check-icon icon class="fill-primary"/>
+    </ods-button-with-spinner>
+  }
+}
\ No newline at end of file
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/annehmen-button/annehmen-button.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/buttons/annehmen-button/annehmen-button.component.spec.ts
index 43b5fa53e7..9d201f9cc3 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/annehmen-button/annehmen-button.component.spec.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/annehmen-button/annehmen-button.component.spec.ts
@@ -21,14 +21,13 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-import { HasLinkPipe, createStateResource } from '@alfa-client/tech-shared';
-import { mock } from '@alfa-client/test-utils';
-import {
-  IconButtonWithSpinnerComponent,
-  OzgcloudStrokedButtonWithSpinnerComponent,
-} from '@alfa-client/ui';
+import { CommandResource } from '@alfa-client/command-shared';
+import { createStateResource, HasLinkPipe, StateResource } from '@alfa-client/tech-shared';
+import { getElementComponentFromFixtureByCss, mock, notExistsAsHtmlElement, triggerEvent } from '@alfa-client/test-utils';
 import { VorgangCommandService, VorgangWithEingangLinkRel } from '@alfa-client/vorgang-shared';
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { ButtonWithSpinnerComponent } from '@ods/component';
+import { CheckIconComponent, TooltipDirective } from '@ods/system';
 import { createCommandResource } from 'libs/command-shared/test/command';
 import { getDataTestIdOf } from 'libs/tech-shared/test/data-test';
 import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang';
@@ -52,9 +51,10 @@ describe('AnnehmenButtonComponent', () => {
     await TestBed.configureTestingModule({
       declarations: [
         AnnehmenButtonComponent,
-        MockComponent(OzgcloudStrokedButtonWithSpinnerComponent),
-        MockComponent(IconButtonWithSpinnerComponent),
         HasLinkPipe,
+        TooltipDirective,
+        MockComponent(ButtonWithSpinnerComponent),
+        MockComponent(CheckIconComponent),
       ],
       providers: [
         {
@@ -75,69 +75,95 @@ describe('AnnehmenButtonComponent', () => {
     expect(component).toBeTruthy();
   });
 
-  describe('ngOnInit', () => {
-    it('should call service', () => {
-      component.ngOnInit();
+  describe('component', () => {
+    describe('ngOnInit', () => {
+      it('should call service', () => {
+        component.ngOnInit();
 
-      expect(vorgangCommandService.getAnnehmenCommand).toHaveBeenCalled();
+        expect(vorgangCommandService.getAnnehmenCommand).toHaveBeenCalled();
+      });
     });
-  });
 
-  describe('annehmen', () => {
-    it('should call vorgang service', () => {
-      component.annehmen();
+    describe('annehmen', () => {
+      it('should call vorgang service', () => {
+        component.annehmen();
 
-      expect(vorgangCommandService.annehmen).toHaveBeenCalled();
+        expect(vorgangCommandService.annehmen).toHaveBeenCalled();
+      });
     });
   });
 
-  describe('annehmen button', () => {
+  describe('template', () => {
+    const state: StateResource<CommandResource> = createStateResource(createCommandResource());
+
     beforeEach(() => {
-      component.showAsIconButton = false;
+      component.vorgang = createVorgangWithEingangResource([VorgangWithEingangLinkRel.ANNEHMEN]);
+      component.commandStateResource$ = of(state);
       fixture.detectChanges();
     });
 
-    it('should be hidden', () => {
-      component.vorgang = createVorgangWithEingangResource();
+    describe('annehmen button', () => {
+      beforeEach(() => {
+        component.showAsIconButton = false;
+        fixture.detectChanges();
+      });
 
-      fixture.detectChanges();
-      const buttonElement = fixture.nativeElement.querySelector(annehmenButton);
+      it('should not exist', () => {
+        component.vorgang = createVorgangWithEingangResource();
 
-      expect(buttonElement).not.toBeInstanceOf(HTMLElement);
-    });
+        fixture.detectChanges();
 
-    it('should be visible', () => {
-      component.vorgang = createVorgangWithEingangResource([VorgangWithEingangLinkRel.ANNEHMEN]);
+        notExistsAsHtmlElement(fixture, annehmenButton);
+      });
 
-      fixture.detectChanges();
-      const buttonElement = fixture.nativeElement.querySelector(annehmenButton);
+      it('should exist with input', () => {
+        fixture.detectChanges();
 
-      expect(buttonElement).toBeInstanceOf(HTMLElement);
-    });
-  });
+        const button: ButtonWithSpinnerComponent = getElementComponentFromFixtureByCss(fixture, annehmenButton);
 
-  describe('annehmen icon button', () => {
-    beforeEach(() => {
-      component.showAsIconButton = true;
-      fixture.detectChanges();
-    });
+        expect(button).toBeTruthy();
+        expect(button.stateResource).toBe(state);
+      });
 
-    it('should be hidden', () => {
-      component.vorgang = createVorgangWithEingangResource();
+      it('should call annehmen on click', () => {
+        component.annehmen = jest.fn();
 
-      fixture.detectChanges();
-      const buttonElement = fixture.nativeElement.querySelector(annehmenIconButton);
+        triggerEvent({ fixture, name: 'clickEmitter', elementSelector: annehmenButton });
 
-      expect(buttonElement).not.toBeInstanceOf(HTMLElement);
+        expect(component.annehmen).toHaveBeenCalled();
+      });
     });
 
-    it('should be visible', () => {
-      component.vorgang = createVorgangWithEingangResource([VorgangWithEingangLinkRel.ANNEHMEN]);
+    describe('annehmen icon button', () => {
+      beforeEach(() => {
+        component.showAsIconButton = true;
+        fixture.detectChanges();
+      });
 
-      fixture.detectChanges();
-      const buttonElement = fixture.nativeElement.querySelector(annehmenIconButton);
+      it('should not exist', () => {
+        component.vorgang = createVorgangWithEingangResource();
+
+        fixture.detectChanges();
+
+        notExistsAsHtmlElement(fixture, annehmenIconButton);
+      });
+
+      it('should exist with input', () => {
+        fixture.detectChanges();
+
+        const button: ButtonWithSpinnerComponent = getElementComponentFromFixtureByCss(fixture, annehmenIconButton);
+
+        expect(button).toBeTruthy();
+        expect(button.stateResource).toBe(state);
+      });
+
+      it('should call annehmen on click', () => {
+        component.annehmen = jest.fn();
+
+        triggerEvent({ fixture, name: 'clickEmitter', elementSelector: annehmenIconButton });
 
-      expect(buttonElement).toBeInstanceOf(HTMLElement);
+        expect(component.annehmen).toHaveBeenCalled();
+      });
     });
   });
 });
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.html b/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.html
index fa3f6f038d..287fe3e8e1 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.html
@@ -23,24 +23,27 @@
     unter der Lizenz sind dem Lizenztext zu entnehmen.
 
 -->
-<ng-container *ngIf="vorgang | hasLink: linkRel.BESCHEIDEN">
-  <ozgcloud-stroked-button-with-spinner
-    *ngIf="!showAsIconButton"
-    data-test-id="bescheiden-button"
-    [text]="buttonText"
-    svgIcon="stamp"
-    [stateResource]="commandStateResource$ | async"
-    (clickEmitter)="bescheiden()"
-  >
-  </ozgcloud-stroked-button-with-spinner>
-
-  <ozgcloud-icon-button-with-spinner
-    *ngIf="showAsIconButton"
-    data-test-id="bescheiden-icon-button"
-    svgIcon="stamp"
-    [toolTip]="toolTipText"
-    [stateResource]="commandStateResource$ | async"
-    (clickEmitter)="bescheiden()"
-  >
-  </ozgcloud-icon-button-with-spinner>
-</ng-container>
+@if (vorgang | hasLink: linkRel.BESCHEIDEN) {
+  @if (showAsIconButton) {
+    <ods-button-with-spinner
+      [stateResource]="commandStateResource$ | async"
+      (clickEmitter)="bescheiden()"
+      [tooltip]="toolTipText"
+      variant="icon"
+      size="fit"
+      data-test-id="bescheiden-icon-button"
+    >
+      <ods-stamp-icon icon class="fill-black" size="medium" />
+    </ods-button-with-spinner>
+  } @else {
+    <ods-button-with-spinner
+      [stateResource]="commandStateResource$ | async"
+      (clickEmitter)="bescheiden()"
+      [text]="buttonText"
+      variant="outline"
+      data-test-id="bescheiden-button"
+    >
+      <ods-stamp-icon icon class="fill-primary" size="medium" />
+    </ods-button-with-spinner>
+  }
+}
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.spec.ts
index 01fc62566a..4587f44e18 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.spec.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.spec.ts
@@ -24,12 +24,16 @@
 import { BescheidResource, BescheidService, BescheidWizardDialogResult } from '@alfa-client/bescheid-shared';
 import { CommandResource } from '@alfa-client/command-shared';
 import { createEmptyStateResource, createStateResource, HasLinkPipe, StateResource } from '@alfa-client/tech-shared';
-import { Mock, mock } from '@alfa-client/test-utils';
 import {
-  IconButtonWithSpinnerComponent,
-  OzgcloudDialogService,
-  OzgcloudStrokedButtonWithSpinnerComponent,
-} from '@alfa-client/ui';
+  getElementComponentFromFixtureByCss,
+  getMockComponent,
+  Mock,
+  mock,
+  notExistsAsHtmlElement,
+  tooltipExistsWithText,
+  triggerEvent,
+} from '@alfa-client/test-utils';
+import { OzgcloudDialogService } from '@alfa-client/ui';
 import { BescheidenDialogData } from '@alfa-client/vorgang-detail';
 import {
   VorgangCommandService,
@@ -39,6 +43,8 @@ import {
 } from '@alfa-client/vorgang-shared';
 import { DialogRef } from '@angular/cdk/dialog';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { ButtonWithSpinnerComponent } from '@ods/component';
+import { StampIconComponent, TooltipDirective } from '@ods/system';
 import { createCommandResource } from 'libs/command-shared/test/command';
 import { getDataTestIdOf } from 'libs/tech-shared/test/data-test';
 import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang';
@@ -74,8 +80,9 @@ describe('BescheidenButtonComponent', () => {
       declarations: [
         BescheidenButtonComponent,
         HasLinkPipe,
-        MockComponent(OzgcloudStrokedButtonWithSpinnerComponent),
-        MockComponent(IconButtonWithSpinnerComponent),
+        TooltipDirective,
+        MockComponent(ButtonWithSpinnerComponent),
+        MockComponent(StampIconComponent),
       ],
       providers: [
         {
@@ -107,300 +114,318 @@ describe('BescheidenButtonComponent', () => {
     expect(component).toBeTruthy();
   });
 
-  describe('ngOnInit', () => {
-    it('should call service', () => {
-      component.ngOnInit();
+  describe('component', () => {
+    describe('ngOnInit', () => {
+      it('should call service', () => {
+        component.ngOnInit();
 
-      expect(vorgangCommandService.getBeschiedenCommand).toHaveBeenCalled();
+        expect(vorgangCommandService.getBeschiedenCommand).toHaveBeenCalled();
+      });
     });
-  });
 
-  describe('bescheiden button', () => {
-    beforeEach(() => {
-      component.showAsIconButton = false;
-      fixture.detectChanges();
-    });
+    describe('bescheiden', () => {
+      describe('should open bescheid wizard', () => {
+        beforeEach(() => {
+          component.openBescheidenWizard = jest.fn();
+          component.vorgang = createVorgangWithEingangResource([VorgangWithEingangLinkRel.CREATE_BESCHEID_DRAFT]);
+        });
 
-    it('should be hidden', () => {
-      component.vorgang = createVorgangWithEingangResource();
+        it('should open bescheid wizard when create bescheid draft link exists', () => {
+          component.bescheiden();
 
-      fixture.detectChanges();
-      const buttonElement = fixture.nativeElement.querySelector(bescheidenButton);
+          expect(component.openBescheidenWizard).toHaveBeenCalled();
+        });
 
-      expect(buttonElement).not.toBeInstanceOf(HTMLElement);
-    });
+        it('should open bescheid wizard when bescheid draft exists', () => {
+          component.bescheiden();
 
-    it('should be visible', () => {
-      component.vorgang = createVorgangWithEingangResource([VorgangWithEingangLinkRel.BESCHEIDEN]);
+          expect(component.openBescheidenWizard).toHaveBeenCalled();
+        });
+      });
 
-      fixture.detectChanges();
-      const buttonElement = fixture.nativeElement.querySelector(bescheidenButton);
+      describe('should do bescheiden', () => {
+        const command: CommandResource = createCommandResource();
+        const comandStateResource$: Observable<StateResource<CommandResource>> = of(createStateResource(command));
 
-      expect(buttonElement).toBeInstanceOf(HTMLElement);
-    });
+        beforeEach(() => {
+          vorgangCommandService.bescheiden.mockReturnValue(comandStateResource$);
+        });
 
-    it('should get "Bescheid" text', () => {
-      component.vorgang = createVorgangWithEingangResource([VorgangWithEingangLinkRel.BESCHEIDEN]);
+        it('should call vorgangCommandService.bescheiden', () => {
+          component.bescheiden();
+
+          expect(vorgangCommandService.bescheiden).toHaveBeenCalled();
+        });
+
+        it('should assign response', () => {
+          component.commandStateResource$ = of(createEmptyStateResource<CommandResource>());
 
-      const buttonText: string = component.buttonText;
+          component.bescheiden();
 
-      expect(buttonText).toBe('Bescheiden');
+          expect(component.commandStateResource$).toBe(comandStateResource$);
+        });
+      });
     });
 
-    it('should get "Bescheiden fortsetzen" text', () => {
-      component.vorgang = createVorgangWithEingangResource([
-        VorgangWithEingangLinkRel.BESCHEIDEN,
-        VorgangWithEingangLinkRel.BESCHEID_DRAFT,
-      ]);
+    // TODO: Use this version after completed Bescheid refactoring and delete the other version below.
+    // describe('openBescheidenWizard', () => {
+    //   let dialogRefMock: DialogRefMock<BescheidWizardDialogResult>;
+    //
+    //   beforeEach(() => {
+    //     dialogRefMock = createDialogRefMock<BescheidWizardDialogResult>();
+    //     ozgcloudDialogService.openWizard.mockReturnValue(dialogRefMock);
+    //   });
+    //
+    //   it('should open wizard dialog', () => {
+    //     const vorgang = createVorgangWithEingangResource();
+    //     component.vorgang = vorgang;
+    //
+    //     component.openBescheidenWizard();
+    //
+    //     expect(ozgcloudDialogService.openWizard).toHaveBeenCalledWith(BescheidWizardContainerComponent, {
+    //       vorgangWithEingangResource: vorgang,
+    //     });
+    //   });
+    //
+    //   it('should handleBescheidWizardClosed', () => {
+    //     component.handleBescheidWizardClosed = jest.fn();
+    //     const dialogResult: BescheidWizardDialogResult = { reloadVorgang: true };
+    //     dialogRefMock.closed = of(dialogResult);
+    //
+    //     component.openBescheidenWizard();
+    //
+    //     expect(component.handleBescheidWizardClosed).toHaveBeenCalledWith(dialogResult);
+    //   });
+    // });
+
+    describe('openBescheidenWizard', () => {
+      it('should init', () => {
+        component.openBescheidenWizard();
+
+        expect(bescheidService.init).toBeCalled();
+      });
 
-      const buttonText: string = component.buttonText;
+      it('should open bescheiden dialog with existing draft', () => {
+        component.vorgang = createVorgangWithEingangResource([VorgangWithEingangLinkRel.BESCHEID_DRAFT]);
+        component.openBescheidenDialogWithExistingDraft = jest.fn();
 
-      expect(buttonText).toBe('Bescheiden fortsetzen');
-    });
-  });
+        component.openBescheidenWizard();
 
-  describe('tool tip', () => {
-    it('should get "Vorgang bescheiden" text', () => {
-      component.vorgang = createVorgangWithEingangResource([VorgangWithEingangLinkRel.BESCHEIDEN]);
+        expect(component.openBescheidenDialogWithExistingDraft).toHaveBeenCalled();
+      });
 
-      const toolTipText: string = component.toolTipText;
+      it('should open bescheiden dialog with new draft', () => {
+        component.vorgang = createVorgangWithEingangResource();
+        component.openBescheidDialogWithNewDraft = jest.fn();
 
-      expect(toolTipText).toBe('Vorgang bescheiden');
+        component.openBescheidenWizard();
+
+        expect(component.openBescheidDialogWithNewDraft).toHaveBeenCalled();
+      });
     });
 
-    it('should get "Vorgang bescheiden fortsetzen" text', () => {
-      component.vorgang = createVorgangWithEingangResource([
-        VorgangWithEingangLinkRel.BESCHEIDEN,
-        VorgangWithEingangLinkRel.BESCHEID_DRAFT,
-      ]);
+    describe('openBescheidDialogWithNewDraft', () => {
+      it('should open wizard', () => {
+        component.vorgang = createVorgangWithEingangResource();
+        component.openDialog = jest.fn();
 
-      const toolTipText: string = component.toolTipText;
+        component.openBescheidDialogWithNewDraft();
 
-      expect(toolTipText).toBe('Vorgang bescheiden fortsetzen');
+        expect(component.openDialog).toHaveBeenCalledWith({
+          vorgangWithEingangResource: component.vorgang,
+          bescheidDraftResource: null,
+        });
+      });
     });
-  });
 
-  describe('bescheiden', () => {
-    describe('should open bescheid wizard', () => {
+    describe('openBescheidenDialogWithExistingDraft', () => {
+      const bescheidDraftResource: BescheidResource = createBescheidResource();
+      const bescheidDraftStateResource: StateResource<BescheidResource> = createStateResource(bescheidDraftResource);
+      const vorgangWithEingangResource: VorgangWithEingangResource = createVorgangWithEingangResource([
+        VorgangWithEingangLinkRel.BESCHEID_DRAFT,
+      ]);
+
       beforeEach(() => {
-        component.openBescheidenWizard = jest.fn();
-        component.vorgang = createVorgangWithEingangResource([VorgangWithEingangLinkRel.CREATE_BESCHEID_DRAFT]);
+        component.vorgang = vorgangWithEingangResource;
+        bescheidService.getBescheidDraftIfExists.mockReturnValue(of(bescheidDraftStateResource));
       });
 
-      it('should open bescheid wizard when create bescheid draft link exists', () => {
-        component.bescheiden();
+      it('should open wizard if bescheid draft loaded', () => {
+        component.openBescheidenDialogWithExistingDraft();
 
-        expect(component.openBescheidenWizard).toHaveBeenCalled();
+        expect(ozgcloudDialogService.openWizard).toHaveBeenCalledWith(VorgangDetailBescheidenComponent, {
+          bescheidDraftResource,
+          vorgangWithEingangResource,
+        });
       });
 
-      it('should open bescheid wizard when bescheid draft exists', () => {
-        component.bescheiden();
-
-        expect(component.openBescheidenWizard).toHaveBeenCalled();
-      });
-    });
+      it('should not open wizard if bescheid draft not loaded', () => {
+        bescheidService.getBescheidDraftIfExists.mockReturnValue(of(createEmptyStateResource()));
 
-    describe('should do bescheiden', () => {
-      const command: CommandResource = createCommandResource();
-      const comandStateResource$: Observable<StateResource<CommandResource>> = of(createStateResource(command));
+        component.openBescheidenDialogWithExistingDraft();
 
-      beforeEach(() => {
-        vorgangCommandService.bescheiden.mockReturnValue(comandStateResource$);
+        expect(ozgcloudDialogService.openWizard).not.toHaveBeenCalled();
       });
 
-      it('should call vorgangCommandService.bescheiden', () => {
-        component.bescheiden();
+      it('should not open wizard on loading bescheid draft', () => {
+        bescheidService.getBescheidDraftIfExists.mockReturnValue(
+          of({ ...createStateResource(createBescheidResource()), loading: true }),
+        );
+
+        component.openBescheidenDialogWithExistingDraft();
 
-        expect(vorgangCommandService.bescheiden).toHaveBeenCalled();
+        expect(ozgcloudDialogService.openWizard).not.toHaveBeenCalled();
       });
+    });
 
-      it('should assign response', () => {
-        component.commandStateResource$ = of(createEmptyStateResource<CommandResource>());
+    describe('openDialog', () => {
+      const bescheidDraftResource: BescheidResource = createBescheidResource();
+      const bescheidDraftStateResource: StateResource<BescheidResource> = createStateResource(bescheidDraftResource);
+      const vorgangWithEingangResource: VorgangWithEingangResource = createVorgangWithEingangResource([
+        VorgangWithEingangLinkRel.BESCHEID_DRAFT,
+      ]);
 
-        component.bescheiden();
+      const dialogData: BescheidenDialogData = {
+        bescheidDraftResource: bescheidDraftResource,
+        vorgangWithEingangResource: vorgangWithEingangResource,
+      };
 
-        expect(component.commandStateResource$).toBe(comandStateResource$);
+      beforeEach(() => {
+        component.vorgang = vorgangWithEingangResource;
+        bescheidService.getBescheidDraftIfExists.mockReturnValue(of(bescheidDraftStateResource));
       });
-    });
-  });
 
-  describe('bescheiden icon button', () => {
-    beforeEach(() => {
-      component.showAsIconButton = true;
-      fixture.detectChanges();
+      it('should call ozgcloudDialogService.openWizard', () => {
+        component.openDialog(dialogData);
+
+        expect(ozgcloudDialogService.openWizard).toHaveBeenCalledWith(VorgangDetailBescheidenComponent, dialogData);
+      });
     });
 
-    it('should be hidden', () => {
-      component.vorgang = createVorgangWithEingangResource();
+    describe('handleBescheidWizardClosed', () => {
+      it('should reload current vorgang', () => {
+        component.handleBescheidWizardClosed({ reloadVorgang: true });
 
-      fixture.detectChanges();
-      const buttonElement = fixture.nativeElement.querySelector(bescheidenIconButton);
+        expect(vorgangService.reloadCurrentVorgang).toHaveBeenCalled();
+      });
 
-      expect(buttonElement).not.toBeInstanceOf(HTMLElement);
-    });
+      it('should not reload current vorgang', () => {
+        component.handleBescheidWizardClosed({ reloadVorgang: false });
 
-    it('should be visible', () => {
-      component.vorgang = createVorgangWithEingangResource([VorgangWithEingangLinkRel.BESCHEIDEN]);
+        expect(vorgangService.reloadCurrentVorgang).not.toHaveBeenCalled();
+      });
 
-      fixture.detectChanges();
-      const buttonElement = fixture.nativeElement.querySelector(bescheidenIconButton);
+      it.each([null, undefined])(
+        'should not reload current vorgang if result nil',
+        (dialogResult: BescheidWizardDialogResult) => {
+          component.handleBescheidWizardClosed(dialogResult);
 
-      expect(buttonElement).toBeInstanceOf(HTMLElement);
+          expect(vorgangService.reloadCurrentVorgang).not.toHaveBeenCalled();
+        },
+      );
     });
   });
 
-  // TODO: Use this version after completed Bescheid refactoring and delete the other version below.
-  // describe('openBescheidenWizard', () => {
-  //   let dialogRefMock: DialogRefMock<BescheidWizardDialogResult>;
-  //
-  //   beforeEach(() => {
-  //     dialogRefMock = createDialogRefMock<BescheidWizardDialogResult>();
-  //     ozgcloudDialogService.openWizard.mockReturnValue(dialogRefMock);
-  //   });
-  //
-  //   it('should open wizard dialog', () => {
-  //     const vorgang = createVorgangWithEingangResource();
-  //     component.vorgang = vorgang;
-  //
-  //     component.openBescheidenWizard();
-  //
-  //     expect(ozgcloudDialogService.openWizard).toHaveBeenCalledWith(BescheidWizardContainerComponent, {
-  //       vorgangWithEingangResource: vorgang,
-  //     });
-  //   });
-  //
-  //   it('should handleBescheidWizardClosed', () => {
-  //     component.handleBescheidWizardClosed = jest.fn();
-  //     const dialogResult: BescheidWizardDialogResult = { reloadVorgang: true };
-  //     dialogRefMock.closed = of(dialogResult);
-  //
-  //     component.openBescheidenWizard();
-  //
-  //     expect(component.handleBescheidWizardClosed).toHaveBeenCalledWith(dialogResult);
-  //   });
-  // });
-
-  describe('openBescheidenWizard', () => {
-    it('should init', () => {
-      component.openBescheidenWizard();
-
-      expect(bescheidService.init).toBeCalled();
-    });
-
-    it('should open bescheiden dialog with existing draft', () => {
-      component.vorgang = createVorgangWithEingangResource([VorgangWithEingangLinkRel.BESCHEID_DRAFT]);
-      component.openBescheidenDialogWithExistingDraft = jest.fn();
+  describe('template', () => {
+    const state: StateResource<CommandResource> = createStateResource(createCommandResource());
 
-      component.openBescheidenWizard();
+    beforeEach(() => {
+      component.vorgang = createVorgangWithEingangResource([VorgangWithEingangLinkRel.BESCHEIDEN]);
+      component.commandStateResource$ = of(state);
 
-      expect(component.openBescheidenDialogWithExistingDraft).toHaveBeenCalled();
+      fixture.detectChanges();
     });
 
-    it('should open bescheiden dialog with new draft', () => {
-      component.vorgang = createVorgangWithEingangResource();
-      component.openBescheidDialogWithNewDraft = jest.fn();
+    describe('bescheiden button', () => {
+      beforeEach(() => {
+        component.showAsIconButton = false;
+        fixture.detectChanges();
+      });
 
-      component.openBescheidenWizard();
+      it('should not exits', () => {
+        component.vorgang = createVorgangWithEingangResource();
 
-      expect(component.openBescheidDialogWithNewDraft).toHaveBeenCalled();
-    });
-  });
+        fixture.detectChanges();
 
-  describe('openBescheidDialogWithNewDraft', () => {
-    it('should open wizard', () => {
-      component.vorgang = createVorgangWithEingangResource();
-      component.openDialog = jest.fn();
+        notExistsAsHtmlElement(fixture, bescheidenButton);
+      });
 
-      component.openBescheidDialogWithNewDraft();
+      it('should exist with input', () => {
+        const button: ButtonWithSpinnerComponent = getElementComponentFromFixtureByCss(fixture, bescheidenButton);
 
-      expect(component.openDialog).toHaveBeenCalledWith({
-        vorgangWithEingangResource: component.vorgang,
-        bescheidDraftResource: null,
+        expect(button).toBeTruthy();
+        expect(button.stateResource).toBe(state);
       });
-    });
-  });
 
-  describe('openBescheidenDialogWithExistingDraft', () => {
-    const bescheidDraftResource: BescheidResource = createBescheidResource();
-    const bescheidDraftStateResource: StateResource<BescheidResource> = createStateResource(bescheidDraftResource);
-    const vorgangWithEingangResource: VorgangWithEingangResource = createVorgangWithEingangResource([
-      VorgangWithEingangLinkRel.BESCHEID_DRAFT,
-    ]);
+      it('should get "Bescheid" text', () => {
+        const button: ButtonWithSpinnerComponent = getMockComponent(fixture, ButtonWithSpinnerComponent);
+        expect(button.text).toBe('Bescheiden');
+      });
 
-    beforeEach(() => {
-      component.vorgang = vorgangWithEingangResource;
-      bescheidService.getBescheidDraftIfExists.mockReturnValue(of(bescheidDraftStateResource));
-    });
+      it('should get "Bescheiden fortsetzen" text', () => {
+        component.vorgang = createVorgangWithEingangResource([
+          VorgangWithEingangLinkRel.BESCHEIDEN,
+          VorgangWithEingangLinkRel.BESCHEID_DRAFT,
+        ]);
 
-    it('should open wizard if bescheid draft loaded', () => {
-      component.openBescheidenDialogWithExistingDraft();
+        fixture.detectChanges();
 
-      expect(ozgcloudDialogService.openWizard).toHaveBeenCalledWith(VorgangDetailBescheidenComponent, {
-        bescheidDraftResource,
-        vorgangWithEingangResource,
+        const button: ButtonWithSpinnerComponent = getMockComponent(fixture, ButtonWithSpinnerComponent);
+        expect(button.text).toBe('Bescheiden fortsetzen');
       });
-    });
 
-    it('should not open wizard if bescheid draft not loaded', () => {
-      bescheidService.getBescheidDraftIfExists.mockReturnValue(of(createEmptyStateResource()));
+      it('should call bescheiden on click', () => {
+        component.bescheiden = jest.fn();
 
-      component.openBescheidenDialogWithExistingDraft();
+        triggerEvent({ fixture, name: 'clickEmitter', elementSelector: bescheidenButton });
 
-      expect(ozgcloudDialogService.openWizard).not.toHaveBeenCalled();
+        expect(component.bescheiden).toHaveBeenCalled();
+      });
     });
 
-    it('should not open wizard on loading bescheid draft', () => {
-      bescheidService.getBescheidDraftIfExists.mockReturnValue(
-        of({ ...createStateResource(createBescheidResource()), loading: true }),
-      );
-
-      component.openBescheidenDialogWithExistingDraft();
+    describe('bescheiden icon button', () => {
+      beforeEach(() => {
+        component.showAsIconButton = true;
+        fixture.detectChanges();
+      });
 
-      expect(ozgcloudDialogService.openWizard).not.toHaveBeenCalled();
-    });
-  });
+      it('should not exist', () => {
+        component.vorgang = createVorgangWithEingangResource();
 
-  describe('openDialog', () => {
-    const bescheidDraftResource: BescheidResource = createBescheidResource();
-    const bescheidDraftStateResource: StateResource<BescheidResource> = createStateResource(bescheidDraftResource);
-    const vorgangWithEingangResource: VorgangWithEingangResource = createVorgangWithEingangResource([
-      VorgangWithEingangLinkRel.BESCHEID_DRAFT,
-    ]);
+        fixture.detectChanges();
 
-    const dialogData: BescheidenDialogData = {
-      bescheidDraftResource: bescheidDraftResource,
-      vorgangWithEingangResource: vorgangWithEingangResource,
-    };
+        notExistsAsHtmlElement(fixture, bescheidenIconButton);
+      });
 
-    beforeEach(() => {
-      component.vorgang = vorgangWithEingangResource;
-      bescheidService.getBescheidDraftIfExists.mockReturnValue(of(bescheidDraftStateResource));
-    });
+      it('should exist with input', () => {
+        const button: ButtonWithSpinnerComponent = getElementComponentFromFixtureByCss(fixture, bescheidenIconButton);
 
-    it('should call ozgcloudDialogService.openWizard', () => {
-      component.openDialog(dialogData);
+        expect(button).toBeTruthy();
+        expect(button.stateResource).toBe(state);
+      });
 
-      expect(ozgcloudDialogService.openWizard).toHaveBeenCalledWith(VorgangDetailBescheidenComponent, dialogData);
-    });
-  });
+      it('should have "Vorgang bescheiden" tooltip', () => {
+        tooltipExistsWithText(fixture, bescheidenIconButton, 'Vorgang bescheiden');
+      });
 
-  describe('handleBescheidWizardClosed', () => {
-    it('should reload current vorgang', () => {
-      component.handleBescheidWizardClosed({ reloadVorgang: true });
+      it('should have "Vorgang bescheiden fortsetzen" tooltip', () => {
+        component.vorgang = createVorgangWithEingangResource([
+          VorgangWithEingangLinkRel.BESCHEIDEN,
+          VorgangWithEingangLinkRel.BESCHEID_DRAFT,
+        ]);
 
-      expect(vorgangService.reloadCurrentVorgang).toHaveBeenCalled();
-    });
+        fixture.detectChanges();
 
-    it('should not reload current vorgang', () => {
-      component.handleBescheidWizardClosed({ reloadVorgang: false });
+        tooltipExistsWithText(fixture, bescheidenIconButton, 'Vorgang bescheiden fortsetzen');
+      });
 
-      expect(vorgangService.reloadCurrentVorgang).not.toHaveBeenCalled();
-    });
+      it('should call bescheiden on click', () => {
+        component.bescheiden = jest.fn();
 
-    it.each([null, undefined])('should not reload current vorgang if result nil', (dialogResult: BescheidWizardDialogResult) => {
-      component.handleBescheidWizardClosed(dialogResult);
+        triggerEvent({ fixture, name: 'clickEmitter', elementSelector: bescheidenIconButton });
 
-      expect(vorgangService.reloadCurrentVorgang).not.toHaveBeenCalled();
+        expect(component.bescheiden).toHaveBeenCalled();
+      });
     });
   });
 });
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts
index 579b092e9c..269d972319 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts
@@ -70,6 +70,7 @@ import {
   SendIconComponent,
   SpinnerIconComponent,
   StampIconComponent,
+  TooltipDirective,
 } from '@ods/system';
 import { AktenzeichenEditDialogComponent } from './aktenzeichen-edit-dialog/aktenzeichen-edit-dialog.component';
 import { AktenzeichenEditableComponent } from './aktenzeichen-editable/aktenzeichen-editable.component';
@@ -179,6 +180,7 @@ const routes: Routes = [
     MoreIconComponent,
     FileIconComponent,
     ForwardByOzgcloudButtonContainerComponent,
+    TooltipDirective,
   ],
   declarations: [
     VorgangDetailPageComponent,
-- 
GitLab


From 45eb816fdc606007469ab089538e7640fc01d163 Mon Sep 17 00:00:00 2001
From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com>
Date: Tue, 4 Feb 2025 14:54:12 +0100
Subject: [PATCH 08/57] OZG-7474 Add check circle icon

---
 alfa-client/libs/design-system/src/index.ts   |  1 +
 .../check-circle-icon.component.spec.ts       | 21 ++++++++
 .../check-circle-icon.component.ts            | 27 ++++++++++
 .../check-circle-icon.stories.ts              | 50 +++++++++++++++++++
 4 files changed, 99 insertions(+)
 create mode 100644 alfa-client/libs/design-system/src/lib/icons/check-circle-icon/check-circle-icon.component.spec.ts
 create mode 100644 alfa-client/libs/design-system/src/lib/icons/check-circle-icon/check-circle-icon.component.ts
 create mode 100644 alfa-client/libs/design-system/src/lib/icons/check-circle-icon/check-circle-icon.stories.ts

diff --git a/alfa-client/libs/design-system/src/index.ts b/alfa-client/libs/design-system/src/index.ts
index 71313e8af6..54a0f4c5eb 100644
--- a/alfa-client/libs/design-system/src/index.ts
+++ b/alfa-client/libs/design-system/src/index.ts
@@ -46,6 +46,7 @@ export * from './lib/icons/archive-icon/archive-icon.component';
 export * from './lib/icons/attachment-icon/attachment-icon.component';
 export * from './lib/icons/bescheid-generate-icon/bescheid-generate-icon.component';
 export * from './lib/icons/bescheid-upload-icon/bescheid-upload-icon.component';
+export * from './lib/icons/check-circle-icon/check-circle-icon.component';
 export * from './lib/icons/check-icon/check-icon.component';
 export * from './lib/icons/close-icon/close-icon.component';
 export * from './lib/icons/edit-icon/edit-icon.component';
diff --git a/alfa-client/libs/design-system/src/lib/icons/check-circle-icon/check-circle-icon.component.spec.ts b/alfa-client/libs/design-system/src/lib/icons/check-circle-icon/check-circle-icon.component.spec.ts
new file mode 100644
index 0000000000..eda5ec6e83
--- /dev/null
+++ b/alfa-client/libs/design-system/src/lib/icons/check-circle-icon/check-circle-icon.component.spec.ts
@@ -0,0 +1,21 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { CheckCircleIconComponent } from './check-circle-icon.component';
+
+describe('CheckCircleIconComponent', () => {
+  let component: CheckCircleIconComponent;
+  let fixture: ComponentFixture<CheckCircleIconComponent>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      imports: [CheckCircleIconComponent],
+    }).compileComponents();
+
+    fixture = TestBed.createComponent(CheckCircleIconComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/alfa-client/libs/design-system/src/lib/icons/check-circle-icon/check-circle-icon.component.ts b/alfa-client/libs/design-system/src/lib/icons/check-circle-icon/check-circle-icon.component.ts
new file mode 100644
index 0000000000..86aa983a93
--- /dev/null
+++ b/alfa-client/libs/design-system/src/lib/icons/check-circle-icon/check-circle-icon.component.ts
@@ -0,0 +1,27 @@
+import { NgClass } from '@angular/common';
+import { Component, Input } from '@angular/core';
+import { twMerge } from 'tailwind-merge';
+import { iconVariants, IconVariants } from '../iconVariants';
+
+@Component({
+  selector: 'ods-check-circle-icon',
+  standalone: true,
+  imports: [NgClass],
+  template: `<svg
+    viewBox="0 0 24 24"
+    xmlns="http://www.w3.org/2000/svg"
+    [ngClass]="[twMerge(iconVariants({ size }), 'fill-primary', class)]"
+    aria-hidden="true"
+  >
+    <path
+      d="M22 5.18L10.59 16.6L6.35 12.36L7.76 10.95L10.59 13.78L20.59 3.78L22 5.18ZM19.79 10.22C19.92 10.79 20 11.39 20 12C20 16.42 16.42 20 12 20C7.58 20 4 16.42 4 12C4 7.58 7.58 4 12 4C13.58 4 15.04 4.46 16.28 5.25L17.72 3.81C16.1 2.67 14.13 2 12 2C6.48 2 2 6.48 2 12C2 17.52 6.48 22 12 22C17.52 22 22 17.52 22 12C22 10.81 21.78 9.67 21.4 8.61L19.79 10.22Z"
+    />
+  </svg>`,
+})
+export class CheckCircleIconComponent {
+  @Input() size: IconVariants['size'] = 'medium';
+  @Input() class: string = undefined;
+
+  readonly iconVariants = iconVariants;
+  readonly twMerge = twMerge;
+}
diff --git a/alfa-client/libs/design-system/src/lib/icons/check-circle-icon/check-circle-icon.stories.ts b/alfa-client/libs/design-system/src/lib/icons/check-circle-icon/check-circle-icon.stories.ts
new file mode 100644
index 0000000000..21d0c5a0c4
--- /dev/null
+++ b/alfa-client/libs/design-system/src/lib/icons/check-circle-icon/check-circle-icon.stories.ts
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2024 Das Land Schleswig-Holstein vertreten durch den
+ * Ministerpräsidenten des Landes Schleswig-Holstein
+ * Staatskanzlei
+ * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
+ *
+ * Lizenziert unter der EUPL, Version 1.2 oder - sobald
+ * diese von der Europäischen Kommission genehmigt wurden -
+ * Folgeversionen der EUPL ("Lizenz");
+ * Sie dürfen dieses Werk ausschließlich gemäß
+ * dieser Lizenz nutzen.
+ * Eine Kopie der Lizenz finden Sie hier:
+ *
+ * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
+ *
+ * Sofern nicht durch anwendbare Rechtsvorschriften
+ * gefordert oder in schriftlicher Form vereinbart, wird
+ * die unter der Lizenz verbreitete Software "so wie sie
+ * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
+ * ausdrücklich oder stillschweigend - verbreitet.
+ * Die sprachspezifischen Genehmigungen und Beschränkungen
+ * unter der Lizenz sind dem Lizenztext zu entnehmen.
+ */
+import type { Meta, StoryObj } from '@storybook/angular';
+
+import { CheckCircleIconComponent } from './check-circle-icon.component';
+
+const meta: Meta<CheckCircleIconComponent> = {
+  title: 'Icons/Check circle icon',
+  component: CheckCircleIconComponent,
+  excludeStories: /.*Data$/,
+  tags: ['autodocs'],
+};
+
+export default meta;
+type Story = StoryObj<CheckCircleIconComponent>;
+
+export const Default: Story = {
+  args: { size: 'medium' },
+  argTypes: {
+    size: {
+      control: 'select',
+      options: ['small', 'medium', 'large', 'extra-large', 'full'],
+      description: 'Size of icon. Property "full" means 100%',
+      table: {
+        defaultValue: { summary: 'medium' },
+      },
+    },
+  },
+};
-- 
GitLab


From b9f87d89e327096ba23b625ac5d6fbfe68912134 Mon Sep 17 00:00:00 2001
From: cord <cord.westhoff@mgm-tp.com>
Date: Tue, 4 Feb 2025 15:10:38 +0100
Subject: [PATCH 09/57] OZG-7630 add E2E Test for Weiterleitung

---
 .../vorgang-weiterleiten.cy.ts                | 77 +++++++++++++++++++
 1 file changed, 77 insertions(+)
 create mode 100644 alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-weiterleiten.cy.ts

diff --git a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-weiterleiten.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-weiterleiten.cy.ts
new file mode 100644
index 0000000000..dacafdf0ba
--- /dev/null
+++ b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-weiterleiten.cy.ts
@@ -0,0 +1,77 @@
+import { registerLocaleData } from '@angular/common';
+import localeDe from '@angular/common/locales/de';
+import localeDeExtra from '@angular/common/locales/extra/de';
+import { VorgangFormularButtonsE2EComponent } from 'apps/alfa-e2e/src/components/vorgang/vorgang-formular-buttons.e2e.components';
+import { SnackBarE2EComponent } from '../../../components/ui/snackbar.e2e.component';
+import { VorgangListE2EComponent } from '../../../components/vorgang/vorgang-list.e2e.component';
+import { VorgangE2E, VorgangMessagesE2E, VorgangStatusE2E, vorgangStatusLabelE2E } from '../../../model/vorgang';
+import { MainPage, waitForSpinnerToDisappear } from '../../../page-objects/main.po';
+import { VorgangPage } from '../../../page-objects/vorgang.po';
+import { dropCollections } from '../../../support/cypress-helper';
+import { contains, exist, haveText, notExist } from '../../../support/cypress.util';
+import { loginAsPeter, loginAsSabine } from '../../../support/user-util';
+import { buildVorgang, createVorgang, initVorgaenge, initVorgang, objectIds } from '../../../support/vorgang-util';
+import { HeaderE2EComponent } from 'apps/alfa-e2e/src/page-objects/header.po';
+
+registerLocaleData(localeDe, 'de', localeDeExtra);
+
+describe('Vorgang weiterleiten', () => {
+  const mainPage: MainPage = new MainPage();
+  const vorgangList: VorgangListE2EComponent = mainPage.getVorgangList();
+
+  const vorgangPage: VorgangPage = new VorgangPage();
+  const vorgangFormularButtons: VorgangFormularButtonsE2EComponent =
+    vorgangPage.getFormularButtons();
+
+  const vorgangWeiterleiten: VorgangE2E = { ...createVorgang(), name: 'Weiterleitung' };
+  const vorgangWeiterleitenPeter: VorgangE2E = buildVorgang(objectIds[0], 'Weiterleitung Peter');
+  const header: HeaderE2EComponent = new HeaderE2EComponent();
+
+  before(() => {
+    initVorgaenge([vorgangWeiterleiten, vorgangWeiterleitenPeter]);
+
+    loginAsSabine();
+
+    waitForSpinnerToDisappear();
+    exist(vorgangList.getRoot());
+  });
+
+  after(() => {
+    dropCollections();
+  });
+
+  describe('Weiterleiten', () => {
+    it('should display Weiterleiten button in Status Neu', () => {
+      vorgangList.getListItem(vorgangWeiterleiten.name).getRoot().click();
+      waitForSpinnerToDisappear();
+
+      //Weiterleiten wird angezeigt
+    });
+
+    it('should not display Weiterleiten button in other Status', () => {
+      vorgangFormularButtons.getAnnehmenButton().click();
+      waitForSpinnerToDisappear();
+      //Weiterleiten wird nicht angezeigt
+
+      vorgangFormularButtons.getBearbeitenButton().click();
+      waitForSpinnerToDisappear();
+      //Weiterleiten wird nicht angezeigt
+      
+      //Status zurück auf neu oder weiterer Vorgang für Peter?
+    });
+
+    it ('should not be displayed for user Peter in Status Neu', () => {
+      header.getCurrentUserProfile().logout();
+      loginAsPeter();
+      waitForSpinnerToDisappear();
+
+      vorgangList.getListItem(vorgangWeiterleiten.name).getRoot().click();
+      waitForSpinnerToDisappear();
+
+      //Button nicht sichtbar
+
+    })
+
+    
+  });
+});
-- 
GitLab


From e68b5e6a2c8c15cf3fe4e7d45d726e736ecf58b8 Mon Sep 17 00:00:00 2001
From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com>
Date: Tue, 4 Feb 2025 15:54:02 +0100
Subject: [PATCH 10/57] OZG-7474 Change annehmen icon

---
 .../annehmen-button/annehmen-button.component.html | 14 +++++++-------
 .../src/lib/vorgang-detail.module.ts               |  2 ++
 2 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/annehmen-button/annehmen-button.component.html b/alfa-client/libs/vorgang-detail/src/lib/buttons/annehmen-button/annehmen-button.component.html
index b93172bd7e..c381ff9831 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/annehmen-button/annehmen-button.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/annehmen-button/annehmen-button.component.html
@@ -23,27 +23,27 @@
     unter der Lizenz sind dem Lizenztext zu entnehmen.
 
 -->
-@if(vorgang | hasLink: linkRel.ANNEHMEN){
-  @if(showAsIconButton){
+@if (vorgang | hasLink: linkRel.ANNEHMEN) {
+  @if (showAsIconButton) {
     <ods-button-with-spinner
       [stateResource]="commandStateResource$ | async"
       (clickEmitter)="annehmen()"
-      toolTip="Vorgang annehmen"
+      tooltip="Vorgang annehmen"
       variant="icon"
       size="fit"
       data-test-id="annehmen-icon-button"
     >
-      <ods-check-icon icon class="fill-primary"/>
+      <ods-check-circle-icon icon class="fill-text" />
     </ods-button-with-spinner>
   } @else {
     <ods-button-with-spinner
       [stateResource]="commandStateResource$ | async"
       (clickEmitter)="annehmen()"
-      toolTip="Vorgang annehmen"
+      text="Vorgang annehmen"
       variant="outline"
       data-test-id="annehmen-button"
     >
-      <ods-check-icon icon class="fill-primary"/>
+      <ods-check-circle-icon icon />
     </ods-button-with-spinner>
   }
-}
\ No newline at end of file
+}
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts
index 269d972319..5639239ee9 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts
@@ -57,6 +57,7 @@ import {
   BescheidUploadIconComponent,
   ButtonCardComponent,
   ButtonComponent,
+  CheckCircleIconComponent,
   CheckIconComponent,
   CloseIconComponent,
   DropdownMenuComponent,
@@ -174,6 +175,7 @@ const routes: Routes = [
     ErrorMessageComponent,
     CollaborationModule,
     ArchiveIconComponent,
+    CheckCircleIconComponent,
     CheckIconComponent,
     DropdownMenuComponent,
     DropdownMenuTextItemComponent,
-- 
GitLab


From d4f82ef13eb77ccecca24290d49ad500a359a03e Mon Sep 17 00:00:00 2001
From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com>
Date: Wed, 5 Feb 2025 09:35:42 +0100
Subject: [PATCH 11/57] OZG-7474 Add back arrow icon

---
 alfa-client/libs/design-system/src/index.ts   |  1 +
 .../back-arrow-icon.component.spec.ts         | 21 +++++++++++++++
 .../back-arrow-icon.component.ts              | 27 +++++++++++++++++++
 .../back-arrow-icon.stories.ts                | 27 +++++++++++++++++++
 4 files changed, 76 insertions(+)
 create mode 100644 alfa-client/libs/design-system/src/lib/icons/back-arrow-icon/back-arrow-icon.component.spec.ts
 create mode 100644 alfa-client/libs/design-system/src/lib/icons/back-arrow-icon/back-arrow-icon.component.ts
 create mode 100644 alfa-client/libs/design-system/src/lib/icons/back-arrow-icon/back-arrow-icon.stories.ts

diff --git a/alfa-client/libs/design-system/src/index.ts b/alfa-client/libs/design-system/src/index.ts
index 54a0f4c5eb..90e1043e2d 100644
--- a/alfa-client/libs/design-system/src/index.ts
+++ b/alfa-client/libs/design-system/src/index.ts
@@ -44,6 +44,7 @@ export * from './lib/icons/accessibility-icon/accessibility-icon.component';
 export * from './lib/icons/admin-logo-icon/admin-logo-icon.component';
 export * from './lib/icons/archive-icon/archive-icon.component';
 export * from './lib/icons/attachment-icon/attachment-icon.component';
+export * from './lib/icons/back-arrow-icon/back-arrow-icon.component';
 export * from './lib/icons/bescheid-generate-icon/bescheid-generate-icon.component';
 export * from './lib/icons/bescheid-upload-icon/bescheid-upload-icon.component';
 export * from './lib/icons/check-circle-icon/check-circle-icon.component';
diff --git a/alfa-client/libs/design-system/src/lib/icons/back-arrow-icon/back-arrow-icon.component.spec.ts b/alfa-client/libs/design-system/src/lib/icons/back-arrow-icon/back-arrow-icon.component.spec.ts
new file mode 100644
index 0000000000..97ab265a26
--- /dev/null
+++ b/alfa-client/libs/design-system/src/lib/icons/back-arrow-icon/back-arrow-icon.component.spec.ts
@@ -0,0 +1,21 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { BackArrowIconComponent } from './back-arrow-icon.component';
+
+describe('BackArrowIconComponent', () => {
+  let component: BackArrowIconComponent;
+  let fixture: ComponentFixture<BackArrowIconComponent>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      imports: [BackArrowIconComponent],
+    }).compileComponents();
+
+    fixture = TestBed.createComponent(BackArrowIconComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/alfa-client/libs/design-system/src/lib/icons/back-arrow-icon/back-arrow-icon.component.ts b/alfa-client/libs/design-system/src/lib/icons/back-arrow-icon/back-arrow-icon.component.ts
new file mode 100644
index 0000000000..6a386e8222
--- /dev/null
+++ b/alfa-client/libs/design-system/src/lib/icons/back-arrow-icon/back-arrow-icon.component.ts
@@ -0,0 +1,27 @@
+import { CommonModule } from '@angular/common';
+import { Component, Input } from '@angular/core';
+import { twMerge } from 'tailwind-merge';
+import { iconVariants, IconVariants } from '../iconVariants';
+
+@Component({
+  selector: 'ods-back-arrow-icon',
+  standalone: true,
+  imports: [CommonModule],
+  template: `<svg
+    viewBox="0 0 24 24"
+    xmlns="http://www.w3.org/2000/svg"
+    [ngClass]="[twMerge(iconVariants({ size }), 'fill-primary', class)]"
+    aria-hidden="true"
+  >
+    <path
+      d="M13.25 8C10.6 8 8.2 8.99 6.35 10.6L2.75 7V16H11.75L8.13 12.38C9.52 11.22 11.29 10.5 13.25 10.5C16.79 10.5 19.8 12.81 20.85 16L23.22 15.22C21.83 11.03 17.9 8 13.25 8Z"
+    />
+  </svg>`,
+})
+export class BackArrowIconComponent {
+  @Input() size: IconVariants['size'] = 'medium';
+  @Input() class: string = '';
+
+  readonly iconVariants = iconVariants;
+  readonly twMerge = twMerge;
+}
diff --git a/alfa-client/libs/design-system/src/lib/icons/back-arrow-icon/back-arrow-icon.stories.ts b/alfa-client/libs/design-system/src/lib/icons/back-arrow-icon/back-arrow-icon.stories.ts
new file mode 100644
index 0000000000..280e82230b
--- /dev/null
+++ b/alfa-client/libs/design-system/src/lib/icons/back-arrow-icon/back-arrow-icon.stories.ts
@@ -0,0 +1,27 @@
+import type { Meta, StoryObj } from '@storybook/angular';
+
+import { BackArrowIconComponent } from './back-arrow-icon.component';
+
+const meta: Meta<BackArrowIconComponent> = {
+  title: 'Icons/Back arrow icon',
+  component: BackArrowIconComponent,
+  excludeStories: /.*Data$/,
+  tags: ['autodocs'],
+};
+
+export default meta;
+type Story = StoryObj<BackArrowIconComponent>;
+
+export const Default: Story = {
+  args: { size: 'large' },
+  argTypes: {
+    size: {
+      control: 'select',
+      options: ['small', 'medium', 'large', 'extra-large', 'full'],
+      description: 'Size of icon. Property "full" means 100%',
+      table: {
+        defaultValue: { summary: 'medium' },
+      },
+    },
+  },
+};
-- 
GitLab


From 178e47d6ebc951db10e9f24fcfa67500dcfbc9db Mon Sep 17 00:00:00 2001
From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com>
Date: Wed, 5 Feb 2025 09:36:24 +0100
Subject: [PATCH 12/57] OZG-7474 Replace zuruekholen button

---
 .../bescheiden-button.component.html          |  2 +-
 .../zurueckholen-button.component.html        | 41 ++++++++++---------
 .../zurueckholen-button.component.spec.ts     | 20 ++++-----
 .../src/lib/vorgang-detail.module.ts          |  2 +
 4 files changed, 32 insertions(+), 33 deletions(-)

diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.html b/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.html
index 287fe3e8e1..de88c613de 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.html
@@ -33,7 +33,7 @@
       size="fit"
       data-test-id="bescheiden-icon-button"
     >
-      <ods-stamp-icon icon class="fill-black" size="medium" />
+      <ods-stamp-icon icon class="fill-text" size="medium" />
     </ods-button-with-spinner>
   } @else {
     <ods-button-with-spinner
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckholen-button/zurueckholen-button.component.html b/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckholen-button/zurueckholen-button.component.html
index fde254e2a2..2304fa640b 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckholen-button/zurueckholen-button.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckholen-button/zurueckholen-button.component.html
@@ -24,23 +24,26 @@
 
 -->
 <ng-container *ngIf="vorgang | hasLink: linkRel.ZURUECKHOLEN">
-  <ozgcloud-stroked-button-with-spinner
-    *ngIf="!showAsIconButton"
-    data-test-id="zurueckholen-button"
-    text="Zurückholen"
-    icon="undo"
-    [stateResource]="commandStateResource$ | async"
-    (click)="zurueckholen()"
-  >
-  </ozgcloud-stroked-button-with-spinner>
-
-  <ozgcloud-icon-button-with-spinner
-    *ngIf="showAsIconButton"
-    data-test-id="zurueckholen-icon-button"
-    icon="undo"
-    toolTip="Vorgang zurückholen"
-    [stateResource]="commandStateResource$ | async"
-    (clickEmitter)="zurueckholen()"
-  >
-  </ozgcloud-icon-button-with-spinner>
+  @if (showAsIconButton) {
+    <ods-button-with-spinner
+      [stateResource]="commandStateResource$ | async"
+      data-test-id="zurueckholen-icon-button"
+      variant="icon"
+      size="fit"
+      tooltip="Vorgang zurückholen"
+      (clickEmitter)="zurueckholen()"
+    >
+      <ods-back-arrow-icon icon class="fill-text" />
+    </ods-button-with-spinner>
+  } @else {
+    <ods-button-with-spinner
+      [stateResource]="commandStateResource$ | async"
+      data-test-id="zurueckholen-button"
+      text="Vorgang zurückholen"
+      variant="outline"
+      (clickEmitter)="zurueckholen()"
+    >
+      <ods-back-arrow-icon icon />
+    </ods-button-with-spinner>
+  }
 </ng-container>
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckholen-button/zurueckholen-button.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckholen-button/zurueckholen-button.component.spec.ts
index 8d11e65b2d..6768e772b3 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckholen-button/zurueckholen-button.component.spec.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckholen-button/zurueckholen-button.component.spec.ts
@@ -21,14 +21,12 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { HasLinkPipe, createStateResource } from '@alfa-client/tech-shared';
 import { mock } from '@alfa-client/test-utils';
-import {
-  IconButtonWithSpinnerComponent,
-  OzgcloudStrokedButtonWithSpinnerComponent,
-} from '@alfa-client/ui';
 import { VorgangCommandService, VorgangWithEingangLinkRel } from '@alfa-client/vorgang-shared';
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { ButtonWithSpinnerComponent } from '@ods/component';
+import { BackArrowIconComponent } from '@ods/system';
 import { createCommandResource } from 'libs/command-shared/test/command';
 import { getDataTestIdOf } from 'libs/tech-shared/test/data-test';
 import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang';
@@ -53,8 +51,8 @@ describe('ZurueckholenButtonComponent', () => {
       declarations: [
         ZurueckholenButtonComponent,
         HasLinkPipe,
-        MockComponent(OzgcloudStrokedButtonWithSpinnerComponent),
-        MockComponent(IconButtonWithSpinnerComponent),
+        MockComponent(ButtonWithSpinnerComponent),
+        MockComponent(BackArrowIconComponent),
       ],
       providers: [
         {
@@ -107,9 +105,7 @@ describe('ZurueckholenButtonComponent', () => {
     });
 
     it('should be visible', () => {
-      component.vorgang = createVorgangWithEingangResource([
-        VorgangWithEingangLinkRel.ZURUECKHOLEN,
-      ]);
+      component.vorgang = createVorgangWithEingangResource([VorgangWithEingangLinkRel.ZURUECKHOLEN]);
 
       fixture.detectChanges();
       const buttonElement = fixture.nativeElement.querySelector(zurueckholenButton);
@@ -134,9 +130,7 @@ describe('ZurueckholenButtonComponent', () => {
     });
 
     it('should be visible', () => {
-      component.vorgang = createVorgangWithEingangResource([
-        VorgangWithEingangLinkRel.ZURUECKHOLEN,
-      ]);
+      component.vorgang = createVorgangWithEingangResource([VorgangWithEingangLinkRel.ZURUECKHOLEN]);
 
       fixture.detectChanges();
       const buttonElement = fixture.nativeElement.querySelector(zurueckholenIconButton);
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts
index 5639239ee9..e028b4ab44 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts
@@ -52,6 +52,7 @@ import {
   ArchiveIconComponent,
   AttachmentComponent,
   AttachmentWrapperComponent,
+  BackArrowIconComponent,
   BescheidGenerateIconComponent,
   BescheidStatusTextComponent,
   BescheidUploadIconComponent,
@@ -156,6 +157,7 @@ const routes: Routes = [
     RadioButtonCardComponent,
     ButtonComponent,
     ButtonCardComponent,
+    BackArrowIconComponent,
     CloseIconComponent,
     ExclamationIconComponent,
     SaveIconComponent,
-- 
GitLab


From 39f0af4f4026ecfd21698bd89a4ff8de920fde7e Mon Sep 17 00:00:00 2001
From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com>
Date: Wed, 5 Feb 2025 10:10:33 +0100
Subject: [PATCH 13/57] OZG-7474 Replace bearbeiten button

---
 .../bearbeiten-button.component.html          | 44 ++++++++++---------
 .../bearbeiten-button.component.spec.ts       | 12 +++--
 .../src/lib/vorgang-detail.module.ts          |  2 +
 3 files changed, 31 insertions(+), 27 deletions(-)

diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/bearbeiten-button/bearbeiten-button.component.html b/alfa-client/libs/vorgang-detail/src/lib/buttons/bearbeiten-button/bearbeiten-button.component.html
index 9f2900e1d1..b395e746cf 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/bearbeiten-button/bearbeiten-button.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/bearbeiten-button/bearbeiten-button.component.html
@@ -23,24 +23,28 @@
     unter der Lizenz sind dem Lizenztext zu entnehmen.
 
 -->
-<ng-container *ngIf="vorgang | hasLink: linkRel.BEARBEITEN">
-  <ozgcloud-stroked-button-with-spinner
-    *ngIf="!showAsIconButton"
-    data-test-id="bearbeiten-button"
-    text="Bearbeiten"
-    icon="edit_icon"
-    [stateResource]="commandStateResource$ | async"
-    (clickEmitter)="bearbeiten()"
-  >
-  </ozgcloud-stroked-button-with-spinner>
 
-  <ozgcloud-icon-button-with-spinner
-    *ngIf="showAsIconButton"
-    data-test-id="bearbeiten-icon-button"
-    svgIcon="edit"
-    toolTip="Vorgang bearbeiten"
-    [stateResource]="commandStateResource$ | async"
-    (clickEmitter)="bearbeiten()"
-  >
-  </ozgcloud-icon-button-with-spinner>
-</ng-container>
+@if (vorgang | hasLink: linkRel.BEARBEITEN) {
+  @if (showAsIconButton) {
+    <ods-button-with-spinner
+      [stateResource]="commandStateResource$ | async"
+      data-test-id="bearbeiten-icon-button"
+      tooltip="Vorgang bearbeiten"
+      variant="icon"
+      size="fit"
+      (clickEmitter)="bearbeiten()"
+    >
+      <ods-edit-icon icon class="fill-text" />
+    </ods-button-with-spinner>
+  } @else {
+    <ods-button-with-spinner
+      [stateResource]="commandStateResource$ | async"
+      data-test-id="bearbeiten-button"
+      text="Bearbeiten"
+      variant="outline"
+      (clickEmitter)="bearbeiten()"
+    >
+      <ods-edit-icon icon />
+    </ods-button-with-spinner>
+  }
+}
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/bearbeiten-button/bearbeiten-button.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/buttons/bearbeiten-button/bearbeiten-button.component.spec.ts
index ea8f97fa1e..627aa0b059 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/bearbeiten-button/bearbeiten-button.component.spec.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/bearbeiten-button/bearbeiten-button.component.spec.ts
@@ -21,14 +21,12 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { HasLinkPipe, createStateResource } from '@alfa-client/tech-shared';
 import { mock } from '@alfa-client/test-utils';
-import {
-  IconButtonWithSpinnerComponent,
-  OzgcloudStrokedButtonWithSpinnerComponent,
-} from '@alfa-client/ui';
 import { VorgangCommandService, VorgangWithEingangLinkRel } from '@alfa-client/vorgang-shared';
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { ButtonWithSpinnerComponent } from '@ods/component';
+import { EditIconComponent } from '@ods/system';
 import { createCommandResource } from 'libs/command-shared/test/command';
 import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang';
 import { MockComponent } from 'ng-mocks';
@@ -51,8 +49,8 @@ describe('BearbeitenButtonComponent', () => {
     await TestBed.configureTestingModule({
       declarations: [
         BearbeitenButtonComponent,
-        MockComponent(OzgcloudStrokedButtonWithSpinnerComponent),
-        MockComponent(IconButtonWithSpinnerComponent),
+        MockComponent(ButtonWithSpinnerComponent),
+        MockComponent(EditIconComponent),
         HasLinkPipe,
       ],
       providers: [
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts
index e028b4ab44..860e0c8da0 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts
@@ -74,6 +74,7 @@ import {
   StampIconComponent,
   TooltipDirective,
 } from '@ods/system';
+import { EditIconComponent } from '../../../design-system/src/lib/icons/edit-icon/edit-icon.component';
 import { AktenzeichenEditDialogComponent } from './aktenzeichen-edit-dialog/aktenzeichen-edit-dialog.component';
 import { AktenzeichenEditableComponent } from './aktenzeichen-editable/aktenzeichen-editable.component';
 import { AbschliessenButtonComponent } from './buttons/abschliessen-button/abschliessen-button.component';
@@ -185,6 +186,7 @@ const routes: Routes = [
     FileIconComponent,
     ForwardByOzgcloudButtonContainerComponent,
     TooltipDirective,
+    EditIconComponent,
   ],
   declarations: [
     VorgangDetailPageComponent,
-- 
GitLab


From 122068fe97ae519e99e4bc2d69122f809f74cf1c Mon Sep 17 00:00:00 2001
From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com>
Date: Wed, 5 Feb 2025 10:47:25 +0100
Subject: [PATCH 14/57] OZG-7474 Replace zurueckstellen button

---
 .../zurueckstellen-button.component.html      | 44 ++++++++++---------
 .../zurueckstellen-button.component.spec.ts   | 20 +++------
 2 files changed, 31 insertions(+), 33 deletions(-)

diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckstellen-button/zurueckstellen-button.component.html b/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckstellen-button/zurueckstellen-button.component.html
index 0461b518cd..549e0ec770 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckstellen-button/zurueckstellen-button.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckstellen-button/zurueckstellen-button.component.html
@@ -23,24 +23,28 @@
     unter der Lizenz sind dem Lizenztext zu entnehmen.
 
 -->
-<ng-container *ngIf="vorgang | hasLink: linkRel.ZURUECKSTELLEN">
-  <ozgcloud-stroked-button-with-spinner
-    *ngIf="!showAsIconButton"
-    data-test-id="zurueckstellen-button"
-    text="Zurückstellen"
-    icon="undo"
-    [stateResource]="commandStateResource$ | async"
-    (clickEmitter)="zurueckstellen()"
-  >
-  </ozgcloud-stroked-button-with-spinner>
 
-  <ozgcloud-icon-button-with-spinner
-    *ngIf="showAsIconButton"
-    data-test-id="zurueckstellen-icon-button"
-    icon="undo"
-    toolTip="Vorgang zurückstellen"
-    [stateResource]="commandStateResource$ | async"
-    (clickEmitter)="zurueckstellen()"
-  >
-  </ozgcloud-icon-button-with-spinner>
-</ng-container>
+@if (vorgang | hasLink: linkRel.ZURUECKSTELLEN) {
+  @if (showAsIconButton) {
+    <ods-button-with-spinner
+      [stateResource]="commandStateResource$ | async"
+      data-test-id="zurueckstellen-icon-button"
+      tooltip="Vorgang zurückstellen"
+      variant="icon"
+      size="fit"
+      (clickEmitter)="zurueckstellen()"
+    >
+      <ods-back-arrow-icon icon class="fill-text" />
+    </ods-button-with-spinner>
+  } @else {
+    <ods-button-with-spinner
+      [stateResource]="commandStateResource$ | async"
+      data-test-id="zurueckstellen-button"
+      text="Zurückstellen"
+      variant="outline"
+      (clickEmitter)="zurueckstellen()"
+    >
+      <ods-back-arrow-icon icon />
+    </ods-button-with-spinner>
+  }
+}
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckstellen-button/zurueckstellen-button.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckstellen-button/zurueckstellen-button.component.spec.ts
index 1b18ad6393..5f0249853e 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckstellen-button/zurueckstellen-button.component.spec.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckstellen-button/zurueckstellen-button.component.spec.ts
@@ -21,14 +21,12 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { HasLinkPipe, createStateResource } from '@alfa-client/tech-shared';
 import { mock } from '@alfa-client/test-utils';
-import {
-  IconButtonWithSpinnerComponent,
-  OzgcloudStrokedButtonWithSpinnerComponent,
-} from '@alfa-client/ui';
 import { VorgangCommandService, VorgangWithEingangLinkRel } from '@alfa-client/vorgang-shared';
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { ButtonWithSpinnerComponent } from '@ods/component';
+import { BackArrowIconComponent } from '@ods/system';
 import { createCommandResource } from 'libs/command-shared/test/command';
 import { getDataTestIdOf } from 'libs/tech-shared/test/data-test';
 import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang';
@@ -53,8 +51,8 @@ describe('ZurueckstellenButtonComponent', () => {
       declarations: [
         ZurueckstellenButtonComponent,
         HasLinkPipe,
-        MockComponent(OzgcloudStrokedButtonWithSpinnerComponent),
-        MockComponent(IconButtonWithSpinnerComponent),
+        MockComponent(ButtonWithSpinnerComponent),
+        MockComponent(BackArrowIconComponent),
       ],
       providers: [
         {
@@ -107,9 +105,7 @@ describe('ZurueckstellenButtonComponent', () => {
     });
 
     it('should be visible', () => {
-      component.vorgang = createVorgangWithEingangResource([
-        VorgangWithEingangLinkRel.ZURUECKSTELLEN,
-      ]);
+      component.vorgang = createVorgangWithEingangResource([VorgangWithEingangLinkRel.ZURUECKSTELLEN]);
 
       fixture.detectChanges();
       const buttonElement = fixture.nativeElement.querySelector(zurueckstellenButton);
@@ -134,9 +130,7 @@ describe('ZurueckstellenButtonComponent', () => {
     });
 
     it('should be visible', () => {
-      component.vorgang = createVorgangWithEingangResource([
-        VorgangWithEingangLinkRel.ZURUECKSTELLEN,
-      ]);
+      component.vorgang = createVorgangWithEingangResource([VorgangWithEingangLinkRel.ZURUECKSTELLEN]);
 
       fixture.detectChanges();
       const buttonElement = fixture.nativeElement.querySelector(zurueckstellenIconButton);
-- 
GitLab


From 4009c45af89cf103b572cd4c793d393a25cbb313 Mon Sep 17 00:00:00 2001
From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com>
Date: Wed, 5 Feb 2025 11:20:02 +0100
Subject: [PATCH 15/57] OZG-7474 Replace abschliessen button

---
 .../abschliessen-button.component.html        | 44 ++++++++++---------
 .../abschliessen-button.component.spec.ts     | 19 ++++----
 2 files changed, 32 insertions(+), 31 deletions(-)

diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.html b/alfa-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.html
index c57d7a4c19..2c7b3f41e9 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.html
@@ -23,24 +23,28 @@
     unter der Lizenz sind dem Lizenztext zu entnehmen.
 
 -->
-<ng-container *ngIf="isVisible">
-  <ozgcloud-stroked-button-with-spinner
-    *ngIf="!showAsIconButton"
-    data-test-id="abschliessen-button"
-    text="Abschließen"
-    icon="done"
-    [stateResource]="commandStateResource$ | async"
-    (clickEmitter)="abschliessen()"
-  >
-  </ozgcloud-stroked-button-with-spinner>
 
-  <ozgcloud-icon-button-with-spinner
-    *ngIf="showAsIconButton"
-    data-test-id="abschliessen-icon-button"
-    icon="done"
-    toolTip="Vorgang abschließen"
-    [stateResource]="commandStateResource$ | async"
-    (clickEmitter)="abschliessen()"
-  >
-  </ozgcloud-icon-button-with-spinner>
-</ng-container>
+@if (isVisible) {
+  @if (showAsIconButton) {
+    <ods-button-with-spinner
+      [stateResource]="commandStateResource$ | async"
+      data-test-id="abschliessen-icon-button"
+      tooltip="Vorgang abschließen"
+      variant="icon"
+      size="fit"
+      (clickEmitter)="abschliessen()"
+    >
+      <ods-check-icon icon class="fill-text" />
+    </ods-button-with-spinner>
+  } @else {
+    <ods-button-with-spinner
+      [stateResource]="commandStateResource$ | async"
+      data-test-id="abschliessen-button"
+      text="Abschließen"
+      variant="outline"
+      (clickEmitter)="abschliessen()"
+    >
+      <ods-check-icon icon />
+    </ods-button-with-spinner>
+  }
+}
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.spec.ts
index 195bee49fa..964474db25 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.spec.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.spec.ts
@@ -22,11 +22,12 @@
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
 import { CommandResource } from '@alfa-client/command-shared';
-import { createEmptyStateResource, createStateResource, HasLinkPipe, StateResource, } from '@alfa-client/tech-shared';
+import { createEmptyStateResource, createStateResource, HasLinkPipe, StateResource } from '@alfa-client/tech-shared';
 import { mock } from '@alfa-client/test-utils';
-import { IconButtonWithSpinnerComponent, OzgcloudStrokedButtonWithSpinnerComponent, } from '@alfa-client/ui';
-import { VorgangCommandService, VorgangWithEingangLinkRel, VorgangWithEingangResource, } from '@alfa-client/vorgang-shared';
+import { VorgangCommandService, VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { ButtonWithSpinnerComponent } from '@ods/component';
+import { CheckIconComponent } from '@ods/system';
 import { createCommandResource } from 'libs/command-shared/test/command';
 import { getDataTestIdOf } from 'libs/tech-shared/test/data-test';
 import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang';
@@ -50,8 +51,8 @@ describe('AbschliessenButtonComponent', () => {
     await TestBed.configureTestingModule({
       declarations: [
         AbschliessenButtonComponent,
-        MockComponent(OzgcloudStrokedButtonWithSpinnerComponent),
-        MockComponent(IconButtonWithSpinnerComponent),
+        MockComponent(ButtonWithSpinnerComponent),
+        MockComponent(CheckIconComponent),
         HasLinkPipe,
       ],
       providers: [
@@ -84,9 +85,7 @@ describe('AbschliessenButtonComponent', () => {
 
   describe('abschliessen', () => {
     const command: CommandResource = createCommandResource();
-    const comandStateResource$: Observable<StateResource<CommandResource>> = of(
-      createStateResource(command),
-    );
+    const comandStateResource$: Observable<StateResource<CommandResource>> = of(createStateResource(command));
 
     beforeEach(() => {
       vorgangCommandService.abschliessen.mockReturnValue(comandStateResource$);
@@ -167,9 +166,7 @@ describe('AbschliessenButtonComponent', () => {
     });
 
     it('should set visible to true', () => {
-      const vorgang: VorgangWithEingangResource = createVorgangWithEingangResource([
-        VorgangWithEingangLinkRel.ABSCHLIESSEN,
-      ]);
+      const vorgang: VorgangWithEingangResource = createVorgangWithEingangResource([VorgangWithEingangLinkRel.ABSCHLIESSEN]);
       component.vorgang = vorgang;
 
       const isVisible: boolean = component.isVisible;
-- 
GitLab


From 3161e679745cea2a3530339c37807343b4bff183 Mon Sep 17 00:00:00 2001
From: cord <cord.westhoff@mgm-tp.com>
Date: Wed, 5 Feb 2025 13:08:46 +0100
Subject: [PATCH 16/57] fix click for user Safira

---
 .../apps/admin-e2e/src/e2e/main-tests/navigation/safira.cy.ts   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/alfa-client/apps/admin-e2e/src/e2e/main-tests/navigation/safira.cy.ts b/alfa-client/apps/admin-e2e/src/e2e/main-tests/navigation/safira.cy.ts
index 33494cdfcf..6f76dafdfc 100644
--- a/alfa-client/apps/admin-e2e/src/e2e/main-tests/navigation/safira.cy.ts
+++ b/alfa-client/apps/admin-e2e/src/e2e/main-tests/navigation/safira.cy.ts
@@ -34,7 +34,7 @@ describe('Navigation', () => {
 
       describe('on selection', () => {
         before(() => {
-          mainPage.openStatistik();
+          mainPage.clickStatistikNavigationItem();
         });
 
         it('should show page on selection', () => {
-- 
GitLab


From 6e2f3686c3a6bc94cc6ca7a48ce1124a61773c23 Mon Sep 17 00:00:00 2001
From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com>
Date: Wed, 5 Feb 2025 13:34:58 +0100
Subject: [PATCH 17/57] OZG-7474 Add discord icon

---
 alfa-client/libs/design-system/src/index.ts   |  1 +
 .../discard-icon.component.spec.ts            | 21 ++++++++++++
 .../discard-icon/discard-icon.component.ts    | 32 +++++++++++++++++++
 .../discard-icon/discard-icon.stories.ts      | 27 ++++++++++++++++
 4 files changed, 81 insertions(+)
 create mode 100644 alfa-client/libs/design-system/src/lib/icons/discard-icon/discard-icon.component.spec.ts
 create mode 100644 alfa-client/libs/design-system/src/lib/icons/discard-icon/discard-icon.component.ts
 create mode 100644 alfa-client/libs/design-system/src/lib/icons/discard-icon/discard-icon.stories.ts

diff --git a/alfa-client/libs/design-system/src/index.ts b/alfa-client/libs/design-system/src/index.ts
index 90e1043e2d..b8581acef3 100644
--- a/alfa-client/libs/design-system/src/index.ts
+++ b/alfa-client/libs/design-system/src/index.ts
@@ -50,6 +50,7 @@ export * from './lib/icons/bescheid-upload-icon/bescheid-upload-icon.component';
 export * from './lib/icons/check-circle-icon/check-circle-icon.component';
 export * from './lib/icons/check-icon/check-icon.component';
 export * from './lib/icons/close-icon/close-icon.component';
+export * from './lib/icons/discard-icon/discard-icon.component';
 export * from './lib/icons/edit-icon/edit-icon.component';
 export * from './lib/icons/error-icon/error-icon.component';
 export * from './lib/icons/exclamation-icon/exclamation-icon.component';
diff --git a/alfa-client/libs/design-system/src/lib/icons/discard-icon/discard-icon.component.spec.ts b/alfa-client/libs/design-system/src/lib/icons/discard-icon/discard-icon.component.spec.ts
new file mode 100644
index 0000000000..485cdcd99d
--- /dev/null
+++ b/alfa-client/libs/design-system/src/lib/icons/discard-icon/discard-icon.component.spec.ts
@@ -0,0 +1,21 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { DiscardIconComponent } from './discard-icon.component';
+
+describe('DiscardIconComponent', () => {
+  let component: DiscardIconComponent;
+  let fixture: ComponentFixture<DiscardIconComponent>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      imports: [DiscardIconComponent],
+    }).compileComponents();
+
+    fixture = TestBed.createComponent(DiscardIconComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/alfa-client/libs/design-system/src/lib/icons/discard-icon/discard-icon.component.ts b/alfa-client/libs/design-system/src/lib/icons/discard-icon/discard-icon.component.ts
new file mode 100644
index 0000000000..377bf1af5b
--- /dev/null
+++ b/alfa-client/libs/design-system/src/lib/icons/discard-icon/discard-icon.component.ts
@@ -0,0 +1,32 @@
+import { CommonModule } from '@angular/common';
+import { Component, Input } from '@angular/core';
+import { twMerge } from 'tailwind-merge';
+import { IconVariants, iconVariants } from '../iconVariants';
+
+@Component({
+  selector: 'ods-discard-icon',
+  standalone: true,
+  imports: [CommonModule],
+  template: `<svg
+    viewBox="0 0 24 24"
+    xmlns="http://www.w3.org/2000/svg"
+    [ngClass]="[twMerge(iconVariants({ size }), 'fill-primary', class)]"
+    aria-hidden="true"
+  >
+    <path
+      d="M12.75 19.4L14.35 21L16.75 18.6286L19.15 21L20.75 19.4L18.3786 17L20.75 14.6L19.15 13L16.75 15.4L14.35 13L12.75 14.6L15.15 17L12.75 19.4Z"
+    />
+    <path
+      fill-rule="evenodd"
+      clip-rule="evenodd"
+      d="M17 11V3.77384H12.0294L7.625 7.93078L7.625 18.408H10.75V20.1818H7.625C6.58947 20.1818 5.75 19.3876 5.75 18.408V7.93078C5.75 7.4596 5.94815 7.00779 6.30074 6.67501L10.7051 2.51807C11.0566 2.18631 11.5329 2 12.0294 2H17C18.0355 2 18.875 2.79417 18.875 3.77384V11H17Z"
+    />
+  </svg>`,
+})
+export class DiscardIconComponent {
+  @Input() size: IconVariants['size'] = 'medium';
+  @Input() class: string = '';
+
+  readonly iconVariants = iconVariants;
+  readonly twMerge = twMerge;
+}
diff --git a/alfa-client/libs/design-system/src/lib/icons/discard-icon/discard-icon.stories.ts b/alfa-client/libs/design-system/src/lib/icons/discard-icon/discard-icon.stories.ts
new file mode 100644
index 0000000000..9237024932
--- /dev/null
+++ b/alfa-client/libs/design-system/src/lib/icons/discard-icon/discard-icon.stories.ts
@@ -0,0 +1,27 @@
+import type { Meta, StoryObj } from '@storybook/angular';
+
+import { DiscardIconComponent } from './discard-icon.component';
+
+const meta: Meta<DiscardIconComponent> = {
+  title: 'Icons/Discard icon',
+  component: DiscardIconComponent,
+  excludeStories: /.*Data$/,
+  tags: ['autodocs'],
+};
+
+export default meta;
+type Story = StoryObj<DiscardIconComponent>;
+
+export const Default: Story = {
+  args: { size: 'large' },
+  argTypes: {
+    size: {
+      control: 'select',
+      options: ['small', 'medium', 'large', 'extra-large', 'full'],
+      description: 'Size of icon. Property "full" means 100%',
+      table: {
+        defaultValue: { summary: 'medium' },
+      },
+    },
+  },
+};
-- 
GitLab


From 49f422b68f1138d70802434ed39ced2fa6abc632 Mon Sep 17 00:00:00 2001
From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com>
Date: Wed, 5 Feb 2025 13:52:27 +0100
Subject: [PATCH 18/57] OZG-7474 Replace verwerfen button

---
 .../verwerfen-button.component.html           | 45 ++++++++++---------
 .../zurueckholen-button.component.html        |  4 +-
 .../src/lib/vorgang-detail.module.ts          |  2 +
 3 files changed, 28 insertions(+), 23 deletions(-)

diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/verwerfen-button/verwerfen-button.component.html b/alfa-client/libs/vorgang-detail/src/lib/buttons/verwerfen-button/verwerfen-button.component.html
index dc55d5bb09..e5609f8f07 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/verwerfen-button/verwerfen-button.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/verwerfen-button/verwerfen-button.component.html
@@ -23,24 +23,27 @@
     unter der Lizenz sind dem Lizenztext zu entnehmen.
 
 -->
-<ng-container *ngIf="vorgang | hasLink: linkRel.VERWERFEN">
-  <ozgcloud-stroked-button-with-spinner
-    *ngIf="!showAsIconButton"
-    data-test-id="verwerfen-button"
-    text="Verwerfen"
-    svgIcon="discard_document"
-    [stateResource]="commandStateResource$ | async"
-    (clickEmitter)="verwerfen()"
-  >
-  </ozgcloud-stroked-button-with-spinner>
-
-  <ozgcloud-icon-button-with-spinner
-    *ngIf="showAsIconButton"
-    data-test-id="verwerfen-icon-button"
-    svgIcon="discard_document"
-    toolTip="Vorgang verwerfen"
-    [stateResource]="commandStateResource$ | async"
-    (clickEmitter)="verwerfen()"
-  >
-  </ozgcloud-icon-button-with-spinner>
-</ng-container>
+@if (vorgang | hasLink: linkRel.VERWERFEN) {
+  @if (showAsIconButton) {
+    <ods-button-with-spinner
+      [stateResource]="commandStateResource$ | async"
+      data-test-id="verwerfen-icon-button"
+      tooltip="Vorgang verwerfen"
+      variant="icon"
+      size="fit"
+      (clickEmitter)="verwerfen()"
+    >
+      <ods-discard-icon icon class="fill-text" />
+    </ods-button-with-spinner>
+  } @else {
+    <ods-button-with-spinner
+      [stateResource]="commandStateResource$ | async"
+      data-test-id="verwerfen-button"
+      text="Verwerfen"
+      variant="outline"
+      (clickEmitter)="verwerfen()"
+    >
+      <ods-discard-icon icon />
+    </ods-button-with-spinner>
+  }
+}
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckholen-button/zurueckholen-button.component.html b/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckholen-button/zurueckholen-button.component.html
index 2304fa640b..8ce7dcfcd4 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckholen-button/zurueckholen-button.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckholen-button/zurueckholen-button.component.html
@@ -23,7 +23,7 @@
     unter der Lizenz sind dem Lizenztext zu entnehmen.
 
 -->
-<ng-container *ngIf="vorgang | hasLink: linkRel.ZURUECKHOLEN">
+@if (vorgang | hasLink: linkRel.ZURUECKHOLEN) {
   @if (showAsIconButton) {
     <ods-button-with-spinner
       [stateResource]="commandStateResource$ | async"
@@ -46,4 +46,4 @@
       <ods-back-arrow-icon icon />
     </ods-button-with-spinner>
   }
-</ng-container>
+}
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts
index 860e0c8da0..faa566e49a 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts
@@ -74,6 +74,7 @@ import {
   StampIconComponent,
   TooltipDirective,
 } from '@ods/system';
+import { DiscardIconComponent } from '../../../design-system/src/lib/icons/discard-icon/discard-icon.component';
 import { EditIconComponent } from '../../../design-system/src/lib/icons/edit-icon/edit-icon.component';
 import { AktenzeichenEditDialogComponent } from './aktenzeichen-edit-dialog/aktenzeichen-edit-dialog.component';
 import { AktenzeichenEditableComponent } from './aktenzeichen-editable/aktenzeichen-editable.component';
@@ -187,6 +188,7 @@ const routes: Routes = [
     ForwardByOzgcloudButtonContainerComponent,
     TooltipDirective,
     EditIconComponent,
+    DiscardIconComponent,
   ],
   declarations: [
     VorgangDetailPageComponent,
-- 
GitLab


From 1821c833270c096cd9df95277796544daafa0243 Mon Sep 17 00:00:00 2001
From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com>
Date: Wed, 5 Feb 2025 14:08:15 +0100
Subject: [PATCH 19/57] OZG-7474 Replace wiederoeffnen button

---
 .../wiedereroeffnen-button.component.html     | 45 ++++++++++---------
 .../wiedereroeffnen-button.component.spec.ts  | 20 +++------
 2 files changed, 31 insertions(+), 34 deletions(-)

diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/wiedereroeffnen-button/wiedereroeffnen-button.component.html b/alfa-client/libs/vorgang-detail/src/lib/buttons/wiedereroeffnen-button/wiedereroeffnen-button.component.html
index eb63ab7bc9..6c98b512c3 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/wiedereroeffnen-button/wiedereroeffnen-button.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/wiedereroeffnen-button/wiedereroeffnen-button.component.html
@@ -23,24 +23,27 @@
     unter der Lizenz sind dem Lizenztext zu entnehmen.
 
 -->
-<ng-container *ngIf="vorgang | hasLink: linkRel.WIEDEREROEFFNEN">
-  <ozgcloud-stroked-button-with-spinner
-    *ngIf="!showAsIconButton"
-    data-test-id="wiedereroeffnen-button"
-    text="Wiedereröffnen"
-    icon="undo"
-    [stateResource]="commandStateResource$ | async"
-    (clickEmitter)="wiedereroeffnen()"
-  >
-  </ozgcloud-stroked-button-with-spinner>
-
-  <ozgcloud-icon-button-with-spinner
-    *ngIf="showAsIconButton"
-    data-test-id="wiedereroeffnen-icon-button"
-    icon="undo"
-    toolTip="Vorgang wiedereröffnen"
-    [stateResource]="commandStateResource$ | async"
-    (clickEmitter)="wiedereroeffnen()"
-  >
-  </ozgcloud-icon-button-with-spinner>
-</ng-container>
+@if (vorgang | hasLink: linkRel.WIEDEREROEFFNEN) {
+  @if (showAsIconButton) {
+    <ods-button-with-spinner
+      [stateResource]="commandStateResource$ | async"
+      data-test-id="wiedereroeffnen-icon-button"
+      tooltip="Vorgang wiedereröffnen"
+      variant="icon"
+      size="fit"
+      (clickEmitter)="wiedereroeffnen()"
+    >
+      <ods-back-arrow-icon icon class="fill-text" />
+    </ods-button-with-spinner>
+  } @else {
+    <ods-button-with-spinner
+      [stateResource]="commandStateResource$ | async"
+      data-test-id="wiedereroeffnen-button"
+      text="Wiedereröffnen"
+      variant="outline"
+      (clickEmitter)="wiedereroeffnen()"
+    >
+      <ods-back-arrow-icon icon />
+    </ods-button-with-spinner>
+  }
+}
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/wiedereroeffnen-button/wiedereroeffnen-button.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/buttons/wiedereroeffnen-button/wiedereroeffnen-button.component.spec.ts
index a03ee7234e..9b3918f016 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/wiedereroeffnen-button/wiedereroeffnen-button.component.spec.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/wiedereroeffnen-button/wiedereroeffnen-button.component.spec.ts
@@ -21,14 +21,12 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { HasLinkPipe, createStateResource } from '@alfa-client/tech-shared';
 import { mock } from '@alfa-client/test-utils';
-import {
-  IconButtonWithSpinnerComponent,
-  OzgcloudStrokedButtonWithSpinnerComponent,
-} from '@alfa-client/ui';
 import { VorgangCommandService, VorgangWithEingangLinkRel } from '@alfa-client/vorgang-shared';
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { ButtonWithSpinnerComponent } from '@ods/component';
+import { BackArrowIconComponent } from '@ods/system';
 import { createCommandResource } from 'libs/command-shared/test/command';
 import { getDataTestIdOf } from 'libs/tech-shared/test/data-test';
 import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang';
@@ -52,8 +50,8 @@ describe('WiedereroeffnenButtonComponent', () => {
       declarations: [
         WiedereroeffnenButtonComponent,
         HasLinkPipe,
-        MockComponent(OzgcloudStrokedButtonWithSpinnerComponent),
-        MockComponent(IconButtonWithSpinnerComponent),
+        MockComponent(ButtonWithSpinnerComponent),
+        MockComponent(BackArrowIconComponent),
       ],
       providers: [
         {
@@ -106,9 +104,7 @@ describe('WiedereroeffnenButtonComponent', () => {
     });
 
     it('should be visible', () => {
-      component.vorgang = createVorgangWithEingangResource([
-        VorgangWithEingangLinkRel.WIEDEREROEFFNEN,
-      ]);
+      component.vorgang = createVorgangWithEingangResource([VorgangWithEingangLinkRel.WIEDEREROEFFNEN]);
 
       fixture.detectChanges();
       const buttonElement = fixture.nativeElement.querySelector(wiedereroeffnenButton);
@@ -133,9 +129,7 @@ describe('WiedereroeffnenButtonComponent', () => {
     });
 
     it('should be visible', () => {
-      component.vorgang = createVorgangWithEingangResource([
-        VorgangWithEingangLinkRel.WIEDEREROEFFNEN,
-      ]);
+      component.vorgang = createVorgangWithEingangResource([VorgangWithEingangLinkRel.WIEDEREROEFFNEN]);
 
       fixture.detectChanges();
       const buttonElement = fixture.nativeElement.querySelector(wiedereroeffnenIconButton);
-- 
GitLab


From 2ff126ffecbc7bfbc343e7871630589a1c84d92b Mon Sep 17 00:00:00 2001
From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com>
Date: Wed, 5 Feb 2025 14:24:53 +0100
Subject: [PATCH 20/57] OZG-7474 Fix tests

---
 .../routing-button/routing-button.component.spec.ts  |  3 ++-
 .../annehmen-button.component.spec.ts                |  4 ++--
 .../verwerfen-button.component.spec.ts               | 12 +++++-------
 3 files changed, 9 insertions(+), 10 deletions(-)

diff --git a/alfa-client/libs/design-component/src/lib/routing-button/routing-button.component.spec.ts b/alfa-client/libs/design-component/src/lib/routing-button/routing-button.component.spec.ts
index a08af3e617..fb79d2714b 100644
--- a/alfa-client/libs/design-component/src/lib/routing-button/routing-button.component.spec.ts
+++ b/alfa-client/libs/design-component/src/lib/routing-button/routing-button.component.spec.ts
@@ -1,4 +1,5 @@
 import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { RouterModule } from '@angular/router';
 import { RoutingButtonComponent } from './routing-button.component';
 
 describe('RoutingButtonComponent', () => {
@@ -7,7 +8,7 @@ describe('RoutingButtonComponent', () => {
 
   beforeEach(async () => {
     await TestBed.configureTestingModule({
-      imports: [RoutingButtonComponent],
+      imports: [RoutingButtonComponent, RouterModule.forRoot([])],
     }).compileComponents();
 
     fixture = TestBed.createComponent(RoutingButtonComponent);
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/annehmen-button/annehmen-button.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/buttons/annehmen-button/annehmen-button.component.spec.ts
index 9d201f9cc3..2302dde549 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/annehmen-button/annehmen-button.component.spec.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/annehmen-button/annehmen-button.component.spec.ts
@@ -27,7 +27,7 @@ import { getElementComponentFromFixtureByCss, mock, notExistsAsHtmlElement, trig
 import { VorgangCommandService, VorgangWithEingangLinkRel } from '@alfa-client/vorgang-shared';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { ButtonWithSpinnerComponent } from '@ods/component';
-import { CheckIconComponent, TooltipDirective } from '@ods/system';
+import { CheckCircleIconComponent, TooltipDirective } from '@ods/system';
 import { createCommandResource } from 'libs/command-shared/test/command';
 import { getDataTestIdOf } from 'libs/tech-shared/test/data-test';
 import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang';
@@ -54,7 +54,7 @@ describe('AnnehmenButtonComponent', () => {
         HasLinkPipe,
         TooltipDirective,
         MockComponent(ButtonWithSpinnerComponent),
-        MockComponent(CheckIconComponent),
+        MockComponent(CheckCircleIconComponent),
       ],
       providers: [
         {
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/verwerfen-button/verwerfen-button.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/buttons/verwerfen-button/verwerfen-button.component.spec.ts
index 31872b9289..b751788dcc 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/verwerfen-button/verwerfen-button.component.spec.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/verwerfen-button/verwerfen-button.component.spec.ts
@@ -21,14 +21,12 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { HasLinkPipe, createStateResource } from '@alfa-client/tech-shared';
 import { mock } from '@alfa-client/test-utils';
-import {
-  IconButtonWithSpinnerComponent,
-  OzgcloudStrokedButtonWithSpinnerComponent,
-} from '@alfa-client/ui';
 import { VorgangCommandService, VorgangWithEingangLinkRel } from '@alfa-client/vorgang-shared';
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { ButtonWithSpinnerComponent } from '@ods/component';
+import { DiscardIconComponent } from '@ods/system';
 import { createCommandResource } from 'libs/command-shared/test/command';
 import { getDataTestIdOf } from 'libs/tech-shared/test/data-test';
 import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang';
@@ -52,8 +50,8 @@ describe('VerwerfenButtonComponent', () => {
     await TestBed.configureTestingModule({
       declarations: [
         VerwerfenButtonComponent,
-        MockComponent(OzgcloudStrokedButtonWithSpinnerComponent),
-        MockComponent(IconButtonWithSpinnerComponent),
+        MockComponent(ButtonWithSpinnerComponent),
+        MockComponent(DiscardIconComponent),
         HasLinkPipe,
       ],
       providers: [
-- 
GitLab


From 8ec591e61e412ad2508bec583ab4b9734857a201 Mon Sep 17 00:00:00 2001
From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com>
Date: Wed, 5 Feb 2025 15:09:24 +0100
Subject: [PATCH 21/57] OZG-7474 Add request deletion icon

---
 alfa-client/libs/design-system/src/index.ts   |  1 +
 .../request-deletion-icon.component.spec.ts   | 21 ++++++++++++++
 .../request-deletion-icon.component.ts        | 28 +++++++++++++++++++
 .../request-deletion-icon.stories.ts          | 27 ++++++++++++++++++
 4 files changed, 77 insertions(+)
 create mode 100644 alfa-client/libs/design-system/src/lib/icons/request-deletion-icon/request-deletion-icon.component.spec.ts
 create mode 100644 alfa-client/libs/design-system/src/lib/icons/request-deletion-icon/request-deletion-icon.component.ts
 create mode 100644 alfa-client/libs/design-system/src/lib/icons/request-deletion-icon/request-deletion-icon.stories.ts

diff --git a/alfa-client/libs/design-system/src/index.ts b/alfa-client/libs/design-system/src/index.ts
index b8581acef3..3f325d6741 100644
--- a/alfa-client/libs/design-system/src/index.ts
+++ b/alfa-client/libs/design-system/src/index.ts
@@ -68,6 +68,7 @@ export * from './lib/icons/ozg-logo-icon/ozg-logo-icon.component';
 export * from './lib/icons/person-icon/person-icon.component';
 export * from './lib/icons/plus-icon/plus-icon.component';
 export * from './lib/icons/public-administration-icon/public-administration-icon.component';
+export * from './lib/icons/request-deletion-icon/request-deletion-icon.component';
 export * from './lib/icons/save-icon/save-icon.component';
 export * from './lib/icons/search-icon/search-icon.component';
 export * from './lib/icons/send-icon/send-icon.component';
diff --git a/alfa-client/libs/design-system/src/lib/icons/request-deletion-icon/request-deletion-icon.component.spec.ts b/alfa-client/libs/design-system/src/lib/icons/request-deletion-icon/request-deletion-icon.component.spec.ts
new file mode 100644
index 0000000000..4de4999c60
--- /dev/null
+++ b/alfa-client/libs/design-system/src/lib/icons/request-deletion-icon/request-deletion-icon.component.spec.ts
@@ -0,0 +1,21 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { RequestDeletionIconComponent } from './request-deletion-icon.component';
+
+describe('RequestDeletionIconComponent', () => {
+  let component: RequestDeletionIconComponent;
+  let fixture: ComponentFixture<RequestDeletionIconComponent>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      imports: [RequestDeletionIconComponent],
+    }).compileComponents();
+
+    fixture = TestBed.createComponent(RequestDeletionIconComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/alfa-client/libs/design-system/src/lib/icons/request-deletion-icon/request-deletion-icon.component.ts b/alfa-client/libs/design-system/src/lib/icons/request-deletion-icon/request-deletion-icon.component.ts
new file mode 100644
index 0000000000..7e42262610
--- /dev/null
+++ b/alfa-client/libs/design-system/src/lib/icons/request-deletion-icon/request-deletion-icon.component.ts
@@ -0,0 +1,28 @@
+import { CommonModule } from '@angular/common';
+import { Component, Input } from '@angular/core';
+import { twMerge } from 'tailwind-merge';
+import { iconVariants, IconVariants } from '../iconVariants';
+
+@Component({
+  selector: 'ods-request-deletion-icon',
+  standalone: true,
+  imports: [CommonModule],
+  template: `<svg
+    viewBox="0 0 24 24"
+    xmlns="http://www.w3.org/2000/svg"
+    [ngClass]="[twMerge(iconVariants({ size }), 'fill-primary', class)]"
+    aria-hidden="true"
+  >
+    <path d="M11.75 8H13.75V12.15L15.35 10.6L16.75 12L12.75 16L8.75 12L10.15 10.6L11.75 12.15V8Z" />
+    <path
+      d="M7.75 21C7.2 21 6.72917 20.8042 6.3375 20.4125C5.94583 20.0208 5.75 19.55 5.75 19V6H4.75V4H9.75V3H15.75V4H20.75V6H19.75V19C19.75 19.55 19.5542 20.0208 19.1625 20.4125C18.7708 20.8042 18.3 21 17.75 21H7.75ZM17.75 6H7.75V19H17.75V6Z"
+    />
+  </svg>`,
+})
+export class RequestDeletionIconComponent {
+  @Input() size: IconVariants['size'] = 'medium';
+  @Input() class: string = '';
+
+  readonly iconVariants = iconVariants;
+  readonly twMerge = twMerge;
+}
diff --git a/alfa-client/libs/design-system/src/lib/icons/request-deletion-icon/request-deletion-icon.stories.ts b/alfa-client/libs/design-system/src/lib/icons/request-deletion-icon/request-deletion-icon.stories.ts
new file mode 100644
index 0000000000..d0ff870f40
--- /dev/null
+++ b/alfa-client/libs/design-system/src/lib/icons/request-deletion-icon/request-deletion-icon.stories.ts
@@ -0,0 +1,27 @@
+import type { Meta, StoryObj } from '@storybook/angular';
+
+import { RequestDeletionIconComponent } from './request-deletion-icon.component';
+
+const meta: Meta<RequestDeletionIconComponent> = {
+  title: 'Icons/Request deletion icon',
+  component: RequestDeletionIconComponent,
+  excludeStories: /.*Data$/,
+  tags: ['autodocs'],
+};
+
+export default meta;
+type Story = StoryObj<RequestDeletionIconComponent>;
+
+export const Default: Story = {
+  args: { size: 'large' },
+  argTypes: {
+    size: {
+      control: 'select',
+      options: ['small', 'medium', 'large', 'extra-large', 'full'],
+      description: 'Size of icon. Property "full" means 100%',
+      table: {
+        defaultValue: { summary: 'medium' },
+      },
+    },
+  },
+};
-- 
GitLab


From 567e26b72d38855ce7621d8ffdccc87ef4c8fa60 Mon Sep 17 00:00:00 2001
From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com>
Date: Wed, 5 Feb 2025 15:25:37 +0100
Subject: [PATCH 22/57] OZG-7474 Replace loeschen anfordern button

---
 .../src/lib/loesch-anforderung.module.ts      | 12 ++++--
 .../loeschen-anfordern-button.component.html  | 41 ++++++++++---------
 ...oeschen-anfordern-button.component.spec.ts | 12 +++---
 ...rgang-detail-action-buttons.component.html | 13 +++---
 4 files changed, 42 insertions(+), 36 deletions(-)

diff --git a/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung.module.ts b/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung.module.ts
index ee7952fbf3..eb33db7270 100644
--- a/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung.module.ts
+++ b/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung.module.ts
@@ -21,18 +21,20 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { CommonModule } from '@angular/common';
-import { NgModule } from '@angular/core';
 import { LoeschAnforderungSharedModule } from '@alfa-client/loesch-anforderung-shared';
 import { TechSharedModule } from '@alfa-client/tech-shared';
 import { UiModule } from '@alfa-client/ui';
 import { VorgangSharedModule } from '@alfa-client/vorgang-shared';
+import { CommonModule } from '@angular/common';
+import { NgModule } from '@angular/core';
+import { ButtonWithSpinnerComponent } from '@ods/component';
+import { RequestDeletionIconComponent } from '../../../design-system/src/lib/icons/request-deletion-icon/request-deletion-icon.component';
 import { EndgueltigLoeschenButtonContainerComponent } from './endgueltig-loeschen-button-container/endgueltig-loeschen-button-container.component';
 import { EndgueltigLoeschenButtonComponent } from './endgueltig-loeschen-button-container/endgueltig-loeschen-button/endgueltig-loeschen-button.component';
+import { LoeschAnforderungZuruecknehmenButtonContainerComponent } from './loesch-anforderung-zuruecknehmen-button-container/loesch-anforderung-zuruecknehmen-button-container.component';
+import { LoeschAnforderungZuruecknehmenButtonComponent } from './loesch-anforderung-zuruecknehmen-button-container/loesch-anforderung-zuruecknehmen-button/loesch-anforderung-zuruecknehmen-button.component';
 import { LoeschenAnfordernButtonContainerComponent } from './loeschen-anfordern-button-container/loeschen-anfordern-button-container.component';
 import { LoeschenAnfordernButtonComponent } from './loeschen-anfordern-button-container/loeschen-anfordern-button/loeschen-anfordern-button.component';
-import { LoeschAnforderungZuruecknehmenButtonComponent } from './loesch-anforderung-zuruecknehmen-button-container/loesch-anforderung-zuruecknehmen-button/loesch-anforderung-zuruecknehmen-button.component';
-import { LoeschAnforderungZuruecknehmenButtonContainerComponent } from './loesch-anforderung-zuruecknehmen-button-container/loesch-anforderung-zuruecknehmen-button-container.component';
 
 @NgModule({
   imports: [
@@ -41,6 +43,8 @@ import { LoeschAnforderungZuruecknehmenButtonContainerComponent } from './loesch
     TechSharedModule,
     UiModule,
     VorgangSharedModule,
+    RequestDeletionIconComponent,
+    ButtonWithSpinnerComponent,
   ],
   declarations: [
     LoeschenAnfordernButtonContainerComponent,
diff --git a/alfa-client/libs/loesch-anforderung/src/lib/loeschen-anfordern-button-container/loeschen-anfordern-button/loeschen-anfordern-button.component.html b/alfa-client/libs/loesch-anforderung/src/lib/loeschen-anfordern-button-container/loeschen-anfordern-button/loeschen-anfordern-button.component.html
index 81b61300a5..d56365f101 100644
--- a/alfa-client/libs/loesch-anforderung/src/lib/loeschen-anfordern-button-container/loeschen-anfordern-button/loeschen-anfordern-button.component.html
+++ b/alfa-client/libs/loesch-anforderung/src/lib/loeschen-anfordern-button-container/loeschen-anfordern-button/loeschen-anfordern-button.component.html
@@ -23,22 +23,25 @@
     unter der Lizenz sind dem Lizenztext zu entnehmen.
 
 -->
-<ozgcloud-stroked-button-with-spinner
-  *ngIf="!showAsIconButton"
-  data-test-id="loeschen-anfordern-button"
-  text="Löschen anfordern"
-  svgIcon="request_deletion"
-  [stateResource]="loeschenAnfordernCommand"
-  (clickEmitter)="loeschenAnfordern.emit()"
->
-</ozgcloud-stroked-button-with-spinner>
-
-<ozgcloud-icon-button-with-spinner
-  *ngIf="showAsIconButton"
-  data-test-id="loeschen-anfordern-icon-button"
-  svgIcon="request_deletion"
-  toolTip="Löschen anfordern"
-  [stateResource]="loeschenAnfordernCommand"
-  (clickEmitter)="loeschenAnfordern.emit()"
->
-</ozgcloud-icon-button-with-spinner>
+@if (showAsIconButton) {
+  <ods-button-with-spinner
+    [stateResource]="loeschenAnfordernCommand"
+    data-test-id="loeschen-anfordern-icon-button"
+    tooltip="Löschen anfordern"
+    variant="icon"
+    size="fit"
+    (clickEmitter)="loeschenAnfordern.emit()"
+  >
+    <ods-request-deletion-icon icon class="fill-text" />
+  </ods-button-with-spinner>
+} @else {
+  <ods-button-with-spinner
+    [stateResource]="loeschenAnfordernCommand"
+    data-test-id="loeschen-anfordern-button"
+    text="Löschen anfordern"
+    variant="outline"
+    (clickEmitter)="loeschenAnfordern.emit()"
+  >
+    <ods-request-deletion-icon icon />
+  </ods-button-with-spinner>
+}
diff --git a/alfa-client/libs/loesch-anforderung/src/lib/loeschen-anfordern-button-container/loeschen-anfordern-button/loeschen-anfordern-button.component.spec.ts b/alfa-client/libs/loesch-anforderung/src/lib/loeschen-anfordern-button-container/loeschen-anfordern-button/loeschen-anfordern-button.component.spec.ts
index dbf4ba9cad..33fad21246 100644
--- a/alfa-client/libs/loesch-anforderung/src/lib/loeschen-anfordern-button-container/loeschen-anfordern-button/loeschen-anfordern-button.component.spec.ts
+++ b/alfa-client/libs/loesch-anforderung/src/lib/loeschen-anfordern-button-container/loeschen-anfordern-button/loeschen-anfordern-button.component.spec.ts
@@ -21,12 +21,10 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { existsAsHtmlElement, notExistsAsHtmlElement } from '@alfa-client/test-utils';
-import {
-  IconButtonWithSpinnerComponent,
-  OzgcloudStrokedButtonWithSpinnerComponent,
-} from '@alfa-client/ui';
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { ButtonWithSpinnerComponent } from '@ods/component';
+import { RequestDeletionIconComponent } from '@ods/system';
 import { getDataTestIdOf } from 'libs/tech-shared/test/data-test';
 import { MockComponent } from 'ng-mocks';
 import { LoeschenAnfordernButtonComponent } from './loeschen-anfordern-button.component';
@@ -42,8 +40,8 @@ describe('LoeschenAnfordernButtonComponent', () => {
     await TestBed.configureTestingModule({
       declarations: [
         LoeschenAnfordernButtonComponent,
-        MockComponent(OzgcloudStrokedButtonWithSpinnerComponent),
-        MockComponent(IconButtonWithSpinnerComponent),
+        MockComponent(ButtonWithSpinnerComponent),
+        MockComponent(RequestDeletionIconComponent),
       ],
     }).compileComponents();
 
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-action-buttons/vorgang-detail-action-buttons.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-action-buttons/vorgang-detail-action-buttons.component.html
index 6ef3191b65..7170a1ee9d 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-action-buttons/vorgang-detail-action-buttons.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-action-buttons/vorgang-detail-action-buttons.component.html
@@ -32,12 +32,13 @@
 <alfa-verwerfen-button [showAsIconButton]="showAsIconButton" [vorgang]="vorgangWithEingang" />
 <alfa-wiedereroeffnen-button [showAsIconButton]="showAsIconButton" [vorgang]="vorgangWithEingang" />
 <!-- TODO Anhand des Links Library dynamisch laden -->
-<alfa-loeschen-anfordern-button-container
-  *ngIf="vorgangWithEingang | hasLink: vorgangWithEingangLinkRel.LOESCHEN_ANFORDERN"
-  data-test-id="loeschen-anfordern-icon-button-container"
-  [showAsIconButton]="showAsIconButton"
-  [vorgang]="vorgangWithEingang"
-/>
+@if (vorgangWithEingang | hasLink: vorgangWithEingangLinkRel.LOESCHEN_ANFORDERN) {
+  <alfa-loeschen-anfordern-button-container
+    data-test-id="loeschen-anfordern-icon-button-container"
+    [showAsIconButton]="showAsIconButton"
+    [vorgang]="vorgangWithEingang"
+  />
+}
 <alfa-endgueltig-loeschen-button-container [showAsIconButton]="showAsIconButton" [vorgang]="vorgangWithEingang" />
 <alfa-loesch-anforderung-zuruecknehmen-button-container [showAsIconButton]="showAsIconButton" />
 <!--  -->
-- 
GitLab


From 8d5c80e145ff010488590b7177c2beff8c4cc69a Mon Sep 17 00:00:00 2001
From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com>
Date: Wed, 5 Feb 2025 15:49:16 +0100
Subject: [PATCH 23/57] OZG-7474 Add delete finally icon

---
 alfa-client/libs/design-system/src/index.ts   |  1 +
 .../delete-finally-icon.component.spec.ts     | 21 ++++++
 .../delete-finally-icon.component.ts          | 65 +++++++++++++++++++
 .../delete-finally-icon.stories.ts            | 27 ++++++++
 4 files changed, 114 insertions(+)
 create mode 100644 alfa-client/libs/design-system/src/lib/icons/delete-finally-icon/delete-finally-icon.component.spec.ts
 create mode 100644 alfa-client/libs/design-system/src/lib/icons/delete-finally-icon/delete-finally-icon.component.ts
 create mode 100644 alfa-client/libs/design-system/src/lib/icons/delete-finally-icon/delete-finally-icon.stories.ts

diff --git a/alfa-client/libs/design-system/src/index.ts b/alfa-client/libs/design-system/src/index.ts
index 3f325d6741..e7e5508f7e 100644
--- a/alfa-client/libs/design-system/src/index.ts
+++ b/alfa-client/libs/design-system/src/index.ts
@@ -50,6 +50,7 @@ export * from './lib/icons/bescheid-upload-icon/bescheid-upload-icon.component';
 export * from './lib/icons/check-circle-icon/check-circle-icon.component';
 export * from './lib/icons/check-icon/check-icon.component';
 export * from './lib/icons/close-icon/close-icon.component';
+export * from './lib/icons/delete-finally-icon/delete-finally-icon.component';
 export * from './lib/icons/discard-icon/discard-icon.component';
 export * from './lib/icons/edit-icon/edit-icon.component';
 export * from './lib/icons/error-icon/error-icon.component';
diff --git a/alfa-client/libs/design-system/src/lib/icons/delete-finally-icon/delete-finally-icon.component.spec.ts b/alfa-client/libs/design-system/src/lib/icons/delete-finally-icon/delete-finally-icon.component.spec.ts
new file mode 100644
index 0000000000..88eee559f2
--- /dev/null
+++ b/alfa-client/libs/design-system/src/lib/icons/delete-finally-icon/delete-finally-icon.component.spec.ts
@@ -0,0 +1,21 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { DeleteFinallyIconComponent } from './delete-finally-icon.component';
+
+describe('DeleteFinallyIconComponent', () => {
+  let component: DeleteFinallyIconComponent;
+  let fixture: ComponentFixture<DeleteFinallyIconComponent>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      imports: [DeleteFinallyIconComponent],
+    }).compileComponents();
+
+    fixture = TestBed.createComponent(DeleteFinallyIconComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/alfa-client/libs/design-system/src/lib/icons/delete-finally-icon/delete-finally-icon.component.ts b/alfa-client/libs/design-system/src/lib/icons/delete-finally-icon/delete-finally-icon.component.ts
new file mode 100644
index 0000000000..5fc6c68cfa
--- /dev/null
+++ b/alfa-client/libs/design-system/src/lib/icons/delete-finally-icon/delete-finally-icon.component.ts
@@ -0,0 +1,65 @@
+import { CommonModule } from '@angular/common';
+import { Component, Input } from '@angular/core';
+import { twMerge } from 'tailwind-merge';
+import { IconVariants, iconVariants } from '../iconVariants';
+
+@Component({
+  selector: 'ods-delete-finally-icon',
+  standalone: true,
+  imports: [CommonModule],
+  template: `<svg
+    viewBox="0 0 24 24"
+    xmlns="http://www.w3.org/2000/svg"
+    [ngClass]="[twMerge(iconVariants({ size }), 'fill-primary', class)]"
+    aria-hidden="true"
+  >
+    <path
+      fill-rule="evenodd"
+      clip-rule="evenodd"
+      d="M17.7366 13V3.11101H12.4405L7.74777 8.05811L7.74777 13H5.75V8.05811C5.75 7.49738 5.96112 6.95968 6.3368 6.56365L11.0296 1.61654C11.4041 1.22173 11.9115 1 12.4405 1H17.7366C18.8399 1 19.7344 1.94513 19.7344 3.11101V13H17.7366Z"
+    />
+    <path
+      d="M7.75 20C7.75 19.4477 8.19772 19 8.75 19C9.30228 19 9.75 19.4477 9.75 20C9.75 20.5523 9.30228 21 8.75 21C8.19772 21 7.75 20.5523 7.75 20Z"
+    />
+    <path
+      d="M7.75 20C7.75 19.4477 8.19772 19 8.75 19C9.30228 19 9.75 19.4477 9.75 20C9.75 20.5523 9.30228 21 8.75 21C8.19772 21 7.75 20.5523 7.75 20Z"
+    />
+    <path
+      d="M11.75 21C11.75 20.4477 12.1977 20 12.75 20C13.3023 20 13.75 20.4477 13.75 21V22C13.75 22.5523 13.3023 23 12.75 23C12.1977 23 11.75 22.5523 11.75 22V21Z"
+    />
+    <path
+      d="M11.75 21C11.75 20.4477 12.1977 20 12.75 20C13.3023 20 13.75 20.4477 13.75 21V22C13.75 22.5523 13.3023 23 12.75 23C12.1977 23 11.75 22.5523 11.75 22V21Z"
+    />
+    <path
+      d="M11.75 13C11.75 12.4477 12.1977 12 12.75 12C13.3023 12 13.75 12.4477 13.75 13V17C13.75 17.5523 13.3023 18 12.75 18C12.1977 18 11.75 17.5523 11.75 17V13Z"
+    />
+    <path
+      d="M11.75 13C11.75 12.4477 12.1977 12 12.75 12C13.3023 12 13.75 12.4477 13.75 13V17C13.75 17.5523 13.3023 18 12.75 18C12.1977 18 11.75 17.5523 11.75 17V13Z"
+    />
+    <path
+      d="M7.75 15C7.75 14.4477 8.19772 14 8.75 14C9.30228 14 9.75 14.4477 9.75 15V16C9.75 16.5523 9.30228 17 8.75 17C8.19772 17 7.75 16.5523 7.75 16V15Z"
+    />
+    <path
+      d="M7.75 15C7.75 14.4477 8.19772 14 8.75 14C9.30228 14 9.75 14.4477 9.75 15V16C9.75 16.5523 9.30228 17 8.75 17C8.19772 17 7.75 16.5523 7.75 16V15Z"
+    />
+    <path
+      d="M15.75 20C15.75 19.4477 16.1977 19 16.75 19C17.3023 19 17.75 19.4477 17.75 20V21C17.75 21.5523 17.3023 22 16.75 22C16.1977 22 15.75 21.5523 15.75 21V20Z"
+    />
+    <path
+      d="M15.75 20C15.75 19.4477 16.1977 19 16.75 19C17.3023 19 17.75 19.4477 17.75 20V21C17.75 21.5523 17.3023 22 16.75 22C16.1977 22 15.75 21.5523 15.75 21V20Z"
+    />
+    <path
+      d="M15.75 15C15.75 14.4477 16.1977 14 16.75 14C17.3023 14 17.75 14.4477 17.75 15V16C17.75 16.5523 17.3023 17 16.75 17C16.1977 17 15.75 16.5523 15.75 16V15Z"
+    />
+    <path
+      d="M15.75 15C15.75 14.4477 16.1977 14 16.75 14C17.3023 14 17.75 14.4477 17.75 15V16C17.75 16.5523 17.3023 17 16.75 17C16.1977 17 15.75 16.5523 15.75 16V15Z"
+    />
+  </svg> `,
+})
+export class DeleteFinallyIconComponent {
+  @Input() size: IconVariants['size'] = 'medium';
+  @Input() class: string = '';
+
+  readonly iconVariants = iconVariants;
+  readonly twMerge = twMerge;
+}
diff --git a/alfa-client/libs/design-system/src/lib/icons/delete-finally-icon/delete-finally-icon.stories.ts b/alfa-client/libs/design-system/src/lib/icons/delete-finally-icon/delete-finally-icon.stories.ts
new file mode 100644
index 0000000000..dee35416ea
--- /dev/null
+++ b/alfa-client/libs/design-system/src/lib/icons/delete-finally-icon/delete-finally-icon.stories.ts
@@ -0,0 +1,27 @@
+import type { Meta, StoryObj } from '@storybook/angular';
+
+import { DeleteFinallyIconComponent } from './delete-finally-icon.component';
+
+const meta: Meta<DeleteFinallyIconComponent> = {
+  title: 'Icons/Delete finally icon',
+  component: DeleteFinallyIconComponent,
+  excludeStories: /.*Data$/,
+  tags: ['autodocs'],
+};
+
+export default meta;
+type Story = StoryObj<DeleteFinallyIconComponent>;
+
+export const Default: Story = {
+  args: { size: 'large' },
+  argTypes: {
+    size: {
+      control: 'select',
+      options: ['small', 'medium', 'large', 'extra-large', 'full'],
+      description: 'Size of icon. Property "full" means 100%',
+      table: {
+        defaultValue: { summary: 'medium' },
+      },
+    },
+  },
+};
-- 
GitLab


From 1501467f6c129cf78e5789d2a72830391bf1a506 Mon Sep 17 00:00:00 2001
From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com>
Date: Wed, 5 Feb 2025 16:06:36 +0100
Subject: [PATCH 24/57] OZG-7474 Replace endgueltig loeschen button

---
 .../endgueltig-loeschen-button.component.html | 37 ++++++++++---------
 ...dgueltig-loeschen-button.component.spec.ts | 12 +++---
 .../src/lib/loesch-anforderung.module.ts      |  2 +
 3 files changed, 27 insertions(+), 24 deletions(-)

diff --git a/alfa-client/libs/loesch-anforderung/src/lib/endgueltig-loeschen-button-container/endgueltig-loeschen-button/endgueltig-loeschen-button.component.html b/alfa-client/libs/loesch-anforderung/src/lib/endgueltig-loeschen-button-container/endgueltig-loeschen-button/endgueltig-loeschen-button.component.html
index d02765b7ba..bdc9f478ca 100644
--- a/alfa-client/libs/loesch-anforderung/src/lib/endgueltig-loeschen-button-container/endgueltig-loeschen-button/endgueltig-loeschen-button.component.html
+++ b/alfa-client/libs/loesch-anforderung/src/lib/endgueltig-loeschen-button-container/endgueltig-loeschen-button/endgueltig-loeschen-button.component.html
@@ -23,20 +23,23 @@
     unter der Lizenz sind dem Lizenztext zu entnehmen.
 
 -->
-<ozgcloud-stroked-button-with-spinner
-  *ngIf="!showAsIconButton"
-  data-test-id="endgueltig-loeschen-button"
-  text="Endgültig löschen"
-  svgIcon="delete_finally"
-  (clickEmitter)="endgueltigLoeschen.emit()"
->
-</ozgcloud-stroked-button-with-spinner>
-
-<ozgcloud-icon-button-with-spinner
-  *ngIf="showAsIconButton"
-  data-test-id="endgueltig-loeschen-icon-button"
-  toolTip="Endgültig löschen"
-  svgIcon="delete_finally"
-  (clickEmitter)="endgueltigLoeschen.emit()"
->
-</ozgcloud-icon-button-with-spinner>
+@if (showAsIconButton) {
+  <ods-button-with-spinner
+    data-test-id="endgueltig-loeschen-icon-button"
+    tooltip="Endgültig löschen"
+    variant="icon"
+    size="fit"
+    (clickEmitter)="endgueltigLoeschen.emit()"
+  >
+    <ods-delete-finally-icon icon class="fill-text" />
+  </ods-button-with-spinner>
+} @else {
+  <ods-button-with-spinner
+    data-test-id="endgueltig-loeschen-button"
+    text="Endgültig löschen"
+    variant="outline"
+    (clickEmitter)="endgueltigLoeschen.emit()"
+  >
+    <ods-delete-finally-icon icon />
+  </ods-button-with-spinner>
+}
diff --git a/alfa-client/libs/loesch-anforderung/src/lib/endgueltig-loeschen-button-container/endgueltig-loeschen-button/endgueltig-loeschen-button.component.spec.ts b/alfa-client/libs/loesch-anforderung/src/lib/endgueltig-loeschen-button-container/endgueltig-loeschen-button/endgueltig-loeschen-button.component.spec.ts
index 783c0b0f70..525dbbc86c 100644
--- a/alfa-client/libs/loesch-anforderung/src/lib/endgueltig-loeschen-button-container/endgueltig-loeschen-button/endgueltig-loeschen-button.component.spec.ts
+++ b/alfa-client/libs/loesch-anforderung/src/lib/endgueltig-loeschen-button-container/endgueltig-loeschen-button/endgueltig-loeschen-button.component.spec.ts
@@ -21,12 +21,10 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { existsAsHtmlElement, notExistsAsHtmlElement } from '@alfa-client/test-utils';
-import {
-  IconButtonWithSpinnerComponent,
-  OzgcloudStrokedButtonWithSpinnerComponent,
-} from '@alfa-client/ui';
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { ButtonWithSpinnerComponent } from '@ods/component';
+import { DeleteFinallyIconComponent } from '@ods/system';
 import { getDataTestIdOf } from 'libs/tech-shared/test/data-test';
 import { MockComponent } from 'ng-mocks';
 import { EndgueltigLoeschenButtonComponent } from './endgueltig-loeschen-button.component';
@@ -42,8 +40,8 @@ describe('EndgueltigLoeschenButtonComponent', () => {
     await TestBed.configureTestingModule({
       declarations: [
         EndgueltigLoeschenButtonComponent,
-        MockComponent(OzgcloudStrokedButtonWithSpinnerComponent),
-        MockComponent(IconButtonWithSpinnerComponent),
+        MockComponent(ButtonWithSpinnerComponent),
+        MockComponent(DeleteFinallyIconComponent),
       ],
     }).compileComponents();
 
diff --git a/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung.module.ts b/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung.module.ts
index eb33db7270..b751b62130 100644
--- a/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung.module.ts
+++ b/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung.module.ts
@@ -28,6 +28,7 @@ import { VorgangSharedModule } from '@alfa-client/vorgang-shared';
 import { CommonModule } from '@angular/common';
 import { NgModule } from '@angular/core';
 import { ButtonWithSpinnerComponent } from '@ods/component';
+import { DeleteFinallyIconComponent } from '../../../design-system/src/lib/icons/delete-finally-icon/delete-finally-icon.component';
 import { RequestDeletionIconComponent } from '../../../design-system/src/lib/icons/request-deletion-icon/request-deletion-icon.component';
 import { EndgueltigLoeschenButtonContainerComponent } from './endgueltig-loeschen-button-container/endgueltig-loeschen-button-container.component';
 import { EndgueltigLoeschenButtonComponent } from './endgueltig-loeschen-button-container/endgueltig-loeschen-button/endgueltig-loeschen-button.component';
@@ -45,6 +46,7 @@ import { LoeschenAnfordernButtonComponent } from './loeschen-anfordern-button-co
     VorgangSharedModule,
     RequestDeletionIconComponent,
     ButtonWithSpinnerComponent,
+    DeleteFinallyIconComponent,
   ],
   declarations: [
     LoeschenAnfordernButtonContainerComponent,
-- 
GitLab


From 204e6453aed01627d37fc4322ae0f794b76d8bc1 Mon Sep 17 00:00:00 2001
From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com>
Date: Wed, 5 Feb 2025 16:16:28 +0100
Subject: [PATCH 25/57] OZG-7474 Add undo request deletion icon

---
 alfa-client/libs/design-system/src/index.ts   |  1 +
 ...do-request-deletion-icon.component.spec.ts | 21 +++++++++++++++
 .../undo-request-deletion-icon.component.ts   | 27 +++++++++++++++++++
 .../undo-request-deletion-icon.stories.ts     | 27 +++++++++++++++++++
 4 files changed, 76 insertions(+)
 create mode 100644 alfa-client/libs/design-system/src/lib/icons/undo-request-delition-icon/undo-request-deletion-icon.component.spec.ts
 create mode 100644 alfa-client/libs/design-system/src/lib/icons/undo-request-delition-icon/undo-request-deletion-icon.component.ts
 create mode 100644 alfa-client/libs/design-system/src/lib/icons/undo-request-delition-icon/undo-request-deletion-icon.stories.ts

diff --git a/alfa-client/libs/design-system/src/index.ts b/alfa-client/libs/design-system/src/index.ts
index e7e5508f7e..ff7c3597c5 100644
--- a/alfa-client/libs/design-system/src/index.ts
+++ b/alfa-client/libs/design-system/src/index.ts
@@ -76,6 +76,7 @@ export * from './lib/icons/send-icon/send-icon.component';
 export * from './lib/icons/spinner-icon/spinner-icon.component';
 export * from './lib/icons/stamp-icon/stamp-icon.component';
 export * from './lib/icons/statistic-icon/statistic-icon.component';
+export * from './lib/icons/undo-request-delition-icon/undo-request-deletion-icon.stories';
 export * from './lib/icons/user-icon/user-icon.component';
 export * from './lib/icons/users-icon/users-icon.component';
 export * from './lib/instant-search/instant-search/instant-search.component';
diff --git a/alfa-client/libs/design-system/src/lib/icons/undo-request-delition-icon/undo-request-deletion-icon.component.spec.ts b/alfa-client/libs/design-system/src/lib/icons/undo-request-delition-icon/undo-request-deletion-icon.component.spec.ts
new file mode 100644
index 0000000000..46b0e0fd8e
--- /dev/null
+++ b/alfa-client/libs/design-system/src/lib/icons/undo-request-delition-icon/undo-request-deletion-icon.component.spec.ts
@@ -0,0 +1,21 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { UndoRequestDeletionIconComponent } from './undo-request-deletion-icon.component';
+
+describe('UndoRequestDeletionIconComponent', () => {
+  let component: UndoRequestDeletionIconComponent;
+  let fixture: ComponentFixture<UndoRequestDeletionIconComponent>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      imports: [UndoRequestDeletionIconComponent],
+    }).compileComponents();
+
+    fixture = TestBed.createComponent(UndoRequestDeletionIconComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/alfa-client/libs/design-system/src/lib/icons/undo-request-delition-icon/undo-request-deletion-icon.component.ts b/alfa-client/libs/design-system/src/lib/icons/undo-request-delition-icon/undo-request-deletion-icon.component.ts
new file mode 100644
index 0000000000..afdcfae650
--- /dev/null
+++ b/alfa-client/libs/design-system/src/lib/icons/undo-request-delition-icon/undo-request-deletion-icon.component.ts
@@ -0,0 +1,27 @@
+import { CommonModule } from '@angular/common';
+import { Component, Input } from '@angular/core';
+import { twMerge } from 'tailwind-merge';
+import { iconVariants, IconVariants } from '../iconVariants';
+
+@Component({
+  selector: 'ods-undo-request-deletion-icon',
+  standalone: true,
+  imports: [CommonModule],
+  template: `<svg
+    viewBox="0 0 24 24"
+    xmlns="http://www.w3.org/2000/svg"
+    [ngClass]="[twMerge(iconVariants({ size }), 'fill-primary', class)]"
+    aria-hidden="true"
+  >
+    <path
+      d="M11.75 16H13.75V11.85L15.35 13.4L16.75 12L12.75 8L8.75 12L10.15 13.4L11.75 11.85V16ZM7.75 21C7.2 21 6.72917 20.8042 6.3375 20.4125C5.94583 20.0208 5.75 19.55 5.75 19V6H4.75V4H9.75V3H15.75V4H20.75V6H19.75V19C19.75 19.55 19.5542 20.0208 19.1625 20.4125C18.7708 20.8042 18.3 21 17.75 21H7.75ZM17.75 6H7.75V19H17.75V6Z"
+    />
+  </svg>`,
+})
+export class UndoRequestDeletionIconComponent {
+  @Input() size: IconVariants['size'] = 'medium';
+  @Input() class: string = '';
+
+  readonly iconVariants = iconVariants;
+  readonly twMerge = twMerge;
+}
diff --git a/alfa-client/libs/design-system/src/lib/icons/undo-request-delition-icon/undo-request-deletion-icon.stories.ts b/alfa-client/libs/design-system/src/lib/icons/undo-request-delition-icon/undo-request-deletion-icon.stories.ts
new file mode 100644
index 0000000000..88a4f0fe21
--- /dev/null
+++ b/alfa-client/libs/design-system/src/lib/icons/undo-request-delition-icon/undo-request-deletion-icon.stories.ts
@@ -0,0 +1,27 @@
+import type { Meta, StoryObj } from '@storybook/angular';
+
+import { UndoRequestDeletionIconComponent } from './undo-request-deletion-icon.component';
+
+const meta: Meta<UndoRequestDeletionIconComponent> = {
+  title: 'Icons/Undo request deletion icon',
+  component: UndoRequestDeletionIconComponent,
+  excludeStories: /.*Data$/,
+  tags: ['autodocs'],
+};
+
+export default meta;
+type Story = StoryObj<UndoRequestDeletionIconComponent>;
+
+export const Default: Story = {
+  args: { size: 'large' },
+  argTypes: {
+    size: {
+      control: 'select',
+      options: ['small', 'medium', 'large', 'extra-large', 'full'],
+      description: 'Size of icon. Property "full" means 100%',
+      table: {
+        defaultValue: { summary: 'medium' },
+      },
+    },
+  },
+};
-- 
GitLab


From 8d345c764cb2c6f51d14347bd6786edec4480af3 Mon Sep 17 00:00:00 2001
From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com>
Date: Wed, 5 Feb 2025 16:28:18 +0100
Subject: [PATCH 26/57] OZG-7474 Replace loesch anforderung zuruecknehmen
 button

---
 ...derung-zuruecknehmen-button.component.html | 41 ++++++++++---------
 ...ung-zuruecknehmen-button.component.spec.ts | 20 ++++-----
 .../src/lib/loesch-anforderung.module.ts      |  2 +
 3 files changed, 31 insertions(+), 32 deletions(-)

diff --git a/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung-zuruecknehmen-button-container/loesch-anforderung-zuruecknehmen-button/loesch-anforderung-zuruecknehmen-button.component.html b/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung-zuruecknehmen-button-container/loesch-anforderung-zuruecknehmen-button/loesch-anforderung-zuruecknehmen-button.component.html
index 9b9a716c4e..59a0e021de 100644
--- a/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung-zuruecknehmen-button-container/loesch-anforderung-zuruecknehmen-button/loesch-anforderung-zuruecknehmen-button.component.html
+++ b/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung-zuruecknehmen-button-container/loesch-anforderung-zuruecknehmen-button/loesch-anforderung-zuruecknehmen-button.component.html
@@ -23,22 +23,25 @@
     unter der Lizenz sind dem Lizenztext zu entnehmen.
 
 -->
-<ozgcloud-stroked-button-with-spinner
-  *ngIf="!showAsIconButton"
-  data-test-id="loesch-anforderung-zuruecknehmen-button"
-  text="Löschanforderung zurücknehmen"
-  svgIcon="undo_request_deletion"
-  [stateResource]="loeschAnforderungZuruecknehmenCommand"
-  (clickEmitter)="loeschAnforderungZuruecknehmen.emit()"
->
-</ozgcloud-stroked-button-with-spinner>
-
-<ozgcloud-icon-button-with-spinner
-  *ngIf="showAsIconButton"
-  data-test-id="loesch-anforderung-zuruecknehmen-icon-button"
-  svgIcon="undo_request_deletion"
-  toolTip="Löschanforderung zurücknehmen"
-  [stateResource]="loeschAnforderungZuruecknehmenCommand"
-  (clickEmitter)="loeschAnforderungZuruecknehmen.emit()"
->
-</ozgcloud-icon-button-with-spinner>
+@if (showAsIconButton) {
+  <ods-button-with-spinner
+    [stateResource]="loeschAnforderungZuruecknehmenCommand"
+    data-test-id="loesch-anforderung-zuruecknehmen-icon-button"
+    tooltip="Löschanforderung zurücknehmen"
+    variant="icon"
+    size="fit"
+    (clickEmitter)="loeschAnforderungZuruecknehmen.emit()"
+  >
+    <ods-undo-request-deletion-icon icon class="fill-text" />
+  </ods-button-with-spinner>
+} @else {
+  <ods-button-with-spinner
+    [stateResource]="loeschAnforderungZuruecknehmenCommand"
+    data-test-id="loesch-anforderung-zuruecknehmen-button"
+    text="Löschanforderung zurücknehmen"
+    variant="outline"
+    (clickEmitter)="loeschAnforderungZuruecknehmen.emit()"
+  >
+    <ods-undo-request-deletion-icon icon />
+  </ods-button-with-spinner>
+}
diff --git a/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung-zuruecknehmen-button-container/loesch-anforderung-zuruecknehmen-button/loesch-anforderung-zuruecknehmen-button.component.spec.ts b/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung-zuruecknehmen-button-container/loesch-anforderung-zuruecknehmen-button/loesch-anforderung-zuruecknehmen-button.component.spec.ts
index 5d009efa5c..20256b7fae 100644
--- a/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung-zuruecknehmen-button-container/loesch-anforderung-zuruecknehmen-button/loesch-anforderung-zuruecknehmen-button.component.spec.ts
+++ b/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung-zuruecknehmen-button-container/loesch-anforderung-zuruecknehmen-button/loesch-anforderung-zuruecknehmen-button.component.spec.ts
@@ -21,12 +21,10 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { existsAsHtmlElement, notExistsAsHtmlElement } from '@alfa-client/test-utils';
-import {
-  IconButtonWithSpinnerComponent,
-  OzgcloudStrokedButtonWithSpinnerComponent,
-} from '@alfa-client/ui';
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { ButtonWithSpinnerComponent } from '@ods/component';
+import { UndoRequestDeletionIconComponent } from 'libs/design-system/src/lib/icons/undo-request-delition-icon/undo-request-deletion-icon.component';
 import { getDataTestIdOf } from 'libs/tech-shared/test/data-test';
 import { MockComponent } from 'ng-mocks';
 import { LoeschAnforderungZuruecknehmenButtonComponent } from './loesch-anforderung-zuruecknehmen-button.component';
@@ -35,19 +33,15 @@ describe('LoeschAnforderungZuruecknehmenButtonComponent', () => {
   let component: LoeschAnforderungZuruecknehmenButtonComponent;
   let fixture: ComponentFixture<LoeschAnforderungZuruecknehmenButtonComponent>;
 
-  const loeschenAnfordernZuruecknehmenButton: string = getDataTestIdOf(
-    'loesch-anforderung-zuruecknehmen-button',
-  );
-  const loeschenAnfordernZuruecknehmenIconButton: string = getDataTestIdOf(
-    'loesch-anforderung-zuruecknehmen-icon-button',
-  );
+  const loeschenAnfordernZuruecknehmenButton: string = getDataTestIdOf('loesch-anforderung-zuruecknehmen-button');
+  const loeschenAnfordernZuruecknehmenIconButton: string = getDataTestIdOf('loesch-anforderung-zuruecknehmen-icon-button');
 
   beforeEach(async () => {
     await TestBed.configureTestingModule({
       declarations: [
         LoeschAnforderungZuruecknehmenButtonComponent,
-        MockComponent(OzgcloudStrokedButtonWithSpinnerComponent),
-        MockComponent(IconButtonWithSpinnerComponent),
+        MockComponent(ButtonWithSpinnerComponent),
+        MockComponent(UndoRequestDeletionIconComponent),
       ],
     }).compileComponents();
 
diff --git a/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung.module.ts b/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung.module.ts
index b751b62130..ebe9b6b1e9 100644
--- a/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung.module.ts
+++ b/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung.module.ts
@@ -30,6 +30,7 @@ import { NgModule } from '@angular/core';
 import { ButtonWithSpinnerComponent } from '@ods/component';
 import { DeleteFinallyIconComponent } from '../../../design-system/src/lib/icons/delete-finally-icon/delete-finally-icon.component';
 import { RequestDeletionIconComponent } from '../../../design-system/src/lib/icons/request-deletion-icon/request-deletion-icon.component';
+import { UndoRequestDeletionIconComponent } from '../../../design-system/src/lib/icons/undo-request-delition-icon/undo-request-deletion-icon.component';
 import { EndgueltigLoeschenButtonContainerComponent } from './endgueltig-loeschen-button-container/endgueltig-loeschen-button-container.component';
 import { EndgueltigLoeschenButtonComponent } from './endgueltig-loeschen-button-container/endgueltig-loeschen-button/endgueltig-loeschen-button.component';
 import { LoeschAnforderungZuruecknehmenButtonContainerComponent } from './loesch-anforderung-zuruecknehmen-button-container/loesch-anforderung-zuruecknehmen-button-container.component';
@@ -47,6 +48,7 @@ import { LoeschenAnfordernButtonComponent } from './loeschen-anfordern-button-co
     RequestDeletionIconComponent,
     ButtonWithSpinnerComponent,
     DeleteFinallyIconComponent,
+    UndoRequestDeletionIconComponent,
   ],
   declarations: [
     LoeschenAnfordernButtonContainerComponent,
-- 
GitLab


From 1976861f7fe159243981c7af7eb548a9e1bea5fa Mon Sep 17 00:00:00 2001
From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com>
Date: Wed, 5 Feb 2025 16:40:30 +0100
Subject: [PATCH 27/57] OZG-7474 Add update icon

---
 alfa-client/libs/design-system/src/index.ts   |  1 +
 .../update-icon/update-icon.component.spec.ts | 21 +++++++++++++++
 .../update-icon/update-icon.component.ts      | 27 +++++++++++++++++++
 .../icons/update-icon/update-icon.stories.ts  | 27 +++++++++++++++++++
 4 files changed, 76 insertions(+)
 create mode 100644 alfa-client/libs/design-system/src/lib/icons/update-icon/update-icon.component.spec.ts
 create mode 100644 alfa-client/libs/design-system/src/lib/icons/update-icon/update-icon.component.ts
 create mode 100644 alfa-client/libs/design-system/src/lib/icons/update-icon/update-icon.stories.ts

diff --git a/alfa-client/libs/design-system/src/index.ts b/alfa-client/libs/design-system/src/index.ts
index ff7c3597c5..e030a77354 100644
--- a/alfa-client/libs/design-system/src/index.ts
+++ b/alfa-client/libs/design-system/src/index.ts
@@ -77,6 +77,7 @@ export * from './lib/icons/spinner-icon/spinner-icon.component';
 export * from './lib/icons/stamp-icon/stamp-icon.component';
 export * from './lib/icons/statistic-icon/statistic-icon.component';
 export * from './lib/icons/undo-request-delition-icon/undo-request-deletion-icon.stories';
+export * from './lib/icons/update-icon/update-icon.component';
 export * from './lib/icons/user-icon/user-icon.component';
 export * from './lib/icons/users-icon/users-icon.component';
 export * from './lib/instant-search/instant-search/instant-search.component';
diff --git a/alfa-client/libs/design-system/src/lib/icons/update-icon/update-icon.component.spec.ts b/alfa-client/libs/design-system/src/lib/icons/update-icon/update-icon.component.spec.ts
new file mode 100644
index 0000000000..d2e3620bad
--- /dev/null
+++ b/alfa-client/libs/design-system/src/lib/icons/update-icon/update-icon.component.spec.ts
@@ -0,0 +1,21 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { UpdateIconComponent } from './update-icon.component';
+
+describe('UpdateIconComponent', () => {
+  let component: UpdateIconComponent;
+  let fixture: ComponentFixture<UpdateIconComponent>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      imports: [UpdateIconComponent],
+    }).compileComponents();
+
+    fixture = TestBed.createComponent(UpdateIconComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/alfa-client/libs/design-system/src/lib/icons/update-icon/update-icon.component.ts b/alfa-client/libs/design-system/src/lib/icons/update-icon/update-icon.component.ts
new file mode 100644
index 0000000000..34e40d8150
--- /dev/null
+++ b/alfa-client/libs/design-system/src/lib/icons/update-icon/update-icon.component.ts
@@ -0,0 +1,27 @@
+import { CommonModule } from '@angular/common';
+import { Component, Input } from '@angular/core';
+import { twMerge } from 'tailwind-merge';
+import { iconVariants, IconVariants } from '../iconVariants';
+
+@Component({
+  selector: 'ods-update-icon',
+  standalone: true,
+  imports: [CommonModule],
+  template: `<svg
+    viewBox="0 0 24 24"
+    xmlns="http://www.w3.org/2000/svg"
+    [ngClass]="[twMerge(iconVariants({ size }), 'fill-primary', class)]"
+    aria-hidden="true"
+  >
+    <path
+      d="M21.75 10.12H14.97L17.71 7.3C14.98 4.6 10.56 4.5 7.83 7.2C5.1 9.91 5.1 14.28 7.83 16.99C10.56 19.7 14.98 19.7 17.71 16.99C19.07 15.65 19.75 14.08 19.75 12.1H21.75C21.75 14.08 20.87 16.65 19.11 18.39C15.6 21.87 9.9 21.87 6.39 18.39C2.89 14.92 2.86 9.28 6.37 5.81C9.88 2.34 15.51 2.34 19.02 5.81L21.75 3V10.12ZM13.25 8V12.25L16.75 14.33L16.03 15.54L11.75 13V8H13.25Z"
+    />
+  </svg>`,
+})
+export class UpdateIconComponent {
+  @Input() size: IconVariants['size'] = 'medium';
+  @Input() class: string = '';
+
+  readonly iconVariants = iconVariants;
+  readonly twMerge = twMerge;
+}
diff --git a/alfa-client/libs/design-system/src/lib/icons/update-icon/update-icon.stories.ts b/alfa-client/libs/design-system/src/lib/icons/update-icon/update-icon.stories.ts
new file mode 100644
index 0000000000..7814dc21f7
--- /dev/null
+++ b/alfa-client/libs/design-system/src/lib/icons/update-icon/update-icon.stories.ts
@@ -0,0 +1,27 @@
+import type { Meta, StoryObj } from '@storybook/angular';
+
+import { UpdateIconComponent } from './update-icon.component';
+
+const meta: Meta<UpdateIconComponent> = {
+  title: 'Icons/Update icon',
+  component: UpdateIconComponent,
+  excludeStories: /.*Data$/,
+  tags: ['autodocs'],
+};
+
+export default meta;
+type Story = StoryObj<UpdateIconComponent>;
+
+export const Default: Story = {
+  args: { size: 'large' },
+  argTypes: {
+    size: {
+      control: 'select',
+      options: ['small', 'medium', 'large', 'extra-large', 'full'],
+      description: 'Size of icon. Property "full" means 100%',
+      table: {
+        defaultValue: { summary: 'medium' },
+      },
+    },
+  },
+};
-- 
GitLab


From bd65b91631b6d38d02cbddcfe64a191e48af1492 Mon Sep 17 00:00:00 2001
From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com>
Date: Thu, 6 Feb 2025 11:45:41 +0100
Subject: [PATCH 28/57] OZG-7474 Replace wiedervorlage create button

---
 ...wiedervorlage-create-button.component.html | 42 +++++++++----------
 ...dervorlage-create-button.component.spec.ts | 23 ++++------
 .../src/lib/wiedervorlage.module.ts           |  7 +++-
 3 files changed, 34 insertions(+), 38 deletions(-)

diff --git a/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-list-in-vorgang-container/wiedervorlage-list-in-vorgang/wiedervorlage-create-button/wiedervorlage-create-button.component.html b/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-list-in-vorgang-container/wiedervorlage-list-in-vorgang/wiedervorlage-create-button/wiedervorlage-create-button.component.html
index 0b30324ca0..0998d200a4 100644
--- a/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-list-in-vorgang-container/wiedervorlage-list-in-vorgang/wiedervorlage-create-button/wiedervorlage-create-button.component.html
+++ b/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-list-in-vorgang-container/wiedervorlage-list-in-vorgang/wiedervorlage-create-button/wiedervorlage-create-button.component.html
@@ -23,28 +23,24 @@
     unter der Lizenz sind dem Lizenztext zu entnehmen.
 
 -->
-<ng-container *ngIf="wiedervorlageListStateResource?.resource as wiedervorlageListResource">
-  <div
-    class="create-button"
-    *ngIf="wiedervorlageListResource | hasLink: wiedervorlageListLinkRel.CREATE_WIEDERVORLAGE"
-  >
-    <a [routerLink]="'wiedervorlage/' + wiedervorlageRoute.NEW" tabindex="-1">
-      <ozgcloud-stroked-button-with-spinner
-        *ngIf="!showAsIconButton"
-        data-test-id="create-wiedervorlage"
-        class="create-button"
-        text="Wiedervorlage"
-        icon="add"
-      >
-      </ozgcloud-stroked-button-with-spinner>
 
-      <ozgcloud-icon-button-with-spinner
-        *ngIf="showAsIconButton"
-        data-test-id="create-wiedervorlage-icon-button"
-        icon="update"
-        toolTip="Wiedervorlage erstellen"
-      >
-      </ozgcloud-icon-button-with-spinner>
+@if (wiedervorlageListStateResource?.resource; as wiedervorlageListResource) {
+  @if (wiedervorlageListResource | hasLink: wiedervorlageListLinkRel.CREATE_WIEDERVORLAGE) {
+    <a [routerLink]="'wiedervorlage/' + wiedervorlageRoute.NEW" tabindex="-1">
+      @if (showAsIconButton) {
+        <ods-button-with-spinner
+          data-test-id="create-wiedervorlage-icon-button"
+          variant="icon"
+          size="fit"
+          tooltip="Wiedervorlage erstellen"
+        >
+          <ods-update-icon icon class="fill-text" />
+        </ods-button-with-spinner>
+      } @else {
+        <ods-button-with-spinner data-test-id="create-wiedervorlage" text="Wiedervorlage" variant="outline">
+          <ods-plus-icon icon />
+        </ods-button-with-spinner>
+      }
     </a>
-  </div>
-</ng-container>
+  }
+}
diff --git a/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-list-in-vorgang-container/wiedervorlage-list-in-vorgang/wiedervorlage-create-button/wiedervorlage-create-button.component.spec.ts b/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-list-in-vorgang-container/wiedervorlage-list-in-vorgang/wiedervorlage-create-button/wiedervorlage-create-button.component.spec.ts
index da0fc0842a..5060ed0101 100644
--- a/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-list-in-vorgang-container/wiedervorlage-list-in-vorgang/wiedervorlage-create-button/wiedervorlage-create-button.component.spec.ts
+++ b/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-list-in-vorgang-container/wiedervorlage-list-in-vorgang/wiedervorlage-create-button/wiedervorlage-create-button.component.spec.ts
@@ -21,14 +21,12 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-import { RouterTestingModule } from '@angular/router/testing';
 import { HasLinkPipe, createStateResource } from '@alfa-client/tech-shared';
-import {
-  IconButtonWithSpinnerComponent,
-  OzgcloudStrokedButtonWithSpinnerComponent,
-} from '@alfa-client/ui';
 import { WiedervorlageListLinkRel } from '@alfa-client/wiedervorlage-shared';
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { RouterTestingModule } from '@angular/router/testing';
+import { ButtonWithSpinnerComponent } from '@ods/component';
+import { PlusIconComponent, UpdateIconComponent } from '@ods/system';
 import { getDataTestIdOf } from 'libs/tech-shared/test/data-test';
 import { createWiedervorlageListResource } from 'libs/wiedervorlage-shared/test/wiedervorlage';
 import { MockComponent } from 'ng-mocks';
@@ -45,8 +43,9 @@ describe('WiedervorlageCreateButtonComponent', () => {
       declarations: [
         WiedervorlageCreateButtonComponent,
         HasLinkPipe,
-        MockComponent(OzgcloudStrokedButtonWithSpinnerComponent),
-        MockComponent(IconButtonWithSpinnerComponent),
+        MockComponent(ButtonWithSpinnerComponent),
+        MockComponent(PlusIconComponent),
+        MockComponent(UpdateIconComponent),
       ],
       imports: [RouterTestingModule],
     }).compileComponents();
@@ -55,9 +54,7 @@ describe('WiedervorlageCreateButtonComponent', () => {
   beforeEach(() => {
     fixture = TestBed.createComponent(WiedervorlageCreateButtonComponent);
     component = fixture.componentInstance;
-    component.wiedervorlageListStateResource = createStateResource(
-      createWiedervorlageListResource(),
-    );
+    component.wiedervorlageListStateResource = createStateResource(createWiedervorlageListResource());
     fixture.detectChanges();
   });
 
@@ -78,9 +75,7 @@ describe('WiedervorlageCreateButtonComponent', () => {
     });
 
     it('should be hidden', () => {
-      component.wiedervorlageListStateResource = createStateResource(
-        createWiedervorlageListResource(),
-      );
+      component.wiedervorlageListStateResource = createStateResource(createWiedervorlageListResource());
 
       fixture.detectChanges();
       const button = fixture.nativeElement.querySelector(wiedervorlageButton);
diff --git a/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage.module.ts b/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage.module.ts
index fec88f242f..123611852c 100644
--- a/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage.module.ts
+++ b/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage.module.ts
@@ -30,7 +30,9 @@ import { VorgangSharedUiModule } from '@alfa-client/vorgang-shared-ui';
 import { CommonModule, DatePipe } from '@angular/common';
 import { NgModule } from '@angular/core';
 import { RouterModule, Routes } from '@angular/router';
-import { TooltipDirective } from '@ods/system';
+import { ButtonWithSpinnerComponent } from '@ods/component';
+import { PlusIconComponent, TooltipDirective } from '@ods/system';
+import { UpdateIconComponent } from '../../../design-system/src/lib/icons/update-icon/update-icon.component';
 import { CreateWiedervorlageButtonContainerComponent } from './create-wiedervorlage-button-container/create-wiedervorlage-button-container.component';
 import { ErledigenButtonContainerComponent } from './erledigen-button-container/erledigen-button-container.component';
 import { SubmitWiedervorlageButtonComponent } from './submit-wiedervorlage-button/submit-wiedervorlage-button.component';
@@ -70,7 +72,10 @@ const routes: Routes = [
     VorgangSharedUiModule,
     BinaryFileModule,
     UserProfileModule,
+    ButtonWithSpinnerComponent,
     TooltipDirective,
+    UpdateIconComponent,
+    PlusIconComponent,
   ],
   declarations: [
     WiedervorlagePageComponent,
-- 
GitLab


From 3a1121e804dd3ad425bf13997a26c935b89483c9 Mon Sep 17 00:00:00 2001
From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com>
Date: Thu, 6 Feb 2025 13:24:09 +0100
Subject: [PATCH 29/57] OZG-7474 Add account circle icon

---
 alfa-client/libs/design-system/src/index.ts   |  1 +
 .../account-circle-icon.component.spec.ts     | 21 +++++++++++++++
 .../account-circle-icon.component.ts          | 27 +++++++++++++++++++
 .../account-circle-icon.stories.ts            | 27 +++++++++++++++++++
 4 files changed, 76 insertions(+)
 create mode 100644 alfa-client/libs/design-system/src/lib/icons/account-circle-icon/account-circle-icon.component.spec.ts
 create mode 100644 alfa-client/libs/design-system/src/lib/icons/account-circle-icon/account-circle-icon.component.ts
 create mode 100644 alfa-client/libs/design-system/src/lib/icons/account-circle-icon/account-circle-icon.stories.ts

diff --git a/alfa-client/libs/design-system/src/index.ts b/alfa-client/libs/design-system/src/index.ts
index e030a77354..2734b503f2 100644
--- a/alfa-client/libs/design-system/src/index.ts
+++ b/alfa-client/libs/design-system/src/index.ts
@@ -41,6 +41,7 @@ export * from './lib/form/radio-button-card/radio-button-card.component';
 export * from './lib/form/text-input/text-input.component';
 export * from './lib/form/textarea/textarea.component';
 export * from './lib/icons/accessibility-icon/accessibility-icon.component';
+export * from './lib/icons/account-circle-icon/account-circle-icon.component';
 export * from './lib/icons/admin-logo-icon/admin-logo-icon.component';
 export * from './lib/icons/archive-icon/archive-icon.component';
 export * from './lib/icons/attachment-icon/attachment-icon.component';
diff --git a/alfa-client/libs/design-system/src/lib/icons/account-circle-icon/account-circle-icon.component.spec.ts b/alfa-client/libs/design-system/src/lib/icons/account-circle-icon/account-circle-icon.component.spec.ts
new file mode 100644
index 0000000000..e50bb31c69
--- /dev/null
+++ b/alfa-client/libs/design-system/src/lib/icons/account-circle-icon/account-circle-icon.component.spec.ts
@@ -0,0 +1,21 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { AccountCircleIconComponent } from './account-circle-icon.component';
+
+describe('AccountCircleIconComponent', () => {
+  let component: AccountCircleIconComponent;
+  let fixture: ComponentFixture<AccountCircleIconComponent>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      imports: [AccountCircleIconComponent],
+    }).compileComponents();
+
+    fixture = TestBed.createComponent(AccountCircleIconComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/alfa-client/libs/design-system/src/lib/icons/account-circle-icon/account-circle-icon.component.ts b/alfa-client/libs/design-system/src/lib/icons/account-circle-icon/account-circle-icon.component.ts
new file mode 100644
index 0000000000..b762c6cbe3
--- /dev/null
+++ b/alfa-client/libs/design-system/src/lib/icons/account-circle-icon/account-circle-icon.component.ts
@@ -0,0 +1,27 @@
+import { CommonModule } from '@angular/common';
+import { Component, Input } from '@angular/core';
+import { twMerge } from 'tailwind-merge';
+import { iconVariants, IconVariants } from '../iconVariants';
+
+@Component({
+  selector: 'ods-account-circle-icon',
+  standalone: true,
+  imports: [CommonModule],
+  template: `<svg
+    viewBox="0 0 24 24"
+    xmlns="http://www.w3.org/2000/svg"
+    [ngClass]="[twMerge(iconVariants({ size }), 'fill-primary', class)]"
+    aria-hidden="true"
+  >
+    <path
+      d="M12.75 2C7.23 2 2.75 6.48 2.75 12C2.75 17.52 7.23 22 12.75 22C18.27 22 22.75 17.52 22.75 12C22.75 6.48 18.27 2 12.75 2ZM7.82 18.28C8.25 17.38 10.87 16.5 12.75 16.5C14.63 16.5 17.26 17.38 17.68 18.28C16.32 19.36 14.61 20 12.75 20C10.89 20 9.18 19.36 7.82 18.28ZM19.11 16.83C17.68 15.09 14.21 14.5 12.75 14.5C11.29 14.5 7.82 15.09 6.39 16.83C5.37 15.49 4.75 13.82 4.75 12C4.75 7.59 8.34 4 12.75 4C17.16 4 20.75 7.59 20.75 12C20.75 13.82 20.13 15.49 19.11 16.83ZM12.75 6C10.81 6 9.25 7.56 9.25 9.5C9.25 11.44 10.81 13 12.75 13C14.69 13 16.25 11.44 16.25 9.5C16.25 7.56 14.69 6 12.75 6ZM12.75 11C11.92 11 11.25 10.33 11.25 9.5C11.25 8.67 11.92 8 12.75 8C13.58 8 14.25 8.67 14.25 9.5C14.25 10.33 13.58 11 12.75 11Z"
+    />
+  </svg>`,
+})
+export class AccountCircleIconComponent {
+  @Input() size: IconVariants['size'] = 'medium';
+  @Input() class: string = '';
+
+  readonly iconVariants = iconVariants;
+  readonly twMerge = twMerge;
+}
diff --git a/alfa-client/libs/design-system/src/lib/icons/account-circle-icon/account-circle-icon.stories.ts b/alfa-client/libs/design-system/src/lib/icons/account-circle-icon/account-circle-icon.stories.ts
new file mode 100644
index 0000000000..46eae30d49
--- /dev/null
+++ b/alfa-client/libs/design-system/src/lib/icons/account-circle-icon/account-circle-icon.stories.ts
@@ -0,0 +1,27 @@
+import type { Meta, StoryObj } from '@storybook/angular';
+
+import { AccountCircleIconComponent } from './account-circle-icon.component';
+
+const meta: Meta<AccountCircleIconComponent> = {
+  title: 'Icons/Account circle icon',
+  component: AccountCircleIconComponent,
+  excludeStories: /.*Data$/,
+  tags: ['autodocs'],
+};
+
+export default meta;
+type Story = StoryObj<AccountCircleIconComponent>;
+
+export const Default: Story = {
+  args: { size: 'large' },
+  argTypes: {
+    size: {
+      control: 'select',
+      options: ['small', 'medium', 'large', 'extra-large', 'full'],
+      description: 'Size of icon. Property "full" means 100%',
+      table: {
+        defaultValue: { summary: 'medium' },
+      },
+    },
+  },
+};
-- 
GitLab


From c0d7bcf356a590b6af00b4c944e42f61bd36f534 Mon Sep 17 00:00:00 2001
From: Albert <Albert.Bruns@mgm-tp.com>
Date: Thu, 6 Feb 2025 14:07:06 +0100
Subject: [PATCH 30/57] OZG-7472 E2E tests

---
 ...vorgang-formular-buttons.e2e.components.ts |  8 +++-
 .../vorgang-weiterleiten.cy.ts                | 44 ++++++++++---------
 ...y-ozgcloud-button-container.component.html |  2 +-
 3 files changed, 31 insertions(+), 23 deletions(-)

diff --git a/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-formular-buttons.e2e.components.ts b/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-formular-buttons.e2e.components.ts
index 76cc3eafbe..b91293c81d 100644
--- a/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-formular-buttons.e2e.components.ts
+++ b/alfa-client/apps/alfa-e2e/src/components/vorgang/vorgang-formular-buttons.e2e.components.ts
@@ -25,10 +25,10 @@ export class VorgangFormularButtonsE2EComponent {
   private readonly abschliessenButton: string = 'abschliessen-button';
   private readonly annehmenButton: string = 'annehmen-button';
   private readonly bearbeitenButton: string = 'bearbeiten-button';
+  private readonly forwardButton: string = 'forward-by-ozgcloud-button';
   private readonly bescheidenButton: string = 'bescheiden-button';
   private readonly endgueltigLoeschenButton: string = 'endgueltig-loeschen-button';
-  private readonly loeschAnforderungZuruecknehmenButton: string =
-    'loesch-anforderung-zuruecknehmen-button';
+  private readonly loeschAnforderungZuruecknehmenButton: string = 'loesch-anforderung-zuruecknehmen-button';
   private readonly loeschenAnfordernButton: string = 'loeschen-anfordern-button';
   private readonly verwerfenButton: string = 'verwerfen-button';
   private readonly wiedereroeffnenButton: string = 'wiedereroeffnen-button';
@@ -47,6 +47,10 @@ export class VorgangFormularButtonsE2EComponent {
     return cy.getTestElement(this.bearbeitenButton);
   }
 
+  public getForwardButton() {
+    return cy.getTestElement(this.forwardButton);
+  }
+
   public getBescheidenButton() {
     return cy.getTestElement(this.bescheidenButton);
   }
diff --git a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-weiterleiten.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-weiterleiten.cy.ts
index dacafdf0ba..a99564ea6c 100644
--- a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-weiterleiten.cy.ts
+++ b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-weiterleiten.cy.ts
@@ -2,16 +2,15 @@ import { registerLocaleData } from '@angular/common';
 import localeDe from '@angular/common/locales/de';
 import localeDeExtra from '@angular/common/locales/extra/de';
 import { VorgangFormularButtonsE2EComponent } from 'apps/alfa-e2e/src/components/vorgang/vorgang-formular-buttons.e2e.components';
-import { SnackBarE2EComponent } from '../../../components/ui/snackbar.e2e.component';
+import { HeaderE2EComponent } from 'apps/alfa-e2e/src/page-objects/header.po';
 import { VorgangListE2EComponent } from '../../../components/vorgang/vorgang-list.e2e.component';
-import { VorgangE2E, VorgangMessagesE2E, VorgangStatusE2E, vorgangStatusLabelE2E } from '../../../model/vorgang';
+import { VorgangE2E } from '../../../model/vorgang';
 import { MainPage, waitForSpinnerToDisappear } from '../../../page-objects/main.po';
 import { VorgangPage } from '../../../page-objects/vorgang.po';
 import { dropCollections } from '../../../support/cypress-helper';
-import { contains, exist, haveText, notExist } from '../../../support/cypress.util';
-import { loginAsPeter, loginAsSabine } from '../../../support/user-util';
-import { buildVorgang, createVorgang, initVorgaenge, initVorgang, objectIds } from '../../../support/vorgang-util';
-import { HeaderE2EComponent } from 'apps/alfa-e2e/src/page-objects/header.po';
+import { exist, notExist } from '../../../support/cypress.util';
+import { loginAsEmil, loginAsPeter, loginAsSabine } from '../../../support/user-util';
+import { buildVorgang, createVorgang, initVorgaenge, objectIds } from '../../../support/vorgang-util';
 
 registerLocaleData(localeDe, 'de', localeDeExtra);
 
@@ -20,15 +19,14 @@ describe('Vorgang weiterleiten', () => {
   const vorgangList: VorgangListE2EComponent = mainPage.getVorgangList();
 
   const vorgangPage: VorgangPage = new VorgangPage();
-  const vorgangFormularButtons: VorgangFormularButtonsE2EComponent =
-    vorgangPage.getFormularButtons();
+  const vorgangFormularButtons: VorgangFormularButtonsE2EComponent = vorgangPage.getFormularButtons();
 
   const vorgangWeiterleiten: VorgangE2E = { ...createVorgang(), name: 'Weiterleitung' };
-  const vorgangWeiterleitenPeter: VorgangE2E = buildVorgang(objectIds[0], 'Weiterleitung Peter');
+  const vorgangWeiterleitenUnchanged: VorgangE2E = buildVorgang(objectIds[0], 'Weiterleitung Peter und Emil');
   const header: HeaderE2EComponent = new HeaderE2EComponent();
 
   before(() => {
-    initVorgaenge([vorgangWeiterleiten, vorgangWeiterleitenPeter]);
+    initVorgaenge([vorgangWeiterleiten, vorgangWeiterleitenUnchanged]);
 
     loginAsSabine();
 
@@ -45,33 +43,39 @@ describe('Vorgang weiterleiten', () => {
       vorgangList.getListItem(vorgangWeiterleiten.name).getRoot().click();
       waitForSpinnerToDisappear();
 
-      //Weiterleiten wird angezeigt
+      exist(vorgangFormularButtons.getForwardButton());
     });
 
     it('should not display Weiterleiten button in other Status', () => {
       vorgangFormularButtons.getAnnehmenButton().click();
       waitForSpinnerToDisappear();
-      //Weiterleiten wird nicht angezeigt
+      notExist(vorgangFormularButtons.getForwardButton());
 
       vorgangFormularButtons.getBearbeitenButton().click();
       waitForSpinnerToDisappear();
-      //Weiterleiten wird nicht angezeigt
-      
-      //Status zurück auf neu oder weiterer Vorgang für Peter?
+      notExist(vorgangFormularButtons.getForwardButton());
     });
 
-    it ('should not be displayed for user Peter in Status Neu', () => {
+    it('should not be displayed for user Peter in Status Neu', () => {
       header.getCurrentUserProfile().logout();
       loginAsPeter();
       waitForSpinnerToDisappear();
 
-      vorgangList.getListItem(vorgangWeiterleiten.name).getRoot().click();
+      vorgangList.getListItem(vorgangWeiterleitenUnchanged.name).getRoot().click();
       waitForSpinnerToDisappear();
 
-      //Button nicht sichtbar
+      notExist(vorgangFormularButtons.getForwardButton());
+    });
 
-    })
+    it('should not be displayed for user Emil in Status Neu', () => {
+      header.getCurrentUserProfile().logout();
+      loginAsEmil();
+      waitForSpinnerToDisappear();
+
+      vorgangList.getListItem(vorgangWeiterleitenUnchanged.name).getRoot().click();
+      waitForSpinnerToDisappear();
 
-    
+      notExist(vorgangFormularButtons.getForwardButton());
+    });
   });
 });
diff --git a/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.html b/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.html
index 415baac659..b1c828c65e 100644
--- a/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.html
+++ b/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.html
@@ -6,6 +6,6 @@
   } @else {
     <ods-button-with-spinner text="Weiterleiten" variant="outline" dataTestId="forward-by-ozgcloud-button">
       <ods-forward-icon icon />
-    </ods-button-with-spinner>
+    </ods-button-with-spinner >
   }
 }
-- 
GitLab


From 9b3083f0a941e5292865347d7edf6029befdc9c1 Mon Sep 17 00:00:00 2001
From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com>
Date: Thu, 6 Feb 2025 14:11:51 +0100
Subject: [PATCH 31/57] OZG-7474 Replace assign user profile button

---
 ...er-profile-button-container.component.html | 20 +++++++++++--------
 ...profile-button-container.component.spec.ts |  8 +++++---
 .../src/lib/user-profile.module.ts            |  4 ++++
 3 files changed, 21 insertions(+), 11 deletions(-)

diff --git a/alfa-client/libs/user-profile/src/lib/assign-user-profile-button-container/assign-user-profile-button-container.component.html b/alfa-client/libs/user-profile/src/lib/assign-user-profile-button-container/assign-user-profile-button-container.component.html
index ac709eb5dc..6469c2a6d8 100644
--- a/alfa-client/libs/user-profile/src/lib/assign-user-profile-button-container/assign-user-profile-button-container.component.html
+++ b/alfa-client/libs/user-profile/src/lib/assign-user-profile-button-container/assign-user-profile-button-container.component.html
@@ -23,11 +23,15 @@
     unter der Lizenz sind dem Lizenztext zu entnehmen.
 
 -->
-<ozgcloud-icon-button-with-spinner
-  *ngIf="vorgang | hasLink: linkRel.ASSIGN"
-  svgIcon="account_outline"
-  toolTip="Bearbeiter zuordnen"
-  (clickEmitter)="showUserProfileSearch()"
-  data-test-id="assign-user-profile-icon-button"
->
-</ozgcloud-icon-button-with-spinner>
+@if (vorgang | hasLink: linkRel.ASSIGN) {
+  <ods-button-with-spinner
+    svgIcon="account_outline"
+    tooltip="Bearbeiter zuordnen"
+    data-test-id="assign-user-profile-icon-button"
+    variant="icon"
+    size="fit"
+    (clickEmitter)="showUserProfileSearch()"
+  >
+    <ods-account-circle-icon icon class="fill-text" />
+  </ods-button-with-spinner>
+}
diff --git a/alfa-client/libs/user-profile/src/lib/assign-user-profile-button-container/assign-user-profile-button-container.component.spec.ts b/alfa-client/libs/user-profile/src/lib/assign-user-profile-button-container/assign-user-profile-button-container.component.spec.ts
index 5f82315849..531805961b 100644
--- a/alfa-client/libs/user-profile/src/lib/assign-user-profile-button-container/assign-user-profile-button-container.component.spec.ts
+++ b/alfa-client/libs/user-profile/src/lib/assign-user-profile-button-container/assign-user-profile-button-container.component.spec.ts
@@ -21,12 +21,13 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { HasLinkPipe } from '@alfa-client/tech-shared';
 import { mock } from '@alfa-client/test-utils';
-import { IconButtonWithSpinnerComponent } from '@alfa-client/ui';
 import { UserProfileService } from '@alfa-client/user-profile-shared';
 import { VorgangHeaderLinkRel } from '@alfa-client/vorgang-shared';
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { ButtonWithSpinnerComponent } from '@ods/component';
+import { AccountCircleIconComponent } from '@ods/system';
 import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang';
 import { MockComponent } from 'ng-mocks';
 import { AssignUserProfileButtonContainerComponent } from './assign-user-profile-button-container.component';
@@ -44,7 +45,8 @@ describe('AssignUserProfileButtonContainerComponent', () => {
       declarations: [
         AssignUserProfileButtonContainerComponent,
         HasLinkPipe,
-        MockComponent(IconButtonWithSpinnerComponent),
+        MockComponent(ButtonWithSpinnerComponent),
+        MockComponent(AccountCircleIconComponent),
       ],
       providers: [
         {
diff --git a/alfa-client/libs/user-profile/src/lib/user-profile.module.ts b/alfa-client/libs/user-profile/src/lib/user-profile.module.ts
index 11ab2e9213..408ace4cfb 100644
--- a/alfa-client/libs/user-profile/src/lib/user-profile.module.ts
+++ b/alfa-client/libs/user-profile/src/lib/user-profile.module.ts
@@ -27,7 +27,9 @@ import { UserProfileSharedModule } from '@alfa-client/user-profile-shared';
 import { CommonModule } from '@angular/common';
 import { NgModule } from '@angular/core';
 import { RouterModule } from '@angular/router';
+import { ButtonWithSpinnerComponent } from '@ods/component';
 import {
+  AccountCircleIconComponent,
   DropdownMenuButtonItemComponent,
   DropdownMenuComponent,
   DropdownMenuItemComponent,
@@ -69,6 +71,8 @@ import { UserProfileComponent } from './user-profile/user-profile.component';
     DropdownMenuComponent,
     DropdownMenuItemComponent,
     DropdownMenuButtonItemComponent,
+    ButtonWithSpinnerComponent,
+    AccountCircleIconComponent,
     TooltipDirective,
   ],
   declarations: [
-- 
GitLab


From e978e9cbeca8992641c8f5edebc6dce7a405a929 Mon Sep 17 00:00:00 2001
From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com>
Date: Thu, 6 Feb 2025 15:25:01 +0100
Subject: [PATCH 32/57] OZG-7474 Fix ods system imports

---
 alfa-client/libs/design-system/src/index.ts                   | 2 +-
 .../undo-request-deletion-icon.component.spec.ts              | 0
 .../undo-request-deletion-icon.component.ts                   | 0
 .../undo-request-deletion-icon.stories.ts                     | 0
 .../loesch-anforderung/src/lib/loesch-anforderung.module.ts   | 4 +---
 5 files changed, 2 insertions(+), 4 deletions(-)
 rename alfa-client/libs/design-system/src/lib/icons/{undo-request-delition-icon => undo-request-deletion-icon}/undo-request-deletion-icon.component.spec.ts (100%)
 rename alfa-client/libs/design-system/src/lib/icons/{undo-request-delition-icon => undo-request-deletion-icon}/undo-request-deletion-icon.component.ts (100%)
 rename alfa-client/libs/design-system/src/lib/icons/{undo-request-delition-icon => undo-request-deletion-icon}/undo-request-deletion-icon.stories.ts (100%)

diff --git a/alfa-client/libs/design-system/src/index.ts b/alfa-client/libs/design-system/src/index.ts
index 2734b503f2..ce3c4167e1 100644
--- a/alfa-client/libs/design-system/src/index.ts
+++ b/alfa-client/libs/design-system/src/index.ts
@@ -77,7 +77,7 @@ export * from './lib/icons/send-icon/send-icon.component';
 export * from './lib/icons/spinner-icon/spinner-icon.component';
 export * from './lib/icons/stamp-icon/stamp-icon.component';
 export * from './lib/icons/statistic-icon/statistic-icon.component';
-export * from './lib/icons/undo-request-delition-icon/undo-request-deletion-icon.stories';
+export * from './lib/icons/undo-request-deletion-icon/undo-request-deletion-icon.component';
 export * from './lib/icons/update-icon/update-icon.component';
 export * from './lib/icons/user-icon/user-icon.component';
 export * from './lib/icons/users-icon/users-icon.component';
diff --git a/alfa-client/libs/design-system/src/lib/icons/undo-request-delition-icon/undo-request-deletion-icon.component.spec.ts b/alfa-client/libs/design-system/src/lib/icons/undo-request-deletion-icon/undo-request-deletion-icon.component.spec.ts
similarity index 100%
rename from alfa-client/libs/design-system/src/lib/icons/undo-request-delition-icon/undo-request-deletion-icon.component.spec.ts
rename to alfa-client/libs/design-system/src/lib/icons/undo-request-deletion-icon/undo-request-deletion-icon.component.spec.ts
diff --git a/alfa-client/libs/design-system/src/lib/icons/undo-request-delition-icon/undo-request-deletion-icon.component.ts b/alfa-client/libs/design-system/src/lib/icons/undo-request-deletion-icon/undo-request-deletion-icon.component.ts
similarity index 100%
rename from alfa-client/libs/design-system/src/lib/icons/undo-request-delition-icon/undo-request-deletion-icon.component.ts
rename to alfa-client/libs/design-system/src/lib/icons/undo-request-deletion-icon/undo-request-deletion-icon.component.ts
diff --git a/alfa-client/libs/design-system/src/lib/icons/undo-request-delition-icon/undo-request-deletion-icon.stories.ts b/alfa-client/libs/design-system/src/lib/icons/undo-request-deletion-icon/undo-request-deletion-icon.stories.ts
similarity index 100%
rename from alfa-client/libs/design-system/src/lib/icons/undo-request-delition-icon/undo-request-deletion-icon.stories.ts
rename to alfa-client/libs/design-system/src/lib/icons/undo-request-deletion-icon/undo-request-deletion-icon.stories.ts
diff --git a/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung.module.ts b/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung.module.ts
index ebe9b6b1e9..46602fb2d9 100644
--- a/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung.module.ts
+++ b/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung.module.ts
@@ -28,9 +28,7 @@ import { VorgangSharedModule } from '@alfa-client/vorgang-shared';
 import { CommonModule } from '@angular/common';
 import { NgModule } from '@angular/core';
 import { ButtonWithSpinnerComponent } from '@ods/component';
-import { DeleteFinallyIconComponent } from '../../../design-system/src/lib/icons/delete-finally-icon/delete-finally-icon.component';
-import { RequestDeletionIconComponent } from '../../../design-system/src/lib/icons/request-deletion-icon/request-deletion-icon.component';
-import { UndoRequestDeletionIconComponent } from '../../../design-system/src/lib/icons/undo-request-delition-icon/undo-request-deletion-icon.component';
+import { DeleteFinallyIconComponent, RequestDeletionIconComponent, UndoRequestDeletionIconComponent } from '@ods/system';
 import { EndgueltigLoeschenButtonContainerComponent } from './endgueltig-loeschen-button-container/endgueltig-loeschen-button-container.component';
 import { EndgueltigLoeschenButtonComponent } from './endgueltig-loeschen-button-container/endgueltig-loeschen-button/endgueltig-loeschen-button.component';
 import { LoeschAnforderungZuruecknehmenButtonContainerComponent } from './loesch-anforderung-zuruecknehmen-button-container/loesch-anforderung-zuruecknehmen-button-container.component';
-- 
GitLab


From 17fb21e7d431d37d57c4dad12096674f11e04ae3 Mon Sep 17 00:00:00 2001
From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com>
Date: Thu, 6 Feb 2025 16:12:59 +0100
Subject: [PATCH 33/57] OZG-7474 fix unit tests

---
 ...ung-zuruecknehmen-button.component.spec.ts |  2 +-
 .../postfach-mail-button.component.html       | 72 +++++++++----------
 .../postfach-mail-button.component.spec.ts    | 29 +++-----
 .../libs/postfach/src/lib/postfach.module.ts  | 10 +--
 4 files changed, 52 insertions(+), 61 deletions(-)

diff --git a/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung-zuruecknehmen-button-container/loesch-anforderung-zuruecknehmen-button/loesch-anforderung-zuruecknehmen-button.component.spec.ts b/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung-zuruecknehmen-button-container/loesch-anforderung-zuruecknehmen-button/loesch-anforderung-zuruecknehmen-button.component.spec.ts
index 20256b7fae..f1d0a15c80 100644
--- a/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung-zuruecknehmen-button-container/loesch-anforderung-zuruecknehmen-button/loesch-anforderung-zuruecknehmen-button.component.spec.ts
+++ b/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung-zuruecknehmen-button-container/loesch-anforderung-zuruecknehmen-button/loesch-anforderung-zuruecknehmen-button.component.spec.ts
@@ -24,7 +24,7 @@
 import { existsAsHtmlElement, notExistsAsHtmlElement } from '@alfa-client/test-utils';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { ButtonWithSpinnerComponent } from '@ods/component';
-import { UndoRequestDeletionIconComponent } from 'libs/design-system/src/lib/icons/undo-request-delition-icon/undo-request-deletion-icon.component';
+import { UndoRequestDeletionIconComponent } from '@ods/system';
 import { getDataTestIdOf } from 'libs/tech-shared/test/data-test';
 import { MockComponent } from 'ng-mocks';
 import { LoeschAnforderungZuruecknehmenButtonComponent } from './loesch-anforderung-zuruecknehmen-button.component';
diff --git a/alfa-client/libs/postfach/src/lib/postfach-mail-button-container/postfach-mail-button/postfach-mail-button.component.html b/alfa-client/libs/postfach/src/lib/postfach-mail-button-container/postfach-mail-button/postfach-mail-button.component.html
index 22b79691af..b47984d0cb 100644
--- a/alfa-client/libs/postfach/src/lib/postfach-mail-button-container/postfach-mail-button/postfach-mail-button.component.html
+++ b/alfa-client/libs/postfach/src/lib/postfach-mail-button-container/postfach-mail-button/postfach-mail-button.component.html
@@ -23,41 +23,39 @@
     unter der Lizenz sind dem Lizenztext zu entnehmen.
 
 -->
-<ng-container
-  *ngIf="
-    postfachMailListStateResource.resource | hasLink: postfachMailListLinkRel.SEND_POSTFACH_MAIL
-  "
->
+@if (postfachMailListStateResource.resource | hasLink: postfachMailListLinkRel.SEND_POSTFACH_MAIL) {
   <!-- TODO Aufteilen in 3 einzelne Komponenten -->
-  <ozgcloud-stroked-button-with-spinner
-    *ngIf="!showAsIconButton && text && !toolTip"
-    data-test-id="create-mail-button-with-text"
-    [showSpinner]="pendingSendPostfachMailCommand.resource | hasLink: commandLinkRel.UPDATE"
-    class="create-button"
-    [text]="text"
-    icon="add"
-    (clickEmitter)="openPostfachNachrichtenDialog.emit()"
-  >
-  </ozgcloud-stroked-button-with-spinner>
-
-  <ozgcloud-stroked-button-with-spinner
-    *ngIf="!showAsIconButton && !text && toolTip"
-    data-test-id="create-mail-button-without-text"
-    [showSpinner]="pendingSendPostfachMailCommand.resource | hasLink: commandLinkRel.UPDATE"
-    class="create-button"
-    [toolTip]="toolTip"
-    icon="add"
-    (clickEmitter)="openPostfachNachrichtenDialog.emit()"
-  >
-  </ozgcloud-stroked-button-with-spinner>
-
-  <ozgcloud-icon-button-with-spinner
-    *ngIf="showAsIconButton"
-    data-test-id="send-mail-icon-button"
-    [showSpinner]="pendingSendPostfachMailCommand.resource | hasLink: commandLinkRel.UPDATE"
-    icon="mail_outline"
-    toolTip="Neue Nachricht erstellen"
-    (clickEmitter)="openPostfachNachrichtenDialog.emit()"
-  >
-  </ozgcloud-icon-button-with-spinner>
-</ng-container>
+  @if (showAsIconButton) {
+    <ods-button
+      data-test-id="send-mail-icon-button"
+      [isLoading]="pendingSendPostfachMailCommand.resource | hasLink: commandLinkRel.UPDATE"
+      tooltip="Neue Nachricht erstellen"
+      variant="icon"
+      size="fit"
+      (clickEmitter)="openPostfachNachrichtenDialog.emit()"
+    >
+      <ods-mailbox-icon icon class="stroke-text" />
+    </ods-button>
+  } @else if (text && !toolTip) {
+    <ods-button
+      data-test-id="create-mail-button-with-text"
+      [isLoading]="pendingSendPostfachMailCommand.resource | hasLink: commandLinkRel.UPDATE"
+      [text]="text"
+      variant="outline"
+      (clickEmitter)="openPostfachNachrichtenDialog.emit()"
+    >
+      <ods-plus-icon icon class="fill-primary" />
+    </ods-button>
+  } @else if (!text && toolTip) {
+    <ods-button
+      data-test-id="create-mail-button-without-text"
+      [isLoading]="pendingSendPostfachMailCommand.resource | hasLink: commandLinkRel.UPDATE"
+      [tooltip]="toolTip"
+      variant="icon"
+      size="fit"
+      (clickEmitter)="openPostfachNachrichtenDialog.emit()"
+    >
+      <ods-plus-icon icon class="fill-primary" />
+    </ods-button>
+  }
+}
diff --git a/alfa-client/libs/postfach/src/lib/postfach-mail-button-container/postfach-mail-button/postfach-mail-button.component.spec.ts b/alfa-client/libs/postfach/src/lib/postfach-mail-button-container/postfach-mail-button/postfach-mail-button.component.spec.ts
index 3fbf0c1e11..d02565a847 100644
--- a/alfa-client/libs/postfach/src/lib/postfach-mail-button-container/postfach-mail-button/postfach-mail-button.component.spec.ts
+++ b/alfa-client/libs/postfach/src/lib/postfach-mail-button-container/postfach-mail-button/postfach-mail-button.component.spec.ts
@@ -21,18 +21,15 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-import { faker } from '@faker-js/faker';
 import { PostfachMailListLinkRel } from '@alfa-client/postfach-shared';
 import { EMPTY_STRING, HasLinkPipe, createStateResource } from '@alfa-client/tech-shared';
-import {
-  IconButtonWithSpinnerComponent,
-  OzgcloudStrokedButtonWithSpinnerComponent,
-} from '@alfa-client/ui';
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { faker } from '@faker-js/faker';
+import { ButtonComponent, MailboxIconComponent, PlusIconComponent, TooltipDirective } from '@ods/system';
 import { createCommandResource } from 'libs/command-shared/test/command';
 import { createPostfachMailListResource } from 'libs/postfach-shared/test/postfach';
 import { getDataTestIdOf } from 'libs/tech-shared/test/data-test';
-import { MockComponent } from 'ng-mocks';
+import { MockComponent, MockDirective } from 'ng-mocks';
 import { PostfachMailButtonComponent } from './postfach-mail-button.component';
 
 describe('PostfachMailButtonComponent', () => {
@@ -48,8 +45,10 @@ describe('PostfachMailButtonComponent', () => {
       declarations: [
         PostfachMailButtonComponent,
         HasLinkPipe,
-        MockComponent(IconButtonWithSpinnerComponent),
-        MockComponent(OzgcloudStrokedButtonWithSpinnerComponent),
+        MockComponent(ButtonComponent),
+        MockComponent(PlusIconComponent),
+        MockComponent(MailboxIconComponent),
+        MockDirective(TooltipDirective),
       ],
     }).compileComponents();
   });
@@ -77,9 +76,7 @@ describe('PostfachMailButtonComponent', () => {
       });
 
       it('should be hidden', () => {
-        component.postfachMailListStateResource = createStateResource(
-          createPostfachMailListResource(),
-        );
+        component.postfachMailListStateResource = createStateResource(createPostfachMailListResource());
 
         fixture.detectChanges();
         const buttonElement = fixture.nativeElement.querySelector(sendMailButtonWithText);
@@ -108,9 +105,7 @@ describe('PostfachMailButtonComponent', () => {
       });
 
       it('should be hidden', () => {
-        component.postfachMailListStateResource = createStateResource(
-          createPostfachMailListResource(),
-        );
+        component.postfachMailListStateResource = createStateResource(createPostfachMailListResource());
 
         fixture.detectChanges();
         const buttonElement = fixture.nativeElement.querySelector(sendMailButtonWithoutText);
@@ -139,9 +134,7 @@ describe('PostfachMailButtonComponent', () => {
     });
 
     it('should be hidden', () => {
-      component.postfachMailListStateResource = createStateResource(
-        createPostfachMailListResource(),
-      );
+      component.postfachMailListStateResource = createStateResource(createPostfachMailListResource());
 
       fixture.detectChanges();
       const buttonElement = fixture.nativeElement.querySelector(sendMailIconButton);
diff --git a/alfa-client/libs/postfach/src/lib/postfach.module.ts b/alfa-client/libs/postfach/src/lib/postfach.module.ts
index 59217f49b5..e6030c3cc3 100644
--- a/alfa-client/libs/postfach/src/lib/postfach.module.ts
+++ b/alfa-client/libs/postfach/src/lib/postfach.module.ts
@@ -29,6 +29,7 @@ import { VorgangSharedUiModule } from '@alfa-client/vorgang-shared-ui';
 import { CommonModule } from '@angular/common';
 import { NgModule } from '@angular/core';
 import { RouterModule, Routes } from '@angular/router';
+import { ButtonComponent, MailboxIconComponent, PlusIconComponent } from '@ods/system';
 import { PostfachMailButtonContainerComponent } from './postfach-mail-button-container/postfach-mail-button-container.component';
 import { PostfachMailButtonComponent } from './postfach-mail-button-container/postfach-mail-button/postfach-mail-button.component';
 import { PostfachMailFormComponent } from './postfach-mail-form/postfach-mail-form.component';
@@ -67,6 +68,9 @@ const routes: Routes = [
     UserProfileModule,
     VorgangSharedUiModule,
     BinaryFileModule,
+    ButtonComponent,
+    PlusIconComponent,
+    MailboxIconComponent,
   ],
   declarations: [
     PostfachMailListContainerComponent,
@@ -90,11 +94,7 @@ const routes: Routes = [
     PostfachNachrichtAttachmentContainerComponent,
     PostfachNachrichtReplyEditorContainerComponent,
   ],
-  exports: [
-    PostfachMailListContainerComponent,
-    PostfachMailButtonContainerComponent,
-    PostfachMailFormComponent,
-  ],
+  exports: [PostfachMailListContainerComponent, PostfachMailButtonContainerComponent, PostfachMailFormComponent],
   providers: [
     {
       provide: ON_PAGE,
-- 
GitLab


From bdf4cbdfba3cde1d557983ef0e2ca6b87b2bc89a Mon Sep 17 00:00:00 2001
From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com>
Date: Thu, 6 Feb 2025 16:46:00 +0100
Subject: [PATCH 34/57] OZG-7474 Fix more ods system imports

---
 alfa-client/libs/design-system/src/index.ts          |  2 ++
 .../dropdown-menu-link-item.component.ts             |  2 +-
 .../src/lib/help-menu/help-menu.component.spec.ts    |  9 +++++++--
 .../src/lib/user-assistance.module.ts                |  9 +++++++--
 .../user-settings/src/lib/user-settings.module.ts    | 12 ++----------
 .../vorgang-detail/src/lib/vorgang-detail.module.ts  |  4 ++--
 .../wiedervorlage/src/lib/wiedervorlage.module.ts    |  3 +--
 .../src/lib/zustaendige-stelle.module.ts             |  4 ++--
 8 files changed, 24 insertions(+), 21 deletions(-)

diff --git a/alfa-client/libs/design-system/src/index.ts b/alfa-client/libs/design-system/src/index.ts
index ce3c4167e1..638624f647 100644
--- a/alfa-client/libs/design-system/src/index.ts
+++ b/alfa-client/libs/design-system/src/index.ts
@@ -30,6 +30,7 @@ export * from './lib/button-card/button-card.component';
 export * from './lib/button/button.component';
 export * from './lib/dropdown-menu/dropdown-menu-button-item/dropdown-menu-button-item.component';
 export * from './lib/dropdown-menu/dropdown-menu-item/dropdown-menu-item.component';
+export * from './lib/dropdown-menu/dropdown-menu-link-item/dropdown-menu-link-item.component';
 export * from './lib/dropdown-menu/dropdown-menu-text-item/dropdown-menu-text-item.component';
 export * from './lib/dropdown-menu/dropdown-menu/dropdown-menu.component';
 export * from './lib/form/button-toggle/button-toggle.component';
@@ -74,6 +75,7 @@ export * from './lib/icons/request-deletion-icon/request-deletion-icon.component
 export * from './lib/icons/save-icon/save-icon.component';
 export * from './lib/icons/search-icon/search-icon.component';
 export * from './lib/icons/send-icon/send-icon.component';
+export * from './lib/icons/settings-icon/settings-icon.component';
 export * from './lib/icons/spinner-icon/spinner-icon.component';
 export * from './lib/icons/stamp-icon/stamp-icon.component';
 export * from './lib/icons/statistic-icon/statistic-icon.component';
diff --git a/alfa-client/libs/design-system/src/lib/dropdown-menu/dropdown-menu-link-item/dropdown-menu-link-item.component.ts b/alfa-client/libs/design-system/src/lib/dropdown-menu/dropdown-menu-link-item/dropdown-menu-link-item.component.ts
index 1d0258ddbc..dbc8d0b0aa 100644
--- a/alfa-client/libs/design-system/src/lib/dropdown-menu/dropdown-menu-link-item/dropdown-menu-link-item.component.ts
+++ b/alfa-client/libs/design-system/src/lib/dropdown-menu/dropdown-menu-link-item/dropdown-menu-link-item.component.ts
@@ -1,6 +1,6 @@
 import { Component, Input } from '@angular/core';
-import { LinkComponent } from '@ods/system';
 import { OpenLinkIconComponent } from '../../icons/open-link-icon/open-link-icon.component';
+import { LinkComponent } from '../../link/link.component';
 
 @Component({
   selector: 'ods-dropdown-menu-link-item',
diff --git a/alfa-client/libs/user-assistance/src/lib/help-menu/help-menu.component.spec.ts b/alfa-client/libs/user-assistance/src/lib/help-menu/help-menu.component.spec.ts
index 80c975b0d3..ba0e572d4e 100644
--- a/alfa-client/libs/user-assistance/src/lib/help-menu/help-menu.component.spec.ts
+++ b/alfa-client/libs/user-assistance/src/lib/help-menu/help-menu.component.spec.ts
@@ -27,11 +27,16 @@ import { getElementFromDomRoot } from '@alfa-client/test-utils';
 import { UiModule } from '@alfa-client/ui';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { NoopAnimationsModule } from '@angular/platform-browser/animations';
-import { DropdownMenuComponent, DropdownMenuTextItemComponent, FileIconComponent, HelpIconComponent } from '@ods/system';
+import {
+  DropdownMenuComponent,
+  DropdownMenuLinkItemComponent,
+  DropdownMenuTextItemComponent,
+  FileIconComponent,
+  HelpIconComponent,
+} from '@ods/system';
 import { getDataTestIdOf } from 'libs/tech-shared/test/data-test';
 import { MockComponent } from 'ng-mocks';
 import { createApiRootResource } from '../../../../../libs/api-root-shared/test/api-root';
-import { DropdownMenuLinkItemComponent } from '../../../../design-system/src/lib/dropdown-menu/dropdown-menu-link-item/dropdown-menu-link-item.component';
 import { DocumentationComponent } from './documentation/documentation.component';
 import { HelpButtonComponent } from './help-button/help-button.component';
 import { HelpMenuComponent } from './help-menu.component';
diff --git a/alfa-client/libs/user-assistance/src/lib/user-assistance.module.ts b/alfa-client/libs/user-assistance/src/lib/user-assistance.module.ts
index e75061efe2..1eda492b4f 100644
--- a/alfa-client/libs/user-assistance/src/lib/user-assistance.module.ts
+++ b/alfa-client/libs/user-assistance/src/lib/user-assistance.module.ts
@@ -25,8 +25,13 @@ import { TechSharedModule } from '@alfa-client/tech-shared';
 import { UiModule } from '@alfa-client/ui';
 import { CommonModule } from '@angular/common';
 import { NgModule } from '@angular/core';
-import { DropdownMenuComponent, DropdownMenuTextItemComponent, FileIconComponent, HelpIconComponent } from '@ods/system';
-import { DropdownMenuLinkItemComponent } from '../../../design-system/src/lib/dropdown-menu/dropdown-menu-link-item/dropdown-menu-link-item.component';
+import {
+  DropdownMenuComponent,
+  DropdownMenuLinkItemComponent,
+  DropdownMenuTextItemComponent,
+  FileIconComponent,
+  HelpIconComponent,
+} from '@ods/system';
 import { DocumentationComponent } from './help-menu/documentation/documentation.component';
 import { OpenDocumentationButtonComponent } from './help-menu/documentation/open-documentation-button/open-documentation-button.component';
 import { HelpButtonComponent } from './help-menu/help-button/help-button.component';
diff --git a/alfa-client/libs/user-settings/src/lib/user-settings.module.ts b/alfa-client/libs/user-settings/src/lib/user-settings.module.ts
index 6dbf5e4ecc..bafeb748dc 100644
--- a/alfa-client/libs/user-settings/src/lib/user-settings.module.ts
+++ b/alfa-client/libs/user-settings/src/lib/user-settings.module.ts
@@ -25,8 +25,7 @@ import { UiModule } from '@alfa-client/ui';
 import { UserSettingsSharedModule } from '@alfa-client/user-settings-shared';
 import { CommonModule } from '@angular/common';
 import { NgModule } from '@angular/core';
-import { CloseIconComponent, DropdownMenuComponent } from '@ods/system';
-import { SettingsIconComponent } from '../../../design-system/src/lib/icons/settings-icon/settings-icon.component';
+import { CloseIconComponent, DropdownMenuComponent, SettingsIconComponent } from '@ods/system';
 import { UserSettingsContainerComponent } from './user-settings-container/user-settings-container.component';
 import { UserSettingsDarkmodeContainerComponent } from './user-settings-container/user-settings/user-settings-dropdown/user-settings-darkmode-container/user-settings-darkmode-container.component';
 import { UserSettingsDarkmodeComponent } from './user-settings-container/user-settings/user-settings-dropdown/user-settings-darkmode-container/user-settings-darkmode/user-settings-darkmode.component';
@@ -36,14 +35,7 @@ import { UserSettingsEmailBenachrichtigungComponent } from './user-settings-cont
 import { UserSettingsComponent } from './user-settings-container/user-settings/user-settings.component';
 
 @NgModule({
-  imports: [
-    CommonModule,
-    UiModule,
-    UserSettingsSharedModule,
-    DropdownMenuComponent,
-    CloseIconComponent,
-    SettingsIconComponent,
-  ],
+  imports: [CommonModule, UiModule, UserSettingsSharedModule, DropdownMenuComponent, CloseIconComponent, SettingsIconComponent],
   declarations: [
     UserSettingsContainerComponent,
     UserSettingsEmailBenachrichtigungComponent,
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts
index faa566e49a..dc75d98df3 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts
@@ -61,8 +61,10 @@ import {
   CheckCircleIconComponent,
   CheckIconComponent,
   CloseIconComponent,
+  DiscardIconComponent,
   DropdownMenuComponent,
   DropdownMenuTextItemComponent,
+  EditIconComponent,
   ErrorMessageComponent,
   ExclamationIconComponent,
   FileIconComponent,
@@ -74,8 +76,6 @@ import {
   StampIconComponent,
   TooltipDirective,
 } from '@ods/system';
-import { DiscardIconComponent } from '../../../design-system/src/lib/icons/discard-icon/discard-icon.component';
-import { EditIconComponent } from '../../../design-system/src/lib/icons/edit-icon/edit-icon.component';
 import { AktenzeichenEditDialogComponent } from './aktenzeichen-edit-dialog/aktenzeichen-edit-dialog.component';
 import { AktenzeichenEditableComponent } from './aktenzeichen-editable/aktenzeichen-editable.component';
 import { AbschliessenButtonComponent } from './buttons/abschliessen-button/abschliessen-button.component';
diff --git a/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage.module.ts b/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage.module.ts
index 123611852c..df9bf418c2 100644
--- a/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage.module.ts
+++ b/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage.module.ts
@@ -31,8 +31,7 @@ import { CommonModule, DatePipe } from '@angular/common';
 import { NgModule } from '@angular/core';
 import { RouterModule, Routes } from '@angular/router';
 import { ButtonWithSpinnerComponent } from '@ods/component';
-import { PlusIconComponent, TooltipDirective } from '@ods/system';
-import { UpdateIconComponent } from '../../../design-system/src/lib/icons/update-icon/update-icon.component';
+import { PlusIconComponent, TooltipDirective, UpdateIconComponent } from '@ods/system';
 import { CreateWiedervorlageButtonContainerComponent } from './create-wiedervorlage-button-container/create-wiedervorlage-button-container.component';
 import { ErledigenButtonContainerComponent } from './erledigen-button-container/erledigen-button-container.component';
 import { SubmitWiedervorlageButtonComponent } from './submit-wiedervorlage-button/submit-wiedervorlage-button.component';
diff --git a/alfa-client/libs/zustaendige-stelle/src/lib/zustaendige-stelle.module.ts b/alfa-client/libs/zustaendige-stelle/src/lib/zustaendige-stelle.module.ts
index 098801b4da..0ca329814a 100644
--- a/alfa-client/libs/zustaendige-stelle/src/lib/zustaendige-stelle.module.ts
+++ b/alfa-client/libs/zustaendige-stelle/src/lib/zustaendige-stelle.module.ts
@@ -28,14 +28,14 @@ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
 import {
   ButtonComponent,
   CloseIconComponent,
+  EditIconComponent,
   ExternalUnitIconComponent,
   InstantSearchComponent,
   OfficeIconComponent,
+  PublicAdministrationIconComponent,
   SearchIconComponent,
 } from '@ods/system';
 import { ZustaendigeStelleSharedModule } from 'libs/zustaendige-stelle-shared/src/lib/zustaendige-stelle-shared.module';
-import { EditIconComponent } from '../../../design-system/src/lib/icons/edit-icon/edit-icon.component';
-import { PublicAdministrationIconComponent } from '../../../design-system/src/lib/icons/public-administration-icon/public-administration-icon.component';
 import { EditZustaendigeStelleButtonComponent } from './edit-zustaendige-stelle-button/edit-zustaendige-stelle-button.component';
 import { SearchExterneFachstelleContainerComponent } from './search-externe-fachstelle-container/search-externe-fachstelle-container.component';
 import { OrganisationsEinheitComponent } from './search-organisations-einheit-container/organisations-einheit/organisations-einheit.component';
-- 
GitLab


From 1391bb23c7d85f110bd0c247b801bb2700b312f1 Mon Sep 17 00:00:00 2001
From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com>
Date: Fri, 7 Feb 2025 08:45:49 +0100
Subject: [PATCH 35/57] OZG-7474 Adjust weiterleiten button

---
 ...orward-by-ozgcloud-button-container.component.html | 11 ++++++++---
 ...ard-by-ozgcloud-button-container.component.spec.ts | 10 +++++++---
 .../forward-by-ozgcloud-button-container.component.ts |  4 ++--
 3 files changed, 17 insertions(+), 8 deletions(-)

diff --git a/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.html b/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.html
index b1c828c65e..729b06b22c 100644
--- a/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.html
+++ b/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.html
@@ -1,11 +1,16 @@
 @if (vorgangWithEingang | hasLink: vorgangWithEingangLinkRel.FORWARD_BY_OZGCLOUD) {
   @if (showAsIconButton) {
-    <ods-button-with-spinner variant="icon" size="fit" dataTestId="forward-by-ozgcloud-icon-button">
-      <ods-forward-icon icon />
+    <ods-button-with-spinner
+      tooltip="Vorgang weiterleiten"
+      variant="icon"
+      size="fit"
+      dataTestId="forward-by-ozgcloud-icon-button"
+    >
+      <ods-forward-icon icon class="fill-text" />
     </ods-button-with-spinner>
   } @else {
     <ods-button-with-spinner text="Weiterleiten" variant="outline" dataTestId="forward-by-ozgcloud-button">
       <ods-forward-icon icon />
-    </ods-button-with-spinner >
+    </ods-button-with-spinner>
   }
 }
diff --git a/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.spec.ts b/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.spec.ts
index 5a38308bdc..8b978c4749 100644
--- a/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.spec.ts
+++ b/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.spec.ts
@@ -2,10 +2,10 @@ import { existsAsHtmlElement, notExistsAsHtmlElement } from '@alfa-client/test-u
 import { VorgangWithEingangLinkRel } from '@alfa-client/vorgang-shared';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { ButtonWithSpinnerComponent } from '@ods/component';
-import { ForwardIconComponent } from '@ods/system';
+import { ForwardIconComponent, TooltipDirective } from '@ods/system';
 import { getDataTestIdAttributeOf } from 'libs/tech-shared/test/data-test';
 import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang';
-import { MockComponent } from 'ng-mocks';
+import { MockComponent, MockDirective } from 'ng-mocks';
 import { ForwardByOzgcloudButtonContainerComponent } from './forward-by-ozgcloud-button-container.component';
 
 describe('ForwardByOzgcloudButtonContainerComponent', () => {
@@ -18,7 +18,11 @@ describe('ForwardByOzgcloudButtonContainerComponent', () => {
   beforeEach(async () => {
     await TestBed.configureTestingModule({
       imports: [ForwardByOzgcloudButtonContainerComponent],
-      declarations: [MockComponent(ButtonWithSpinnerComponent), MockComponent(ForwardIconComponent)],
+      declarations: [
+        MockComponent(ButtonWithSpinnerComponent),
+        MockComponent(ForwardIconComponent),
+        MockDirective(TooltipDirective),
+      ],
     }).compileComponents();
 
     fixture = TestBed.createComponent(ForwardByOzgcloudButtonContainerComponent);
diff --git a/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.ts b/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.ts
index 4316c3ee5f..a2b119c804 100644
--- a/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.ts
+++ b/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.ts
@@ -3,12 +3,12 @@ import { VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-cli
 import { CommonModule } from '@angular/common';
 import { Component, Input } from '@angular/core';
 import { ButtonWithSpinnerComponent } from '@ods/component';
-import { ForwardIconComponent } from '@ods/system';
+import { ForwardIconComponent, TooltipDirective } from '@ods/system';
 
 @Component({
   selector: 'alfa-forward-by-ozgcloud-button-container',
   standalone: true,
-  imports: [CommonModule, TechSharedModule, ButtonWithSpinnerComponent, ForwardIconComponent],
+  imports: [CommonModule, TechSharedModule, ButtonWithSpinnerComponent, ForwardIconComponent, TooltipDirective],
   templateUrl: './forward-by-ozgcloud-button-container.component.html',
 })
 export class ForwardByOzgcloudButtonContainerComponent {
-- 
GitLab


From c6a546f345e0a55c0ff8a7a63e65083cb32d993b Mon Sep 17 00:00:00 2001
From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com>
Date: Fri, 7 Feb 2025 09:49:25 +0100
Subject: [PATCH 36/57] OZG-7474 Add arrow left icon

---
 alfa-client/libs/design-system/src/index.ts   |  1 +
 .../arrow-left-icon.component.spec.ts         | 21 +++++++++++++++
 .../arrow-left-icon.component.ts              | 25 +++++++++++++++++
 .../arrow-left.icon.stories.ts                | 27 +++++++++++++++++++
 4 files changed, 74 insertions(+)
 create mode 100644 alfa-client/libs/design-system/src/lib/icons/arrow-left-icon/arrow-left-icon.component.spec.ts
 create mode 100644 alfa-client/libs/design-system/src/lib/icons/arrow-left-icon/arrow-left-icon.component.ts
 create mode 100644 alfa-client/libs/design-system/src/lib/icons/arrow-left-icon/arrow-left.icon.stories.ts

diff --git a/alfa-client/libs/design-system/src/index.ts b/alfa-client/libs/design-system/src/index.ts
index 638624f647..67b4390634 100644
--- a/alfa-client/libs/design-system/src/index.ts
+++ b/alfa-client/libs/design-system/src/index.ts
@@ -45,6 +45,7 @@ export * from './lib/icons/accessibility-icon/accessibility-icon.component';
 export * from './lib/icons/account-circle-icon/account-circle-icon.component';
 export * from './lib/icons/admin-logo-icon/admin-logo-icon.component';
 export * from './lib/icons/archive-icon/archive-icon.component';
+export * from './lib/icons/arrow-left-icon/arrow-left-icon.component';
 export * from './lib/icons/attachment-icon/attachment-icon.component';
 export * from './lib/icons/back-arrow-icon/back-arrow-icon.component';
 export * from './lib/icons/bescheid-generate-icon/bescheid-generate-icon.component';
diff --git a/alfa-client/libs/design-system/src/lib/icons/arrow-left-icon/arrow-left-icon.component.spec.ts b/alfa-client/libs/design-system/src/lib/icons/arrow-left-icon/arrow-left-icon.component.spec.ts
new file mode 100644
index 0000000000..e80eb6b7be
--- /dev/null
+++ b/alfa-client/libs/design-system/src/lib/icons/arrow-left-icon/arrow-left-icon.component.spec.ts
@@ -0,0 +1,21 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { ArrowLeftIconComponent } from './arrow-left-icon.component';
+
+describe('ArrowLeftIconComponent', () => {
+  let component: ArrowLeftIconComponent;
+  let fixture: ComponentFixture<ArrowLeftIconComponent>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      imports: [ArrowLeftIconComponent],
+    }).compileComponents();
+
+    fixture = TestBed.createComponent(ArrowLeftIconComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/alfa-client/libs/design-system/src/lib/icons/arrow-left-icon/arrow-left-icon.component.ts b/alfa-client/libs/design-system/src/lib/icons/arrow-left-icon/arrow-left-icon.component.ts
new file mode 100644
index 0000000000..1dd1c837d2
--- /dev/null
+++ b/alfa-client/libs/design-system/src/lib/icons/arrow-left-icon/arrow-left-icon.component.ts
@@ -0,0 +1,25 @@
+import { CommonModule } from '@angular/common';
+import { Component, Input } from '@angular/core';
+import { twMerge } from 'tailwind-merge';
+import { iconVariants, IconVariants } from '../iconVariants';
+
+@Component({
+  selector: 'ods-arrow-left-icon',
+  standalone: true,
+  imports: [CommonModule],
+  template: `<svg
+    viewBox="0 0 24 24"
+    xmlns="http://www.w3.org/2000/svg"
+    [ngClass]="[twMerge(iconVariants({ size }), 'fill-primary', class)]"
+    aria-hidden="true"
+  >
+    <path d="M20.75 11H8.58L14.17 5.41L12.75 4L4.75 12L12.75 20L14.16 18.59L8.58 13H20.75V11Z" />
+  </svg>`,
+})
+export class ArrowLeftIconComponent {
+  @Input() size: IconVariants['size'] = 'medium';
+  @Input() class: string = '';
+
+  readonly iconVariants = iconVariants;
+  readonly twMerge = twMerge;
+}
diff --git a/alfa-client/libs/design-system/src/lib/icons/arrow-left-icon/arrow-left.icon.stories.ts b/alfa-client/libs/design-system/src/lib/icons/arrow-left-icon/arrow-left.icon.stories.ts
new file mode 100644
index 0000000000..09bd3cd799
--- /dev/null
+++ b/alfa-client/libs/design-system/src/lib/icons/arrow-left-icon/arrow-left.icon.stories.ts
@@ -0,0 +1,27 @@
+import type { Meta, StoryObj } from '@storybook/angular';
+
+import { ArrowLeftIconComponent } from './arrow-left-icon.component';
+
+const meta: Meta<ArrowLeftIconComponent> = {
+  title: 'Icons/Arrow left icon',
+  component: ArrowLeftIconComponent,
+  excludeStories: /.*Data$/,
+  tags: ['autodocs'],
+};
+
+export default meta;
+type Story = StoryObj<ArrowLeftIconComponent>;
+
+export const Default: Story = {
+  args: { size: 'large' },
+  argTypes: {
+    size: {
+      control: 'select',
+      options: ['small', 'medium', 'large', 'extra-large', 'full'],
+      description: 'Size of icon. Property "full" means 100%',
+      table: {
+        defaultValue: { summary: 'medium' },
+      },
+    },
+  },
+};
-- 
GitLab


From c0cd44e8d9770bbcf94d1190bea0bc0196355b2b Mon Sep 17 00:00:00 2001
From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com>
Date: Fri, 7 Feb 2025 10:12:06 +0100
Subject: [PATCH 37/57] OZG-7474 Replace back button

---
 .../ui/back-button/back-button.component.html | 13 +++-----
 .../back-button/back-button.component.spec.ts | 14 +++++---
 alfa-client/libs/ui/src/lib/ui/ui.module.ts   | 10 +++++-
 ...ang-detail-formular-buttons.component.scss | 32 -------------------
 ...rgang-detail-formular-buttons.component.ts |  4 +--
 5 files changed, 24 insertions(+), 49 deletions(-)
 delete mode 100644 alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-buttons/vorgang-detail-formular-buttons.component.scss

diff --git a/alfa-client/libs/ui/src/lib/ui/back-button/back-button.component.html b/alfa-client/libs/ui/src/lib/ui/back-button/back-button.component.html
index 29c6b91fcd..77c62e3808 100644
--- a/alfa-client/libs/ui/src/lib/ui/back-button/back-button.component.html
+++ b/alfa-client/libs/ui/src/lib/ui/back-button/back-button.component.html
@@ -23,13 +23,8 @@
     unter der Lizenz sind dem Lizenztext zu entnehmen.
 
 -->
-<a
-  [routerLink]="linkTo"
-  mat-icon-button
-  data-test-id="back-button"
-  class="back-button"
-  [tooltip]="label"
-  tooltipAriaType="aria-labelledby"
->
-  <mat-icon>arrow_back</mat-icon>
+<a [routerLink]="linkTo" data-test-id="back-button" [tooltip]="label" tooltipAriaType="aria-labelledby">
+  <ods-button variant="icon" size="fit">
+    <ods-arrow-left-icon icon class="fill-text" />
+  </ods-button>
 </a>
diff --git a/alfa-client/libs/ui/src/lib/ui/back-button/back-button.component.spec.ts b/alfa-client/libs/ui/src/lib/ui/back-button/back-button.component.spec.ts
index 9ca87b6fea..7da998d8a8 100644
--- a/alfa-client/libs/ui/src/lib/ui/back-button/back-button.component.spec.ts
+++ b/alfa-client/libs/ui/src/lib/ui/back-button/back-button.component.spec.ts
@@ -23,12 +23,11 @@
  */
 import { getElementFromFixture } from '@alfa-client/test-utils';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
-import { MatIcon } from '@angular/material/icon';
 import { RouterTestingModule } from '@angular/router/testing';
 import { faker } from '@faker-js/faker';
-import { TooltipDirective } from '@ods/system';
+import { ArrowLeftIconComponent, ButtonComponent, TooltipDirective } from '@ods/system';
 import { getDataTestIdOf } from 'libs/tech-shared/test/data-test';
-import { MockDirective } from 'ng-mocks';
+import { MockComponent, MockDirective } from 'ng-mocks';
 import { BackButtonComponent } from './back-button.component';
 
 describe('BackButtonComponent', () => {
@@ -41,8 +40,13 @@ describe('BackButtonComponent', () => {
 
   beforeEach(async () => {
     await TestBed.configureTestingModule({
-      declarations: [BackButtonComponent, MockDirective(TooltipDirective)],
-      imports: [MatIcon, RouterTestingModule],
+      declarations: [
+        BackButtonComponent,
+        MockComponent(ButtonComponent),
+        MockComponent(ArrowLeftIconComponent),
+        MockDirective(TooltipDirective),
+      ],
+      imports: [RouterTestingModule],
     }).compileComponents();
 
     fixture = TestBed.createComponent(BackButtonComponent);
diff --git a/alfa-client/libs/ui/src/lib/ui/ui.module.ts b/alfa-client/libs/ui/src/lib/ui/ui.module.ts
index eeff741705..4a3c422a01 100644
--- a/alfa-client/libs/ui/src/lib/ui/ui.module.ts
+++ b/alfa-client/libs/ui/src/lib/ui/ui.module.ts
@@ -47,7 +47,13 @@ import { MatSlideToggleModule } from '@angular/material/slide-toggle';
 import { MatSnackBarModule } from '@angular/material/snack-bar';
 import { MatTabsModule } from '@angular/material/tabs';
 import { RouterModule } from '@angular/router';
-import { FileUploadButtonComponent, SpinnerIconComponent, TooltipDirective } from '@ods/system';
+import {
+  ArrowLeftIconComponent,
+  ButtonComponent,
+  FileUploadButtonComponent,
+  SpinnerIconComponent,
+  TooltipDirective,
+} from '@ods/system';
 import { de } from 'date-fns/locale';
 import { AppIconComponent } from '../icon/app-icon/app-icon.component';
 import { PostfachIconComponent } from '../icon/postfach-icon/postfach-icon.component';
@@ -162,6 +168,8 @@ import { ValidationErrorComponent } from './validation-error/validation-error.co
     FileUploadButtonComponent,
     SpinnerIconComponent,
     TooltipDirective,
+    ButtonComponent,
+    ArrowLeftIconComponent,
   ],
   exports: [
     MatButtonModule,
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-buttons/vorgang-detail-formular-buttons.component.scss b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-buttons/vorgang-detail-formular-buttons.component.scss
deleted file mode 100644
index 9cd0cfd7b7..0000000000
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-buttons/vorgang-detail-formular-buttons.component.scss
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-:host {
-  margin-left: 48px;
-
-  ::ng-deep {
-    ozgcloud-stroked-button-with-spinner {
-      margin: 0 8px;
-    }
-  }
-}
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-buttons/vorgang-detail-formular-buttons.component.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-buttons/vorgang-detail-formular-buttons.component.ts
index af2afbb374..6af40cc9be 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-buttons/vorgang-detail-formular-buttons.component.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-buttons/vorgang-detail-formular-buttons.component.ts
@@ -21,13 +21,13 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { Component, Input } from '@angular/core';
 import { VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
+import { Component, Input } from '@angular/core';
 
 @Component({
   selector: 'alfa-vorgang-detail-formular-buttons',
   templateUrl: './vorgang-detail-formular-buttons.component.html',
-  styleUrls: ['./vorgang-detail-formular-buttons.component.scss'],
+  styles: [':host {@apply mr-12 flex gap-4}'],
 })
 export class VorgangDetailFormularButtonsComponent {
   @Input() vorgangWithEingang: VorgangWithEingangResource;
-- 
GitLab


From 5cf8804958b397c025439127a824e61e3f1e96c9 Mon Sep 17 00:00:00 2001
From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com>
Date: Fri, 7 Feb 2025 10:17:51 +0100
Subject: [PATCH 38/57] OZG-7474 Fix annehmen button styling

---
 .../buttons/annehmen-button/annehmen-button.component.html    | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/annehmen-button/annehmen-button.component.html b/alfa-client/libs/vorgang-detail/src/lib/buttons/annehmen-button/annehmen-button.component.html
index c381ff9831..b82f8fd9e4 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/annehmen-button/annehmen-button.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/annehmen-button/annehmen-button.component.html
@@ -40,10 +40,10 @@
       [stateResource]="commandStateResource$ | async"
       (clickEmitter)="annehmen()"
       text="Vorgang annehmen"
-      variant="outline"
+      variant="primary"
       data-test-id="annehmen-button"
     >
-      <ods-check-circle-icon icon />
+      <ods-check-circle-icon icon class="fill-white" />
     </ods-button-with-spinner>
   }
 }
-- 
GitLab


From cd25cb9ea43fb9e76ca0f979196df8251fbde3b3 Mon Sep 17 00:00:00 2001
From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com>
Date: Fri, 7 Feb 2025 10:37:22 +0100
Subject: [PATCH 39/57] OZG-7474 Fix buttons positioning

---
 ...-by-ozgcloud-button-container.component.ts |  1 +
 ...g-loeschen-button-container.component.scss | 23 ---------------
 ...tig-loeschen-button-container.component.ts | 29 +++++--------------
 ...uecknehmen-button-container.component.scss | 23 ---------------
 ...uruecknehmen-button-container.component.ts | 16 ++++------
 .../abschliessen-button.component.scss        | 23 ---------------
 .../abschliessen-button.component.ts          | 12 +++-----
 .../annehmen-button.component.scss            | 23 ---------------
 .../annehmen-button.component.ts              | 14 +++------
 .../bearbeiten-button.component.scss          | 23 ---------------
 .../bearbeiten-button.component.ts            | 14 +++------
 .../bescheiden-button.component.scss          | 23 ---------------
 .../bescheiden-button.component.ts            |  2 +-
 .../verwerfen-button.component.scss           | 23 ---------------
 .../verwerfen-button.component.ts             | 14 +++------
 .../wiedereroeffnen-button.component.scss     | 23 ---------------
 .../wiedereroeffnen-button.component.ts       | 14 +++------
 .../zurueckholen-button.component.scss        | 23 ---------------
 .../zurueckholen-button.component.ts          | 14 +++------
 .../zurueckstellen-button.component.scss      | 23 ---------------
 .../zurueckstellen-button.component.ts        | 14 +++------
 ...ang-detail-formular-buttons.component.html | 10 ++-----
 ...rgang-detail-formular-buttons.component.ts |  2 +-
 23 files changed, 48 insertions(+), 338 deletions(-)
 delete mode 100644 alfa-client/libs/loesch-anforderung/src/lib/endgueltig-loeschen-button-container/endgueltig-loeschen-button-container.component.scss
 delete mode 100644 alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung-zuruecknehmen-button-container/loesch-anforderung-zuruecknehmen-button-container.component.scss
 delete mode 100644 alfa-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.scss
 delete mode 100644 alfa-client/libs/vorgang-detail/src/lib/buttons/annehmen-button/annehmen-button.component.scss
 delete mode 100644 alfa-client/libs/vorgang-detail/src/lib/buttons/bearbeiten-button/bearbeiten-button.component.scss
 delete mode 100644 alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.scss
 delete mode 100644 alfa-client/libs/vorgang-detail/src/lib/buttons/verwerfen-button/verwerfen-button.component.scss
 delete mode 100644 alfa-client/libs/vorgang-detail/src/lib/buttons/wiedereroeffnen-button/wiedereroeffnen-button.component.scss
 delete mode 100644 alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckholen-button/zurueckholen-button.component.scss
 delete mode 100644 alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckstellen-button/zurueckstellen-button.component.scss

diff --git a/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.ts b/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.ts
index a2b119c804..04498b4cfc 100644
--- a/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.ts
+++ b/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.ts
@@ -10,6 +10,7 @@ import { ForwardIconComponent, TooltipDirective } from '@ods/system';
   standalone: true,
   imports: [CommonModule, TechSharedModule, ButtonWithSpinnerComponent, ForwardIconComponent, TooltipDirective],
   templateUrl: './forward-by-ozgcloud-button-container.component.html',
+  styles: [':host {@apply empty:hidden}'],
 })
 export class ForwardByOzgcloudButtonContainerComponent {
   @Input() vorgangWithEingang: VorgangWithEingangResource;
diff --git a/alfa-client/libs/loesch-anforderung/src/lib/endgueltig-loeschen-button-container/endgueltig-loeschen-button-container.component.scss b/alfa-client/libs/loesch-anforderung/src/lib/endgueltig-loeschen-button-container/endgueltig-loeschen-button-container.component.scss
deleted file mode 100644
index 54c4f3eb8c..0000000000
--- a/alfa-client/libs/loesch-anforderung/src/lib/endgueltig-loeschen-button-container/endgueltig-loeschen-button-container.component.scss
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
diff --git a/alfa-client/libs/loesch-anforderung/src/lib/endgueltig-loeschen-button-container/endgueltig-loeschen-button-container.component.ts b/alfa-client/libs/loesch-anforderung/src/lib/endgueltig-loeschen-button-container/endgueltig-loeschen-button-container.component.ts
index 1b0cade59c..bb94290b75 100644
--- a/alfa-client/libs/loesch-anforderung/src/lib/endgueltig-loeschen-button-container/endgueltig-loeschen-button-container.component.ts
+++ b/alfa-client/libs/loesch-anforderung/src/lib/endgueltig-loeschen-button-container/endgueltig-loeschen-button-container.component.ts
@@ -21,34 +21,25 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { Component, Input } from '@angular/core';
-import { MatDialogRef } from '@angular/material/dialog';
 import { CommandResource } from '@alfa-client/command-shared';
-import {
-  LoeschAnforderungResource,
-  LoeschAnforderungService,
-} from '@alfa-client/loesch-anforderung-shared';
+import { LoeschAnforderungResource, LoeschAnforderungService } from '@alfa-client/loesch-anforderung-shared';
 import { StateResource, createEmptyStateResource } from '@alfa-client/tech-shared';
 import { BasicDialogComponent, BasicDialogData, DialogService } from '@alfa-client/ui';
-import {
-  LoeschAnforderungLinkRel,
-  VorgangWithEingangLinkRel,
-  VorgangWithEingangResource,
-} from '@alfa-client/vorgang-shared';
+import { LoeschAnforderungLinkRel, VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
+import { Component, Input } from '@angular/core';
+import { MatDialogRef } from '@angular/material/dialog';
 import { Observable, filter, first, of } from 'rxjs';
 
 @Component({
   selector: 'alfa-endgueltig-loeschen-button-container',
   templateUrl: './endgueltig-loeschen-button-container.component.html',
-  styleUrls: ['./endgueltig-loeschen-button-container.component.scss'],
+  styles: [':host {@apply empty:hidden}'],
 })
 export class EndgueltigLoeschenButtonContainerComponent {
   @Input() vorgang: VorgangWithEingangResource;
   @Input() showAsIconButton: boolean = false;
 
-  commandStateResource$: Observable<StateResource<CommandResource>> = of(
-    createEmptyStateResource<CommandResource>(),
-  );
+  commandStateResource$: Observable<StateResource<CommandResource>> = of(createEmptyStateResource<CommandResource>());
   loeschAnforderungResource$: Observable<StateResource<LoeschAnforderungResource>>;
 
   readonly vorgangWithEingangLinkRel = VorgangWithEingangLinkRel;
@@ -66,12 +57,8 @@ export class EndgueltigLoeschenButtonContainerComponent {
     this.loeschAnforderungResource$ = this.loeschAnforderungService.getLoeschAnforderung();
   }
 
-  public openEndgueltigLoeschenDialog(
-    loeschAnforderungResource: StateResource<LoeschAnforderungResource>,
-  ): void {
-    const dialogRef: MatDialogRef<BasicDialogComponent> = this.dialogService.openBasic(
-      this.createBasicDialogConfig(),
-    );
+  public openEndgueltigLoeschenDialog(loeschAnforderungResource: StateResource<LoeschAnforderungResource>): void {
+    const dialogRef: MatDialogRef<BasicDialogComponent> = this.dialogService.openBasic(this.createBasicDialogConfig());
 
     dialogRef
       .afterClosed()
diff --git a/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung-zuruecknehmen-button-container/loesch-anforderung-zuruecknehmen-button-container.component.scss b/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung-zuruecknehmen-button-container/loesch-anforderung-zuruecknehmen-button-container.component.scss
deleted file mode 100644
index 54c4f3eb8c..0000000000
--- a/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung-zuruecknehmen-button-container/loesch-anforderung-zuruecknehmen-button-container.component.scss
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
diff --git a/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung-zuruecknehmen-button-container/loesch-anforderung-zuruecknehmen-button-container.component.ts b/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung-zuruecknehmen-button-container/loesch-anforderung-zuruecknehmen-button-container.component.ts
index 8d60d118a2..104b574f16 100644
--- a/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung-zuruecknehmen-button-container/loesch-anforderung-zuruecknehmen-button-container.component.ts
+++ b/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung-zuruecknehmen-button-container/loesch-anforderung-zuruecknehmen-button-container.component.ts
@@ -21,7 +21,6 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { Component, Input } from '@angular/core';
 import { CommandResource } from '@alfa-client/command-shared';
 import {
   LoeschAnforderungLinkRel,
@@ -29,34 +28,31 @@ import {
   LoeschAnforderungService,
 } from '@alfa-client/loesch-anforderung-shared';
 import { StateResource, createEmptyStateResource } from '@alfa-client/tech-shared';
+import { Component, Input } from '@angular/core';
 import { Observable, of } from 'rxjs';
 
 @Component({
   selector: 'alfa-loesch-anforderung-zuruecknehmen-button-container',
   templateUrl: './loesch-anforderung-zuruecknehmen-button-container.component.html',
-  styleUrls: ['./loesch-anforderung-zuruecknehmen-button-container.component.scss'],
+  styles: [':host {@apply empty:hidden}'],
 })
 export class LoeschAnforderungZuruecknehmenButtonContainerComponent {
   @Input() showAsIconButton: boolean = false;
 
   loeschAnforderungStateResource$: Observable<StateResource<LoeschAnforderungResource>>;
-  loeschAnforderungZuruecknehmenCommand$: Observable<StateResource<CommandResource>> = of(
-    createEmptyStateResource<CommandResource>(),
-  );
+  loeschAnforderungZuruecknehmenCommand$: Observable<StateResource<CommandResource>> =
+    of(createEmptyStateResource<CommandResource>());
 
   readonly loeschAnforderungLinkRel = LoeschAnforderungLinkRel;
 
   constructor(private loeschAnforderungService: LoeschAnforderungService) {}
 
   ngOnInit(): void {
-    this.loeschAnforderungZuruecknehmenCommand$ =
-      this.loeschAnforderungService.getLoschAnforderungZuruecknehmenCommand();
+    this.loeschAnforderungZuruecknehmenCommand$ = this.loeschAnforderungService.getLoschAnforderungZuruecknehmenCommand();
     this.loeschAnforderungStateResource$ = this.loeschAnforderungService.getLoeschAnforderung();
   }
 
-  public loeschAnforderungZuruecknehmen(
-    loeschAnforderungResource: StateResource<LoeschAnforderungResource>,
-  ): void {
+  public loeschAnforderungZuruecknehmen(loeschAnforderungResource: StateResource<LoeschAnforderungResource>): void {
     this.loeschAnforderungService.zuruecknehmen(loeschAnforderungResource.resource);
   }
 }
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.scss b/alfa-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.scss
deleted file mode 100644
index 54c4f3eb8c..0000000000
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.scss
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.ts b/alfa-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.ts
index 578482c2b8..94f843b044 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.ts
@@ -23,7 +23,7 @@
  */
 import { CommandResource } from '@alfa-client/command-shared';
 import { createEmptyStateResource, notHasLink, StateResource } from '@alfa-client/tech-shared';
-import { VorgangCommandService, VorgangWithEingangLinkRel, VorgangWithEingangResource, } from '@alfa-client/vorgang-shared';
+import { VorgangCommandService, VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
 import { Component, Input, OnInit } from '@angular/core';
 import { hasLink } from '@ngxp/rest';
 import { Observable, of } from 'rxjs';
@@ -31,7 +31,7 @@ import { Observable, of } from 'rxjs';
 @Component({
   selector: 'alfa-abschliessen-button',
   templateUrl: './abschliessen-button.component.html',
-  styleUrls: ['./abschliessen-button.component.scss'],
+  styles: [':host {@apply empty:hidden}'],
 })
 export class AbschliessenButtonComponent implements OnInit {
   @Input() set vorgang(vorgang: VorgangWithEingangResource) {
@@ -47,9 +47,7 @@ export class AbschliessenButtonComponent implements OnInit {
   public isVisible: boolean = false;
   vorgangWithEingangResource: VorgangWithEingangResource;
 
-  commandStateResource$: Observable<StateResource<CommandResource>> = of(
-    createEmptyStateResource<CommandResource>(),
-  );
+  commandStateResource$: Observable<StateResource<CommandResource>> = of(createEmptyStateResource<CommandResource>());
 
   readonly linkRel = VorgangWithEingangLinkRel;
 
@@ -60,8 +58,6 @@ export class AbschliessenButtonComponent implements OnInit {
   }
 
   public abschliessen(): void {
-    this.commandStateResource$ = this.vorgangCommandService.abschliessen(
-      this.vorgangWithEingangResource,
-    );
+    this.commandStateResource$ = this.vorgangCommandService.abschliessen(this.vorgangWithEingangResource);
   }
 }
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/annehmen-button/annehmen-button.component.scss b/alfa-client/libs/vorgang-detail/src/lib/buttons/annehmen-button/annehmen-button.component.scss
deleted file mode 100644
index 54c4f3eb8c..0000000000
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/annehmen-button/annehmen-button.component.scss
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/annehmen-button/annehmen-button.component.ts b/alfa-client/libs/vorgang-detail/src/lib/buttons/annehmen-button/annehmen-button.component.ts
index 84fd1c5d4f..cdbf5447b6 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/annehmen-button/annehmen-button.component.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/annehmen-button/annehmen-button.component.ts
@@ -21,28 +21,22 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { Component, Input, OnInit } from '@angular/core';
 import { CommandResource } from '@alfa-client/command-shared';
 import { StateResource, createEmptyStateResource } from '@alfa-client/tech-shared';
-import {
-  VorgangCommandService,
-  VorgangWithEingangLinkRel,
-  VorgangWithEingangResource,
-} from '@alfa-client/vorgang-shared';
+import { VorgangCommandService, VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
+import { Component, Input, OnInit } from '@angular/core';
 import { Observable, of } from 'rxjs';
 
 @Component({
   selector: 'alfa-annehmen-button',
   templateUrl: './annehmen-button.component.html',
-  styleUrls: ['./annehmen-button.component.scss'],
+  styles: [':host {@apply empty:hidden}'],
 })
 export class AnnehmenButtonComponent implements OnInit {
   @Input() vorgang: VorgangWithEingangResource;
   @Input() showAsIconButton: boolean = false;
 
-  commandStateResource$: Observable<StateResource<CommandResource>> = of(
-    createEmptyStateResource<CommandResource>(),
-  );
+  commandStateResource$: Observable<StateResource<CommandResource>> = of(createEmptyStateResource<CommandResource>());
 
   readonly linkRel = VorgangWithEingangLinkRel;
 
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/bearbeiten-button/bearbeiten-button.component.scss b/alfa-client/libs/vorgang-detail/src/lib/buttons/bearbeiten-button/bearbeiten-button.component.scss
deleted file mode 100644
index 54c4f3eb8c..0000000000
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/bearbeiten-button/bearbeiten-button.component.scss
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/bearbeiten-button/bearbeiten-button.component.ts b/alfa-client/libs/vorgang-detail/src/lib/buttons/bearbeiten-button/bearbeiten-button.component.ts
index 9b6b581a8b..b1371472ec 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/bearbeiten-button/bearbeiten-button.component.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/bearbeiten-button/bearbeiten-button.component.ts
@@ -21,28 +21,22 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { Component, Input, OnInit } from '@angular/core';
 import { CommandResource } from '@alfa-client/command-shared';
 import { StateResource, createEmptyStateResource } from '@alfa-client/tech-shared';
-import {
-  VorgangCommandService,
-  VorgangWithEingangLinkRel,
-  VorgangWithEingangResource,
-} from '@alfa-client/vorgang-shared';
+import { VorgangCommandService, VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
+import { Component, Input, OnInit } from '@angular/core';
 import { Observable, of } from 'rxjs';
 
 @Component({
   selector: 'alfa-bearbeiten-button',
   templateUrl: './bearbeiten-button.component.html',
-  styleUrls: ['./bearbeiten-button.component.scss'],
+  styles: [':host {@apply empty:hidden}'],
 })
 export class BearbeitenButtonComponent implements OnInit {
   @Input() vorgang: VorgangWithEingangResource;
   @Input() showAsIconButton: boolean = false;
 
-  commandStateResource$: Observable<StateResource<CommandResource>> = of(
-    createEmptyStateResource<CommandResource>(),
-  );
+  commandStateResource$: Observable<StateResource<CommandResource>> = of(createEmptyStateResource<CommandResource>());
 
   readonly linkRel = VorgangWithEingangLinkRel;
 
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.scss b/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.scss
deleted file mode 100644
index 54c4f3eb8c..0000000000
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.scss
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.ts b/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.ts
index da2e171f7d..de431e7c59 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.ts
@@ -40,7 +40,7 @@ import { VorgangDetailBescheidenComponent } from '../../vorgang-detail-page/vorg
 @Component({
   selector: 'alfa-bescheiden-button',
   templateUrl: './bescheiden-button.component.html',
-  styleUrls: ['./bescheiden-button.component.scss'],
+  styles: [':host {@apply empty:hidden}'],
 })
 export class BescheidenButtonComponent implements OnInit {
   @Input() vorgang: VorgangWithEingangResource;
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/verwerfen-button/verwerfen-button.component.scss b/alfa-client/libs/vorgang-detail/src/lib/buttons/verwerfen-button/verwerfen-button.component.scss
deleted file mode 100644
index 54c4f3eb8c..0000000000
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/verwerfen-button/verwerfen-button.component.scss
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/verwerfen-button/verwerfen-button.component.ts b/alfa-client/libs/vorgang-detail/src/lib/buttons/verwerfen-button/verwerfen-button.component.ts
index ee468e5fb4..6ec2487983 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/verwerfen-button/verwerfen-button.component.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/verwerfen-button/verwerfen-button.component.ts
@@ -21,28 +21,22 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { Component, Input, OnInit } from '@angular/core';
 import { CommandResource } from '@alfa-client/command-shared';
 import { StateResource, createEmptyStateResource } from '@alfa-client/tech-shared';
-import {
-  VorgangCommandService,
-  VorgangWithEingangLinkRel,
-  VorgangWithEingangResource,
-} from '@alfa-client/vorgang-shared';
+import { VorgangCommandService, VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
+import { Component, Input, OnInit } from '@angular/core';
 import { Observable, of } from 'rxjs';
 
 @Component({
   selector: 'alfa-verwerfen-button',
   templateUrl: './verwerfen-button.component.html',
-  styleUrls: ['./verwerfen-button.component.scss'],
+  styles: [':host {@apply empty:hidden}'],
 })
 export class VerwerfenButtonComponent implements OnInit {
   @Input() vorgang: VorgangWithEingangResource;
   @Input() showAsIconButton: boolean = false;
 
-  commandStateResource$: Observable<StateResource<CommandResource>> = of(
-    createEmptyStateResource<CommandResource>(),
-  );
+  commandStateResource$: Observable<StateResource<CommandResource>> = of(createEmptyStateResource<CommandResource>());
 
   readonly linkRel = VorgangWithEingangLinkRel;
 
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/wiedereroeffnen-button/wiedereroeffnen-button.component.scss b/alfa-client/libs/vorgang-detail/src/lib/buttons/wiedereroeffnen-button/wiedereroeffnen-button.component.scss
deleted file mode 100644
index 54c4f3eb8c..0000000000
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/wiedereroeffnen-button/wiedereroeffnen-button.component.scss
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/wiedereroeffnen-button/wiedereroeffnen-button.component.ts b/alfa-client/libs/vorgang-detail/src/lib/buttons/wiedereroeffnen-button/wiedereroeffnen-button.component.ts
index 4887a53a3d..4300791a17 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/wiedereroeffnen-button/wiedereroeffnen-button.component.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/wiedereroeffnen-button/wiedereroeffnen-button.component.ts
@@ -21,28 +21,22 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { Component, Input, OnInit } from '@angular/core';
 import { CommandResource } from '@alfa-client/command-shared';
 import { StateResource, createEmptyStateResource } from '@alfa-client/tech-shared';
-import {
-  VorgangCommandService,
-  VorgangWithEingangLinkRel,
-  VorgangWithEingangResource,
-} from '@alfa-client/vorgang-shared';
+import { VorgangCommandService, VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
+import { Component, Input, OnInit } from '@angular/core';
 import { Observable, of } from 'rxjs';
 
 @Component({
   selector: 'alfa-wiedereroeffnen-button',
   templateUrl: './wiedereroeffnen-button.component.html',
-  styleUrls: ['./wiedereroeffnen-button.component.scss'],
+  styles: [':host {@apply empty:hidden}'],
 })
 export class WiedereroeffnenButtonComponent implements OnInit {
   @Input() vorgang: VorgangWithEingangResource;
   @Input() showAsIconButton: boolean = false;
 
-  commandStateResource$: Observable<StateResource<CommandResource>> = of(
-    createEmptyStateResource<CommandResource>(),
-  );
+  commandStateResource$: Observable<StateResource<CommandResource>> = of(createEmptyStateResource<CommandResource>());
 
   readonly linkRel = VorgangWithEingangLinkRel;
 
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckholen-button/zurueckholen-button.component.scss b/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckholen-button/zurueckholen-button.component.scss
deleted file mode 100644
index 54c4f3eb8c..0000000000
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckholen-button/zurueckholen-button.component.scss
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckholen-button/zurueckholen-button.component.ts b/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckholen-button/zurueckholen-button.component.ts
index e32881b215..37eeb40bb4 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckholen-button/zurueckholen-button.component.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckholen-button/zurueckholen-button.component.ts
@@ -21,28 +21,22 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { Component, Input, OnInit } from '@angular/core';
 import { CommandResource } from '@alfa-client/command-shared';
 import { StateResource, createEmptyStateResource } from '@alfa-client/tech-shared';
-import {
-  VorgangCommandService,
-  VorgangWithEingangLinkRel,
-  VorgangWithEingangResource,
-} from '@alfa-client/vorgang-shared';
+import { VorgangCommandService, VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
+import { Component, Input, OnInit } from '@angular/core';
 import { Observable, of } from 'rxjs';
 
 @Component({
   selector: 'alfa-zurueckholen-button',
   templateUrl: './zurueckholen-button.component.html',
-  styleUrls: ['./zurueckholen-button.component.scss'],
+  styles: [':host {@apply empty:hidden}'],
 })
 export class ZurueckholenButtonComponent implements OnInit {
   @Input() vorgang: VorgangWithEingangResource;
   @Input() showAsIconButton: boolean = false;
 
-  commandStateResource$: Observable<StateResource<CommandResource>> = of(
-    createEmptyStateResource<CommandResource>(),
-  );
+  commandStateResource$: Observable<StateResource<CommandResource>> = of(createEmptyStateResource<CommandResource>());
 
   readonly linkRel = VorgangWithEingangLinkRel;
 
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckstellen-button/zurueckstellen-button.component.scss b/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckstellen-button/zurueckstellen-button.component.scss
deleted file mode 100644
index 54c4f3eb8c..0000000000
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckstellen-button/zurueckstellen-button.component.scss
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckstellen-button/zurueckstellen-button.component.ts b/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckstellen-button/zurueckstellen-button.component.ts
index 5ee0685b2d..3c0393503c 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckstellen-button/zurueckstellen-button.component.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckstellen-button/zurueckstellen-button.component.ts
@@ -21,28 +21,22 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { Component, Input, OnInit } from '@angular/core';
 import { CommandResource } from '@alfa-client/command-shared';
 import { StateResource, createEmptyStateResource } from '@alfa-client/tech-shared';
-import {
-  VorgangCommandService,
-  VorgangWithEingangLinkRel,
-  VorgangWithEingangResource,
-} from '@alfa-client/vorgang-shared';
+import { VorgangCommandService, VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
+import { Component, Input, OnInit } from '@angular/core';
 import { Observable, of } from 'rxjs';
 
 @Component({
   selector: 'alfa-zurueckstellen-button',
   templateUrl: './zurueckstellen-button.component.html',
-  styleUrls: ['./zurueckstellen-button.component.scss'],
+  styles: [':host {@apply empty:hidden}'],
 })
 export class ZurueckstellenButtonComponent implements OnInit {
   @Input() vorgang: VorgangWithEingangResource;
   @Input() showAsIconButton: boolean = false;
 
-  commandStateResource$: Observable<StateResource<CommandResource>> = of(
-    createEmptyStateResource<CommandResource>(),
-  );
+  commandStateResource$: Observable<StateResource<CommandResource>> = of(createEmptyStateResource<CommandResource>());
 
   readonly linkRel = VorgangWithEingangLinkRel;
 
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-buttons/vorgang-detail-formular-buttons.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-buttons/vorgang-detail-formular-buttons.component.html
index a8e1579582..742a81193c 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-buttons/vorgang-detail-formular-buttons.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-buttons/vorgang-detail-formular-buttons.component.html
@@ -32,13 +32,9 @@
 <alfa-abschliessen-button [vorgang]="vorgangWithEingang" />
 <alfa-wiedereroeffnen-button [vorgang]="vorgangWithEingang" />
 <!-- TODO LoeschAnforderung dynamisch laden, wenn Link vorhanden -->
-<alfa-loeschen-anfordern-button-container
-  *ngIf="vorgangWithEingang | hasLink: vorgangWithEingangLinkRel.LOESCHEN_ANFORDERN"
-  data-test-id="loeschen-anfordern-button-container"
-  [vorgang]="vorgangWithEingang"
->
-  <!--  -->
-</alfa-loeschen-anfordern-button-container>
+@if (vorgangWithEingang | hasLink: vorgangWithEingangLinkRel.LOESCHEN_ANFORDERN) {
+  <alfa-loeschen-anfordern-button-container data-test-id="loeschen-anfordern-button-container" [vorgang]="vorgangWithEingang" />
+}
 <alfa-endgueltig-loeschen-button-container [vorgang]="vorgangWithEingang" />
 <alfa-loesch-anforderung-zuruecknehmen-button-container />
 <alfa-forward-by-ozgcloud-button-container [vorgangWithEingang]="vorgangWithEingang" />
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-buttons/vorgang-detail-formular-buttons.component.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-buttons/vorgang-detail-formular-buttons.component.ts
index 6af40cc9be..908b73de5e 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-buttons/vorgang-detail-formular-buttons.component.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-buttons/vorgang-detail-formular-buttons.component.ts
@@ -27,7 +27,7 @@ import { Component, Input } from '@angular/core';
 @Component({
   selector: 'alfa-vorgang-detail-formular-buttons',
   templateUrl: './vorgang-detail-formular-buttons.component.html',
-  styles: [':host {@apply mr-12 flex gap-4}'],
+  styles: [':host {@apply ml-12 flex gap-4}'],
 })
 export class VorgangDetailFormularButtonsComponent {
   @Input() vorgangWithEingang: VorgangWithEingangResource;
-- 
GitLab


From 5c6df5068a4255e18cdafffb1fa68f2d4e0f80d1 Mon Sep 17 00:00:00 2001
From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com>
Date: Fri, 7 Feb 2025 13:23:42 +0100
Subject: [PATCH 40/57] OZG-7474 Use new ghost buttons

---
 .../forward-by-ozgcloud-button-container.component.html       | 2 +-
 .../endgueltig-loeschen-button.component.html                 | 2 +-
 .../loesch-anforderung-zuruecknehmen-button.component.html    | 2 +-
 .../loeschen-anfordern-button.component.html                  | 2 +-
 .../postfach-mail-button/postfach-mail-button.component.html  | 4 ++--
 .../libs/ui/src/lib/ui/back-button/back-button.component.html | 2 +-
 .../assign-user-profile-button-container.component.html       | 2 +-
 .../abschliessen-button/abschliessen-button.component.html    | 2 +-
 .../buttons/annehmen-button/annehmen-button.component.html    | 2 +-
 .../bearbeiten-button/bearbeiten-button.component.html        | 2 +-
 .../bescheiden-button/bescheiden-button.component.html        | 2 +-
 .../buttons/verwerfen-button/verwerfen-button.component.html  | 2 +-
 .../wiedereroeffnen-button.component.html                     | 2 +-
 .../zurueckholen-button/zurueckholen-button.component.html    | 2 +-
 .../zurueckstellen-button.component.html                      | 2 +-
 .../wiedervorlage-create-button.component.html                | 2 +-
 16 files changed, 17 insertions(+), 17 deletions(-)

diff --git a/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.html b/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.html
index 729b06b22c..ef41584d17 100644
--- a/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.html
+++ b/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.html
@@ -2,7 +2,7 @@
   @if (showAsIconButton) {
     <ods-button-with-spinner
       tooltip="Vorgang weiterleiten"
-      variant="icon"
+      variant="ghost"
       size="fit"
       dataTestId="forward-by-ozgcloud-icon-button"
     >
diff --git a/alfa-client/libs/loesch-anforderung/src/lib/endgueltig-loeschen-button-container/endgueltig-loeschen-button/endgueltig-loeschen-button.component.html b/alfa-client/libs/loesch-anforderung/src/lib/endgueltig-loeschen-button-container/endgueltig-loeschen-button/endgueltig-loeschen-button.component.html
index bdc9f478ca..4b20817356 100644
--- a/alfa-client/libs/loesch-anforderung/src/lib/endgueltig-loeschen-button-container/endgueltig-loeschen-button/endgueltig-loeschen-button.component.html
+++ b/alfa-client/libs/loesch-anforderung/src/lib/endgueltig-loeschen-button-container/endgueltig-loeschen-button/endgueltig-loeschen-button.component.html
@@ -27,7 +27,7 @@
   <ods-button-with-spinner
     data-test-id="endgueltig-loeschen-icon-button"
     tooltip="Endgültig löschen"
-    variant="icon"
+    variant="ghost"
     size="fit"
     (clickEmitter)="endgueltigLoeschen.emit()"
   >
diff --git a/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung-zuruecknehmen-button-container/loesch-anforderung-zuruecknehmen-button/loesch-anforderung-zuruecknehmen-button.component.html b/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung-zuruecknehmen-button-container/loesch-anforderung-zuruecknehmen-button/loesch-anforderung-zuruecknehmen-button.component.html
index 59a0e021de..70f002e914 100644
--- a/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung-zuruecknehmen-button-container/loesch-anforderung-zuruecknehmen-button/loesch-anforderung-zuruecknehmen-button.component.html
+++ b/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung-zuruecknehmen-button-container/loesch-anforderung-zuruecknehmen-button/loesch-anforderung-zuruecknehmen-button.component.html
@@ -28,7 +28,7 @@
     [stateResource]="loeschAnforderungZuruecknehmenCommand"
     data-test-id="loesch-anforderung-zuruecknehmen-icon-button"
     tooltip="Löschanforderung zurücknehmen"
-    variant="icon"
+    variant="ghost"
     size="fit"
     (clickEmitter)="loeschAnforderungZuruecknehmen.emit()"
   >
diff --git a/alfa-client/libs/loesch-anforderung/src/lib/loeschen-anfordern-button-container/loeschen-anfordern-button/loeschen-anfordern-button.component.html b/alfa-client/libs/loesch-anforderung/src/lib/loeschen-anfordern-button-container/loeschen-anfordern-button/loeschen-anfordern-button.component.html
index d56365f101..0598d5dfae 100644
--- a/alfa-client/libs/loesch-anforderung/src/lib/loeschen-anfordern-button-container/loeschen-anfordern-button/loeschen-anfordern-button.component.html
+++ b/alfa-client/libs/loesch-anforderung/src/lib/loeschen-anfordern-button-container/loeschen-anfordern-button/loeschen-anfordern-button.component.html
@@ -28,7 +28,7 @@
     [stateResource]="loeschenAnfordernCommand"
     data-test-id="loeschen-anfordern-icon-button"
     tooltip="Löschen anfordern"
-    variant="icon"
+    variant="ghost"
     size="fit"
     (clickEmitter)="loeschenAnfordern.emit()"
   >
diff --git a/alfa-client/libs/postfach/src/lib/postfach-mail-button-container/postfach-mail-button/postfach-mail-button.component.html b/alfa-client/libs/postfach/src/lib/postfach-mail-button-container/postfach-mail-button/postfach-mail-button.component.html
index b47984d0cb..22f3399935 100644
--- a/alfa-client/libs/postfach/src/lib/postfach-mail-button-container/postfach-mail-button/postfach-mail-button.component.html
+++ b/alfa-client/libs/postfach/src/lib/postfach-mail-button-container/postfach-mail-button/postfach-mail-button.component.html
@@ -30,7 +30,7 @@
       data-test-id="send-mail-icon-button"
       [isLoading]="pendingSendPostfachMailCommand.resource | hasLink: commandLinkRel.UPDATE"
       tooltip="Neue Nachricht erstellen"
-      variant="icon"
+      variant="ghost"
       size="fit"
       (clickEmitter)="openPostfachNachrichtenDialog.emit()"
     >
@@ -51,7 +51,7 @@
       data-test-id="create-mail-button-without-text"
       [isLoading]="pendingSendPostfachMailCommand.resource | hasLink: commandLinkRel.UPDATE"
       [tooltip]="toolTip"
-      variant="icon"
+      variant="ghost"
       size="fit"
       (clickEmitter)="openPostfachNachrichtenDialog.emit()"
     >
diff --git a/alfa-client/libs/ui/src/lib/ui/back-button/back-button.component.html b/alfa-client/libs/ui/src/lib/ui/back-button/back-button.component.html
index 77c62e3808..44e7788d55 100644
--- a/alfa-client/libs/ui/src/lib/ui/back-button/back-button.component.html
+++ b/alfa-client/libs/ui/src/lib/ui/back-button/back-button.component.html
@@ -24,7 +24,7 @@
 
 -->
 <a [routerLink]="linkTo" data-test-id="back-button" [tooltip]="label" tooltipAriaType="aria-labelledby">
-  <ods-button variant="icon" size="fit">
+  <ods-button variant="ghost" size="fit">
     <ods-arrow-left-icon icon class="fill-text" />
   </ods-button>
 </a>
diff --git a/alfa-client/libs/user-profile/src/lib/assign-user-profile-button-container/assign-user-profile-button-container.component.html b/alfa-client/libs/user-profile/src/lib/assign-user-profile-button-container/assign-user-profile-button-container.component.html
index 6469c2a6d8..f0e6aa37b1 100644
--- a/alfa-client/libs/user-profile/src/lib/assign-user-profile-button-container/assign-user-profile-button-container.component.html
+++ b/alfa-client/libs/user-profile/src/lib/assign-user-profile-button-container/assign-user-profile-button-container.component.html
@@ -28,7 +28,7 @@
     svgIcon="account_outline"
     tooltip="Bearbeiter zuordnen"
     data-test-id="assign-user-profile-icon-button"
-    variant="icon"
+    variant="ghost"
     size="fit"
     (clickEmitter)="showUserProfileSearch()"
   >
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.html b/alfa-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.html
index 2c7b3f41e9..f9670cbee8 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.html
@@ -30,7 +30,7 @@
       [stateResource]="commandStateResource$ | async"
       data-test-id="abschliessen-icon-button"
       tooltip="Vorgang abschließen"
-      variant="icon"
+      variant="ghost"
       size="fit"
       (clickEmitter)="abschliessen()"
     >
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/annehmen-button/annehmen-button.component.html b/alfa-client/libs/vorgang-detail/src/lib/buttons/annehmen-button/annehmen-button.component.html
index b82f8fd9e4..28ef66f3d4 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/annehmen-button/annehmen-button.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/annehmen-button/annehmen-button.component.html
@@ -29,7 +29,7 @@
       [stateResource]="commandStateResource$ | async"
       (clickEmitter)="annehmen()"
       tooltip="Vorgang annehmen"
-      variant="icon"
+      variant="ghost"
       size="fit"
       data-test-id="annehmen-icon-button"
     >
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/bearbeiten-button/bearbeiten-button.component.html b/alfa-client/libs/vorgang-detail/src/lib/buttons/bearbeiten-button/bearbeiten-button.component.html
index b395e746cf..d1de12ab8c 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/bearbeiten-button/bearbeiten-button.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/bearbeiten-button/bearbeiten-button.component.html
@@ -30,7 +30,7 @@
       [stateResource]="commandStateResource$ | async"
       data-test-id="bearbeiten-icon-button"
       tooltip="Vorgang bearbeiten"
-      variant="icon"
+      variant="ghost"
       size="fit"
       (clickEmitter)="bearbeiten()"
     >
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.html b/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.html
index de88c613de..da120283e6 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.html
@@ -29,7 +29,7 @@
       [stateResource]="commandStateResource$ | async"
       (clickEmitter)="bescheiden()"
       [tooltip]="toolTipText"
-      variant="icon"
+      variant="ghost"
       size="fit"
       data-test-id="bescheiden-icon-button"
     >
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/verwerfen-button/verwerfen-button.component.html b/alfa-client/libs/vorgang-detail/src/lib/buttons/verwerfen-button/verwerfen-button.component.html
index e5609f8f07..b5e8bd07fb 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/verwerfen-button/verwerfen-button.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/verwerfen-button/verwerfen-button.component.html
@@ -29,7 +29,7 @@
       [stateResource]="commandStateResource$ | async"
       data-test-id="verwerfen-icon-button"
       tooltip="Vorgang verwerfen"
-      variant="icon"
+      variant="ghost"
       size="fit"
       (clickEmitter)="verwerfen()"
     >
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/wiedereroeffnen-button/wiedereroeffnen-button.component.html b/alfa-client/libs/vorgang-detail/src/lib/buttons/wiedereroeffnen-button/wiedereroeffnen-button.component.html
index 6c98b512c3..68384c5436 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/wiedereroeffnen-button/wiedereroeffnen-button.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/wiedereroeffnen-button/wiedereroeffnen-button.component.html
@@ -29,7 +29,7 @@
       [stateResource]="commandStateResource$ | async"
       data-test-id="wiedereroeffnen-icon-button"
       tooltip="Vorgang wiedereröffnen"
-      variant="icon"
+      variant="ghost"
       size="fit"
       (clickEmitter)="wiedereroeffnen()"
     >
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckholen-button/zurueckholen-button.component.html b/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckholen-button/zurueckholen-button.component.html
index 8ce7dcfcd4..e89caeeded 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckholen-button/zurueckholen-button.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckholen-button/zurueckholen-button.component.html
@@ -28,7 +28,7 @@
     <ods-button-with-spinner
       [stateResource]="commandStateResource$ | async"
       data-test-id="zurueckholen-icon-button"
-      variant="icon"
+      variant="ghost"
       size="fit"
       tooltip="Vorgang zurückholen"
       (clickEmitter)="zurueckholen()"
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckstellen-button/zurueckstellen-button.component.html b/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckstellen-button/zurueckstellen-button.component.html
index 549e0ec770..abb4132e0f 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckstellen-button/zurueckstellen-button.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckstellen-button/zurueckstellen-button.component.html
@@ -30,7 +30,7 @@
       [stateResource]="commandStateResource$ | async"
       data-test-id="zurueckstellen-icon-button"
       tooltip="Vorgang zurückstellen"
-      variant="icon"
+      variant="ghost"
       size="fit"
       (clickEmitter)="zurueckstellen()"
     >
diff --git a/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-list-in-vorgang-container/wiedervorlage-list-in-vorgang/wiedervorlage-create-button/wiedervorlage-create-button.component.html b/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-list-in-vorgang-container/wiedervorlage-list-in-vorgang/wiedervorlage-create-button/wiedervorlage-create-button.component.html
index 0998d200a4..c37de121c8 100644
--- a/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-list-in-vorgang-container/wiedervorlage-list-in-vorgang/wiedervorlage-create-button/wiedervorlage-create-button.component.html
+++ b/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-list-in-vorgang-container/wiedervorlage-list-in-vorgang/wiedervorlage-create-button/wiedervorlage-create-button.component.html
@@ -30,7 +30,7 @@
       @if (showAsIconButton) {
         <ods-button-with-spinner
           data-test-id="create-wiedervorlage-icon-button"
-          variant="icon"
+          variant="ghost"
           size="fit"
           tooltip="Wiedervorlage erstellen"
         >
-- 
GitLab


From ab22b608b5b2a860d83ee80f6b85d922db7e2d74 Mon Sep 17 00:00:00 2001
From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com>
Date: Fri, 7 Feb 2025 13:27:26 +0100
Subject: [PATCH 41/57] OZG-7474 Fix back button tab index

---
 .../libs/ui/src/lib/ui/back-button/back-button.component.html   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/alfa-client/libs/ui/src/lib/ui/back-button/back-button.component.html b/alfa-client/libs/ui/src/lib/ui/back-button/back-button.component.html
index 44e7788d55..1d1e56f7f7 100644
--- a/alfa-client/libs/ui/src/lib/ui/back-button/back-button.component.html
+++ b/alfa-client/libs/ui/src/lib/ui/back-button/back-button.component.html
@@ -23,7 +23,7 @@
     unter der Lizenz sind dem Lizenztext zu entnehmen.
 
 -->
-<a [routerLink]="linkTo" data-test-id="back-button" [tooltip]="label" tooltipAriaType="aria-labelledby">
+<a [routerLink]="linkTo" data-test-id="back-button" [tooltip]="label" tooltipAriaType="aria-labelledby" tabindex="-1">
   <ods-button variant="ghost" size="fit">
     <ods-arrow-left-icon icon class="fill-text" />
   </ods-button>
-- 
GitLab


From 533db975342e057fd4f4b3df586bce1d6d799eca Mon Sep 17 00:00:00 2001
From: Martin <git@mail.de>
Date: Fri, 7 Feb 2025 18:24:11 +0100
Subject: [PATCH 42/57] OZG-7474 fix e2e tests

---
 .../vorgang-forward-by-ozgcloud.cy.ts         | 46 ++++++++++++++++
 ...y.ts => vorgang-forward-by-ozgcloud.cy.ts} | 55 +++++++++----------
 2 files changed, 72 insertions(+), 29 deletions(-)
 create mode 100644 alfa-client/apps/alfa-e2e/src/e2e/einheitlicher-ansprechpartner/vorgang-detail/vorgang-forward-by-ozgcloud.cy.ts
 rename alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/{vorgang-weiterleiten.cy.ts => vorgang-forward-by-ozgcloud.cy.ts} (60%)

diff --git a/alfa-client/apps/alfa-e2e/src/e2e/einheitlicher-ansprechpartner/vorgang-detail/vorgang-forward-by-ozgcloud.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/einheitlicher-ansprechpartner/vorgang-detail/vorgang-forward-by-ozgcloud.cy.ts
new file mode 100644
index 0000000000..8b346e0d75
--- /dev/null
+++ b/alfa-client/apps/alfa-e2e/src/e2e/einheitlicher-ansprechpartner/vorgang-detail/vorgang-forward-by-ozgcloud.cy.ts
@@ -0,0 +1,46 @@
+import { registerLocaleData } from '@angular/common';
+import localeDe from '@angular/common/locales/de';
+import localeDeExtra from '@angular/common/locales/extra/de';
+import { VorgangFormularButtonsE2EComponent } from 'apps/alfa-e2e/src/components/vorgang/vorgang-formular-buttons.e2e.components';
+import { VorgangListE2EComponent } from '../../../components/vorgang/vorgang-list.e2e.component';
+import { VorgangE2E } from '../../../model/vorgang';
+import { MainPage, waitForSpinnerToDisappear } from '../../../page-objects/main.po';
+import { VorgangPage } from '../../../page-objects/vorgang.po';
+import { dropCollections } from '../../../support/cypress-helper';
+import { exist, notExist } from '../../../support/cypress.util';
+import { loginAsEmil } from '../../../support/user-util';
+import { createVorgang, initVorgaenge } from '../../../support/vorgang-util';
+
+registerLocaleData(localeDe, 'de', localeDeExtra);
+
+describe('Vorgang weiterleiten innerhalb der OzgCloud', () => {
+  const mainPage: MainPage = new MainPage();
+  const vorgangList: VorgangListE2EComponent = mainPage.getVorgangList();
+
+  const vorgangPage: VorgangPage = new VorgangPage();
+  const vorgangFormularButtons: VorgangFormularButtonsE2EComponent = vorgangPage.getFormularButtons();
+
+  const vorgangWeiterleiten: VorgangE2E = { ...createVorgang(), name: 'Weiterleitung' };
+
+  before(() => {
+    initVorgaenge([vorgangWeiterleiten]);
+
+    loginAsEmil();
+
+    waitForSpinnerToDisappear();
+    exist(vorgangList.getRoot());
+  });
+
+  after(() => {
+    dropCollections();
+  });
+
+  describe('Weiterleiten', () => {
+    it('should display Weiterleiten button in Status Neu', () => {
+      vorgangList.getListItem(vorgangWeiterleiten.name).getRoot().click();
+      waitForSpinnerToDisappear();
+
+      notExist(vorgangFormularButtons.getForwardButton());
+    });
+  });
+});
diff --git a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-weiterleiten.cy.ts b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-forward-by-ozgcloud.cy.ts
similarity index 60%
rename from alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-weiterleiten.cy.ts
rename to alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-forward-by-ozgcloud.cy.ts
index a99564ea6c..d4661c6d5f 100644
--- a/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-weiterleiten.cy.ts
+++ b/alfa-client/apps/alfa-e2e/src/e2e/main-tests/vorgang-detailansicht/vorgang-forward-by-ozgcloud.cy.ts
@@ -2,19 +2,18 @@ import { registerLocaleData } from '@angular/common';
 import localeDe from '@angular/common/locales/de';
 import localeDeExtra from '@angular/common/locales/extra/de';
 import { VorgangFormularButtonsE2EComponent } from 'apps/alfa-e2e/src/components/vorgang/vorgang-formular-buttons.e2e.components';
-import { HeaderE2EComponent } from 'apps/alfa-e2e/src/page-objects/header.po';
 import { VorgangListE2EComponent } from '../../../components/vorgang/vorgang-list.e2e.component';
 import { VorgangE2E } from '../../../model/vorgang';
 import { MainPage, waitForSpinnerToDisappear } from '../../../page-objects/main.po';
 import { VorgangPage } from '../../../page-objects/vorgang.po';
 import { dropCollections } from '../../../support/cypress-helper';
 import { exist, notExist } from '../../../support/cypress.util';
-import { loginAsEmil, loginAsPeter, loginAsSabine } from '../../../support/user-util';
-import { buildVorgang, createVorgang, initVorgaenge, objectIds } from '../../../support/vorgang-util';
+import { loginAsPeter, loginAsSabine } from '../../../support/user-util';
+import { createVorgang, initVorgaenge } from '../../../support/vorgang-util';
 
 registerLocaleData(localeDe, 'de', localeDeExtra);
 
-describe('Vorgang weiterleiten', () => {
+describe('Vorgang weiterleiten innerhalb der OzgCloud', () => {
   const mainPage: MainPage = new MainPage();
   const vorgangList: VorgangListE2EComponent = mainPage.getVorgangList();
 
@@ -22,23 +21,21 @@ describe('Vorgang weiterleiten', () => {
   const vorgangFormularButtons: VorgangFormularButtonsE2EComponent = vorgangPage.getFormularButtons();
 
   const vorgangWeiterleiten: VorgangE2E = { ...createVorgang(), name: 'Weiterleitung' };
-  const vorgangWeiterleitenUnchanged: VorgangE2E = buildVorgang(objectIds[0], 'Weiterleitung Peter und Emil');
-  const header: HeaderE2EComponent = new HeaderE2EComponent();
-
-  before(() => {
-    initVorgaenge([vorgangWeiterleiten, vorgangWeiterleitenUnchanged]);
-
-    loginAsSabine();
-
-    waitForSpinnerToDisappear();
-    exist(vorgangList.getRoot());
-  });
 
   after(() => {
     dropCollections();
   });
 
-  describe('Weiterleiten', () => {
+  describe('For Sabine', () => {
+    before(() => {
+      initVorgaenge([vorgangWeiterleiten]);
+
+      loginAsSabine();
+
+      waitForSpinnerToDisappear();
+      exist(vorgangList.getRoot());
+    });
+
     it('should display Weiterleiten button in Status Neu', () => {
       vorgangList.getListItem(vorgangWeiterleiten.name).getRoot().click();
       waitForSpinnerToDisappear();
@@ -46,33 +43,33 @@ describe('Vorgang weiterleiten', () => {
       exist(vorgangFormularButtons.getForwardButton());
     });
 
-    it('should not display Weiterleiten button in other Status', () => {
+    it('should not display Weiterleiten button in Status Angenommen', () => {
       vorgangFormularButtons.getAnnehmenButton().click();
       waitForSpinnerToDisappear();
+
       notExist(vorgangFormularButtons.getForwardButton());
+    });
 
+    it('should not display Weiterleiten button in Status In Bearbeitung', () => {
       vorgangFormularButtons.getBearbeitenButton().click();
       waitForSpinnerToDisappear();
+
       notExist(vorgangFormularButtons.getForwardButton());
     });
+  });
+
+  describe('For Peter', () => {
+    before(() => {
+      initVorgaenge([vorgangWeiterleiten]);
 
-    it('should not be displayed for user Peter in Status Neu', () => {
-      header.getCurrentUserProfile().logout();
       loginAsPeter();
-      waitForSpinnerToDisappear();
 
-      vorgangList.getListItem(vorgangWeiterleitenUnchanged.name).getRoot().click();
       waitForSpinnerToDisappear();
-
-      notExist(vorgangFormularButtons.getForwardButton());
+      exist(vorgangList.getRoot());
     });
 
-    it('should not be displayed for user Emil in Status Neu', () => {
-      header.getCurrentUserProfile().logout();
-      loginAsEmil();
-      waitForSpinnerToDisappear();
-
-      vorgangList.getListItem(vorgangWeiterleitenUnchanged.name).getRoot().click();
+    it('should not display Weiterleiten button in Status In Neu', () => {
+      vorgangList.getListItem(vorgangWeiterleiten.name).getRoot().click();
       waitForSpinnerToDisappear();
 
       notExist(vorgangFormularButtons.getForwardButton());
-- 
GitLab


From f5139e661e3acbf4fce1380fe2c10a5347ebb761 Mon Sep 17 00:00:00 2001
From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com>
Date: Mon, 10 Feb 2025 09:58:23 +0100
Subject: [PATCH 43/57] OZG-7474 Rename discard icon

---
 alfa-client/libs/design-system/src/index.ts   |  2 +-
 .../discard-icon.component.spec.ts            | 21 -------------------
 .../discard-vorgang-icon.component.spec.ts    | 21 +++++++++++++++++++
 .../discard-vorgang-icon.component.ts}        |  4 ++--
 .../discard-vorgang-icon.stories.ts}          | 10 ++++-----
 .../verwerfen-button.component.html           |  4 ++--
 .../verwerfen-button.component.spec.ts        |  4 ++--
 .../src/lib/vorgang-detail.module.ts          |  4 ++--
 8 files changed, 35 insertions(+), 35 deletions(-)
 delete mode 100644 alfa-client/libs/design-system/src/lib/icons/discard-icon/discard-icon.component.spec.ts
 create mode 100644 alfa-client/libs/design-system/src/lib/icons/discard-vorgang-icon/discard-vorgang-icon.component.spec.ts
 rename alfa-client/libs/design-system/src/lib/icons/{discard-icon/discard-icon.component.ts => discard-vorgang-icon/discard-vorgang-icon.component.ts} (93%)
 rename alfa-client/libs/design-system/src/lib/icons/{discard-icon/discard-icon.stories.ts => discard-vorgang-icon/discard-vorgang-icon.stories.ts} (63%)

diff --git a/alfa-client/libs/design-system/src/index.ts b/alfa-client/libs/design-system/src/index.ts
index 67b4390634..fb9bd32b7b 100644
--- a/alfa-client/libs/design-system/src/index.ts
+++ b/alfa-client/libs/design-system/src/index.ts
@@ -54,7 +54,7 @@ export * from './lib/icons/check-circle-icon/check-circle-icon.component';
 export * from './lib/icons/check-icon/check-icon.component';
 export * from './lib/icons/close-icon/close-icon.component';
 export * from './lib/icons/delete-finally-icon/delete-finally-icon.component';
-export * from './lib/icons/discard-icon/discard-icon.component';
+export * from './lib/icons/discard-vorgang-icon/discard-vorgang-icon.component';
 export * from './lib/icons/edit-icon/edit-icon.component';
 export * from './lib/icons/error-icon/error-icon.component';
 export * from './lib/icons/exclamation-icon/exclamation-icon.component';
diff --git a/alfa-client/libs/design-system/src/lib/icons/discard-icon/discard-icon.component.spec.ts b/alfa-client/libs/design-system/src/lib/icons/discard-icon/discard-icon.component.spec.ts
deleted file mode 100644
index 485cdcd99d..0000000000
--- a/alfa-client/libs/design-system/src/lib/icons/discard-icon/discard-icon.component.spec.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-import { DiscardIconComponent } from './discard-icon.component';
-
-describe('DiscardIconComponent', () => {
-  let component: DiscardIconComponent;
-  let fixture: ComponentFixture<DiscardIconComponent>;
-
-  beforeEach(async () => {
-    await TestBed.configureTestingModule({
-      imports: [DiscardIconComponent],
-    }).compileComponents();
-
-    fixture = TestBed.createComponent(DiscardIconComponent);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  });
-
-  it('should create', () => {
-    expect(component).toBeTruthy();
-  });
-});
diff --git a/alfa-client/libs/design-system/src/lib/icons/discard-vorgang-icon/discard-vorgang-icon.component.spec.ts b/alfa-client/libs/design-system/src/lib/icons/discard-vorgang-icon/discard-vorgang-icon.component.spec.ts
new file mode 100644
index 0000000000..42eed91241
--- /dev/null
+++ b/alfa-client/libs/design-system/src/lib/icons/discard-vorgang-icon/discard-vorgang-icon.component.spec.ts
@@ -0,0 +1,21 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { DiscardVorgangIconComponent } from './discard-vorgang-icon.component';
+
+describe('DiscardVorgangIconComponent', () => {
+  let component: DiscardVorgangIconComponent;
+  let fixture: ComponentFixture<DiscardVorgangIconComponent>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      imports: [DiscardVorgangIconComponent],
+    }).compileComponents();
+
+    fixture = TestBed.createComponent(DiscardVorgangIconComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/alfa-client/libs/design-system/src/lib/icons/discard-icon/discard-icon.component.ts b/alfa-client/libs/design-system/src/lib/icons/discard-vorgang-icon/discard-vorgang-icon.component.ts
similarity index 93%
rename from alfa-client/libs/design-system/src/lib/icons/discard-icon/discard-icon.component.ts
rename to alfa-client/libs/design-system/src/lib/icons/discard-vorgang-icon/discard-vorgang-icon.component.ts
index 377bf1af5b..1cee910fac 100644
--- a/alfa-client/libs/design-system/src/lib/icons/discard-icon/discard-icon.component.ts
+++ b/alfa-client/libs/design-system/src/lib/icons/discard-vorgang-icon/discard-vorgang-icon.component.ts
@@ -4,7 +4,7 @@ import { twMerge } from 'tailwind-merge';
 import { IconVariants, iconVariants } from '../iconVariants';
 
 @Component({
-  selector: 'ods-discard-icon',
+  selector: 'ods-discard-vorgang-icon',
   standalone: true,
   imports: [CommonModule],
   template: `<svg
@@ -23,7 +23,7 @@ import { IconVariants, iconVariants } from '../iconVariants';
     />
   </svg>`,
 })
-export class DiscardIconComponent {
+export class DiscardVorgangIconComponent {
   @Input() size: IconVariants['size'] = 'medium';
   @Input() class: string = '';
 
diff --git a/alfa-client/libs/design-system/src/lib/icons/discard-icon/discard-icon.stories.ts b/alfa-client/libs/design-system/src/lib/icons/discard-vorgang-icon/discard-vorgang-icon.stories.ts
similarity index 63%
rename from alfa-client/libs/design-system/src/lib/icons/discard-icon/discard-icon.stories.ts
rename to alfa-client/libs/design-system/src/lib/icons/discard-vorgang-icon/discard-vorgang-icon.stories.ts
index 9237024932..6c73a8fd59 100644
--- a/alfa-client/libs/design-system/src/lib/icons/discard-icon/discard-icon.stories.ts
+++ b/alfa-client/libs/design-system/src/lib/icons/discard-vorgang-icon/discard-vorgang-icon.stories.ts
@@ -1,16 +1,16 @@
 import type { Meta, StoryObj } from '@storybook/angular';
 
-import { DiscardIconComponent } from './discard-icon.component';
+import { DiscardVorgangIconComponent } from './discard-vorgang-icon.component';
 
-const meta: Meta<DiscardIconComponent> = {
-  title: 'Icons/Discard icon',
-  component: DiscardIconComponent,
+const meta: Meta<DiscardVorgangIconComponent> = {
+  title: 'Icons/Discard Vorgang icon',
+  component: DiscardVorgangIconComponent,
   excludeStories: /.*Data$/,
   tags: ['autodocs'],
 };
 
 export default meta;
-type Story = StoryObj<DiscardIconComponent>;
+type Story = StoryObj<DiscardVorgangIconComponent>;
 
 export const Default: Story = {
   args: { size: 'large' },
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/verwerfen-button/verwerfen-button.component.html b/alfa-client/libs/vorgang-detail/src/lib/buttons/verwerfen-button/verwerfen-button.component.html
index b5e8bd07fb..8d663e5e9b 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/verwerfen-button/verwerfen-button.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/verwerfen-button/verwerfen-button.component.html
@@ -33,7 +33,7 @@
       size="fit"
       (clickEmitter)="verwerfen()"
     >
-      <ods-discard-icon icon class="fill-text" />
+      <ods-discard-vorgang-icon icon class="fill-text" />
     </ods-button-with-spinner>
   } @else {
     <ods-button-with-spinner
@@ -43,7 +43,7 @@
       variant="outline"
       (clickEmitter)="verwerfen()"
     >
-      <ods-discard-icon icon />
+      <ods-discard-vorgang-icon icon />
     </ods-button-with-spinner>
   }
 }
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/verwerfen-button/verwerfen-button.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/buttons/verwerfen-button/verwerfen-button.component.spec.ts
index b751788dcc..ebdb6df88b 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/verwerfen-button/verwerfen-button.component.spec.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/verwerfen-button/verwerfen-button.component.spec.ts
@@ -26,7 +26,7 @@ import { mock } from '@alfa-client/test-utils';
 import { VorgangCommandService, VorgangWithEingangLinkRel } from '@alfa-client/vorgang-shared';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { ButtonWithSpinnerComponent } from '@ods/component';
-import { DiscardIconComponent } from '@ods/system';
+import { DiscardVorgangIconComponent } from '@ods/system';
 import { createCommandResource } from 'libs/command-shared/test/command';
 import { getDataTestIdOf } from 'libs/tech-shared/test/data-test';
 import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang';
@@ -51,7 +51,7 @@ describe('VerwerfenButtonComponent', () => {
       declarations: [
         VerwerfenButtonComponent,
         MockComponent(ButtonWithSpinnerComponent),
-        MockComponent(DiscardIconComponent),
+        MockComponent(DiscardVorgangIconComponent),
         HasLinkPipe,
       ],
       providers: [
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts
index dc75d98df3..6c46766049 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts
@@ -61,7 +61,7 @@ import {
   CheckCircleIconComponent,
   CheckIconComponent,
   CloseIconComponent,
-  DiscardIconComponent,
+  DiscardVorgangIconComponent,
   DropdownMenuComponent,
   DropdownMenuTextItemComponent,
   EditIconComponent,
@@ -188,7 +188,7 @@ const routes: Routes = [
     ForwardByOzgcloudButtonContainerComponent,
     TooltipDirective,
     EditIconComponent,
-    DiscardIconComponent,
+    DiscardVorgangIconComponent,
   ],
   declarations: [
     VorgangDetailPageComponent,
-- 
GitLab


From 9687f284aa13ef031115802528ba3a2cf411b5e6 Mon Sep 17 00:00:00 2001
From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com>
Date: Mon, 10 Feb 2025 10:14:43 +0100
Subject: [PATCH 44/57] OZG-7474 Rename delete finally icon

---
 alfa-client/libs/design-system/src/index.ts   |  2 +-
 .../delete-finally-icon.component.spec.ts     | 21 -------------------
 ...ete-vorgang-finally-icon.component.spec.ts | 21 +++++++++++++++++++
 .../delete-vorgang-finally-icon.component.ts} |  4 ++--
 .../delete-vorgang-finally-icon.stories.ts}   | 10 ++++-----
 .../endgueltig-loeschen-button.component.html |  4 ++--
 ...dgueltig-loeschen-button.component.spec.ts |  4 ++--
 .../src/lib/loesch-anforderung.module.ts      |  4 ++--
 8 files changed, 35 insertions(+), 35 deletions(-)
 delete mode 100644 alfa-client/libs/design-system/src/lib/icons/delete-finally-icon/delete-finally-icon.component.spec.ts
 create mode 100644 alfa-client/libs/design-system/src/lib/icons/delete-vorgang-finally-icon/delete-vorgang-finally-icon.component.spec.ts
 rename alfa-client/libs/design-system/src/lib/icons/{delete-finally-icon/delete-finally-icon.component.ts => delete-vorgang-finally-icon/delete-vorgang-finally-icon.component.ts} (96%)
 rename alfa-client/libs/design-system/src/lib/icons/{delete-finally-icon/delete-finally-icon.stories.ts => delete-vorgang-finally-icon/delete-vorgang-finally-icon.stories.ts} (60%)

diff --git a/alfa-client/libs/design-system/src/index.ts b/alfa-client/libs/design-system/src/index.ts
index fb9bd32b7b..7d048f1009 100644
--- a/alfa-client/libs/design-system/src/index.ts
+++ b/alfa-client/libs/design-system/src/index.ts
@@ -53,7 +53,7 @@ export * from './lib/icons/bescheid-upload-icon/bescheid-upload-icon.component';
 export * from './lib/icons/check-circle-icon/check-circle-icon.component';
 export * from './lib/icons/check-icon/check-icon.component';
 export * from './lib/icons/close-icon/close-icon.component';
-export * from './lib/icons/delete-finally-icon/delete-finally-icon.component';
+export * from './lib/icons/delete-vorgang-finally-icon/delete-vorgang-finally-icon.component';
 export * from './lib/icons/discard-vorgang-icon/discard-vorgang-icon.component';
 export * from './lib/icons/edit-icon/edit-icon.component';
 export * from './lib/icons/error-icon/error-icon.component';
diff --git a/alfa-client/libs/design-system/src/lib/icons/delete-finally-icon/delete-finally-icon.component.spec.ts b/alfa-client/libs/design-system/src/lib/icons/delete-finally-icon/delete-finally-icon.component.spec.ts
deleted file mode 100644
index 88eee559f2..0000000000
--- a/alfa-client/libs/design-system/src/lib/icons/delete-finally-icon/delete-finally-icon.component.spec.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-import { DeleteFinallyIconComponent } from './delete-finally-icon.component';
-
-describe('DeleteFinallyIconComponent', () => {
-  let component: DeleteFinallyIconComponent;
-  let fixture: ComponentFixture<DeleteFinallyIconComponent>;
-
-  beforeEach(async () => {
-    await TestBed.configureTestingModule({
-      imports: [DeleteFinallyIconComponent],
-    }).compileComponents();
-
-    fixture = TestBed.createComponent(DeleteFinallyIconComponent);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  });
-
-  it('should create', () => {
-    expect(component).toBeTruthy();
-  });
-});
diff --git a/alfa-client/libs/design-system/src/lib/icons/delete-vorgang-finally-icon/delete-vorgang-finally-icon.component.spec.ts b/alfa-client/libs/design-system/src/lib/icons/delete-vorgang-finally-icon/delete-vorgang-finally-icon.component.spec.ts
new file mode 100644
index 0000000000..badea86a5e
--- /dev/null
+++ b/alfa-client/libs/design-system/src/lib/icons/delete-vorgang-finally-icon/delete-vorgang-finally-icon.component.spec.ts
@@ -0,0 +1,21 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { DeleteVorgangFinallyIconComponent } from './delete-vorgang-finally-icon.component';
+
+describe('DeleteVorgangFinallyIconComponent', () => {
+  let component: DeleteVorgangFinallyIconComponent;
+  let fixture: ComponentFixture<DeleteVorgangFinallyIconComponent>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      imports: [DeleteVorgangFinallyIconComponent],
+    }).compileComponents();
+
+    fixture = TestBed.createComponent(DeleteVorgangFinallyIconComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/alfa-client/libs/design-system/src/lib/icons/delete-finally-icon/delete-finally-icon.component.ts b/alfa-client/libs/design-system/src/lib/icons/delete-vorgang-finally-icon/delete-vorgang-finally-icon.component.ts
similarity index 96%
rename from alfa-client/libs/design-system/src/lib/icons/delete-finally-icon/delete-finally-icon.component.ts
rename to alfa-client/libs/design-system/src/lib/icons/delete-vorgang-finally-icon/delete-vorgang-finally-icon.component.ts
index 5fc6c68cfa..4d99ed334f 100644
--- a/alfa-client/libs/design-system/src/lib/icons/delete-finally-icon/delete-finally-icon.component.ts
+++ b/alfa-client/libs/design-system/src/lib/icons/delete-vorgang-finally-icon/delete-vorgang-finally-icon.component.ts
@@ -4,7 +4,7 @@ import { twMerge } from 'tailwind-merge';
 import { IconVariants, iconVariants } from '../iconVariants';
 
 @Component({
-  selector: 'ods-delete-finally-icon',
+  selector: 'ods-delete-vorgang-finally-icon',
   standalone: true,
   imports: [CommonModule],
   template: `<svg
@@ -56,7 +56,7 @@ import { IconVariants, iconVariants } from '../iconVariants';
     />
   </svg> `,
 })
-export class DeleteFinallyIconComponent {
+export class DeleteVorgangFinallyIconComponent {
   @Input() size: IconVariants['size'] = 'medium';
   @Input() class: string = '';
 
diff --git a/alfa-client/libs/design-system/src/lib/icons/delete-finally-icon/delete-finally-icon.stories.ts b/alfa-client/libs/design-system/src/lib/icons/delete-vorgang-finally-icon/delete-vorgang-finally-icon.stories.ts
similarity index 60%
rename from alfa-client/libs/design-system/src/lib/icons/delete-finally-icon/delete-finally-icon.stories.ts
rename to alfa-client/libs/design-system/src/lib/icons/delete-vorgang-finally-icon/delete-vorgang-finally-icon.stories.ts
index dee35416ea..ddb92e8a00 100644
--- a/alfa-client/libs/design-system/src/lib/icons/delete-finally-icon/delete-finally-icon.stories.ts
+++ b/alfa-client/libs/design-system/src/lib/icons/delete-vorgang-finally-icon/delete-vorgang-finally-icon.stories.ts
@@ -1,16 +1,16 @@
 import type { Meta, StoryObj } from '@storybook/angular';
 
-import { DeleteFinallyIconComponent } from './delete-finally-icon.component';
+import { DeleteVorgangFinallyIconComponent } from './delete-vorgang-finally-icon.component';
 
-const meta: Meta<DeleteFinallyIconComponent> = {
-  title: 'Icons/Delete finally icon',
-  component: DeleteFinallyIconComponent,
+const meta: Meta<DeleteVorgangFinallyIconComponent> = {
+  title: 'Icons/Delete Vorgang finally icon',
+  component: DeleteVorgangFinallyIconComponent,
   excludeStories: /.*Data$/,
   tags: ['autodocs'],
 };
 
 export default meta;
-type Story = StoryObj<DeleteFinallyIconComponent>;
+type Story = StoryObj<DeleteVorgangFinallyIconComponent>;
 
 export const Default: Story = {
   args: { size: 'large' },
diff --git a/alfa-client/libs/loesch-anforderung/src/lib/endgueltig-loeschen-button-container/endgueltig-loeschen-button/endgueltig-loeschen-button.component.html b/alfa-client/libs/loesch-anforderung/src/lib/endgueltig-loeschen-button-container/endgueltig-loeschen-button/endgueltig-loeschen-button.component.html
index 4b20817356..bf476f537b 100644
--- a/alfa-client/libs/loesch-anforderung/src/lib/endgueltig-loeschen-button-container/endgueltig-loeschen-button/endgueltig-loeschen-button.component.html
+++ b/alfa-client/libs/loesch-anforderung/src/lib/endgueltig-loeschen-button-container/endgueltig-loeschen-button/endgueltig-loeschen-button.component.html
@@ -31,7 +31,7 @@
     size="fit"
     (clickEmitter)="endgueltigLoeschen.emit()"
   >
-    <ods-delete-finally-icon icon class="fill-text" />
+    <ods-delete-vorgang-finally-icon icon class="fill-text" />
   </ods-button-with-spinner>
 } @else {
   <ods-button-with-spinner
@@ -40,6 +40,6 @@
     variant="outline"
     (clickEmitter)="endgueltigLoeschen.emit()"
   >
-    <ods-delete-finally-icon icon />
+    <ods-delete-vorgang-finally-icon icon />
   </ods-button-with-spinner>
 }
diff --git a/alfa-client/libs/loesch-anforderung/src/lib/endgueltig-loeschen-button-container/endgueltig-loeschen-button/endgueltig-loeschen-button.component.spec.ts b/alfa-client/libs/loesch-anforderung/src/lib/endgueltig-loeschen-button-container/endgueltig-loeschen-button/endgueltig-loeschen-button.component.spec.ts
index 525dbbc86c..66d46e2f07 100644
--- a/alfa-client/libs/loesch-anforderung/src/lib/endgueltig-loeschen-button-container/endgueltig-loeschen-button/endgueltig-loeschen-button.component.spec.ts
+++ b/alfa-client/libs/loesch-anforderung/src/lib/endgueltig-loeschen-button-container/endgueltig-loeschen-button/endgueltig-loeschen-button.component.spec.ts
@@ -24,7 +24,7 @@
 import { existsAsHtmlElement, notExistsAsHtmlElement } from '@alfa-client/test-utils';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { ButtonWithSpinnerComponent } from '@ods/component';
-import { DeleteFinallyIconComponent } from '@ods/system';
+import { DeleteVorgangFinallyIconComponent } from '@ods/system';
 import { getDataTestIdOf } from 'libs/tech-shared/test/data-test';
 import { MockComponent } from 'ng-mocks';
 import { EndgueltigLoeschenButtonComponent } from './endgueltig-loeschen-button.component';
@@ -41,7 +41,7 @@ describe('EndgueltigLoeschenButtonComponent', () => {
       declarations: [
         EndgueltigLoeschenButtonComponent,
         MockComponent(ButtonWithSpinnerComponent),
-        MockComponent(DeleteFinallyIconComponent),
+        MockComponent(DeleteVorgangFinallyIconComponent),
       ],
     }).compileComponents();
 
diff --git a/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung.module.ts b/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung.module.ts
index 46602fb2d9..959c858988 100644
--- a/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung.module.ts
+++ b/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung.module.ts
@@ -28,7 +28,7 @@ import { VorgangSharedModule } from '@alfa-client/vorgang-shared';
 import { CommonModule } from '@angular/common';
 import { NgModule } from '@angular/core';
 import { ButtonWithSpinnerComponent } from '@ods/component';
-import { DeleteFinallyIconComponent, RequestDeletionIconComponent, UndoRequestDeletionIconComponent } from '@ods/system';
+import { DeleteVorgangFinallyIconComponent, RequestDeletionIconComponent, UndoRequestDeletionIconComponent } from '@ods/system';
 import { EndgueltigLoeschenButtonContainerComponent } from './endgueltig-loeschen-button-container/endgueltig-loeschen-button-container.component';
 import { EndgueltigLoeschenButtonComponent } from './endgueltig-loeschen-button-container/endgueltig-loeschen-button/endgueltig-loeschen-button.component';
 import { LoeschAnforderungZuruecknehmenButtonContainerComponent } from './loesch-anforderung-zuruecknehmen-button-container/loesch-anforderung-zuruecknehmen-button-container.component';
@@ -45,7 +45,7 @@ import { LoeschenAnfordernButtonComponent } from './loeschen-anfordern-button-co
     VorgangSharedModule,
     RequestDeletionIconComponent,
     ButtonWithSpinnerComponent,
-    DeleteFinallyIconComponent,
+    DeleteVorgangFinallyIconComponent,
     UndoRequestDeletionIconComponent,
   ],
   declarations: [
-- 
GitLab


From 11e3e77245fbeebdb66a60ea040c433782ff167d Mon Sep 17 00:00:00 2001
From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com>
Date: Mon, 10 Feb 2025 10:28:41 +0100
Subject: [PATCH 45/57] OZG-7474 Rename request deletion icon

---
 alfa-client/libs/design-system/src/index.ts   |  2 +-
 .../request-deletion-icon.component.spec.ts   | 21 -------------------
 ...st-vorgang-deletion-icon.component.spec.ts | 21 +++++++++++++++++++
 ...equest-vorgang-deletion-icon.component.ts} |  4 ++--
 .../request-vorgang-deletion-icon.stories.ts} | 10 ++++-----
 .../src/lib/loesch-anforderung.module.ts      |  8 +++++--
 .../loeschen-anfordern-button.component.html  |  4 ++--
 ...oeschen-anfordern-button.component.spec.ts |  4 ++--
 8 files changed, 39 insertions(+), 35 deletions(-)
 delete mode 100644 alfa-client/libs/design-system/src/lib/icons/request-deletion-icon/request-deletion-icon.component.spec.ts
 create mode 100644 alfa-client/libs/design-system/src/lib/icons/request-vorgang-deletion-icon/request-vorgang-deletion-icon.component.spec.ts
 rename alfa-client/libs/design-system/src/lib/icons/{request-deletion-icon/request-deletion-icon.component.ts => request-vorgang-deletion-icon/request-vorgang-deletion-icon.component.ts} (90%)
 rename alfa-client/libs/design-system/src/lib/icons/{request-deletion-icon/request-deletion-icon.stories.ts => request-vorgang-deletion-icon/request-vorgang-deletion-icon.stories.ts} (59%)

diff --git a/alfa-client/libs/design-system/src/index.ts b/alfa-client/libs/design-system/src/index.ts
index 7d048f1009..4c5f8e10ce 100644
--- a/alfa-client/libs/design-system/src/index.ts
+++ b/alfa-client/libs/design-system/src/index.ts
@@ -72,7 +72,7 @@ export * from './lib/icons/ozg-logo-icon/ozg-logo-icon.component';
 export * from './lib/icons/person-icon/person-icon.component';
 export * from './lib/icons/plus-icon/plus-icon.component';
 export * from './lib/icons/public-administration-icon/public-administration-icon.component';
-export * from './lib/icons/request-deletion-icon/request-deletion-icon.component';
+export * from './lib/icons/request-vorgang-deletion-icon/request-vorgang-deletion-icon.component';
 export * from './lib/icons/save-icon/save-icon.component';
 export * from './lib/icons/search-icon/search-icon.component';
 export * from './lib/icons/send-icon/send-icon.component';
diff --git a/alfa-client/libs/design-system/src/lib/icons/request-deletion-icon/request-deletion-icon.component.spec.ts b/alfa-client/libs/design-system/src/lib/icons/request-deletion-icon/request-deletion-icon.component.spec.ts
deleted file mode 100644
index 4de4999c60..0000000000
--- a/alfa-client/libs/design-system/src/lib/icons/request-deletion-icon/request-deletion-icon.component.spec.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-import { RequestDeletionIconComponent } from './request-deletion-icon.component';
-
-describe('RequestDeletionIconComponent', () => {
-  let component: RequestDeletionIconComponent;
-  let fixture: ComponentFixture<RequestDeletionIconComponent>;
-
-  beforeEach(async () => {
-    await TestBed.configureTestingModule({
-      imports: [RequestDeletionIconComponent],
-    }).compileComponents();
-
-    fixture = TestBed.createComponent(RequestDeletionIconComponent);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  });
-
-  it('should create', () => {
-    expect(component).toBeTruthy();
-  });
-});
diff --git a/alfa-client/libs/design-system/src/lib/icons/request-vorgang-deletion-icon/request-vorgang-deletion-icon.component.spec.ts b/alfa-client/libs/design-system/src/lib/icons/request-vorgang-deletion-icon/request-vorgang-deletion-icon.component.spec.ts
new file mode 100644
index 0000000000..e8655275d9
--- /dev/null
+++ b/alfa-client/libs/design-system/src/lib/icons/request-vorgang-deletion-icon/request-vorgang-deletion-icon.component.spec.ts
@@ -0,0 +1,21 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { RequestVorgangDeletionIconComponent } from './request-vorgang-deletion-icon.component';
+
+describe('RequestVorgangDeletionIconComponent', () => {
+  let component: RequestVorgangDeletionIconComponent;
+  let fixture: ComponentFixture<RequestVorgangDeletionIconComponent>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      imports: [RequestVorgangDeletionIconComponent],
+    }).compileComponents();
+
+    fixture = TestBed.createComponent(RequestVorgangDeletionIconComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/alfa-client/libs/design-system/src/lib/icons/request-deletion-icon/request-deletion-icon.component.ts b/alfa-client/libs/design-system/src/lib/icons/request-vorgang-deletion-icon/request-vorgang-deletion-icon.component.ts
similarity index 90%
rename from alfa-client/libs/design-system/src/lib/icons/request-deletion-icon/request-deletion-icon.component.ts
rename to alfa-client/libs/design-system/src/lib/icons/request-vorgang-deletion-icon/request-vorgang-deletion-icon.component.ts
index 7e42262610..ca9dd83e0e 100644
--- a/alfa-client/libs/design-system/src/lib/icons/request-deletion-icon/request-deletion-icon.component.ts
+++ b/alfa-client/libs/design-system/src/lib/icons/request-vorgang-deletion-icon/request-vorgang-deletion-icon.component.ts
@@ -4,7 +4,7 @@ import { twMerge } from 'tailwind-merge';
 import { iconVariants, IconVariants } from '../iconVariants';
 
 @Component({
-  selector: 'ods-request-deletion-icon',
+  selector: 'ods-request-vorgang-deletion-icon',
   standalone: true,
   imports: [CommonModule],
   template: `<svg
@@ -19,7 +19,7 @@ import { iconVariants, IconVariants } from '../iconVariants';
     />
   </svg>`,
 })
-export class RequestDeletionIconComponent {
+export class RequestVorgangDeletionIconComponent {
   @Input() size: IconVariants['size'] = 'medium';
   @Input() class: string = '';
 
diff --git a/alfa-client/libs/design-system/src/lib/icons/request-deletion-icon/request-deletion-icon.stories.ts b/alfa-client/libs/design-system/src/lib/icons/request-vorgang-deletion-icon/request-vorgang-deletion-icon.stories.ts
similarity index 59%
rename from alfa-client/libs/design-system/src/lib/icons/request-deletion-icon/request-deletion-icon.stories.ts
rename to alfa-client/libs/design-system/src/lib/icons/request-vorgang-deletion-icon/request-vorgang-deletion-icon.stories.ts
index d0ff870f40..eed9f6bc60 100644
--- a/alfa-client/libs/design-system/src/lib/icons/request-deletion-icon/request-deletion-icon.stories.ts
+++ b/alfa-client/libs/design-system/src/lib/icons/request-vorgang-deletion-icon/request-vorgang-deletion-icon.stories.ts
@@ -1,16 +1,16 @@
 import type { Meta, StoryObj } from '@storybook/angular';
 
-import { RequestDeletionIconComponent } from './request-deletion-icon.component';
+import { RequestVorgangDeletionIconComponent } from './request-vorgang-deletion-icon.component';
 
-const meta: Meta<RequestDeletionIconComponent> = {
-  title: 'Icons/Request deletion icon',
-  component: RequestDeletionIconComponent,
+const meta: Meta<RequestVorgangDeletionIconComponent> = {
+  title: 'Icons/Request Vorgang deletion icon',
+  component: RequestVorgangDeletionIconComponent,
   excludeStories: /.*Data$/,
   tags: ['autodocs'],
 };
 
 export default meta;
-type Story = StoryObj<RequestDeletionIconComponent>;
+type Story = StoryObj<RequestVorgangDeletionIconComponent>;
 
 export const Default: Story = {
   args: { size: 'large' },
diff --git a/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung.module.ts b/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung.module.ts
index 959c858988..741f80a0e3 100644
--- a/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung.module.ts
+++ b/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung.module.ts
@@ -28,7 +28,11 @@ import { VorgangSharedModule } from '@alfa-client/vorgang-shared';
 import { CommonModule } from '@angular/common';
 import { NgModule } from '@angular/core';
 import { ButtonWithSpinnerComponent } from '@ods/component';
-import { DeleteVorgangFinallyIconComponent, RequestDeletionIconComponent, UndoRequestDeletionIconComponent } from '@ods/system';
+import {
+  DeleteVorgangFinallyIconComponent,
+  RequestVorgangDeletionIconComponent,
+  UndoRequestDeletionIconComponent,
+} from '@ods/system';
 import { EndgueltigLoeschenButtonContainerComponent } from './endgueltig-loeschen-button-container/endgueltig-loeschen-button-container.component';
 import { EndgueltigLoeschenButtonComponent } from './endgueltig-loeschen-button-container/endgueltig-loeschen-button/endgueltig-loeschen-button.component';
 import { LoeschAnforderungZuruecknehmenButtonContainerComponent } from './loesch-anforderung-zuruecknehmen-button-container/loesch-anforderung-zuruecknehmen-button-container.component';
@@ -43,7 +47,7 @@ import { LoeschenAnfordernButtonComponent } from './loeschen-anfordern-button-co
     TechSharedModule,
     UiModule,
     VorgangSharedModule,
-    RequestDeletionIconComponent,
+    RequestVorgangDeletionIconComponent,
     ButtonWithSpinnerComponent,
     DeleteVorgangFinallyIconComponent,
     UndoRequestDeletionIconComponent,
diff --git a/alfa-client/libs/loesch-anforderung/src/lib/loeschen-anfordern-button-container/loeschen-anfordern-button/loeschen-anfordern-button.component.html b/alfa-client/libs/loesch-anforderung/src/lib/loeschen-anfordern-button-container/loeschen-anfordern-button/loeschen-anfordern-button.component.html
index 0598d5dfae..4a7cc9cb40 100644
--- a/alfa-client/libs/loesch-anforderung/src/lib/loeschen-anfordern-button-container/loeschen-anfordern-button/loeschen-anfordern-button.component.html
+++ b/alfa-client/libs/loesch-anforderung/src/lib/loeschen-anfordern-button-container/loeschen-anfordern-button/loeschen-anfordern-button.component.html
@@ -32,7 +32,7 @@
     size="fit"
     (clickEmitter)="loeschenAnfordern.emit()"
   >
-    <ods-request-deletion-icon icon class="fill-text" />
+    <ods-request-vorgang-deletion-icon icon class="fill-text" />
   </ods-button-with-spinner>
 } @else {
   <ods-button-with-spinner
@@ -42,6 +42,6 @@
     variant="outline"
     (clickEmitter)="loeschenAnfordern.emit()"
   >
-    <ods-request-deletion-icon icon />
+    <ods-request-vorgang-deletion-icon icon />
   </ods-button-with-spinner>
 }
diff --git a/alfa-client/libs/loesch-anforderung/src/lib/loeschen-anfordern-button-container/loeschen-anfordern-button/loeschen-anfordern-button.component.spec.ts b/alfa-client/libs/loesch-anforderung/src/lib/loeschen-anfordern-button-container/loeschen-anfordern-button/loeschen-anfordern-button.component.spec.ts
index 33fad21246..f859031baf 100644
--- a/alfa-client/libs/loesch-anforderung/src/lib/loeschen-anfordern-button-container/loeschen-anfordern-button/loeschen-anfordern-button.component.spec.ts
+++ b/alfa-client/libs/loesch-anforderung/src/lib/loeschen-anfordern-button-container/loeschen-anfordern-button/loeschen-anfordern-button.component.spec.ts
@@ -24,7 +24,7 @@
 import { existsAsHtmlElement, notExistsAsHtmlElement } from '@alfa-client/test-utils';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { ButtonWithSpinnerComponent } from '@ods/component';
-import { RequestDeletionIconComponent } from '@ods/system';
+import { RequestVorgangDeletionIconComponent } from '@ods/system';
 import { getDataTestIdOf } from 'libs/tech-shared/test/data-test';
 import { MockComponent } from 'ng-mocks';
 import { LoeschenAnfordernButtonComponent } from './loeschen-anfordern-button.component';
@@ -41,7 +41,7 @@ describe('LoeschenAnfordernButtonComponent', () => {
       declarations: [
         LoeschenAnfordernButtonComponent,
         MockComponent(ButtonWithSpinnerComponent),
-        MockComponent(RequestDeletionIconComponent),
+        MockComponent(RequestVorgangDeletionIconComponent),
       ],
     }).compileComponents();
 
-- 
GitLab


From 23238baceb27a54c881fd5544b250c6b2a1cced1 Mon Sep 17 00:00:00 2001
From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com>
Date: Mon, 10 Feb 2025 10:34:39 +0100
Subject: [PATCH 46/57] OZG-7474 Rename undo request deletion icon

---
 alfa-client/libs/design-system/src/index.ts   |  2 +-
 ...do-request-deletion-icon.component.spec.ts | 21 -------------------
 ...st-vorgang-deletion-icon.component.spec.ts | 21 +++++++++++++++++++
 ...equest-vorgang-deletion-icon.component.ts} |  4 ++--
 ...-request-vorgang-deletion-icon.stories.ts} | 10 ++++-----
 ...derung-zuruecknehmen-button.component.html |  4 ++--
 ...ung-zuruecknehmen-button.component.spec.ts |  4 ++--
 .../src/lib/loesch-anforderung.module.ts      |  4 ++--
 8 files changed, 35 insertions(+), 35 deletions(-)
 delete mode 100644 alfa-client/libs/design-system/src/lib/icons/undo-request-deletion-icon/undo-request-deletion-icon.component.spec.ts
 create mode 100644 alfa-client/libs/design-system/src/lib/icons/undo-request-vorgang-deletion-icon/undo-request-vorgang-deletion-icon.component.spec.ts
 rename alfa-client/libs/design-system/src/lib/icons/{undo-request-deletion-icon/undo-request-deletion-icon.component.ts => undo-request-vorgang-deletion-icon/undo-request-vorgang-deletion-icon.component.ts} (89%)
 rename alfa-client/libs/design-system/src/lib/icons/{undo-request-deletion-icon/undo-request-deletion-icon.stories.ts => undo-request-vorgang-deletion-icon/undo-request-vorgang-deletion-icon.stories.ts} (57%)

diff --git a/alfa-client/libs/design-system/src/index.ts b/alfa-client/libs/design-system/src/index.ts
index 4c5f8e10ce..29e0e0d41a 100644
--- a/alfa-client/libs/design-system/src/index.ts
+++ b/alfa-client/libs/design-system/src/index.ts
@@ -80,7 +80,7 @@ export * from './lib/icons/settings-icon/settings-icon.component';
 export * from './lib/icons/spinner-icon/spinner-icon.component';
 export * from './lib/icons/stamp-icon/stamp-icon.component';
 export * from './lib/icons/statistic-icon/statistic-icon.component';
-export * from './lib/icons/undo-request-deletion-icon/undo-request-deletion-icon.component';
+export * from './lib/icons/undo-request-vorgang-deletion-icon/undo-request-vorgang-deletion-icon.component';
 export * from './lib/icons/update-icon/update-icon.component';
 export * from './lib/icons/user-icon/user-icon.component';
 export * from './lib/icons/users-icon/users-icon.component';
diff --git a/alfa-client/libs/design-system/src/lib/icons/undo-request-deletion-icon/undo-request-deletion-icon.component.spec.ts b/alfa-client/libs/design-system/src/lib/icons/undo-request-deletion-icon/undo-request-deletion-icon.component.spec.ts
deleted file mode 100644
index 46b0e0fd8e..0000000000
--- a/alfa-client/libs/design-system/src/lib/icons/undo-request-deletion-icon/undo-request-deletion-icon.component.spec.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-import { UndoRequestDeletionIconComponent } from './undo-request-deletion-icon.component';
-
-describe('UndoRequestDeletionIconComponent', () => {
-  let component: UndoRequestDeletionIconComponent;
-  let fixture: ComponentFixture<UndoRequestDeletionIconComponent>;
-
-  beforeEach(async () => {
-    await TestBed.configureTestingModule({
-      imports: [UndoRequestDeletionIconComponent],
-    }).compileComponents();
-
-    fixture = TestBed.createComponent(UndoRequestDeletionIconComponent);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  });
-
-  it('should create', () => {
-    expect(component).toBeTruthy();
-  });
-});
diff --git a/alfa-client/libs/design-system/src/lib/icons/undo-request-vorgang-deletion-icon/undo-request-vorgang-deletion-icon.component.spec.ts b/alfa-client/libs/design-system/src/lib/icons/undo-request-vorgang-deletion-icon/undo-request-vorgang-deletion-icon.component.spec.ts
new file mode 100644
index 0000000000..8ac05bee99
--- /dev/null
+++ b/alfa-client/libs/design-system/src/lib/icons/undo-request-vorgang-deletion-icon/undo-request-vorgang-deletion-icon.component.spec.ts
@@ -0,0 +1,21 @@
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { UndoRequestVorgangDeletionIconComponent } from './undo-request-vorgang-deletion-icon.component';
+
+describe('UndoRequestVorgangDeletionIconComponent', () => {
+  let component: UndoRequestVorgangDeletionIconComponent;
+  let fixture: ComponentFixture<UndoRequestVorgangDeletionIconComponent>;
+
+  beforeEach(async () => {
+    await TestBed.configureTestingModule({
+      imports: [UndoRequestVorgangDeletionIconComponent],
+    }).compileComponents();
+
+    fixture = TestBed.createComponent(UndoRequestVorgangDeletionIconComponent);
+    component = fixture.componentInstance;
+    fixture.detectChanges();
+  });
+
+  it('should create', () => {
+    expect(component).toBeTruthy();
+  });
+});
diff --git a/alfa-client/libs/design-system/src/lib/icons/undo-request-deletion-icon/undo-request-deletion-icon.component.ts b/alfa-client/libs/design-system/src/lib/icons/undo-request-vorgang-deletion-icon/undo-request-vorgang-deletion-icon.component.ts
similarity index 89%
rename from alfa-client/libs/design-system/src/lib/icons/undo-request-deletion-icon/undo-request-deletion-icon.component.ts
rename to alfa-client/libs/design-system/src/lib/icons/undo-request-vorgang-deletion-icon/undo-request-vorgang-deletion-icon.component.ts
index afdcfae650..0140ae651f 100644
--- a/alfa-client/libs/design-system/src/lib/icons/undo-request-deletion-icon/undo-request-deletion-icon.component.ts
+++ b/alfa-client/libs/design-system/src/lib/icons/undo-request-vorgang-deletion-icon/undo-request-vorgang-deletion-icon.component.ts
@@ -4,7 +4,7 @@ import { twMerge } from 'tailwind-merge';
 import { iconVariants, IconVariants } from '../iconVariants';
 
 @Component({
-  selector: 'ods-undo-request-deletion-icon',
+  selector: 'ods-undo-request-vorgang-deletion-icon',
   standalone: true,
   imports: [CommonModule],
   template: `<svg
@@ -18,7 +18,7 @@ import { iconVariants, IconVariants } from '../iconVariants';
     />
   </svg>`,
 })
-export class UndoRequestDeletionIconComponent {
+export class UndoRequestVorgangDeletionIconComponent {
   @Input() size: IconVariants['size'] = 'medium';
   @Input() class: string = '';
 
diff --git a/alfa-client/libs/design-system/src/lib/icons/undo-request-deletion-icon/undo-request-deletion-icon.stories.ts b/alfa-client/libs/design-system/src/lib/icons/undo-request-vorgang-deletion-icon/undo-request-vorgang-deletion-icon.stories.ts
similarity index 57%
rename from alfa-client/libs/design-system/src/lib/icons/undo-request-deletion-icon/undo-request-deletion-icon.stories.ts
rename to alfa-client/libs/design-system/src/lib/icons/undo-request-vorgang-deletion-icon/undo-request-vorgang-deletion-icon.stories.ts
index 88a4f0fe21..c5f0bd31fa 100644
--- a/alfa-client/libs/design-system/src/lib/icons/undo-request-deletion-icon/undo-request-deletion-icon.stories.ts
+++ b/alfa-client/libs/design-system/src/lib/icons/undo-request-vorgang-deletion-icon/undo-request-vorgang-deletion-icon.stories.ts
@@ -1,16 +1,16 @@
 import type { Meta, StoryObj } from '@storybook/angular';
 
-import { UndoRequestDeletionIconComponent } from './undo-request-deletion-icon.component';
+import { UndoRequestVorgangDeletionIconComponent } from './undo-request-vorgang-deletion-icon.component';
 
-const meta: Meta<UndoRequestDeletionIconComponent> = {
-  title: 'Icons/Undo request deletion icon',
-  component: UndoRequestDeletionIconComponent,
+const meta: Meta<UndoRequestVorgangDeletionIconComponent> = {
+  title: 'Icons/Undo request vorgang deletion icon',
+  component: UndoRequestVorgangDeletionIconComponent,
   excludeStories: /.*Data$/,
   tags: ['autodocs'],
 };
 
 export default meta;
-type Story = StoryObj<UndoRequestDeletionIconComponent>;
+type Story = StoryObj<UndoRequestVorgangDeletionIconComponent>;
 
 export const Default: Story = {
   args: { size: 'large' },
diff --git a/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung-zuruecknehmen-button-container/loesch-anforderung-zuruecknehmen-button/loesch-anforderung-zuruecknehmen-button.component.html b/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung-zuruecknehmen-button-container/loesch-anforderung-zuruecknehmen-button/loesch-anforderung-zuruecknehmen-button.component.html
index 70f002e914..3aee95356b 100644
--- a/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung-zuruecknehmen-button-container/loesch-anforderung-zuruecknehmen-button/loesch-anforderung-zuruecknehmen-button.component.html
+++ b/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung-zuruecknehmen-button-container/loesch-anforderung-zuruecknehmen-button/loesch-anforderung-zuruecknehmen-button.component.html
@@ -32,7 +32,7 @@
     size="fit"
     (clickEmitter)="loeschAnforderungZuruecknehmen.emit()"
   >
-    <ods-undo-request-deletion-icon icon class="fill-text" />
+    <ods-undo-request-vorgang-deletion-icon icon class="fill-text" />
   </ods-button-with-spinner>
 } @else {
   <ods-button-with-spinner
@@ -42,6 +42,6 @@
     variant="outline"
     (clickEmitter)="loeschAnforderungZuruecknehmen.emit()"
   >
-    <ods-undo-request-deletion-icon icon />
+    <ods-undo-request-vorgang-deletion-icon icon />
   </ods-button-with-spinner>
 }
diff --git a/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung-zuruecknehmen-button-container/loesch-anforderung-zuruecknehmen-button/loesch-anforderung-zuruecknehmen-button.component.spec.ts b/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung-zuruecknehmen-button-container/loesch-anforderung-zuruecknehmen-button/loesch-anforderung-zuruecknehmen-button.component.spec.ts
index f1d0a15c80..f51d85f101 100644
--- a/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung-zuruecknehmen-button-container/loesch-anforderung-zuruecknehmen-button/loesch-anforderung-zuruecknehmen-button.component.spec.ts
+++ b/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung-zuruecknehmen-button-container/loesch-anforderung-zuruecknehmen-button/loesch-anforderung-zuruecknehmen-button.component.spec.ts
@@ -24,7 +24,7 @@
 import { existsAsHtmlElement, notExistsAsHtmlElement } from '@alfa-client/test-utils';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { ButtonWithSpinnerComponent } from '@ods/component';
-import { UndoRequestDeletionIconComponent } from '@ods/system';
+import { UndoRequestVorgangDeletionIconComponent } from '@ods/system';
 import { getDataTestIdOf } from 'libs/tech-shared/test/data-test';
 import { MockComponent } from 'ng-mocks';
 import { LoeschAnforderungZuruecknehmenButtonComponent } from './loesch-anforderung-zuruecknehmen-button.component';
@@ -41,7 +41,7 @@ describe('LoeschAnforderungZuruecknehmenButtonComponent', () => {
       declarations: [
         LoeschAnforderungZuruecknehmenButtonComponent,
         MockComponent(ButtonWithSpinnerComponent),
-        MockComponent(UndoRequestDeletionIconComponent),
+        MockComponent(UndoRequestVorgangDeletionIconComponent),
       ],
     }).compileComponents();
 
diff --git a/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung.module.ts b/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung.module.ts
index 741f80a0e3..7c4b75ff77 100644
--- a/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung.module.ts
+++ b/alfa-client/libs/loesch-anforderung/src/lib/loesch-anforderung.module.ts
@@ -31,7 +31,7 @@ import { ButtonWithSpinnerComponent } from '@ods/component';
 import {
   DeleteVorgangFinallyIconComponent,
   RequestVorgangDeletionIconComponent,
-  UndoRequestDeletionIconComponent,
+  UndoRequestVorgangDeletionIconComponent,
 } from '@ods/system';
 import { EndgueltigLoeschenButtonContainerComponent } from './endgueltig-loeschen-button-container/endgueltig-loeschen-button-container.component';
 import { EndgueltigLoeschenButtonComponent } from './endgueltig-loeschen-button-container/endgueltig-loeschen-button/endgueltig-loeschen-button.component';
@@ -50,7 +50,7 @@ import { LoeschenAnfordernButtonComponent } from './loeschen-anfordern-button-co
     RequestVorgangDeletionIconComponent,
     ButtonWithSpinnerComponent,
     DeleteVorgangFinallyIconComponent,
-    UndoRequestDeletionIconComponent,
+    UndoRequestVorgangDeletionIconComponent,
   ],
   declarations: [
     LoeschenAnfordernButtonContainerComponent,
-- 
GitLab


From f0d7557f35cad433445c65ec8fbb54ee1ff5d381 Mon Sep 17 00:00:00 2001
From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com>
Date: Mon, 10 Feb 2025 10:40:06 +0100
Subject: [PATCH 47/57] OZG-7474 Rename forward icon

---
 alfa-client/libs/design-system/src/index.ts          |  2 +-
 .../forward-vorgang-icon.component.spec.ts}          | 12 ++++++------
 .../forward-vorgang-icon.component.ts}               |  4 ++--
 .../forward-vorgang-icon.stories.ts}                 | 10 +++++-----
 ...rward-by-ozgcloud-button-container.component.html |  4 ++--
 ...rd-by-ozgcloud-button-container.component.spec.ts |  4 ++--
 ...forward-by-ozgcloud-button-container.component.ts |  4 ++--
 7 files changed, 20 insertions(+), 20 deletions(-)
 rename alfa-client/libs/design-system/src/lib/icons/{forward-icon/forward-icon.component.spec.ts => forward-vorgang-icon/forward-vorgang-icon.component.spec.ts} (78%)
 rename alfa-client/libs/design-system/src/lib/icons/{forward-icon/forward-icon.component.ts => forward-vorgang-icon/forward-vorgang-icon.component.ts} (96%)
 rename alfa-client/libs/design-system/src/lib/icons/{forward-icon/forward-icon.stories.ts => forward-vorgang-icon/forward-vorgang-icon.stories.ts} (84%)

diff --git a/alfa-client/libs/design-system/src/index.ts b/alfa-client/libs/design-system/src/index.ts
index 29e0e0d41a..88419a602f 100644
--- a/alfa-client/libs/design-system/src/index.ts
+++ b/alfa-client/libs/design-system/src/index.ts
@@ -60,7 +60,7 @@ export * from './lib/icons/error-icon/error-icon.component';
 export * from './lib/icons/exclamation-icon/exclamation-icon.component';
 export * from './lib/icons/external-unit-icon/external-unit-icon.component';
 export * from './lib/icons/file-icon/file-icon.component';
-export * from './lib/icons/forward-icon/forward-icon.component';
+export * from './lib/icons/forward-vorgang-icon/forward-vorgang-icon.component';
 export * from './lib/icons/help-icon/help-icon.component';
 export * from './lib/icons/iconVariants';
 export * from './lib/icons/logout-icon/logout-icon.component';
diff --git a/alfa-client/libs/design-system/src/lib/icons/forward-icon/forward-icon.component.spec.ts b/alfa-client/libs/design-system/src/lib/icons/forward-vorgang-icon/forward-vorgang-icon.component.spec.ts
similarity index 78%
rename from alfa-client/libs/design-system/src/lib/icons/forward-icon/forward-icon.component.spec.ts
rename to alfa-client/libs/design-system/src/lib/icons/forward-vorgang-icon/forward-vorgang-icon.component.spec.ts
index 6f765213a0..dcbe4c3e63 100644
--- a/alfa-client/libs/design-system/src/lib/icons/forward-icon/forward-icon.component.spec.ts
+++ b/alfa-client/libs/design-system/src/lib/icons/forward-vorgang-icon/forward-vorgang-icon.component.spec.ts
@@ -22,18 +22,18 @@
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
 import { ComponentFixture, TestBed } from '@angular/core/testing';
-import { ForwardIconComponent } from './forward-icon.component';
+import { ForwardVorgangIconComponent } from './forward-vorgang-icon.component';
 
-describe('ForwardIconComponent', () => {
-  let component: ForwardIconComponent;
-  let fixture: ComponentFixture<ForwardIconComponent>;
+describe('ForwardVorgangIconComponent', () => {
+  let component: ForwardVorgangIconComponent;
+  let fixture: ComponentFixture<ForwardVorgangIconComponent>;
 
   beforeEach(async () => {
     await TestBed.configureTestingModule({
-      imports: [ForwardIconComponent],
+      imports: [ForwardVorgangIconComponent],
     }).compileComponents();
 
-    fixture = TestBed.createComponent(ForwardIconComponent);
+    fixture = TestBed.createComponent(ForwardVorgangIconComponent);
     component = fixture.componentInstance;
     fixture.detectChanges();
   });
diff --git a/alfa-client/libs/design-system/src/lib/icons/forward-icon/forward-icon.component.ts b/alfa-client/libs/design-system/src/lib/icons/forward-vorgang-icon/forward-vorgang-icon.component.ts
similarity index 96%
rename from alfa-client/libs/design-system/src/lib/icons/forward-icon/forward-icon.component.ts
rename to alfa-client/libs/design-system/src/lib/icons/forward-vorgang-icon/forward-vorgang-icon.component.ts
index 586fbe1527..983f661619 100644
--- a/alfa-client/libs/design-system/src/lib/icons/forward-icon/forward-icon.component.ts
+++ b/alfa-client/libs/design-system/src/lib/icons/forward-vorgang-icon/forward-vorgang-icon.component.ts
@@ -27,7 +27,7 @@ import { twMerge } from 'tailwind-merge';
 import { iconVariants, IconVariants } from '../iconVariants';
 
 @Component({
-  selector: 'ods-forward-icon',
+  selector: 'ods-forward-vorgang-icon',
   standalone: true,
   imports: [NgClass],
   template: `<svg
@@ -44,7 +44,7 @@ import { iconVariants, IconVariants } from '../iconVariants';
     />
   </svg>`,
 })
-export class ForwardIconComponent {
+export class ForwardVorgangIconComponent {
   @Input() size: IconVariants['size'] = 'medium';
   @Input() class: string = undefined;
 
diff --git a/alfa-client/libs/design-system/src/lib/icons/forward-icon/forward-icon.stories.ts b/alfa-client/libs/design-system/src/lib/icons/forward-vorgang-icon/forward-vorgang-icon.stories.ts
similarity index 84%
rename from alfa-client/libs/design-system/src/lib/icons/forward-icon/forward-icon.stories.ts
rename to alfa-client/libs/design-system/src/lib/icons/forward-vorgang-icon/forward-vorgang-icon.stories.ts
index 07e7e62158..2fd3fa932e 100644
--- a/alfa-client/libs/design-system/src/lib/icons/forward-icon/forward-icon.stories.ts
+++ b/alfa-client/libs/design-system/src/lib/icons/forward-vorgang-icon/forward-vorgang-icon.stories.ts
@@ -23,17 +23,17 @@
  */
 import type { Meta, StoryObj } from '@storybook/angular';
 
-import { ForwardIconComponent } from './forward-icon.component';
+import { ForwardVorgangIconComponent } from './forward-vorgang-icon.component';
 
-const meta: Meta<ForwardIconComponent> = {
-  title: 'Icons/Forward icon',
-  component: ForwardIconComponent,
+const meta: Meta<ForwardVorgangIconComponent> = {
+  title: 'Icons/Forward Vorgang icon',
+  component: ForwardVorgangIconComponent,
   excludeStories: /.*Data$/,
   tags: ['autodocs'],
 };
 
 export default meta;
-type Story = StoryObj<ForwardIconComponent>;
+type Story = StoryObj<ForwardVorgangIconComponent>;
 
 export const Default: Story = {
   args: { size: 'large' },
diff --git a/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.html b/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.html
index ef41584d17..c3a536b79e 100644
--- a/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.html
+++ b/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.html
@@ -6,11 +6,11 @@
       size="fit"
       dataTestId="forward-by-ozgcloud-icon-button"
     >
-      <ods-forward-icon icon class="fill-text" />
+      <ods-forward-vorgang-icon icon class="fill-text" />
     </ods-button-with-spinner>
   } @else {
     <ods-button-with-spinner text="Weiterleiten" variant="outline" dataTestId="forward-by-ozgcloud-button">
-      <ods-forward-icon icon />
+      <ods-forward-vorgang-icon icon />
     </ods-button-with-spinner>
   }
 }
diff --git a/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.spec.ts b/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.spec.ts
index 8b978c4749..3479fbc724 100644
--- a/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.spec.ts
+++ b/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.spec.ts
@@ -2,7 +2,7 @@ import { existsAsHtmlElement, notExistsAsHtmlElement } from '@alfa-client/test-u
 import { VorgangWithEingangLinkRel } from '@alfa-client/vorgang-shared';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { ButtonWithSpinnerComponent } from '@ods/component';
-import { ForwardIconComponent, TooltipDirective } from '@ods/system';
+import { ForwardVorgangIconComponent, TooltipDirective } from '@ods/system';
 import { getDataTestIdAttributeOf } from 'libs/tech-shared/test/data-test';
 import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang';
 import { MockComponent, MockDirective } from 'ng-mocks';
@@ -20,7 +20,7 @@ describe('ForwardByOzgcloudButtonContainerComponent', () => {
       imports: [ForwardByOzgcloudButtonContainerComponent],
       declarations: [
         MockComponent(ButtonWithSpinnerComponent),
-        MockComponent(ForwardIconComponent),
+        MockComponent(ForwardVorgangIconComponent),
         MockDirective(TooltipDirective),
       ],
     }).compileComponents();
diff --git a/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.ts b/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.ts
index 04498b4cfc..b00da7ddb3 100644
--- a/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.ts
+++ b/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.ts
@@ -3,12 +3,12 @@ import { VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-cli
 import { CommonModule } from '@angular/common';
 import { Component, Input } from '@angular/core';
 import { ButtonWithSpinnerComponent } from '@ods/component';
-import { ForwardIconComponent, TooltipDirective } from '@ods/system';
+import { ForwardVorgangIconComponent, TooltipDirective } from '@ods/system';
 
 @Component({
   selector: 'alfa-forward-by-ozgcloud-button-container',
   standalone: true,
-  imports: [CommonModule, TechSharedModule, ButtonWithSpinnerComponent, ForwardIconComponent, TooltipDirective],
+  imports: [CommonModule, TechSharedModule, ButtonWithSpinnerComponent, ForwardVorgangIconComponent, TooltipDirective],
   templateUrl: './forward-by-ozgcloud-button-container.component.html',
   styles: [':host {@apply empty:hidden}'],
 })
-- 
GitLab


From da5e2b6d9bfd756dca9a6346edf24753a229e74c Mon Sep 17 00:00:00 2001
From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com>
Date: Mon, 10 Feb 2025 10:44:57 +0100
Subject: [PATCH 48/57] OZG-7474 Rename back arrow icon

---
 alfa-client/libs/design-system/src/index.ts          |  2 +-
 .../undo-icon.component.spec.ts}                     | 12 ++++++------
 .../undo-icon.component.ts}                          |  4 ++--
 .../undo-icon.stories.ts}                            | 10 +++++-----
 .../wiedereroeffnen-button.component.html            |  4 ++--
 .../wiedereroeffnen-button.component.spec.ts         |  4 ++--
 .../zurueckholen-button.component.html               |  4 ++--
 .../zurueckholen-button.component.spec.ts            |  4 ++--
 .../zurueckstellen-button.component.html             |  4 ++--
 .../zurueckstellen-button.component.spec.ts          |  4 ++--
 .../vorgang-detail/src/lib/vorgang-detail.module.ts  |  4 ++--
 11 files changed, 28 insertions(+), 28 deletions(-)
 rename alfa-client/libs/design-system/src/lib/icons/{back-arrow-icon/back-arrow-icon.component.spec.ts => undo-icon/undo-icon.component.spec.ts} (50%)
 rename alfa-client/libs/design-system/src/lib/icons/{back-arrow-icon/back-arrow-icon.component.ts => undo-icon/undo-icon.component.ts} (91%)
 rename alfa-client/libs/design-system/src/lib/icons/{back-arrow-icon/back-arrow-icon.stories.ts => undo-icon/undo-icon.stories.ts} (66%)

diff --git a/alfa-client/libs/design-system/src/index.ts b/alfa-client/libs/design-system/src/index.ts
index 88419a602f..7c071e98e3 100644
--- a/alfa-client/libs/design-system/src/index.ts
+++ b/alfa-client/libs/design-system/src/index.ts
@@ -47,7 +47,6 @@ export * from './lib/icons/admin-logo-icon/admin-logo-icon.component';
 export * from './lib/icons/archive-icon/archive-icon.component';
 export * from './lib/icons/arrow-left-icon/arrow-left-icon.component';
 export * from './lib/icons/attachment-icon/attachment-icon.component';
-export * from './lib/icons/back-arrow-icon/back-arrow-icon.component';
 export * from './lib/icons/bescheid-generate-icon/bescheid-generate-icon.component';
 export * from './lib/icons/bescheid-upload-icon/bescheid-upload-icon.component';
 export * from './lib/icons/check-circle-icon/check-circle-icon.component';
@@ -80,6 +79,7 @@ export * from './lib/icons/settings-icon/settings-icon.component';
 export * from './lib/icons/spinner-icon/spinner-icon.component';
 export * from './lib/icons/stamp-icon/stamp-icon.component';
 export * from './lib/icons/statistic-icon/statistic-icon.component';
+export * from './lib/icons/undo-icon/undo-icon.component';
 export * from './lib/icons/undo-request-vorgang-deletion-icon/undo-request-vorgang-deletion-icon.component';
 export * from './lib/icons/update-icon/update-icon.component';
 export * from './lib/icons/user-icon/user-icon.component';
diff --git a/alfa-client/libs/design-system/src/lib/icons/back-arrow-icon/back-arrow-icon.component.spec.ts b/alfa-client/libs/design-system/src/lib/icons/undo-icon/undo-icon.component.spec.ts
similarity index 50%
rename from alfa-client/libs/design-system/src/lib/icons/back-arrow-icon/back-arrow-icon.component.spec.ts
rename to alfa-client/libs/design-system/src/lib/icons/undo-icon/undo-icon.component.spec.ts
index 97ab265a26..fda1f7e237 100644
--- a/alfa-client/libs/design-system/src/lib/icons/back-arrow-icon/back-arrow-icon.component.spec.ts
+++ b/alfa-client/libs/design-system/src/lib/icons/undo-icon/undo-icon.component.spec.ts
@@ -1,16 +1,16 @@
 import { ComponentFixture, TestBed } from '@angular/core/testing';
-import { BackArrowIconComponent } from './back-arrow-icon.component';
+import { UndoIconComponent } from './undo-icon.component';
 
-describe('BackArrowIconComponent', () => {
-  let component: BackArrowIconComponent;
-  let fixture: ComponentFixture<BackArrowIconComponent>;
+describe('UndoIconComponent', () => {
+  let component: UndoIconComponent;
+  let fixture: ComponentFixture<UndoIconComponent>;
 
   beforeEach(async () => {
     await TestBed.configureTestingModule({
-      imports: [BackArrowIconComponent],
+      imports: [UndoIconComponent],
     }).compileComponents();
 
-    fixture = TestBed.createComponent(BackArrowIconComponent);
+    fixture = TestBed.createComponent(UndoIconComponent);
     component = fixture.componentInstance;
     fixture.detectChanges();
   });
diff --git a/alfa-client/libs/design-system/src/lib/icons/back-arrow-icon/back-arrow-icon.component.ts b/alfa-client/libs/design-system/src/lib/icons/undo-icon/undo-icon.component.ts
similarity index 91%
rename from alfa-client/libs/design-system/src/lib/icons/back-arrow-icon/back-arrow-icon.component.ts
rename to alfa-client/libs/design-system/src/lib/icons/undo-icon/undo-icon.component.ts
index 6a386e8222..7b36f81af4 100644
--- a/alfa-client/libs/design-system/src/lib/icons/back-arrow-icon/back-arrow-icon.component.ts
+++ b/alfa-client/libs/design-system/src/lib/icons/undo-icon/undo-icon.component.ts
@@ -4,7 +4,7 @@ import { twMerge } from 'tailwind-merge';
 import { iconVariants, IconVariants } from '../iconVariants';
 
 @Component({
-  selector: 'ods-back-arrow-icon',
+  selector: 'ods-undo-icon',
   standalone: true,
   imports: [CommonModule],
   template: `<svg
@@ -18,7 +18,7 @@ import { iconVariants, IconVariants } from '../iconVariants';
     />
   </svg>`,
 })
-export class BackArrowIconComponent {
+export class UndoIconComponent {
   @Input() size: IconVariants['size'] = 'medium';
   @Input() class: string = '';
 
diff --git a/alfa-client/libs/design-system/src/lib/icons/back-arrow-icon/back-arrow-icon.stories.ts b/alfa-client/libs/design-system/src/lib/icons/undo-icon/undo-icon.stories.ts
similarity index 66%
rename from alfa-client/libs/design-system/src/lib/icons/back-arrow-icon/back-arrow-icon.stories.ts
rename to alfa-client/libs/design-system/src/lib/icons/undo-icon/undo-icon.stories.ts
index 280e82230b..0d2d78f814 100644
--- a/alfa-client/libs/design-system/src/lib/icons/back-arrow-icon/back-arrow-icon.stories.ts
+++ b/alfa-client/libs/design-system/src/lib/icons/undo-icon/undo-icon.stories.ts
@@ -1,16 +1,16 @@
 import type { Meta, StoryObj } from '@storybook/angular';
 
-import { BackArrowIconComponent } from './back-arrow-icon.component';
+import { UndoIconComponent } from './undo-icon.component';
 
-const meta: Meta<BackArrowIconComponent> = {
-  title: 'Icons/Back arrow icon',
-  component: BackArrowIconComponent,
+const meta: Meta<UndoIconComponent> = {
+  title: 'Icons/Undo icon',
+  component: UndoIconComponent,
   excludeStories: /.*Data$/,
   tags: ['autodocs'],
 };
 
 export default meta;
-type Story = StoryObj<BackArrowIconComponent>;
+type Story = StoryObj<UndoIconComponent>;
 
 export const Default: Story = {
   args: { size: 'large' },
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/wiedereroeffnen-button/wiedereroeffnen-button.component.html b/alfa-client/libs/vorgang-detail/src/lib/buttons/wiedereroeffnen-button/wiedereroeffnen-button.component.html
index 68384c5436..51b70df609 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/wiedereroeffnen-button/wiedereroeffnen-button.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/wiedereroeffnen-button/wiedereroeffnen-button.component.html
@@ -33,7 +33,7 @@
       size="fit"
       (clickEmitter)="wiedereroeffnen()"
     >
-      <ods-back-arrow-icon icon class="fill-text" />
+      <ods-undo-icon icon class="fill-text" />
     </ods-button-with-spinner>
   } @else {
     <ods-button-with-spinner
@@ -43,7 +43,7 @@
       variant="outline"
       (clickEmitter)="wiedereroeffnen()"
     >
-      <ods-back-arrow-icon icon />
+      <ods-undo-icon icon />
     </ods-button-with-spinner>
   }
 }
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/wiedereroeffnen-button/wiedereroeffnen-button.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/buttons/wiedereroeffnen-button/wiedereroeffnen-button.component.spec.ts
index 9b3918f016..3ee20a3ec3 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/wiedereroeffnen-button/wiedereroeffnen-button.component.spec.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/wiedereroeffnen-button/wiedereroeffnen-button.component.spec.ts
@@ -26,7 +26,7 @@ import { mock } from '@alfa-client/test-utils';
 import { VorgangCommandService, VorgangWithEingangLinkRel } from '@alfa-client/vorgang-shared';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { ButtonWithSpinnerComponent } from '@ods/component';
-import { BackArrowIconComponent } from '@ods/system';
+import { UndoIconComponent } from '@ods/system';
 import { createCommandResource } from 'libs/command-shared/test/command';
 import { getDataTestIdOf } from 'libs/tech-shared/test/data-test';
 import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang';
@@ -51,7 +51,7 @@ describe('WiedereroeffnenButtonComponent', () => {
         WiedereroeffnenButtonComponent,
         HasLinkPipe,
         MockComponent(ButtonWithSpinnerComponent),
-        MockComponent(BackArrowIconComponent),
+        MockComponent(UndoIconComponent),
       ],
       providers: [
         {
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckholen-button/zurueckholen-button.component.html b/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckholen-button/zurueckholen-button.component.html
index e89caeeded..3fd57ccdb2 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckholen-button/zurueckholen-button.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckholen-button/zurueckholen-button.component.html
@@ -33,7 +33,7 @@
       tooltip="Vorgang zurückholen"
       (clickEmitter)="zurueckholen()"
     >
-      <ods-back-arrow-icon icon class="fill-text" />
+      <ods-undo-icon icon class="fill-text" />
     </ods-button-with-spinner>
   } @else {
     <ods-button-with-spinner
@@ -43,7 +43,7 @@
       variant="outline"
       (clickEmitter)="zurueckholen()"
     >
-      <ods-back-arrow-icon icon />
+      <ods-undo-icon icon />
     </ods-button-with-spinner>
   }
 }
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckholen-button/zurueckholen-button.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckholen-button/zurueckholen-button.component.spec.ts
index 6768e772b3..3a1cd90115 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckholen-button/zurueckholen-button.component.spec.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckholen-button/zurueckholen-button.component.spec.ts
@@ -26,7 +26,7 @@ import { mock } from '@alfa-client/test-utils';
 import { VorgangCommandService, VorgangWithEingangLinkRel } from '@alfa-client/vorgang-shared';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { ButtonWithSpinnerComponent } from '@ods/component';
-import { BackArrowIconComponent } from '@ods/system';
+import { UndoIconComponent } from '@ods/system';
 import { createCommandResource } from 'libs/command-shared/test/command';
 import { getDataTestIdOf } from 'libs/tech-shared/test/data-test';
 import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang';
@@ -52,7 +52,7 @@ describe('ZurueckholenButtonComponent', () => {
         ZurueckholenButtonComponent,
         HasLinkPipe,
         MockComponent(ButtonWithSpinnerComponent),
-        MockComponent(BackArrowIconComponent),
+        MockComponent(UndoIconComponent),
       ],
       providers: [
         {
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckstellen-button/zurueckstellen-button.component.html b/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckstellen-button/zurueckstellen-button.component.html
index abb4132e0f..c595747b98 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckstellen-button/zurueckstellen-button.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckstellen-button/zurueckstellen-button.component.html
@@ -34,7 +34,7 @@
       size="fit"
       (clickEmitter)="zurueckstellen()"
     >
-      <ods-back-arrow-icon icon class="fill-text" />
+      <ods-undo-icon icon class="fill-text" />
     </ods-button-with-spinner>
   } @else {
     <ods-button-with-spinner
@@ -44,7 +44,7 @@
       variant="outline"
       (clickEmitter)="zurueckstellen()"
     >
-      <ods-back-arrow-icon icon />
+      <ods-undo-icon icon />
     </ods-button-with-spinner>
   }
 }
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckstellen-button/zurueckstellen-button.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckstellen-button/zurueckstellen-button.component.spec.ts
index 5f0249853e..b17b7c5a7c 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckstellen-button/zurueckstellen-button.component.spec.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/zurueckstellen-button/zurueckstellen-button.component.spec.ts
@@ -26,7 +26,7 @@ import { mock } from '@alfa-client/test-utils';
 import { VorgangCommandService, VorgangWithEingangLinkRel } from '@alfa-client/vorgang-shared';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { ButtonWithSpinnerComponent } from '@ods/component';
-import { BackArrowIconComponent } from '@ods/system';
+import { UndoIconComponent } from '@ods/system';
 import { createCommandResource } from 'libs/command-shared/test/command';
 import { getDataTestIdOf } from 'libs/tech-shared/test/data-test';
 import { createVorgangWithEingangResource } from 'libs/vorgang-shared/test/vorgang';
@@ -52,7 +52,7 @@ describe('ZurueckstellenButtonComponent', () => {
         ZurueckstellenButtonComponent,
         HasLinkPipe,
         MockComponent(ButtonWithSpinnerComponent),
-        MockComponent(BackArrowIconComponent),
+        MockComponent(UndoIconComponent),
       ],
       providers: [
         {
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts
index 6c46766049..80f4453036 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail.module.ts
@@ -52,7 +52,6 @@ import {
   ArchiveIconComponent,
   AttachmentComponent,
   AttachmentWrapperComponent,
-  BackArrowIconComponent,
   BescheidGenerateIconComponent,
   BescheidStatusTextComponent,
   BescheidUploadIconComponent,
@@ -75,6 +74,7 @@ import {
   SpinnerIconComponent,
   StampIconComponent,
   TooltipDirective,
+  UndoIconComponent,
 } from '@ods/system';
 import { AktenzeichenEditDialogComponent } from './aktenzeichen-edit-dialog/aktenzeichen-edit-dialog.component';
 import { AktenzeichenEditableComponent } from './aktenzeichen-editable/aktenzeichen-editable.component';
@@ -159,7 +159,7 @@ const routes: Routes = [
     RadioButtonCardComponent,
     ButtonComponent,
     ButtonCardComponent,
-    BackArrowIconComponent,
+    UndoIconComponent,
     CloseIconComponent,
     ExclamationIconComponent,
     SaveIconComponent,
-- 
GitLab


From b273a45bd327c4e7ccd9f4e1122490bba9280acd Mon Sep 17 00:00:00 2001
From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com>
Date: Mon, 10 Feb 2025 10:55:27 +0100
Subject: [PATCH 49/57] OZG-7474 Rename arrow left icon

---
 alfa-client/libs/design-system/src/index.ts          |  2 +-
 .../arrow-back-icon.component.spec.ts}               | 12 ++++++------
 .../arrow-back-icon.component.ts}                    |  4 ++--
 .../arrow-back-icon.stories.ts}                      | 10 +++++-----
 .../lib/ui/back-button/back-button.component.html    |  2 +-
 .../lib/ui/back-button/back-button.component.spec.ts |  4 ++--
 alfa-client/libs/ui/src/lib/ui/ui.module.ts          |  4 ++--
 7 files changed, 19 insertions(+), 19 deletions(-)
 rename alfa-client/libs/design-system/src/lib/icons/{arrow-left-icon/arrow-left-icon.component.spec.ts => arrow-back-icon/arrow-back-icon.component.spec.ts} (51%)
 rename alfa-client/libs/design-system/src/lib/icons/{arrow-left-icon/arrow-left-icon.component.ts => arrow-back-icon/arrow-back-icon.component.ts} (90%)
 rename alfa-client/libs/design-system/src/lib/icons/{arrow-left-icon/arrow-left.icon.stories.ts => arrow-back-icon/arrow-back-icon.stories.ts} (67%)

diff --git a/alfa-client/libs/design-system/src/index.ts b/alfa-client/libs/design-system/src/index.ts
index 7c071e98e3..467032047c 100644
--- a/alfa-client/libs/design-system/src/index.ts
+++ b/alfa-client/libs/design-system/src/index.ts
@@ -45,7 +45,7 @@ export * from './lib/icons/accessibility-icon/accessibility-icon.component';
 export * from './lib/icons/account-circle-icon/account-circle-icon.component';
 export * from './lib/icons/admin-logo-icon/admin-logo-icon.component';
 export * from './lib/icons/archive-icon/archive-icon.component';
-export * from './lib/icons/arrow-left-icon/arrow-left-icon.component';
+export * from './lib/icons/arrow-back-icon/arrow-back-icon.component';
 export * from './lib/icons/attachment-icon/attachment-icon.component';
 export * from './lib/icons/bescheid-generate-icon/bescheid-generate-icon.component';
 export * from './lib/icons/bescheid-upload-icon/bescheid-upload-icon.component';
diff --git a/alfa-client/libs/design-system/src/lib/icons/arrow-left-icon/arrow-left-icon.component.spec.ts b/alfa-client/libs/design-system/src/lib/icons/arrow-back-icon/arrow-back-icon.component.spec.ts
similarity index 51%
rename from alfa-client/libs/design-system/src/lib/icons/arrow-left-icon/arrow-left-icon.component.spec.ts
rename to alfa-client/libs/design-system/src/lib/icons/arrow-back-icon/arrow-back-icon.component.spec.ts
index e80eb6b7be..744a885c40 100644
--- a/alfa-client/libs/design-system/src/lib/icons/arrow-left-icon/arrow-left-icon.component.spec.ts
+++ b/alfa-client/libs/design-system/src/lib/icons/arrow-back-icon/arrow-back-icon.component.spec.ts
@@ -1,16 +1,16 @@
 import { ComponentFixture, TestBed } from '@angular/core/testing';
-import { ArrowLeftIconComponent } from './arrow-left-icon.component';
+import { ArrowBackIconComponent } from './arrow-back-icon.component';
 
-describe('ArrowLeftIconComponent', () => {
-  let component: ArrowLeftIconComponent;
-  let fixture: ComponentFixture<ArrowLeftIconComponent>;
+describe('ArrowBackIconComponent', () => {
+  let component: ArrowBackIconComponent;
+  let fixture: ComponentFixture<ArrowBackIconComponent>;
 
   beforeEach(async () => {
     await TestBed.configureTestingModule({
-      imports: [ArrowLeftIconComponent],
+      imports: [ArrowBackIconComponent],
     }).compileComponents();
 
-    fixture = TestBed.createComponent(ArrowLeftIconComponent);
+    fixture = TestBed.createComponent(ArrowBackIconComponent);
     component = fixture.componentInstance;
     fixture.detectChanges();
   });
diff --git a/alfa-client/libs/design-system/src/lib/icons/arrow-left-icon/arrow-left-icon.component.ts b/alfa-client/libs/design-system/src/lib/icons/arrow-back-icon/arrow-back-icon.component.ts
similarity index 90%
rename from alfa-client/libs/design-system/src/lib/icons/arrow-left-icon/arrow-left-icon.component.ts
rename to alfa-client/libs/design-system/src/lib/icons/arrow-back-icon/arrow-back-icon.component.ts
index 1dd1c837d2..d0ab0a9d8e 100644
--- a/alfa-client/libs/design-system/src/lib/icons/arrow-left-icon/arrow-left-icon.component.ts
+++ b/alfa-client/libs/design-system/src/lib/icons/arrow-back-icon/arrow-back-icon.component.ts
@@ -4,7 +4,7 @@ import { twMerge } from 'tailwind-merge';
 import { iconVariants, IconVariants } from '../iconVariants';
 
 @Component({
-  selector: 'ods-arrow-left-icon',
+  selector: 'ods-arrow-back-icon',
   standalone: true,
   imports: [CommonModule],
   template: `<svg
@@ -16,7 +16,7 @@ import { iconVariants, IconVariants } from '../iconVariants';
     <path d="M20.75 11H8.58L14.17 5.41L12.75 4L4.75 12L12.75 20L14.16 18.59L8.58 13H20.75V11Z" />
   </svg>`,
 })
-export class ArrowLeftIconComponent {
+export class ArrowBackIconComponent {
   @Input() size: IconVariants['size'] = 'medium';
   @Input() class: string = '';
 
diff --git a/alfa-client/libs/design-system/src/lib/icons/arrow-left-icon/arrow-left.icon.stories.ts b/alfa-client/libs/design-system/src/lib/icons/arrow-back-icon/arrow-back-icon.stories.ts
similarity index 67%
rename from alfa-client/libs/design-system/src/lib/icons/arrow-left-icon/arrow-left.icon.stories.ts
rename to alfa-client/libs/design-system/src/lib/icons/arrow-back-icon/arrow-back-icon.stories.ts
index 09bd3cd799..1305d80008 100644
--- a/alfa-client/libs/design-system/src/lib/icons/arrow-left-icon/arrow-left.icon.stories.ts
+++ b/alfa-client/libs/design-system/src/lib/icons/arrow-back-icon/arrow-back-icon.stories.ts
@@ -1,16 +1,16 @@
 import type { Meta, StoryObj } from '@storybook/angular';
 
-import { ArrowLeftIconComponent } from './arrow-left-icon.component';
+import { ArrowBackIconComponent } from './arrow-back-icon.component';
 
-const meta: Meta<ArrowLeftIconComponent> = {
-  title: 'Icons/Arrow left icon',
-  component: ArrowLeftIconComponent,
+const meta: Meta<ArrowBackIconComponent> = {
+  title: 'Icons/Arrow back icon',
+  component: ArrowBackIconComponent,
   excludeStories: /.*Data$/,
   tags: ['autodocs'],
 };
 
 export default meta;
-type Story = StoryObj<ArrowLeftIconComponent>;
+type Story = StoryObj<ArrowBackIconComponent>;
 
 export const Default: Story = {
   args: { size: 'large' },
diff --git a/alfa-client/libs/ui/src/lib/ui/back-button/back-button.component.html b/alfa-client/libs/ui/src/lib/ui/back-button/back-button.component.html
index 1d1e56f7f7..24868baff4 100644
--- a/alfa-client/libs/ui/src/lib/ui/back-button/back-button.component.html
+++ b/alfa-client/libs/ui/src/lib/ui/back-button/back-button.component.html
@@ -25,6 +25,6 @@
 -->
 <a [routerLink]="linkTo" data-test-id="back-button" [tooltip]="label" tooltipAriaType="aria-labelledby" tabindex="-1">
   <ods-button variant="ghost" size="fit">
-    <ods-arrow-left-icon icon class="fill-text" />
+    <ods-arrow-back-icon icon class="fill-text" />
   </ods-button>
 </a>
diff --git a/alfa-client/libs/ui/src/lib/ui/back-button/back-button.component.spec.ts b/alfa-client/libs/ui/src/lib/ui/back-button/back-button.component.spec.ts
index 7da998d8a8..1e440ea225 100644
--- a/alfa-client/libs/ui/src/lib/ui/back-button/back-button.component.spec.ts
+++ b/alfa-client/libs/ui/src/lib/ui/back-button/back-button.component.spec.ts
@@ -25,7 +25,7 @@ import { getElementFromFixture } from '@alfa-client/test-utils';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { RouterTestingModule } from '@angular/router/testing';
 import { faker } from '@faker-js/faker';
-import { ArrowLeftIconComponent, ButtonComponent, TooltipDirective } from '@ods/system';
+import { ArrowBackIconComponent, ButtonComponent, TooltipDirective } from '@ods/system';
 import { getDataTestIdOf } from 'libs/tech-shared/test/data-test';
 import { MockComponent, MockDirective } from 'ng-mocks';
 import { BackButtonComponent } from './back-button.component';
@@ -43,7 +43,7 @@ describe('BackButtonComponent', () => {
       declarations: [
         BackButtonComponent,
         MockComponent(ButtonComponent),
-        MockComponent(ArrowLeftIconComponent),
+        MockComponent(ArrowBackIconComponent),
         MockDirective(TooltipDirective),
       ],
       imports: [RouterTestingModule],
diff --git a/alfa-client/libs/ui/src/lib/ui/ui.module.ts b/alfa-client/libs/ui/src/lib/ui/ui.module.ts
index 4a3c422a01..e7c19b188d 100644
--- a/alfa-client/libs/ui/src/lib/ui/ui.module.ts
+++ b/alfa-client/libs/ui/src/lib/ui/ui.module.ts
@@ -48,7 +48,7 @@ import { MatSnackBarModule } from '@angular/material/snack-bar';
 import { MatTabsModule } from '@angular/material/tabs';
 import { RouterModule } from '@angular/router';
 import {
-  ArrowLeftIconComponent,
+  ArrowBackIconComponent,
   ButtonComponent,
   FileUploadButtonComponent,
   SpinnerIconComponent,
@@ -169,7 +169,7 @@ import { ValidationErrorComponent } from './validation-error/validation-error.co
     SpinnerIconComponent,
     TooltipDirective,
     ButtonComponent,
-    ArrowLeftIconComponent,
+    ArrowBackIconComponent,
   ],
   exports: [
     MatButtonModule,
-- 
GitLab


From 2cd56971974772a3c34e21370588bc8c7ec8f07c Mon Sep 17 00:00:00 2001
From: Albert <Albert.Bruns@mgm-tp.com>
Date: Mon, 10 Feb 2025 12:49:07 +0100
Subject: [PATCH 50/57] OZG-7474 7697 buttons verschieben

---
 .../abschliessen-button/abschliessen-button.component.html | 4 ++--
 .../bearbeiten-button/bearbeiten-button.component.html     | 4 ++--
 .../bescheiden-button/bescheiden-button.component.html     | 4 ++--
 .../vorgang-detail-area/vorgang-detail-area.component.html | 7 ++++---
 .../vorgang-detail-formular-buttons.component.ts           | 2 +-
 5 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.html b/alfa-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.html
index f9670cbee8..8b4f93ab84 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.html
@@ -41,10 +41,10 @@
       [stateResource]="commandStateResource$ | async"
       data-test-id="abschliessen-button"
       text="Abschließen"
-      variant="outline"
+      variant="primary"
       (clickEmitter)="abschliessen()"
     >
-      <ods-check-icon icon />
+      <ods-check-icon icon class="fill-white" />
     </ods-button-with-spinner>
   }
 }
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/bearbeiten-button/bearbeiten-button.component.html b/alfa-client/libs/vorgang-detail/src/lib/buttons/bearbeiten-button/bearbeiten-button.component.html
index d1de12ab8c..a380dac9d3 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/bearbeiten-button/bearbeiten-button.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/bearbeiten-button/bearbeiten-button.component.html
@@ -41,10 +41,10 @@
       [stateResource]="commandStateResource$ | async"
       data-test-id="bearbeiten-button"
       text="Bearbeiten"
-      variant="outline"
+      variant="primary"
       (clickEmitter)="bearbeiten()"
     >
-      <ods-edit-icon icon />
+      <ods-edit-icon icon class="fill-white"/>
     </ods-button-with-spinner>
   }
 }
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.html b/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.html
index da120283e6..f98bc5bc4b 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.html
@@ -40,10 +40,10 @@
       [stateResource]="commandStateResource$ | async"
       (clickEmitter)="bescheiden()"
       [text]="buttonText"
-      variant="outline"
+      variant="primary"
       data-test-id="bescheiden-button"
     >
-      <ods-stamp-icon icon class="fill-primary" size="medium" />
+      <ods-stamp-icon icon class="fill-white" size="medium" />
     </ods-button-with-spinner>
   }
 }
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-area.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-area.component.html
index bc73d5f4c8..772fdbd059 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-area.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-area.component.html
@@ -35,8 +35,11 @@
         data-test-id="vorgang-detail-header"
       ></alfa-vorgang-detail-header>
 
+
       <div class="section one-column">
-        <alfa-vorgang-detail-formular-daten [vorgangWithEingang]="vorgangResource"></alfa-vorgang-detail-formular-daten>
+        <alfa-vorgang-detail-formular-buttons [vorgangWithEingang]="vorgangResource" />
+
+        <alfa-vorgang-detail-formular-daten [vorgangWithEingang]="vorgangResource" />
 
         <div *ngIf="vorgangResource | hasLink: vorgangWithEingangLinkRel.BESCHEIDE">
           <ozgcloud-expansion-panel headline="Bescheid" data-test-id="bescheid-expansion-panel">
@@ -44,8 +47,6 @@
             </alfa-bescheid-list-in-vorgang-container>
           </ozgcloud-expansion-panel>
         </div>
-
-        <alfa-vorgang-detail-formular-buttons [vorgangWithEingang]="vorgangResource"></alfa-vorgang-detail-formular-buttons>
       </div>
 
       <div class="section one-column" *ngIf="vorgangResource | hasLink: vorgangWithEingangLinkRel.COLLABORATIONS">
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-buttons/vorgang-detail-formular-buttons.component.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-buttons/vorgang-detail-formular-buttons.component.ts
index 908b73de5e..a38e9190c0 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-buttons/vorgang-detail-formular-buttons.component.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-buttons/vorgang-detail-formular-buttons.component.ts
@@ -27,7 +27,7 @@ import { Component, Input } from '@angular/core';
 @Component({
   selector: 'alfa-vorgang-detail-formular-buttons',
   templateUrl: './vorgang-detail-formular-buttons.component.html',
-  styles: [':host {@apply ml-12 flex gap-4}'],
+  styles: [':host {@apply ml-14 flex gap-4 mb-6}'],
 })
 export class VorgangDetailFormularButtonsComponent {
   @Input() vorgangWithEingang: VorgangWithEingangResource;
-- 
GitLab


From b7e843e6cb042e4940b5aa9dd8f64033ffdded44 Mon Sep 17 00:00:00 2001
From: Oliver Schmidt <kontakt@webkreation.de>
Date: Mon, 10 Feb 2025 14:52:02 +0100
Subject: [PATCH 51/57] OZG-7474 button layouts

---
 .../libs/design-system/src/lib/button/button.component.ts       | 2 +-
 .../abschliessen-button/abschliessen-button.component.html      | 2 +-
 .../buttons/bearbeiten-button/bearbeiten-button.component.html  | 2 +-
 .../buttons/bescheiden-button/bescheiden-button.component.html  | 2 +-
 .../vorgang-detail-formular-buttons.component.ts                | 2 +-
 5 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/alfa-client/libs/design-system/src/lib/button/button.component.ts b/alfa-client/libs/design-system/src/lib/button/button.component.ts
index 3db69acbf3..7276be54ba 100644
--- a/alfa-client/libs/design-system/src/lib/button/button.component.ts
+++ b/alfa-client/libs/design-system/src/lib/button/button.component.ts
@@ -36,7 +36,7 @@ export const buttonVariants = cva(
   {
     variants: {
       variant: {
-        primary: 'bg-primary text-white shadow-md hover:enabled:bg-primary-hover',
+        primary: 'bg-primary text-whitetext shadow-md hover:enabled:bg-primary-hover',
         outline:
           'border border-primary bg-background-50 text-primary shadow-md hover:enabled:bg-ghost-hover focus-visible:border-background-200',
         ghost:
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.html b/alfa-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.html
index 8b4f93ab84..e4c61562d9 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.html
@@ -44,7 +44,7 @@
       variant="primary"
       (clickEmitter)="abschliessen()"
     >
-      <ods-check-icon icon class="fill-white" />
+      <ods-check-icon icon class="fill-whitetext" />
     </ods-button-with-spinner>
   }
 }
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/bearbeiten-button/bearbeiten-button.component.html b/alfa-client/libs/vorgang-detail/src/lib/buttons/bearbeiten-button/bearbeiten-button.component.html
index a380dac9d3..ab4a765f1e 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/bearbeiten-button/bearbeiten-button.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/bearbeiten-button/bearbeiten-button.component.html
@@ -44,7 +44,7 @@
       variant="primary"
       (clickEmitter)="bearbeiten()"
     >
-      <ods-edit-icon icon class="fill-white"/>
+      <ods-edit-icon icon class="fill-whitetext" />
     </ods-button-with-spinner>
   }
 }
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.html b/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.html
index f98bc5bc4b..e44c2aefa5 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.html
@@ -43,7 +43,7 @@
       variant="primary"
       data-test-id="bescheiden-button"
     >
-      <ods-stamp-icon icon class="fill-white" size="medium" />
+      <ods-stamp-icon icon class="fill-whitetext" size="medium" />
     </ods-button-with-spinner>
   }
 }
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-buttons/vorgang-detail-formular-buttons.component.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-buttons/vorgang-detail-formular-buttons.component.ts
index a38e9190c0..462a97addb 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-buttons/vorgang-detail-formular-buttons.component.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-formular-buttons/vorgang-detail-formular-buttons.component.ts
@@ -27,7 +27,7 @@ import { Component, Input } from '@angular/core';
 @Component({
   selector: 'alfa-vorgang-detail-formular-buttons',
   templateUrl: './vorgang-detail-formular-buttons.component.html',
-  styles: [':host {@apply ml-14 flex gap-4 mb-6}'],
+  styles: [':host {@apply mt-4 mb-6 ml-14 flex gap-4}'],
 })
 export class VorgangDetailFormularButtonsComponent {
   @Input() vorgangWithEingang: VorgangWithEingangResource;
-- 
GitLab


From d4e0ad4b02beb2c57fe6d545448fdf166b3c4cb2 Mon Sep 17 00:00:00 2001
From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com>
Date: Mon, 10 Feb 2025 15:26:06 +0100
Subject: [PATCH 52/57] OZG-7474 Replace wiedervorlage buttons

---
 .../erledigen-button-container.component.html | 21 +++++-----
 .../erledigen-button-container.component.scss | 23 -----------
 ...ledigen-button-container.component.spec.ts |  8 ++--
 .../erledigen-button-container.component.ts   |  9 +----
 ...submit-wiedervorlage-button.component.html | 39 ++++++++++---------
 ...submit-wiedervorlage-button.component.scss | 23 -----------
 ...mit-wiedervorlage-button.component.spec.ts | 14 +++----
 .../submit-wiedervorlage-button.component.ts  |  5 +--
 ...reroeffnen-button-container.component.html | 21 +++++-----
 ...reroeffnen-button-container.component.scss | 23 -----------
 ...oeffnen-button-container.component.spec.ts |  8 ++--
 ...dereroeffnen-button-container.component.ts |  9 +----
 ...iedervorlage-action-buttons.component.html |  8 ++--
 .../wiedervorlage-action-buttons.component.ts |  3 +-
 .../src/lib/wiedervorlage.module.ts           | 10 ++++-
 15 files changed, 82 insertions(+), 142 deletions(-)
 delete mode 100644 alfa-client/libs/wiedervorlage/src/lib/erledigen-button-container/erledigen-button-container.component.scss
 delete mode 100644 alfa-client/libs/wiedervorlage/src/lib/submit-wiedervorlage-button/submit-wiedervorlage-button.component.scss
 delete mode 100644 alfa-client/libs/wiedervorlage/src/lib/wiedereroeffnen-button-container/wiedereroeffnen-button-container.component.scss

diff --git a/alfa-client/libs/wiedervorlage/src/lib/erledigen-button-container/erledigen-button-container.component.html b/alfa-client/libs/wiedervorlage/src/lib/erledigen-button-container/erledigen-button-container.component.html
index 6d922ec39d..5099a02204 100644
--- a/alfa-client/libs/wiedervorlage/src/lib/erledigen-button-container/erledigen-button-container.component.html
+++ b/alfa-client/libs/wiedervorlage/src/lib/erledigen-button-container/erledigen-button-container.component.html
@@ -23,12 +23,15 @@
     unter der Lizenz sind dem Lizenztext zu entnehmen.
 
 -->
-<ozgcloud-icon-button-with-spinner
-  *ngIf="wiedervorlage | hasLink: linkRel.ERLEDIGEN"
-  data-test-id="erledigen-icon-button"
-  [stateResource]="erledigenCommand$ | async"
-  icon="check_circle_outline"
-  toolTip="Als erledigt markieren"
-  (clickEmitter)="erledigen()"
->
-</ozgcloud-icon-button-with-spinner>
+@if (wiedervorlage | hasLink: linkRel.ERLEDIGEN) {
+  <ods-button-with-spinner
+    data-test-id="erledigen-icon-button"
+    [stateResource]="erledigenCommand$ | async"
+    tooltip="Als erledigt markieren"
+    variant="ghost"
+    size="fit"
+    (clickEmitter)="erledigen()"
+  >
+    <ods-check-circle-icon icon class="fill-text" />
+  </ods-button-with-spinner>
+}
diff --git a/alfa-client/libs/wiedervorlage/src/lib/erledigen-button-container/erledigen-button-container.component.scss b/alfa-client/libs/wiedervorlage/src/lib/erledigen-button-container/erledigen-button-container.component.scss
deleted file mode 100644
index 54c4f3eb8c..0000000000
--- a/alfa-client/libs/wiedervorlage/src/lib/erledigen-button-container/erledigen-button-container.component.scss
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
diff --git a/alfa-client/libs/wiedervorlage/src/lib/erledigen-button-container/erledigen-button-container.component.spec.ts b/alfa-client/libs/wiedervorlage/src/lib/erledigen-button-container/erledigen-button-container.component.spec.ts
index f188bcdca8..69aaf5f00d 100644
--- a/alfa-client/libs/wiedervorlage/src/lib/erledigen-button-container/erledigen-button-container.component.spec.ts
+++ b/alfa-client/libs/wiedervorlage/src/lib/erledigen-button-container/erledigen-button-container.component.spec.ts
@@ -21,11 +21,12 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { HasLinkPipe } from '@alfa-client/tech-shared';
 import { mock } from '@alfa-client/test-utils';
-import { IconButtonWithSpinnerComponent } from '@alfa-client/ui';
 import { WiedervorlageLinkRel, WiedervorlageService } from '@alfa-client/wiedervorlage-shared';
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { ButtonWithSpinnerComponent } from '@ods/component';
+import { CheckCircleIconComponent } from '@ods/system';
 import { createWiedervorlageResource } from 'libs/wiedervorlage-shared/test/wiedervorlage';
 import { MockComponent } from 'ng-mocks';
 import { ErledigenButtonContainerComponent } from './erledigen-button-container.component';
@@ -43,7 +44,8 @@ describe('ErledigenButtonContainerComponent', () => {
       declarations: [
         ErledigenButtonContainerComponent,
         HasLinkPipe,
-        MockComponent(IconButtonWithSpinnerComponent),
+        MockComponent(ButtonWithSpinnerComponent),
+        MockComponent(CheckCircleIconComponent),
       ],
       providers: [
         {
diff --git a/alfa-client/libs/wiedervorlage/src/lib/erledigen-button-container/erledigen-button-container.component.ts b/alfa-client/libs/wiedervorlage/src/lib/erledigen-button-container/erledigen-button-container.component.ts
index dbdb25d29b..bf8239542f 100644
--- a/alfa-client/libs/wiedervorlage/src/lib/erledigen-button-container/erledigen-button-container.component.ts
+++ b/alfa-client/libs/wiedervorlage/src/lib/erledigen-button-container/erledigen-button-container.component.ts
@@ -21,20 +21,15 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { Component, Input } from '@angular/core';
 import { CommandResource } from '@alfa-client/command-shared';
 import { StateResource } from '@alfa-client/tech-shared';
-import {
-  WiedervorlageLinkRel,
-  WiedervorlageResource,
-  WiedervorlageService,
-} from '@alfa-client/wiedervorlage-shared';
+import { WiedervorlageLinkRel, WiedervorlageResource, WiedervorlageService } from '@alfa-client/wiedervorlage-shared';
+import { Component, Input } from '@angular/core';
 import { Observable } from 'rxjs';
 
 @Component({
   selector: 'alfa-erledigen-button-container',
   templateUrl: './erledigen-button-container.component.html',
-  styleUrls: ['./erledigen-button-container.component.scss'],
 })
 export class ErledigenButtonContainerComponent {
   @Input() wiedervorlage: WiedervorlageResource;
diff --git a/alfa-client/libs/wiedervorlage/src/lib/submit-wiedervorlage-button/submit-wiedervorlage-button.component.html b/alfa-client/libs/wiedervorlage/src/lib/submit-wiedervorlage-button/submit-wiedervorlage-button.component.html
index a7dc7bca94..e0229680d1 100644
--- a/alfa-client/libs/wiedervorlage/src/lib/submit-wiedervorlage-button/submit-wiedervorlage-button.component.html
+++ b/alfa-client/libs/wiedervorlage/src/lib/submit-wiedervorlage-button/submit-wiedervorlage-button.component.html
@@ -23,21 +23,24 @@
     unter der Lizenz sind dem Lizenztext zu entnehmen.
 
 -->
-<ozgcloud-stroked-button-with-spinner
-  *ngIf="!showAsIconButton"
-  text="Speichern"
-  data-test-id="speichern-button"
-  icon="save_alt"
-  [stateResource]="submitInProgress$ | async"
-  (clickEmitter)="submit()"
->
-</ozgcloud-stroked-button-with-spinner>
-
-<ozgcloud-icon-button-with-spinner
-  *ngIf="showAsIconButton"
-  icon="save_alt"
-  toolTip="Wiedervorlage speichern"
-  [stateResource]="submitInProgress$ | async"
-  (clickEmitter)="submit()"
->
-</ozgcloud-icon-button-with-spinner>
+@if (showAsIconButton) {
+  <ods-button-with-spinner
+    [stateResource]="submitInProgress$ | async"
+    tooltip="Wiedervorlage speichern"
+    variant="ghost"
+    size="fit"
+    (clickEmitter)="submit()"
+  >
+    <ods-save-icon icon class="fill-text" />
+  </ods-button-with-spinner>
+} @else {
+  <ods-button-with-spinner
+    data-test-id="speichern-button"
+    [stateResource]="submitInProgress$ | async"
+    text="Speichern"
+    variant="primary"
+    (clickEmitter)="submit()"
+  >
+    <ods-save-icon icon class="fill-whitetext" />
+  </ods-button-with-spinner>
+}
diff --git a/alfa-client/libs/wiedervorlage/src/lib/submit-wiedervorlage-button/submit-wiedervorlage-button.component.scss b/alfa-client/libs/wiedervorlage/src/lib/submit-wiedervorlage-button/submit-wiedervorlage-button.component.scss
deleted file mode 100644
index 54c4f3eb8c..0000000000
--- a/alfa-client/libs/wiedervorlage/src/lib/submit-wiedervorlage-button/submit-wiedervorlage-button.component.scss
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
diff --git a/alfa-client/libs/wiedervorlage/src/lib/submit-wiedervorlage-button/submit-wiedervorlage-button.component.spec.ts b/alfa-client/libs/wiedervorlage/src/lib/submit-wiedervorlage-button/submit-wiedervorlage-button.component.spec.ts
index 7b82b4c1d0..5dfb7fa67a 100644
--- a/alfa-client/libs/wiedervorlage/src/lib/submit-wiedervorlage-button/submit-wiedervorlage-button.component.spec.ts
+++ b/alfa-client/libs/wiedervorlage/src/lib/submit-wiedervorlage-button/submit-wiedervorlage-button.component.spec.ts
@@ -21,17 +21,16 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-import { ActivatedRoute } from '@angular/router';
 import { CommandResource } from '@alfa-client/command-shared';
 import { NavigationService } from '@alfa-client/navigation-shared';
 import { StateResource, createStateResource } from '@alfa-client/tech-shared';
 import { mock } from '@alfa-client/test-utils';
-import {
-  IconButtonWithSpinnerComponent,
-  OzgcloudStrokedButtonWithSpinnerComponent,
-} from '@alfa-client/ui';
+import { OzgcloudStrokedButtonWithSpinnerComponent } from '@alfa-client/ui';
 import { WiedervorlageService } from '@alfa-client/wiedervorlage-shared';
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { ActivatedRoute } from '@angular/router';
+import { ButtonWithSpinnerComponent } from '@ods/component';
+import { SaveIconComponent } from '@ods/system';
 import { CommandLinkRel } from 'libs/command-shared/src/lib/command.linkrel';
 import { createCommandResource } from 'libs/command-shared/test/command';
 import { MockComponent } from 'ng-mocks';
@@ -56,7 +55,8 @@ describe('SubmitWiedervorlageButtonComponent', () => {
       declarations: [
         SubmitWiedervorlageButtonComponent,
         MockComponent(OzgcloudStrokedButtonWithSpinnerComponent),
-        MockComponent(IconButtonWithSpinnerComponent),
+        MockComponent(ButtonWithSpinnerComponent),
+        MockComponent(SaveIconComponent),
       ],
       providers: [
         {
diff --git a/alfa-client/libs/wiedervorlage/src/lib/submit-wiedervorlage-button/submit-wiedervorlage-button.component.ts b/alfa-client/libs/wiedervorlage/src/lib/submit-wiedervorlage-button/submit-wiedervorlage-button.component.ts
index c52f566030..788e3229c2 100644
--- a/alfa-client/libs/wiedervorlage/src/lib/submit-wiedervorlage-button/submit-wiedervorlage-button.component.ts
+++ b/alfa-client/libs/wiedervorlage/src/lib/submit-wiedervorlage-button/submit-wiedervorlage-button.component.ts
@@ -21,12 +21,12 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { Component, Input } from '@angular/core';
-import { ActivatedRoute } from '@angular/router';
 import { CommandResource, isDone } from '@alfa-client/command-shared';
 import { NavigationService } from '@alfa-client/navigation-shared';
 import { StateResource } from '@alfa-client/tech-shared';
 import { WiedervorlageService } from '@alfa-client/wiedervorlage-shared';
+import { Component, Input } from '@angular/core';
+import { ActivatedRoute } from '@angular/router';
 import { Observable } from 'rxjs';
 import { filter, tap } from 'rxjs/operators';
 import { WiedervorlageFormService } from '../wiedervorlage-page-container/wiedervorlage-page/wiedervorlage-form/wiedervorlage.formservice';
@@ -34,7 +34,6 @@ import { WiedervorlageFormService } from '../wiedervorlage-page-container/wieder
 @Component({
   selector: 'alfa-submit-wiedervorlage-button',
   templateUrl: './submit-wiedervorlage-button.component.html',
-  styleUrls: ['./submit-wiedervorlage-button.component.scss'],
 })
 export class SubmitWiedervorlageButtonComponent {
   @Input() showAsIconButton: boolean = false;
diff --git a/alfa-client/libs/wiedervorlage/src/lib/wiedereroeffnen-button-container/wiedereroeffnen-button-container.component.html b/alfa-client/libs/wiedervorlage/src/lib/wiedereroeffnen-button-container/wiedereroeffnen-button-container.component.html
index 06193fefe6..12ccae7d16 100644
--- a/alfa-client/libs/wiedervorlage/src/lib/wiedereroeffnen-button-container/wiedereroeffnen-button-container.component.html
+++ b/alfa-client/libs/wiedervorlage/src/lib/wiedereroeffnen-button-container/wiedereroeffnen-button-container.component.html
@@ -23,12 +23,15 @@
     unter der Lizenz sind dem Lizenztext zu entnehmen.
 
 -->
-<ozgcloud-icon-button-with-spinner
-  *ngIf="wiedervorlage | hasLink: linkRel.WIEDEREROEFFNEN"
-  data-test-id="wiedereroeffnen-icon-button"
-  [stateResource]="wiedereroeffnenCommand$ | async"
-  icon="check_circle_outline"
-  toolTip="Als offen markieren"
-  (clickEmitter)="wiedereroeffnen()"
->
-</ozgcloud-icon-button-with-spinner>
+@if (wiedervorlage | hasLink: linkRel.WIEDEREROEFFNEN) {
+  <ods-button-with-spinner
+    data-test-id="wiedereroeffnen-icon-button"
+    [stateResource]="wiedereroeffnenCommand$ | async"
+    tooltip="Als offen markieren"
+    variant="ghost"
+    size="fit"
+    (clickEmitter)="wiedereroeffnen()"
+  >
+    <ods-check-circle-icon icon class="fill-text" />
+  </ods-button-with-spinner>
+}
diff --git a/alfa-client/libs/wiedervorlage/src/lib/wiedereroeffnen-button-container/wiedereroeffnen-button-container.component.scss b/alfa-client/libs/wiedervorlage/src/lib/wiedereroeffnen-button-container/wiedereroeffnen-button-container.component.scss
deleted file mode 100644
index 54c4f3eb8c..0000000000
--- a/alfa-client/libs/wiedervorlage/src/lib/wiedereroeffnen-button-container/wiedereroeffnen-button-container.component.scss
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
diff --git a/alfa-client/libs/wiedervorlage/src/lib/wiedereroeffnen-button-container/wiedereroeffnen-button-container.component.spec.ts b/alfa-client/libs/wiedervorlage/src/lib/wiedereroeffnen-button-container/wiedereroeffnen-button-container.component.spec.ts
index efe689d733..af8e1281a0 100644
--- a/alfa-client/libs/wiedervorlage/src/lib/wiedereroeffnen-button-container/wiedereroeffnen-button-container.component.spec.ts
+++ b/alfa-client/libs/wiedervorlage/src/lib/wiedereroeffnen-button-container/wiedereroeffnen-button-container.component.spec.ts
@@ -21,11 +21,12 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { ComponentFixture, TestBed } from '@angular/core/testing';
 import { HasLinkPipe } from '@alfa-client/tech-shared';
 import { mock } from '@alfa-client/test-utils';
-import { IconButtonWithSpinnerComponent } from '@alfa-client/ui';
 import { WiedervorlageLinkRel, WiedervorlageService } from '@alfa-client/wiedervorlage-shared';
+import { ComponentFixture, TestBed } from '@angular/core/testing';
+import { ButtonWithSpinnerComponent } from '@ods/component';
+import { CheckCircleIconComponent } from '@ods/system';
 import { createWiedervorlageResource } from 'libs/wiedervorlage-shared/test/wiedervorlage';
 import { MockComponent } from 'ng-mocks';
 import { WiedereroeffnenButtonContainerComponent } from './wiedereroeffnen-button-container.component';
@@ -43,7 +44,8 @@ describe('WiedereroeffnenButtonContainerComponent', () => {
       declarations: [
         WiedereroeffnenButtonContainerComponent,
         HasLinkPipe,
-        MockComponent(IconButtonWithSpinnerComponent),
+        MockComponent(ButtonWithSpinnerComponent),
+        MockComponent(CheckCircleIconComponent),
       ],
       providers: [
         {
diff --git a/alfa-client/libs/wiedervorlage/src/lib/wiedereroeffnen-button-container/wiedereroeffnen-button-container.component.ts b/alfa-client/libs/wiedervorlage/src/lib/wiedereroeffnen-button-container/wiedereroeffnen-button-container.component.ts
index 0dd4c216a8..6c125a5636 100644
--- a/alfa-client/libs/wiedervorlage/src/lib/wiedereroeffnen-button-container/wiedereroeffnen-button-container.component.ts
+++ b/alfa-client/libs/wiedervorlage/src/lib/wiedereroeffnen-button-container/wiedereroeffnen-button-container.component.ts
@@ -21,20 +21,15 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { Component, Input } from '@angular/core';
 import { CommandResource } from '@alfa-client/command-shared';
 import { StateResource } from '@alfa-client/tech-shared';
-import {
-  WiedervorlageLinkRel,
-  WiedervorlageResource,
-  WiedervorlageService,
-} from '@alfa-client/wiedervorlage-shared';
+import { WiedervorlageLinkRel, WiedervorlageResource, WiedervorlageService } from '@alfa-client/wiedervorlage-shared';
+import { Component, Input } from '@angular/core';
 import { Observable } from 'rxjs';
 
 @Component({
   selector: 'alfa-wiedereroeffnen-button-container',
   templateUrl: './wiedereroeffnen-button-container.component.html',
-  styleUrls: ['./wiedereroeffnen-button-container.component.scss'],
 })
 export class WiedereroeffnenButtonContainerComponent {
   @Input() wiedervorlage: WiedervorlageResource;
diff --git a/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-page-container/wiedervorlage-page/wiedervorlage-action-buttons/wiedervorlage-action-buttons.component.html b/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-page-container/wiedervorlage-page/wiedervorlage-action-buttons/wiedervorlage-action-buttons.component.html
index fff741c94e..4c97aef842 100644
--- a/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-page-container/wiedervorlage-page/wiedervorlage-action-buttons/wiedervorlage-action-buttons.component.html
+++ b/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-page-container/wiedervorlage-page/wiedervorlage-action-buttons/wiedervorlage-action-buttons.component.html
@@ -24,8 +24,6 @@
 
 -->
 <ozgcloud-back-button linkTo="../.." label="zurück zur Detailseite"></ozgcloud-back-button>
-<alfa-erledigen-button-container [wiedervorlage]="wiedervorlage"></alfa-erledigen-button-container>
-<alfa-wiedereroeffnen-button-container
-  [wiedervorlage]="wiedervorlage"
-></alfa-wiedereroeffnen-button-container>
-<alfa-submit-wiedervorlage-button [showAsIconButton]="true"></alfa-submit-wiedervorlage-button>
+<alfa-erledigen-button-container [wiedervorlage]="wiedervorlage" />
+<alfa-wiedereroeffnen-button-container [wiedervorlage]="wiedervorlage" />
+<alfa-submit-wiedervorlage-button [showAsIconButton]="true" />
diff --git a/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-page-container/wiedervorlage-page/wiedervorlage-action-buttons/wiedervorlage-action-buttons.component.ts b/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-page-container/wiedervorlage-page/wiedervorlage-action-buttons/wiedervorlage-action-buttons.component.ts
index 27a6875dc4..e00cfcdead 100644
--- a/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-page-container/wiedervorlage-page/wiedervorlage-action-buttons/wiedervorlage-action-buttons.component.ts
+++ b/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage-page-container/wiedervorlage-page/wiedervorlage-action-buttons/wiedervorlage-action-buttons.component.ts
@@ -21,13 +21,14 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { Component, Input } from '@angular/core';
 import { WiedervorlageResource } from '@alfa-client/wiedervorlage-shared';
+import { Component, Input } from '@angular/core';
 
 @Component({
   selector: 'alfa-wiedervorlage-action-buttons',
   templateUrl: './wiedervorlage-action-buttons.component.html',
   styleUrls: ['./wiedervorlage-action-buttons.component.scss'],
+  styles: [':host {@apply flex}'],
 })
 export class WiedervorlageActionButtonsComponent {
   @Input() wiedervorlage: WiedervorlageResource;
diff --git a/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage.module.ts b/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage.module.ts
index df9bf418c2..7729ab5f2f 100644
--- a/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage.module.ts
+++ b/alfa-client/libs/wiedervorlage/src/lib/wiedervorlage.module.ts
@@ -31,7 +31,13 @@ import { CommonModule, DatePipe } from '@angular/common';
 import { NgModule } from '@angular/core';
 import { RouterModule, Routes } from '@angular/router';
 import { ButtonWithSpinnerComponent } from '@ods/component';
-import { PlusIconComponent, TooltipDirective, UpdateIconComponent } from '@ods/system';
+import {
+  CheckCircleIconComponent,
+  PlusIconComponent,
+  SaveIconComponent,
+  TooltipDirective,
+  UpdateIconComponent,
+} from '@ods/system';
 import { CreateWiedervorlageButtonContainerComponent } from './create-wiedervorlage-button-container/create-wiedervorlage-button-container.component';
 import { ErledigenButtonContainerComponent } from './erledigen-button-container/erledigen-button-container.component';
 import { SubmitWiedervorlageButtonComponent } from './submit-wiedervorlage-button/submit-wiedervorlage-button.component';
@@ -75,6 +81,8 @@ const routes: Routes = [
     TooltipDirective,
     UpdateIconComponent,
     PlusIconComponent,
+    CheckCircleIconComponent,
+    SaveIconComponent,
   ],
   declarations: [
     WiedervorlagePageComponent,
-- 
GitLab


From 96f7b47a0bf458b0bfbefb3008e3be7cbfb9ec18 Mon Sep 17 00:00:00 2001
From: Oliver Schmidt <kontakt@webkreation.de>
Date: Mon, 10 Feb 2025 16:16:27 +0100
Subject: [PATCH 53/57] OZG-7474 rename buttons, use outline

---
 .../abschliessen-button/abschliessen-button.component.html  | 2 +-
 .../buttons/annehmen-button/annehmen-button.component.html  | 6 +++---
 .../bearbeiten-button/bearbeiten-button.component.html      | 4 ++--
 .../bescheiden-button/bescheiden-button.component.html      | 4 ++--
 .../submit-wiedervorlage-button.component.html              | 2 +-
 5 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.html b/alfa-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.html
index e4c61562d9..6d9599fdd1 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/abschliessen-button/abschliessen-button.component.html
@@ -41,7 +41,7 @@
       [stateResource]="commandStateResource$ | async"
       data-test-id="abschliessen-button"
       text="Abschließen"
-      variant="primary"
+      variant="outline"
       (clickEmitter)="abschliessen()"
     >
       <ods-check-icon icon class="fill-whitetext" />
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/annehmen-button/annehmen-button.component.html b/alfa-client/libs/vorgang-detail/src/lib/buttons/annehmen-button/annehmen-button.component.html
index 28ef66f3d4..e3113ba3b2 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/annehmen-button/annehmen-button.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/annehmen-button/annehmen-button.component.html
@@ -39,11 +39,11 @@
     <ods-button-with-spinner
       [stateResource]="commandStateResource$ | async"
       (clickEmitter)="annehmen()"
-      text="Vorgang annehmen"
-      variant="primary"
+      text="Annehmen"
+      variant="outline"
       data-test-id="annehmen-button"
     >
-      <ods-check-circle-icon icon class="fill-white" />
+      <ods-check-circle-icon icon />
     </ods-button-with-spinner>
   }
 }
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/bearbeiten-button/bearbeiten-button.component.html b/alfa-client/libs/vorgang-detail/src/lib/buttons/bearbeiten-button/bearbeiten-button.component.html
index ab4a765f1e..d1de12ab8c 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/bearbeiten-button/bearbeiten-button.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/bearbeiten-button/bearbeiten-button.component.html
@@ -41,10 +41,10 @@
       [stateResource]="commandStateResource$ | async"
       data-test-id="bearbeiten-button"
       text="Bearbeiten"
-      variant="primary"
+      variant="outline"
       (clickEmitter)="bearbeiten()"
     >
-      <ods-edit-icon icon class="fill-whitetext" />
+      <ods-edit-icon icon />
     </ods-button-with-spinner>
   }
 }
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.html b/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.html
index e44c2aefa5..f165d425ff 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.html
@@ -40,10 +40,10 @@
       [stateResource]="commandStateResource$ | async"
       (clickEmitter)="bescheiden()"
       [text]="buttonText"
-      variant="primary"
+      variant="outline"
       data-test-id="bescheiden-button"
     >
-      <ods-stamp-icon icon class="fill-whitetext" size="medium" />
+      <ods-stamp-icon icon size="medium" />
     </ods-button-with-spinner>
   }
 }
diff --git a/alfa-client/libs/wiedervorlage/src/lib/submit-wiedervorlage-button/submit-wiedervorlage-button.component.html b/alfa-client/libs/wiedervorlage/src/lib/submit-wiedervorlage-button/submit-wiedervorlage-button.component.html
index e0229680d1..317445e141 100644
--- a/alfa-client/libs/wiedervorlage/src/lib/submit-wiedervorlage-button/submit-wiedervorlage-button.component.html
+++ b/alfa-client/libs/wiedervorlage/src/lib/submit-wiedervorlage-button/submit-wiedervorlage-button.component.html
@@ -38,7 +38,7 @@
     data-test-id="speichern-button"
     [stateResource]="submitInProgress$ | async"
     text="Speichern"
-    variant="primary"
+    variant="outline"
     (clickEmitter)="submit()"
   >
     <ods-save-icon icon class="fill-whitetext" />
-- 
GitLab


From 30259eabca81e1c553dc3d3477c6765fa4f8960c Mon Sep 17 00:00:00 2001
From: Oliver Schmidt <kontakt@webkreation.de>
Date: Mon, 10 Feb 2025 16:22:14 +0100
Subject: [PATCH 54/57] OZG-7474 fix icon

---
 .../buttons/bescheiden-button/bescheiden-button.component.html  | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.html b/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.html
index f165d425ff..32924b770f 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.html
@@ -43,7 +43,7 @@
       variant="outline"
       data-test-id="bescheiden-button"
     >
-      <ods-stamp-icon icon size="medium" />
+      <ods-stamp-icon icon size="medium" class="fill-primary" />
     </ods-button-with-spinner>
   }
 }
-- 
GitLab


From ad3fe1bd5758503fd683c550d44eb4abbd0334ab Mon Sep 17 00:00:00 2001
From: Alexander Reifschneider <alexander.reifschneider@mgm-tp.com>
Date: Mon, 10 Feb 2025 16:45:59 +0100
Subject: [PATCH 55/57] OZG-7474 Fix cr comments

---
 ...zgcloud-button-container.component.spec.ts | 39 ++++++++++++++-----
 .../postfach-mail-button.component.html       |  6 +--
 ...er-profile-button-container.component.scss | 23 -----------
 ...user-profile-button-container.component.ts |  4 +-
 4 files changed, 35 insertions(+), 37 deletions(-)
 delete mode 100644 alfa-client/libs/user-profile/src/lib/assign-user-profile-button-container/assign-user-profile-button-container.component.scss

diff --git a/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.spec.ts b/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.spec.ts
index 3479fbc724..0bdb21fd38 100644
--- a/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.spec.ts
+++ b/alfa-client/libs/forwarding/src/lib/forward-by-ozgcloud-button-container/forward-by-ozgcloud-button-container.component.spec.ts
@@ -39,30 +39,51 @@ describe('ForwardByOzgcloudButtonContainerComponent', () => {
       component.vorgangWithEingang = createVorgangWithEingangResource([VorgangWithEingangLinkRel.FORWARD_BY_OZGCLOUD]);
     });
 
-    it('show as button', () => {
-      component.showAsIconButton = false;
+    describe('show as icon button', () => {
+      beforeEach(() => {
+        component.showAsIconButton = true;
+        fixture.detectChanges();
+      });
 
-      fixture.detectChanges();
+      it('should hide button', () => {
+        notExistsAsHtmlElement(fixture, button);
+      });
 
-      existsAsHtmlElement(fixture, button);
+      it('should show iconButton', () => {
+        existsAsHtmlElement(fixture, iconButton);
+      });
     });
 
-    it('show as iconButton', () => {
-      component.showAsIconButton = true;
+    describe('show as button', () => {
+      beforeEach(() => {
+        component.showAsIconButton = false;
+        fixture.detectChanges();
+      });
 
-      fixture.detectChanges();
+      it('should hide iconButton', () => {
+        notExistsAsHtmlElement(fixture, iconButton);
+      });
 
-      existsAsHtmlElement(fixture, iconButton);
+      it('should show button', () => {
+        existsAsHtmlElement(fixture, button);
+      });
     });
   });
 
   describe('on missing link', () => {
-    it('should hide buttons', () => {
+    it('should hide button', () => {
       component.vorgangWithEingang = createVorgangWithEingangResource();
 
       fixture.detectChanges();
 
       notExistsAsHtmlElement(fixture, button);
+    });
+
+    it('should hide icon button', () => {
+      component.vorgangWithEingang = createVorgangWithEingangResource();
+
+      fixture.detectChanges();
+
       notExistsAsHtmlElement(fixture, iconButton);
     });
   });
diff --git a/alfa-client/libs/postfach/src/lib/postfach-mail-button-container/postfach-mail-button/postfach-mail-button.component.html b/alfa-client/libs/postfach/src/lib/postfach-mail-button-container/postfach-mail-button/postfach-mail-button.component.html
index 22f3399935..8a29c815b6 100644
--- a/alfa-client/libs/postfach/src/lib/postfach-mail-button-container/postfach-mail-button/postfach-mail-button.component.html
+++ b/alfa-client/libs/postfach/src/lib/postfach-mail-button-container/postfach-mail-button/postfach-mail-button.component.html
@@ -34,7 +34,7 @@
       size="fit"
       (clickEmitter)="openPostfachNachrichtenDialog.emit()"
     >
-      <ods-mailbox-icon icon class="stroke-text" />
+      <ods-mailbox-icon icon />
     </ods-button>
   } @else if (text && !toolTip) {
     <ods-button
@@ -44,7 +44,7 @@
       variant="outline"
       (clickEmitter)="openPostfachNachrichtenDialog.emit()"
     >
-      <ods-plus-icon icon class="fill-primary" />
+      <ods-plus-icon icon />
     </ods-button>
   } @else if (!text && toolTip) {
     <ods-button
@@ -55,7 +55,7 @@
       size="fit"
       (clickEmitter)="openPostfachNachrichtenDialog.emit()"
     >
-      <ods-plus-icon icon class="fill-primary" />
+      <ods-plus-icon icon />
     </ods-button>
   }
 }
diff --git a/alfa-client/libs/user-profile/src/lib/assign-user-profile-button-container/assign-user-profile-button-container.component.scss b/alfa-client/libs/user-profile/src/lib/assign-user-profile-button-container/assign-user-profile-button-container.component.scss
deleted file mode 100644
index 54c4f3eb8c..0000000000
--- a/alfa-client/libs/user-profile/src/lib/assign-user-profile-button-container/assign-user-profile-button-container.component.scss
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * Copyright (C) 2023 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
diff --git a/alfa-client/libs/user-profile/src/lib/assign-user-profile-button-container/assign-user-profile-button-container.component.ts b/alfa-client/libs/user-profile/src/lib/assign-user-profile-button-container/assign-user-profile-button-container.component.ts
index 1ab24948af..41b1d332d5 100644
--- a/alfa-client/libs/user-profile/src/lib/assign-user-profile-button-container/assign-user-profile-button-container.component.ts
+++ b/alfa-client/libs/user-profile/src/lib/assign-user-profile-button-container/assign-user-profile-button-container.component.ts
@@ -21,14 +21,14 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { Component, Input } from '@angular/core';
 import { UserProfileService } from '@alfa-client/user-profile-shared';
 import { VorgangHeaderLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
+import { Component, Input } from '@angular/core';
 
 @Component({
   selector: 'alfa-assign-user-profile-button-container',
   templateUrl: './assign-user-profile-button-container.component.html',
-  styleUrls: ['./assign-user-profile-button-container.component.scss'],
+  styles: [':host {@apply empty:hidden}'],
 })
 export class AssignUserProfileButtonContainerComponent {
   @Input() vorgang: VorgangWithEingangResource;
-- 
GitLab


From e28f11c6f503171c2015919a87f15f8fe6eb6e78 Mon Sep 17 00:00:00 2001
From: Albert <Albert.Bruns@mgm-tp.com>
Date: Mon, 10 Feb 2025 17:01:50 +0100
Subject: [PATCH 56/57] OZG-7474 small improvements

---
 .../buttons/annehmen-button/annehmen-button.component.spec.ts | 2 --
 .../bescheiden-button/bescheiden-button.component.spec.ts     | 4 +---
 2 files changed, 1 insertion(+), 5 deletions(-)

diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/annehmen-button/annehmen-button.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/buttons/annehmen-button/annehmen-button.component.spec.ts
index 2302dde549..8e531074e2 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/annehmen-button/annehmen-button.component.spec.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/annehmen-button/annehmen-button.component.spec.ts
@@ -121,7 +121,6 @@ describe('AnnehmenButtonComponent', () => {
 
         const button: ButtonWithSpinnerComponent = getElementComponentFromFixtureByCss(fixture, annehmenButton);
 
-        expect(button).toBeTruthy();
         expect(button.stateResource).toBe(state);
       });
 
@@ -153,7 +152,6 @@ describe('AnnehmenButtonComponent', () => {
 
         const button: ButtonWithSpinnerComponent = getElementComponentFromFixtureByCss(fixture, annehmenIconButton);
 
-        expect(button).toBeTruthy();
         expect(button.stateResource).toBe(state);
       });
 
diff --git a/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.spec.ts b/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.spec.ts
index eb653d5117..1cd92c64d9 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.spec.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/buttons/bescheiden-button/bescheiden-button.component.spec.ts
@@ -202,7 +202,7 @@ describe('BescheidenButtonComponent', () => {
       it('should init', () => {
         component.openBescheidenWizard();
 
-      expect(bescheidService.init).toHaveBeenCalled();
+        expect(bescheidService.init).toHaveBeenCalled();
       });
 
       it('should open bescheiden dialog with existing draft', () => {
@@ -353,7 +353,6 @@ describe('BescheidenButtonComponent', () => {
       it('should exist with input', () => {
         const button: ButtonWithSpinnerComponent = getElementComponentFromFixtureByCss(fixture, bescheidenButton);
 
-        expect(button).toBeTruthy();
         expect(button.stateResource).toBe(state);
       });
 
@@ -400,7 +399,6 @@ describe('BescheidenButtonComponent', () => {
       it('should exist with input', () => {
         const button: ButtonWithSpinnerComponent = getElementComponentFromFixtureByCss(fixture, bescheidenIconButton);
 
-        expect(button).toBeTruthy();
         expect(button.stateResource).toBe(state);
       });
 
-- 
GitLab


From 3d6138ffd867ac3c2da3bfc53b4366aa5a471252 Mon Sep 17 00:00:00 2001
From: Oliver Schmidt <kontakt@webkreation.de>
Date: Tue, 11 Feb 2025 09:27:58 +0100
Subject: [PATCH 57/57] OZG-7474 OPT focus-visible styles, OPT action buttons

---
 .../src/lib/button/button.component.ts        |  6 ++--
 .../src/lib/link/link.component.ts            |  2 +-
 .../subnavigation.component.scss              |  2 +-
 ...rgang-detail-action-buttons.component.scss | 34 -------------------
 ...vorgang-detail-action-buttons.component.ts |  4 +--
 .../vorgang-detail-page.component.html        | 14 +++-----
 6 files changed, 11 insertions(+), 51 deletions(-)
 delete mode 100644 alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-action-buttons/vorgang-detail-action-buttons.component.scss

diff --git a/alfa-client/libs/design-system/src/lib/button/button.component.ts b/alfa-client/libs/design-system/src/lib/button/button.component.ts
index 7276be54ba..46b0308c20 100644
--- a/alfa-client/libs/design-system/src/lib/button/button.component.ts
+++ b/alfa-client/libs/design-system/src/lib/button/button.component.ts
@@ -36,11 +36,11 @@ export const buttonVariants = cva(
   {
     variants: {
       variant: {
-        primary: 'bg-primary text-whitetext shadow-md hover:enabled:bg-primary-hover',
+        primary: 'bg-primary text-whitetext shadow-md hover:enabled:bg-primary-hover focus-visible:bg-primary-hover',
         outline:
-          'border border-primary bg-background-50 text-primary shadow-md hover:enabled:bg-ghost-hover focus-visible:border-background-200',
+          'border border-primary bg-background-50 text-primary shadow-md hover:enabled:bg-ghost-hover focus-visible:bg-ghost-hover focus-visible:border-background-200',
         ghost:
-          'border-2 border-transparent hover:enabled:bg-ghost-hover text-primary focus-visible:border-background-200 font-semibold',
+          'border border-transparent hover:enabled:bg-ghost-hover text-primary focus-visible:border-background-200 focus-visible:bg-ghost-hover font-semibold [&]:focus-visible:outline-offset-1',
       },
       size: {
         medium: 'h-9 py-2 px-4 min-w-32',
diff --git a/alfa-client/libs/design-system/src/lib/link/link.component.ts b/alfa-client/libs/design-system/src/lib/link/link.component.ts
index 29d63dfea0..64830deee7 100644
--- a/alfa-client/libs/design-system/src/lib/link/link.component.ts
+++ b/alfa-client/libs/design-system/src/lib/link/link.component.ts
@@ -11,7 +11,7 @@ import { twMerge } from 'tailwind-merge';
     [href]="url"
     [class]="
       twMerge(
-        'hover:bg-ghost-hover block rounded border-2 border-transparent text-text focus:border-focus focus:outline-none dark:hover:bg-neutral-700',
+        'block rounded-lg border-2 border-transparent text-text hover:bg-ghost-hover focus-visible:border-focus focus-visible:bg-ghost-hover focus-visible:outline-none dark:hover:bg-neutral-700',
         class
       )
     "
diff --git a/alfa-client/libs/ui/src/lib/ui/subnavigation/subnavigation.component.scss b/alfa-client/libs/ui/src/lib/ui/subnavigation/subnavigation.component.scss
index 8b0ddf04c2..142aa51807 100644
--- a/alfa-client/libs/ui/src/lib/ui/subnavigation/subnavigation.component.scss
+++ b/alfa-client/libs/ui/src/lib/ui/subnavigation/subnavigation.component.scss
@@ -24,7 +24,7 @@
 @import 'variables';
 
 :host {
-  @apply flex h-12 w-full items-center justify-start pb-1 pl-4 pr-3 pt-1 sm:sticky;
+  @apply flex h-12 w-full items-center justify-start pb-1 pl-3 pr-3 pt-1 sm:sticky;
   top: $header-height;
   z-index: 2;
   box-shadow: $shadow-bottom;
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-action-buttons/vorgang-detail-action-buttons.component.scss b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-action-buttons/vorgang-detail-action-buttons.component.scss
deleted file mode 100644
index 073c7c4392..0000000000
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-action-buttons/vorgang-detail-action-buttons.component.scss
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- * Copyright (C) 2025 Das Land Schleswig-Holstein vertreten durch den
- * Ministerpräsidenten des Landes Schleswig-Holstein
- * Staatskanzlei
- * Abteilung Digitalisierung und zentrales IT-Management der Landesregierung
- *
- * Lizenziert unter der EUPL, Version 1.2 oder - sobald
- * diese von der Europäischen Kommission genehmigt wurden -
- * Folgeversionen der EUPL ("Lizenz");
- * Sie dürfen dieses Werk ausschließlich gemäß
- * dieser Lizenz nutzen.
- * Eine Kopie der Lizenz finden Sie hier:
- *
- * https://joinup.ec.europa.eu/collection/eupl/eupl-text-eupl-12
- *
- * Sofern nicht durch anwendbare Rechtsvorschriften
- * gefordert oder in schriftlicher Form vereinbart, wird
- * die unter der Lizenz verbreitete Software "so wie sie
- * ist", OHNE JEGLICHE GEWÄHRLEISTUNG ODER BEDINGUNGEN -
- * ausdrücklich oder stillschweigend - verbreitet.
- * Die sprachspezifischen Genehmigungen und Beschränkungen
- * unter der Lizenz sind dem Lizenztext zu entnehmen.
- */
-:host {
-  display: flex;
-  flex-grow: 1;
-  z-index: 1;
-
-  ::ng-deep {
-    a {
-      color: inherit;
-    }
-  }
-}
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-action-buttons/vorgang-detail-action-buttons.component.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-action-buttons/vorgang-detail-action-buttons.component.ts
index 1d37f1a177..d6eabde2e9 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-action-buttons/vorgang-detail-action-buttons.component.ts
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-area/vorgang-detail-action-buttons/vorgang-detail-action-buttons.component.ts
@@ -21,13 +21,13 @@
  * Die sprachspezifischen Genehmigungen und Beschränkungen
  * unter der Lizenz sind dem Lizenztext zu entnehmen.
  */
-import { Component, Input } from '@angular/core';
 import { VorgangWithEingangLinkRel, VorgangWithEingangResource } from '@alfa-client/vorgang-shared';
+import { Component, Input } from '@angular/core';
 
 @Component({
   selector: 'alfa-vorgang-detail-action-buttons',
   templateUrl: './vorgang-detail-action-buttons.component.html',
-  styleUrls: ['./vorgang-detail-action-buttons.component.scss'],
+  styles: [':host {@apply flex grow gap-0.5}'],
 })
 export class VorgangDetailActionButtonsComponent {
   @Input() vorgangWithEingang: VorgangWithEingangResource;
diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-page.component.html b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-page.component.html
index e85d31cb74..adc18566df 100644
--- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-page.component.html
+++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-page.component.html
@@ -25,7 +25,7 @@
 -->
 <main *ngIf="vorgangStateResource$ | async as vorgangStateResource">
   <h1 class="sr-only">Details zum Vorgang</h1>
-  <ozgcloud-subnavigation class="mat-typography mat-app-background" data-test-id="subnavigation">
+  <ozgcloud-subnavigation class="flex gap-0.5 bg-background-100" data-test-id="subnavigation">
     <alfa-vorgang-detail-back-button-container></alfa-vorgang-detail-back-button-container>
     <ng-container *ngIf="vorgangStateResource.resource">
       <alfa-vorgang-detail-action-buttons
@@ -39,9 +39,7 @@
     </ng-container>
   </ozgcloud-subnavigation>
 
-  <div
-    class="l-scroll-area--full flex border-l border-r border-grayborder/30 dark:border-transparent"
-  >
+  <div class="l-scroll-area--full flex border-l border-r border-grayborder/30 dark:border-transparent">
     <alfa-vorgang-detail-area
       *ngIf="vorgangStateResource"
       [vorgangStateResource]="vorgangStateResource"
@@ -50,9 +48,5 @@
   </div>
 </main>
 
-<ozgcloud-progress-bar
-  [stateResource]="revokeCommandStateResource$ | async"
-></ozgcloud-progress-bar>
-<ozgcloud-spinner-transparency
-  [stateResource]="vorgangLoeschenCommandStateResource$ | async"
-></ozgcloud-spinner-transparency>
+<ozgcloud-progress-bar [stateResource]="revokeCommandStateResource$ | async"></ozgcloud-progress-bar>
+<ozgcloud-spinner-transparency [stateResource]="vorgangLoeschenCommandStateResource$ | async"></ozgcloud-spinner-transparency>
-- 
GitLab