diff --git a/alfa-client/apps/admin/src/app/app.component.html b/alfa-client/apps/admin/src/app/app.component.html index 66f83dc085317b14d81ad4a3b54fec85b9f88890..aec8d53fbb5c0848c05817014a197e6fbec5ccdf 100644 --- a/alfa-client/apps/admin/src/app/app.component.html +++ b/alfa-client/apps/admin/src/app/app.component.html @@ -18,9 +18,9 @@ <div class="flex h-screen w-full justify-center overflow-y-auto"> <ods-navbar data-test-id="navigation"> <ng-container *ngIf="apiRoot | hasLink: ApiRootLinkRel.CONFIGURATION"> - <ods-nav-item caption="Organisationseinheiten" to="/organisationseinheiten"> - <ods-orga-unit-icon icon /> - </ods-nav-item> + <!-- <ods-nav-item caption="Organisationseinheiten" to="/organisationseinheiten">--> + <!-- <ods-orga-unit-icon icon />--> + <!-- </ods-nav-item>--> <ods-nav-item caption="Postfach" to="/postfach"> <ods-mailbox-icon icon /> </ods-nav-item> diff --git a/alfa-client/apps/admin/src/app/app.component.spec.ts b/alfa-client/apps/admin/src/app/app.component.spec.ts index 9dc1460ef48786b4278b89bc2fef350c0e5d45f1..d10cfd74e6f7e55e727bf6779c494f0f5311f8b7 100644 --- a/alfa-client/apps/admin/src/app/app.component.spec.ts +++ b/alfa-client/apps/admin/src/app/app.component.spec.ts @@ -22,7 +22,7 @@ import { OrgaUnitIconComponent, } from '@ods/system'; import { AuthenticationService } from 'authentication'; -import { NavigationComponent } from 'libs/admin-settings/src/lib/navigation/navigation.component'; +import { NavigationComponent } from 'libs/admin/settings/src/lib/navigation/navigation.component'; import { createApiRootResource } from 'libs/api-root-shared/test/api-root'; import { getDataTestIdOf } from 'libs/tech-shared/test/data-test'; import { MockComponent, MockDirective } from 'ng-mocks'; diff --git a/alfa-client/apps/admin/src/app/app.routes.ts b/alfa-client/apps/admin/src/app/app.routes.ts index 80dafdcc1dfdf77729e2041e3ca263ac9a0cd2fe..fdff512b76c4e15d4026c8c250cce90357cf98be 100644 --- a/alfa-client/apps/admin/src/app/app.routes.ts +++ b/alfa-client/apps/admin/src/app/app.routes.ts @@ -1,5 +1,4 @@ import { Route } from '@angular/router'; -import { OrganisationseinheitPageComponent } from '../pages/organisationseinheit/organisationseinheit-page/organisationseinheit-page.component'; import { PostfachPageComponent } from '../pages/postfach/postfach-page/postfach-page.component'; export const appRoutes: Route[] = [ @@ -13,9 +12,9 @@ export const appRoutes: Route[] = [ component: PostfachPageComponent, title: 'Admin | Postfach', }, - { - path: 'organisationseinheiten', - component: OrganisationseinheitPageComponent, - title: 'Admin | Organisationseinheiten', - }, + // { + // path: 'organisationseinheiten', + // component: OrganisationseinheitPageComponent, + // title: 'Admin | Organisationseinheiten', + // }, ]; diff --git a/alfa-client/apps/admin/src/styles.scss b/alfa-client/apps/admin/src/styles.scss index e9a497ed35ba9c4e1b93a5e8b51ffd2d909d9bd7..9a4448d0f9c72e50e1aac1b190f36cf3118d060a 100644 --- a/alfa-client/apps/admin/src/styles.scss +++ b/alfa-client/apps/admin/src/styles.scss @@ -1,5 +1,19 @@ +@use '@angular/material' as mat; + @tailwind base; @tailwind components; @tailwind utilities; @import 'libs/design-system/src/lib/tailwind-preset/root.css'; +@import 'libs/ui/src/lib/font/font_material'; + +@include mat.all-component-typographies(); +@include mat.core(); + +.heading-1 { + @apply text-3xl font-medium text-text; +} + +.heading-2 { + @apply py-4 text-2xl font-medium text-text; +} diff --git a/alfa-client/libs/admin-settings/src/lib/navigation/navigation.component.html b/alfa-client/libs/admin-settings/src/lib/navigation/navigation.component.html deleted file mode 100644 index 73fdc05b075776a3751e4f04ef7f6ebf08eb0e78..0000000000000000000000000000000000000000 --- a/alfa-client/libs/admin-settings/src/lib/navigation/navigation.component.html +++ /dev/null @@ -1,2 +0,0 @@ -<admin-organisationseinheit-navigation-item></admin-organisationseinheit-navigation-item> -<admin-postfach-navigation-item></admin-postfach-navigation-item> diff --git a/alfa-client/libs/admin-settings/src/lib/postfach/postfach.service.ts b/alfa-client/libs/admin-settings/src/lib/postfach/postfach.service.ts deleted file mode 100644 index 24eb2f3b5b2ad34101a7ba4cfe920a709949e88c..0000000000000000000000000000000000000000 --- a/alfa-client/libs/admin-settings/src/lib/postfach/postfach.service.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { HttpError, StateResource } from '@alfa-client/tech-shared'; -import { Injectable } from '@angular/core'; -import { Observable } from 'rxjs'; -import { SettingName } from '../admin-settings.model'; -import { PostfachResourceService } from './postfach-resource.service'; -import { Postfach, PostfachResource, PostfachSettingsItem } from './postfach.model'; - -@Injectable() -export class PostfachService { - constructor(private postfachResourceService: PostfachResourceService) {} - - public get(): Observable<StateResource<PostfachResource>> { - return this.postfachResourceService.get(); - } - - public save(postfach: Postfach): Observable<StateResource<PostfachResource | HttpError>> { - return this.postfachResourceService.save(this.buildPostfachSettingItem(postfach)); - } - - private buildPostfachSettingItem(postfach: Postfach): PostfachSettingsItem { - return { - name: SettingName.POSTFACH, - settingBody: postfach, - }; - } -} diff --git a/alfa-client/libs/admin-settings/.eslintrc.json b/alfa-client/libs/admin/settings/.eslintrc.json similarity index 90% rename from alfa-client/libs/admin-settings/.eslintrc.json rename to alfa-client/libs/admin/settings/.eslintrc.json index adbe7ae2dfabd4a42804f00846baec80877f4c5c..3230caf3d2f01580c97f01513e96c9c4727c91c9 100644 --- a/alfa-client/libs/admin-settings/.eslintrc.json +++ b/alfa-client/libs/admin/settings/.eslintrc.json @@ -1,5 +1,5 @@ { - "extends": ["../../.eslintrc.json"], + "extends": ["../../../.eslintrc.json"], "ignorePatterns": ["!**/*"], "overrides": [ { diff --git a/alfa-client/libs/admin-settings/README.md b/alfa-client/libs/admin/settings/README.md similarity index 100% rename from alfa-client/libs/admin-settings/README.md rename to alfa-client/libs/admin/settings/README.md diff --git a/alfa-client/libs/admin-settings/jest.config.ts b/alfa-client/libs/admin/settings/jest.config.ts similarity index 88% rename from alfa-client/libs/admin-settings/jest.config.ts rename to alfa-client/libs/admin/settings/jest.config.ts index 6a725dafe3e164fd3e957164738b3e29170811d2..26fb88d9012f3d3b3a4c62e37d28fe0849337433 100644 --- a/alfa-client/libs/admin-settings/jest.config.ts +++ b/alfa-client/libs/admin/settings/jest.config.ts @@ -3,10 +3,10 @@ const esModules = ['@keycloak/keycloak-admin-client', 'url-join', 'url-template', 'camelize-ts']; export default { displayName: 'admin-settings', - preset: '../../jest.preset.js', + preset: '../../../jest.preset.js', setupFilesAfterEnv: ['<rootDir>/src/test-setup.ts'], globals: {}, - coverageDirectory: '../../coverage/libs/admin-settings', + coverageDirectory: '../../coverage/libs/admin/settings', transform: { '^.+\\.(ts|mjs|js|html)$': [ 'jest-preset-angular', diff --git a/alfa-client/libs/admin-settings/project.json b/alfa-client/libs/admin/settings/project.json similarity index 60% rename from alfa-client/libs/admin-settings/project.json rename to alfa-client/libs/admin/settings/project.json index 2d85134f707e7aed82bbe30a08be2b01fea3a8c4..2749cb93e4ed471d107b091fece1a677debe2edc 100644 --- a/alfa-client/libs/admin-settings/project.json +++ b/alfa-client/libs/admin/settings/project.json @@ -1,7 +1,7 @@ { "name": "admin-settings", - "$schema": "../../node_modules/nx/schemas/project-schema.json", - "sourceRoot": "libs/admin-settings/src", + "$schema": "../../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "libs/admin/settings/src", "projectType": "library", "prefix": "admin", "tags": [], @@ -14,8 +14,8 @@ "executor": "@nx/jest:jest", "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "options": { - "tsConfig": "libs/admin-settings/tsconfig.spec.json", - "jestConfig": "libs/admin-settings/jest.config.ts" + "tsConfig": "libs/admin/settings/tsconfig.spec.json", + "jestConfig": "libs/admin/settings/jest.config.ts" } } } diff --git a/alfa-client/libs/admin-settings/src/index.ts b/alfa-client/libs/admin/settings/src/index.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/index.ts rename to alfa-client/libs/admin/settings/src/index.ts diff --git a/alfa-client/libs/admin-settings/src/lib/admin-settings-resource.service.ts b/alfa-client/libs/admin/settings/src/lib/admin-settings-resource.service.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/admin-settings-resource.service.ts rename to alfa-client/libs/admin/settings/src/lib/admin-settings-resource.service.ts diff --git a/alfa-client/libs/admin-settings/src/lib/admin-settings.linkrel.ts b/alfa-client/libs/admin/settings/src/lib/admin-settings.linkrel.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/admin-settings.linkrel.ts rename to alfa-client/libs/admin/settings/src/lib/admin-settings.linkrel.ts diff --git a/alfa-client/libs/admin-settings/src/lib/admin-settings.model.ts b/alfa-client/libs/admin/settings/src/lib/admin-settings.model.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/admin-settings.model.ts rename to alfa-client/libs/admin/settings/src/lib/admin-settings.model.ts diff --git a/alfa-client/libs/admin-settings/src/lib/admin-settings.module.spec.ts b/alfa-client/libs/admin/settings/src/lib/admin-settings.module.spec.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/admin-settings.module.spec.ts rename to alfa-client/libs/admin/settings/src/lib/admin-settings.module.spec.ts 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 similarity index 89% rename from alfa-client/libs/admin-settings/src/lib/admin-settings.module.ts rename to alfa-client/libs/admin/settings/src/lib/admin-settings.module.ts index 99b04e136805e4fec867cfe801aa82ab6ded3936..a6865423b56b2537999ce25764a3357a883fe0da 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 @@ -6,6 +6,8 @@ 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 { TextInputComponent } from '@ods/system'; import { createSettingListResourceService, SettingListResourceService, @@ -23,6 +25,7 @@ import { OrganisationseinheitListComponent } from './organisationseinheit/organi import { OrganisationseinheitNavigationItemComponent } from './organisationseinheit/organisationseinheit-navigation-item/organisationseinheit-navigation-item.component'; import { PostfachContainerComponent } from './postfach/postfach-container/postfach-container.component'; import { PostfachFormComponent } from './postfach/postfach-container/postfach-form/postfach-form.component'; +import { PostfachSignaturComponent } from './postfach/postfach-container/postfach-form/postfach-signatur/postfach-signatur.component'; import { PostfachNavigationItemComponent } from './postfach/postfach-navigation-item/postfach-navigation-item.component'; import { createPostfachResourceService, @@ -41,6 +44,7 @@ import { TextFieldComponent } from './shared/text-field/text-field.component'; declarations: [ PostfachContainerComponent, PostfachFormComponent, + PostfachSignaturComponent, NavigationItemComponent, TextFieldComponent, PostfachNavigationItemComponent, @@ -55,7 +59,15 @@ import { TextFieldComponent } from './shared/text-field/text-field.component'; MoreItemButtonComponent, SpinnerComponent, ], - imports: [CommonModule, TechSharedModule, RouterModule, ReactiveFormsModule], + imports: [ + CommonModule, + TechSharedModule, + RouterModule, + ReactiveFormsModule, + TextInputComponent, + ButtonWithSpinnerComponent, + TextareaEditorComponent, + ], exports: [ PostfachContainerComponent, OrganisationseinheitContainerComponent, diff --git a/alfa-client/libs/admin-settings/src/lib/admin-settings.service.spec.ts b/alfa-client/libs/admin/settings/src/lib/admin-settings.service.spec.ts similarity index 97% rename from alfa-client/libs/admin-settings/src/lib/admin-settings.service.spec.ts rename to alfa-client/libs/admin/settings/src/lib/admin-settings.service.spec.ts index 0dae05ec7a255b758dc57b5041376fafc1894b7f..b46edf6f96f8a3f74808786111071d045dbf5329 100644 --- a/alfa-client/libs/admin-settings/src/lib/admin-settings.service.spec.ts +++ b/alfa-client/libs/admin/settings/src/lib/admin-settings.service.spec.ts @@ -4,8 +4,8 @@ import { createStateResource, } from '@alfa-client/tech-shared'; import { Mock, mock, useFromMock } from '@alfa-client/test-utils'; +import { singleCold } from 'libs/tech-shared/test/marbles'; import { Observable, of } from 'rxjs'; -import { singleCold } from '../../../tech-shared/test/marbles'; import { createSettingsListResource } from '../../test/admin-settings'; import { createPostfachResource, createSettingItemResource } from '../../test/postfach/postfach'; import { SettingListResourceService } from './admin-settings-resource.service'; diff --git a/alfa-client/libs/admin-settings/src/lib/admin-settings.service.ts b/alfa-client/libs/admin/settings/src/lib/admin-settings.service.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/admin-settings.service.ts rename to alfa-client/libs/admin/settings/src/lib/admin-settings.service.ts diff --git a/alfa-client/libs/admin-settings/src/lib/admin-settings.util.spec.ts b/alfa-client/libs/admin/settings/src/lib/admin-settings.util.spec.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/admin-settings.util.spec.ts rename to alfa-client/libs/admin/settings/src/lib/admin-settings.util.spec.ts diff --git a/alfa-client/libs/admin-settings/src/lib/admin-settings.util.ts b/alfa-client/libs/admin/settings/src/lib/admin-settings.util.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/admin-settings.util.ts rename to alfa-client/libs/admin/settings/src/lib/admin-settings.util.ts diff --git a/alfa-client/libs/admin-settings/src/lib/configuration/configuration-resource.service.ts b/alfa-client/libs/admin/settings/src/lib/configuration/configuration-resource.service.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/configuration/configuration-resource.service.ts rename to alfa-client/libs/admin/settings/src/lib/configuration/configuration-resource.service.ts diff --git a/alfa-client/libs/admin-settings/src/lib/configuration/configuration.linkrel.ts b/alfa-client/libs/admin/settings/src/lib/configuration/configuration.linkrel.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/configuration/configuration.linkrel.ts rename to alfa-client/libs/admin/settings/src/lib/configuration/configuration.linkrel.ts diff --git a/alfa-client/libs/admin-settings/src/lib/configuration/configuration.model.ts b/alfa-client/libs/admin/settings/src/lib/configuration/configuration.model.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/configuration/configuration.model.ts rename to alfa-client/libs/admin/settings/src/lib/configuration/configuration.model.ts diff --git a/alfa-client/libs/admin-settings/src/lib/configuration/configuration.service.spec.ts b/alfa-client/libs/admin/settings/src/lib/configuration/configuration.service.spec.ts similarity index 95% rename from alfa-client/libs/admin-settings/src/lib/configuration/configuration.service.spec.ts rename to alfa-client/libs/admin/settings/src/lib/configuration/configuration.service.spec.ts index df7a4250f9fdd077594d0743e2c82cef23c5b059..5a581ac9ad22f23d01d328450b2d7d3e079bde8d 100644 --- a/alfa-client/libs/admin-settings/src/lib/configuration/configuration.service.spec.ts +++ b/alfa-client/libs/admin/settings/src/lib/configuration/configuration.service.spec.ts @@ -1,7 +1,7 @@ import { StateResource, createStateResource } from '@alfa-client/tech-shared'; import { Mock, mock, useFromMock } from '@alfa-client/test-utils'; +import { singleCold, singleHot } from 'libs/tech-shared/test/marbles'; import { Observable } from 'rxjs'; -import { singleCold, singleHot } from '../../../../tech-shared/test/marbles'; import { createConfigurationResource } from '../../../test/configuration/configuration'; import { ConfigurationResourceService } from './configuration-resource.service'; import { ConfigurationResource } from './configuration.model'; diff --git a/alfa-client/libs/admin-settings/src/lib/configuration/configuration.service.ts b/alfa-client/libs/admin/settings/src/lib/configuration/configuration.service.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/configuration/configuration.service.ts rename to alfa-client/libs/admin/settings/src/lib/configuration/configuration.service.ts diff --git a/alfa-client/libs/admin/settings/src/lib/navigation/navigation.component.html b/alfa-client/libs/admin/settings/src/lib/navigation/navigation.component.html new file mode 100644 index 0000000000000000000000000000000000000000..aa69f82b45426328c850c413c0653d4a074c7ac5 --- /dev/null +++ b/alfa-client/libs/admin/settings/src/lib/navigation/navigation.component.html @@ -0,0 +1,2 @@ +<!--<admin-organisationseinheit-navigation-item></admin-organisationseinheit-navigation-item>--> +<admin-postfach-navigation-item></admin-postfach-navigation-item> diff --git a/alfa-client/libs/admin-settings/src/lib/navigation/navigation.component.scss b/alfa-client/libs/admin/settings/src/lib/navigation/navigation.component.scss similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/navigation/navigation.component.scss rename to alfa-client/libs/admin/settings/src/lib/navigation/navigation.component.scss diff --git a/alfa-client/libs/admin-settings/src/lib/navigation/navigation.component.spec.ts b/alfa-client/libs/admin/settings/src/lib/navigation/navigation.component.spec.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/navigation/navigation.component.spec.ts rename to alfa-client/libs/admin/settings/src/lib/navigation/navigation.component.spec.ts diff --git a/alfa-client/libs/admin-settings/src/lib/navigation/navigation.component.ts b/alfa-client/libs/admin/settings/src/lib/navigation/navigation.component.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/navigation/navigation.component.ts rename to alfa-client/libs/admin/settings/src/lib/navigation/navigation.component.ts diff --git a/alfa-client/libs/admin-settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-container.component.html b/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-container.component.html similarity index 93% rename from alfa-client/libs/admin-settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-container.component.html rename to alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-container.component.html index dbc6d9eddd9d63fb982da496a7a4636210670ce8..d324f8d83fe91defe9b5066f4f24d230bc33eb4f 100644 --- a/alfa-client/libs/admin-settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-container.component.html +++ b/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-container.component.html @@ -1,4 +1,4 @@ -<h1 class="text-2xl font-bold">Organisationseinheiten</h1> +<h1 class="heading-1 pb-4">Organisationseinheiten</h1> <p id="absender-desc" class="p-1">Hinterlegen Sie Name und ID der Organisationseinheiten.</p> <admin-organisationseinheit-form diff --git a/alfa-client/libs/admin-settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-container.component.spec.ts b/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-container.component.spec.ts similarity index 98% rename from alfa-client/libs/admin-settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-container.component.spec.ts rename to alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-container.component.spec.ts index 417eec4616318c4c8b39eb639906e3433eaa78fe..50aed3b14f080f41d6dd560101a3c1a358bc5b8f 100644 --- a/alfa-client/libs/admin-settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-container.component.spec.ts +++ b/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-container.component.spec.ts @@ -8,9 +8,9 @@ import { } from '@alfa-client/test-utils'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { getDataTestIdOf } from 'libs/tech-shared/test/data-test'; +import { singleCold } from 'libs/tech-shared/test/marbles'; import { MockComponent } from 'ng-mocks'; import { of } from 'rxjs'; -import { singleCold } from '../../../../../tech-shared/test/marbles'; import { createOrganisationseinheit, createOrganisationseinheitState, diff --git a/alfa-client/libs/admin-settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-container.component.ts b/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-container.component.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-container.component.ts rename to alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-container.component.ts diff --git a/alfa-client/libs/admin-settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-form/organisationseinheit-form.component.html b/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-form/organisationseinheit-form.component.html similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-form/organisationseinheit-form.component.html rename to alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-form/organisationseinheit-form.component.html diff --git a/alfa-client/libs/admin-settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-form/organisationseinheit-form.component.spec.ts b/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-form/organisationseinheit-form.component.spec.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-form/organisationseinheit-form.component.spec.ts rename to alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-form/organisationseinheit-form.component.spec.ts diff --git a/alfa-client/libs/admin-settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-form/organisationseinheit-form.component.ts b/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-form/organisationseinheit-form.component.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-form/organisationseinheit-form.component.ts rename to alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-form/organisationseinheit-form.component.ts diff --git a/alfa-client/libs/admin-settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-form/organisationseinheit.formservice.spec.ts b/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-form/organisationseinheit.formservice.spec.ts similarity index 99% rename from alfa-client/libs/admin-settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-form/organisationseinheit.formservice.spec.ts rename to alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-form/organisationseinheit.formservice.spec.ts index 03bef4912b7d8a510ee06cfaa2ec438ae318b278..c43144f6a8730dd6c81ed73aaef73aa4f0b4b5ef 100644 --- a/alfa-client/libs/admin-settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-form/organisationseinheit.formservice.spec.ts +++ b/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-form/organisationseinheit.formservice.spec.ts @@ -2,8 +2,8 @@ import { Mock, mock, useFromMock } from '@alfa-client/test-utils'; import { fakeAsync, tick } from '@angular/core/testing'; import { AbstractControl, FormBuilder } from '@angular/forms'; import { hot } from 'jest-marbles'; +import { singleCold, singleHot } from 'libs/tech-shared/test/marbles'; import { Observable, lastValueFrom, throwError } from 'rxjs'; -import { singleCold, singleHot } from '../../../../../../tech-shared/test/marbles'; import { createOrganisationseinheit, createOrganisationseinheitError, diff --git a/alfa-client/libs/admin-settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-form/organisationseinheit.formservice.ts b/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-form/organisationseinheit.formservice.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-form/organisationseinheit.formservice.ts rename to alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-form/organisationseinheit.formservice.ts diff --git a/alfa-client/libs/admin-settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-list/organisationseinheit-list.component.html b/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-list/organisationseinheit-list.component.html similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-list/organisationseinheit-list.component.html rename to alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-list/organisationseinheit-list.component.html diff --git a/alfa-client/libs/admin-settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-list/organisationseinheit-list.component.spec.ts b/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-list/organisationseinheit-list.component.spec.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-list/organisationseinheit-list.component.spec.ts rename to alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-list/organisationseinheit-list.component.spec.ts diff --git a/alfa-client/libs/admin-settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-list/organisationseinheit-list.component.ts b/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-list/organisationseinheit-list.component.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-list/organisationseinheit-list.component.ts rename to alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-container/organisationseinheit-list/organisationseinheit-list.component.ts diff --git a/alfa-client/libs/admin-settings/src/lib/organisationseinheit/organisationseinheit-navigation-item/organisationseinheit-navigation-item.component.html b/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-navigation-item/organisationseinheit-navigation-item.component.html similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/organisationseinheit/organisationseinheit-navigation-item/organisationseinheit-navigation-item.component.html rename to alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-navigation-item/organisationseinheit-navigation-item.component.html diff --git a/alfa-client/libs/admin-settings/src/lib/organisationseinheit/organisationseinheit-navigation-item/organisationseinheit-navigation-item.component.spec.ts b/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-navigation-item/organisationseinheit-navigation-item.component.spec.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/organisationseinheit/organisationseinheit-navigation-item/organisationseinheit-navigation-item.component.spec.ts rename to alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-navigation-item/organisationseinheit-navigation-item.component.spec.ts diff --git a/alfa-client/libs/admin-settings/src/lib/organisationseinheit/organisationseinheit-navigation-item/organisationseinheit-navigation-item.component.ts b/alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-navigation-item/organisationseinheit-navigation-item.component.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/organisationseinheit/organisationseinheit-navigation-item/organisationseinheit-navigation-item.component.ts rename to alfa-client/libs/admin/settings/src/lib/organisationseinheit/organisationseinheit-navigation-item/organisationseinheit-navigation-item.component.ts diff --git a/alfa-client/libs/admin-settings/src/lib/postfach/postfach-container/postfach-container.component.html b/alfa-client/libs/admin/settings/src/lib/postfach/postfach-container/postfach-container.component.html similarity index 71% rename from alfa-client/libs/admin-settings/src/lib/postfach/postfach-container/postfach-container.component.html rename to alfa-client/libs/admin/settings/src/lib/postfach/postfach-container/postfach-container.component.html index 8a68a1e11400f2ece06013fc60f1d2a13f1d1b50..8c406667e45b4bba2c8a1aeb31599df687338c45 100644 --- a/alfa-client/libs/admin-settings/src/lib/postfach/postfach-container/postfach-container.component.html +++ b/alfa-client/libs/admin/settings/src/lib/postfach/postfach-container/postfach-container.component.html @@ -1 +1,2 @@ +<h1 class="heading-1">Postfach</h1> <postfach-form [postfachStateResource]="postfachStateResource$ | async"></postfach-form> diff --git a/alfa-client/libs/admin-settings/src/lib/postfach/postfach-container/postfach-container.component.spec.ts b/alfa-client/libs/admin/settings/src/lib/postfach/postfach-container/postfach-container.component.spec.ts similarity index 92% rename from alfa-client/libs/admin-settings/src/lib/postfach/postfach-container/postfach-container.component.spec.ts rename to alfa-client/libs/admin/settings/src/lib/postfach/postfach-container/postfach-container.component.spec.ts index 49de353525058623dc206167d4e3344437ffc439..d00f5aa44d6e99755de7e5464a289aed6ea22a79 100644 --- a/alfa-client/libs/admin-settings/src/lib/postfach/postfach-container/postfach-container.component.spec.ts +++ b/alfa-client/libs/admin/settings/src/lib/postfach/postfach-container/postfach-container.component.spec.ts @@ -1,9 +1,9 @@ import { StateResource, createStateResource } from '@alfa-client/tech-shared'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ReactiveFormsModule } from '@angular/forms'; +import { singleCold, singleHot } from 'libs/tech-shared/test/marbles'; +import { Mock, mock } from 'libs/test-utils/src/lib/mocking'; import { MockComponent } from 'ng-mocks'; -import { singleCold, singleHot } from '../../../../../tech-shared/test/marbles'; -import { Mock, mock } from '../../../../../test-utils/src/lib/mocking'; import { createPostfachResource } from '../../../../test/postfach/postfach'; import { PostfachResource } from '../postfach.model'; import { PostfachService } from '../postfach.service'; diff --git a/alfa-client/libs/admin-settings/src/lib/postfach/postfach-container/postfach-container.component.ts b/alfa-client/libs/admin/settings/src/lib/postfach/postfach-container/postfach-container.component.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/postfach/postfach-container/postfach-container.component.ts rename to alfa-client/libs/admin/settings/src/lib/postfach/postfach-container/postfach-container.component.ts diff --git a/alfa-client/libs/admin-settings/src/lib/postfach/postfach-container/postfach-form/postfach-form.component.html b/alfa-client/libs/admin/settings/src/lib/postfach/postfach-container/postfach-form/postfach-form.component.html similarity index 70% rename from alfa-client/libs/admin-settings/src/lib/postfach/postfach-container/postfach-form/postfach-form.component.html rename to alfa-client/libs/admin/settings/src/lib/postfach/postfach-container/postfach-form/postfach-form.component.html index 5ebfbc7da60ca54abbabb4135ce809216b274f88..a5aace656e46f148670b719e35a52d23df73ec4b 100644 --- a/alfa-client/libs/admin-settings/src/lib/postfach/postfach-container/postfach-form/postfach-form.component.html +++ b/alfa-client/libs/admin/settings/src/lib/postfach/postfach-container/postfach-form/postfach-form.component.html @@ -1,5 +1,6 @@ <form class="form flex-col" [formGroup]="formService.form"> - <h1 class="text-2xl font-bold">Absender</h1> + <!-- + <h2 class="heading-2">Absender</h1> <p id="absender-desc" class="p-1">Hinterlegen Sie Absenderinformationen zu Ihrem Postfach.</p> <div [formGroupName]="PostfachFormService.ASBSENDER_GROUP" @@ -33,26 +34,21 @@ ></text-field> </div> <div class="h-20"></div> - <h1 class="text-2xl font-bold">Signatur</h1> - <p id="signatur-desc">Erstellen oder ändern Sie die Signatur für Nachrichten.</p> - <textarea - data-test-id="signatur-text" - aria-describedby="signatur-desc" - [formControlName]="PostfachFormService.SIGNATUR_FIELD" - class="mb-2 mt-2 block h-40 w-96 p-1" - ></textarea> +--> + <postfach-signatur class="mb-6 block" /> - <admin-primary-button - (clickEmitter)="submit()" - [submitInProgress]="this.submitInProgress$ | async" + <ods-button-with-spinner data-test-id="save-button" - label="Speichern" - ></admin-primary-button> + text="Speichern" + [stateResource]="submitInProgress$ | async" + (clickEmitter)="submit()" + ></ods-button-with-spinner> <span *ngIf="formService.invalidEmpty" data-test-id="invalid-empty-message-span" class="m-2 text-red-500" - >*Es müssen alle Felder ausgefüllt sein.</span > + *Es müssen alle Felder ausgefüllt sein. + </span> </form> diff --git a/alfa-client/libs/admin-settings/src/lib/postfach/postfach-container/postfach-form/postfach-form.component.spec.ts b/alfa-client/libs/admin/settings/src/lib/postfach/postfach-container/postfach-form/postfach-form.component.spec.ts similarity index 56% rename from alfa-client/libs/admin-settings/src/lib/postfach/postfach-container/postfach-form/postfach-form.component.spec.ts rename to alfa-client/libs/admin/settings/src/lib/postfach/postfach-container/postfach-form/postfach-form.component.spec.ts index f3e6c68f3f15f51d766224ea4add00605a4e05be..3470d76a49844b39ea90737b2474d95c76ff5a2c 100644 --- a/alfa-client/libs/admin-settings/src/lib/postfach/postfach-container/postfach-form/postfach-form.component.spec.ts +++ b/alfa-client/libs/admin/settings/src/lib/postfach/postfach-container/postfach-form/postfach-form.component.spec.ts @@ -1,26 +1,29 @@ -import { ProblemDetail, createStateResource } from '@alfa-client/tech-shared'; import { - Mock, + createEmptyStateResource, + createStateResource, + ProblemDetail, +} from '@alfa-client/tech-shared'; +import { dispatchEventFromFixture, existsAsHtmlElement, - getDebugElementFromFixtureByCss, - getElementFromFixture, + Mock, mock, notExistsAsHtmlElement, } from '@alfa-client/test-utils'; import { ComponentFixture, TestBed } from '@angular/core/testing'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { ButtonWithSpinnerComponent } from '@ods/component'; import { getDataTestIdOf } from 'libs/tech-shared/test/data-test'; -import { MockComponent, ngMocks } from 'ng-mocks'; -import { EMPTY, of } from 'rxjs'; -import { createInvalidParam, createProblemDetail } from '../../../../../../tech-shared/test/error'; -import { singleCold } from '../../../../../../tech-shared/test/marbles'; +import { createInvalidParam, createProblemDetail } from 'libs/tech-shared/test/error'; +import { singleCold } from 'libs/tech-shared/test/marbles'; +import { MockComponent } from 'ng-mocks'; +import { EMPTY } from 'rxjs'; import { createPostfachResource } from '../../../../../test/postfach/postfach'; -import { PrimaryButtonComponent } from '../../../shared/primary-button/primary-button.component'; import { TextFieldComponent } from '../../../shared/text-field/text-field.component'; import { PostfachResource } from '../../postfach.model'; import { PostfachService } from '../../postfach.service'; import { PostfachFormComponent } from './postfach-form.component'; +import { PostfachSignaturComponent } from './postfach-signatur/postfach-signatur.component'; import { PostfachFormService } from './postfach.formservice'; describe('PostfachFormComponent', () => { @@ -37,8 +40,9 @@ describe('PostfachFormComponent', () => { await TestBed.configureTestingModule({ declarations: [ PostfachFormComponent, - MockComponent(PrimaryButtonComponent), MockComponent(TextFieldComponent), + MockComponent(PostfachSignaturComponent), + MockComponent(ButtonWithSpinnerComponent), ], imports: [ReactiveFormsModule, FormsModule], providers: [ @@ -86,59 +90,43 @@ describe('PostfachFormComponent', () => { }); }); - describe('Absender section', () => { - const fields: string[][] = [ - [PostfachFormService.NAME_FIELD, 'Name', 'absender-name'], - [PostfachFormService.ANSCHRIFT_FIELD, 'Anschrift', 'absender-anschrift'], - [PostfachFormService.DIENST_FIELD, 'Dienst', 'absender-dienst'], - [PostfachFormService.MANDANT_FIELD, 'Mandant', 'absender-mandant'], - [ - PostfachFormService.GEMEINDESCHLUESSEL_FIELD, - 'Gemeindeschlüssel', - 'absender-gemeindeschluessel', - ], - ]; - - test.each(fields)( - 'should bind form for text-field "%s"', - async (fieldName, text, dataTestId) => { - const fieldValue = `some text-field ${text}`; - const absenderGroup = formService.form.get(PostfachFormService.ASBSENDER_GROUP); - const formControl = absenderGroup.get(fieldName); - - const textFieldComponent = getDebugElementFromFixtureByCss( - fixture, - getDataTestIdOf(dataTestId), - ); - ngMocks.change(textFieldComponent, fieldValue); - expect(formControl.value).toBe(fieldValue); - }, - ); - - test.each(fields)( - 'should have label for field "%s" with name "%s"', - (fieldName, text, dataTestId) => { - const textFieldElement = getElementFromFixture(fixture, getDataTestIdOf(dataTestId)); - expect(textFieldElement.getAttribute('ng-reflect-label')).toBe(text); - }, - ); - }); - - describe('Signatur section', () => { - const signaturTextarea = getDataTestIdOf('signatur-text'); - - it('should have signatur-text', () => { - existsAsHtmlElement(fixture, signaturTextarea); - }); - - it('should set form-control-name', () => { - const text = 'some signature text'; - formService.form.get(PostfachFormService.SIGNATUR_FIELD).setValue(text); - - const textareaElement = getElementFromFixture(fixture, signaturTextarea); - expect(textareaElement.value).toBe(text); - }); - }); + // describe('Absender section', () => { + // const fields: string[][] = [ + // [PostfachFormService.NAME_FIELD, 'Name', 'absender-name'], + // [PostfachFormService.ANSCHRIFT_FIELD, 'Anschrift', 'absender-anschrift'], + // [PostfachFormService.DIENST_FIELD, 'Dienst', 'absender-dienst'], + // [PostfachFormService.MANDANT_FIELD, 'Mandant', 'absender-mandant'], + // [ + // PostfachFormService.GEMEINDESCHLUESSEL_FIELD, + // 'Gemeindeschlüssel', + // 'absender-gemeindeschluessel', + // ], + // ]; + // + // test.each(fields)( + // 'should bind form for text-field "%s"', + // async (fieldName, text, dataTestId) => { + // const fieldValue = `some text-field ${text}`; + // const absenderGroup = formService.form.get(PostfachFormService.ASBSENDER_GROUP); + // const formControl = absenderGroup.get(fieldName); + // + // const textFieldComponent = getDebugElementFromFixtureByCss( + // fixture, + // getDataTestIdOf(dataTestId), + // ); + // ngMocks.change(textFieldComponent, fieldValue); + // expect(formControl.value).toBe(fieldValue); + // }, + // ); + // + // test.each(fields)( + // 'should have label for field "%s" with name "%s"', + // (fieldName, text, dataTestId) => { + // const textFieldElement = getElementFromFixture(fixture, getDataTestIdOf(dataTestId)); + // expect(textFieldElement.getAttribute('ng-reflect-label')).toBe(text); + // }, + // ); + // }); describe('save button', () => { it('should call submit on click', () => { @@ -150,17 +138,17 @@ describe('PostfachFormComponent', () => { expect(submitFn).toHaveBeenCalled(); }); - it.each([true, false])('should use submit progress "%s"', (progress) => { - component.submitInProgress$ = of(progress); - - fixture.detectChanges(); - - const saveButtonComponent: PrimaryButtonComponent = getDebugElementFromFixtureByCss( - fixture, - saveButtonSelector, - ).componentInstance; - expect(saveButtonComponent.submitInProgress).toBe(progress); - }); + // it.each([true, false])('should use submit progress "%s"', (progress) => { + // component.submitInProgress$ = of(progress); + // + // fixture.detectChanges(); + // + // const saveButtonComponent: ButtonWithSpinnerComponent = getDebugElementFromFixtureByCss( + // fixture, + // saveButtonSelector, + // ).componentInstance; + // expect(saveButtonComponent.loading).toBe(progress); + // }); }); describe('invalid message', () => { @@ -190,11 +178,12 @@ describe('PostfachFormComponent', () => { describe('submit', () => { it('should assign submit in progress', () => { - formService.submitWithProgress = jest.fn().mockReturnValue(singleCold(true)); + const stateResource = createEmptyStateResource(); + formService.submit = jest.fn().mockReturnValue(singleCold(stateResource)); component.submit(); - expect(component.submitInProgress$).toBeObservable(singleCold(true)); + expect(component.submitInProgress$).toBeObservable(singleCold(stateResource)); }); }); }); diff --git a/alfa-client/libs/admin-settings/src/lib/postfach/postfach-container/postfach-form/postfach-form.component.ts b/alfa-client/libs/admin/settings/src/lib/postfach/postfach-container/postfach-form/postfach-form.component.ts similarity index 74% rename from alfa-client/libs/admin-settings/src/lib/postfach/postfach-container/postfach-form/postfach-form.component.ts rename to alfa-client/libs/admin/settings/src/lib/postfach/postfach-container/postfach-form/postfach-form.component.ts index be240d7c1e9f5439bb24fe222501ab20c9c2fc72..ca965ac3fa5ff09806a8a95a9ea22ccb2764ae19 100644 --- a/alfa-client/libs/admin-settings/src/lib/postfach/postfach-container/postfach-form/postfach-form.component.ts +++ b/alfa-client/libs/admin/settings/src/lib/postfach/postfach-container/postfach-form/postfach-form.component.ts @@ -1,5 +1,6 @@ -import { StateResource, isNotNil } from '@alfa-client/tech-shared'; +import { createEmptyStateResource, isNotNil, StateResource } from '@alfa-client/tech-shared'; import { Component, Input } from '@angular/core'; +import { Resource } from '@ngxp/rest'; import { Observable, of } from 'rxjs'; import { PostfachResource } from '../../postfach.model'; import { PostfachFormService } from './postfach.formservice'; @@ -10,7 +11,7 @@ import { PostfachFormService } from './postfach.formservice'; providers: [PostfachFormService], }) export class PostfachFormComponent { - submitInProgress$: Observable<boolean> = of(false); + submitInProgress$: Observable<StateResource<Resource>> = of(createEmptyStateResource<Resource>()); @Input() set postfachStateResource(stateResource: StateResource<PostfachResource>) { this.updatePostfachResource(stateResource.resource); @@ -27,6 +28,6 @@ export class PostfachFormComponent { constructor(public formService: PostfachFormService) {} public submit(): void { - this.submitInProgress$ = this.formService.submitWithProgress(); + this.submitInProgress$ = this.formService.submit(); } } diff --git a/alfa-client/libs/admin/settings/src/lib/postfach/postfach-container/postfach-form/postfach-signatur/postfach-signatur.component.html b/alfa-client/libs/admin/settings/src/lib/postfach/postfach-container/postfach-form/postfach-signatur/postfach-signatur.component.html new file mode 100644 index 0000000000000000000000000000000000000000..a0d251c9e393b6755b2705705da3e049a2271e55 --- /dev/null +++ b/alfa-client/libs/admin/settings/src/lib/postfach/postfach-container/postfach-form/postfach-signatur/postfach-signatur.component.html @@ -0,0 +1,15 @@ +<form [formGroup]="formService.form"> + <h2 class="heading-2">Signatur</h2> + <p id="signatur-desc"> + Diese Signatur wird bei allen Nachrichten an den Antragsteller angezeigt. + </p> + <ods-textarea-editor + [formControlName]="formServiceClass.SIGNATUR_FIELD" + [isResizable]="false" + data-test-id="signatur-text" + label="" + rows="6" + class="w-full" + aria-describedby="signatur-desc" + /> +</form> 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 new file mode 100644 index 0000000000000000000000000000000000000000..7ac55113ec028463983d6e823f2e7842fbf9e53a --- /dev/null +++ b/alfa-client/libs/admin/settings/src/lib/postfach/postfach-container/postfach-form/postfach-signatur/postfach-signatur.component.spec.ts @@ -0,0 +1,54 @@ +import { getElementFromFixture, mock, useFromMock } from '@alfa-client/test-utils'; +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { FormBuilder, ReactiveFormsModule } from '@angular/forms'; +import { TextareaEditorComponent } from '@ods/component'; +import { getDataTestIdOf } from 'libs/tech-shared/test/data-test'; +import { MockComponent } from 'ng-mocks'; +import { PostfachService } from '../../../postfach.service'; +import { PostfachFormComponent } from '../postfach-form.component'; +import { PostfachFormService } from '../postfach.formservice'; +import { PostfachSignaturComponent } from './postfach-signatur.component'; + +describe('PostfachSignaturComponent', () => { + let component: PostfachSignaturComponent; + let fixture: ComponentFixture<PostfachSignaturComponent>; + + const formService: PostfachFormService = new PostfachFormService( + new FormBuilder(), + useFromMock(mock(PostfachService)), + ); + + const signaturTextarea = getDataTestIdOf('signatur-text'); + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [ReactiveFormsModule], + declarations: [PostfachFormComponent, MockComponent(TextareaEditorComponent)], + providers: [ + { + provide: PostfachFormService, + useValue: formService, + }, + ], + }).compileComponents(); + fixture = TestBed.createComponent(PostfachSignaturComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + describe('template', () => { + it('should create', () => { + expect(component).toBeTruthy(); + }); + + describe('ods-textarea-editor', () => { + describe('input', () => { + it('should set formControlName to Signatur Field', () => { + const textAreaEditor = getElementFromFixture(fixture, signaturTextarea); + + expect(textAreaEditor.getAttribute('rows')).toEqual('6'); + }); + }); + }); + }); +}); diff --git a/alfa-client/libs/admin/settings/src/lib/postfach/postfach-container/postfach-form/postfach-signatur/postfach-signatur.component.ts b/alfa-client/libs/admin/settings/src/lib/postfach/postfach-container/postfach-form/postfach-signatur/postfach-signatur.component.ts new file mode 100644 index 0000000000000000000000000000000000000000..5d6a6f695879e1989dabe1192e0aaa7f0d97a48d --- /dev/null +++ b/alfa-client/libs/admin/settings/src/lib/postfach/postfach-container/postfach-form/postfach-signatur/postfach-signatur.component.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; +import { PostfachFormService } from '../postfach.formservice'; + +@Component({ + selector: 'postfach-signatur', + templateUrl: './postfach-signatur.component.html', +}) +export class PostfachSignaturComponent { + protected readonly formServiceClass = PostfachFormService; + + constructor(public formService: PostfachFormService) {} +} diff --git a/alfa-client/libs/admin-settings/src/lib/postfach/postfach-container/postfach-form/postfach.formservice.spec.ts b/alfa-client/libs/admin/settings/src/lib/postfach/postfach-container/postfach-form/postfach.formservice.spec.ts similarity index 82% rename from alfa-client/libs/admin-settings/src/lib/postfach/postfach-container/postfach-form/postfach.formservice.spec.ts rename to alfa-client/libs/admin/settings/src/lib/postfach/postfach-container/postfach-form/postfach.formservice.spec.ts index d5a884c0f1379fcf3172de5de2743f8a30d691bd..bbc93c26a6744ea5ae695e9c4400bdeccfdb1f72 100644 --- a/alfa-client/libs/admin-settings/src/lib/postfach/postfach-container/postfach-form/postfach.formservice.spec.ts +++ b/alfa-client/libs/admin/settings/src/lib/postfach/postfach-container/postfach-form/postfach.formservice.spec.ts @@ -1,12 +1,7 @@ -import { - createEmptyStateResource, - createStateResource, - StateResource, -} from '@alfa-client/tech-shared'; +import { createStateResource, StateResource } from '@alfa-client/tech-shared'; import { mock, Mock, useFromMock } from '@alfa-client/test-utils'; import { FormBuilder } from '@angular/forms'; -import { cold } from 'jest-marbles'; -import { Observable, of } from 'rxjs'; +import { of } from 'rxjs'; import { createPostfach, createPostfachResource } from '../../../../../test/postfach/postfach'; import { Postfach, PostfachResource } from '../../postfach.model'; import { PostfachService } from '../../postfach.service'; @@ -19,7 +14,6 @@ describe('PostfachFormService', () => { beforeEach(() => { postfachService = mock(PostfachService); - formService = new PostfachFormService(formBuilder, useFromMock(postfachService)); }); @@ -93,19 +87,4 @@ describe('PostfachFormService', () => { }); }); }); - - describe('submit with progress', () => { - it('should assign submit in progress to state resource loading', () => { - formService.submit = jest.fn().mockReturnValue( - cold('ab', { - a: createEmptyStateResource(true), - b: createEmptyStateResource(false), - }), - ); - - const progressObservable: Observable<boolean> = formService.submitWithProgress(); - - expect(progressObservable).toBeObservable(cold('ab', { a: true, b: false })); - }); - }); }); diff --git a/alfa-client/libs/admin-settings/src/lib/postfach/postfach-container/postfach-form/postfach.formservice.ts b/alfa-client/libs/admin/settings/src/lib/postfach/postfach-container/postfach-form/postfach.formservice.ts similarity index 84% rename from alfa-client/libs/admin-settings/src/lib/postfach/postfach-container/postfach-form/postfach.formservice.ts rename to alfa-client/libs/admin/settings/src/lib/postfach/postfach-container/postfach-form/postfach.formservice.ts index c6d801bdd90f6f27101dd9d621c497083c57f6ac..ed81ff5fd52cfc3ef92312fd3f2d0cbbcb8d4d89 100644 --- a/alfa-client/libs/admin-settings/src/lib/postfach/postfach-container/postfach-form/postfach.formservice.ts +++ b/alfa-client/libs/admin/settings/src/lib/postfach/postfach-container/postfach-form/postfach.formservice.ts @@ -1,14 +1,8 @@ -import { - AbstractFormService, - EMPTY_STRING, - HttpError, - ProblemDetail, - StateResource, -} from '@alfa-client/tech-shared'; +import { AbstractFormService, EMPTY_STRING, StateResource } from '@alfa-client/tech-shared'; import { Injectable } from '@angular/core'; import { FormControl, UntypedFormBuilder, UntypedFormGroup } from '@angular/forms'; import { isNil } from 'lodash-es'; -import { Observable, map } from 'rxjs'; +import { Observable } from 'rxjs'; import { Postfach, PostfachResource } from '../../postfach.model'; import { PostfachService } from '../../postfach.service'; @@ -43,7 +37,7 @@ export class PostfachFormService extends AbstractFormService { }); } - protected doSubmit(): Observable<StateResource<PostfachResource | HttpError>> { + protected doSubmit(): Observable<StateResource<PostfachResource>> { const value: Postfach = this.getFormValue(); if (this.shouldSkipAbsender(value)) { delete value.absender; @@ -65,12 +59,4 @@ export class PostfachFormService extends AbstractFormService { public get invalidEmpty(): boolean { return this.form.invalid; } - - public submitWithProgress(): Observable<boolean> { - return this.submit().pipe( - map( - (stateResource: StateResource<PostfachResource | ProblemDetail>) => stateResource.loading, - ), - ); - } } diff --git a/alfa-client/libs/admin-settings/src/lib/postfach/postfach-navigation-item/postfach-navigation-item.component.html b/alfa-client/libs/admin/settings/src/lib/postfach/postfach-navigation-item/postfach-navigation-item.component.html similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/postfach/postfach-navigation-item/postfach-navigation-item.component.html rename to alfa-client/libs/admin/settings/src/lib/postfach/postfach-navigation-item/postfach-navigation-item.component.html diff --git a/alfa-client/libs/admin-settings/src/lib/postfach/postfach-navigation-item/postfach-navigation-item.component.scss b/alfa-client/libs/admin/settings/src/lib/postfach/postfach-navigation-item/postfach-navigation-item.component.scss similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/postfach/postfach-navigation-item/postfach-navigation-item.component.scss rename to alfa-client/libs/admin/settings/src/lib/postfach/postfach-navigation-item/postfach-navigation-item.component.scss diff --git a/alfa-client/libs/admin-settings/src/lib/postfach/postfach-navigation-item/postfach-navigation-item.component.spec.ts b/alfa-client/libs/admin/settings/src/lib/postfach/postfach-navigation-item/postfach-navigation-item.component.spec.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/postfach/postfach-navigation-item/postfach-navigation-item.component.spec.ts rename to alfa-client/libs/admin/settings/src/lib/postfach/postfach-navigation-item/postfach-navigation-item.component.spec.ts diff --git a/alfa-client/libs/admin-settings/src/lib/postfach/postfach-navigation-item/postfach-navigation-item.component.ts b/alfa-client/libs/admin/settings/src/lib/postfach/postfach-navigation-item/postfach-navigation-item.component.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/postfach/postfach-navigation-item/postfach-navigation-item.component.ts rename to alfa-client/libs/admin/settings/src/lib/postfach/postfach-navigation-item/postfach-navigation-item.component.ts diff --git a/alfa-client/libs/admin-settings/src/lib/postfach/postfach-resource.service.ts b/alfa-client/libs/admin/settings/src/lib/postfach/postfach-resource.service.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/postfach/postfach-resource.service.ts rename to alfa-client/libs/admin/settings/src/lib/postfach/postfach-resource.service.ts diff --git a/alfa-client/libs/admin-settings/src/lib/postfach/postfach.linkrel.ts b/alfa-client/libs/admin/settings/src/lib/postfach/postfach.linkrel.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/postfach/postfach.linkrel.ts rename to alfa-client/libs/admin/settings/src/lib/postfach/postfach.linkrel.ts diff --git a/alfa-client/libs/admin-settings/src/lib/postfach/postfach.model.ts b/alfa-client/libs/admin/settings/src/lib/postfach/postfach.model.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/postfach/postfach.model.ts rename to alfa-client/libs/admin/settings/src/lib/postfach/postfach.model.ts diff --git a/alfa-client/libs/admin-settings/src/lib/postfach/postfach.service.spec.ts b/alfa-client/libs/admin/settings/src/lib/postfach/postfach.service.spec.ts similarity index 56% rename from alfa-client/libs/admin-settings/src/lib/postfach/postfach.service.spec.ts rename to alfa-client/libs/admin/settings/src/lib/postfach/postfach.service.spec.ts index ca41b7c408ecec8a94ed38459aae668038c8f0ee..0d8fd6b5eb2d724ff31293252d1b3d10a2c8937b 100644 --- a/alfa-client/libs/admin-settings/src/lib/postfach/postfach.service.spec.ts +++ b/alfa-client/libs/admin/settings/src/lib/postfach/postfach.service.spec.ts @@ -1,8 +1,15 @@ -import { HttpError, StateResource, createStateResource } from '@alfa-client/tech-shared'; +import { + StateResource, + createEmptyStateResource, + createStateResource, +} from '@alfa-client/tech-shared'; import { Mock, mock, useFromMock } from '@alfa-client/test-utils'; +import { SnackBarService } from '@alfa-client/ui'; import { Type } from '@angular/core'; -import { Observable } from 'rxjs'; -import { singleCold, singleHot } from '../../../../tech-shared/test/marbles'; +import { fakeAsync, tick } from '@angular/core/testing'; +import { cold } from 'jest-marbles'; +import { singleCold, singleHot } from 'libs/tech-shared/test/marbles'; +import { Observable, of } from 'rxjs'; import { createPostfachResource, createPostfachSettingItem } from '../../../test/postfach/postfach'; import { PostfachResourceService } from './postfach-resource.service'; import { PostfachResource, PostfachSettingsItem } from './postfach.model'; @@ -11,11 +18,12 @@ import { PostfachService } from './postfach.service'; describe('PostfachService', () => { let service: PostfachService; let resourceService: Mock<PostfachResourceService>; + const snackbarService: Mock<SnackBarService> = mock(SnackBarService); beforeEach(() => { resourceService = mockResourceService(PostfachResourceService); - service = new PostfachService(useFromMock(resourceService)); + service = new PostfachService(useFromMock(resourceService), useFromMock(snackbarService)); }); it('should create', () => { @@ -36,8 +44,7 @@ describe('PostfachService', () => { it('should reurn value', () => { resourceService.get.mockReturnValue(singleCold(postfachStateResource)); - const returnedPostfachResource: Observable<StateResource<PostfachResource | HttpError>> = - service.get(); + const returnedPostfachResource: Observable<StateResource<PostfachResource>> = service.get(); expect(returnedPostfachResource).toBeObservable(singleHot(postfachStateResource)); }); @@ -45,25 +52,48 @@ describe('PostfachService', () => { describe('save', () => { const postfachSettingsItem: PostfachSettingsItem = createPostfachSettingItem(); + const postfachResource: PostfachResource = createPostfachResource(); + const postfachStateResource: StateResource<PostfachResource> = + createStateResource(postfachResource); + + beforeEach(() => {}); it('should call resourceService', () => { + resourceService.save.mockReturnValue(of(postfachStateResource)); + service.save(postfachSettingsItem.settingBody); expect(resourceService.save).toHaveBeenCalledWith(postfachSettingsItem); }); it('should return saved value', () => { - const postfachResource: PostfachResource = createPostfachResource(); - const postfachStateResource: StateResource<PostfachResource> = - createStateResource(postfachResource); - resourceService.save.mockReturnValue(singleCold(postfachStateResource)); + resourceService.save.mockReturnValue(singleCold(postfachStateResource, '-a')); - const savedPostfach: Observable<StateResource<PostfachResource | HttpError>> = service.save( + const savedPostfach: Observable<StateResource<PostfachResource>> = service.save( postfachResource.settingBody, ); - expect(savedPostfach).toBeObservable(singleHot(postfachStateResource)); + expect(savedPostfach).toBeObservable( + cold('ab', { + a: createEmptyStateResource<PostfachResource>(true), + b: postfachStateResource, + }), + ); }); + + it('should show message in snackbar', fakeAsync(() => { + resourceService.save.mockReturnValue(of(postfachStateResource)); + const savedPostfach: Observable<StateResource<PostfachResource>> = service.save( + postfachResource.settingBody, + ); + + savedPostfach.subscribe(); + tick(); + + expect(snackbarService.showInfo).toHaveBeenCalledWith( + 'Die Signatur wird erfolgreich gespeichert.', + ); + })); }); }); diff --git a/alfa-client/libs/admin/settings/src/lib/postfach/postfach.service.ts b/alfa-client/libs/admin/settings/src/lib/postfach/postfach.service.ts new file mode 100644 index 0000000000000000000000000000000000000000..2fc6ec706f41b554a0a9812034f45cb596edf9f8 --- /dev/null +++ b/alfa-client/libs/admin/settings/src/lib/postfach/postfach.service.ts @@ -0,0 +1,41 @@ +import { createEmptyStateResource, StateResource } from '@alfa-client/tech-shared'; +import { SnackBarService } from '@alfa-client/ui'; +import { Injectable } from '@angular/core'; +import { Observable, startWith, tap } from 'rxjs'; +import { SettingName } from '../admin-settings.model'; +import { PostfachResourceService } from './postfach-resource.service'; +import { Postfach, PostfachResource, PostfachSettingsItem } from './postfach.model'; + +@Injectable() +export class PostfachService { + constructor( + private postfachResourceService: PostfachResourceService, + private snackbarService: SnackBarService, + ) {} + + public get(): Observable<StateResource<PostfachResource>> { + return this.postfachResourceService.get(); + } + + public save(postfach: Postfach): Observable<StateResource<PostfachResource>> { + return this.postfachResourceService.save(this.buildPostfachSettingItem(postfach)).pipe( + tap((stateResource: StateResource<PostfachResource>) => + this.showInfoAfterSave(stateResource), + ), + startWith(createEmptyStateResource<PostfachResource>(true)), + ); + } + + private showInfoAfterSave(stateResource: StateResource<PostfachResource>) { + if (!stateResource.loading) { + this.snackbarService.showInfo('Die Signatur wird erfolgreich gespeichert.'); + } + } + + private buildPostfachSettingItem(postfach: Postfach): PostfachSettingsItem { + return { + name: SettingName.POSTFACH, + settingBody: postfach, + }; + } +} diff --git a/alfa-client/libs/admin-settings/src/lib/shared/more-menu/more-item-button/more-item-button.component.html b/alfa-client/libs/admin/settings/src/lib/shared/more-menu/more-item-button/more-item-button.component.html similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/shared/more-menu/more-item-button/more-item-button.component.html rename to alfa-client/libs/admin/settings/src/lib/shared/more-menu/more-item-button/more-item-button.component.html diff --git a/alfa-client/libs/admin-settings/src/lib/shared/more-menu/more-item-button/more-item-button.component.spec.ts b/alfa-client/libs/admin/settings/src/lib/shared/more-menu/more-item-button/more-item-button.component.spec.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/shared/more-menu/more-item-button/more-item-button.component.spec.ts rename to alfa-client/libs/admin/settings/src/lib/shared/more-menu/more-item-button/more-item-button.component.spec.ts diff --git a/alfa-client/libs/admin-settings/src/lib/shared/more-menu/more-item-button/more-item-button.component.ts b/alfa-client/libs/admin/settings/src/lib/shared/more-menu/more-item-button/more-item-button.component.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/shared/more-menu/more-item-button/more-item-button.component.ts rename to alfa-client/libs/admin/settings/src/lib/shared/more-menu/more-item-button/more-item-button.component.ts diff --git a/alfa-client/libs/admin-settings/src/lib/shared/more-menu/more-menu.component.html b/alfa-client/libs/admin/settings/src/lib/shared/more-menu/more-menu.component.html similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/shared/more-menu/more-menu.component.html rename to alfa-client/libs/admin/settings/src/lib/shared/more-menu/more-menu.component.html diff --git a/alfa-client/libs/admin-settings/src/lib/shared/more-menu/more-menu.component.spec.ts b/alfa-client/libs/admin/settings/src/lib/shared/more-menu/more-menu.component.spec.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/shared/more-menu/more-menu.component.spec.ts rename to alfa-client/libs/admin/settings/src/lib/shared/more-menu/more-menu.component.spec.ts diff --git a/alfa-client/libs/admin-settings/src/lib/shared/more-menu/more-menu.component.ts b/alfa-client/libs/admin/settings/src/lib/shared/more-menu/more-menu.component.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/shared/more-menu/more-menu.component.ts rename to alfa-client/libs/admin/settings/src/lib/shared/more-menu/more-menu.component.ts diff --git a/alfa-client/libs/admin-settings/src/lib/shared/navigation-item/navigation-item.component.html b/alfa-client/libs/admin/settings/src/lib/shared/navigation-item/navigation-item.component.html similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/shared/navigation-item/navigation-item.component.html rename to alfa-client/libs/admin/settings/src/lib/shared/navigation-item/navigation-item.component.html diff --git a/alfa-client/libs/admin-settings/src/lib/shared/navigation-item/navigation-item.component.scss b/alfa-client/libs/admin/settings/src/lib/shared/navigation-item/navigation-item.component.scss similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/shared/navigation-item/navigation-item.component.scss rename to alfa-client/libs/admin/settings/src/lib/shared/navigation-item/navigation-item.component.scss diff --git a/alfa-client/libs/admin-settings/src/lib/shared/navigation-item/navigation-item.component.spec.ts b/alfa-client/libs/admin/settings/src/lib/shared/navigation-item/navigation-item.component.spec.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/shared/navigation-item/navigation-item.component.spec.ts rename to alfa-client/libs/admin/settings/src/lib/shared/navigation-item/navigation-item.component.spec.ts diff --git a/alfa-client/libs/admin-settings/src/lib/shared/navigation-item/navigation-item.component.ts b/alfa-client/libs/admin/settings/src/lib/shared/navigation-item/navigation-item.component.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/shared/navigation-item/navigation-item.component.ts rename to alfa-client/libs/admin/settings/src/lib/shared/navigation-item/navigation-item.component.ts diff --git a/alfa-client/libs/admin-settings/src/lib/shared/primary-button/primary-button.component.html b/alfa-client/libs/admin/settings/src/lib/shared/primary-button/primary-button.component.html similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/shared/primary-button/primary-button.component.html rename to alfa-client/libs/admin/settings/src/lib/shared/primary-button/primary-button.component.html diff --git a/alfa-client/libs/admin-settings/src/lib/shared/primary-button/primary-button.component.spec.ts b/alfa-client/libs/admin/settings/src/lib/shared/primary-button/primary-button.component.spec.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/shared/primary-button/primary-button.component.spec.ts rename to alfa-client/libs/admin/settings/src/lib/shared/primary-button/primary-button.component.spec.ts diff --git a/alfa-client/libs/admin-settings/src/lib/shared/primary-button/primary-button.component.ts b/alfa-client/libs/admin/settings/src/lib/shared/primary-button/primary-button.component.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/shared/primary-button/primary-button.component.ts rename to alfa-client/libs/admin/settings/src/lib/shared/primary-button/primary-button.component.ts diff --git a/alfa-client/libs/admin-settings/src/lib/shared/secondary-button/secondary-button.component.html b/alfa-client/libs/admin/settings/src/lib/shared/secondary-button/secondary-button.component.html similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/shared/secondary-button/secondary-button.component.html rename to alfa-client/libs/admin/settings/src/lib/shared/secondary-button/secondary-button.component.html diff --git a/alfa-client/libs/admin-settings/src/lib/shared/secondary-button/secondary-button.component.spec.ts b/alfa-client/libs/admin/settings/src/lib/shared/secondary-button/secondary-button.component.spec.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/shared/secondary-button/secondary-button.component.spec.ts rename to alfa-client/libs/admin/settings/src/lib/shared/secondary-button/secondary-button.component.spec.ts diff --git a/alfa-client/libs/admin-settings/src/lib/shared/secondary-button/secondary-button.component.ts b/alfa-client/libs/admin/settings/src/lib/shared/secondary-button/secondary-button.component.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/shared/secondary-button/secondary-button.component.ts rename to alfa-client/libs/admin/settings/src/lib/shared/secondary-button/secondary-button.component.ts diff --git a/alfa-client/libs/admin-settings/src/lib/shared/spinner/spinner.component.html b/alfa-client/libs/admin/settings/src/lib/shared/spinner/spinner.component.html similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/shared/spinner/spinner.component.html rename to alfa-client/libs/admin/settings/src/lib/shared/spinner/spinner.component.html diff --git a/alfa-client/libs/admin-settings/src/lib/shared/spinner/spinner.component.spec.ts b/alfa-client/libs/admin/settings/src/lib/shared/spinner/spinner.component.spec.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/shared/spinner/spinner.component.spec.ts rename to alfa-client/libs/admin/settings/src/lib/shared/spinner/spinner.component.spec.ts diff --git a/alfa-client/libs/admin-settings/src/lib/shared/spinner/spinner.component.ts b/alfa-client/libs/admin/settings/src/lib/shared/spinner/spinner.component.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/shared/spinner/spinner.component.ts rename to alfa-client/libs/admin/settings/src/lib/shared/spinner/spinner.component.ts diff --git a/alfa-client/libs/admin-settings/src/lib/shared/text-field/text-field.component.html b/alfa-client/libs/admin/settings/src/lib/shared/text-field/text-field.component.html similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/shared/text-field/text-field.component.html rename to alfa-client/libs/admin/settings/src/lib/shared/text-field/text-field.component.html diff --git a/alfa-client/libs/admin-settings/src/lib/shared/text-field/text-field.component.spec.ts b/alfa-client/libs/admin/settings/src/lib/shared/text-field/text-field.component.spec.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/shared/text-field/text-field.component.spec.ts rename to alfa-client/libs/admin/settings/src/lib/shared/text-field/text-field.component.spec.ts diff --git a/alfa-client/libs/admin-settings/src/lib/shared/text-field/text-field.component.ts b/alfa-client/libs/admin/settings/src/lib/shared/text-field/text-field.component.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/shared/text-field/text-field.component.ts rename to alfa-client/libs/admin/settings/src/lib/shared/text-field/text-field.component.ts diff --git a/alfa-client/libs/admin-settings/src/lib/user/user.model.ts b/alfa-client/libs/admin/settings/src/lib/user/user.model.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/user/user.model.ts rename to alfa-client/libs/admin/settings/src/lib/user/user.model.ts diff --git a/alfa-client/libs/admin-settings/src/lib/user/user.repository.service.ts b/alfa-client/libs/admin/settings/src/lib/user/user.repository.service.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/user/user.repository.service.ts rename to alfa-client/libs/admin/settings/src/lib/user/user.repository.service.ts diff --git a/alfa-client/libs/admin-settings/src/lib/user/user.repository.spec.ts b/alfa-client/libs/admin/settings/src/lib/user/user.repository.spec.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/user/user.repository.spec.ts rename to alfa-client/libs/admin/settings/src/lib/user/user.repository.spec.ts diff --git a/alfa-client/libs/admin-settings/src/lib/user/user.service.spec.ts b/alfa-client/libs/admin/settings/src/lib/user/user.service.spec.ts similarity index 99% rename from alfa-client/libs/admin-settings/src/lib/user/user.service.spec.ts rename to alfa-client/libs/admin/settings/src/lib/user/user.service.spec.ts index f15073e7d7fc75be636949747d6189d6650b6c6f..56ac9d24a8cf68804dce861d61b7a3cf551aeb54 100644 --- a/alfa-client/libs/admin-settings/src/lib/user/user.service.spec.ts +++ b/alfa-client/libs/admin/settings/src/lib/user/user.service.spec.ts @@ -1,8 +1,8 @@ import { mock, Mock, useFromMock } from '@alfa-client/test-utils'; import { fakeAsync, tick } from '@angular/core/testing'; import { cold } from 'jest-marbles'; +import { singleCold } from 'libs/tech-shared/test/marbles'; import { firstValueFrom, lastValueFrom, Observable, of } from 'rxjs'; -import { singleCold } from '../../../../tech-shared/test/marbles'; import { createOrganisationseinheit, createOrganisationseinheitState, diff --git a/alfa-client/libs/admin-settings/src/lib/user/user.service.ts b/alfa-client/libs/admin/settings/src/lib/user/user.service.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/user/user.service.ts rename to alfa-client/libs/admin/settings/src/lib/user/user.service.ts diff --git a/alfa-client/libs/admin-settings/src/lib/user/user.util.spec.ts b/alfa-client/libs/admin/settings/src/lib/user/user.util.spec.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/user/user.util.spec.ts rename to alfa-client/libs/admin/settings/src/lib/user/user.util.spec.ts diff --git a/alfa-client/libs/admin-settings/src/lib/user/user.util.ts b/alfa-client/libs/admin/settings/src/lib/user/user.util.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/lib/user/user.util.ts rename to alfa-client/libs/admin/settings/src/lib/user/user.util.ts diff --git a/alfa-client/libs/admin-settings/src/test-setup.ts b/alfa-client/libs/admin/settings/src/test-setup.ts similarity index 100% rename from alfa-client/libs/admin-settings/src/test-setup.ts rename to alfa-client/libs/admin/settings/src/test-setup.ts diff --git a/alfa-client/libs/admin-settings/test/admin-settings.ts b/alfa-client/libs/admin/settings/test/admin-settings.ts similarity index 90% rename from alfa-client/libs/admin-settings/test/admin-settings.ts rename to alfa-client/libs/admin/settings/test/admin-settings.ts index d81dbd8109f79ac5eff68526de2aced072605d05..56cc3ea62b8ac65078f16e7d4494ab4371a54e59 100644 --- a/alfa-client/libs/admin-settings/test/admin-settings.ts +++ b/alfa-client/libs/admin/settings/test/admin-settings.ts @@ -1,5 +1,5 @@ import { Resource } from '@ngxp/rest'; -import { toResource } from '../../tech-shared/test/resource'; +import { toResource } from '../../../tech-shared/test/resource'; import { SettingListLinkRel } from '../src/lib/admin-settings.linkrel'; import { SettingItemResource, SettingListResource } from '../src/lib/admin-settings.model'; diff --git a/alfa-client/libs/admin-settings/test/configuration/configuration.ts b/alfa-client/libs/admin/settings/test/configuration/configuration.ts similarity index 82% rename from alfa-client/libs/admin-settings/test/configuration/configuration.ts rename to alfa-client/libs/admin/settings/test/configuration/configuration.ts index 32e4ed5cac791a9c3c9ea0c6520f9df6decfe905..c12683311837ef4ded9e34d0fbf8797111c004f0 100644 --- a/alfa-client/libs/admin-settings/test/configuration/configuration.ts +++ b/alfa-client/libs/admin/settings/test/configuration/configuration.ts @@ -1,4 +1,4 @@ -import { toResource } from '../../../tech-shared/test/resource'; +import { toResource } from 'libs/tech-shared/test/resource'; import { ConfigurationLinkRel } from '../../src/lib/configuration/configuration.linkrel'; import { ConfigurationResource } from '../../src/lib/configuration/configuration.model'; diff --git a/alfa-client/libs/admin-settings/test/postfach/postfach.ts b/alfa-client/libs/admin/settings/test/postfach/postfach.ts similarity index 93% rename from alfa-client/libs/admin-settings/test/postfach/postfach.ts rename to alfa-client/libs/admin/settings/test/postfach/postfach.ts index 65dc1159f333f5aa897ff759b2a9de5a1c307398..16dd988db914e892938d5b93ae63ede3055beead 100644 --- a/alfa-client/libs/admin-settings/test/postfach/postfach.ts +++ b/alfa-client/libs/admin/settings/test/postfach/postfach.ts @@ -1,5 +1,5 @@ import faker from '@faker-js/faker'; -import { toResource } from '../../../tech-shared/test/resource'; +import { toResource } from 'libs/tech-shared/test/resource'; import { SettingItemResource, SettingName } from '../../src/lib/admin-settings.model'; import { Postfach, diff --git a/alfa-client/libs/admin-settings/test/user/user.ts b/alfa-client/libs/admin/settings/test/user/user.ts similarity index 100% rename from alfa-client/libs/admin-settings/test/user/user.ts rename to alfa-client/libs/admin/settings/test/user/user.ts diff --git a/alfa-client/libs/admin-settings/tsconfig.json b/alfa-client/libs/admin/settings/tsconfig.json similarity index 82% rename from alfa-client/libs/admin-settings/tsconfig.json rename to alfa-client/libs/admin/settings/tsconfig.json index 7cc6baf2f58ed5ccfba098131996f579979e9f18..8ca9ad312c2bd4dc364383853ddd91a2ed8f86fd 100644 --- a/alfa-client/libs/admin-settings/tsconfig.json +++ b/alfa-client/libs/admin/settings/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.base.json", + "extends": "../../../tsconfig.base.json", "files": [], "include": [], "references": [ diff --git a/alfa-client/libs/admin-settings/tsconfig.lib.json b/alfa-client/libs/admin/settings/tsconfig.lib.json similarity index 87% rename from alfa-client/libs/admin-settings/tsconfig.lib.json rename to alfa-client/libs/admin/settings/tsconfig.lib.json index dcc35a71ee8a26bc9394b9cf96b02996be26ec16..17469f1e4af3ea771aaa29b1d48f9bb5bf62a020 100644 --- a/alfa-client/libs/admin-settings/tsconfig.lib.json +++ b/alfa-client/libs/admin/settings/tsconfig.lib.json @@ -1,7 +1,7 @@ { "extends": "./tsconfig.json", "compilerOptions": { - "outDir": "../../dist/out-tsc", + "outDir": "../../../dist/out-tsc", "declaration": true, "declarationMap": true, "inlineSources": true, diff --git a/alfa-client/libs/admin-settings/tsconfig.spec.json b/alfa-client/libs/admin/settings/tsconfig.spec.json similarity index 88% rename from alfa-client/libs/admin-settings/tsconfig.spec.json rename to alfa-client/libs/admin/settings/tsconfig.spec.json index c3cb17f784fa2f7b9a4b0e7c9b03663500f4ee3d..723782fbd367969806c5992aea882773ab65af8b 100644 --- a/alfa-client/libs/admin-settings/tsconfig.spec.json +++ b/alfa-client/libs/admin/settings/tsconfig.spec.json @@ -1,7 +1,7 @@ { "extends": "./tsconfig.json", "compilerOptions": { - "outDir": "../../dist/out-tsc", + "outDir": "../../../dist/out-tsc", "module": "commonjs", "types": ["jest", "node"], "target": "ES2022", diff --git a/alfa-client/libs/collaboration/src/lib/collaboration-in-vorgang-container/collaboration-request-form/collaboration-request-form.component.ts b/alfa-client/libs/collaboration/src/lib/collaboration-in-vorgang-container/collaboration-request-form/collaboration-request-form.component.ts index ccaf4fd89ec7f6af5d2afe69d3ff397669cd841c..d78bb1da55f8ffcb8d3364ce11ef6aff6573aad4 100644 --- a/alfa-client/libs/collaboration/src/lib/collaboration-in-vorgang-container/collaboration-request-form/collaboration-request-form.component.ts +++ b/alfa-client/libs/collaboration/src/lib/collaboration-in-vorgang-container/collaboration-request-form/collaboration-request-form.component.ts @@ -1,6 +1,6 @@ import { Collaboration, CollaborationListResource } from '@alfa-client/collaboration-shared'; import { CommandResource, tapOnCommandSuccessfullyDone } from '@alfa-client/command-shared'; -import { HttpError, StateResource, createEmptyStateResource } from '@alfa-client/tech-shared'; +import { StateResource, createEmptyStateResource } from '@alfa-client/tech-shared'; import { Component, EventEmitter, Input, Output } from '@angular/core'; import { Observable, of } from 'rxjs'; import { CollaborationRequestFormService } from './collaboration.request.formservice'; @@ -20,7 +20,7 @@ export class CollaborationRequestFormComponent { this.formService.setListResource(collaborationListResource); } - public submitInProgress$: Observable<StateResource<CommandResource | HttpError>> = of( + public submitInProgress$: Observable<StateResource<CommandResource>> = of( createEmptyStateResource<CommandResource>(), ); diff --git a/alfa-client/libs/collaboration/src/lib/collaboration-in-vorgang-container/collaboration-request-form/collaboration.request.formservice.spec.ts b/alfa-client/libs/collaboration/src/lib/collaboration-in-vorgang-container/collaboration-request-form/collaboration.request.formservice.spec.ts index a9f135fc6a49e51d32f30ee11708d49189343178..8333c24f140f2ad55fc22d3da7011806b90dccdf 100644 --- a/alfa-client/libs/collaboration/src/lib/collaboration-in-vorgang-container/collaboration-request-form/collaboration.request.formservice.spec.ts +++ b/alfa-client/libs/collaboration/src/lib/collaboration-in-vorgang-container/collaboration-request-form/collaboration.request.formservice.spec.ts @@ -1,6 +1,6 @@ import { CollaborationListResource } from '@alfa-client/collaboration-shared'; import { CommandResource } from '@alfa-client/command-shared'; -import { HttpError, StateResource, createStateResource } from '@alfa-client/tech-shared'; +import { StateResource, createStateResource } from '@alfa-client/tech-shared'; import { Mock, mock, useFromMock } from '@alfa-client/test-utils'; import { UntypedFormBuilder } from '@angular/forms'; import { CollaborationService } from 'libs/collaboration-shared/src/lib/collaboration.service'; @@ -48,8 +48,7 @@ describe('CollaborationRequestFormService', () => { }); it('should return stateCommandResource', () => { - const response$: Observable<StateResource<CommandResource | HttpError>> = - formService.submit(); + const response$: Observable<StateResource<CommandResource>> = formService.submit(); expect(response$).toBeObservable(singleColdCompleted(stateCommandResource)); }); diff --git a/alfa-client/libs/design-component/src/lib/button-with-spinner/button-with-spinner.component.ts b/alfa-client/libs/design-component/src/lib/button-with-spinner/button-with-spinner.component.ts index 05700cac1ad64ec9d60ef775fa70c0b1340140b8..2489bb3d94ad7f490abf17231a075dc0050700c2 100644 --- a/alfa-client/libs/design-component/src/lib/button-with-spinner/button-with-spinner.component.ts +++ b/alfa-client/libs/design-component/src/lib/button-with-spinner/button-with-spinner.component.ts @@ -1,8 +1,9 @@ import { CommandResource, hasCommandError } from '@alfa-client/command-shared'; -import { createEmptyStateResource, isLoaded, StateResource } from '@alfa-client/tech-shared'; +import { StateResource, createEmptyStateResource, isLoaded } from '@alfa-client/tech-shared'; import { CommonModule } from '@angular/common'; import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; -import { ButtonComponent, buttonVariants, ErrorMessageComponent } from '@ods/system'; +import { Resource } from '@ngxp/rest'; +import { ButtonComponent, ErrorMessageComponent, buttonVariants } from '@ods/system'; import { VariantProps } from 'class-variance-authority'; import { isNil } from 'lodash-es'; @@ -16,7 +17,7 @@ type ButtonVariants = VariantProps<typeof buttonVariants>; template: ` <ods-error-message *ngIf="isError" text="Ein Fehler ist aufgetreten." - subText="Versuchen Sie es nocheinmal." + subText="Versuchen Sie es noch einmal." > </ods-error-message> <ods-button @@ -32,7 +33,7 @@ type ButtonVariants = VariantProps<typeof buttonVariants>; export class ButtonWithSpinnerComponent implements OnInit { @Input() text: string = ''; @Input() dataTestId: string = ''; - @Input() stateResource: StateResource<CommandResource>; + @Input() stateResource: StateResource<Resource>; @Input() variant: ButtonVariants['variant'] = 'primary'; @Input() size: ButtonVariants['size'] = 'medium'; @@ -42,10 +43,8 @@ export class ButtonWithSpinnerComponent implements OnInit { this.stateResource = this.getStateResource(); } - getStateResource(): StateResource<CommandResource> { - return isNil(this.stateResource) ? - createEmptyStateResource<CommandResource>() - : this.stateResource; + getStateResource(): StateResource<Resource> { + return isNil(this.stateResource) ? createEmptyStateResource<Resource>() : this.stateResource; } get isLoading(): boolean { @@ -53,6 +52,8 @@ export class ButtonWithSpinnerComponent implements OnInit { } get isError(): boolean { - return isLoaded(this.stateResource) && hasCommandError(this.stateResource.resource); + return ( + isLoaded(this.stateResource) && hasCommandError(<CommandResource>this.stateResource.resource) + ); } } diff --git a/alfa-client/libs/design-component/src/lib/form/textarea-editor/textarea-editor.component.html b/alfa-client/libs/design-component/src/lib/form/textarea-editor/textarea-editor.component.html index c27f425a3f9ca703f85b9961a8c87175a50a0a9f..baa159622243b8c03783314ee0f27e17cf6c78a4 100644 --- a/alfa-client/libs/design-component/src/lib/form/textarea-editor/textarea-editor.component.html +++ b/alfa-client/libs/design-component/src/lib/form/textarea-editor/textarea-editor.component.html @@ -7,6 +7,7 @@ [attr.data-test-id]="(label | convertForDataTest) + '-textarea-editor'" [required]="isRequired" [focus]="focus" + [isResizable]="isResizable" > <ods-validation-error error diff --git a/alfa-client/libs/design-component/src/lib/form/textarea-editor/textarea-editor.component.ts b/alfa-client/libs/design-component/src/lib/form/textarea-editor/textarea-editor.component.ts index a47b955192b12c4a9ce1379062cd16543e455e2a..5dea452149b2facd76f03b209835786e7af4b970 100644 --- a/alfa-client/libs/design-component/src/lib/form/textarea-editor/textarea-editor.component.ts +++ b/alfa-client/libs/design-component/src/lib/form/textarea-editor/textarea-editor.component.ts @@ -24,6 +24,7 @@ export class TextareaEditorComponent extends FormControlEditorAbstractComponent @Input() rows: number = 10; @Input() isRequired: boolean = false; @Input() focus: boolean = false; + @Input() isResizable: boolean = true; get variant(): string { return this.invalidParams.length > 0 ? 'error' : 'default'; diff --git a/alfa-client/libs/design-system/.storybook/styles.scss b/alfa-client/libs/design-system/.storybook/styles.scss index 4a89ff65290c2820edbc6553fd53888807a98bd7..070e34c4f9df1c9fd2e82dba14fe52f4133d4290 100644 --- a/alfa-client/libs/design-system/.storybook/styles.scss +++ b/alfa-client/libs/design-system/.storybook/styles.scss @@ -1 +1,2 @@ -@import '../src/lib/tailwind-preset/root.css'; \ No newline at end of file +@import '../src/lib/tailwind-preset/root.css'; +@import '../../../apps/admin/src/styles.scss'; diff --git a/alfa-client/libs/design-system/nginx.conf b/alfa-client/libs/design-system/nginx.conf index add779e6030ab68ebb8f5dde211d26f25e69a2e4..84da5283449a85072c5d235381383eee86a44d49 100644 --- a/alfa-client/libs/design-system/nginx.conf +++ b/alfa-client/libs/design-system/nginx.conf @@ -32,8 +32,11 @@ http { location / { - root /usr/share/nginx/html/design-system; + root /usr/share/nginx/html/design-system/; index index.html index.htm; + + #add_header Cache-Control "no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0"; + #add_header Expires "0"; } diff --git a/alfa-client/libs/design-system/src/lib/form/textarea/textarea.component.ts b/alfa-client/libs/design-system/src/lib/form/textarea/textarea.component.ts index 2c4340b9f30232e900ef8a4ac8c845adf4765d41..5c418556063b84c751fd274fbd901f18cd3eb4a3 100644 --- a/alfa-client/libs/design-system/src/lib/form/textarea/textarea.component.ts +++ b/alfa-client/libs/design-system/src/lib/form/textarea/textarea.component.ts @@ -38,7 +38,7 @@ type TextareaVariants = VariantProps<typeof textareaVariants>; [id]="id" [formControl]="fieldControl" [rows]="rows" - [ngClass]="textareaVariants({ variant })" + [ngClass]="[textareaVariants({ variant }), isResizable ? 'resize' : 'resize-none']" [placeholder]="placeholder" [autocomplete]="autocomplete" [attr.aria-required]="required" @@ -64,6 +64,7 @@ export class TextareaComponent { @Input() variant: TextareaVariants['variant']; @Input() fieldControl: FormControl = new FormControl(EMPTY_STRING); @Input() required: boolean = false; + @Input() isResizable: boolean = true; @Input() set focus(value: boolean) { if (value && this.textAreaElement) { diff --git a/alfa-client/libs/design-system/src/lib/heading/heading.stories.ts b/alfa-client/libs/design-system/src/lib/heading/heading.stories.ts new file mode 100644 index 0000000000000000000000000000000000000000..6eac165bb7e17ffa37fb79dcf4372a8273af1609 --- /dev/null +++ b/alfa-client/libs/design-system/src/lib/heading/heading.stories.ts @@ -0,0 +1,24 @@ +import { type Meta, type StoryObj } from '@storybook/angular'; + +const meta: Meta = { + title: 'Typography/Heading', + excludeStories: /.*Data$/, + tags: ['autodocs'], + parameters: { + docs: { + description: { + component: + 'The headings are native HTML h-elements, styled with additional classes (see code)', + }, + }, + }, +}; + +export default meta; +type Story = StoryObj; + +export const Default: Story = { + render: () => ({ + template: '<h1 class="heading-1">Heading 1</h1><h2 class="heading-2">Heading 2</h2>', + }), +}; diff --git a/alfa-client/libs/tech-shared/src/lib/resource/api-resource.service.spec.ts b/alfa-client/libs/tech-shared/src/lib/resource/api-resource.service.spec.ts index 8b559b8b81e03d6f4f1a56f56ac6e1e67e14cf64..977db3428026e075b535d45b53e6cdd9865579fb 100644 --- a/alfa-client/libs/tech-shared/src/lib/resource/api-resource.service.spec.ts +++ b/alfa-client/libs/tech-shared/src/lib/resource/api-resource.service.spec.ts @@ -5,7 +5,7 @@ import { Observable, of, throwError } from 'rxjs'; import { singleCold, singleHot } from '../../../test//marbles'; import { createProblemDetail } from '../../../test/error'; import { createDummyResource } from '../../../test/resource'; -import { HttpError, ProblemDetail } from '../tech.model'; +import { ProblemDetail } from '../tech.model'; import { ApiResourceService } from './api-resource.service'; import { LinkRelationName, ResourceServiceConfig, SaveResourceData } from './resource.model'; import { ResourceRepository } from './resource.repository'; @@ -65,7 +65,7 @@ describe('ApiResourceService', () => { service.stateResource.next(createStateResource(resourceWithEditLinkRel)); repository.save.mockReturnValue(singleHot(loadedResource)); - const saved: Observable<StateResource<Resource | HttpError>> = service.save(dummyToSave); + const saved: Observable<StateResource<Resource>> = service.save(dummyToSave); expect(saved).toBeObservable(singleCold(createStateResource(loadedResource))); }); diff --git a/alfa-client/libs/tech-shared/src/lib/resource/resource.service.spec.ts b/alfa-client/libs/tech-shared/src/lib/resource/resource.service.spec.ts index 1a15c29a582000a5be2378c1163f3a487cfd6d1c..61f1ae622b0c4621da50136718665d0c5a94756e 100644 --- a/alfa-client/libs/tech-shared/src/lib/resource/resource.service.spec.ts +++ b/alfa-client/libs/tech-shared/src/lib/resource/resource.service.spec.ts @@ -8,7 +8,7 @@ import { Observable, lastValueFrom, of, throwError } from 'rxjs'; import { createProblemDetail } from '../../../test//error'; import { singleCold, singleHot } from '../../../test/marbles'; import { createDummyResource } from '../../../test/resource'; -import { HttpError, ProblemDetail } from '../tech.model'; +import { ProblemDetail } from '../tech.model'; import { LinkRelationName, ResourceServiceConfig } from './resource.model'; import { ResourceRepository } from './resource.repository'; import { ResourceService } from './resource.service'; @@ -408,7 +408,7 @@ describe('ResourceService', () => { service.stateResource.next(createStateResource(resourceWithEditLinkRel)); service.doSave = jest.fn().mockReturnValue(singleHot(loadedResource)); - const saved: Observable<StateResource<Resource | HttpError>> = service.save(dummyToSave); + const saved: Observable<StateResource<Resource>> = service.save(dummyToSave); expect(saved).toBeObservable(singleCold(createStateResource(loadedResource))); }); @@ -441,7 +441,7 @@ describe('ResourceService', () => { service .handleError(<HttpErrorResponse>(<any>error)) - .subscribe((responseError: StateResource<HttpError>) => { + .subscribe((responseError: StateResource<unknown>) => { expect(responseError).toEqual(createErrorStateResource(error)); done(); }); @@ -453,7 +453,7 @@ describe('ResourceService', () => { statusText: 'Internal Server Error', }; - const thrownError$: Observable<StateResource<HttpError>> = service.handleError(error); + const thrownError$: Observable<StateResource<unknown>> = service.handleError(error); expect.assertions(1); expect(lastValueFrom(thrownError$)).rejects.toThrowError('Internal Server Error'); diff --git a/alfa-client/libs/tech-shared/src/lib/resource/resource.service.ts b/alfa-client/libs/tech-shared/src/lib/resource/resource.service.ts index a69b290c8037e6c4797ae4afc19a695568f9d1c9..6c9eb0a56f13fb81555b915c436119b742b2ec45 100644 --- a/alfa-client/libs/tech-shared/src/lib/resource/resource.service.ts +++ b/alfa-client/libs/tech-shared/src/lib/resource/resource.service.ts @@ -143,7 +143,7 @@ export abstract class ResourceService<B extends Resource, T extends Resource> { this.stateResource.next(createStateResource(resource)); } - public save(toSave: unknown): Observable<StateResource<T | HttpError>> { + public save(toSave: unknown): Observable<StateResource<T>> { const previousResource: T = this.stateResource.value.resource; return this.doSave(previousResource, toSave).pipe( tap((loadedResource: T) => this.stateResource.next(createStateResource(loadedResource))), @@ -152,7 +152,7 @@ export abstract class ResourceService<B extends Resource, T extends Resource> { ); } - handleError(errorResponse: HttpErrorResponse): Observable<StateResource<HttpError>> { + handleError(errorResponse: HttpErrorResponse): Observable<StateResource<T>> { if (isUnprocessableEntity(errorResponse.status)) { return of(createErrorStateResource((<any>errorResponse) as HttpError)); } diff --git a/alfa-client/libs/tech-shared/src/lib/service/formservice.abstract.spec.ts b/alfa-client/libs/tech-shared/src/lib/service/formservice.abstract.spec.ts index ee4a624cb890cbf0da636f80ae01f1aeb7fdc616..35fd33e57c839f74868240d50a5af8d47773fe79 100644 --- a/alfa-client/libs/tech-shared/src/lib/service/formservice.abstract.spec.ts +++ b/alfa-client/libs/tech-shared/src/lib/service/formservice.abstract.spec.ts @@ -29,8 +29,13 @@ import { createInvalidParam, createProblemDetail } from 'libs/tech-shared/test/e import { Observable, of } from 'rxjs'; import { AbstractFormService } from './formservice.abstract'; -import { createEmptyStateResource, createErrorStateResource, createStateResource, StateResource } from '../resource/resource.util'; -import { HttpError, InvalidParam, ProblemDetail } from '../tech.model'; +import { + createEmptyStateResource, + createErrorStateResource, + createStateResource, + StateResource, +} from '../resource/resource.util'; +import { InvalidParam, ProblemDetail } from '../tech.model'; import { createCommandResource } from '../../../../command-shared/test/command'; import * as ValidationUtil from '../validation/tech.validation.util'; @@ -64,8 +69,7 @@ describe('AbstractFormService', () => { }); it('should return state resource observable', () => { - const submitObservable: Observable<StateResource<Resource | HttpError>> = - formService.submit(); + const submitObservable: Observable<StateResource<Resource>> = formService.submit(); expect(submitObservable).toBeObservable(cold('(a|)', { a: stateResourceWithError })); }); @@ -113,8 +117,7 @@ describe('AbstractFormService', () => { it('should return stateresource while loading', () => { const commandStateResource: StateResource<CommandResource> = createEmptyStateResource(true); - const result: StateResource<Resource | HttpError> = - formService.handleResponse(commandStateResource); + const result: StateResource<Resource> = formService.handleResponse(commandStateResource); expect(result).toBe(commandStateResource); }); diff --git a/alfa-client/libs/tech-shared/src/lib/service/formservice.abstract.ts b/alfa-client/libs/tech-shared/src/lib/service/formservice.abstract.ts index 956266f7c268dc575e7e29307b0530a31555f43f..4f225d54b0b1d97d031eb854263bee095aeed03f 100644 --- a/alfa-client/libs/tech-shared/src/lib/service/formservice.abstract.ts +++ b/alfa-client/libs/tech-shared/src/lib/service/formservice.abstract.ts @@ -47,16 +47,16 @@ export abstract class AbstractFormService<T extends Resource = Resource> { public submit( afterSubmit: OperatorFunction<StateResource<T>, StateResource<T>> = identity, - ): Observable<StateResource<T | HttpError>> { + ): Observable<StateResource<T>> { return this.doSubmit().pipe( afterSubmit, map((result) => this.handleResponse(result)), ); } - protected abstract doSubmit(): Observable<StateResource<T | HttpError>>; + protected abstract doSubmit(): Observable<StateResource<T>>; - handleResponse(result: StateResource<T | HttpError>): StateResource<T | HttpError> { + handleResponse(result: StateResource<T>): StateResource<T> { if (result.loading) return result; if (hasStateResourceError(result)) { this.handleError(result.error); diff --git a/alfa-client/libs/tech-shared/src/lib/tech.util.ts b/alfa-client/libs/tech-shared/src/lib/tech.util.ts index 55e881a99ac582741b7bea58ddde81b00c5c11b0..805f0501f440c90c2ca425309e05b33a94ae3314 100644 --- a/alfa-client/libs/tech-shared/src/lib/tech.util.ts +++ b/alfa-client/libs/tech-shared/src/lib/tech.util.ts @@ -26,6 +26,7 @@ import { Base64 } from 'js-base64'; import { isEmpty, isNil, isNull, isUndefined } from 'lodash-es'; import { sanitize } from 'sanitize-filename-ts'; import { LinkRelationName } from './resource/resource.model'; + import { ApiError } from './tech.model'; export const EMPTY_STRING: string = ''; diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.formservice.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.formservice.ts index b079362062868d5fd121503655948db80538f466..cebc1954c540d054f03d4e9e03d2719d9c3c8963 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.formservice.ts +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/bescheiden.formservice.ts @@ -11,7 +11,6 @@ import { CommandResource, tapOnCommandSuccessfullyDone } from '@alfa-client/comm import { AbstractFormService, EMPTY_STRING, - HttpError, StateResource, convertToBoolean, formatForDatabase, @@ -161,7 +160,7 @@ export class BescheidenFormService extends AbstractFormService implements OnDest return BescheidenFormService.FIELD_PATH_PREFIX; } - protected doSubmit(): Observable<StateResource<Resource | HttpError>> { + protected doSubmit(): Observable<StateResource<Resource>> { if (this.isPatch() || this.bescheidService.existsBescheidDraft()) { return this.bescheidService.updateBescheid(this.getValue()); } else { @@ -185,7 +184,7 @@ export class BescheidenFormService extends AbstractFormService implements OnDest }); } - public submitDraft(): Observable<StateResource<Resource | HttpError>> { + public submitDraft(): Observable<StateResource<Resource>> { return this.submit().pipe( tapOnCommandSuccessfullyDone(() => this.bescheidService.reloadCurrentVorgang()), ); diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-steps-content.component.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-steps-content.component.ts index ce42b5dcd7153c3e1e12b0eef65028a1586778ff..e7c2bfebe926455e262f0f96fb23bf3ea6e4eedf 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-steps-content.component.ts +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-steps-content/vorgang-detail-bescheiden-steps-content.component.ts @@ -1,5 +1,4 @@ import { - HttpError, StateResource, createEmptyStateResource, hasStateResourceError, @@ -30,7 +29,7 @@ export class VorgangDetailBescheidenStepsContentComponent implements OnInit { showBescheidErstellungUeberspringen$: Observable<boolean>; - submitResource: StateResource<Resource | HttpError> = createEmptyStateResource(); + submitResource: StateResource<Resource> = createEmptyStateResource(); constructor( private readonly vorgangService: VorgangService, @@ -54,7 +53,7 @@ export class VorgangDetailBescheidenStepsContentComponent implements OnInit { this.formService .submit() .pipe( - tap((resource: StateResource<Resource | HttpError>) => (this.submitResource = resource)), + tap((resource: StateResource<Resource>) => (this.submitResource = resource)), filter(this.noError), first(), ) @@ -72,7 +71,7 @@ export class VorgangDetailBescheidenStepsContentComponent implements OnInit { return this.formService.validateBescheidDocumentExists(); } - noError(stateResource: StateResource<Resource | HttpError>): boolean { + noError(stateResource: StateResource<Resource>): boolean { return isLoaded(stateResource) && !hasStateResourceError(stateResource); } } diff --git a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-weiter-button/vorgang-detail-bescheiden-weiter-button.component.ts b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-weiter-button/vorgang-detail-bescheiden-weiter-button.component.ts index 5e89e7dd34f564986e2d2b48f78919d18c091041..47b2204616e49678ecc4fe4f6df379109f7916f3 100644 --- a/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-weiter-button/vorgang-detail-bescheiden-weiter-button.component.ts +++ b/alfa-client/libs/vorgang-detail/src/lib/vorgang-detail-page/vorgang-detail-bescheiden/vorgang-detail-bescheiden-steps/vorgang-detail-bescheiden-weiter-button/vorgang-detail-bescheiden-weiter-button.component.ts @@ -1,10 +1,5 @@ import { BescheidLinkRel, BescheidService } from '@alfa-client/bescheid-shared'; -import { - HttpError, - StateResource, - createEmptyStateResource, - isLoaded, -} from '@alfa-client/tech-shared'; +import { StateResource, createEmptyStateResource, isLoaded } from '@alfa-client/tech-shared'; import { VorgangService, VorgangWithEingangLinkRel } from '@alfa-client/vorgang-shared'; import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; import { Resource, hasLink } from '@ngxp/rest'; @@ -16,7 +11,7 @@ import { BescheidenFormService } from '../../bescheiden.formservice'; templateUrl: './vorgang-detail-bescheiden-weiter-button.component.html', }) export class VorgangDetailBescheidenWeiterButtonComponent implements OnInit { - @Input() submitResource: StateResource<Resource | HttpError> = createEmptyStateResource(); + @Input() submitResource: StateResource<Resource> = createEmptyStateResource(); @Output() clickEmitter: EventEmitter<MouseEvent> = new EventEmitter<MouseEvent>(); showButton$: Observable<boolean>; diff --git a/alfa-client/nx.json b/alfa-client/nx.json index da024e6acd9e3b33a78b07915bd508b2f9b12a7a..ef541a7eb5a1b147ff131218b9f498e2d295f344 100644 --- a/alfa-client/nx.json +++ b/alfa-client/nx.json @@ -12,13 +12,13 @@ "@nx/angular:library": { "linter": "eslint", "unitTestRunner": "jest", - "styleext": "scss" + "style": "scss" }, "@nrwl/schematics:component": { - "styleext": "scss" + "style": "scss" }, "@schematics/angular:component": { - "styleext": "scss" + "style": "scss" }, "@nx/angular:component": { "style": "scss" diff --git a/alfa-client/tsconfig.base.json b/alfa-client/tsconfig.base.json index 15284c9f0e8bc51994ae4e9b965a16c8b17d0bb6..718027c42393e9c9066bb1b65c2287c66654a873 100644 --- a/alfa-client/tsconfig.base.json +++ b/alfa-client/tsconfig.base.json @@ -16,7 +16,7 @@ "skipDefaultLibCheck": true, "baseUrl": ".", "paths": { - "@admin-client/admin-settings": ["libs/admin-settings/src/index.ts"], + "@admin-client/admin-settings": ["libs/admin/settings/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"], @@ -57,8 +57,7 @@ "@alfa-client/wiedervorlage-shared": ["libs/wiedervorlage-shared/src/index.ts"], "@ods/component": ["libs/design-component/src/index.ts"], "@ods/system": ["libs/design-system/src/index.ts"], - "authentication": ["libs/authentication/src/index.ts"], - "test": ["libs/test/src/index.ts"] + "authentication": ["libs/authentication/src/index.ts"] } }, "exclude": ["node_modules", "tmp"]