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 5515f308e4eb93db8bb7f9c3d49abd8ec279352b..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,4 +1,5 @@ import { ApiRootLinkRel, ApiRootResource, ApiRootService } from '@alfa-client/api-root-shared'; +import { BuildInfoComponent } from '@alfa-client/common-lib'; import { HasLinkPipe, createEmptyStateResource, createStateResource } from '@alfa-client/tech-shared'; import { Mock, @@ -20,7 +21,6 @@ import { } from '@ods/system'; import { AuthenticationService } from 'authentication'; import { createApiRootResource } from 'libs/api-root-shared/test/api-root'; -import { BuildInfoComponent } from 'libs/navigation/src/lib/build-info/build-info.component'; import { getDataTestIdOf } from 'libs/tech-shared/test/data-test'; import { MockComponent, MockDirective } from 'ng-mocks'; import { of } from 'rxjs'; diff --git a/alfa-client/apps/admin/src/app/app.module.ts b/alfa-client/apps/admin/src/app/app.module.ts index 022e744634eeba9e59e5eb13d2951c95b315a555..05eb114fe4b711dbcf2f993a4f7cddf41e0d2d11 100644 --- a/alfa-client/apps/admin/src/app/app.module.ts +++ b/alfa-client/apps/admin/src/app/app.module.ts @@ -1,7 +1,7 @@ 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 { NavigationModule } from '@alfa-client/navigation'; import { TechSharedModule } from '@alfa-client/tech-shared'; import { CommonModule, registerLocaleData } from '@angular/common'; import { HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http'; @@ -57,7 +57,6 @@ registerLocaleData(localeDe); DropdownMenuButtonComponent, NavItemComponent, NavbarComponent, - NavigationModule, OrgaUnitIconComponent, LogoutIconComponent, UsersIconComponent, @@ -80,6 +79,7 @@ registerLocaleData(localeDe); }, }), TechSharedModule, + BuildInfoComponent, ], providers: [ { 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/ng-package.json b/alfa-client/libs/common-lib/ng-package.json new file mode 100644 index 0000000000000000000000000000000000000000..2ff0d128c31fdb241a25e779106a1b39f0b10fed --- /dev/null +++ b/alfa-client/libs/common-lib/ng-package.json @@ -0,0 +1,7 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/libs/common-lib", + "lib": { + "entryFile": "src/index.ts" + } +} diff --git a/alfa-client/libs/common-lib/package.json b/alfa-client/libs/common-lib/package.json new file mode 100644 index 0000000000000000000000000000000000000000..ebbe20aaddd8c013ac1ec212920255ab186e8599 --- /dev/null +++ b/alfa-client/libs/common-lib/package.json @@ -0,0 +1,9 @@ +{ + "name": "common-lib", + "version": "0.0.1", + "peerDependencies": { + "@angular/common": "^18.2.0", + "@angular/core": "^18.2.0" + }, + "sideEffects": false +} 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 86b01225f70fa28852062c9d6c07df1f8d8ad43f..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,4 +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 92% 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 4a72219f272d29a3f4c957fa7c8c5e58aac5dcb2..6dc21d0bd64100fe220c2478d9c227d14a6b1742 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 @@ -25,9 +25,12 @@ 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'], }) @@ -53,4 +56,8 @@ export class BuildInfoComponent { get buildTime() { return DateUtil.formatHourMinute(new Date(this.apiRoot.buildTime)); } + + ngOnInit() { + console.log(this.apiRoot); + } } 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"]