diff --git a/alfa-client/apps/admin-e2e/src/components/buildinfo/buildinfo.e2e.component.ts b/alfa-client/apps/admin-e2e/src/components/buildinfo/buildinfo.e2e.component.ts index 5bede900428396575e45c322fe1357c7ac9d3a3a..e6521431d3c69f85ff9dfc9aa060605a0f38e349 100644 --- a/alfa-client/apps/admin-e2e/src/components/buildinfo/buildinfo.e2e.component.ts +++ b/alfa-client/apps/admin-e2e/src/components/buildinfo/buildinfo.e2e.component.ts @@ -1,9 +1,9 @@ export class BuildInfoE2EComponent { - private readonly locatorVersion: string = 'build-version'; + private readonly locatorBuildInfo: string = 'build-info'; private readonly locatorBuildTime: string = 'build-time'; - public getVersion() { - return cy.getTestElement(this.locatorVersion); + public getBuildInfo() { + return cy.getTestElement(this.locatorBuildInfo); } public getBuildTime() { diff --git a/alfa-client/apps/admin-e2e/src/e2e/app/buildinfo.cy.ts b/alfa-client/apps/admin-e2e/src/e2e/app/buildinfo.cy.ts index 9ba459c3402f408b6a1813da97d3a16d1df224a6..18e94c6e8ac38641fb5555c55e5ae4f17b0e33a7 100644 --- a/alfa-client/apps/admin-e2e/src/e2e/app/buildinfo.cy.ts +++ b/alfa-client/apps/admin-e2e/src/e2e/app/buildinfo.cy.ts @@ -14,8 +14,8 @@ describe('Buildinfo', () => { }); describe('get buildinfo', () => { - it('should show version', () => { - exist(buildInfo.getVersion()); + it('should show build info', () => { + exist(buildInfo.getBuildInfo()); header.getCurrentUserProfile().logout(); }); }); diff --git a/alfa-client/apps/admin/project.json b/alfa-client/apps/admin/project.json index e113da51b11ba0f7afa5d2a0e194ba9aea7a1e82..a823b06f67d3c4bea4fa758699ea1583d1a00c68 100644 --- a/alfa-client/apps/admin/project.json +++ b/alfa-client/apps/admin/project.json @@ -8,24 +8,22 @@ "targets": { "build": { "executor": "@angular-devkit/build-angular:browser", - "outputs": [ - "{options.outputPath}" - ], + "outputs": ["{options.outputPath}"], "options": { "outputPath": "dist/apps/admin", "index": "apps/admin/src/index.html", "main": "apps/admin/src/main.ts", - "polyfills": [ - "zone.js" - ], + "polyfills": ["zone.js"], "tsConfig": "apps/admin/tsconfig.app.json", "assets": [ - "apps/admin/src/favicon.ico", - "apps/admin/src/assets" - ], - "styles": [ - "apps/admin/src/styles.scss" + "apps/admin/src/assets", + { + "input": "apps/admin/src/favicon", + "glob": "**/*", + "output": "" + } ], + "styles": ["apps/admin/src/styles.scss"], "scripts": [], "stylePreprocessorOptions": { "includePaths": [ @@ -87,15 +85,11 @@ }, "lint": { "executor": "@nx/eslint:lint", - "outputs": [ - "{options.outputFile}" - ] + "outputs": ["{options.outputFile}"] }, "test": { "executor": "@nx/jest:jest", - "outputs": [ - "{workspaceRoot}/coverage/{projectRoot}" - ], + "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], "options": { "jestConfig": "apps/admin/jest.config.ts" } @@ -108,22 +102,16 @@ }, "container": { "executor": "@nx-tools/nx-container:build", - "dependsOn": [ - "build" - ], + "dependsOn": ["build"], "options": { "engine": "docker", "push": false, "metadata": { - "images": [ - "docker.ozg-sh.de/admin-client" - ], + "images": ["docker.ozg-sh.de/admin-client"], "load": true, - "tags": [ - "build-latest" - ] + "tags": ["build-latest"] } } } } -} \ No newline at end of file +} diff --git a/alfa-client/apps/admin/src/app/app.component.html b/alfa-client/apps/admin/src/app/app.component.html index f2b6f351107b9ad56a829832c750d7b9f6956033..8fef349aa6bea31dfb841c6a07597871affb55cc 100644 --- a/alfa-client/apps/admin/src/app/app.component.html +++ b/alfa-client/apps/admin/src/app/app.component.html @@ -37,6 +37,6 @@ <unavailable-page></unavailable-page> </ng-template> </main> + <alfa-build-info *ngIf="apiRoot" [apiRoot]="apiRoot" data-test-id="build-info" /> </div> - <footer data-test-id="build-version">Version: {{ apiRoot.version }}</footer> </ng-container> 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 fbf5f0baf5ba16a4c33e3140833521efb6e7a367..818658ddd7ad7ec20ab2e1e48086d50628123f3e 100644 --- a/alfa-client/apps/admin/src/app/app.component.spec.ts +++ b/alfa-client/apps/admin/src/app/app.component.spec.ts @@ -1,9 +1,6 @@ import { ApiRootLinkRel, ApiRootResource, ApiRootService } from '@alfa-client/api-root-shared'; -import { - HasLinkPipe, - createEmptyStateResource, - createStateResource, -} from '@alfa-client/tech-shared'; +import { BuildInfoComponent } from '@alfa-client/common-lib'; +import { HasLinkPipe, createEmptyStateResource, createStateResource } from '@alfa-client/tech-shared'; import { Mock, dispatchEventFromFixture, @@ -36,7 +33,7 @@ describe('AppComponent', () => { let fixture: ComponentFixture<AppComponent>; const adminHeaderSelector: string = getDataTestIdOf('admin-header'); - const buildVersionSelector: string = getDataTestIdOf('build-version'); + const buildInfoSelector: string = getDataTestIdOf('build-info'); const userProfileButtonSelector: string = getDataTestIdOf('user-profile-button'); const navigationSelector: string = getDataTestIdOf('navigation'); const logoLink: string = getDataTestIdOf('logo-link'); @@ -62,6 +59,7 @@ describe('AppComponent', () => { MockComponent(UnavailablePageComponent), MockComponent(NavbarComponent), MockComponent(NavItemComponent), + MockComponent(BuildInfoComponent), HasLinkPipe, MockDirective(RouterOutlet), ], @@ -160,9 +158,7 @@ describe('AppComponent', () => { describe('navigation', () => { beforeEach(() => {}); it('should show links if configuration link exists', () => { - component.apiRootStateResource$ = of( - createStateResource(createApiRootResource([ApiRootLinkRel.CONFIGURATION])), - ); + component.apiRootStateResource$ = of(createStateResource(createApiRootResource([ApiRootLinkRel.CONFIGURATION]))); fixture.detectChanges(); const navbarElement: HTMLElement = getElementFromFixture(fixture, navigationSelector); @@ -181,17 +177,15 @@ describe('AppComponent', () => { }); describe('build version', () => { - const apiResource: ApiRootResource = createApiRootResource(); - - beforeEach(() => { - component.apiRootStateResource$ = of(createStateResource(apiResource)); + it('should not be rendered if api root not loaded', () => { + notExistsAsHtmlElement(fixture, buildInfoSelector); }); it('should show after apiRoot loaded', () => { + component.apiRootStateResource$ = of(createStateResource(createApiRootResource())); fixture.detectChanges(); - const buildVersionElement = getElementFromFixture(fixture, buildVersionSelector); - expect(buildVersionElement.textContent.trim()).toEqual(`Version: ${apiResource.version}`); + existsAsHtmlElement(fixture, buildInfoSelector); }); }); @@ -199,9 +193,7 @@ describe('AppComponent', () => { beforeEach(() => {}); it('should exist if configuration resource available', () => { - component.apiRootStateResource$ = of( - createStateResource(createApiRootResource([ApiRootLinkRel.CONFIGURATION])), - ); + component.apiRootStateResource$ = of(createStateResource(createApiRootResource([ApiRootLinkRel.CONFIGURATION]))); fixture.detectChanges(); diff --git a/alfa-client/apps/admin/src/app/app.module.ts b/alfa-client/apps/admin/src/app/app.module.ts index 01643aecf53c02179b296544043e2dd10f3fca65..05eb114fe4b711dbcf2f993a4f7cddf41e0d2d11 100644 --- a/alfa-client/apps/admin/src/app/app.module.ts +++ b/alfa-client/apps/admin/src/app/app.module.ts @@ -1,9 +1,11 @@ import { AdminSettingsModule } from '@admin-client/admin-settings'; import { ApiRootModule } from '@alfa-client/api-root-shared'; +import { BuildInfoComponent } from '@alfa-client/common-lib'; import { EnvironmentModule } from '@alfa-client/environment-shared'; import { TechSharedModule } from '@alfa-client/tech-shared'; -import { CommonModule } from '@angular/common'; +import { CommonModule, registerLocaleData } from '@angular/common'; import { HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; +import localeDe from '@angular/common/locales/de'; import { NgModule } from '@angular/core'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { BrowserModule } from '@angular/platform-browser'; @@ -36,6 +38,8 @@ import { UserRolesPageComponent } from '../pages/users-roles/user-roles-page/use import { AppComponent } from './app.component'; import { appRoutes } from './app.routes'; +registerLocaleData(localeDe); + @NgModule({ declarations: [ AppComponent, @@ -75,6 +79,7 @@ import { appRoutes } from './app.routes'; }, }), TechSharedModule, + BuildInfoComponent, ], providers: [ { diff --git a/alfa-client/apps/admin/src/favicon/apple-touch-icon.png b/alfa-client/apps/admin/src/favicon/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..d1e03d655a5aa8d259aacdf45f1fcf28a09251be Binary files /dev/null and b/alfa-client/apps/admin/src/favicon/apple-touch-icon.png differ diff --git a/alfa-client/apps/admin/src/favicon/favicon.svg b/alfa-client/apps/admin/src/favicon/favicon.svg new file mode 100644 index 0000000000000000000000000000000000000000..f610ada33f00495a5ce2e6e6f8f1936de57dec4c --- /dev/null +++ b/alfa-client/apps/admin/src/favicon/favicon.svg @@ -0,0 +1,82 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg id="Ebene_1" data-name="Ebene 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 250.45 291.68"> + <defs> + <style> + .cls-1 { + clip-path: url(#clippath-4); + } + + .cls-2 { + fill: none; + } + + .cls-3 { + clip-path: url(#clippath-1); + } + + .cls-4 { + clip-path: url(#clippath-5); + } + + .cls-5 { + clip-path: url(#clippath-3); + } + + .cls-6 { + fill: url(#Unbenannter_Verlauf_11); + } + + .cls-7 { + clip-path: url(#clippath-2); + } + + .cls-8 { + clip-path: url(#clippath); + } + + .cls-9 { + fill: #003064; + } + </style> + <linearGradient id="Unbenannter_Verlauf_11" data-name="Unbenannter Verlauf 11" x1="149.23" y1="174.09" x2="250.45" y2="174.09" gradientUnits="userSpaceOnUse"> + <stop offset="0" stop-color="#003064"/> + <stop offset="1" stop-color="#d4004b"/> + </linearGradient> + <clipPath id="clippath"> + <path class="cls-2" d="M182.48,248.08c0,21.25-17.11,38.59-38.15,38.59s-36.9-15.93-38.04-36.14c0-31.09-21.39-57.24-50.08-64.28,12.79-4.17,22.94-14.36,27.02-27.3,6.96,29.06,32.78,50.65,63.36,50.65,20.1,1.15,35.88,18.03,35.88,38.48Z"/> + </clipPath> + <clipPath id="clippath-1"> + <rect class="cls-2" x="51.21" y="153.95" width="136.27" height="137.73"/> + </clipPath> + <clipPath id="clippath-2"> + <rect class="cls-2" x="51.21" y="153.95" width="136.27" height="137.73"/> + </clipPath> + <clipPath id="clippath-3"> + <path class="cls-2" d="M182.48,43.59c0,20.45-15.75,37.33-35.73,38.48-35.43,0-64.42,28.83-65.33,64.51-.04.61-.04,1.19-.04,1.8-1.1,19.72-17.03,35.26-36.56,36.1h-.15c-.49.04-1.02.04-1.51.04-2.08,0-4.12-.15-6.13-.54-.61-.11-1.21-.23-1.82-.34-1.78-.34-3.48-.84-5.15-1.45-2.12-.8-4.13-1.76-6.06-2.91-.61-.34-1.17-.69-1.7-1.07-.15-.08-.3-.19-.45-.31-.76-.5-1.48-1.03-2.16-1.57-.11-.08-.23-.15-.34-.31-.87-.69-1.7-1.42-2.5-2.18-.49-.5-.98-1-1.48-1.53-1.67-1.72-3.1-3.6-4.35-5.63-.3-.5-.61-1.03-.91-1.53-.91-1.53-1.7-3.18-2.35-4.86-.68-1.68-1.25-3.45-1.67-5.25-.15-.61-.3-1.19-.38-1.8-.11-.61-.23-1.23-.3-1.84-.19-1.23-.3-2.49-.38-3.75-.04-.57-.04-1.15-.04-1.72,0-.8.04-1.57.08-2.34.08-1.11.19-2.22.34-3.33.11-.88.27-1.76.45-2.64.04-.08.04-.15.08-.19.15-.88.38-1.76.64-2.6.15-.54.34-1.11.53-1.65.19-.57.42-1.19.64-1.76.38-.96.8-1.91,1.25-2.83.34-.73.72-1.42,1.1-2.07.64-1.15,1.36-2.26,2.12-3.33.61-.88,1.25-1.72,1.93-2.53.04-.04.08-.08.11-.11.42-.5.83-.96,1.29-1.42.34-.38.68-.73,1.02-1.07.53-.54,1.06-1.03,1.63-1.49.49-.46.98-.88,1.51-1.26,1.21-1,2.5-1.88,3.82-2.68.83-.5,1.67-.96,2.54-1.38.49-.31,1.02-.54,1.55-.77.38-.19.76-.34,1.17-.5.38-.19.79-.34,1.21-.46,3.33-1.26,6.89-2.03,10.6-2.22h.49c1.14,0,2.27-.04,3.37-.11h.11c34.37-2.07,61.69-30.9,61.69-65.89,1.13-20.33,17.83-36.3,38.04-36.3s38.15,17.34,38.15,38.59Z"/> + </clipPath> + <clipPath id="clippath-4"> + <rect class="cls-2" y="0" width="187.48" height="189.53"/> + </clipPath> + <clipPath id="clippath-5"> + <rect class="cls-2" y="0" width="187.48" height="189.53"/> + </clipPath> + </defs> + <g> + <path class="cls-9" d="M207.42,137.73h-67.63c-8.36,0-15.14-6.86-15.14-15.31s6.78-15.31,15.14-15.31h67.63c8.36,0,15.14,6.86,15.14,15.31s-6.78,15.31-15.14,15.31Z"/> + <path class="cls-6" d="M235.31,189.41h-70.94c-8.36,0-15.14-6.86-15.14-15.31s6.78-15.31,15.14-15.31h70.94c8.36,0,15.14,6.86,15.14,15.31s-6.78,15.31-15.14,15.31Z"/> + </g> + <g class="cls-8"> + <g class="cls-3"> + <g class="cls-7"> + <image width="285" height="288" transform="translate(50.88 153.49) scale(.48)" xlink:href="data:image/png;base64,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"/> + </g> + </g> + </g> + <g class="cls-5"> + <g class="cls-1"> + <g class="cls-4"> + <image width="391" height="396" transform="translate(0 -.11) scale(.48)" xlink:href="data:image/png;base64,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"/> + </g> + </g> + </g> +</svg> \ No newline at end of file diff --git a/alfa-client/apps/admin/src/favicon/logo192.png b/alfa-client/apps/admin/src/favicon/logo192.png new file mode 100644 index 0000000000000000000000000000000000000000..058c5bb8a8fc79b10adea359c97563030c09bc91 Binary files /dev/null and b/alfa-client/apps/admin/src/favicon/logo192.png differ diff --git a/alfa-client/apps/admin/src/favicon/logo512.png b/alfa-client/apps/admin/src/favicon/logo512.png new file mode 100644 index 0000000000000000000000000000000000000000..86e8c57ac21fd004a424962e4d46bf13bfcfcdef Binary files /dev/null and b/alfa-client/apps/admin/src/favicon/logo512.png differ diff --git a/alfa-client/apps/admin/src/favicon/manifest.json b/alfa-client/apps/admin/src/favicon/manifest.json new file mode 100644 index 0000000000000000000000000000000000000000..ab5afa131edbb266f434c9ce991db50fc685633b --- /dev/null +++ b/alfa-client/apps/admin/src/favicon/manifest.json @@ -0,0 +1,24 @@ +{ + "name": "Alfa Administration", + "short_name": "Administration Client", + "icons": [ + { + "src": "favicon.svg", + "sizes": "64x64 32x32 24x24 16x16", + "type": "image/x-icon" + }, + { + "src": "logo192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "logo512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} diff --git a/alfa-client/apps/admin/src/index.html b/alfa-client/apps/admin/src/index.html index e9b77e77d1493dd0f7e67f051941b5c48fff1b33..667d6ae9fdd9724394c4018d6c6526ee13e177c1 100644 --- a/alfa-client/apps/admin/src/index.html +++ b/alfa-client/apps/admin/src/index.html @@ -5,11 +5,11 @@ <title>admin</title> <base href="/" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> - <link rel="icon" type="image/x-icon" href="favicon.ico" /> + <link rel="icon" href="/favicon.svg" type="image/svg+xml" /> + <link rel="apple-touch-icon" href="/apple-touch-icon.png" /> + <link rel="manifest" href="/manifest.json" /> </head> - <body - class="flex max-h-full min-h-full overflow-hidden bg-white text-black dark:bg-slate-900 dark:text-slate-100" - > + <body class="flex max-h-full min-h-full overflow-hidden bg-white text-black dark:bg-slate-900 dark:text-slate-100"> <app-root class="flex w-full flex-col"></app-root> </body> </html> diff --git a/alfa-client/apps/alfa/src/app/app.component.html b/alfa-client/apps/alfa/src/app/app.component.html index 089e9de91f369cb64da483eb2a4316543084ae53..b10af37299a6874ab18519ed496e0366d18cb0bc 100644 --- a/alfa-client/apps/alfa/src/app/app.component.html +++ b/alfa-client/apps/alfa/src/app/app.component.html @@ -31,11 +31,7 @@ <div class="mat-app-background relative grow"><router-outlet></router-outlet></div> <section class="mat-app-background right-nav"> - <alfa-build-info - *ngIf="apiRoot.resource" - [apiRoot]="apiRoot.resource" - data-test-id="build-info" - ></alfa-build-info> + <alfa-build-info *ngIf="apiRoot.resource" [apiRoot]="apiRoot.resource" data-test-id="build-info"></alfa-build-info> </section> </div> </ozgcloud-spinner> diff --git a/alfa-client/apps/alfa/src/app/app.component.spec.ts b/alfa-client/apps/alfa/src/app/app.component.spec.ts index 0ca6382a2e0987cdbc277b9d388a891049849563..f20f5bc5f23bd56572d7b5d78c8117f5f83341e6 100644 --- a/alfa-client/apps/alfa/src/app/app.component.spec.ts +++ b/alfa-client/apps/alfa/src/app/app.component.spec.ts @@ -22,6 +22,7 @@ * unter der Lizenz sind dem Lizenztext zu entnehmen. */ import { ApiRootFacade } from '@alfa-client/api-root-shared'; +import { BuildInfoComponent } from '@alfa-client/common-lib'; import { ENVIRONMENT_CONFIG } from '@alfa-client/environment-shared'; import { NavigationService } from '@alfa-client/navigation-shared'; import { createEmptyStateResource, createStateResource } from '@alfa-client/tech-shared'; @@ -30,20 +31,18 @@ import { IconService, SpinnerComponent } from '@alfa-client/ui'; import { registerLocaleData } from '@angular/common'; import localeDe from '@angular/common/locales/de'; import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { Params } from '@angular/router'; import { RouterTestingModule } from '@angular/router/testing'; import { AuthConfig, OAuthEvent, OAuthService } from 'angular-oauth2-oidc'; import { createApiRootResource } from 'libs/api-root-shared/test/api-root'; -import { BuildInfoComponent } from 'libs/navigation/src/lib/build-info/build-info.component'; import { HeaderContainerComponent } from 'libs/navigation/src/lib/header-container/header-container.component'; import { getDataTestIdOf } from 'libs/tech-shared/test/data-test'; import { setWindowLocationUrl } from 'libs/tech-shared/test/window'; +import * as VorgangNavigationUtil from 'libs/vorgang-shared/src/lib/vorgang-navigation.util'; import { MockComponent } from 'ng-mocks'; import { of } from 'rxjs'; import { AppComponent } from './app.component'; -import { Params } from '@angular/router'; -import * as VorgangNavigationUtil from 'libs/vorgang-shared/src/lib/vorgang-navigation.util'; - registerLocaleData(localeDe); describe('AppComponent', () => { diff --git a/alfa-client/apps/alfa/src/app/app.module.ts b/alfa-client/apps/alfa/src/app/app.module.ts index f7138d442ac5f3c8ff30f3864c4f2943bd5a4c9e..d9adaece899487f8d6d584d8ea20ff641578c7e9 100644 --- a/alfa-client/apps/alfa/src/app/app.module.ts +++ b/alfa-client/apps/alfa/src/app/app.module.ts @@ -23,6 +23,7 @@ */ import { ApiRootModule } from '@alfa-client/api-root-shared'; import { AppSharedModule } from '@alfa-client/app-shared'; +import { BuildInfoComponent } from '@alfa-client/common-lib'; import { EnvironmentModule } from '@alfa-client/environment-shared'; import { HintSharedModule } from '@alfa-client/hint-shared'; import { NavigationModule } from '@alfa-client/navigation'; @@ -75,6 +76,7 @@ const routes: Routes = [ }), ApiRootModule, NavigationModule, + BuildInfoComponent, AppSharedModule, StoreModule.forRoot( {}, diff --git a/alfa-client/libs/common-lib/.eslintrc.json b/alfa-client/libs/common-lib/.eslintrc.json new file mode 100644 index 0000000000000000000000000000000000000000..6685b2e35bbf3f0d58387f6617c9bd749c0c55f2 --- /dev/null +++ b/alfa-client/libs/common-lib/.eslintrc.json @@ -0,0 +1,45 @@ +{ + "extends": ["../../.eslintrc.json"], + "ignorePatterns": ["!**/*"], + "overrides": [ + { + "files": ["*.ts"], + "extends": ["plugin:@nx/angular", "plugin:@angular-eslint/template/process-inline-templates"], + "rules": { + "@angular-eslint/directive-selector": [ + "error", + { + "type": "attribute", + "prefix": "lib", + "style": "camelCase" + } + ], + "@angular-eslint/component-selector": [ + "error", + { + "type": "element", + "prefix": "lib", + "style": "kebab-case" + } + ] + } + }, + { + "files": ["*.html"], + "extends": ["plugin:@nx/angular-template"], + "rules": {} + }, + { + "files": ["*.json"], + "parser": "jsonc-eslint-parser", + "rules": { + "@nx/dependency-checks": [ + "error", + { + "ignoredFiles": ["{projectRoot}/eslint.config.{js,cjs,mjs}"] + } + ] + } + } + ] +} diff --git a/alfa-client/libs/common-lib/README.md b/alfa-client/libs/common-lib/README.md new file mode 100644 index 0000000000000000000000000000000000000000..f56ea72f2a6f3e405f04f090fb7d2670a8913dcf --- /dev/null +++ b/alfa-client/libs/common-lib/README.md @@ -0,0 +1,7 @@ +# common-lib + +This library was generated with [Nx](https://nx.dev). + +## Running unit tests + +Run `nx test common-lib` to execute the unit tests. diff --git a/alfa-client/libs/common-lib/jest.config.ts b/alfa-client/libs/common-lib/jest.config.ts new file mode 100644 index 0000000000000000000000000000000000000000..5126e9a7275f05132fe089f9560dd29e561a732e --- /dev/null +++ b/alfa-client/libs/common-lib/jest.config.ts @@ -0,0 +1,21 @@ +export default { + displayName: 'common-lib', + preset: '../../jest.preset.js', + setupFilesAfterEnv: ['<rootDir>/src/test-setup.ts'], + coverageDirectory: '../../coverage/libs/common-lib', + transform: { + '^.+\\.(ts|mjs|js|html)$': [ + 'jest-preset-angular', + { + tsconfig: '<rootDir>/tsconfig.spec.json', + stringifyContentPathRegex: '\\.(html|svg)$', + }, + ], + }, + transformIgnorePatterns: ['node_modules/(?!.*\\.mjs$)'], + snapshotSerializers: [ + 'jest-preset-angular/build/serializers/no-ng-attributes', + 'jest-preset-angular/build/serializers/ng-snapshot', + 'jest-preset-angular/build/serializers/html-comment', + ], +}; diff --git a/alfa-client/libs/common-lib/project.json b/alfa-client/libs/common-lib/project.json new file mode 100644 index 0000000000000000000000000000000000000000..8a477e97d512ef3eac6cfe8ff272ed0754b5991c --- /dev/null +++ b/alfa-client/libs/common-lib/project.json @@ -0,0 +1,20 @@ +{ + "name": "common-lib", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "libs/common-lib/src", + "prefix": "lib", + "projectType": "library", + "tags": [], + "targets": { + "test": { + "executor": "@nx/jest:jest", + "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], + "options": { + "jestConfig": "libs/common-lib/jest.config.ts" + } + }, + "lint": { + "executor": "@nx/eslint:lint" + } + } +} diff --git a/alfa-client/libs/common-lib/src/index.ts b/alfa-client/libs/common-lib/src/index.ts new file mode 100644 index 0000000000000000000000000000000000000000..f8f49f20b7993383fbce5faf8a3db0b1524766a0 --- /dev/null +++ b/alfa-client/libs/common-lib/src/index.ts @@ -0,0 +1 @@ +export * from './lib/build-info/build-info.component'; diff --git a/alfa-client/libs/navigation/src/lib/build-info/build-info.component.html b/alfa-client/libs/common-lib/src/lib/build-info/build-info.component.html similarity index 95% rename from alfa-client/libs/navigation/src/lib/build-info/build-info.component.html rename to alfa-client/libs/common-lib/src/lib/build-info/build-info.component.html index 41cce668006927fdd81db4f1c49e8eaca49358cd..097debe503d2855dd2fed9cd631badf65e9f1836 100644 --- a/alfa-client/libs/navigation/src/lib/build-info/build-info.component.html +++ b/alfa-client/libs/common-lib/src/lib/build-info/build-info.component.html @@ -30,6 +30,4 @@ <span data-test-id="build-time">{{ buildTime }}</span> </ng-container> </p> -<p *ngIf="isNotProduction" data-test-id="not-production-text" class="test-environment text-error"> - Achtung Testumgebung -</p> +<p *ngIf="isNotProduction" data-test-id="not-production-text" class="test-environment">Achtung Testumgebung</p> diff --git a/alfa-client/libs/navigation/src/lib/build-info/build-info.component.scss b/alfa-client/libs/common-lib/src/lib/build-info/build-info.component.scss similarity index 98% rename from alfa-client/libs/navigation/src/lib/build-info/build-info.component.scss rename to alfa-client/libs/common-lib/src/lib/build-info/build-info.component.scss index 73f433970c0765f31b0f88b78a30fad26513afdb..1d3adee3ebaa45eb315e04c8fca52fd70950e855 100644 --- a/alfa-client/libs/navigation/src/lib/build-info/build-info.component.scss +++ b/alfa-client/libs/common-lib/src/lib/build-info/build-info.component.scss @@ -61,4 +61,5 @@ p { margin-right: $navigation-height + $header-height; letter-spacing: 0.42em; text-transform: uppercase; + color: theme('colors.error'); } diff --git a/alfa-client/libs/navigation/src/lib/build-info/build-info.component.spec.ts b/alfa-client/libs/common-lib/src/lib/build-info/build-info.component.spec.ts similarity index 97% rename from alfa-client/libs/navigation/src/lib/build-info/build-info.component.spec.ts rename to alfa-client/libs/common-lib/src/lib/build-info/build-info.component.spec.ts index 663ad95f94a684c5b02cae60201ed823b66e4eab..ee6c655e9b27be5f653ac86eb2fbafbcb57400de 100644 --- a/alfa-client/libs/navigation/src/lib/build-info/build-info.component.spec.ts +++ b/alfa-client/libs/common-lib/src/lib/build-info/build-info.component.spec.ts @@ -21,10 +21,10 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ +import { FormatDateWithTimePipe } from '@alfa-client/tech-shared'; import { registerLocaleData } from '@angular/common'; import localeDe from '@angular/common/locales/de'; import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { FormatDateWithTimePipe } from '@alfa-client/tech-shared'; import { createApiRootResource } from 'libs/api-root-shared/test/api-root'; import { BuildInfoComponent } from './build-info.component'; @@ -47,7 +47,8 @@ describe('BuildInfoComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - declarations: [BuildInfoComponent, FormatDateWithTimePipe], + imports: [BuildInfoComponent], + declarations: [FormatDateWithTimePipe], }).compileComponents(); }); diff --git a/alfa-client/libs/navigation/src/lib/build-info/build-info.component.ts b/alfa-client/libs/common-lib/src/lib/build-info/build-info.component.ts similarity index 94% rename from alfa-client/libs/navigation/src/lib/build-info/build-info.component.ts rename to alfa-client/libs/common-lib/src/lib/build-info/build-info.component.ts index be8f576c3288bfb1818b1976030e5f0894a10d8d..8d7182c2f837679916ebc9b91ee0dc7ed382ca63 100644 --- a/alfa-client/libs/navigation/src/lib/build-info/build-info.component.ts +++ b/alfa-client/libs/common-lib/src/lib/build-info/build-info.component.ts @@ -21,13 +21,16 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { Component, Input } from '@angular/core'; import { ApiRootResource } from '@alfa-client/api-root-shared'; +import { Component, Input } from '@angular/core'; import * as DateUtil from '@alfa-client/tech-shared'; +import { CommonModule } from '@angular/common'; @Component({ selector: 'alfa-build-info', + imports: [CommonModule], + standalone: true, templateUrl: './build-info.component.html', styleUrls: ['./build-info.component.scss'], }) diff --git a/alfa-client/libs/common-lib/src/test-setup.ts b/alfa-client/libs/common-lib/src/test-setup.ts new file mode 100644 index 0000000000000000000000000000000000000000..f7fad5e59f9d4e62a097bbea63040551de396175 --- /dev/null +++ b/alfa-client/libs/common-lib/src/test-setup.ts @@ -0,0 +1,11 @@ +import 'jest-preset-angular/setup-jest'; + +import { getTestBed } from '@angular/core/testing'; +import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing'; + +getTestBed().resetTestEnvironment(); +getTestBed().initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { + teardown: { destroyAfterEach: false }, + errorOnUnknownProperties: true, + errorOnUnknownElements: true, +}); diff --git a/alfa-client/libs/common-lib/tailwind.config.js b/alfa-client/libs/common-lib/tailwind.config.js new file mode 100644 index 0000000000000000000000000000000000000000..d9b5f51f460d135ef0a5398164cf2a820caaa020 --- /dev/null +++ b/alfa-client/libs/common-lib/tailwind.config.js @@ -0,0 +1,14 @@ +const { createGlobPatternsForDependencies } = require('@nx/angular/tailwind'); +const { join } = require('path'); + +const sharedTailwindConfig = require('../../libs/design-system/src/lib/tailwind-preset/tailwind.config.js'); + +/** @type {import('tailwindcss').Config} */ +module.exports = { + presets: [sharedTailwindConfig], + content: [join(__dirname, 'src/**/!(*.stories|*.spec).{ts,html}'), ...createGlobPatternsForDependencies(__dirname)], + theme: { + extend: {}, + }, + plugins: [], +}; diff --git a/alfa-client/libs/common-lib/tsconfig.json b/alfa-client/libs/common-lib/tsconfig.json new file mode 100644 index 0000000000000000000000000000000000000000..7cc6baf2f58ed5ccfba098131996f579979e9f18 --- /dev/null +++ b/alfa-client/libs/common-lib/tsconfig.json @@ -0,0 +1,16 @@ +{ + "extends": "../../tsconfig.base.json", + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ], + "compilerOptions": { + "target": "es2022" + } +} diff --git a/alfa-client/libs/common-lib/tsconfig.lib.json b/alfa-client/libs/common-lib/tsconfig.lib.json new file mode 100644 index 0000000000000000000000000000000000000000..4cab05d46338c6e9d4dfe6512fd7eb7f60340d3d --- /dev/null +++ b/alfa-client/libs/common-lib/tsconfig.lib.json @@ -0,0 +1,12 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "declaration": true, + "declarationMap": true, + "inlineSources": true, + "types": [] + }, + "exclude": ["src/**/*.spec.ts", "src/test-setup.ts", "jest.config.ts", "src/**/*.test.ts"], + "include": ["src/**/*.ts"] +} diff --git a/alfa-client/libs/common-lib/tsconfig.lib.prod.json b/alfa-client/libs/common-lib/tsconfig.lib.prod.json new file mode 100644 index 0000000000000000000000000000000000000000..61b523783f299f511f27248a42f86e5f9c29512f --- /dev/null +++ b/alfa-client/libs/common-lib/tsconfig.lib.prod.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig.lib.json", + "compilerOptions": { + "declarationMap": false + }, + "angularCompilerOptions": {} +} diff --git a/alfa-client/libs/common-lib/tsconfig.spec.json b/alfa-client/libs/common-lib/tsconfig.spec.json new file mode 100644 index 0000000000000000000000000000000000000000..7870b7c011681fb77d6114001f44d3eeca69975b --- /dev/null +++ b/alfa-client/libs/common-lib/tsconfig.spec.json @@ -0,0 +1,11 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "module": "commonjs", + "target": "es2016", + "types": ["jest", "node"] + }, + "files": ["src/test-setup.ts"], + "include": ["jest.config.ts", "src/**/*.test.ts", "src/**/*.spec.ts", "src/**/*.d.ts"] +} diff --git a/alfa-client/libs/navigation/src/lib/navigation.module.ts b/alfa-client/libs/navigation/src/lib/navigation.module.ts index 0a98c2c4232b12ea4f7e1004d30f8828bdd0769f..1622cf215a88c546c52288e1ffdda3c1d28075b2 100644 --- a/alfa-client/libs/navigation/src/lib/navigation.module.ts +++ b/alfa-client/libs/navigation/src/lib/navigation.module.ts @@ -21,26 +21,20 @@ * Die sprachspezifischen Genehmigungen und Beschränkungen * unter der Lizenz sind dem Lizenztext zu entnehmen. */ -import { CommonModule } from '@angular/common'; -import { NgModule } from '@angular/core'; -import { RouterModule } from '@angular/router'; import { UiModule } from '@alfa-client/ui'; import { UserAssistanceModule } from '@alfa-client/user-assistance'; import { UserProfileModule } from '@alfa-client/user-profile'; import { UserSettingsModule } from '@alfa-client/user-settings'; import { VorgangSharedUiModule } from '@alfa-client/vorgang-shared-ui'; -import { BuildInfoComponent } from './build-info/build-info.component'; +import { CommonModule } from '@angular/common'; +import { NgModule } from '@angular/core'; +import { RouterModule } from '@angular/router'; import { HeaderContainerComponent } from './header-container/header-container.component'; import { HeaderLogoComponent } from './header-container/header/header-logo/header-logo.component'; import { HeaderComponent } from './header-container/header/header.component'; @NgModule({ - declarations: [ - BuildInfoComponent, - HeaderComponent, - HeaderContainerComponent, - HeaderLogoComponent, - ], + declarations: [HeaderComponent, HeaderContainerComponent, HeaderLogoComponent], imports: [ CommonModule, UiModule, @@ -50,6 +44,6 @@ import { HeaderComponent } from './header-container/header/header.component'; UserSettingsModule, UserAssistanceModule, ], - exports: [BuildInfoComponent, HeaderContainerComponent], + exports: [HeaderContainerComponent], }) export class NavigationModule {} diff --git a/alfa-client/tsconfig.base.json b/alfa-client/tsconfig.base.json index 074d37046bc7c1d420bba5c631c72ec945d9b276..1123019a134bc3716bf6280a1115b72261f6a2db 100644 --- a/alfa-client/tsconfig.base.json +++ b/alfa-client/tsconfig.base.json @@ -61,7 +61,8 @@ "@alfa-client/zustaendige-stelle-shared": ["libs/zustaendige-stelle-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"] + "authentication": ["libs/authentication/src/index.ts"], + "@alfa-client/common-lib": ["libs/common-lib/src/index.ts"] } }, "exclude": ["node_modules", "tmp"]