From eab8bc13570f08d3bd45515a7fb98003f237e854 Mon Sep 17 00:00:00 2001
From: OZGCloud <ozgcloud@mgm-tp.com>
Date: Wed, 13 Nov 2024 11:29:25 +0100
Subject: [PATCH] OZG-4310 OZG-7089

---
 alfa-client/apps/admin/src/app/app.module.ts  |  2 ++
 .../user-add-page.component.html              |  2 +-
 .../user-add-page/user-add-page.component.ts  |  4 ---
 alfa-client/libs/admin/settings/src/index.ts  |  2 +-
 .../settings/src/lib/admin-settings.module.ts | 12 ++++++-
 .../postfach-signatur.component.spec.ts       | 18 ++++++----
 .../user-add-form-container.component.html    |  1 -
 .../user-add-form-container.component.spec.ts | 21 -----------
 .../user-add-form-container.component.ts      | 11 ------
 .../user-add-form/user-add-form.component.ts  | 25 -------------
 .../user-add-form-service.spec.ts             | 36 ++++++++++---------
 .../user-add-form-service.ts                  | 14 ++++++--
 .../user-add-form.component.html              |  0
 .../user-add-form.component.spec.ts           | 19 +++-------
 .../user-add-form/user-add-form.component.ts  | 13 +++++++
 .../lib/form/checkbox/checkbox.component.ts   |  2 +-
 16 files changed, 74 insertions(+), 108 deletions(-)
 delete mode 100644 alfa-client/libs/admin/settings/src/lib/users-roles/user-add-form-container/user-add-form-container.component.html
 delete mode 100644 alfa-client/libs/admin/settings/src/lib/users-roles/user-add-form-container/user-add-form-container.component.spec.ts
 delete mode 100644 alfa-client/libs/admin/settings/src/lib/users-roles/user-add-form-container/user-add-form-container.component.ts
 delete mode 100644 alfa-client/libs/admin/settings/src/lib/users-roles/user-add-form-container/user-add-form/user-add-form.component.ts
 rename alfa-client/libs/admin/settings/src/lib/users-roles/{user-add-form-container => user-add-form}/user-add-form-service.spec.ts (67%)
 rename alfa-client/libs/admin/settings/src/lib/users-roles/{user-add-form-container => user-add-form}/user-add-form-service.ts (87%)
 rename alfa-client/libs/admin/settings/src/lib/users-roles/{user-add-form-container => }/user-add-form/user-add-form.component.html (100%)
 rename alfa-client/libs/admin/settings/src/lib/users-roles/{user-add-form-container => }/user-add-form/user-add-form.component.spec.ts (51%)
 create mode 100644 alfa-client/libs/admin/settings/src/lib/users-roles/user-add-form/user-add-form.component.ts

diff --git a/alfa-client/apps/admin/src/app/app.module.ts b/alfa-client/apps/admin/src/app/app.module.ts
index 01643aecf5..e0119b50c1 100644
--- a/alfa-client/apps/admin/src/app/app.module.ts
+++ b/alfa-client/apps/admin/src/app/app.module.ts
@@ -32,6 +32,7 @@ import { OrganisationsEinheitFormPageComponent } from '../pages/organisationsein
 import { OrganisationsEinheitPageComponent } from '../pages/organisationseinheit/organisationseinheit-page/organisationseinheit-page.component';
 import { PostfachPageComponent } from '../pages/postfach/postfach-page/postfach-page.component';
 import { UnavailablePageComponent } from '../pages/unavailable/unavailable-page/unavailable-page.component';
+import { UserAddPageComponent } from '../pages/users-roles/user-add-page/user-add-page.component';
 import { UserRolesPageComponent } from '../pages/users-roles/user-roles-page/user-roles-page.component';
 import { AppComponent } from './app.component';
 import { appRoutes } from './app.routes';
@@ -45,6 +46,7 @@ import { appRoutes } from './app.routes';
     OrganisationsEinheitFormPageComponent,
     UserProfileButtonContainerComponent,
     UnavailablePageComponent,
+    UserAddPageComponent,
   ],
   imports: [
     CommonModule,
diff --git a/alfa-client/apps/admin/src/pages/users-roles/user-add-page/user-add-page.component.html b/alfa-client/apps/admin/src/pages/users-roles/user-add-page/user-add-page.component.html
index 5b55139c64..e250d918ad 100644
--- a/alfa-client/apps/admin/src/pages/users-roles/user-add-page/user-add-page.component.html
+++ b/alfa-client/apps/admin/src/pages/users-roles/user-add-page/user-add-page.component.html
@@ -1 +1 @@
-<admin-user-add-form-container />
+<admin-user-add />
diff --git a/alfa-client/apps/admin/src/pages/users-roles/user-add-page/user-add-page.component.ts b/alfa-client/apps/admin/src/pages/users-roles/user-add-page/user-add-page.component.ts
index 3d8b9a9ff3..72e8eb19d6 100644
--- a/alfa-client/apps/admin/src/pages/users-roles/user-add-page/user-add-page.component.ts
+++ b/alfa-client/apps/admin/src/pages/users-roles/user-add-page/user-add-page.component.ts
@@ -1,11 +1,7 @@
-import { UserAddFormContainerComponent } from '@admin-client/admin-settings';
-import { CommonModule } from '@angular/common';
 import { Component } from '@angular/core';
 
 @Component({
   selector: 'app-user-add-page',
-  standalone: true,
-  imports: [CommonModule, UserAddFormContainerComponent],
   templateUrl: './user-add-page.component.html',
 })
 export class UserAddPageComponent {}
diff --git a/alfa-client/libs/admin/settings/src/index.ts b/alfa-client/libs/admin/settings/src/index.ts
index eefbb63091..f1c455ed1c 100644
--- a/alfa-client/libs/admin/settings/src/index.ts
+++ b/alfa-client/libs/admin/settings/src/index.ts
@@ -4,5 +4,5 @@ export * from './lib/organisationseinheit/organisationseinheit-container/organis
 export * from './lib/organisationseinheit/organisationseinheit-form-container/organisationseinheit-form-container.component';
 export * from './lib/postfach/postfach-container/postfach-container.component';
 export * from './lib/shared/navigation-item/navigation-item.component';
-export * from './lib/users-roles/user-add-form-container/user-add-form-container.component';
+export * from './lib/users-roles/user-add-form/user-add-form.component';
 export * from './lib/users-roles/users-roles.component';
diff --git a/alfa-client/libs/admin/settings/src/lib/admin-settings.module.ts b/alfa-client/libs/admin/settings/src/lib/admin-settings.module.ts
index e83ec64a3b..f805d962ec 100644
--- a/alfa-client/libs/admin/settings/src/lib/admin-settings.module.ts
+++ b/alfa-client/libs/admin/settings/src/lib/admin-settings.module.ts
@@ -8,7 +8,12 @@ import { NgModule } from '@angular/core';
 import { ReactiveFormsModule } from '@angular/forms';
 import { RouterModule } from '@angular/router';
 import KcAdminClient from '@keycloak/keycloak-admin-client';
-import { ButtonWithSpinnerComponent, TextareaEditorComponent } from '@ods/component';
+import {
+  ButtonWithSpinnerComponent,
+  CheckboxEditorComponent,
+  TextareaEditorComponent,
+  TextEditorComponent,
+} from '@ods/component';
 import {
   ExclamationIconComponent,
   ListComponent,
@@ -47,6 +52,7 @@ import { SecondaryButtonComponent } from './shared/secondary-button/secondary-bu
 import { SpinnerComponent } from './shared/spinner/spinner.component';
 import { TextFieldComponent } from './shared/text-field/text-field.component';
 import { ToUserNamePipe } from './user/to-user-name.pipe';
+import { UserAddFormComponent } from './users-roles/user-add-form/user-add-form.component';
 import { UsersRolesComponent } from './users-roles/users-roles.component';
 
 @NgModule({
@@ -67,6 +73,7 @@ import { UsersRolesComponent } from './users-roles/users-roles.component';
     MoreItemButtonComponent,
     SpinnerComponent,
     UsersRolesComponent,
+    UserAddFormComponent,
   ],
   imports: [
     CommonModule,
@@ -74,6 +81,7 @@ import { UsersRolesComponent } from './users-roles/users-roles.component';
     RouterModule,
     ReactiveFormsModule,
     TextInputComponent,
+    CheckboxEditorComponent,
     ButtonWithSpinnerComponent,
     TextareaEditorComponent,
     MailboxIconComponent,
@@ -84,6 +92,7 @@ import { UsersRolesComponent } from './users-roles/users-roles.component';
     ExclamationIconComponent,
     UiModule,
     NavigationSharedModule,
+    TextEditorComponent,
   ],
   exports: [
     PostfachContainerComponent,
@@ -92,6 +101,7 @@ import { UsersRolesComponent } from './users-roles/users-roles.component';
     NavigationItemComponent,
     UsersRolesComponent,
     SecondaryButtonComponent,
+    UserAddFormComponent,
   ],
   providers: [
     ConfigurationService,
diff --git a/alfa-client/libs/admin/settings/src/lib/postfach/postfach-container/postfach-form/postfach-signatur/postfach-signatur.component.spec.ts b/alfa-client/libs/admin/settings/src/lib/postfach/postfach-container/postfach-form/postfach-signatur/postfach-signatur.component.spec.ts
index 7ac55113ec..ba1b3c8bfa 100644
--- a/alfa-client/libs/admin/settings/src/lib/postfach/postfach-container/postfach-form/postfach-signatur/postfach-signatur.component.spec.ts
+++ b/alfa-client/libs/admin/settings/src/lib/postfach/postfach-container/postfach-form/postfach-signatur/postfach-signatur.component.spec.ts
@@ -1,6 +1,6 @@
-import { getElementFromFixture, mock, useFromMock } from '@alfa-client/test-utils';
+import { getElementFromFixture, mock, Mock } from '@alfa-client/test-utils';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
-import { FormBuilder, ReactiveFormsModule } from '@angular/forms';
+import { ReactiveFormsModule } from '@angular/forms';
 import { TextareaEditorComponent } from '@ods/component';
 import { getDataTestIdOf } from 'libs/tech-shared/test/data-test';
 import { MockComponent } from 'ng-mocks';
@@ -13,14 +13,13 @@ describe('PostfachSignaturComponent', () => {
   let component: PostfachSignaturComponent;
   let fixture: ComponentFixture<PostfachSignaturComponent>;
 
-  const formService: PostfachFormService = new PostfachFormService(
-    new FormBuilder(),
-    useFromMock(mock(PostfachService)),
-  );
-
+  let formService: Mock<PostfachFormService>;
+  let postFachService: Mock<PostfachService>;
   const signaturTextarea = getDataTestIdOf('signatur-text');
 
   beforeEach(async () => {
+    formService = mock(PostfachFormService);
+    postFachService = mock(PostfachService);
     await TestBed.configureTestingModule({
       imports: [ReactiveFormsModule],
       declarations: [PostfachFormComponent, MockComponent(TextareaEditorComponent)],
@@ -29,9 +28,14 @@ describe('PostfachSignaturComponent', () => {
           provide: PostfachFormService,
           useValue: formService,
         },
+        {
+          provide: PostfachService,
+          useValue: postFachService,
+        },
       ],
     }).compileComponents();
     fixture = TestBed.createComponent(PostfachSignaturComponent);
+    TestBed.inject(PostfachService);
     component = fixture.componentInstance;
     fixture.detectChanges();
   });
diff --git a/alfa-client/libs/admin/settings/src/lib/users-roles/user-add-form-container/user-add-form-container.component.html b/alfa-client/libs/admin/settings/src/lib/users-roles/user-add-form-container/user-add-form-container.component.html
deleted file mode 100644
index a61a18299e..0000000000
--- a/alfa-client/libs/admin/settings/src/lib/users-roles/user-add-form-container/user-add-form-container.component.html
+++ /dev/null
@@ -1 +0,0 @@
-<admin-user-add />
\ No newline at end of file
diff --git a/alfa-client/libs/admin/settings/src/lib/users-roles/user-add-form-container/user-add-form-container.component.spec.ts b/alfa-client/libs/admin/settings/src/lib/users-roles/user-add-form-container/user-add-form-container.component.spec.ts
deleted file mode 100644
index 83fba7fd43..0000000000
--- a/alfa-client/libs/admin/settings/src/lib/users-roles/user-add-form-container/user-add-form-container.component.spec.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-import { UserAddFormContainerComponent } from './user-add-form-container.component';
-
-describe('UserAddFormContainerComponent', () => {
-  let component: UserAddFormContainerComponent;
-  let fixture: ComponentFixture<UserAddFormContainerComponent>;
-
-  beforeEach(async () => {
-    await TestBed.configureTestingModule({
-      imports: [UserAddFormContainerComponent],
-    }).compileComponents();
-
-    fixture = TestBed.createComponent(UserAddFormContainerComponent);
-    component = fixture.componentInstance;
-    fixture.detectChanges();
-  });
-
-  it('should create', () => {
-    expect(component).toBeTruthy();
-  });
-});
diff --git a/alfa-client/libs/admin/settings/src/lib/users-roles/user-add-form-container/user-add-form-container.component.ts b/alfa-client/libs/admin/settings/src/lib/users-roles/user-add-form-container/user-add-form-container.component.ts
deleted file mode 100644
index c77e59c49b..0000000000
--- a/alfa-client/libs/admin/settings/src/lib/users-roles/user-add-form-container/user-add-form-container.component.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { CommonModule } from '@angular/common';
-import { Component } from '@angular/core';
-import { UserAddFormComponent } from './user-add-form/user-add-form.component';
-
-@Component({
-  selector: 'admin-user-add-form-container',
-  standalone: true,
-  imports: [CommonModule, UserAddFormComponent],
-  templateUrl: './user-add-form-container.component.html',
-})
-export class UserAddFormContainerComponent {}
diff --git a/alfa-client/libs/admin/settings/src/lib/users-roles/user-add-form-container/user-add-form/user-add-form.component.ts b/alfa-client/libs/admin/settings/src/lib/users-roles/user-add-form-container/user-add-form/user-add-form.component.ts
deleted file mode 100644
index 6edd68af4a..0000000000
--- a/alfa-client/libs/admin/settings/src/lib/users-roles/user-add-form-container/user-add-form/user-add-form.component.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import { AdminSettingsModule } from '@admin-client/admin-settings';
-import { CommonModule } from '@angular/common';
-import { Component, inject } from '@angular/core';
-import { ReactiveFormsModule } from '@angular/forms';
-import { ButtonWithSpinnerComponent, CheckboxEditorComponent, TextEditorComponent } from '@ods/component';
-import { UserAddFormService } from '../user-add-form-service';
-
-@Component({
-  selector: 'admin-user-add',
-  standalone: true,
-  imports: [
-    CommonModule,
-    ButtonWithSpinnerComponent,
-    AdminSettingsModule,
-    ReactiveFormsModule,
-    TextEditorComponent,
-    CheckboxEditorComponent,
-  ],
-  providers: [UserAddFormService],
-  templateUrl: './user-add-form.component.html',
-})
-export class UserAddFormComponent {
-  formService = inject(UserAddFormService);
-  protected readonly UserAddFormService = UserAddFormService;
-}
diff --git a/alfa-client/libs/admin/settings/src/lib/users-roles/user-add-form-container/user-add-form-service.spec.ts b/alfa-client/libs/admin/settings/src/lib/users-roles/user-add-form/user-add-form-service.spec.ts
similarity index 67%
rename from alfa-client/libs/admin/settings/src/lib/users-roles/user-add-form-container/user-add-form-service.spec.ts
rename to alfa-client/libs/admin/settings/src/lib/users-roles/user-add-form/user-add-form-service.spec.ts
index e3297a695e..1f9991ca63 100644
--- a/alfa-client/libs/admin/settings/src/lib/users-roles/user-add-form-container/user-add-form-service.spec.ts
+++ b/alfa-client/libs/admin/settings/src/lib/users-roles/user-add-form/user-add-form-service.spec.ts
@@ -1,5 +1,5 @@
 import { fakeAsync, TestBed, tick } from '@angular/core/testing';
-import { UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';
+import { AbstractControl, UntypedFormBuilder, UntypedFormGroup } from '@angular/forms';
 import { UserAddFormService } from './user-add-form-service';
 import SpyInstance = jest.SpyInstance;
 
@@ -33,22 +33,22 @@ describe('UserAddFormService', () => {
   });
 
   describe('handleAlfaGroupChange', () => {
-    it('should call updateCheckboxStates if any checkbox is checked', () => {
+    it('should call disableUncheckedCheckboxes if any checkbox is checked', () => {
       jest.spyOn(formService as any, 'isAnyChecked').mockReturnValue(true);
-      const updateCheckboxStatesSpy: SpyInstance = jest.spyOn(formService as any, 'updateCheckboxStates');
+      const disableUncheckedCheckboxesSpy: SpyInstance = jest.spyOn(formService as any, 'disableUncheckedCheckboxes');
 
       formService.handleAlfaGroupChange(alfaGroup);
 
-      expect(updateCheckboxStatesSpy).toHaveBeenCalled();
+      expect(disableUncheckedCheckboxesSpy).toHaveBeenCalled();
     });
 
-    it('should NOT call updateCheckboxStates if not any checkbox is checked', () => {
+    it('should call enableAllCheckboxes if not any checkbox is checked', () => {
       jest.spyOn(formService as any, 'isAnyChecked').mockReturnValue(false);
-      const updateCheckboxStatesSpy: SpyInstance = jest.spyOn(formService as any, 'updateCheckboxStates');
+      const enableAllCheckboxesSpy: SpyInstance = jest.spyOn(formService as any, 'enableAllCheckboxes');
 
       formService.handleAlfaGroupChange(alfaGroup);
 
-      expect(updateCheckboxStatesSpy).not.toHaveBeenCalled();
+      expect(enableAllCheckboxesSpy).toHaveBeenCalled();
     });
   });
 
@@ -69,22 +69,24 @@ describe('UserAddFormService', () => {
   });
 
   describe('updateCheckboxStates', () => {
-    it('if control value is true then control should be enabled', () => {
-      const control = alfaGroup.get(UserAddFormService.LOESCHEN);
-      control.setValue(true);
+    it('if control value is false then control should be disabled', () => {
+      const control: AbstractControl = alfaGroup.get(UserAddFormService.LOESCHEN);
+      control.setValue(false);
 
-      formService.updateCheckboxStates(alfaGroup);
+      formService.disableUncheckedCheckboxes(alfaGroup);
 
-      expect(control.enabled).toBe(true);
+      expect(control.disabled).toBe(true);
     });
+  });
 
-    it('if control value is false then control should be disabled', () => {
-      const control = alfaGroup.get(UserAddFormService.LOESCHEN);
-      control.setValue(false);
+  describe('enableAllCheckboxes', () => {
+    it('if control value is true then control should be enabled', () => {
+      const control: AbstractControl = alfaGroup.get(UserAddFormService.LOESCHEN);
+      const enableSpy = jest.spyOn(control, 'enable');
 
-      formService.updateCheckboxStates(alfaGroup);
+      formService.enableAllCheckboxes(alfaGroup);
 
-      expect(control.disabled).toBe(true);
+      expect(enableSpy).toHaveBeenCalled();
     });
   });
 });
diff --git a/alfa-client/libs/admin/settings/src/lib/users-roles/user-add-form-container/user-add-form-service.ts b/alfa-client/libs/admin/settings/src/lib/users-roles/user-add-form/user-add-form-service.ts
similarity index 87%
rename from alfa-client/libs/admin/settings/src/lib/users-roles/user-add-form-container/user-add-form-service.ts
rename to alfa-client/libs/admin/settings/src/lib/users-roles/user-add-form/user-add-form-service.ts
index 783d9bfd1a..dadf58f31b 100644
--- a/alfa-client/libs/admin/settings/src/lib/users-roles/user-add-form-container/user-add-form-service.ts
+++ b/alfa-client/libs/admin/settings/src/lib/users-roles/user-add-form/user-add-form-service.ts
@@ -59,7 +59,9 @@ export class UserAddFormService extends AbstractFormService {
   handleAlfaGroupChange(group: UntypedFormGroup): void {
     const anyChecked: boolean = this.isAnyChecked(group);
     if (anyChecked) {
-      this.updateCheckboxStates(group);
+      this.disableUncheckedCheckboxes(group);
+    } else {
+      this.enableAllCheckboxes(group);
     }
   }
 
@@ -67,9 +69,15 @@ export class UserAddFormService extends AbstractFormService {
     return Object.keys(group.controls).some((key) => group.controls[key].value === true);
   }
 
-  updateCheckboxStates(alfaGroup: UntypedFormGroup): void {
+  disableUncheckedCheckboxes(alfaGroup: UntypedFormGroup): void {
     for (const control of Object.values<AbstractControl>(alfaGroup.controls)) {
-      control[!!control.value ? 'enable' : 'disable']({ emitEvent: false });
+      if (!control.value) control.disable({ emitEvent: false });
+    }
+  }
+
+  enableAllCheckboxes(group: UntypedFormGroup): void {
+    for (const control of Object.values<AbstractControl>(group.controls)) {
+      control.enable({ emitEvent: false });
     }
   }
 
diff --git a/alfa-client/libs/admin/settings/src/lib/users-roles/user-add-form-container/user-add-form/user-add-form.component.html b/alfa-client/libs/admin/settings/src/lib/users-roles/user-add-form/user-add-form.component.html
similarity index 100%
rename from alfa-client/libs/admin/settings/src/lib/users-roles/user-add-form-container/user-add-form/user-add-form.component.html
rename to alfa-client/libs/admin/settings/src/lib/users-roles/user-add-form/user-add-form.component.html
diff --git a/alfa-client/libs/admin/settings/src/lib/users-roles/user-add-form-container/user-add-form/user-add-form.component.spec.ts b/alfa-client/libs/admin/settings/src/lib/users-roles/user-add-form/user-add-form.component.spec.ts
similarity index 51%
rename from alfa-client/libs/admin/settings/src/lib/users-roles/user-add-form-container/user-add-form/user-add-form.component.spec.ts
rename to alfa-client/libs/admin/settings/src/lib/users-roles/user-add-form/user-add-form.component.spec.ts
index fb837e53f6..079e9ce863 100644
--- a/alfa-client/libs/admin/settings/src/lib/users-roles/user-add-form-container/user-add-form/user-add-form.component.spec.ts
+++ b/alfa-client/libs/admin/settings/src/lib/users-roles/user-add-form/user-add-form.component.spec.ts
@@ -1,9 +1,7 @@
-import { AdminSettingsModule } from '@admin-client/admin-settings';
 import { CommonModule } from '@angular/common';
 import { ComponentFixture, TestBed } from '@angular/core/testing';
-import { ButtonWithSpinnerComponent } from '@ods/component';
-import { CheckboxComponent, TextInputComponent } from '@ods/system';
-import { SecondaryButtonComponent } from '../../../shared/secondary-button/secondary-button.component';
+import { ReactiveFormsModule } from '@angular/forms';
+import { ButtonWithSpinnerComponent, CheckboxEditorComponent, TextEditorComponent } from '@ods/component';
 import { UserAddFormComponent } from './user-add-form.component';
 
 describe('UserAddFormComponent', () => {
@@ -12,17 +10,8 @@ describe('UserAddFormComponent', () => {
 
   beforeEach(async () => {
     await TestBed.configureTestingModule({
-      imports: [
-        UserAddFormComponent,
-        CommonModule,
-        TextInputComponent,
-        ButtonWithSpinnerComponent,
-        AdminSettingsModule,
-        CheckboxComponent,
-        SecondaryButtonComponent,
-        CommonModule,
-        UserAddFormComponent,
-      ],
+      declarations: [UserAddFormComponent],
+      imports: [CommonModule, ButtonWithSpinnerComponent, ReactiveFormsModule, TextEditorComponent, CheckboxEditorComponent],
     }).compileComponents();
 
     fixture = TestBed.createComponent(UserAddFormComponent);
diff --git a/alfa-client/libs/admin/settings/src/lib/users-roles/user-add-form/user-add-form.component.ts b/alfa-client/libs/admin/settings/src/lib/users-roles/user-add-form/user-add-form.component.ts
new file mode 100644
index 0000000000..d1d34c5758
--- /dev/null
+++ b/alfa-client/libs/admin/settings/src/lib/users-roles/user-add-form/user-add-form.component.ts
@@ -0,0 +1,13 @@
+import { Component, inject } from '@angular/core';
+import { UserAddFormService } from './user-add-form-service';
+
+@Component({
+  selector: 'admin-user-add',
+  providers: [UserAddFormService],
+  templateUrl: './user-add-form.component.html',
+})
+export class UserAddFormComponent {
+  formService = inject(UserAddFormService);
+
+  protected readonly UserAddFormService = UserAddFormService;
+}
diff --git a/alfa-client/libs/design-system/src/lib/form/checkbox/checkbox.component.ts b/alfa-client/libs/design-system/src/lib/form/checkbox/checkbox.component.ts
index 077f3bb17b..3fbc1b80bf 100644
--- a/alfa-client/libs/design-system/src/lib/form/checkbox/checkbox.component.ts
+++ b/alfa-client/libs/design-system/src/lib/form/checkbox/checkbox.component.ts
@@ -20,7 +20,7 @@ import { FormControl, ReactiveFormsModule } from '@angular/forms';
           "
           [formControl]="fieldControl"
           [attr.id]="inputId"
-          [attr.disabled]="disabled"
+          [attr.disabled]="disabled ? true : null"
           [attr.data-test-id]="(label | convertForDataTest) + '-checkbox-editor'"
         />
         <label class="leading-5 text-text" [attr.for]="inputId">{{ label }}</label>
-- 
GitLab