From a8b6bb02c899d2ceb0ceaa1d1ba96433198ece32 Mon Sep 17 00:00:00 2001 From: Maximilian Ollendorff Date: Fri, 4 Oct 2024 15:23:45 +0200 Subject: [PATCH 1/9] feat: move components to angular-accelerator --- libs/angular-accelerator/package-lock.json | 313 +++++ .../content-container.component.html | 3 + .../content-container.component.spec.ts | 50 + .../content-container.component.stories.ts | 26 +- .../content-container.component.ts | 24 + .../components/content/content.component.html | 3 + .../content/content.component.spec.ts | 45 + .../content/content.component.stories.ts | 28 +- .../components/content/content.component.ts | 17 + .../data-list-grid-sorting.component.html | 31 +- .../lifecycle/lifecycle.component.html | 18 + .../lifecycle/lifecycle.component.spec.ts | 75 + .../lifecycle/lifecycle.component.stories.ts | 42 +- .../lifecycle/lifecycle.component.ts | 16 + .../directives/content-container.directive.ts | 53 + .../src/lib/directives/content.directive.ts | 57 + .../testing/content-container.harness.ts | 24 + .../testing/content.harness.ts | 41 + .../testing/lifecycle.harness.ts | 8 + .../package-lock.json | 1226 +++++++++++++++++ .../content-container.component.ts | 7 +- .../content/content.component.spec.ts | 4 +- .../components/content/content.component.ts | 5 +- .../lifecycle/lifecycle.component.ts | 7 +- .../directives/content-container.directive.ts | 7 +- .../lib/core/directives/content.directive.ts | 3 + .../testing/lifecycle.harness.ts | 10 +- 27 files changed, 2082 insertions(+), 61 deletions(-) create mode 100644 libs/angular-accelerator/package-lock.json create mode 100644 libs/angular-accelerator/src/lib/components/content-container/content-container.component.html create mode 100644 libs/angular-accelerator/src/lib/components/content-container/content-container.component.spec.ts rename libs/{portal-integration-angular/src/lib/core => angular-accelerator/src/lib}/components/content-container/content-container.component.stories.ts (87%) create mode 100644 libs/angular-accelerator/src/lib/components/content-container/content-container.component.ts create mode 100644 libs/angular-accelerator/src/lib/components/content/content.component.html create mode 100644 libs/angular-accelerator/src/lib/components/content/content.component.spec.ts rename libs/{portal-integration-angular/src/lib/core => angular-accelerator/src/lib}/components/content/content.component.stories.ts (69%) create mode 100644 libs/angular-accelerator/src/lib/components/content/content.component.ts create mode 100644 libs/angular-accelerator/src/lib/components/lifecycle/lifecycle.component.html create mode 100644 libs/angular-accelerator/src/lib/components/lifecycle/lifecycle.component.spec.ts rename libs/{portal-integration-angular/src/lib/core => angular-accelerator/src/lib}/components/lifecycle/lifecycle.component.stories.ts (76%) create mode 100644 libs/angular-accelerator/src/lib/components/lifecycle/lifecycle.component.ts create mode 100644 libs/angular-accelerator/src/lib/directives/content-container.directive.ts create mode 100644 libs/angular-accelerator/src/lib/directives/content.directive.ts create mode 100644 libs/angular-accelerator/testing/content-container.harness.ts create mode 100644 libs/angular-accelerator/testing/content.harness.ts create mode 100644 libs/angular-accelerator/testing/lifecycle.harness.ts create mode 100644 libs/portal-integration-angular/package-lock.json diff --git a/libs/angular-accelerator/package-lock.json b/libs/angular-accelerator/package-lock.json new file mode 100644 index 00000000..ab59a69f --- /dev/null +++ b/libs/angular-accelerator/package-lock.json @@ -0,0 +1,313 @@ +{ + "name": "@onecx/angular-accelerator", + "version": "5.13.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@onecx/angular-accelerator", + "version": "5.13.0", + "license": "Apache-2.0", + "peerDependencies": { + "@angular/cdk": "^18.0.6", + "@angular/common": "^18.0.5", + "@angular/core": "^18.0.5", + "@angular/forms": "^18.0.5", + "@angular/platform-browser": "^18.0.5", + "@angular/router": "^18.0.5", + "@ngneat/until-destroy": "^10.0.0", + "@ngx-translate/core": "^15.0.0", + "@onecx/angular-integration-interface": "^5", + "@onecx/integration-interface": "^5", + "chart.js": "^4.4.3", + "d3-scale-chromatic": "^3.1.0", + "primeng": "^17.18.6", + "rxjs": "~7.8.1" + } + }, + "node_modules/@angular/cdk": { + "version": "18.2.6", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-18.2.6.tgz", + "integrity": "sha512-Gfq/iv4zhlKYpdQkDaBRwxI71NHNUHM1Cs1XhnZ0/oFct5HXvSv1RHRGTKqBJLLACaAPzZKXJ/UglLoyO5CNiQ==", + "peer": true, + "dependencies": { + "tslib": "^2.3.0" + }, + "optionalDependencies": { + "parse5": "^7.1.2" + }, + "peerDependencies": { + "@angular/common": "^18.0.0 || ^19.0.0", + "@angular/core": "^18.0.0 || ^19.0.0", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/common": { + "version": "18.2.7", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-18.2.7.tgz", + "integrity": "sha512-5vDBmBR2JcIxHVEDunKXNU+T+OvTGiHZTSo35GFOHJxKFgX5g6+0tJBZunK04oBZGbJQUmp3pg2kMvuKKjZnkQ==", + "peer": true, + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + }, + "peerDependencies": { + "@angular/core": "18.2.7", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/core": { + "version": "18.2.7", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-18.2.7.tgz", + "integrity": "sha512-hLOxgxLiyWm9iVHBsUsJfx1hDsXWZnfJBlr+N7cev53f0CDoPfbshqq6KV+JFqXFDguzR9dKHm1ewT1jK3e6Tw==", + "peer": true, + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + }, + "peerDependencies": { + "rxjs": "^6.5.3 || ^7.4.0", + "zone.js": "~0.14.10" + } + }, + "node_modules/@angular/forms": { + "version": "18.2.7", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-18.2.7.tgz", + "integrity": "sha512-WO3c9/OA7ekBnDBgmvi5TlHshOt5S4NREIP+/VVyuRgg28BwUWyO/Nqh19nguE1UNNRt6OMLkT6NSV2ewhcXUg==", + "peer": true, + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + }, + "peerDependencies": { + "@angular/common": "18.2.7", + "@angular/core": "18.2.7", + "@angular/platform-browser": "18.2.7", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/platform-browser": { + "version": "18.2.7", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-18.2.7.tgz", + "integrity": "sha512-xgj2DH/isFrMZ73dJJm89NRnWBI3AHtugQrZbIapkKBdEt/C1o4SR2W2cV4mPb9o+ELnWurfrxFt9o/q2vnVLw==", + "peer": true, + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + }, + "peerDependencies": { + "@angular/animations": "18.2.7", + "@angular/common": "18.2.7", + "@angular/core": "18.2.7" + }, + "peerDependenciesMeta": { + "@angular/animations": { + "optional": true + } + } + }, + "node_modules/@angular/router": { + "version": "18.2.7", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-18.2.7.tgz", + "integrity": "sha512-TXE8Aw63hDp3PEaNu4B1DMNvlS0uCzs36o/OSCCmewmLnzyJygkgi4jeEj20FsWPAQOUj5g5tnCYgxz1IRrCUg==", + "peer": true, + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + }, + "peerDependencies": { + "@angular/common": "18.2.7", + "@angular/core": "18.2.7", + "@angular/platform-browser": "18.2.7", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@kurkle/color": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.2.tgz", + "integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==", + "peer": true + }, + "node_modules/@ngneat/until-destroy": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@ngneat/until-destroy/-/until-destroy-10.0.0.tgz", + "integrity": "sha512-xXFAabQ4YVJ82LYxdgUlaKZyR3dSbxqG3woSyaclzxfCgWMEDweCcM/GGYbNiHJa0WwklI98RXHvca+UyCxpeg==", + "peer": true, + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/core": ">=13", + "rxjs": "^6.4.0 || ^7.0.0" + } + }, + "node_modules/@ngx-translate/core": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/@ngx-translate/core/-/core-15.0.0.tgz", + "integrity": "sha512-Am5uiuR0bOOxyoercDnAA3rJVizo4RRqJHo8N3RqJ+XfzVP/I845yEnMADykOHvM6HkVm4SZSnJBOiz0Anx5BA==", + "peer": true, + "engines": { + "node": "^16.13.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/common": ">=16.0.0", + "@angular/core": ">=16.0.0", + "rxjs": "^6.5.5 || ^7.4.0" + } + }, + "node_modules/@onecx/accelerator": { + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@onecx/accelerator/-/accelerator-5.13.0.tgz", + "integrity": "sha512-pvO/+Az2+D0I1u1BauLE8DWlkmRXOU6dASomVn/8SSD0zaL2WEaSevPHK13N3WTlBRYGPJ+gHt1CyfHN+mfdOw==", + "peer": true, + "peerDependencies": { + "rxjs": "^7.8.1", + "tslib": "^2.6.3" + } + }, + "node_modules/@onecx/angular-integration-interface": { + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@onecx/angular-integration-interface/-/angular-integration-interface-5.13.0.tgz", + "integrity": "sha512-FhMnlh3r1GUMysxyAkJYHBjroiL9kDUb40MMtTqu/0eTXVNQNHCkrDhhj+MzYs0s19WjgdLFuJjrGq3L6h15wA==", + "peer": true, + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/core": "^18.0.5", + "@onecx/integration-interface": "~5", + "rxjs": "~7.8.1" + } + }, + "node_modules/@onecx/integration-interface": { + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@onecx/integration-interface/-/integration-interface-5.13.0.tgz", + "integrity": "sha512-hIT7Zq4GHps/IhwtWRtuFwiqpKCqEHVVh6HdFqAm3xE//ee6Npq92ArJTsZMoCp5huVhXvAdfs4YGdPglEupfg==", + "peer": true, + "peerDependencies": { + "@onecx/accelerator": "^5", + "rxjs": "^7.8.1", + "tslib": "^2.6.3" + } + }, + "node_modules/chart.js": { + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.4.tgz", + "integrity": "sha512-emICKGBABnxhMjUjlYRR12PmOXhJ2eJjEHL2/dZlWjxRAZT1D8xplLFq5M0tMQK8ja+wBS/tuVEJB5C6r7VxJA==", + "peer": true, + "dependencies": { + "@kurkle/color": "^0.3.0" + }, + "engines": { + "pnpm": ">=8" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "peer": true, + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "peer": true, + "dependencies": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "optional": true, + "peer": true, + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/primeng": { + "version": "17.18.11", + "resolved": "https://registry.npmjs.org/primeng/-/primeng-17.18.11.tgz", + "integrity": "sha512-LzV0fFZmb3GdnaRqi1+GP+RPtW0a+jztL5pH1zRWY7+7pyQ0n1YNyTXzmqVcdks/CmoyjNhutWEmexwi6vFVeA==", + "peer": true, + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/common": "^17.0.0 || ^18.0.0", + "@angular/core": "^17.0.0 || ^18.0.0", + "@angular/forms": "^17.0.0 || ^18.0.0", + "rxjs": "^6.0.0 || ^7.8.1", + "zone.js": "~0.14.0" + } + }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "peer": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "peer": true + }, + "node_modules/zone.js": { + "version": "0.14.10", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.14.10.tgz", + "integrity": "sha512-YGAhaO7J5ywOXW6InXNlLmfU194F8lVgu7bRntUF3TiG8Y3nBK0x1UJJuHUP/e8IyihkjCYqhCScpSwnlaSRkQ==", + "peer": true + } + } +} diff --git a/libs/angular-accelerator/src/lib/components/content-container/content-container.component.html b/libs/angular-accelerator/src/lib/components/content-container/content-container.component.html new file mode 100644 index 00000000..e491d203 --- /dev/null +++ b/libs/angular-accelerator/src/lib/components/content-container/content-container.component.html @@ -0,0 +1,3 @@ +
+ +
diff --git a/libs/angular-accelerator/src/lib/components/content-container/content-container.component.spec.ts b/libs/angular-accelerator/src/lib/components/content-container/content-container.component.spec.ts new file mode 100644 index 00000000..744a01e0 --- /dev/null +++ b/libs/angular-accelerator/src/lib/components/content-container/content-container.component.spec.ts @@ -0,0 +1,50 @@ +import { OcxContentContainerHarness } from '../../../../testing/content-container.harness' +import { ComponentFixture, TestBed } from '@angular/core/testing' +import { OcxContentContainerComponent } from './content-container.component' +import { OcxContentContainerDirective } from '../../directives/content-container.directive' +import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed' + +describe('OcxContentContainerComponent', () => { + let component: OcxContentContainerComponent + let fixture: ComponentFixture + let ocxContentContainerHarness: OcxContentContainerHarness + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [OcxContentContainerComponent, OcxContentContainerDirective], + }).compileComponents() + + fixture = TestBed.createComponent(OcxContentContainerComponent) + component = fixture.componentInstance + ocxContentContainerHarness = await TestbedHarnessEnvironment.harnessForFixture(fixture, OcxContentContainerHarness) + }) + + it('should create', () => { + expect(component).toBeTruthy() + }) + + it('should render a horizontal layout container with md breakpoint by default', async () => { + const expectedClasses = ['flex', 'gap-3', 'flex-column', 'md:flex-row'] + expect(await ocxContentContainerHarness.getLayoutClasses()).toEqual(expectedClasses) + expect(await ocxContentContainerHarness.getLayout()).toEqual('horizontal') + expect(await ocxContentContainerHarness.getBreakpoint()).toEqual('md') + }) + + it('should render a horizontal layout container while respecting a specified breakpoint', async () => { + component.breakpoint = 'lg' + + const expectedClassesLG = ['flex', 'gap-3', 'flex-column', 'lg:flex-row'] + expect(await ocxContentContainerHarness.getLayoutClasses()).toEqual(expectedClassesLG) + expect(await ocxContentContainerHarness.getLayout()).toEqual('horizontal') + expect(await ocxContentContainerHarness.getBreakpoint()).toEqual('lg') + }) + + it('should render a vertical layout container if specified', async () => { + component.layout = 'vertical' + + const expectedClasses = ['flex', 'gap-3', 'flex-column'] + expect(await ocxContentContainerHarness.getLayoutClasses()).toEqual(expectedClasses) + expect(await ocxContentContainerHarness.getLayout()).toEqual('vertical') + expect(await ocxContentContainerHarness.getBreakpoint()).toBeUndefined() + }) +}) diff --git a/libs/portal-integration-angular/src/lib/core/components/content-container/content-container.component.stories.ts b/libs/angular-accelerator/src/lib/components/content-container/content-container.component.stories.ts similarity index 87% rename from libs/portal-integration-angular/src/lib/core/components/content-container/content-container.component.stories.ts rename to libs/angular-accelerator/src/lib/components/content-container/content-container.component.stories.ts index 8a1a7516..5f5469dc 100644 --- a/libs/portal-integration-angular/src/lib/core/components/content-container/content-container.component.stories.ts +++ b/libs/angular-accelerator/src/lib/components/content-container/content-container.component.stories.ts @@ -15,7 +15,7 @@ export default { breakpoint: { options: ['sm', 'md', 'lg', 'xl'], control: { type: 'select' }, - } + }, }, decorators: [ moduleMetadata({ @@ -38,7 +38,7 @@ export const Basic = { }), args: { layout: 'horizontal', - breakpoint: 'md' + breakpoint: 'md', }, } @@ -60,7 +60,7 @@ export const WithNestedOCXContent = { }), args: { layout: 'horizontal', - breakpoint: 'md' + breakpoint: 'md', }, } @@ -84,7 +84,23 @@ export const WithNestedOCXContentContainer = { }), args: { layout: 'horizontal', - breakpoint: 'md' + breakpoint: 'md', + }, +} + +export const WithStyleClass = { + render: (args: OcxContentComponent) => ({ + props: { + ...args, + }, + template: ` + +

Content inside of ocx-content-container with styleClass

+
+ `, + }), + args: { + styleClass: 'color: red', }, } @@ -102,6 +118,6 @@ export const DirectiveOnly = { }), args: { layout: 'horizontal', - breakpoint: 'md' + breakpoint: 'md', }, } diff --git a/libs/angular-accelerator/src/lib/components/content-container/content-container.component.ts b/libs/angular-accelerator/src/lib/components/content-container/content-container.component.ts new file mode 100644 index 00000000..c734c54b --- /dev/null +++ b/libs/angular-accelerator/src/lib/components/content-container/content-container.component.ts @@ -0,0 +1,24 @@ +import { Component, Input } from '@angular/core' + +@Component({ + selector: 'ocx-content-container', + templateUrl: './content-container.component.html', +}) +export class OcxContentContainerComponent { + /** + * Allows specifying the layout direction of the container + */ + @Input() layout: 'vertical' | 'horizontal' = 'horizontal' + + /** + * Allows specifying the breakpoint below which a horizontal layout switches to a vertical layout. + * Only necessary if horizontal layout is used + * Default: md + */ + @Input() breakpoint: 'sm' | 'md' | 'lg' | 'xl' = 'md' + + /** + * Optionally allows specifying styles for the container + */ + @Input() styleClass = '' +} diff --git a/libs/angular-accelerator/src/lib/components/content/content.component.html b/libs/angular-accelerator/src/lib/components/content/content.component.html new file mode 100644 index 00000000..0ee9b0a9 --- /dev/null +++ b/libs/angular-accelerator/src/lib/components/content/content.component.html @@ -0,0 +1,3 @@ +
+ +
diff --git a/libs/angular-accelerator/src/lib/components/content/content.component.spec.ts b/libs/angular-accelerator/src/lib/components/content/content.component.spec.ts new file mode 100644 index 00000000..95150f8b --- /dev/null +++ b/libs/angular-accelerator/src/lib/components/content/content.component.spec.ts @@ -0,0 +1,45 @@ +import { OcxContentHarness } from '../../../../testing/content.harness' +import { ComponentFixture, TestBed } from '@angular/core/testing' +import { OcxContentComponent } from './content.component' +import { OcxContentDirective } from '../../directives/content.directive' +import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed' + +describe('OcxContentComponent', () => { + let component: OcxContentComponent + let fixture: ComponentFixture + let ocxContentHarness: OcxContentHarness + const testComponentTitle = 'My cool title' + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [OcxContentComponent, OcxContentDirective], + }).compileComponents() + + fixture = TestBed.createComponent(OcxContentComponent) + component = fixture.componentInstance + ocxContentHarness = await TestbedHarnessEnvironment.harnessForFixture(fixture, OcxContentHarness) + }) + + it('should create', () => { + expect(component).toBeTruthy() + }) + + it('should render a ocxContent card with no title by default', async () => { + const expectedClasses = ['card'] + expect(await ocxContentHarness.getContentClasses()).toEqual(expectedClasses) + expect(await ocxContentHarness.hasTitle()).toEqual(false) + }) + + it('should render a ocxContent card with a title, when given a title via input', async () => { + const expectedClasses = ['card'] + expect(await ocxContentHarness.getContentClasses()).toEqual(expectedClasses) + expect(await ocxContentHarness.hasTitle()).toEqual(false) + + component.title = testComponentTitle + + const expectedTitleClasses = ['font-medium', 'text-lg'] + expect(await ocxContentHarness.hasTitle()).toEqual(true) + expect(await ocxContentHarness.getTitle()).toEqual(testComponentTitle) + expect(await ocxContentHarness.getTitleClasses()).toEqual(expectedTitleClasses) + }) +}) diff --git a/libs/portal-integration-angular/src/lib/core/components/content/content.component.stories.ts b/libs/angular-accelerator/src/lib/components/content/content.component.stories.ts similarity index 69% rename from libs/portal-integration-angular/src/lib/core/components/content/content.component.stories.ts rename to libs/angular-accelerator/src/lib/components/content/content.component.stories.ts index a0d53c7e..10379bc0 100644 --- a/libs/portal-integration-angular/src/lib/core/components/content/content.component.stories.ts +++ b/libs/angular-accelerator/src/lib/components/content/content.component.stories.ts @@ -1,5 +1,5 @@ -import { OcxContentDirective } from '../../directives/content.directive'; -import { OcxContentComponent } from './content.component'; +import { OcxContentDirective } from '../../directives/content.directive' +import { OcxContentComponent } from './content.component' import { moduleMetadata, Meta } from '@storybook/angular' export default { @@ -7,9 +7,7 @@ export default { component: OcxContentComponent, decorators: [ moduleMetadata({ - declarations: [ - OcxContentDirective, - ] + declarations: [OcxContentDirective], }), ], } as Meta @@ -26,7 +24,7 @@ export const WithTitle = { `, }), args: { - title: 'My Title' + title: 'My Title', }, } @@ -43,6 +41,22 @@ export const WithoutTitle = { }), } +export const WithStyleClass = { + render: (args: OcxContentComponent) => ({ + props: { + ...args, + }, + template: ` + +

Content inside of ocx-content with styleClass

+
+ `, + }), + args: { + styleClass: 'color: red', + }, +} + export const DirectiveOnly = { render: (args: OcxContentComponent) => ({ props: { @@ -55,6 +69,6 @@ export const DirectiveOnly = { `, }), args: { - title: 'My Title' + title: 'My Title', }, } diff --git a/libs/angular-accelerator/src/lib/components/content/content.component.ts b/libs/angular-accelerator/src/lib/components/content/content.component.ts new file mode 100644 index 00000000..b9eff172 --- /dev/null +++ b/libs/angular-accelerator/src/lib/components/content/content.component.ts @@ -0,0 +1,17 @@ +import { Component, Input } from '@angular/core' + +@Component({ + selector: 'ocx-content', + templateUrl: './content.component.html', +}) +export class OcxContentComponent { + /** + * Optionally allows specifying a title for the content card + */ + @Input() title = '' + + /** + * Optionally allows specifying styles for the content card + */ + @Input() styleClass = '' +} diff --git a/libs/angular-accelerator/src/lib/components/data-list-grid-sorting/data-list-grid-sorting.component.html b/libs/angular-accelerator/src/lib/components/data-list-grid-sorting/data-list-grid-sorting.component.html index 397f5797..0fe00ba6 100644 --- a/libs/angular-accelerator/src/lib/components/data-list-grid-sorting/data-list-grid-sorting.component.html +++ b/libs/angular-accelerator/src/lib/components/data-list-grid-sorting/data-list-grid-sorting.component.html @@ -1,18 +1,21 @@
- - {{ item?.columnName ? (item.columnName | translate) : ''}} - - {{ item?.columnName ? (item.columnName | translate) : ''}} - + + + {{ item?.columnName ? (item.columnName | translate) : ''}} + + {{ item?.columnName ? (item.columnName | translate) : ''}} + + + + + + + +
+
+

{{ step.title }}

+

+ {{ step.details }} +

+
+
+
+ diff --git a/libs/angular-accelerator/src/lib/components/lifecycle/lifecycle.component.spec.ts b/libs/angular-accelerator/src/lib/components/lifecycle/lifecycle.component.spec.ts new file mode 100644 index 00000000..e8c5b1d2 --- /dev/null +++ b/libs/angular-accelerator/src/lib/components/lifecycle/lifecycle.component.spec.ts @@ -0,0 +1,75 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing' +import { LifecycleComponent, LifecycleStep } from './lifecycle.component' +import { TimelineModule } from 'primeng/timeline' +import { LifecycleHarness } from '../../../../testing/lifecycle.harness' +import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed' +import { BrowserAnimationsModule } from '@angular/platform-browser/animations' + +const mockSteps: LifecycleStep[] = [ + { + id: 'test1', + title: 'Test 1', + }, + { + id: 'test2', + title: 'Test 2', + details: 'Test 2 description', + }, + { + id: 'test3', + title: 'Test 3', + }, +] + +describe('LifecycleComponent', () => { + let component: LifecycleComponent + let fixture: ComponentFixture + let lifecycle: LifecycleHarness + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [LifecycleComponent], + imports: [TimelineModule, BrowserAnimationsModule], + }).compileComponents() + + fixture = TestBed.createComponent(LifecycleComponent) + component = fixture.componentInstance + fixture.detectChanges() + lifecycle = await TestbedHarnessEnvironment.harnessForFixture(fixture, LifecycleHarness) + }) + + it('should create', () => { + expect(component).toBeTruthy() + expect(lifecycle).toBeTruthy() + }) + + it('should not render any initial lifecycle steps', async () => { + const steps = await lifecycle.getSteps() + expect(steps.length).toBe(0) + }) + + it('should render given lifecycle steps', async () => { + component.steps = mockSteps + const steps = await lifecycle.getSteps() + const highlightedSteps = await lifecycle.getHighlightedSteps() + expect(steps.length).toBe(3) + expect(highlightedSteps.length).toBe(0) + mockSteps.forEach(async (step, index) => { + expect(await steps[index].text()).toEqual(step.title + (step.details ?? '')) + }) + }) + + it('should highlight a given lifecycle step', async () => { + component.steps = mockSteps + component.activeStepId = 'test2' + const steps = await lifecycle.getSteps() + const highlightedSteps = await lifecycle.getHighlightedSteps() + mockSteps.forEach(async (step, index) => { + if (step.id == component.activeStepId) { + expect(await steps[index].hasClass('bg-primary')).toEqual(true) + } + }) + expect(steps.length).toBe(3) + expect(highlightedSteps.length).toBe(1) + }) +}) diff --git a/libs/portal-integration-angular/src/lib/core/components/lifecycle/lifecycle.component.stories.ts b/libs/angular-accelerator/src/lib/components/lifecycle/lifecycle.component.stories.ts similarity index 76% rename from libs/portal-integration-angular/src/lib/core/components/lifecycle/lifecycle.component.stories.ts rename to libs/angular-accelerator/src/lib/components/lifecycle/lifecycle.component.stories.ts index f28ac41e..8e60c345 100644 --- a/libs/portal-integration-angular/src/lib/core/components/lifecycle/lifecycle.component.stories.ts +++ b/libs/angular-accelerator/src/lib/components/lifecycle/lifecycle.component.stories.ts @@ -26,32 +26,32 @@ const Template: StoryFn = (args: LifecycleComponent) => ({ }) const mockData: LifecycleStep[] = [ - { - id: "todo", - title: "ToDo" - }, - { - id: "in_progress", - title: "In Progress", - details: "This event is currently in progress" - }, - { - id: "done", - title: "Done" - } + { + id: 'todo', + title: 'ToDo', + }, + { + id: 'in_progress', + title: 'In Progress', + details: 'This event is currently in progress', + }, + { + id: 'done', + title: 'Done', + }, ] export const WithoutHighlightedStep = { render: Template, args: { - steps: mockData - } + steps: mockData, + }, } export const WithHighlightedStep = { - render: Template, - args: { - steps: mockData, - activeStepId: 'in_progress' - } - } \ No newline at end of file + render: Template, + args: { + steps: mockData, + activeStepId: 'in_progress', + }, +} diff --git a/libs/angular-accelerator/src/lib/components/lifecycle/lifecycle.component.ts b/libs/angular-accelerator/src/lib/components/lifecycle/lifecycle.component.ts new file mode 100644 index 00000000..087e25e6 --- /dev/null +++ b/libs/angular-accelerator/src/lib/components/lifecycle/lifecycle.component.ts @@ -0,0 +1,16 @@ +import { Component, Input } from '@angular/core' + +export interface LifecycleStep { + id: string + title: string + details?: string +} + +@Component({ + selector: 'ocx-lifecycle', + templateUrl: './lifecycle.component.html', +}) +export class LifecycleComponent { + @Input() steps: LifecycleStep[] = [] + @Input() activeStepId: string | undefined +} diff --git a/libs/angular-accelerator/src/lib/directives/content-container.directive.ts b/libs/angular-accelerator/src/lib/directives/content-container.directive.ts new file mode 100644 index 00000000..2d5a983f --- /dev/null +++ b/libs/angular-accelerator/src/lib/directives/content-container.directive.ts @@ -0,0 +1,53 @@ +import { Directive, ElementRef, Input, OnChanges, OnInit } from '@angular/core' + +@Directive({ selector: '[ocxContentContainer]' }) +export class OcxContentContainerDirective implements OnInit, OnChanges { + /** + * Used for passing the direction, in which the content inside the container should be rendered. + * Default: horizontal + * @example [ocxContentContainer]="horizontal" + * @example [ocxContentContainer]="vertical" + */ + @Input() layout: 'horizontal' | 'vertical' = 'horizontal' + + /** + * Used for passing in the breakpoint below which a horizontal layout should switch to a vertical layout. + * Only necessary if horizontal layout is used + * Default: md + */ + @Input() breakpoint: 'sm' | 'md' | 'lg' | 'xl' = 'md' + + constructor(private el: ElementRef) {} + + ngOnInit() { + this.addContainerStyles() + } + + ngOnChanges() { + this.addContainerStyles() + } + + private addContainerStyles() { + const addClasses = (classes: string[]) => this.el.nativeElement.classList.add(...classes) + const removeClasses = (classes: string[]) => this.el.nativeElement.classList.remove(...classes) + // We need to ensure that all breakpoint dependent flex-row classes are removed from the element + // This way we can avoid multiple contradictory layout classes and unexpected effects + const removeResponsiveLayoutClasses = () => { + const classesToRemove: string[] = [] + const regexPattern = /\w+:flex-row$/ + this.el.nativeElement.classList.forEach((className: string) => { + if (regexPattern.test(className)) { + classesToRemove.push(className) + } + }) + removeClasses(classesToRemove) + } + const sharedClasses = ['flex', 'gap-3', 'flex-column'] + removeResponsiveLayoutClasses() + addClasses(sharedClasses) + if (this.layout != 'vertical') { + const responsiveLayoutClass = `${this.breakpoint || 'md'}:flex-row` + addClasses([responsiveLayoutClass]) + } + } +} diff --git a/libs/angular-accelerator/src/lib/directives/content.directive.ts b/libs/angular-accelerator/src/lib/directives/content.directive.ts new file mode 100644 index 00000000..4b754b6b --- /dev/null +++ b/libs/angular-accelerator/src/lib/directives/content.directive.ts @@ -0,0 +1,57 @@ +import { Directive, ElementRef, Input, OnChanges, OnInit } from '@angular/core' + +@Directive({ selector: '[ocxContent]' }) +export class OcxContentDirective implements OnInit, OnChanges { + /** + * Used for passing a title text which should be rendered in the upper left corner of the content area. + * @example [ocxContent]="My Cool Title" + */ + @Input() ocxContent = '' + + private titleElemID = 'ocxContentTitleElement' + + constructor(private el: ElementRef) {} + + ngOnInit() { + this.init() + } + + ngOnChanges() { + this.init() + } + + private init() { + this.addContentStyles() + if (this.ocxContent) { + this.prependTitle() + } else { + this.removeTitle() + } + } + + private addContentStyles() { + const addClasses = (classes: string[]) => this.el.nativeElement.classList.add(...classes) + addClasses(['card']) + } + + private prependTitle() { + const titleElement = this.el.nativeElement.querySelector(`#${this.titleElemID}`) + if (titleElement) { + titleElement.textContent = this.ocxContent + } else { + const title = document.createElement('p') + title.classList.add('font-medium') + title.classList.add('text-lg') + title.id = this.titleElemID + title.textContent = this.ocxContent + this.el.nativeElement.prepend(title) + } + } + + private removeTitle() { + const titleElement = this.el.nativeElement.querySelector(`#${this.titleElemID}`) + if (titleElement) { + titleElement.remove() + } + } +} diff --git a/libs/angular-accelerator/testing/content-container.harness.ts b/libs/angular-accelerator/testing/content-container.harness.ts new file mode 100644 index 00000000..6adfd04f --- /dev/null +++ b/libs/angular-accelerator/testing/content-container.harness.ts @@ -0,0 +1,24 @@ +import { ComponentHarness } from '@angular/cdk/testing' +import { DivHarness } from '@onecx/angular-testing' + +export class OcxContentContainerHarness extends ComponentHarness { + static hostSelector = 'ocx-content-container' + + async getLayoutClasses() { + const div = await this.locatorFor(DivHarness)() + const actualClassList = await div.getClassList() + + return actualClassList + } + + async getLayout(): Promise<'horizontal' | 'vertical'> { + const layoutClassses = await this.getLayoutClasses() + return layoutClassses.find((c) => c.endsWith(':flex-row')) ? 'horizontal' : 'vertical' + } + + async getBreakpoint(): Promise<'sm' | 'md' | 'lg' | 'xl' | undefined> { + const layoutClassses = await this.getLayoutClasses() + const layoutClass = layoutClassses.find((c) => c.endsWith(':flex-row')) + return layoutClass?.split(':')[0] as 'sm' | 'md' | 'lg' | 'xl' | undefined + } +} diff --git a/libs/angular-accelerator/testing/content.harness.ts b/libs/angular-accelerator/testing/content.harness.ts new file mode 100644 index 00000000..688bea52 --- /dev/null +++ b/libs/angular-accelerator/testing/content.harness.ts @@ -0,0 +1,41 @@ +import { ComponentHarness } from '@angular/cdk/testing' +import { DivHarness, PHarness } from '@onecx/angular-testing' + +export class OcxContentHarness extends ComponentHarness { + static hostSelector = 'ocx-content' + + async getContentClasses() { + const div = await this.locatorFor(DivHarness)() + const actualClassList = await div.getClassList() + + return actualClassList + } + + async getTitleClasses() { + const p = await this.getTitleHarness() + if (p) { + const actualClassList = await p.getClassList() + return actualClassList + } + return null + } + + async getTitle() { + const p = await this.getTitleHarness() + if (p) { + const titleContent = await p.getText() + return titleContent + } + return null + } + + async getTitleHarness() { + const pHarness = await this.locatorForOptional(PHarness.with({ id: 'ocxContentTitleElement' }))() + return pHarness + } + + async hasTitle(): Promise { + const title = await this.getTitleHarness() + return !!title + } +} diff --git a/libs/angular-accelerator/testing/lifecycle.harness.ts b/libs/angular-accelerator/testing/lifecycle.harness.ts new file mode 100644 index 00000000..95f59474 --- /dev/null +++ b/libs/angular-accelerator/testing/lifecycle.harness.ts @@ -0,0 +1,8 @@ +import { ContentContainerComponentHarness } from '@angular/cdk/testing' + +export class LifecycleHarness extends ContentContainerComponentHarness { + static hostSelector = 'ocx-lifecycle' + + getSteps = this.locatorForAll('.p-timeline-event-content .card') + getHighlightedSteps = this.locatorForAll('.p-timeline-event-content .card.bg-primary') +} diff --git a/libs/portal-integration-angular/package-lock.json b/libs/portal-integration-angular/package-lock.json new file mode 100644 index 00000000..dd0419f9 --- /dev/null +++ b/libs/portal-integration-angular/package-lock.json @@ -0,0 +1,1226 @@ +{ + "name": "@onecx/portal-integration-angular", + "version": "5.13.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@onecx/portal-integration-angular", + "version": "5.13.0", + "license": "Apache-2.0", + "peerDependencies": { + "@angular-architects/module-federation": "^18.0.4", + "@angular/animations": "^18.0.5", + "@angular/cdk": "^18.0.6", + "@angular/common": "^18.0.5", + "@angular/core": "^18.0.5", + "@angular/forms": "^18.0.5", + "@angular/platform-browser": "^18.0.5", + "@angular/router": "^18.0.5", + "@ngneat/until-destroy": "^10.0.0", + "@ngrx/effects": "^18.0.1", + "@ngrx/operators": "^18.0.1", + "@ngrx/router-store": "^18.0.1", + "@ngrx/store": "^18.0.1", + "@ngx-translate/core": "^15.0.0", + "@ngx-translate/http-loader": "^8.0.0", + "@onecx/angular-accelerator": "^5", + "@onecx/angular-integration-interface": "^5", + "@onecx/angular-testing": "^5", + "@onecx/integration-interface": "^5", + "fast-deep-equal": "^3.1.3", + "msw": "^2.3.1", + "primeng": "^17.18.6", + "rxjs": "~7.8.1", + "zod": "^3.23.8" + } + }, + "node_modules/@angular-architects/module-federation": { + "version": "18.0.6", + "resolved": "https://registry.npmjs.org/@angular-architects/module-federation/-/module-federation-18.0.6.tgz", + "integrity": "sha512-uI7Yqs8OM4leakD7sdnk2Pt+bIt9nLGbo6xcYGpLoTWpS0OnCQRQJinNCynAL+F+4NEzNToeNSXXKgffDuQtCQ==", + "peer": true, + "dependencies": { + "@angular-architects/module-federation-runtime": "18.0.6", + "callsite": "^1.0.0", + "node-fetch": "^2.6.7", + "semver": "^7.3.5", + "word-wrap": "^1.2.3" + } + }, + "node_modules/@angular-architects/module-federation-runtime": { + "version": "18.0.6", + "resolved": "https://registry.npmjs.org/@angular-architects/module-federation-runtime/-/module-federation-runtime-18.0.6.tgz", + "integrity": "sha512-rOpuNxg48Lk9ZrNRMcCvMu1D3MhnKPqLw7xhtX8Qva5BOuaQ3gMtBZI4NM5eI8WqPlZNbzVxMNrVzSKaxDApZQ==", + "peer": true, + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/common": ">=18.0.0", + "@angular/core": ">=18.0.0" + } + }, + "node_modules/@angular/animations": { + "version": "18.2.7", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-18.2.7.tgz", + "integrity": "sha512-5B7qD1K+kKOf9lgJT4VNMft3IK2BnRHjN1S6l38ywzQ/nxpmCG7f+qKAAU6CpCywhNUBeXW0hVXTMuMNPVOcQQ==", + "peer": true, + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + }, + "peerDependencies": { + "@angular/core": "18.2.7" + } + }, + "node_modules/@angular/cdk": { + "version": "18.2.6", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-18.2.6.tgz", + "integrity": "sha512-Gfq/iv4zhlKYpdQkDaBRwxI71NHNUHM1Cs1XhnZ0/oFct5HXvSv1RHRGTKqBJLLACaAPzZKXJ/UglLoyO5CNiQ==", + "peer": true, + "dependencies": { + "tslib": "^2.3.0" + }, + "optionalDependencies": { + "parse5": "^7.1.2" + }, + "peerDependencies": { + "@angular/common": "^18.0.0 || ^19.0.0", + "@angular/core": "^18.0.0 || ^19.0.0", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/common": { + "version": "18.2.7", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-18.2.7.tgz", + "integrity": "sha512-5vDBmBR2JcIxHVEDunKXNU+T+OvTGiHZTSo35GFOHJxKFgX5g6+0tJBZunK04oBZGbJQUmp3pg2kMvuKKjZnkQ==", + "peer": true, + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + }, + "peerDependencies": { + "@angular/core": "18.2.7", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/core": { + "version": "18.2.7", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-18.2.7.tgz", + "integrity": "sha512-hLOxgxLiyWm9iVHBsUsJfx1hDsXWZnfJBlr+N7cev53f0CDoPfbshqq6KV+JFqXFDguzR9dKHm1ewT1jK3e6Tw==", + "peer": true, + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + }, + "peerDependencies": { + "rxjs": "^6.5.3 || ^7.4.0", + "zone.js": "~0.14.10" + } + }, + "node_modules/@angular/forms": { + "version": "18.2.7", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-18.2.7.tgz", + "integrity": "sha512-WO3c9/OA7ekBnDBgmvi5TlHshOt5S4NREIP+/VVyuRgg28BwUWyO/Nqh19nguE1UNNRt6OMLkT6NSV2ewhcXUg==", + "peer": true, + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + }, + "peerDependencies": { + "@angular/common": "18.2.7", + "@angular/core": "18.2.7", + "@angular/platform-browser": "18.2.7", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/platform-browser": { + "version": "18.2.7", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-18.2.7.tgz", + "integrity": "sha512-xgj2DH/isFrMZ73dJJm89NRnWBI3AHtugQrZbIapkKBdEt/C1o4SR2W2cV4mPb9o+ELnWurfrxFt9o/q2vnVLw==", + "peer": true, + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + }, + "peerDependencies": { + "@angular/animations": "18.2.7", + "@angular/common": "18.2.7", + "@angular/core": "18.2.7" + }, + "peerDependenciesMeta": { + "@angular/animations": { + "optional": true + } + } + }, + "node_modules/@angular/router": { + "version": "18.2.7", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-18.2.7.tgz", + "integrity": "sha512-TXE8Aw63hDp3PEaNu4B1DMNvlS0uCzs36o/OSCCmewmLnzyJygkgi4jeEj20FsWPAQOUj5g5tnCYgxz1IRrCUg==", + "peer": true, + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + }, + "peerDependencies": { + "@angular/common": "18.2.7", + "@angular/core": "18.2.7", + "@angular/platform-browser": "18.2.7", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@bundled-es-modules/cookie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@bundled-es-modules/cookie/-/cookie-2.0.0.tgz", + "integrity": "sha512-Or6YHg/kamKHpxULAdSqhGqnWFneIXu1NKvvfBBzKGwpVsYuFIQ5aBPHDnnoR3ghW1nvSkALd+EF9iMtY7Vjxw==", + "peer": true, + "dependencies": { + "cookie": "^0.5.0" + } + }, + "node_modules/@bundled-es-modules/statuses": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@bundled-es-modules/statuses/-/statuses-1.0.1.tgz", + "integrity": "sha512-yn7BklA5acgcBr+7w064fGV+SGIFySjCKpqjcWgBAIfrAkY+4GQTJJHQMeT3V/sgz23VTEVV8TtOmkvJAhFVfg==", + "peer": true, + "dependencies": { + "statuses": "^2.0.1" + } + }, + "node_modules/@bundled-es-modules/tough-cookie": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@bundled-es-modules/tough-cookie/-/tough-cookie-0.1.6.tgz", + "integrity": "sha512-dvMHbL464C0zI+Yqxbz6kZ5TOEp7GLW+pry/RWndAR8MJQAXZ2rPmIs8tziTZjeIyhSNZgZbCePtfSbdWqStJw==", + "peer": true, + "dependencies": { + "@types/tough-cookie": "^4.0.5", + "tough-cookie": "^4.1.4" + } + }, + "node_modules/@inquirer/confirm": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-3.2.0.tgz", + "integrity": "sha512-oOIwPs0Dvq5220Z8lGL/6LHRTEr9TgLHmiI99Rj1PJ1p1czTys+olrgBqZk4E2qC0YTzeHprxSQmoHioVdJ7Lw==", + "peer": true, + "dependencies": { + "@inquirer/core": "^9.1.0", + "@inquirer/type": "^1.5.3" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/core": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-9.2.1.tgz", + "integrity": "sha512-F2VBt7W/mwqEU4bL0RnHNZmC/OxzNx9cOYxHqnXX3MP6ruYvZUZAW9imgN9+h/uBT/oP8Gh888J2OZSbjSeWcg==", + "peer": true, + "dependencies": { + "@inquirer/figures": "^1.0.6", + "@inquirer/type": "^2.0.0", + "@types/mute-stream": "^0.0.4", + "@types/node": "^22.5.5", + "@types/wrap-ansi": "^3.0.0", + "ansi-escapes": "^4.3.2", + "cli-width": "^4.1.0", + "mute-stream": "^1.0.0", + "signal-exit": "^4.1.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.2" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/core/node_modules/@inquirer/type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-2.0.0.tgz", + "integrity": "sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag==", + "peer": true, + "dependencies": { + "mute-stream": "^1.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/figures": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.6.tgz", + "integrity": "sha512-yfZzps3Cso2UbM7WlxKwZQh2Hs6plrbjs1QnzQDZhK2DgyCo6D8AaHps9olkNcUFlcYERMqU3uJSp1gmy3s/qQ==", + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@inquirer/type": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-1.5.5.tgz", + "integrity": "sha512-MzICLu4yS7V8AA61sANROZ9vT1H3ooca5dSmI1FjZkzq7o/koMsRfQSzRtFo+F3Ao4Sf1C0bpLKejpKB/+j6MA==", + "peer": true, + "dependencies": { + "mute-stream": "^1.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@kurkle/color": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.2.tgz", + "integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==", + "peer": true + }, + "node_modules/@mswjs/interceptors": { + "version": "0.35.9", + "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.35.9.tgz", + "integrity": "sha512-SSnyl/4ni/2ViHKkiZb8eajA/eN1DNFaHjhGiLUdZvDz6PKF4COSf/17xqSz64nOo2Ia29SA6B2KNCsyCbVmaQ==", + "peer": true, + "dependencies": { + "@open-draft/deferred-promise": "^2.2.0", + "@open-draft/logger": "^0.3.0", + "@open-draft/until": "^2.0.0", + "is-node-process": "^1.2.0", + "outvariant": "^1.4.3", + "strict-event-emitter": "^0.5.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@ngneat/until-destroy": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/@ngneat/until-destroy/-/until-destroy-10.0.0.tgz", + "integrity": "sha512-xXFAabQ4YVJ82LYxdgUlaKZyR3dSbxqG3woSyaclzxfCgWMEDweCcM/GGYbNiHJa0WwklI98RXHvca+UyCxpeg==", + "peer": true, + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/core": ">=13", + "rxjs": "^6.4.0 || ^7.0.0" + } + }, + "node_modules/@ngrx/effects": { + "version": "18.0.2", + "resolved": "https://registry.npmjs.org/@ngrx/effects/-/effects-18.0.2.tgz", + "integrity": "sha512-YojXcOD9Lsq4kl2HCjENccyUM/mOlgBdtddsg9j/ojzSUgu3ZuBVKLN3atrL2TJYkbMX1MN0RzafSkL3TPGFIA==", + "peer": true, + "dependencies": { + "@ngrx/operators": "18.0.1", + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/core": "^18.0.0", + "@ngrx/store": "18.0.2", + "rxjs": "^6.5.3 || ^7.5.0" + } + }, + "node_modules/@ngrx/effects/node_modules/@ngrx/operators": { + "version": "18.0.1", + "resolved": "https://registry.npmjs.org/@ngrx/operators/-/operators-18.0.1.tgz", + "integrity": "sha512-M+QMrHNKgcuiLaRGZxJ4aQi5/OCRfKC4+T/63dsHyLFZ53/FFpF6a/ytSO1Q+tzOplZ5o99S+i8FVaZqNQ3LmQ==", + "peer": true, + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@ngrx/operators": { + "version": "18.0.2", + "resolved": "https://registry.npmjs.org/@ngrx/operators/-/operators-18.0.2.tgz", + "integrity": "sha512-4dyNkVKBw9ZqECMJu6bT2t21p3ANaMC+ZkcfiBfv5OUEFtB9HhN5uCem9tcgYeNBK8XQFA7/1tzd1T3KaiBY8A==", + "peer": true, + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@ngrx/router-store": { + "version": "18.0.2", + "resolved": "https://registry.npmjs.org/@ngrx/router-store/-/router-store-18.0.2.tgz", + "integrity": "sha512-jUrQ/uJJ53x8O1XbN2YxH2GpRREZlwS5gRxlCoc4fWL4Us/uS1/K6+QfRmKBPtpTKBIixqsOb+dIUV5iwBrivA==", + "peer": true, + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/common": "^18.0.0", + "@angular/core": "^18.0.0", + "@angular/router": "^18.0.0", + "@ngrx/store": "18.0.2", + "rxjs": "^6.5.3 || ^7.5.0" + } + }, + "node_modules/@ngrx/store": { + "version": "18.0.2", + "resolved": "https://registry.npmjs.org/@ngrx/store/-/store-18.0.2.tgz", + "integrity": "sha512-ajwv0+njsO4vzArp9esnFvs1wyUb1U1W8E8LSCKrcW2hWWo9o1Pezj+JRsdQwatxHfrrPFuTDyajsl6GQM/JSA==", + "peer": true, + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/core": "^18.0.0", + "rxjs": "^6.5.3 || ^7.5.0" + } + }, + "node_modules/@ngx-translate/core": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/@ngx-translate/core/-/core-15.0.0.tgz", + "integrity": "sha512-Am5uiuR0bOOxyoercDnAA3rJVizo4RRqJHo8N3RqJ+XfzVP/I845yEnMADykOHvM6HkVm4SZSnJBOiz0Anx5BA==", + "peer": true, + "engines": { + "node": "^16.13.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/common": ">=16.0.0", + "@angular/core": ">=16.0.0", + "rxjs": "^6.5.5 || ^7.4.0" + } + }, + "node_modules/@ngx-translate/http-loader": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@ngx-translate/http-loader/-/http-loader-8.0.0.tgz", + "integrity": "sha512-SFMsdUcmHF5OdZkL1CHEoSAwbP5EbAOPTLLboOCRRoOg21P4GJx+51jxGdJeGve6LSKLf4Pay7BkTwmE6vxYlg==", + "peer": true, + "engines": { + "node": "^16.13.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/common": ">=16.0.0", + "@angular/core": ">=16.0.0", + "@ngx-translate/core": ">=15.0.0", + "rxjs": "^6.5.5 || ^7.4.0" + } + }, + "node_modules/@onecx/accelerator": { + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@onecx/accelerator/-/accelerator-5.13.0.tgz", + "integrity": "sha512-pvO/+Az2+D0I1u1BauLE8DWlkmRXOU6dASomVn/8SSD0zaL2WEaSevPHK13N3WTlBRYGPJ+gHt1CyfHN+mfdOw==", + "peer": true, + "peerDependencies": { + "rxjs": "^7.8.1", + "tslib": "^2.6.3" + } + }, + "node_modules/@onecx/angular-accelerator": { + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@onecx/angular-accelerator/-/angular-accelerator-5.13.0.tgz", + "integrity": "sha512-qfKHQLzs2QEIjb2KMLokYBeUAFOOV4TW/Idl80y/mi+8adIZwwjCqCxHCtBQ6NhBL7mnCgV3cZaPf5D4qO2Itg==", + "peer": true, + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/cdk": "^18.0.6", + "@angular/common": "^18.0.5", + "@angular/core": "^18.0.5", + "@angular/forms": "^18.0.5", + "@angular/platform-browser": "^18.0.5", + "@angular/router": "^18.0.5", + "@ngneat/until-destroy": "^10.0.0", + "@ngx-translate/core": "^15.0.0", + "@onecx/angular-integration-interface": "^5", + "@onecx/integration-interface": "^5", + "chart.js": "^4.4.3", + "d3-scale-chromatic": "^3.1.0", + "primeng": "^17.18.6", + "rxjs": "~7.8.1" + } + }, + "node_modules/@onecx/angular-integration-interface": { + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@onecx/angular-integration-interface/-/angular-integration-interface-5.13.0.tgz", + "integrity": "sha512-FhMnlh3r1GUMysxyAkJYHBjroiL9kDUb40MMtTqu/0eTXVNQNHCkrDhhj+MzYs0s19WjgdLFuJjrGq3L6h15wA==", + "peer": true, + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/core": "^18.0.5", + "@onecx/integration-interface": "~5", + "rxjs": "~7.8.1" + } + }, + "node_modules/@onecx/angular-testing": { + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@onecx/angular-testing/-/angular-testing-5.13.0.tgz", + "integrity": "sha512-bm0ea9pggyTM9l5dOuQ4p/VYOCjXU2/s+j8edND/U/WMGdrgMttsUEwuoreXLrC4BTQYCA+E6iWbZDAgLI7z6Q==", + "peer": true, + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/cdk": "^18.0.5", + "primeng": "^17.18.6" + } + }, + "node_modules/@onecx/integration-interface": { + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@onecx/integration-interface/-/integration-interface-5.13.0.tgz", + "integrity": "sha512-hIT7Zq4GHps/IhwtWRtuFwiqpKCqEHVVh6HdFqAm3xE//ee6Npq92ArJTsZMoCp5huVhXvAdfs4YGdPglEupfg==", + "peer": true, + "peerDependencies": { + "@onecx/accelerator": "^5", + "rxjs": "^7.8.1", + "tslib": "^2.6.3" + } + }, + "node_modules/@open-draft/deferred-promise": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz", + "integrity": "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==", + "peer": true + }, + "node_modules/@open-draft/logger": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@open-draft/logger/-/logger-0.3.0.tgz", + "integrity": "sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==", + "peer": true, + "dependencies": { + "is-node-process": "^1.2.0", + "outvariant": "^1.4.0" + } + }, + "node_modules/@open-draft/until": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-2.1.0.tgz", + "integrity": "sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==", + "peer": true + }, + "node_modules/@types/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", + "peer": true + }, + "node_modules/@types/mute-stream": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@types/mute-stream/-/mute-stream-0.0.4.tgz", + "integrity": "sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==", + "peer": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/node": { + "version": "22.7.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.4.tgz", + "integrity": "sha512-y+NPi1rFzDs1NdQHHToqeiX2TIS79SWEAw9GYhkkx8bD0ChpfqC+n2j5OXOCpzfojBEBt6DnEnnG9MY0zk1XLg==", + "peer": true, + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/@types/statuses": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/statuses/-/statuses-2.0.5.tgz", + "integrity": "sha512-jmIUGWrAiwu3dZpxntxieC+1n/5c3mjrImkmOSQ2NC5uP6cYO4aAZDdSmRcI5C1oiTmqlZGHC+/NmJrKogbP5A==", + "peer": true + }, + "node_modules/@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", + "peer": true + }, + "node_modules/@types/wrap-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz", + "integrity": "sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==", + "peer": true + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "peer": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ==", + "peer": true, + "engines": { + "node": "*" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chart.js": { + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.4.tgz", + "integrity": "sha512-emICKGBABnxhMjUjlYRR12PmOXhJ2eJjEHL2/dZlWjxRAZT1D8xplLFq5M0tMQK8ja+wBS/tuVEJB5C6r7VxJA==", + "peer": true, + "dependencies": { + "@kurkle/color": "^0.3.0" + }, + "engines": { + "pnpm": ">=8" + } + }, + "node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "peer": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "peer": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "peer": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "peer": true + }, + "node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "peer": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "peer": true, + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "peer": true, + "dependencies": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "peer": true + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "optional": true, + "peer": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "peer": true + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "peer": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/graphql": { + "version": "16.9.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.9.0.tgz", + "integrity": "sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==", + "peer": true, + "engines": { + "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/headers-polyfill": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-4.0.3.tgz", + "integrity": "sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==", + "peer": true + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-node-process": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-node-process/-/is-node-process-1.2.0.tgz", + "integrity": "sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==", + "peer": true + }, + "node_modules/msw": { + "version": "2.4.9", + "resolved": "https://registry.npmjs.org/msw/-/msw-2.4.9.tgz", + "integrity": "sha512-1m8xccT6ipN4PTqLinPwmzhxQREuxaEJYdx4nIbggxP8aM7r1e71vE7RtOUSQoAm1LydjGfZKy7370XD/tsuYg==", + "hasInstallScript": true, + "peer": true, + "dependencies": { + "@bundled-es-modules/cookie": "^2.0.0", + "@bundled-es-modules/statuses": "^1.0.1", + "@bundled-es-modules/tough-cookie": "^0.1.6", + "@inquirer/confirm": "^3.0.0", + "@mswjs/interceptors": "^0.35.8", + "@open-draft/until": "^2.1.0", + "@types/cookie": "^0.6.0", + "@types/statuses": "^2.0.4", + "chalk": "^4.1.2", + "graphql": "^16.8.1", + "headers-polyfill": "^4.0.2", + "is-node-process": "^1.2.0", + "outvariant": "^1.4.2", + "path-to-regexp": "^6.3.0", + "strict-event-emitter": "^0.5.1", + "type-fest": "^4.9.0", + "yargs": "^17.7.2" + }, + "bin": { + "msw": "cli/index.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/mswjs" + }, + "peerDependencies": { + "typescript": ">= 4.8.x" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/mute-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", + "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", + "peer": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "peer": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/outvariant": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.3.tgz", + "integrity": "sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==", + "peer": true + }, + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "optional": true, + "peer": true, + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/path-to-regexp": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", + "peer": true + }, + "node_modules/primeng": { + "version": "17.18.11", + "resolved": "https://registry.npmjs.org/primeng/-/primeng-17.18.11.tgz", + "integrity": "sha512-LzV0fFZmb3GdnaRqi1+GP+RPtW0a+jztL5pH1zRWY7+7pyQ0n1YNyTXzmqVcdks/CmoyjNhutWEmexwi6vFVeA==", + "peer": true, + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/common": "^17.0.0 || ^18.0.0", + "@angular/core": "^17.0.0 || ^18.0.0", + "@angular/forms": "^17.0.0 || ^18.0.0", + "rxjs": "^6.0.0 || ^7.8.1", + "zone.js": "~0.14.0" + } + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "peer": true + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "peer": true + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "peer": true + }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "peer": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "peer": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "peer": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "peer": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/strict-event-emitter": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz", + "integrity": "sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==", + "peer": true + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "peer": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "peer": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "peer": true, + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "peer": true + }, + "node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "peer": true + }, + "node_modules/type-fest": { + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.26.1.tgz", + "integrity": "sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==", + "peer": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "peer": true + }, + "node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "peer": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "peer": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "peer": true + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "peer": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "peer": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "peer": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "peer": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yoctocolors-cjs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz", + "integrity": "sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==", + "peer": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "3.23.8", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", + "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", + "peer": true, + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zone.js": { + "version": "0.14.10", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.14.10.tgz", + "integrity": "sha512-YGAhaO7J5ywOXW6InXNlLmfU194F8lVgu7bRntUF3TiG8Y3nBK0x1UJJuHUP/e8IyihkjCYqhCScpSwnlaSRkQ==", + "peer": true + } + } +} diff --git a/libs/portal-integration-angular/src/lib/core/components/content-container/content-container.component.ts b/libs/portal-integration-angular/src/lib/core/components/content-container/content-container.component.ts index 2b3c7fb8..3c8a1ed8 100644 --- a/libs/portal-integration-angular/src/lib/core/components/content-container/content-container.component.ts +++ b/libs/portal-integration-angular/src/lib/core/components/content-container/content-container.component.ts @@ -1,5 +1,8 @@ import { Component, Input } from '@angular/core' +/** + * @deprecated This component was moved to angular-accelerator + */ @Component({ selector: 'ocx-content-container', templateUrl: './content-container.component.html', @@ -8,12 +11,12 @@ export class OcxContentContainerComponent { /** * Allows specifying the layout direction of the container */ - @Input() layout: 'vertical' | 'horizontal' = 'horizontal'; + @Input() layout: 'vertical' | 'horizontal' = 'horizontal' /** * Allows specifying the breakpoint below which a horizontal layout switches to a vertical layout. * Only necessary if horizontal layout is used * Default: md */ - @Input() breakpoint: 'sm' | 'md' | 'lg' | 'xl' = 'md' + @Input() breakpoint: 'sm' | 'md' | 'lg' | 'xl' = 'md' } diff --git a/libs/portal-integration-angular/src/lib/core/components/content/content.component.spec.ts b/libs/portal-integration-angular/src/lib/core/components/content/content.component.spec.ts index 50214ee9..bdd0ebc2 100644 --- a/libs/portal-integration-angular/src/lib/core/components/content/content.component.spec.ts +++ b/libs/portal-integration-angular/src/lib/core/components/content/content.component.spec.ts @@ -1,8 +1,8 @@ -import { OcxContentHarness } from '../../../../../testing/content.harness'; +import { OcxContentHarness } from '../../../../../testing/content.harness' import { ComponentFixture, TestBed } from '@angular/core/testing' import { OcxContentComponent } from './content.component' import { OcxContentDirective } from '../../directives/content.directive' -import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed'; +import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed' describe('OcxContentComponent', () => { let component: OcxContentComponent diff --git a/libs/portal-integration-angular/src/lib/core/components/content/content.component.ts b/libs/portal-integration-angular/src/lib/core/components/content/content.component.ts index e5db6348..e7081fdf 100644 --- a/libs/portal-integration-angular/src/lib/core/components/content/content.component.ts +++ b/libs/portal-integration-angular/src/lib/core/components/content/content.component.ts @@ -1,5 +1,8 @@ import { Component, Input } from '@angular/core' +/** + * @deprecated This component was moved to angular-accelerato + */ @Component({ selector: 'ocx-content', templateUrl: './content.component.html', @@ -8,5 +11,5 @@ export class OcxContentComponent { /** * Optionally allows specifying a title for the content card */ - @Input() title = ''; + @Input() title = '' } diff --git a/libs/portal-integration-angular/src/lib/core/components/lifecycle/lifecycle.component.ts b/libs/portal-integration-angular/src/lib/core/components/lifecycle/lifecycle.component.ts index cfdb33be..c7e6a863 100644 --- a/libs/portal-integration-angular/src/lib/core/components/lifecycle/lifecycle.component.ts +++ b/libs/portal-integration-angular/src/lib/core/components/lifecycle/lifecycle.component.ts @@ -2,10 +2,13 @@ import { Component, Input } from '@angular/core' export interface LifecycleStep { id: string - title: string, - details?: string, + title: string + details?: string } +/** + * @deprecated This component was moved to angular-accelerator + */ @Component({ selector: 'ocx-lifecycle', templateUrl: './lifecycle.component.html', diff --git a/libs/portal-integration-angular/src/lib/core/directives/content-container.directive.ts b/libs/portal-integration-angular/src/lib/core/directives/content-container.directive.ts index 2d5a983f..cb1e198a 100644 --- a/libs/portal-integration-angular/src/lib/core/directives/content-container.directive.ts +++ b/libs/portal-integration-angular/src/lib/core/directives/content-container.directive.ts @@ -1,5 +1,8 @@ import { Directive, ElementRef, Input, OnChanges, OnInit } from '@angular/core' +/** + * @deprecated This directive was moved to angular-accelerator lib + */ @Directive({ selector: '[ocxContentContainer]' }) export class OcxContentContainerDirective implements OnInit, OnChanges { /** @@ -34,8 +37,8 @@ export class OcxContentContainerDirective implements OnInit, OnChanges { // This way we can avoid multiple contradictory layout classes and unexpected effects const removeResponsiveLayoutClasses = () => { const classesToRemove: string[] = [] - const regexPattern = /\w+:flex-row$/ - this.el.nativeElement.classList.forEach((className: string) => { + const regexPattern = /\w+:flex-row$/ + this.el.nativeElement.classList.forEach((className: string) => { if (regexPattern.test(className)) { classesToRemove.push(className) } diff --git a/libs/portal-integration-angular/src/lib/core/directives/content.directive.ts b/libs/portal-integration-angular/src/lib/core/directives/content.directive.ts index 4b754b6b..b6231e63 100644 --- a/libs/portal-integration-angular/src/lib/core/directives/content.directive.ts +++ b/libs/portal-integration-angular/src/lib/core/directives/content.directive.ts @@ -1,5 +1,8 @@ import { Directive, ElementRef, Input, OnChanges, OnInit } from '@angular/core' +/** + * @deprecated This directive was moved to angular-accelerator lib + */ @Directive({ selector: '[ocxContent]' }) export class OcxContentDirective implements OnInit, OnChanges { /** diff --git a/libs/portal-integration-angular/testing/lifecycle.harness.ts b/libs/portal-integration-angular/testing/lifecycle.harness.ts index 4365e479..95f59474 100644 --- a/libs/portal-integration-angular/testing/lifecycle.harness.ts +++ b/libs/portal-integration-angular/testing/lifecycle.harness.ts @@ -1,8 +1,8 @@ -import { ContentContainerComponentHarness } from "@angular/cdk/testing" +import { ContentContainerComponentHarness } from '@angular/cdk/testing' export class LifecycleHarness extends ContentContainerComponentHarness { - static hostSelector = 'ocx-lifecycle' + static hostSelector = 'ocx-lifecycle' - getSteps = this.locatorForAll('.p-timeline-event-content .card') - getHighlightedSteps = this.locatorForAll('.p-timeline-event-content .card.bg-primary') -} \ No newline at end of file + getSteps = this.locatorForAll('.p-timeline-event-content .card') + getHighlightedSteps = this.locatorForAll('.p-timeline-event-content .card.bg-primary') +} From 65ee6623d29f0ab6fafbb9b22e706f091ec0b9bc Mon Sep 17 00:00:00 2001 From: Maximilian Ollendorff Date: Fri, 4 Oct 2024 15:36:54 +0200 Subject: [PATCH 2/9] fix: remove package-lock.json file --- libs/angular-accelerator/package-lock.json | 313 --------------------- 1 file changed, 313 deletions(-) delete mode 100644 libs/angular-accelerator/package-lock.json diff --git a/libs/angular-accelerator/package-lock.json b/libs/angular-accelerator/package-lock.json deleted file mode 100644 index ab59a69f..00000000 --- a/libs/angular-accelerator/package-lock.json +++ /dev/null @@ -1,313 +0,0 @@ -{ - "name": "@onecx/angular-accelerator", - "version": "5.13.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "@onecx/angular-accelerator", - "version": "5.13.0", - "license": "Apache-2.0", - "peerDependencies": { - "@angular/cdk": "^18.0.6", - "@angular/common": "^18.0.5", - "@angular/core": "^18.0.5", - "@angular/forms": "^18.0.5", - "@angular/platform-browser": "^18.0.5", - "@angular/router": "^18.0.5", - "@ngneat/until-destroy": "^10.0.0", - "@ngx-translate/core": "^15.0.0", - "@onecx/angular-integration-interface": "^5", - "@onecx/integration-interface": "^5", - "chart.js": "^4.4.3", - "d3-scale-chromatic": "^3.1.0", - "primeng": "^17.18.6", - "rxjs": "~7.8.1" - } - }, - "node_modules/@angular/cdk": { - "version": "18.2.6", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-18.2.6.tgz", - "integrity": "sha512-Gfq/iv4zhlKYpdQkDaBRwxI71NHNUHM1Cs1XhnZ0/oFct5HXvSv1RHRGTKqBJLLACaAPzZKXJ/UglLoyO5CNiQ==", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "optionalDependencies": { - "parse5": "^7.1.2" - }, - "peerDependencies": { - "@angular/common": "^18.0.0 || ^19.0.0", - "@angular/core": "^18.0.0 || ^19.0.0", - "rxjs": "^6.5.3 || ^7.4.0" - } - }, - "node_modules/@angular/common": { - "version": "18.2.7", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-18.2.7.tgz", - "integrity": "sha512-5vDBmBR2JcIxHVEDunKXNU+T+OvTGiHZTSo35GFOHJxKFgX5g6+0tJBZunK04oBZGbJQUmp3pg2kMvuKKjZnkQ==", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" - }, - "peerDependencies": { - "@angular/core": "18.2.7", - "rxjs": "^6.5.3 || ^7.4.0" - } - }, - "node_modules/@angular/core": { - "version": "18.2.7", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-18.2.7.tgz", - "integrity": "sha512-hLOxgxLiyWm9iVHBsUsJfx1hDsXWZnfJBlr+N7cev53f0CDoPfbshqq6KV+JFqXFDguzR9dKHm1ewT1jK3e6Tw==", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" - }, - "peerDependencies": { - "rxjs": "^6.5.3 || ^7.4.0", - "zone.js": "~0.14.10" - } - }, - "node_modules/@angular/forms": { - "version": "18.2.7", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-18.2.7.tgz", - "integrity": "sha512-WO3c9/OA7ekBnDBgmvi5TlHshOt5S4NREIP+/VVyuRgg28BwUWyO/Nqh19nguE1UNNRt6OMLkT6NSV2ewhcXUg==", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" - }, - "peerDependencies": { - "@angular/common": "18.2.7", - "@angular/core": "18.2.7", - "@angular/platform-browser": "18.2.7", - "rxjs": "^6.5.3 || ^7.4.0" - } - }, - "node_modules/@angular/platform-browser": { - "version": "18.2.7", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-18.2.7.tgz", - "integrity": "sha512-xgj2DH/isFrMZ73dJJm89NRnWBI3AHtugQrZbIapkKBdEt/C1o4SR2W2cV4mPb9o+ELnWurfrxFt9o/q2vnVLw==", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" - }, - "peerDependencies": { - "@angular/animations": "18.2.7", - "@angular/common": "18.2.7", - "@angular/core": "18.2.7" - }, - "peerDependenciesMeta": { - "@angular/animations": { - "optional": true - } - } - }, - "node_modules/@angular/router": { - "version": "18.2.7", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-18.2.7.tgz", - "integrity": "sha512-TXE8Aw63hDp3PEaNu4B1DMNvlS0uCzs36o/OSCCmewmLnzyJygkgi4jeEj20FsWPAQOUj5g5tnCYgxz1IRrCUg==", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" - }, - "peerDependencies": { - "@angular/common": "18.2.7", - "@angular/core": "18.2.7", - "@angular/platform-browser": "18.2.7", - "rxjs": "^6.5.3 || ^7.4.0" - } - }, - "node_modules/@kurkle/color": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.2.tgz", - "integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==", - "peer": true - }, - "node_modules/@ngneat/until-destroy": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/@ngneat/until-destroy/-/until-destroy-10.0.0.tgz", - "integrity": "sha512-xXFAabQ4YVJ82LYxdgUlaKZyR3dSbxqG3woSyaclzxfCgWMEDweCcM/GGYbNiHJa0WwklI98RXHvca+UyCxpeg==", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "peerDependencies": { - "@angular/core": ">=13", - "rxjs": "^6.4.0 || ^7.0.0" - } - }, - "node_modules/@ngx-translate/core": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/@ngx-translate/core/-/core-15.0.0.tgz", - "integrity": "sha512-Am5uiuR0bOOxyoercDnAA3rJVizo4RRqJHo8N3RqJ+XfzVP/I845yEnMADykOHvM6HkVm4SZSnJBOiz0Anx5BA==", - "peer": true, - "engines": { - "node": "^16.13.0 || >=18.10.0" - }, - "peerDependencies": { - "@angular/common": ">=16.0.0", - "@angular/core": ">=16.0.0", - "rxjs": "^6.5.5 || ^7.4.0" - } - }, - "node_modules/@onecx/accelerator": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/@onecx/accelerator/-/accelerator-5.13.0.tgz", - "integrity": "sha512-pvO/+Az2+D0I1u1BauLE8DWlkmRXOU6dASomVn/8SSD0zaL2WEaSevPHK13N3WTlBRYGPJ+gHt1CyfHN+mfdOw==", - "peer": true, - "peerDependencies": { - "rxjs": "^7.8.1", - "tslib": "^2.6.3" - } - }, - "node_modules/@onecx/angular-integration-interface": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/@onecx/angular-integration-interface/-/angular-integration-interface-5.13.0.tgz", - "integrity": "sha512-FhMnlh3r1GUMysxyAkJYHBjroiL9kDUb40MMtTqu/0eTXVNQNHCkrDhhj+MzYs0s19WjgdLFuJjrGq3L6h15wA==", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "peerDependencies": { - "@angular/core": "^18.0.5", - "@onecx/integration-interface": "~5", - "rxjs": "~7.8.1" - } - }, - "node_modules/@onecx/integration-interface": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/@onecx/integration-interface/-/integration-interface-5.13.0.tgz", - "integrity": "sha512-hIT7Zq4GHps/IhwtWRtuFwiqpKCqEHVVh6HdFqAm3xE//ee6Npq92ArJTsZMoCp5huVhXvAdfs4YGdPglEupfg==", - "peer": true, - "peerDependencies": { - "@onecx/accelerator": "^5", - "rxjs": "^7.8.1", - "tslib": "^2.6.3" - } - }, - "node_modules/chart.js": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.4.tgz", - "integrity": "sha512-emICKGBABnxhMjUjlYRR12PmOXhJ2eJjEHL2/dZlWjxRAZT1D8xplLFq5M0tMQK8ja+wBS/tuVEJB5C6r7VxJA==", - "peer": true, - "dependencies": { - "@kurkle/color": "^0.3.0" - }, - "engines": { - "pnpm": ">=8" - } - }, - "node_modules/d3-color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-interpolate": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", - "peer": true, - "dependencies": { - "d3-color": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-scale-chromatic": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", - "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", - "peer": true, - "dependencies": { - "d3-color": "1 - 3", - "d3-interpolate": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "optional": true, - "peer": true, - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", - "optional": true, - "peer": true, - "dependencies": { - "entities": "^4.4.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/primeng": { - "version": "17.18.11", - "resolved": "https://registry.npmjs.org/primeng/-/primeng-17.18.11.tgz", - "integrity": "sha512-LzV0fFZmb3GdnaRqi1+GP+RPtW0a+jztL5pH1zRWY7+7pyQ0n1YNyTXzmqVcdks/CmoyjNhutWEmexwi6vFVeA==", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "peerDependencies": { - "@angular/common": "^17.0.0 || ^18.0.0", - "@angular/core": "^17.0.0 || ^18.0.0", - "@angular/forms": "^17.0.0 || ^18.0.0", - "rxjs": "^6.0.0 || ^7.8.1", - "zone.js": "~0.14.0" - } - }, - "node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "peer": true, - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "peer": true - }, - "node_modules/zone.js": { - "version": "0.14.10", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.14.10.tgz", - "integrity": "sha512-YGAhaO7J5ywOXW6InXNlLmfU194F8lVgu7bRntUF3TiG8Y3nBK0x1UJJuHUP/e8IyihkjCYqhCScpSwnlaSRkQ==", - "peer": true - } - } -} From df50eab42cec9bac7eb091b22275846d8f26b956 Mon Sep 17 00:00:00 2001 From: Maximilian Ollendorff Date: Wed, 9 Oct 2024 10:34:08 +0200 Subject: [PATCH 3/9] feat: update translation --- libs/angular-accelerator/assets/i18n/de.json | 5 +++-- libs/angular-accelerator/assets/i18n/en.json | 5 +++-- .../data-list-grid-sorting.component.html | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/libs/angular-accelerator/assets/i18n/de.json b/libs/angular-accelerator/assets/i18n/de.json index 0b43e64f..6d4f2c55 100644 --- a/libs/angular-accelerator/assets/i18n/de.json +++ b/libs/angular-accelerator/assets/i18n/de.json @@ -40,7 +40,8 @@ "OCX_LIST_GRID_SORT": { "DROPDOWN": { "PLACEHOLDER": "Sortierung auswählen", - "ARIA_LABEL": "Sortieren nach" + "ARIA_LABEL": "Sortieren nach", + "LABEL": "Sortieren nach" }, "TOGGLE_BUTTON": { "ASCENDING_TOOLTIP": "Aufsteigend", @@ -157,4 +158,4 @@ "TITLE": "Die Daten konnten nicht geladen werden.", "MESSAGE": "Dies kann folgende Gründe haben: \n -Die Daten existieren nicht oder nicht mehr.\n - Die Daten konnten aufgrund eines Fehlers im System nicht geladen werden.\n - Ihnen fehlt die nötige Berechtigung um die Daten zu laden.\n Bitte kontaktieren Sie den Support, wenn Sie glauben, dass es sich hierbei um einen Fehler des Systems handelt." } -} \ No newline at end of file +} diff --git a/libs/angular-accelerator/assets/i18n/en.json b/libs/angular-accelerator/assets/i18n/en.json index a0b5c98c..fe94cc18 100644 --- a/libs/angular-accelerator/assets/i18n/en.json +++ b/libs/angular-accelerator/assets/i18n/en.json @@ -40,7 +40,8 @@ "OCX_LIST_GRID_SORT": { "DROPDOWN": { "PLACEHOLDER": "Select sorting", - "ARIA_LABEL": "Sort by" + "ARIA_LABEL": "Sort by", + "LABEL": "Sort by" }, "TOGGLE_BUTTON": { "ASCENDING_TOOLTIP": "Ascending", @@ -157,4 +158,4 @@ "TITLE": "The data could not be loaded.", "MESSAGE": "This may have the following reasons:\n The data does not exist or no longer exists.\n The data could not be loaded due to an error in the system.\n You do not have the necessary permission to load the data.\n Please contact the support if you think this happened due to a system error." } -} \ No newline at end of file +} diff --git a/libs/angular-accelerator/src/lib/components/data-list-grid-sorting/data-list-grid-sorting.component.html b/libs/angular-accelerator/src/lib/components/data-list-grid-sorting/data-list-grid-sorting.component.html index 0fe00ba6..670bc8ab 100644 --- a/libs/angular-accelerator/src/lib/components/data-list-grid-sorting/data-list-grid-sorting.component.html +++ b/libs/angular-accelerator/src/lib/components/data-list-grid-sorting/data-list-grid-sorting.component.html @@ -14,7 +14,7 @@ {{ item?.columnName ? (item.columnName | translate) : ''}} - + Date: Wed, 9 Oct 2024 10:37:02 +0200 Subject: [PATCH 4/9] fix: remove package.lock file --- .../package-lock.json | 1226 ----------------- 1 file changed, 1226 deletions(-) delete mode 100644 libs/portal-integration-angular/package-lock.json diff --git a/libs/portal-integration-angular/package-lock.json b/libs/portal-integration-angular/package-lock.json deleted file mode 100644 index dd0419f9..00000000 --- a/libs/portal-integration-angular/package-lock.json +++ /dev/null @@ -1,1226 +0,0 @@ -{ - "name": "@onecx/portal-integration-angular", - "version": "5.13.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "@onecx/portal-integration-angular", - "version": "5.13.0", - "license": "Apache-2.0", - "peerDependencies": { - "@angular-architects/module-federation": "^18.0.4", - "@angular/animations": "^18.0.5", - "@angular/cdk": "^18.0.6", - "@angular/common": "^18.0.5", - "@angular/core": "^18.0.5", - "@angular/forms": "^18.0.5", - "@angular/platform-browser": "^18.0.5", - "@angular/router": "^18.0.5", - "@ngneat/until-destroy": "^10.0.0", - "@ngrx/effects": "^18.0.1", - "@ngrx/operators": "^18.0.1", - "@ngrx/router-store": "^18.0.1", - "@ngrx/store": "^18.0.1", - "@ngx-translate/core": "^15.0.0", - "@ngx-translate/http-loader": "^8.0.0", - "@onecx/angular-accelerator": "^5", - "@onecx/angular-integration-interface": "^5", - "@onecx/angular-testing": "^5", - "@onecx/integration-interface": "^5", - "fast-deep-equal": "^3.1.3", - "msw": "^2.3.1", - "primeng": "^17.18.6", - "rxjs": "~7.8.1", - "zod": "^3.23.8" - } - }, - "node_modules/@angular-architects/module-federation": { - "version": "18.0.6", - "resolved": "https://registry.npmjs.org/@angular-architects/module-federation/-/module-federation-18.0.6.tgz", - "integrity": "sha512-uI7Yqs8OM4leakD7sdnk2Pt+bIt9nLGbo6xcYGpLoTWpS0OnCQRQJinNCynAL+F+4NEzNToeNSXXKgffDuQtCQ==", - "peer": true, - "dependencies": { - "@angular-architects/module-federation-runtime": "18.0.6", - "callsite": "^1.0.0", - "node-fetch": "^2.6.7", - "semver": "^7.3.5", - "word-wrap": "^1.2.3" - } - }, - "node_modules/@angular-architects/module-federation-runtime": { - "version": "18.0.6", - "resolved": "https://registry.npmjs.org/@angular-architects/module-federation-runtime/-/module-federation-runtime-18.0.6.tgz", - "integrity": "sha512-rOpuNxg48Lk9ZrNRMcCvMu1D3MhnKPqLw7xhtX8Qva5BOuaQ3gMtBZI4NM5eI8WqPlZNbzVxMNrVzSKaxDApZQ==", - "peer": true, - "dependencies": { - "tslib": "^2.0.0" - }, - "peerDependencies": { - "@angular/common": ">=18.0.0", - "@angular/core": ">=18.0.0" - } - }, - "node_modules/@angular/animations": { - "version": "18.2.7", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-18.2.7.tgz", - "integrity": "sha512-5B7qD1K+kKOf9lgJT4VNMft3IK2BnRHjN1S6l38ywzQ/nxpmCG7f+qKAAU6CpCywhNUBeXW0hVXTMuMNPVOcQQ==", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" - }, - "peerDependencies": { - "@angular/core": "18.2.7" - } - }, - "node_modules/@angular/cdk": { - "version": "18.2.6", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-18.2.6.tgz", - "integrity": "sha512-Gfq/iv4zhlKYpdQkDaBRwxI71NHNUHM1Cs1XhnZ0/oFct5HXvSv1RHRGTKqBJLLACaAPzZKXJ/UglLoyO5CNiQ==", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "optionalDependencies": { - "parse5": "^7.1.2" - }, - "peerDependencies": { - "@angular/common": "^18.0.0 || ^19.0.0", - "@angular/core": "^18.0.0 || ^19.0.0", - "rxjs": "^6.5.3 || ^7.4.0" - } - }, - "node_modules/@angular/common": { - "version": "18.2.7", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-18.2.7.tgz", - "integrity": "sha512-5vDBmBR2JcIxHVEDunKXNU+T+OvTGiHZTSo35GFOHJxKFgX5g6+0tJBZunK04oBZGbJQUmp3pg2kMvuKKjZnkQ==", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" - }, - "peerDependencies": { - "@angular/core": "18.2.7", - "rxjs": "^6.5.3 || ^7.4.0" - } - }, - "node_modules/@angular/core": { - "version": "18.2.7", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-18.2.7.tgz", - "integrity": "sha512-hLOxgxLiyWm9iVHBsUsJfx1hDsXWZnfJBlr+N7cev53f0CDoPfbshqq6KV+JFqXFDguzR9dKHm1ewT1jK3e6Tw==", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" - }, - "peerDependencies": { - "rxjs": "^6.5.3 || ^7.4.0", - "zone.js": "~0.14.10" - } - }, - "node_modules/@angular/forms": { - "version": "18.2.7", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-18.2.7.tgz", - "integrity": "sha512-WO3c9/OA7ekBnDBgmvi5TlHshOt5S4NREIP+/VVyuRgg28BwUWyO/Nqh19nguE1UNNRt6OMLkT6NSV2ewhcXUg==", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" - }, - "peerDependencies": { - "@angular/common": "18.2.7", - "@angular/core": "18.2.7", - "@angular/platform-browser": "18.2.7", - "rxjs": "^6.5.3 || ^7.4.0" - } - }, - "node_modules/@angular/platform-browser": { - "version": "18.2.7", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-18.2.7.tgz", - "integrity": "sha512-xgj2DH/isFrMZ73dJJm89NRnWBI3AHtugQrZbIapkKBdEt/C1o4SR2W2cV4mPb9o+ELnWurfrxFt9o/q2vnVLw==", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" - }, - "peerDependencies": { - "@angular/animations": "18.2.7", - "@angular/common": "18.2.7", - "@angular/core": "18.2.7" - }, - "peerDependenciesMeta": { - "@angular/animations": { - "optional": true - } - } - }, - "node_modules/@angular/router": { - "version": "18.2.7", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-18.2.7.tgz", - "integrity": "sha512-TXE8Aw63hDp3PEaNu4B1DMNvlS0uCzs36o/OSCCmewmLnzyJygkgi4jeEj20FsWPAQOUj5g5tnCYgxz1IRrCUg==", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" - }, - "peerDependencies": { - "@angular/common": "18.2.7", - "@angular/core": "18.2.7", - "@angular/platform-browser": "18.2.7", - "rxjs": "^6.5.3 || ^7.4.0" - } - }, - "node_modules/@bundled-es-modules/cookie": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@bundled-es-modules/cookie/-/cookie-2.0.0.tgz", - "integrity": "sha512-Or6YHg/kamKHpxULAdSqhGqnWFneIXu1NKvvfBBzKGwpVsYuFIQ5aBPHDnnoR3ghW1nvSkALd+EF9iMtY7Vjxw==", - "peer": true, - "dependencies": { - "cookie": "^0.5.0" - } - }, - "node_modules/@bundled-es-modules/statuses": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@bundled-es-modules/statuses/-/statuses-1.0.1.tgz", - "integrity": "sha512-yn7BklA5acgcBr+7w064fGV+SGIFySjCKpqjcWgBAIfrAkY+4GQTJJHQMeT3V/sgz23VTEVV8TtOmkvJAhFVfg==", - "peer": true, - "dependencies": { - "statuses": "^2.0.1" - } - }, - "node_modules/@bundled-es-modules/tough-cookie": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@bundled-es-modules/tough-cookie/-/tough-cookie-0.1.6.tgz", - "integrity": "sha512-dvMHbL464C0zI+Yqxbz6kZ5TOEp7GLW+pry/RWndAR8MJQAXZ2rPmIs8tziTZjeIyhSNZgZbCePtfSbdWqStJw==", - "peer": true, - "dependencies": { - "@types/tough-cookie": "^4.0.5", - "tough-cookie": "^4.1.4" - } - }, - "node_modules/@inquirer/confirm": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-3.2.0.tgz", - "integrity": "sha512-oOIwPs0Dvq5220Z8lGL/6LHRTEr9TgLHmiI99Rj1PJ1p1czTys+olrgBqZk4E2qC0YTzeHprxSQmoHioVdJ7Lw==", - "peer": true, - "dependencies": { - "@inquirer/core": "^9.1.0", - "@inquirer/type": "^1.5.3" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@inquirer/core": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-9.2.1.tgz", - "integrity": "sha512-F2VBt7W/mwqEU4bL0RnHNZmC/OxzNx9cOYxHqnXX3MP6ruYvZUZAW9imgN9+h/uBT/oP8Gh888J2OZSbjSeWcg==", - "peer": true, - "dependencies": { - "@inquirer/figures": "^1.0.6", - "@inquirer/type": "^2.0.0", - "@types/mute-stream": "^0.0.4", - "@types/node": "^22.5.5", - "@types/wrap-ansi": "^3.0.0", - "ansi-escapes": "^4.3.2", - "cli-width": "^4.1.0", - "mute-stream": "^1.0.0", - "signal-exit": "^4.1.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^6.2.0", - "yoctocolors-cjs": "^2.1.2" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@inquirer/core/node_modules/@inquirer/type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-2.0.0.tgz", - "integrity": "sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag==", - "peer": true, - "dependencies": { - "mute-stream": "^1.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@inquirer/figures": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.6.tgz", - "integrity": "sha512-yfZzps3Cso2UbM7WlxKwZQh2Hs6plrbjs1QnzQDZhK2DgyCo6D8AaHps9olkNcUFlcYERMqU3uJSp1gmy3s/qQ==", - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@inquirer/type": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-1.5.5.tgz", - "integrity": "sha512-MzICLu4yS7V8AA61sANROZ9vT1H3ooca5dSmI1FjZkzq7o/koMsRfQSzRtFo+F3Ao4Sf1C0bpLKejpKB/+j6MA==", - "peer": true, - "dependencies": { - "mute-stream": "^1.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@kurkle/color": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@kurkle/color/-/color-0.3.2.tgz", - "integrity": "sha512-fuscdXJ9G1qb7W8VdHi+IwRqij3lBkosAm4ydQtEmbY58OzHXqQhvlxqEkoz0yssNVn38bcpRWgA9PP+OGoisw==", - "peer": true - }, - "node_modules/@mswjs/interceptors": { - "version": "0.35.9", - "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.35.9.tgz", - "integrity": "sha512-SSnyl/4ni/2ViHKkiZb8eajA/eN1DNFaHjhGiLUdZvDz6PKF4COSf/17xqSz64nOo2Ia29SA6B2KNCsyCbVmaQ==", - "peer": true, - "dependencies": { - "@open-draft/deferred-promise": "^2.2.0", - "@open-draft/logger": "^0.3.0", - "@open-draft/until": "^2.0.0", - "is-node-process": "^1.2.0", - "outvariant": "^1.4.3", - "strict-event-emitter": "^0.5.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@ngneat/until-destroy": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/@ngneat/until-destroy/-/until-destroy-10.0.0.tgz", - "integrity": "sha512-xXFAabQ4YVJ82LYxdgUlaKZyR3dSbxqG3woSyaclzxfCgWMEDweCcM/GGYbNiHJa0WwklI98RXHvca+UyCxpeg==", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "peerDependencies": { - "@angular/core": ">=13", - "rxjs": "^6.4.0 || ^7.0.0" - } - }, - "node_modules/@ngrx/effects": { - "version": "18.0.2", - "resolved": "https://registry.npmjs.org/@ngrx/effects/-/effects-18.0.2.tgz", - "integrity": "sha512-YojXcOD9Lsq4kl2HCjENccyUM/mOlgBdtddsg9j/ojzSUgu3ZuBVKLN3atrL2TJYkbMX1MN0RzafSkL3TPGFIA==", - "peer": true, - "dependencies": { - "@ngrx/operators": "18.0.1", - "tslib": "^2.0.0" - }, - "peerDependencies": { - "@angular/core": "^18.0.0", - "@ngrx/store": "18.0.2", - "rxjs": "^6.5.3 || ^7.5.0" - } - }, - "node_modules/@ngrx/effects/node_modules/@ngrx/operators": { - "version": "18.0.1", - "resolved": "https://registry.npmjs.org/@ngrx/operators/-/operators-18.0.1.tgz", - "integrity": "sha512-M+QMrHNKgcuiLaRGZxJ4aQi5/OCRfKC4+T/63dsHyLFZ53/FFpF6a/ytSO1Q+tzOplZ5o99S+i8FVaZqNQ3LmQ==", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "peerDependencies": { - "rxjs": "^6.5.3 || ^7.4.0" - } - }, - "node_modules/@ngrx/operators": { - "version": "18.0.2", - "resolved": "https://registry.npmjs.org/@ngrx/operators/-/operators-18.0.2.tgz", - "integrity": "sha512-4dyNkVKBw9ZqECMJu6bT2t21p3ANaMC+ZkcfiBfv5OUEFtB9HhN5uCem9tcgYeNBK8XQFA7/1tzd1T3KaiBY8A==", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "peerDependencies": { - "rxjs": "^6.5.3 || ^7.4.0" - } - }, - "node_modules/@ngrx/router-store": { - "version": "18.0.2", - "resolved": "https://registry.npmjs.org/@ngrx/router-store/-/router-store-18.0.2.tgz", - "integrity": "sha512-jUrQ/uJJ53x8O1XbN2YxH2GpRREZlwS5gRxlCoc4fWL4Us/uS1/K6+QfRmKBPtpTKBIixqsOb+dIUV5iwBrivA==", - "peer": true, - "dependencies": { - "tslib": "^2.0.0" - }, - "peerDependencies": { - "@angular/common": "^18.0.0", - "@angular/core": "^18.0.0", - "@angular/router": "^18.0.0", - "@ngrx/store": "18.0.2", - "rxjs": "^6.5.3 || ^7.5.0" - } - }, - "node_modules/@ngrx/store": { - "version": "18.0.2", - "resolved": "https://registry.npmjs.org/@ngrx/store/-/store-18.0.2.tgz", - "integrity": "sha512-ajwv0+njsO4vzArp9esnFvs1wyUb1U1W8E8LSCKrcW2hWWo9o1Pezj+JRsdQwatxHfrrPFuTDyajsl6GQM/JSA==", - "peer": true, - "dependencies": { - "tslib": "^2.0.0" - }, - "peerDependencies": { - "@angular/core": "^18.0.0", - "rxjs": "^6.5.3 || ^7.5.0" - } - }, - "node_modules/@ngx-translate/core": { - "version": "15.0.0", - "resolved": "https://registry.npmjs.org/@ngx-translate/core/-/core-15.0.0.tgz", - "integrity": "sha512-Am5uiuR0bOOxyoercDnAA3rJVizo4RRqJHo8N3RqJ+XfzVP/I845yEnMADykOHvM6HkVm4SZSnJBOiz0Anx5BA==", - "peer": true, - "engines": { - "node": "^16.13.0 || >=18.10.0" - }, - "peerDependencies": { - "@angular/common": ">=16.0.0", - "@angular/core": ">=16.0.0", - "rxjs": "^6.5.5 || ^7.4.0" - } - }, - "node_modules/@ngx-translate/http-loader": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@ngx-translate/http-loader/-/http-loader-8.0.0.tgz", - "integrity": "sha512-SFMsdUcmHF5OdZkL1CHEoSAwbP5EbAOPTLLboOCRRoOg21P4GJx+51jxGdJeGve6LSKLf4Pay7BkTwmE6vxYlg==", - "peer": true, - "engines": { - "node": "^16.13.0 || >=18.10.0" - }, - "peerDependencies": { - "@angular/common": ">=16.0.0", - "@angular/core": ">=16.0.0", - "@ngx-translate/core": ">=15.0.0", - "rxjs": "^6.5.5 || ^7.4.0" - } - }, - "node_modules/@onecx/accelerator": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/@onecx/accelerator/-/accelerator-5.13.0.tgz", - "integrity": "sha512-pvO/+Az2+D0I1u1BauLE8DWlkmRXOU6dASomVn/8SSD0zaL2WEaSevPHK13N3WTlBRYGPJ+gHt1CyfHN+mfdOw==", - "peer": true, - "peerDependencies": { - "rxjs": "^7.8.1", - "tslib": "^2.6.3" - } - }, - "node_modules/@onecx/angular-accelerator": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/@onecx/angular-accelerator/-/angular-accelerator-5.13.0.tgz", - "integrity": "sha512-qfKHQLzs2QEIjb2KMLokYBeUAFOOV4TW/Idl80y/mi+8adIZwwjCqCxHCtBQ6NhBL7mnCgV3cZaPf5D4qO2Itg==", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "peerDependencies": { - "@angular/cdk": "^18.0.6", - "@angular/common": "^18.0.5", - "@angular/core": "^18.0.5", - "@angular/forms": "^18.0.5", - "@angular/platform-browser": "^18.0.5", - "@angular/router": "^18.0.5", - "@ngneat/until-destroy": "^10.0.0", - "@ngx-translate/core": "^15.0.0", - "@onecx/angular-integration-interface": "^5", - "@onecx/integration-interface": "^5", - "chart.js": "^4.4.3", - "d3-scale-chromatic": "^3.1.0", - "primeng": "^17.18.6", - "rxjs": "~7.8.1" - } - }, - "node_modules/@onecx/angular-integration-interface": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/@onecx/angular-integration-interface/-/angular-integration-interface-5.13.0.tgz", - "integrity": "sha512-FhMnlh3r1GUMysxyAkJYHBjroiL9kDUb40MMtTqu/0eTXVNQNHCkrDhhj+MzYs0s19WjgdLFuJjrGq3L6h15wA==", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "peerDependencies": { - "@angular/core": "^18.0.5", - "@onecx/integration-interface": "~5", - "rxjs": "~7.8.1" - } - }, - "node_modules/@onecx/angular-testing": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/@onecx/angular-testing/-/angular-testing-5.13.0.tgz", - "integrity": "sha512-bm0ea9pggyTM9l5dOuQ4p/VYOCjXU2/s+j8edND/U/WMGdrgMttsUEwuoreXLrC4BTQYCA+E6iWbZDAgLI7z6Q==", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "peerDependencies": { - "@angular/cdk": "^18.0.5", - "primeng": "^17.18.6" - } - }, - "node_modules/@onecx/integration-interface": { - "version": "5.13.0", - "resolved": "https://registry.npmjs.org/@onecx/integration-interface/-/integration-interface-5.13.0.tgz", - "integrity": "sha512-hIT7Zq4GHps/IhwtWRtuFwiqpKCqEHVVh6HdFqAm3xE//ee6Npq92ArJTsZMoCp5huVhXvAdfs4YGdPglEupfg==", - "peer": true, - "peerDependencies": { - "@onecx/accelerator": "^5", - "rxjs": "^7.8.1", - "tslib": "^2.6.3" - } - }, - "node_modules/@open-draft/deferred-promise": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz", - "integrity": "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==", - "peer": true - }, - "node_modules/@open-draft/logger": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@open-draft/logger/-/logger-0.3.0.tgz", - "integrity": "sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==", - "peer": true, - "dependencies": { - "is-node-process": "^1.2.0", - "outvariant": "^1.4.0" - } - }, - "node_modules/@open-draft/until": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-2.1.0.tgz", - "integrity": "sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==", - "peer": true - }, - "node_modules/@types/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", - "peer": true - }, - "node_modules/@types/mute-stream": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@types/mute-stream/-/mute-stream-0.0.4.tgz", - "integrity": "sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==", - "peer": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/node": { - "version": "22.7.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.4.tgz", - "integrity": "sha512-y+NPi1rFzDs1NdQHHToqeiX2TIS79SWEAw9GYhkkx8bD0ChpfqC+n2j5OXOCpzfojBEBt6DnEnnG9MY0zk1XLg==", - "peer": true, - "dependencies": { - "undici-types": "~6.19.2" - } - }, - "node_modules/@types/statuses": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@types/statuses/-/statuses-2.0.5.tgz", - "integrity": "sha512-jmIUGWrAiwu3dZpxntxieC+1n/5c3mjrImkmOSQ2NC5uP6cYO4aAZDdSmRcI5C1oiTmqlZGHC+/NmJrKogbP5A==", - "peer": true - }, - "node_modules/@types/tough-cookie": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", - "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", - "peer": true - }, - "node_modules/@types/wrap-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz", - "integrity": "sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==", - "peer": true - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "peer": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "peer": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/callsite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", - "integrity": "sha512-0vdNRFXn5q+dtOqjfFtmtlI9N2eVZ7LMyEV2iKC5mEEFvSg/69Ml6b/WU2qF8W1nLRa0wiSrDT3Y5jOHZCwKPQ==", - "peer": true, - "engines": { - "node": "*" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chart.js": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-4.4.4.tgz", - "integrity": "sha512-emICKGBABnxhMjUjlYRR12PmOXhJ2eJjEHL2/dZlWjxRAZT1D8xplLFq5M0tMQK8ja+wBS/tuVEJB5C6r7VxJA==", - "peer": true, - "dependencies": { - "@kurkle/color": "^0.3.0" - }, - "engines": { - "pnpm": ">=8" - } - }, - "node_modules/cli-width": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", - "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", - "peer": true, - "engines": { - "node": ">= 12" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "peer": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/cliui/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "peer": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "peer": true - }, - "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "peer": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/d3-color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-interpolate": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", - "peer": true, - "dependencies": { - "d3-color": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-scale-chromatic": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", - "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", - "peer": true, - "dependencies": { - "d3-color": "1 - 3", - "d3-interpolate": "1 - 3" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "peer": true - }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "optional": true, - "peer": true, - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "peer": true - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "peer": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/graphql": { - "version": "16.9.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.9.0.tgz", - "integrity": "sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==", - "peer": true, - "engines": { - "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/headers-polyfill": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-4.0.3.tgz", - "integrity": "sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==", - "peer": true - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-node-process": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-node-process/-/is-node-process-1.2.0.tgz", - "integrity": "sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==", - "peer": true - }, - "node_modules/msw": { - "version": "2.4.9", - "resolved": "https://registry.npmjs.org/msw/-/msw-2.4.9.tgz", - "integrity": "sha512-1m8xccT6ipN4PTqLinPwmzhxQREuxaEJYdx4nIbggxP8aM7r1e71vE7RtOUSQoAm1LydjGfZKy7370XD/tsuYg==", - "hasInstallScript": true, - "peer": true, - "dependencies": { - "@bundled-es-modules/cookie": "^2.0.0", - "@bundled-es-modules/statuses": "^1.0.1", - "@bundled-es-modules/tough-cookie": "^0.1.6", - "@inquirer/confirm": "^3.0.0", - "@mswjs/interceptors": "^0.35.8", - "@open-draft/until": "^2.1.0", - "@types/cookie": "^0.6.0", - "@types/statuses": "^2.0.4", - "chalk": "^4.1.2", - "graphql": "^16.8.1", - "headers-polyfill": "^4.0.2", - "is-node-process": "^1.2.0", - "outvariant": "^1.4.2", - "path-to-regexp": "^6.3.0", - "strict-event-emitter": "^0.5.1", - "type-fest": "^4.9.0", - "yargs": "^17.7.2" - }, - "bin": { - "msw": "cli/index.js" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/mswjs" - }, - "peerDependencies": { - "typescript": ">= 4.8.x" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/mute-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", - "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", - "peer": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "peer": true, - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/outvariant": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.3.tgz", - "integrity": "sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==", - "peer": true - }, - "node_modules/parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", - "optional": true, - "peer": true, - "dependencies": { - "entities": "^4.4.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/path-to-regexp": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", - "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", - "peer": true - }, - "node_modules/primeng": { - "version": "17.18.11", - "resolved": "https://registry.npmjs.org/primeng/-/primeng-17.18.11.tgz", - "integrity": "sha512-LzV0fFZmb3GdnaRqi1+GP+RPtW0a+jztL5pH1zRWY7+7pyQ0n1YNyTXzmqVcdks/CmoyjNhutWEmexwi6vFVeA==", - "peer": true, - "dependencies": { - "tslib": "^2.3.0" - }, - "peerDependencies": { - "@angular/common": "^17.0.0 || ^18.0.0", - "@angular/core": "^17.0.0 || ^18.0.0", - "@angular/forms": "^17.0.0 || ^18.0.0", - "rxjs": "^6.0.0 || ^7.8.1", - "zone.js": "~0.14.0" - } - }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "peer": true - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "peer": true - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "peer": true - }, - "node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", - "peer": true, - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", - "peer": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "peer": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "peer": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/strict-event-emitter": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz", - "integrity": "sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==", - "peer": true - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "peer": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "peer": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tough-cookie": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", - "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", - "peer": true, - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "peer": true - }, - "node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "peer": true - }, - "node_modules/type-fest": { - "version": "4.26.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.26.1.tgz", - "integrity": "sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==", - "peer": true, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", - "peer": true - }, - "node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "peer": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "peer": true, - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "peer": true - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "peer": true, - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "peer": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "peer": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "peer": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "peer": true, - "engines": { - "node": ">=12" - } - }, - "node_modules/yoctocolors-cjs": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz", - "integrity": "sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==", - "peer": true, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/zod": { - "version": "3.23.8", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", - "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", - "peer": true, - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - }, - "node_modules/zone.js": { - "version": "0.14.10", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.14.10.tgz", - "integrity": "sha512-YGAhaO7J5ywOXW6InXNlLmfU194F8lVgu7bRntUF3TiG8Y3nBK0x1UJJuHUP/e8IyihkjCYqhCScpSwnlaSRkQ==", - "peer": true - } - } -} From 8a042112158e8aefc829f2e56ee7537ae272548a Mon Sep 17 00:00:00 2001 From: Maximilian Ollendorff Date: Wed, 9 Oct 2024 10:58:14 +0200 Subject: [PATCH 5/9] feat: remove migrated files from pia --- .../content-container.component.html | 3 - .../content-container.component.spec.ts | 50 ------------ .../content-container.component.ts | 22 ------ .../components/content/content.component.html | 3 - .../content/content.component.spec.ts | 45 ----------- .../components/content/content.component.ts | 15 ---- .../lifecycle/lifecycle.component.html | 13 ---- .../lifecycle/lifecycle.component.spec.ts | 76 ------------------- .../lifecycle/lifecycle.component.ts | 19 ----- .../directives/content-container.directive.ts | 56 -------------- .../lib/core/directives/content.directive.ts | 60 --------------- .../testing/content-container.harness.ts | 24 ------ .../testing/content.harness.ts | 41 ---------- .../testing/lifecycle.harness.ts | 8 -- 14 files changed, 435 deletions(-) delete mode 100644 libs/portal-integration-angular/src/lib/core/components/content-container/content-container.component.html delete mode 100644 libs/portal-integration-angular/src/lib/core/components/content-container/content-container.component.spec.ts delete mode 100644 libs/portal-integration-angular/src/lib/core/components/content-container/content-container.component.ts delete mode 100644 libs/portal-integration-angular/src/lib/core/components/content/content.component.html delete mode 100644 libs/portal-integration-angular/src/lib/core/components/content/content.component.spec.ts delete mode 100644 libs/portal-integration-angular/src/lib/core/components/content/content.component.ts delete mode 100644 libs/portal-integration-angular/src/lib/core/components/lifecycle/lifecycle.component.html delete mode 100644 libs/portal-integration-angular/src/lib/core/components/lifecycle/lifecycle.component.spec.ts delete mode 100644 libs/portal-integration-angular/src/lib/core/components/lifecycle/lifecycle.component.ts delete mode 100644 libs/portal-integration-angular/src/lib/core/directives/content-container.directive.ts delete mode 100644 libs/portal-integration-angular/src/lib/core/directives/content.directive.ts delete mode 100644 libs/portal-integration-angular/testing/content-container.harness.ts delete mode 100644 libs/portal-integration-angular/testing/content.harness.ts delete mode 100644 libs/portal-integration-angular/testing/lifecycle.harness.ts diff --git a/libs/portal-integration-angular/src/lib/core/components/content-container/content-container.component.html b/libs/portal-integration-angular/src/lib/core/components/content-container/content-container.component.html deleted file mode 100644 index a6c4a250..00000000 --- a/libs/portal-integration-angular/src/lib/core/components/content-container/content-container.component.html +++ /dev/null @@ -1,3 +0,0 @@ -
- -
\ No newline at end of file diff --git a/libs/portal-integration-angular/src/lib/core/components/content-container/content-container.component.spec.ts b/libs/portal-integration-angular/src/lib/core/components/content-container/content-container.component.spec.ts deleted file mode 100644 index 12e8476c..00000000 --- a/libs/portal-integration-angular/src/lib/core/components/content-container/content-container.component.spec.ts +++ /dev/null @@ -1,50 +0,0 @@ -import { OcxContentContainerHarness } from '../../../../../testing/content-container.harness' -import { ComponentFixture, TestBed } from '@angular/core/testing' -import { OcxContentContainerComponent } from './content-container.component' -import { OcxContentContainerDirective } from '../../directives/content-container.directive' -import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed' - -describe('OcxContentContainerComponent', () => { - let component: OcxContentContainerComponent - let fixture: ComponentFixture - let ocxContentContainerHarness: OcxContentContainerHarness - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [OcxContentContainerComponent, OcxContentContainerDirective], - }).compileComponents() - - fixture = TestBed.createComponent(OcxContentContainerComponent) - component = fixture.componentInstance - ocxContentContainerHarness = await TestbedHarnessEnvironment.harnessForFixture(fixture, OcxContentContainerHarness) - }) - - it('should create', () => { - expect(component).toBeTruthy() - }) - - it('should render a horizontal layout container with md breakpoint by default', async () => { - const expectedClasses = ['flex', 'gap-3', 'flex-column', 'md:flex-row'] - expect(await ocxContentContainerHarness.getLayoutClasses()).toEqual(expectedClasses) - expect(await ocxContentContainerHarness.getLayout()).toEqual('horizontal') - expect(await ocxContentContainerHarness.getBreakpoint()).toEqual('md') - }) - - it('should render a horizontal layout container while respecting a specified breakpoint', async () => { - component.breakpoint = 'lg' - - const expectedClassesLG = ['flex', 'gap-3', 'flex-column', 'lg:flex-row'] - expect(await ocxContentContainerHarness.getLayoutClasses()).toEqual(expectedClassesLG) - expect(await ocxContentContainerHarness.getLayout()).toEqual('horizontal') - expect(await ocxContentContainerHarness.getBreakpoint()).toEqual('lg') - }) - - it('should render a vertical layout container if specified', async () => { - component.layout = 'vertical' - - const expectedClasses = ['flex', 'gap-3', 'flex-column'] - expect(await ocxContentContainerHarness.getLayoutClasses()).toEqual(expectedClasses) - expect(await ocxContentContainerHarness.getLayout()).toEqual('vertical') - expect(await ocxContentContainerHarness.getBreakpoint()).toBeUndefined() - }) -}) diff --git a/libs/portal-integration-angular/src/lib/core/components/content-container/content-container.component.ts b/libs/portal-integration-angular/src/lib/core/components/content-container/content-container.component.ts deleted file mode 100644 index 3c8a1ed8..00000000 --- a/libs/portal-integration-angular/src/lib/core/components/content-container/content-container.component.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { Component, Input } from '@angular/core' - -/** - * @deprecated This component was moved to angular-accelerator - */ -@Component({ - selector: 'ocx-content-container', - templateUrl: './content-container.component.html', -}) -export class OcxContentContainerComponent { - /** - * Allows specifying the layout direction of the container - */ - @Input() layout: 'vertical' | 'horizontal' = 'horizontal' - - /** - * Allows specifying the breakpoint below which a horizontal layout switches to a vertical layout. - * Only necessary if horizontal layout is used - * Default: md - */ - @Input() breakpoint: 'sm' | 'md' | 'lg' | 'xl' = 'md' -} diff --git a/libs/portal-integration-angular/src/lib/core/components/content/content.component.html b/libs/portal-integration-angular/src/lib/core/components/content/content.component.html deleted file mode 100644 index 1c8d8d28..00000000 --- a/libs/portal-integration-angular/src/lib/core/components/content/content.component.html +++ /dev/null @@ -1,3 +0,0 @@ -
- -
\ No newline at end of file diff --git a/libs/portal-integration-angular/src/lib/core/components/content/content.component.spec.ts b/libs/portal-integration-angular/src/lib/core/components/content/content.component.spec.ts deleted file mode 100644 index bdd0ebc2..00000000 --- a/libs/portal-integration-angular/src/lib/core/components/content/content.component.spec.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { OcxContentHarness } from '../../../../../testing/content.harness' -import { ComponentFixture, TestBed } from '@angular/core/testing' -import { OcxContentComponent } from './content.component' -import { OcxContentDirective } from '../../directives/content.directive' -import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed' - -describe('OcxContentComponent', () => { - let component: OcxContentComponent - let fixture: ComponentFixture - let ocxContentHarness: OcxContentHarness - const testComponentTitle = 'My cool title' - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [OcxContentComponent, OcxContentDirective], - }).compileComponents() - - fixture = TestBed.createComponent(OcxContentComponent) - component = fixture.componentInstance - ocxContentHarness = await TestbedHarnessEnvironment.harnessForFixture(fixture, OcxContentHarness) - }) - - it('should create', () => { - expect(component).toBeTruthy() - }) - - it('should render a ocxContent card with no title by default', async () => { - const expectedClasses = ['card'] - expect(await ocxContentHarness.getContentClasses()).toEqual(expectedClasses) - expect(await ocxContentHarness.hasTitle()).toEqual(false) - }) - - it('should render a ocxContent card with a title, when given a title via input', async () => { - const expectedClasses = ['card'] - expect(await ocxContentHarness.getContentClasses()).toEqual(expectedClasses) - expect(await ocxContentHarness.hasTitle()).toEqual(false) - - component.title = testComponentTitle - - const expectedTitleClasses = ['font-medium', 'text-lg'] - expect(await ocxContentHarness.hasTitle()).toEqual(true) - expect(await ocxContentHarness.getTitle()).toEqual(testComponentTitle) - expect(await ocxContentHarness.getTitleClasses()).toEqual(expectedTitleClasses) - }) -}) diff --git a/libs/portal-integration-angular/src/lib/core/components/content/content.component.ts b/libs/portal-integration-angular/src/lib/core/components/content/content.component.ts deleted file mode 100644 index e7081fdf..00000000 --- a/libs/portal-integration-angular/src/lib/core/components/content/content.component.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Component, Input } from '@angular/core' - -/** - * @deprecated This component was moved to angular-accelerato - */ -@Component({ - selector: 'ocx-content', - templateUrl: './content.component.html', -}) -export class OcxContentComponent { - /** - * Optionally allows specifying a title for the content card - */ - @Input() title = '' -} diff --git a/libs/portal-integration-angular/src/lib/core/components/lifecycle/lifecycle.component.html b/libs/portal-integration-angular/src/lib/core/components/lifecycle/lifecycle.component.html deleted file mode 100644 index 0d3daff1..00000000 --- a/libs/portal-integration-angular/src/lib/core/components/lifecycle/lifecycle.component.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - -
-
-

{{ step.title }}

-

{{ step.details }}

-
-
-
-
diff --git a/libs/portal-integration-angular/src/lib/core/components/lifecycle/lifecycle.component.spec.ts b/libs/portal-integration-angular/src/lib/core/components/lifecycle/lifecycle.component.spec.ts deleted file mode 100644 index 93a7af96..00000000 --- a/libs/portal-integration-angular/src/lib/core/components/lifecycle/lifecycle.component.spec.ts +++ /dev/null @@ -1,76 +0,0 @@ -import { ComponentFixture, TestBed } from '@angular/core/testing' -import { LifecycleComponent, LifecycleStep } from './lifecycle.component' -import { TimelineModule } from 'primeng/timeline' -import { LifecycleHarness, TestbedHarnessEnvironment } from '../../../../../testing' -import { PrimeNgModule } from '../../primeng.module' -import { BrowserAnimationsModule } from '@angular/platform-browser/animations' -import { PortalCoreModule } from '../../portal-core.module' - -const mockSteps: LifecycleStep[] = [ - { - id: 'test1', - title: 'Test 1', - }, - { - id: 'test2', - title: 'Test 2', - details: 'Test 2 description', - }, - { - id: 'test3', - title: 'Test 3', - }, -] - -describe('LifecycleComponent', () => { - let component: LifecycleComponent - let fixture: ComponentFixture - let lifecycle: LifecycleHarness - - beforeEach(async () => { - await TestBed.configureTestingModule({ - declarations: [LifecycleComponent], - imports: [TimelineModule, PrimeNgModule, BrowserAnimationsModule, PortalCoreModule], - }).compileComponents() - - fixture = TestBed.createComponent(LifecycleComponent) - component = fixture.componentInstance - fixture.detectChanges() - lifecycle = await TestbedHarnessEnvironment.harnessForFixture(fixture, LifecycleHarness) - }) - - it('should create', () => { - expect(component).toBeTruthy() - expect(lifecycle).toBeTruthy() - }) - - it('should not render any initial lifecycle steps', async () => { - const steps = await lifecycle.getSteps() - expect(steps.length).toBe(0) - }) - - it('should render given lifecycle steps', async () => { - component.steps = mockSteps - const steps = await lifecycle.getSteps() - const highlightedSteps = await lifecycle.getHighlightedSteps() - expect(steps.length).toBe(3) - expect(highlightedSteps.length).toBe(0) - mockSteps.forEach(async (step, index) => { - expect(await steps[index].text()).toEqual(step.title + (step.details ?? '')) - }) - }) - - it('should highlight a given lifecycle step', async () => { - component.steps = mockSteps - component.activeStepId = 'test2' - const steps = await lifecycle.getSteps() - const highlightedSteps = await lifecycle.getHighlightedSteps() - mockSteps.forEach(async (step, index) => { - if (step.id == component.activeStepId) { - expect(await steps[index].hasClass('bg-primary')).toEqual(true) - } - }) - expect(steps.length).toBe(3) - expect(highlightedSteps.length).toBe(1) - }) -}) diff --git a/libs/portal-integration-angular/src/lib/core/components/lifecycle/lifecycle.component.ts b/libs/portal-integration-angular/src/lib/core/components/lifecycle/lifecycle.component.ts deleted file mode 100644 index c7e6a863..00000000 --- a/libs/portal-integration-angular/src/lib/core/components/lifecycle/lifecycle.component.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { Component, Input } from '@angular/core' - -export interface LifecycleStep { - id: string - title: string - details?: string -} - -/** - * @deprecated This component was moved to angular-accelerator - */ -@Component({ - selector: 'ocx-lifecycle', - templateUrl: './lifecycle.component.html', -}) -export class LifecycleComponent { - @Input() steps: LifecycleStep[] = [] - @Input() activeStepId: string | undefined -} diff --git a/libs/portal-integration-angular/src/lib/core/directives/content-container.directive.ts b/libs/portal-integration-angular/src/lib/core/directives/content-container.directive.ts deleted file mode 100644 index cb1e198a..00000000 --- a/libs/portal-integration-angular/src/lib/core/directives/content-container.directive.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { Directive, ElementRef, Input, OnChanges, OnInit } from '@angular/core' - -/** - * @deprecated This directive was moved to angular-accelerator lib - */ -@Directive({ selector: '[ocxContentContainer]' }) -export class OcxContentContainerDirective implements OnInit, OnChanges { - /** - * Used for passing the direction, in which the content inside the container should be rendered. - * Default: horizontal - * @example [ocxContentContainer]="horizontal" - * @example [ocxContentContainer]="vertical" - */ - @Input() layout: 'horizontal' | 'vertical' = 'horizontal' - - /** - * Used for passing in the breakpoint below which a horizontal layout should switch to a vertical layout. - * Only necessary if horizontal layout is used - * Default: md - */ - @Input() breakpoint: 'sm' | 'md' | 'lg' | 'xl' = 'md' - - constructor(private el: ElementRef) {} - - ngOnInit() { - this.addContainerStyles() - } - - ngOnChanges() { - this.addContainerStyles() - } - - private addContainerStyles() { - const addClasses = (classes: string[]) => this.el.nativeElement.classList.add(...classes) - const removeClasses = (classes: string[]) => this.el.nativeElement.classList.remove(...classes) - // We need to ensure that all breakpoint dependent flex-row classes are removed from the element - // This way we can avoid multiple contradictory layout classes and unexpected effects - const removeResponsiveLayoutClasses = () => { - const classesToRemove: string[] = [] - const regexPattern = /\w+:flex-row$/ - this.el.nativeElement.classList.forEach((className: string) => { - if (regexPattern.test(className)) { - classesToRemove.push(className) - } - }) - removeClasses(classesToRemove) - } - const sharedClasses = ['flex', 'gap-3', 'flex-column'] - removeResponsiveLayoutClasses() - addClasses(sharedClasses) - if (this.layout != 'vertical') { - const responsiveLayoutClass = `${this.breakpoint || 'md'}:flex-row` - addClasses([responsiveLayoutClass]) - } - } -} diff --git a/libs/portal-integration-angular/src/lib/core/directives/content.directive.ts b/libs/portal-integration-angular/src/lib/core/directives/content.directive.ts deleted file mode 100644 index b6231e63..00000000 --- a/libs/portal-integration-angular/src/lib/core/directives/content.directive.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { Directive, ElementRef, Input, OnChanges, OnInit } from '@angular/core' - -/** - * @deprecated This directive was moved to angular-accelerator lib - */ -@Directive({ selector: '[ocxContent]' }) -export class OcxContentDirective implements OnInit, OnChanges { - /** - * Used for passing a title text which should be rendered in the upper left corner of the content area. - * @example [ocxContent]="My Cool Title" - */ - @Input() ocxContent = '' - - private titleElemID = 'ocxContentTitleElement' - - constructor(private el: ElementRef) {} - - ngOnInit() { - this.init() - } - - ngOnChanges() { - this.init() - } - - private init() { - this.addContentStyles() - if (this.ocxContent) { - this.prependTitle() - } else { - this.removeTitle() - } - } - - private addContentStyles() { - const addClasses = (classes: string[]) => this.el.nativeElement.classList.add(...classes) - addClasses(['card']) - } - - private prependTitle() { - const titleElement = this.el.nativeElement.querySelector(`#${this.titleElemID}`) - if (titleElement) { - titleElement.textContent = this.ocxContent - } else { - const title = document.createElement('p') - title.classList.add('font-medium') - title.classList.add('text-lg') - title.id = this.titleElemID - title.textContent = this.ocxContent - this.el.nativeElement.prepend(title) - } - } - - private removeTitle() { - const titleElement = this.el.nativeElement.querySelector(`#${this.titleElemID}`) - if (titleElement) { - titleElement.remove() - } - } -} diff --git a/libs/portal-integration-angular/testing/content-container.harness.ts b/libs/portal-integration-angular/testing/content-container.harness.ts deleted file mode 100644 index 6adfd04f..00000000 --- a/libs/portal-integration-angular/testing/content-container.harness.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { ComponentHarness } from '@angular/cdk/testing' -import { DivHarness } from '@onecx/angular-testing' - -export class OcxContentContainerHarness extends ComponentHarness { - static hostSelector = 'ocx-content-container' - - async getLayoutClasses() { - const div = await this.locatorFor(DivHarness)() - const actualClassList = await div.getClassList() - - return actualClassList - } - - async getLayout(): Promise<'horizontal' | 'vertical'> { - const layoutClassses = await this.getLayoutClasses() - return layoutClassses.find((c) => c.endsWith(':flex-row')) ? 'horizontal' : 'vertical' - } - - async getBreakpoint(): Promise<'sm' | 'md' | 'lg' | 'xl' | undefined> { - const layoutClassses = await this.getLayoutClasses() - const layoutClass = layoutClassses.find((c) => c.endsWith(':flex-row')) - return layoutClass?.split(':')[0] as 'sm' | 'md' | 'lg' | 'xl' | undefined - } -} diff --git a/libs/portal-integration-angular/testing/content.harness.ts b/libs/portal-integration-angular/testing/content.harness.ts deleted file mode 100644 index 688bea52..00000000 --- a/libs/portal-integration-angular/testing/content.harness.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { ComponentHarness } from '@angular/cdk/testing' -import { DivHarness, PHarness } from '@onecx/angular-testing' - -export class OcxContentHarness extends ComponentHarness { - static hostSelector = 'ocx-content' - - async getContentClasses() { - const div = await this.locatorFor(DivHarness)() - const actualClassList = await div.getClassList() - - return actualClassList - } - - async getTitleClasses() { - const p = await this.getTitleHarness() - if (p) { - const actualClassList = await p.getClassList() - return actualClassList - } - return null - } - - async getTitle() { - const p = await this.getTitleHarness() - if (p) { - const titleContent = await p.getText() - return titleContent - } - return null - } - - async getTitleHarness() { - const pHarness = await this.locatorForOptional(PHarness.with({ id: 'ocxContentTitleElement' }))() - return pHarness - } - - async hasTitle(): Promise { - const title = await this.getTitleHarness() - return !!title - } -} diff --git a/libs/portal-integration-angular/testing/lifecycle.harness.ts b/libs/portal-integration-angular/testing/lifecycle.harness.ts deleted file mode 100644 index 95f59474..00000000 --- a/libs/portal-integration-angular/testing/lifecycle.harness.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { ContentContainerComponentHarness } from '@angular/cdk/testing' - -export class LifecycleHarness extends ContentContainerComponentHarness { - static hostSelector = 'ocx-lifecycle' - - getSteps = this.locatorForAll('.p-timeline-event-content .card') - getHighlightedSteps = this.locatorForAll('.p-timeline-event-content .card.bg-primary') -} From 6710ca8a1f69b268c60e226e71cda2799d730161 Mon Sep 17 00:00:00 2001 From: Maximilian Ollendorff Date: Wed, 9 Oct 2024 15:34:38 +0200 Subject: [PATCH 6/9] feat: update styleClass attribute for content components --- .../content-container/content-container.component.html | 2 +- .../content-container/content-container.component.spec.ts | 7 +++++++ .../content-container.component.stories.ts | 4 ++-- .../src/lib/components/content/content.component.html | 2 +- .../src/lib/components/content/content.component.spec.ts | 7 +++++++ .../lib/components/content/content.component.stories.ts | 5 +++-- 6 files changed, 21 insertions(+), 6 deletions(-) diff --git a/libs/angular-accelerator/src/lib/components/content-container/content-container.component.html b/libs/angular-accelerator/src/lib/components/content-container/content-container.component.html index e491d203..4777f241 100644 --- a/libs/angular-accelerator/src/lib/components/content-container/content-container.component.html +++ b/libs/angular-accelerator/src/lib/components/content-container/content-container.component.html @@ -1,3 +1,3 @@ -
+
diff --git a/libs/angular-accelerator/src/lib/components/content-container/content-container.component.spec.ts b/libs/angular-accelerator/src/lib/components/content-container/content-container.component.spec.ts index 744a01e0..30e1e589 100644 --- a/libs/angular-accelerator/src/lib/components/content-container/content-container.component.spec.ts +++ b/libs/angular-accelerator/src/lib/components/content-container/content-container.component.spec.ts @@ -47,4 +47,11 @@ describe('OcxContentContainerComponent', () => { expect(await ocxContentContainerHarness.getLayout()).toEqual('vertical') expect(await ocxContentContainerHarness.getBreakpoint()).toBeUndefined() }) + + it('should render a container with a class, when given a styleClass via input', async () => { + component.styleClass = 'py-4' + + const expectedStyleClasses = ['flex', 'gap-3', 'flex-column', 'py-4'] + expect(await ocxContentHarness.getContentClasses()).toEqual(expectedStyleClasses) + }) }) diff --git a/libs/angular-accelerator/src/lib/components/content-container/content-container.component.stories.ts b/libs/angular-accelerator/src/lib/components/content-container/content-container.component.stories.ts index 5f5469dc..db5714cd 100644 --- a/libs/angular-accelerator/src/lib/components/content-container/content-container.component.stories.ts +++ b/libs/angular-accelerator/src/lib/components/content-container/content-container.component.stories.ts @@ -89,7 +89,7 @@ export const WithNestedOCXContentContainer = { } export const WithStyleClass = { - render: (args: OcxContentComponent) => ({ + render: (args: OcxContentContainerComponent) => ({ props: { ...args, }, @@ -100,7 +100,7 @@ export const WithStyleClass = { `, }), args: { - styleClass: 'color: red', + styleClass: 'py-4', }, } diff --git a/libs/angular-accelerator/src/lib/components/content/content.component.html b/libs/angular-accelerator/src/lib/components/content/content.component.html index 0ee9b0a9..1dbdee60 100644 --- a/libs/angular-accelerator/src/lib/components/content/content.component.html +++ b/libs/angular-accelerator/src/lib/components/content/content.component.html @@ -1,3 +1,3 @@ -
+
diff --git a/libs/angular-accelerator/src/lib/components/content/content.component.spec.ts b/libs/angular-accelerator/src/lib/components/content/content.component.spec.ts index 95150f8b..fb29bcab 100644 --- a/libs/angular-accelerator/src/lib/components/content/content.component.spec.ts +++ b/libs/angular-accelerator/src/lib/components/content/content.component.spec.ts @@ -42,4 +42,11 @@ describe('OcxContentComponent', () => { expect(await ocxContentHarness.getTitle()).toEqual(testComponentTitle) expect(await ocxContentHarness.getTitleClasses()).toEqual(expectedTitleClasses) }) + + it('should render a ocxContent card with a class, when given a styleClass via input', async () => { + component.styleClass = 'py-4' + + const expectedStyleClasses = ['card', 'py-4'] + expect(await ocxContentHarness.getContentClasses()).toEqual(expectedStyleClasses) + }) }) diff --git a/libs/angular-accelerator/src/lib/components/content/content.component.stories.ts b/libs/angular-accelerator/src/lib/components/content/content.component.stories.ts index 10379bc0..a964eb5c 100644 --- a/libs/angular-accelerator/src/lib/components/content/content.component.stories.ts +++ b/libs/angular-accelerator/src/lib/components/content/content.component.stories.ts @@ -47,13 +47,14 @@ export const WithStyleClass = { ...args, }, template: ` - +

Content inside of ocx-content with styleClass

`, }), args: { - styleClass: 'color: red', + title: 'My Title', + styleClass: 'py-4', }, } From f2ea9ea7f2b1334a5e746dce7fc56f477d1659de Mon Sep 17 00:00:00 2001 From: Maximilian Ollendorff Date: Fri, 18 Oct 2024 13:05:58 +0200 Subject: [PATCH 7/9] feat: add styleclass to data view --- .../content-container.component.html | 2 +- .../content-container.component.spec.ts | 2 +- .../content-container.component.stories.ts | 1 + .../content-container/content-container.component.ts | 2 +- .../lib/components/content/content.component.html | 2 +- .../src/lib/components/content/content.component.ts | 2 +- .../interactive-data-view.component.html | 4 ++-- .../interactive-data-view.component.stories.ts | 12 ++++++++++++ .../interactive-data-view.component.ts | 2 ++ 9 files changed, 22 insertions(+), 7 deletions(-) diff --git a/libs/angular-accelerator/src/lib/components/content-container/content-container.component.html b/libs/angular-accelerator/src/lib/components/content-container/content-container.component.html index 4777f241..94eb8990 100644 --- a/libs/angular-accelerator/src/lib/components/content-container/content-container.component.html +++ b/libs/angular-accelerator/src/lib/components/content-container/content-container.component.html @@ -1,3 +1,3 @@ -
+
diff --git a/libs/angular-accelerator/src/lib/components/content-container/content-container.component.spec.ts b/libs/angular-accelerator/src/lib/components/content-container/content-container.component.spec.ts index 30e1e589..74a4c56f 100644 --- a/libs/angular-accelerator/src/lib/components/content-container/content-container.component.spec.ts +++ b/libs/angular-accelerator/src/lib/components/content-container/content-container.component.spec.ts @@ -52,6 +52,6 @@ describe('OcxContentContainerComponent', () => { component.styleClass = 'py-4' const expectedStyleClasses = ['flex', 'gap-3', 'flex-column', 'py-4'] - expect(await ocxContentHarness.getContentClasses()).toEqual(expectedStyleClasses) + expect(await ocxContentContainerHarness.getLayoutClasses()).toEqual(expectedStyleClasses) }) }) diff --git a/libs/angular-accelerator/src/lib/components/content-container/content-container.component.stories.ts b/libs/angular-accelerator/src/lib/components/content-container/content-container.component.stories.ts index db5714cd..8fd7abd5 100644 --- a/libs/angular-accelerator/src/lib/components/content-container/content-container.component.stories.ts +++ b/libs/angular-accelerator/src/lib/components/content-container/content-container.component.stories.ts @@ -96,6 +96,7 @@ export const WithStyleClass = { template: `

Content inside of ocx-content-container with styleClass

+

Content inside of ocx-content-container with styleClass

`, }), diff --git a/libs/angular-accelerator/src/lib/components/content-container/content-container.component.ts b/libs/angular-accelerator/src/lib/components/content-container/content-container.component.ts index c734c54b..682a85e1 100644 --- a/libs/angular-accelerator/src/lib/components/content-container/content-container.component.ts +++ b/libs/angular-accelerator/src/lib/components/content-container/content-container.component.ts @@ -20,5 +20,5 @@ export class OcxContentContainerComponent { /** * Optionally allows specifying styles for the container */ - @Input() styleClass = '' + @Input() styleClass: string | undefined } diff --git a/libs/angular-accelerator/src/lib/components/content/content.component.html b/libs/angular-accelerator/src/lib/components/content/content.component.html index 1dbdee60..a3eb3b50 100644 --- a/libs/angular-accelerator/src/lib/components/content/content.component.html +++ b/libs/angular-accelerator/src/lib/components/content/content.component.html @@ -1,3 +1,3 @@ -
+
diff --git a/libs/angular-accelerator/src/lib/components/content/content.component.ts b/libs/angular-accelerator/src/lib/components/content/content.component.ts index b9eff172..71a97e83 100644 --- a/libs/angular-accelerator/src/lib/components/content/content.component.ts +++ b/libs/angular-accelerator/src/lib/components/content/content.component.ts @@ -13,5 +13,5 @@ export class OcxContentComponent { /** * Optionally allows specifying styles for the content card */ - @Input() styleClass = '' + @Input() styleClass: string | undefined } diff --git a/libs/angular-accelerator/src/lib/components/interactive-data-view/interactive-data-view.component.html b/libs/angular-accelerator/src/lib/components/interactive-data-view/interactive-data-view.component.html index 68355773..88ecbe7a 100644 --- a/libs/angular-accelerator/src/lib/components/interactive-data-view/interactive-data-view.component.html +++ b/libs/angular-accelerator/src/lib/components/interactive-data-view/interactive-data-view.component.html @@ -1,4 +1,4 @@ -
+
-
+
| undefined /** * @deprecated Will be replaced by dateTableCell From bc58dc79383532205b64fd90ae3aef2b5b13cdbc Mon Sep 17 00:00:00 2001 From: Maximilian Ollendorff Date: Fri, 18 Oct 2024 13:18:14 +0200 Subject: [PATCH 8/9] fix: update content container test --- .../content-container/content-container.component.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/angular-accelerator/src/lib/components/content-container/content-container.component.spec.ts b/libs/angular-accelerator/src/lib/components/content-container/content-container.component.spec.ts index 74a4c56f..9e0f3dc4 100644 --- a/libs/angular-accelerator/src/lib/components/content-container/content-container.component.spec.ts +++ b/libs/angular-accelerator/src/lib/components/content-container/content-container.component.spec.ts @@ -51,7 +51,7 @@ describe('OcxContentContainerComponent', () => { it('should render a container with a class, when given a styleClass via input', async () => { component.styleClass = 'py-4' - const expectedStyleClasses = ['flex', 'gap-3', 'flex-column', 'py-4'] + const expectedStyleClasses = ['flex', 'gap-3', 'flex-column', 'md:flex-row', 'py-4'] expect(await ocxContentContainerHarness.getLayoutClasses()).toEqual(expectedStyleClasses) }) }) From de40197b1700f9ef6f5758708b959b922a1640b4 Mon Sep 17 00:00:00 2001 From: Maximilian Ollendorff Date: Wed, 23 Oct 2024 12:45:51 +0200 Subject: [PATCH 9/9] feat: add tests for interactive-data-view --- .../interactive-data-view.component.html | 4 ++-- .../interactive-data-view.component.spec.ts | 14 ++++++++++++++ .../testing/interactive-data-view.harness.ts | 9 ++++++++- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/libs/angular-accelerator/src/lib/components/interactive-data-view/interactive-data-view.component.html b/libs/angular-accelerator/src/lib/components/interactive-data-view/interactive-data-view.component.html index 7ced6775..9d93f155 100644 --- a/libs/angular-accelerator/src/lib/components/interactive-data-view/interactive-data-view.component.html +++ b/libs/angular-accelerator/src/lib/components/interactive-data-view/interactive-data-view.component.html @@ -1,4 +1,4 @@ -
+ -
+
{ expect(columnsChangeSpy).toHaveBeenCalled() expect(columnKeysChangeSpy).toHaveBeenCalledWith(['first-col', 'second-col']) }) + + it('should render the header with a class, when given a headerStyleClass via input', async () => { + component.headerStyleClass = 'py-4' + + const expectedStyleClasses = ['p-3', 'border-bottom-1', 'surface-border', 'py-4'] + expect(await interactiveDataViewHarness.getContentClassesById('header')).toEqual(expectedStyleClasses) + }) + + it('should render the content with a class, when given a contentStyleClass via input', async () => { + component.contentStyleClass = 'py-4' + + const expectedStyleClasses = ['p-3', 'py-4'] + expect(await interactiveDataViewHarness.getContentClassesById('content')).toEqual(expectedStyleClasses) + }) }) diff --git a/libs/angular-accelerator/testing/interactive-data-view.harness.ts b/libs/angular-accelerator/testing/interactive-data-view.harness.ts index af0cdff5..3f270668 100644 --- a/libs/angular-accelerator/testing/interactive-data-view.harness.ts +++ b/libs/angular-accelerator/testing/interactive-data-view.harness.ts @@ -1,5 +1,5 @@ import { ContentContainerComponentHarness } from '@angular/cdk/testing' -import { PButtonHarness } from '@onecx/angular-testing' +import { DivHarness, PButtonHarness } from '@onecx/angular-testing' import { PDropdownHarness } from '@onecx/angular-testing' import { CustomGroupColumnSelectorHarness } from '.' import { DataLayoutSelectionHarness } from './data-layout-selection.harness' @@ -9,6 +9,13 @@ import { SlotHarness } from './slot.harness' export class InteractiveDataViewHarness extends ContentContainerComponentHarness { static hostSelector = 'ocx-interactive-data-view' + async getContentClassesById(id: string) { + const div = await this.locatorFor(DivHarness.with({ selector: `[id="${id}"]` }))() + const actualClassList = await div.getClassList() + + return actualClassList + } + getDataLayoutSelection = this.locatorFor(DataLayoutSelectionHarness) getColumnGroupSelectionDropdown = this.locatorForOptional( PDropdownHarness.with({ id: 'columnGroupSelectionDropdown' })