From 4922e55dcf4e94a769b310404ee5ee82d4aa45f8 Mon Sep 17 00:00:00 2001 From: Christian Badura <93912698+cbadura@users.noreply.github.com> Date: Mon, 26 Aug 2024 19:07:11 +0200 Subject: [PATCH 1/2] Create remote component to list active announcements (#207) * feat: set up remote component * feat: finish remote component first draft * feat: list active tests * fix: bump deps * fix: banner tests * fix: baseurl in remote component --------- Co-authored-by: Christian Badura --- helm/values.yaml | 7 + package-lock.json | 491 +++++++++--------- package.json | 30 +- src/app/announcement/announcement.module.ts | 6 + .../announcement-banner.component.spec.ts | 2 +- .../announcement-banner.component.ts | 2 +- ...ncement-list-active.component.bootstrap.ts | 13 + .../announcement-list-active.component.html | 63 +++ .../announcement-list-active.component.scss | 0 ...announcement-list-active.component.spec.ts | 161 ++++++ .../announcement-list-active.component.ts | 96 ++++ tsconfig.app.json | 3 +- webpack.config.js | 4 +- 13 files changed, 619 insertions(+), 259 deletions(-) create mode 100644 src/app/remotes/announcement-list-active/announcement-list-active.component.bootstrap.ts create mode 100644 src/app/remotes/announcement-list-active/announcement-list-active.component.html create mode 100644 src/app/remotes/announcement-list-active/announcement-list-active.component.scss create mode 100644 src/app/remotes/announcement-list-active/announcement-list-active.component.spec.ts create mode 100644 src/app/remotes/announcement-list-active/announcement-list-active.component.ts diff --git a/helm/values.yaml b/helm/values.yaml index d0f3a91..128ffa3 100644 --- a/helm/values.yaml +++ b/helm/values.yaml @@ -26,6 +26,13 @@ app: technology: WEBCOMPONENTMODULE remoteName: onecx-announcement tagName: ocx-announcement-banner-component + announcement-list-active: + exposedModule: "./OneCXAnnouncementListActiveComponent" + description: "Announcement list active component" + type: COMPONENT + technology: WEBCOMPONENTMODULE + remoteName: onecx-announcement + tagName: ocx-announcement-list-active-component # Permission permission: enabled: true diff --git a/package-lock.json b/package-lock.json index cba4156..ac59255 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26,17 +26,17 @@ "@ngrx/router-store": "^18.0.1", "@ngx-translate/core": "^15.0.0", "@ngx-translate/http-loader": "^8.0.0", - "@onecx/accelerator": "^5.3.1", - "@onecx/angular-accelerator": "^5.3.1", - "@onecx/angular-auth": "^5.3.1", - "@onecx/angular-integration-interface": "^5.3.1", - "@onecx/angular-remote-components": "^5.3.1", - "@onecx/angular-testing": "^5.3.1", - "@onecx/angular-webcomponents": "^5.3.1", - "@onecx/integration-interface": "^5.3.1", - "@onecx/keycloak-auth": "^5.3.1", - "@onecx/portal-integration-angular": "^5.3.1", - "@onecx/portal-layout-styles": "^5.3.1", + "@onecx/accelerator": "^5.8.0", + "@onecx/angular-accelerator": "^5.8.0", + "@onecx/angular-auth": "^5.8.0", + "@onecx/angular-integration-interface": "^5.8.0", + "@onecx/angular-remote-components": "^5.8.0", + "@onecx/angular-testing": "^5.8.0", + "@onecx/angular-webcomponents": "^5.8.0", + "@onecx/integration-interface": "^5.8.0", + "@onecx/keycloak-auth": "^5.8.0", + "@onecx/portal-integration-angular": "^5.8.0", + "@onecx/portal-layout-styles": "^5.8.0", "@webcomponents/webcomponentsjs": "^2.8.0", "file-saver": "^2.0.5", "keycloak-angular": "^16.0.1", @@ -67,7 +67,7 @@ "@svgr/webpack": "^8.1.0", "@swc-node/register": "^1.10.9", "@types/jasmine": "~5.1.4", - "@types/node": "~22.2.0", + "@types/node": "~22.5.0", "@typescript-eslint/eslint-plugin": "^7.18.0", "@typescript-eslint/parser": "^7.18.0", "css-loader": "^7.1.2", @@ -84,16 +84,16 @@ "karma-jasmine": "^5.1.0", "karma-jasmine-html-reporter": "^2.1.0", "karma-sonarqube-unit-reporter": "^0.0.23", - "ng-packagr": "18.1.0", + "ng-packagr": "18.2.1", "ngx-build-plus": "^18.0.0", "ngx-translate-testing": "^7.0.0", "postcss": "8.4.41", "postcss-import": "~16.1.0", - "postcss-preset-env": "~10.0.0", + "postcss-preset-env": "~10.0.2", "postcss-url": "~10.1.3", "prettier": "^3.3.3", "sonar-scanner": "^3.1.0", - "sonarqube-scanner": "^4.0.1", + "sonarqube-scanner": "^4.2.1", "style-loader": "^4.0.0", "ts-node": "10.9.2", "typescript": "5.5", @@ -3463,9 +3463,9 @@ } }, "node_modules/@csstools/cascade-layer-name-parser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-2.0.0.tgz", - "integrity": "sha512-9GEQIvTMrjXfYaVnw1+FteDX5yF65CZq4ttYP75O3CANQevaCJ9jVVTiZt9YTpjYIk8C1mmf52y2S4Hr/CaE/g==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-2.0.1.tgz", + "integrity": "sha512-G9ZYN5+yr/E6xYSiy1BwOEFP5p88ZtWo8sL4NztKBkRRAwRkzVGa70M+D+fYHugMID5jkLeNt5X9jYd5EaVuyg==", "dev": true, "funding": [ { @@ -3482,14 +3482,14 @@ "node": ">=18" }, "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.0", - "@csstools/css-tokenizer": "^3.0.0" + "@csstools/css-parser-algorithms": "^3.0.1", + "@csstools/css-tokenizer": "^3.0.1" } }, "node_modules/@csstools/color-helpers": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-4.2.1.tgz", - "integrity": "sha512-CEypeeykO9AN7JWkr1OEOQb0HRzZlPWGwV0Ya6DuVgFdDi6g3ma/cPZ5ZPZM4AWQikDpq/0llnGGlIL+j8afzw==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.0.1.tgz", + "integrity": "sha512-MKtmkA0BX87PKaO1NFRTFH+UnkgnmySQOvNxJubsadusqPEC2aJ9MOQiMceZJJ6oitUl/i0L6u0M1IrmAOmgBA==", "dev": true, "funding": [ { @@ -3503,13 +3503,13 @@ ], "license": "MIT-0", "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=18" } }, "node_modules/@csstools/css-calc": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.0.0.tgz", - "integrity": "sha512-fxPxNrEVGeej4F35Xt69Q7gPMKa7oEGNxeP1DpA01sWpTF3Yhgux/0slVX3jLHd7dhlszeQlNAUhpAorVxoHdQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.0.1.tgz", + "integrity": "sha512-e59V+sNp6e5m+9WnTUydA1DQO70WuKUdseflRpWmXxocF/h5wWGIxUjxfvLtajcmwstH0vm6l0reKMzcyI757Q==", "dev": true, "funding": [ { @@ -3526,14 +3526,14 @@ "node": ">=18" }, "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.0", - "@csstools/css-tokenizer": "^3.0.0" + "@csstools/css-parser-algorithms": "^3.0.1", + "@csstools/css-tokenizer": "^3.0.1" } }, "node_modules/@csstools/css-color-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.0.tgz", - "integrity": "sha512-F/A1Z3ZXH4fU6+29Up4QAZtewLmWLI4hVz6hyODMFvorx4AEC/03tu+gFq0nMZSDafC0lmapNOj9f4ctHMNaqQ==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.0.2.tgz", + "integrity": "sha512-mNg7A6HnNjlm0we/pDS9dUafOuBxcanN0TBhEGeIk6zZincuk0+mAbnBqfVs29NlvWHZ8diwTG6g5FeU8246sA==", "dev": true, "funding": [ { @@ -3547,21 +3547,21 @@ ], "license": "MIT", "dependencies": { - "@csstools/color-helpers": "^4.2.1", - "@csstools/css-calc": "^2.0.0" + "@csstools/color-helpers": "^5.0.1", + "@csstools/css-calc": "^2.0.1" }, "engines": { "node": ">=18" }, "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.0", - "@csstools/css-tokenizer": "^3.0.0" + "@csstools/css-parser-algorithms": "^3.0.1", + "@csstools/css-tokenizer": "^3.0.1" } }, "node_modules/@csstools/css-parser-algorithms": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.0.tgz", - "integrity": "sha512-20hEErXV9GEx15qRbsJVzB91ryayx1F2duHPBrfZXQAHz/dJG0u/611URpr28+sFjm3EI7U17Pj9SVA9NSAGJA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.1.tgz", + "integrity": "sha512-lSquqZCHxDfuTg/Sk2hiS0mcSFCEBuj49JfzPHJogDBT0mGCyY5A1AQzBWngitrp7i1/HAZpIgzF/VjhOEIJIg==", "dev": true, "funding": [ { @@ -3578,13 +3578,13 @@ "node": ">=18" }, "peerDependencies": { - "@csstools/css-tokenizer": "^3.0.0" + "@csstools/css-tokenizer": "^3.0.1" } }, "node_modules/@csstools/css-tokenizer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.0.tgz", - "integrity": "sha512-efZvfJyYrqH9hPCKtOBywlTsCXnEzAI9sLHFzUsDpBb+1bQ+bxJnwL9V2bRKv9w4cpIp75yxGeZRaVKoMQnsEg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.1.tgz", + "integrity": "sha512-UBqaiu7kU0lfvaP982/o3khfXccVlHPWp0/vwwiIgDF0GmqqqxoiXC/6FCjlS9u92f7CoEz6nXKQnrn1kIAkOw==", "dev": true, "funding": [ { @@ -3602,9 +3602,9 @@ } }, "node_modules/@csstools/media-query-list-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-3.0.0.tgz", - "integrity": "sha512-W0JlkUFwXjo703wt06AcaWuUcS+6x6IEDyxV6W65Sw+vLCYp+uPsrps+PXTiIfN0V1Pqj5snPzN7EYLmbz1zjg==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-3.0.1.tgz", + "integrity": "sha512-HNo8gGD02kHmcbX6PvCoUuOQvn4szyB9ca63vZHKX5A81QytgDG4oxG4IaEfHTlEZSZ6MjPEMWIVU+zF2PZcgw==", "dev": true, "funding": [ { @@ -3621,8 +3621,8 @@ "node": ">=18" }, "peerDependencies": { - "@csstools/css-parser-algorithms": "^3.0.0", - "@csstools/css-tokenizer": "^3.0.0" + "@csstools/css-parser-algorithms": "^3.0.1", + "@csstools/css-tokenizer": "^3.0.1" } }, "node_modules/@csstools/postcss-cascade-layers": { @@ -3653,9 +3653,9 @@ } }, "node_modules/@csstools/postcss-color-function": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-4.0.0.tgz", - "integrity": "sha512-e0RohXUxMsSzIS5s4xh218NiOYXAfby17L8KYe/6ITI8i4BiSFLpywMvpA/d6xPUGUfT20O+7JLBDHF3heYZRA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-4.0.2.tgz", + "integrity": "sha512-q/W3RXh66SM7WqxW3/KU6koL8nOgqyB/wrcU3+ThXnNtXY2+k8UgdE301ISJpMt6PDyYgC7eMaIBo535RvFIgw==", "dev": true, "funding": [ { @@ -3669,9 +3669,9 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^3.0.0", - "@csstools/css-parser-algorithms": "^3.0.0", - "@csstools/css-tokenizer": "^3.0.0", + "@csstools/css-color-parser": "^3.0.2", + "@csstools/css-parser-algorithms": "^3.0.1", + "@csstools/css-tokenizer": "^3.0.1", "@csstools/postcss-progressive-custom-properties": "^4.0.0", "@csstools/utilities": "^2.0.0" }, @@ -3683,9 +3683,9 @@ } }, "node_modules/@csstools/postcss-color-mix-function": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-3.0.0.tgz", - "integrity": "sha512-MWuSfaLKe1By/hSnjH/Hj7ZOIRZaLMNshCTkVuuqtZ0nfp+QRGUwf9nb2uPVKySYjKqNERANdA9Q0citA9hK1Q==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-mix-function/-/postcss-color-mix-function-3.0.2.tgz", + "integrity": "sha512-zG9PHNzZVCRk6eprm+T/ybrnuiwLdO+RR7+GCtNut+NZJGtPJj6bfPOEX23aOlMslLcRAlN6QOpxH3tovn+WpA==", "dev": true, "funding": [ { @@ -3699,9 +3699,9 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^3.0.0", - "@csstools/css-parser-algorithms": "^3.0.0", - "@csstools/css-tokenizer": "^3.0.0", + "@csstools/css-color-parser": "^3.0.2", + "@csstools/css-parser-algorithms": "^3.0.1", + "@csstools/css-tokenizer": "^3.0.1", "@csstools/postcss-progressive-custom-properties": "^4.0.0", "@csstools/utilities": "^2.0.0" }, @@ -3713,9 +3713,9 @@ } }, "node_modules/@csstools/postcss-content-alt-text": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-content-alt-text/-/postcss-content-alt-text-2.0.0.tgz", - "integrity": "sha512-1pPjMaSUftwn/4N7RtJif91cB6BBEo0LQX2vryrDMF5uKDqt4RMpIi9ZFTsKtcXBFZexNGEWXZzPABnooJGkzQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-content-alt-text/-/postcss-content-alt-text-2.0.1.tgz", + "integrity": "sha512-TWjjewVZqdkjavsi8a2THuXgkhUum1k/m4QJpZpzOv72q6WnaoQZGSj5t5uCs7ymJr0H3qj6JcXMwMApSWUOGQ==", "dev": true, "funding": [ { @@ -3729,8 +3729,8 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-parser-algorithms": "^3.0.0", - "@csstools/css-tokenizer": "^3.0.0", + "@csstools/css-parser-algorithms": "^3.0.1", + "@csstools/css-tokenizer": "^3.0.1", "@csstools/postcss-progressive-custom-properties": "^4.0.0", "@csstools/utilities": "^2.0.0" }, @@ -3742,9 +3742,9 @@ } }, "node_modules/@csstools/postcss-exponential-functions": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-exponential-functions/-/postcss-exponential-functions-2.0.0.tgz", - "integrity": "sha512-sH7MBlsn6yft6xQ8uQ9MCWFHbZCUL3HIN3IntUabv75syl0dPldECTqLJix5q5ilSQxDQ1L+LajeZk84S6GG9w==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-exponential-functions/-/postcss-exponential-functions-2.0.1.tgz", + "integrity": "sha512-A/MG8es3ylFzZ30oYIQUyJcMOfTfCs0dqqBMzeuzaPRlx4q/72WG+BbKe/pL9BUNIWsM0Q8jn3e3la8enjHJJA==", "dev": true, "funding": [ { @@ -3758,9 +3758,9 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-calc": "^2.0.0", - "@csstools/css-parser-algorithms": "^3.0.0", - "@csstools/css-tokenizer": "^3.0.0" + "@csstools/css-calc": "^2.0.1", + "@csstools/css-parser-algorithms": "^3.0.1", + "@csstools/css-tokenizer": "^3.0.1" }, "engines": { "node": ">=18" @@ -3797,9 +3797,9 @@ } }, "node_modules/@csstools/postcss-gamut-mapping": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-2.0.0.tgz", - "integrity": "sha512-JftxHVGt6PFfV/vWTDVKrrO0XyUA8OtuVykXhhMxue9qCzCCTSWqMHjZOvaOCCbxG1v2tGKV2FxBLQhzsZZPJg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gamut-mapping/-/postcss-gamut-mapping-2.0.2.tgz", + "integrity": "sha512-/1ur3ca9RWg/KnbLlxaDswyjLSGoaHNDruAzrVhkn5axgd7LOH6JHCBRhrKDafdMw9bf4MQrYFoaLfHAPekLFg==", "dev": true, "funding": [ { @@ -3813,9 +3813,9 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^3.0.0", - "@csstools/css-parser-algorithms": "^3.0.0", - "@csstools/css-tokenizer": "^3.0.0" + "@csstools/css-color-parser": "^3.0.2", + "@csstools/css-parser-algorithms": "^3.0.1", + "@csstools/css-tokenizer": "^3.0.1" }, "engines": { "node": ">=18" @@ -3825,9 +3825,9 @@ } }, "node_modules/@csstools/postcss-gradients-interpolation-method": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-5.0.0.tgz", - "integrity": "sha512-jmgh7C6ANVRPdFNMNIp426UFNuy01XXYwxbbyYV2fZBbmZleVLp6imxjw2XoaeHMdSiYoq8vOeX+GVzCyC7oOQ==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-gradients-interpolation-method/-/postcss-gradients-interpolation-method-5.0.2.tgz", + "integrity": "sha512-qRpvA4sduAfiV9yZG4OM7q/h2Qhr3lg+GrHe9NZwuzWnfSDLGh+Dh4Ea6fQ+1++jdKXW/Cb4/vHRp0ssQYra4w==", "dev": true, "funding": [ { @@ -3841,9 +3841,9 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^3.0.0", - "@csstools/css-parser-algorithms": "^3.0.0", - "@csstools/css-tokenizer": "^3.0.0", + "@csstools/css-color-parser": "^3.0.2", + "@csstools/css-parser-algorithms": "^3.0.1", + "@csstools/css-tokenizer": "^3.0.1", "@csstools/postcss-progressive-custom-properties": "^4.0.0", "@csstools/utilities": "^2.0.0" }, @@ -3855,9 +3855,9 @@ } }, "node_modules/@csstools/postcss-hwb-function": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-4.0.0.tgz", - "integrity": "sha512-Swb2CK/wKnsXEgT5GNlIO2C2h3lePn0Nmbsy48Z6yAht1XwQiDcxDAhqojg9LfonJVics+pzLM+IEQjPdgICNg==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-4.0.2.tgz", + "integrity": "sha512-RUBVCyJE1hTsf9vGp3zrALeMollkAlHRFKm+T36y67nLfOOf+6GNQsdTGFAyLrY65skcm8ddC26Jp1n9ZIauEA==", "dev": true, "funding": [ { @@ -3871,9 +3871,9 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^3.0.0", - "@csstools/css-parser-algorithms": "^3.0.0", - "@csstools/css-tokenizer": "^3.0.0", + "@csstools/css-color-parser": "^3.0.2", + "@csstools/css-parser-algorithms": "^3.0.1", + "@csstools/css-tokenizer": "^3.0.1", "@csstools/postcss-progressive-custom-properties": "^4.0.0", "@csstools/utilities": "^2.0.0" }, @@ -3963,9 +3963,9 @@ } }, "node_modules/@csstools/postcss-light-dark-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-light-dark-function/-/postcss-light-dark-function-2.0.0.tgz", - "integrity": "sha512-1CHfwwckSJ4xYZYOgJD5u1NNlP85/6VqsQPL1geagvfpwm47hcGRDW+O3CD7KdexWGL45E5qKmL1bC2siqjmkg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-light-dark-function/-/postcss-light-dark-function-2.0.2.tgz", + "integrity": "sha512-QAWWDJtJ7ywzhaMe09QwhjhuwB0XN04fW1MFwoEJMcYyiQub4a57mVFV+ngQEekUhsqe/EtKVCzyOx4q3xshag==", "dev": true, "funding": [ { @@ -3979,8 +3979,8 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-parser-algorithms": "^3.0.0", - "@csstools/css-tokenizer": "^3.0.0", + "@csstools/css-parser-algorithms": "^3.0.1", + "@csstools/css-tokenizer": "^3.0.1", "@csstools/postcss-progressive-custom-properties": "^4.0.0", "@csstools/utilities": "^2.0.0" }, @@ -4087,9 +4087,9 @@ } }, "node_modules/@csstools/postcss-logical-viewport-units": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-viewport-units/-/postcss-logical-viewport-units-3.0.0.tgz", - "integrity": "sha512-7a0d7TLfHP3k7n+XGj5NJopgyKgl/VKyAPapYIo97aujB7+8M4dBE1Og0OmWng+H/drQWXoSlCI3pov5XwVtxQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-viewport-units/-/postcss-logical-viewport-units-3.0.1.tgz", + "integrity": "sha512-JsfaoTiBqIuRE+CYL4ZpYKOqJ965GyiMH4b8UrY0Z7i5GfMiHZrK7xtTB29piuyKQzrW+Z8w3PAExhwND9cuAQ==", "dev": true, "funding": [ { @@ -4103,7 +4103,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-tokenizer": "^3.0.0", + "@csstools/css-tokenizer": "^3.0.1", "@csstools/utilities": "^2.0.0" }, "engines": { @@ -4114,9 +4114,9 @@ } }, "node_modules/@csstools/postcss-media-minmax": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-media-minmax/-/postcss-media-minmax-2.0.0.tgz", - "integrity": "sha512-21Cmy5QWbexbpKAAJntGomjn644BWWs7gXkx/Vid1SjqxIRmPUB/dcJ4xBWwjpFuhrPKzT8a3Pr+IJv9R9v9Yg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-media-minmax/-/postcss-media-minmax-2.0.1.tgz", + "integrity": "sha512-EMa3IgUip+F/MwH4r2KfIA9ym9hQkT2PpR9MOukdomfGGCFuw9V3n/iIOBKziN1qfeddsYoOvtYOKQcHU2yIjg==", "dev": true, "funding": [ { @@ -4130,10 +4130,10 @@ ], "license": "MIT", "dependencies": { - "@csstools/css-calc": "^2.0.0", - "@csstools/css-parser-algorithms": "^3.0.0", - "@csstools/css-tokenizer": "^3.0.0", - "@csstools/media-query-list-parser": "^3.0.0" + "@csstools/css-calc": "^2.0.1", + "@csstools/css-parser-algorithms": "^3.0.1", + "@csstools/css-tokenizer": "^3.0.1", + "@csstools/media-query-list-parser": "^3.0.1" }, "engines": { "node": ">=18" @@ -4143,9 +4143,9 @@ } }, "node_modules/@csstools/postcss-media-queries-aspect-ratio-number-values": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-media-queries-aspect-ratio-number-values/-/postcss-media-queries-aspect-ratio-number-values-3.0.0.tgz", - "integrity": "sha512-TV8Q7ec0zbCxlmTmUF8CvAWWbK3q9ops3+sGCc6rHAGrfkoA+HyMGwJBZudddZQOV9MZS949mhtYIV4AgIRizw==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-media-queries-aspect-ratio-number-values/-/postcss-media-queries-aspect-ratio-number-values-3.0.1.tgz", + "integrity": "sha512-JTzMQz//INahTALkvXnC5lC2fJKzwb5PY443T2zaM9hAzM7nzHMLIlEfFgdtBahVIBtBSalMefdxNr99LGW1lQ==", "dev": true, "funding": [ { @@ -4159,9 +4159,9 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-parser-algorithms": "^3.0.0", - "@csstools/css-tokenizer": "^3.0.0", - "@csstools/media-query-list-parser": "^3.0.0" + "@csstools/css-parser-algorithms": "^3.0.1", + "@csstools/css-tokenizer": "^3.0.1", + "@csstools/media-query-list-parser": "^3.0.1" }, "engines": { "node": ">=18" @@ -4224,9 +4224,9 @@ } }, "node_modules/@csstools/postcss-oklab-function": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-4.0.0.tgz", - "integrity": "sha512-4dwot1KLiFRFbYZV2XeeNoXQETK/3MaNCi4BpDlJ5J4XHF+VRwcppfCcqCC+TRucWanPFFlbt+X53nIuK7JVNg==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-4.0.2.tgz", + "integrity": "sha512-2iSK/T77PHMeorakBAk/WLxSodfIJ/lmi6nxEkuruXfhGH7fByZim4Fw6ZJf4B73SVieRSH2ep8zvYkA2ZfRtA==", "dev": true, "funding": [ { @@ -4240,9 +4240,9 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^3.0.0", - "@csstools/css-parser-algorithms": "^3.0.0", - "@csstools/css-tokenizer": "^3.0.0", + "@csstools/css-color-parser": "^3.0.2", + "@csstools/css-parser-algorithms": "^3.0.1", + "@csstools/css-tokenizer": "^3.0.1", "@csstools/postcss-progressive-custom-properties": "^4.0.0", "@csstools/utilities": "^2.0.0" }, @@ -4280,9 +4280,9 @@ } }, "node_modules/@csstools/postcss-relative-color-syntax": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-3.0.0.tgz", - "integrity": "sha512-iE/mgtuUeFMpMJhhrze9pu5xSEaueCTijs7lTnJ6MoTL50H9fquQp3bFVd2haAb/fDhO/nXTu67tzsm+zXsFzA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-relative-color-syntax/-/postcss-relative-color-syntax-3.0.2.tgz", + "integrity": "sha512-aBpuUdpJBswNGfw6lOkhown2cZ0YXrMjASye56nkoRpgRe9yDF4BM1fvEuakrCDiaeoUzVaI4SF6+344BflXfQ==", "dev": true, "funding": [ { @@ -4296,9 +4296,9 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^3.0.0", - "@csstools/css-parser-algorithms": "^3.0.0", - "@csstools/css-tokenizer": "^3.0.0", + "@csstools/css-color-parser": "^3.0.2", + "@csstools/css-parser-algorithms": "^3.0.1", + "@csstools/css-tokenizer": "^3.0.1", "@csstools/postcss-progressive-custom-properties": "^4.0.0", "@csstools/utilities": "^2.0.0" }, @@ -4336,9 +4336,9 @@ } }, "node_modules/@csstools/postcss-stepped-value-functions": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-4.0.0.tgz", - "integrity": "sha512-sJUW1axQuxRyD59zr9hMJ6MoM/99UkxNc7fxJ1kFdTl1B5dS3TxvVzY1fRq1C/JsgBw6uNzfy/i52SrVNtbbXw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-4.0.1.tgz", + "integrity": "sha512-dk3KqVcIEYzy9Mvx8amoBbk123BWgd5DfjXDiPrEqxGma37PG7m/MoMmHQhuVHIjvPDHoJwyIZi2yy7j0RA5fw==", "dev": true, "funding": [ { @@ -4352,9 +4352,9 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-calc": "^2.0.0", - "@csstools/css-parser-algorithms": "^3.0.0", - "@csstools/css-tokenizer": "^3.0.0" + "@csstools/css-calc": "^2.0.1", + "@csstools/css-parser-algorithms": "^3.0.1", + "@csstools/css-tokenizer": "^3.0.1" }, "engines": { "node": ">=18" @@ -4364,9 +4364,9 @@ } }, "node_modules/@csstools/postcss-text-decoration-shorthand": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-4.0.0.tgz", - "integrity": "sha512-vyJpbr2emWy8AOmBT+41LcAaaS8Q3jOMiMZRzrdV8uZgKI1I0NiB+UM7vJuwkFPhC3oXl7XPIPtajsyEAvI3kw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-4.0.1.tgz", + "integrity": "sha512-xPZIikbx6jyzWvhms27uugIc0I4ykH4keRvoa3rxX5K7lEhkbd54rjj/dv60qOCTisoS+3bmwJTeyV1VNBrXaw==", "dev": true, "funding": [ { @@ -4380,7 +4380,7 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/color-helpers": "^4.2.1", + "@csstools/color-helpers": "^5.0.1", "postcss-value-parser": "^4.2.0" }, "engines": { @@ -4391,9 +4391,9 @@ } }, "node_modules/@csstools/postcss-trigonometric-functions": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-4.0.0.tgz", - "integrity": "sha512-M7CivX++ZOQvnF+eZ8FHg2X8GYOfSUFH6GRtr7mGeIgd38WmT1WCBogqBvz/Y5x9VUeor9EuJX2K06bP7p4BuA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-4.0.1.tgz", + "integrity": "sha512-QHOYuN3bzS/rcpAygFhJxJUtD8GuJEWF6f9Zm518Tq/cSMlcTgU+v0geyi5EqbmYxKMig2oKCKUSGqOj9gehkg==", "dev": true, "funding": [ { @@ -4407,9 +4407,9 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-calc": "^2.0.0", - "@csstools/css-parser-algorithms": "^3.0.0", - "@csstools/css-tokenizer": "^3.0.0" + "@csstools/css-calc": "^2.0.1", + "@csstools/css-parser-algorithms": "^3.0.1", + "@csstools/css-tokenizer": "^3.0.1" }, "engines": { "node": ">=18" @@ -6567,18 +6567,20 @@ } }, "node_modules/@onecx/accelerator": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/@onecx/accelerator/-/accelerator-5.3.2.tgz", - "integrity": "sha512-y/7blIu1dhoYpvyFEOQb0jdYy3wONFLA6q2DUGBquJtm6Aki3afrsR6N21An1j1+7Ov0vFerZKRwSPttMmrtMQ==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@onecx/accelerator/-/accelerator-5.8.0.tgz", + "integrity": "sha512-MYV19RYf8rsOgujFtZef2ZTg/X+7hKsQEuvsN47v0x52sgoHS8c2eJvWUtgJ9I/CBA+ilQGolSDkv4rPSK5+jg==", + "license": "Apache-2.0", "peerDependencies": { "rxjs": "7.8.1", "tslib": "^2.6.3" } }, "node_modules/@onecx/angular-accelerator": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/@onecx/angular-accelerator/-/angular-accelerator-5.3.2.tgz", - "integrity": "sha512-U7NKHcVq3iue85kzHkeQD0cMwiiPGUGrNCJuqFzfmpE+xUrpxA7TtodvZDqdVgdoZeAJvIgzuHfomRzZgofEmg==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@onecx/angular-accelerator/-/angular-accelerator-5.8.0.tgz", + "integrity": "sha512-vBofOKz+p1x8+V/cVVlV9xM1KIxxoZACMh5JlNVjEDxZ+cs4un9EE/TjkArtzl32unJ+gHCPDntt1WlcnbRt2w==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.3.0" }, @@ -6600,9 +6602,10 @@ } }, "node_modules/@onecx/angular-auth": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/@onecx/angular-auth/-/angular-auth-5.3.2.tgz", - "integrity": "sha512-u1vOZNJIfiThG2PwZbAtvP//dwKpl7/4n1ENkXcapmakxQtcuxU2ZWnYu69MY8T3F3Vgoe4zag3dAL8gB303CQ==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@onecx/angular-auth/-/angular-auth-5.8.0.tgz", + "integrity": "sha512-V90Ly1mHlGBht6VKJ1H2PEJ7mQMq3GSWpdep5cjyGY5SNCymd1rJexf96/bkWZf1lQ/IzIJbQBrFNlwdJiEXbA==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.3.0" }, @@ -6618,9 +6621,10 @@ } }, "node_modules/@onecx/angular-integration-interface": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/@onecx/angular-integration-interface/-/angular-integration-interface-5.3.2.tgz", - "integrity": "sha512-nh0L4Z17BknZJvq+eHXlCAGHaaPjNYxitJERqcsU0RFsx86xa1vvO3BLUppAoakc1f9Mof5mqV0ZMR91MSSALw==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@onecx/angular-integration-interface/-/angular-integration-interface-5.8.0.tgz", + "integrity": "sha512-KtP4eo/mR+VkXswM6rANv+5rZNGN4yX5TSrsyIlGUwlhAma8NZqWvC3EvxupTQtBJluk1LvotbcGi6q8zjyNsg==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.3.0" }, @@ -6631,9 +6635,10 @@ } }, "node_modules/@onecx/angular-remote-components": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/@onecx/angular-remote-components/-/angular-remote-components-5.3.2.tgz", - "integrity": "sha512-4GWk3jqx3pSiR73PHkJ4zNUIs8Zq29xjUCew1fKgAieCFbl47tMjFNhdY+4+Vq8dFsCUltJDXn70nWKAXmh0eQ==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@onecx/angular-remote-components/-/angular-remote-components-5.8.0.tgz", + "integrity": "sha512-dFTm1OYciqGx4j/+cMJUUjK9dEqjWkoHLq89WMHmvEwVVjTVYFtPQAqBtgd4iTCiotAYY9fqPAi+laR99vqJjw==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.3.0" }, @@ -6648,9 +6653,10 @@ } }, "node_modules/@onecx/angular-testing": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/@onecx/angular-testing/-/angular-testing-5.3.2.tgz", - "integrity": "sha512-OkCtdQ+a0Co2pttzfCD8W+VX1UZGfUDGSSaNtggE6rbWUD4R1mayileELL0dpX9ML1XfGUAFo6tkIPly27ObnA==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@onecx/angular-testing/-/angular-testing-5.8.0.tgz", + "integrity": "sha512-mRRpVAouHtZ1UrsaxqPwP5MAaR4QgjKSUPyiQ4WurqgbgDm5ygUlLk3Vg7h3ADePK3TPTjYGZ8L+7u0WbWbhLQ==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.3.0" }, @@ -6660,9 +6666,10 @@ } }, "node_modules/@onecx/angular-webcomponents": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/@onecx/angular-webcomponents/-/angular-webcomponents-5.3.2.tgz", - "integrity": "sha512-1ZATY8NRljMDpCFSMwlsJd2XB+CW+mbDRuZF6vpW6e9KWhbcZpoBCh+C95gZmSQtg7rLDDUNbHb0q3bPAeE7uA==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@onecx/angular-webcomponents/-/angular-webcomponents-5.8.0.tgz", + "integrity": "sha512-yZbTeytoxkDqo/40Mxr4g4T03MECvyhNrDxA3lX3lZMSkhUzp4UJYxTqj8DLZ/+HX3URdrih66VocqHMpHzEcw==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.3.0" }, @@ -6677,9 +6684,10 @@ } }, "node_modules/@onecx/integration-interface": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/@onecx/integration-interface/-/integration-interface-5.3.2.tgz", - "integrity": "sha512-Odwuserr6/Bodu8Yue03fvZijjBxFmz658z0dW6IMFItJ9v+BO6aZZQGqIxFiUeJr7jTdKp7bm2oiqrYxSQqDw==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@onecx/integration-interface/-/integration-interface-5.8.0.tgz", + "integrity": "sha512-PQ3m2ZBZDYk/gwbGnReyTFIKhlzgiEgt++K/xDu3+BBu4zxOAPHta/jUkg9fZAYEttHOMhGDl+/l1Or44tgSDA==", + "license": "Apache-2.0", "peerDependencies": { "@onecx/accelerator": "^5", "rxjs": "7.8.1", @@ -6687,9 +6695,10 @@ } }, "node_modules/@onecx/keycloak-auth": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/@onecx/keycloak-auth/-/keycloak-auth-5.3.2.tgz", - "integrity": "sha512-/v9tBcdsAiATZZbqUieEQUbGK4WQ4CM+BDLhk/HrlJzkLvJhJubTYRh7gcOqcY1zXNkdS3NVMfXF5eGP/DCJzw==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@onecx/keycloak-auth/-/keycloak-auth-5.8.0.tgz", + "integrity": "sha512-+2rOYjdLWhvII7NH9cRgD5pRonB3TT4WqUPN+NpUv4GX5A2efFQKyjdDQLnzlI7e8uiqGGaa8dLXvX+nFgG/NQ==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.3.0" }, @@ -6704,9 +6713,10 @@ } }, "node_modules/@onecx/portal-integration-angular": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/@onecx/portal-integration-angular/-/portal-integration-angular-5.3.2.tgz", - "integrity": "sha512-Zp6saWd7Bm8Rzk/GQvX6p8B9FAE49QjBGJ9C6lE20P2x4vt8j/U4WE76Pd7pGA2tHy1FVz8jMVYWMWFUcMS/gg==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@onecx/portal-integration-angular/-/portal-integration-angular-5.8.0.tgz", + "integrity": "sha512-aW5tTnj/ySGm8RBZsZnTAalFJQIBDVk/5g2kuz/liPKY1zUqhMxZQdkOlan8Mq/ZJRH1r/BvlJUYVbClvNkIdg==", + "license": "Apache-2.0", "dependencies": { "tslib": "^2.3.0" }, @@ -6738,9 +6748,10 @@ } }, "node_modules/@onecx/portal-layout-styles": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/@onecx/portal-layout-styles/-/portal-layout-styles-5.3.2.tgz", - "integrity": "sha512-3QzaZkr8MrcwgbqLdU0etUQad2EavXgk8WcD2KypRhJ6Py7lwCI6v2wzApNprhNYMM+CczNNtewqoSB/RFU0iA==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@onecx/portal-layout-styles/-/portal-layout-styles-5.8.0.tgz", + "integrity": "sha512-07V5zjOHNjvVYrkki5EasOsKoaHBZDNCA6ydHWW8tJ2nxlLyRb+/xDs9G39XANAgA+1Std9Ut6bXY6wq73DIgQ==", + "license": "Apache-2.0", "peerDependencies": { "tslib": "^2.6.3" } @@ -8510,12 +8521,12 @@ } }, "node_modules/@types/node": { - "version": "22.2.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.2.0.tgz", - "integrity": "sha512-bm6EG6/pCpkxDf/0gDNDdtDILMOHgaQBVOJGdwsqClnxA3xL6jtMv76rLBc006RVMWbmaf0xbmom4Z/5o2nRkQ==", + "version": "22.5.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.0.tgz", + "integrity": "sha512-DkFrJOe+rfdHTqqMg0bSNlGlQ85hSoh2TPzZyhHsXnMtligRWpxUySiyw8FY14ITt24HVCiQPWxS3KO/QlGmWg==", "license": "MIT", "dependencies": { - "undici-types": "~6.13.0" + "undici-types": "~6.19.2" } }, "node_modules/@types/node-forge": { @@ -17599,9 +17610,9 @@ "license": "MIT" }, "node_modules/ng-packagr": { - "version": "18.1.0", - "resolved": "https://registry.npmjs.org/ng-packagr/-/ng-packagr-18.1.0.tgz", - "integrity": "sha512-QfqiCIuRX7VhdHqE1goZIuaFh0aMmFTF6r+gP+iq7YyIookXlZWswEZYcnpyRw52Q1RHFdUJRm7foBRFyEXTLA==", + "version": "18.2.1", + "resolved": "https://registry.npmjs.org/ng-packagr/-/ng-packagr-18.2.1.tgz", + "integrity": "sha512-dy9ZDpZb3QpAz+Y/m8VAu7ctr2VrnRU3gmQwJagnNybVJtCsKn3lZA3IW7Z7GTLoG5IALSPouiCgiB/C8ozv7w==", "dev": true, "license": "MIT", "dependencies": { @@ -19489,9 +19500,9 @@ } }, "node_modules/postcss-color-functional-notation": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-7.0.0.tgz", - "integrity": "sha512-WjOCE1FJb2xIeFvF40CISn9yUMtzwkgjdbjXmWjbrC1wAgQiB763h7bsip9piGtAkbeM5Pi9hVIDSmtbWrlqLw==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-7.0.2.tgz", + "integrity": "sha512-c2WkR0MS73s+P5SgY1KBaSEE61Rj+miW095rkWDnMQxbTCQkp6y/jft8U0QMxEsI4k1Pd4PdV+TP9/1zIDR6XQ==", "dev": true, "funding": [ { @@ -19505,9 +19516,9 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^3.0.0", - "@csstools/css-parser-algorithms": "^3.0.0", - "@csstools/css-tokenizer": "^3.0.0", + "@csstools/css-color-parser": "^3.0.2", + "@csstools/css-parser-algorithms": "^3.0.1", + "@csstools/css-tokenizer": "^3.0.1", "@csstools/postcss-progressive-custom-properties": "^4.0.0", "@csstools/utilities": "^2.0.0" }, @@ -19573,9 +19584,9 @@ } }, "node_modules/postcss-custom-media": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-11.0.0.tgz", - "integrity": "sha512-tZ4qTYSOqH7YFi8psEQB2v2zBRbbJex9FgPef2Qss8DlWxnYpBNHquvMmVBR8uIt6hW0+prDsg7UJDp6XLIf8w==", + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-11.0.1.tgz", + "integrity": "sha512-vfBliYVgEEJUFXCRPQ7jYt1wlD322u+/5GT0tZqMVYFInkpDHfjhU3nk2quTRW4uFc/umOOqLlxvrEOZRvloMw==", "dev": true, "funding": [ { @@ -19589,10 +19600,10 @@ ], "license": "MIT", "dependencies": { - "@csstools/cascade-layer-name-parser": "^2.0.0", - "@csstools/css-parser-algorithms": "^3.0.0", - "@csstools/css-tokenizer": "^3.0.0", - "@csstools/media-query-list-parser": "^3.0.0" + "@csstools/cascade-layer-name-parser": "^2.0.1", + "@csstools/css-parser-algorithms": "^3.0.1", + "@csstools/css-tokenizer": "^3.0.1", + "@csstools/media-query-list-parser": "^3.0.1" }, "engines": { "node": ">=18" @@ -19602,9 +19613,9 @@ } }, "node_modules/postcss-custom-properties": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-14.0.0.tgz", - "integrity": "sha512-GD/suWYQAplXJujsyOswYP+oX9xs29eBNwGloPj4Ub+3/Rq1Set+ZeGmHJfN2Y2+x9vUxAX4eeNJFmtk6VBv4A==", + "version": "14.0.1", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-14.0.1.tgz", + "integrity": "sha512-SB4GjuZjIq5GQFNbxFrirQPbkdbJooyNy8bh+fcJ8ZG0oasJTflTTtR4geb56h+FBVDIb9Hx4v/NiG2caOj8nQ==", "dev": true, "funding": [ { @@ -19618,9 +19629,9 @@ ], "license": "MIT", "dependencies": { - "@csstools/cascade-layer-name-parser": "^2.0.0", - "@csstools/css-parser-algorithms": "^3.0.0", - "@csstools/css-tokenizer": "^3.0.0", + "@csstools/cascade-layer-name-parser": "^2.0.1", + "@csstools/css-parser-algorithms": "^3.0.1", + "@csstools/css-tokenizer": "^3.0.1", "@csstools/utilities": "^2.0.0", "postcss-value-parser": "^4.2.0" }, @@ -19632,9 +19643,9 @@ } }, "node_modules/postcss-custom-selectors": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-8.0.0.tgz", - "integrity": "sha512-nW6RWjH+jaWvXEgm/AzMhtVjMXcKmrTWsM/eJn/ujnJI5uEOPTxvl3eCFFCFKC2DiZcOP5HLH5EeX0DIemFzBQ==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-8.0.1.tgz", + "integrity": "sha512-2McIpyhAeKhUzVqrP4ZyMBpK5FuD+Y9tpQwhcof49652s7gez8057cSaOg/epYcKlztSYxb0GHfi7W5h3JoGUg==", "dev": true, "funding": [ { @@ -19648,9 +19659,9 @@ ], "license": "MIT", "dependencies": { - "@csstools/cascade-layer-name-parser": "^2.0.0", - "@csstools/css-parser-algorithms": "^3.0.0", - "@csstools/css-tokenizer": "^3.0.0", + "@csstools/cascade-layer-name-parser": "^2.0.1", + "@csstools/css-parser-algorithms": "^3.0.1", + "@csstools/css-tokenizer": "^3.0.1", "postcss-selector-parser": "^6.1.0" }, "engines": { @@ -19845,9 +19856,9 @@ } }, "node_modules/postcss-lab-function": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-7.0.0.tgz", - "integrity": "sha512-Qyrlog4fAJcbwiWHiwkpDLlSRnvk2dFYqygQ29sMbhCoq6B/Jtj89u89VFNaAatW8KkDDAeNzVvabK9NBD9hJA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-7.0.2.tgz", + "integrity": "sha512-h4ARGLIBtC1PmCHsLgTWWj8j1i1CXoaht4A5RlITDX2z9AeFBak0YlY6sdF4oJGljrep+Dg2SSccIj4QnFbRDg==", "dev": true, "funding": [ { @@ -19861,9 +19872,9 @@ ], "license": "MIT-0", "dependencies": { - "@csstools/css-color-parser": "^3.0.0", - "@csstools/css-parser-algorithms": "^3.0.0", - "@csstools/css-tokenizer": "^3.0.0", + "@csstools/css-color-parser": "^3.0.2", + "@csstools/css-parser-algorithms": "^3.0.1", + "@csstools/css-tokenizer": "^3.0.1", "@csstools/postcss-progressive-custom-properties": "^4.0.0", "@csstools/utilities": "^2.0.0" }, @@ -20116,9 +20127,9 @@ } }, "node_modules/postcss-preset-env": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-10.0.0.tgz", - "integrity": "sha512-zoLkIGK30hkLhHVD6jNqcO6gDVDzyo10s42XG++Gsy9z6gk1X/UpI2Zn28ylGD9VnQSSdQMzuk535rRq2JmWkg==", + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-10.0.2.tgz", + "integrity": "sha512-PMxqnz0RQYMUmUi6p4P7BhC9EVGyEUCIdwn4vJ7Fy1jvc2QP4mMH75BSBB1mBFqjl3x4xYwyCNMhGZ8y0+/qOA==", "dev": true, "funding": [ { @@ -20133,34 +20144,34 @@ "license": "MIT-0", "dependencies": { "@csstools/postcss-cascade-layers": "^5.0.0", - "@csstools/postcss-color-function": "^4.0.0", - "@csstools/postcss-color-mix-function": "^3.0.0", - "@csstools/postcss-content-alt-text": "^2.0.0", - "@csstools/postcss-exponential-functions": "^2.0.0", + "@csstools/postcss-color-function": "^4.0.2", + "@csstools/postcss-color-mix-function": "^3.0.2", + "@csstools/postcss-content-alt-text": "^2.0.1", + "@csstools/postcss-exponential-functions": "^2.0.1", "@csstools/postcss-font-format-keywords": "^4.0.0", - "@csstools/postcss-gamut-mapping": "^2.0.0", - "@csstools/postcss-gradients-interpolation-method": "^5.0.0", - "@csstools/postcss-hwb-function": "^4.0.0", + "@csstools/postcss-gamut-mapping": "^2.0.2", + "@csstools/postcss-gradients-interpolation-method": "^5.0.2", + "@csstools/postcss-hwb-function": "^4.0.2", "@csstools/postcss-ic-unit": "^4.0.0", "@csstools/postcss-initial": "^2.0.0", "@csstools/postcss-is-pseudo-class": "^5.0.0", - "@csstools/postcss-light-dark-function": "^2.0.0", + "@csstools/postcss-light-dark-function": "^2.0.2", "@csstools/postcss-logical-float-and-clear": "^3.0.0", "@csstools/postcss-logical-overflow": "^2.0.0", "@csstools/postcss-logical-overscroll-behavior": "^2.0.0", "@csstools/postcss-logical-resize": "^3.0.0", - "@csstools/postcss-logical-viewport-units": "^3.0.0", - "@csstools/postcss-media-minmax": "^2.0.0", - "@csstools/postcss-media-queries-aspect-ratio-number-values": "^3.0.0", + "@csstools/postcss-logical-viewport-units": "^3.0.1", + "@csstools/postcss-media-minmax": "^2.0.1", + "@csstools/postcss-media-queries-aspect-ratio-number-values": "^3.0.1", "@csstools/postcss-nested-calc": "^4.0.0", "@csstools/postcss-normalize-display-values": "^4.0.0", - "@csstools/postcss-oklab-function": "^4.0.0", + "@csstools/postcss-oklab-function": "^4.0.2", "@csstools/postcss-progressive-custom-properties": "^4.0.0", - "@csstools/postcss-relative-color-syntax": "^3.0.0", + "@csstools/postcss-relative-color-syntax": "^3.0.2", "@csstools/postcss-scope-pseudo-class": "^4.0.0", - "@csstools/postcss-stepped-value-functions": "^4.0.0", - "@csstools/postcss-text-decoration-shorthand": "^4.0.0", - "@csstools/postcss-trigonometric-functions": "^4.0.0", + "@csstools/postcss-stepped-value-functions": "^4.0.1", + "@csstools/postcss-text-decoration-shorthand": "^4.0.1", + "@csstools/postcss-trigonometric-functions": "^4.0.1", "@csstools/postcss-unset-value": "^4.0.0", "autoprefixer": "^10.4.19", "browserslist": "^4.23.1", @@ -20170,12 +20181,12 @@ "cssdb": "^8.1.0", "postcss-attribute-case-insensitive": "^7.0.0", "postcss-clamp": "^4.1.0", - "postcss-color-functional-notation": "^7.0.0", + "postcss-color-functional-notation": "^7.0.2", "postcss-color-hex-alpha": "^10.0.0", "postcss-color-rebeccapurple": "^10.0.0", - "postcss-custom-media": "^11.0.0", - "postcss-custom-properties": "^14.0.0", - "postcss-custom-selectors": "^8.0.0", + "postcss-custom-media": "^11.0.1", + "postcss-custom-properties": "^14.0.1", + "postcss-custom-selectors": "^8.0.1", "postcss-dir-pseudo-class": "^9.0.0", "postcss-double-position-gradients": "^6.0.0", "postcss-focus-visible": "^10.0.0", @@ -20183,7 +20194,7 @@ "postcss-font-variant": "^5.0.0", "postcss-gap-properties": "^6.0.0", "postcss-image-set-function": "^7.0.0", - "postcss-lab-function": "^7.0.0", + "postcss-lab-function": "^7.0.2", "postcss-logical": "^8.0.0", "postcss-nesting": "^13.0.0", "postcss-opacity-percentage": "^2.0.0", @@ -21754,9 +21765,9 @@ } }, "node_modules/sonarqube-scanner": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/sonarqube-scanner/-/sonarqube-scanner-4.2.0.tgz", - "integrity": "sha512-i3R1QK3WQxIu6WkjEe0jzKTkLcZOK57OEWRbezuRZq5OzYkqklFTIzZ6cG2oEpFJRRhUynqxisLN2EH8Bp2ESQ==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/sonarqube-scanner/-/sonarqube-scanner-4.2.1.tgz", + "integrity": "sha512-7HQfyUJ48YVqI/buk+CVvcof5Occz/nRIazjOPzx24NlyXrEgs0ytAF5MqinxQq0iRcTwOvxutumlRIiFTCy9w==", "dev": true, "license": "LGPL-3.0-only", "dependencies": { @@ -23072,9 +23083,9 @@ } }, "node_modules/undici-types": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.13.0.tgz", - "integrity": "sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==", + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", "license": "MIT" }, "node_modules/unicode-canonical-property-names-ecmascript": { diff --git a/package.json b/package.json index 988475c..f6ec004 100644 --- a/package.json +++ b/package.json @@ -52,17 +52,17 @@ "@ngrx/router-store": "^18.0.1", "@ngx-translate/core": "^15.0.0", "@ngx-translate/http-loader": "^8.0.0", - "@onecx/accelerator": "^5.3.1", - "@onecx/angular-accelerator": "^5.3.1", - "@onecx/angular-auth": "^5.3.1", - "@onecx/angular-integration-interface": "^5.3.1", - "@onecx/angular-remote-components": "^5.3.1", - "@onecx/angular-testing": "^5.3.1", - "@onecx/angular-webcomponents": "^5.3.1", - "@onecx/integration-interface": "^5.3.1", - "@onecx/keycloak-auth": "^5.3.1", - "@onecx/portal-integration-angular": "^5.3.1", - "@onecx/portal-layout-styles": "^5.3.1", + "@onecx/accelerator": "^5.8.0", + "@onecx/angular-accelerator": "^5.8.0", + "@onecx/angular-auth": "^5.8.0", + "@onecx/angular-integration-interface": "^5.8.0", + "@onecx/angular-remote-components": "^5.8.0", + "@onecx/angular-testing": "^5.8.0", + "@onecx/angular-webcomponents": "^5.8.0", + "@onecx/integration-interface": "^5.8.0", + "@onecx/keycloak-auth": "^5.8.0", + "@onecx/portal-integration-angular": "^5.8.0", + "@onecx/portal-layout-styles": "^5.8.0", "@webcomponents/webcomponentsjs": "^2.8.0", "file-saver": "^2.0.5", "keycloak-angular": "^16.0.1", @@ -93,7 +93,7 @@ "@svgr/webpack": "^8.1.0", "@swc-node/register": "^1.10.9", "@types/jasmine": "~5.1.4", - "@types/node": "~22.2.0", + "@types/node": "~22.5.0", "@typescript-eslint/eslint-plugin": "^7.18.0", "@typescript-eslint/parser": "^7.18.0", "css-loader": "^7.1.2", @@ -110,16 +110,16 @@ "karma-jasmine": "^5.1.0", "karma-jasmine-html-reporter": "^2.1.0", "karma-sonarqube-unit-reporter": "^0.0.23", - "ng-packagr": "18.1.0", + "ng-packagr": "18.2.1", "ngx-build-plus": "^18.0.0", "ngx-translate-testing": "^7.0.0", "postcss": "8.4.41", "postcss-import": "~16.1.0", - "postcss-preset-env": "~10.0.0", + "postcss-preset-env": "~10.0.2", "postcss-url": "~10.1.3", "prettier": "^3.3.3", "sonar-scanner": "^3.1.0", - "sonarqube-scanner": "^4.0.1", + "sonarqube-scanner": "^4.2.1", "style-loader": "^4.0.0", "ts-node": "10.9.2", "typescript": "5.5", diff --git a/src/app/announcement/announcement.module.ts b/src/app/announcement/announcement.module.ts index 9500695..35acc3b 100644 --- a/src/app/announcement/announcement.module.ts +++ b/src/app/announcement/announcement.module.ts @@ -9,12 +9,18 @@ import { SharedModule } from '../shared/shared.module' import { AnnouncementSearchComponent } from './announcement-search/announcement-search.component' import { AnnouncementCriteriaComponent } from './announcement-search/announcement-criteria/announcement-criteria.component' import { AnnouncementDetailComponent } from './announcement-detail/announcement-detail.component' +import { OneCXAnnouncementListActiveComponent } from '../remotes/announcement-list-active/announcement-list-active.component' const routes: Routes = [ { path: '', component: AnnouncementSearchComponent, pathMatch: 'full' + }, + { + path: 'list-active', + component: OneCXAnnouncementListActiveComponent, + pathMatch: 'full' } ] @NgModule({ diff --git a/src/app/remotes/announcement-banner/announcement-banner.component.spec.ts b/src/app/remotes/announcement-banner/announcement-banner.component.spec.ts index 12c2ad3..9e82aa9 100644 --- a/src/app/remotes/announcement-banner/announcement-banner.component.spec.ts +++ b/src/app/remotes/announcement-banner/announcement-banner.component.spec.ts @@ -18,7 +18,7 @@ import { } from 'src/app/shared/generated' class MockAppStateService { - currentPortal$ = { + currentWorkspace$ = { asObservable: () => of({ workspaceName: 'wsName' diff --git a/src/app/remotes/announcement-banner/announcement-banner.component.ts b/src/app/remotes/announcement-banner/announcement-banner.component.ts index 621dfc1..7310f27 100644 --- a/src/app/remotes/announcement-banner/announcement-banner.component.ts +++ b/src/app/remotes/announcement-banner/announcement-banner.component.ts @@ -73,7 +73,7 @@ export class OneCXAnnouncementBannerComponent implements ocxRemoteComponent, ocx this.userService.lang$.subscribe((lang) => this.translateService.use(lang)) combineLatest([ this.baseUrl.asObservable(), - this.appStateService.currentPortal$.asObservable(), + this.appStateService.currentWorkspace$.asObservable(), this.appStateService.currentMfe$.asObservable() ]) .pipe( diff --git a/src/app/remotes/announcement-list-active/announcement-list-active.component.bootstrap.ts b/src/app/remotes/announcement-list-active/announcement-list-active.component.bootstrap.ts new file mode 100644 index 0000000..f247e21 --- /dev/null +++ b/src/app/remotes/announcement-list-active/announcement-list-active.component.bootstrap.ts @@ -0,0 +1,13 @@ +import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http' +import { importProvidersFrom } from '@angular/core' +import { OneCXAnnouncementListActiveComponent } from './announcement-list-active.component' +import { bootstrapRemoteComponent } from '@onecx/angular-webcomponents' +import { AngularAuthModule } from '@onecx/angular-auth' +import { environment } from 'src/environments/environment' + +bootstrapRemoteComponent( + OneCXAnnouncementListActiveComponent, + 'ocx-announcement-list-active-component', + environment.production, + [provideHttpClient(withInterceptorsFromDi()), importProvidersFrom(AngularAuthModule)] +) diff --git a/src/app/remotes/announcement-list-active/announcement-list-active.component.html b/src/app/remotes/announcement-list-active/announcement-list-active.component.html new file mode 100644 index 0000000..fd8b741 --- /dev/null +++ b/src/app/remotes/announcement-list-active/announcement-list-active.component.html @@ -0,0 +1,63 @@ + + + +
+
+ {{ limitText(announcement.title, 60) }} +
+ + + + +
+
+
+
diff --git a/src/app/remotes/announcement-list-active/announcement-list-active.component.scss b/src/app/remotes/announcement-list-active/announcement-list-active.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/src/app/remotes/announcement-list-active/announcement-list-active.component.spec.ts b/src/app/remotes/announcement-list-active/announcement-list-active.component.spec.ts new file mode 100644 index 0000000..7e4293a --- /dev/null +++ b/src/app/remotes/announcement-list-active/announcement-list-active.component.spec.ts @@ -0,0 +1,161 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing' + +import { ReplaySubject, of, throwError } from 'rxjs' +import { TranslateTestingModule } from 'ngx-translate-testing' +import { provideHttpClient } from '@angular/common/http' +import { provideHttpClientTesting } from '@angular/common/http/testing' +import { CarouselModule } from 'primeng/carousel' +import { TagModule } from 'primeng/tag' + +import { BASE_URL, RemoteComponentConfig } from '@onecx/angular-remote-components' +import { AppConfigService, AppStateService } from '@onecx/portal-integration-angular' +import { OneCXAnnouncementListActiveComponent } from './announcement-list-active.component' +import { + Announcement, + AnnouncementInternalAPIService, + AnnouncementPriorityType, + AnnouncementStatus +} from 'src/app/shared/generated' + +class MockAppStateService { + currentWorkspace$ = { + asObservable: () => + of({ + workspaceName: 'wsName' + }) + } + currentMfe$ = { + asObservable: () => + of({ + productName: 'productName' + }) + } +} + +const importantAnnouncement: Announcement = { + id: 'importantAnncmtId', + priority: AnnouncementPriorityType.Important, + status: AnnouncementStatus.Active +} +const normalAnnouncement: Announcement = { + priority: AnnouncementPriorityType.Normal, + status: AnnouncementStatus.Active +} +const lowPrioAnnouncement: Announcement = { + priority: AnnouncementPriorityType.Low +} + +describe('AnnouncementListActiveComponent', () => { + let component: OneCXAnnouncementListActiveComponent + let fixture: ComponentFixture + let mockAppStateService: MockAppStateService + + const apiServiceSpy = { + searchAnnouncementBanners: jasmine + .createSpy('searchAnnouncementBanners') + .and.returnValue(of({ stream: [normalAnnouncement] })) + } + + let baseUrlSubject: ReplaySubject + beforeEach(() => { + mockAppStateService = new MockAppStateService() + baseUrlSubject = new ReplaySubject(1) + + TestBed.configureTestingModule({ + declarations: [], + imports: [ + TranslateTestingModule.withTranslations({ + en: require('../../../assets/i18n/en.json') + }).withDefaultLanguage('en') + ], + providers: [ + { provide: AppStateService, useValue: mockAppStateService }, + provideHttpClient(), + provideHttpClientTesting(), + { + provide: BASE_URL, + useValue: baseUrlSubject + } + ] + }) + .overrideComponent(OneCXAnnouncementListActiveComponent, { + set: { + imports: [TranslateTestingModule, CarouselModule, TagModule], + providers: [ + { provide: AnnouncementInternalAPIService, useValue: apiServiceSpy }, + { provide: AppConfigService }, + { provide: AppStateService, useValue: mockAppStateService } + ] + } + }) + .compileComponents() + + baseUrlSubject.next('base_url_mock') + + apiServiceSpy.searchAnnouncementBanners.calls.reset() + }) + + function initializeComponent() { + fixture = TestBed.createComponent(OneCXAnnouncementListActiveComponent) + component = fixture.componentInstance + fixture.detectChanges() + } + + it('should create', () => { + initializeComponent() + expect(component).toBeTruthy() + }) + + it('should load announcements when the component starts', () => { + apiServiceSpy.searchAnnouncementBanners.and.returnValue( + of({ stream: [normalAnnouncement, importantAnnouncement, lowPrioAnnouncement] }) + ) + + initializeComponent() + + expect(component).toBeTruthy() + component['announcementsSubject'].subscribe((anncmts) => { + expect(anncmts).toEqual([normalAnnouncement, importantAnnouncement, lowPrioAnnouncement]) + }) + }) + + it('should catch an error if loading announcements fails', () => { + apiServiceSpy.searchAnnouncementBanners.and.returnValue(throwError(() => new Error())) + + initializeComponent() + + expect(component).toBeTruthy() + component['announcementsSubject'].subscribe((anncmts) => { + expect(anncmts).toEqual([]) + }) + }) + + describe('RemoteComponent initialization', () => { + it('should call ocxInitRemoteComponent with the correct config', () => { + const mockConfig: RemoteComponentConfig = { + appId: 'appId', + productName: 'prodName', + permissions: ['permission'], + baseUrl: 'base' + } + spyOn(component, 'ocxInitRemoteComponent') + + component.ocxRemoteComponentConfig = mockConfig + + expect(component.ocxInitRemoteComponent).toHaveBeenCalledWith(mockConfig) + }) + + it('should initialize the remote component', (done: DoneFn) => { + initializeComponent() + + component.ocxInitRemoteComponent({ + baseUrl: 'base_url' + } as RemoteComponentConfig) + + baseUrlSubject.asObservable().subscribe((item) => { + expect(item).toEqual('base_url') + done() + }) + }) + }) +}) diff --git a/src/app/remotes/announcement-list-active/announcement-list-active.component.ts b/src/app/remotes/announcement-list-active/announcement-list-active.component.ts new file mode 100644 index 0000000..bdff4af --- /dev/null +++ b/src/app/remotes/announcement-list-active/announcement-list-active.component.ts @@ -0,0 +1,96 @@ +import { CommonModule, Location } from '@angular/common' +import { HttpClient } from '@angular/common/http' +import { Component, Inject, Input } from '@angular/core' +import { BehaviorSubject, Observable, ReplaySubject, catchError, combineLatest, map, mergeMap, of } from 'rxjs' +import { TranslateLoader, TranslateModule, TranslateService } from '@ngx-translate/core' + +import { TagModule } from 'primeng/tag' +import { TooltipModule } from 'primeng/tooltip' + +import { AppStateService } from '@onecx/angular-integration-interface' +import { + AngularRemoteComponentsModule, + BASE_URL, + RemoteComponentConfig, + ocxRemoteComponent, + provideTranslateServiceForRoot, + ocxRemoteWebcomponent +} from '@onecx/angular-remote-components' +import { AppConfigService, UserService, createRemoteComponentTranslateLoader } from '@onecx/portal-integration-angular' +import { AnnouncementAbstract, AnnouncementInternalAPIService, Configuration } from 'src/app/shared/generated' +import { SharedModule } from 'src/app/shared/shared.module' +import { environment } from 'src/environments/environment' +import { limitText } from 'src/app/shared/utils' + +@Component({ + selector: 'app-announcement-list-active', + standalone: true, + imports: [AngularRemoteComponentsModule, CommonModule, TranslateModule, SharedModule, TagModule, TooltipModule], + providers: [ + { + provide: BASE_URL, + useValue: new ReplaySubject(1) + }, + provideTranslateServiceForRoot({ + isolate: true, + loader: { + provide: TranslateLoader, + useFactory: createRemoteComponentTranslateLoader, + deps: [HttpClient, BASE_URL] + } + }) + ], + templateUrl: './announcement-list-active.component.html', + styleUrls: ['./announcement-list-active.component.scss'] +}) +export class OneCXAnnouncementListActiveComponent implements ocxRemoteComponent, ocxRemoteWebcomponent { + private currentDate = new Date().toISOString() + private announcementsSubject = new BehaviorSubject([]) + announcements$: Observable = this.announcementsSubject.asObservable() + + limitText = limitText + + constructor( + @Inject(BASE_URL) private baseUrl: ReplaySubject, + private translateService: TranslateService, + private apiV1: AnnouncementInternalAPIService, + private appStateService: AppStateService, + private userService: UserService, + private appConfigService: AppConfigService + ) { + this.userService.lang$.subscribe((lang) => this.translateService.use(lang)) + combineLatest([this.baseUrl.asObservable(), this.appStateService.currentWorkspace$.asObservable()]) + .pipe( + mergeMap(([_, currentWorkspace]) => { + return this.apiV1 + .searchAnnouncementBanners({ + announcementBannerSearchCriteria: { + workspaceName: currentWorkspace.workspaceName, + currentDate: this.currentDate + } + }) + .pipe( + map((results) => { + return results.stream + }), + catchError(() => { + return of([]) + }) + ) + }) + ) + .subscribe((announcements) => this.announcementsSubject.next(announcements)) + } + + @Input() set ocxRemoteComponentConfig(config: RemoteComponentConfig) { + this.ocxInitRemoteComponent(config) + } + + ocxInitRemoteComponent(config: RemoteComponentConfig): void { + this.apiV1.configuration = new Configuration({ + basePath: Location.joinWithSlash(config.baseUrl, environment.apiPrefix) + }) + this.baseUrl.next(config.baseUrl) + this.appConfigService.init(config['baseUrl']) + } +} diff --git a/tsconfig.app.json b/tsconfig.app.json index a140ceb..df83f4c 100644 --- a/tsconfig.app.json +++ b/tsconfig.app.json @@ -11,7 +11,8 @@ "src/main.ts", "src/polyfills.ts", "src/app/onecx-announcement-remote.module.ts", - "src/app/remotes/announcement-banner/announcement-banner.component.bootstrap.ts" + "src/app/remotes/announcement-banner/announcement-banner.component.bootstrap.ts", + "src/app/remotes/announcement-list-active/announcement-list-active.component.bootstrap.ts" ], "include": ["src/**/*.ts", "src/**/*.d.ts"], "exclude": ["src/test.ts", "src/**/*.spec.ts"] diff --git a/webpack.config.js b/webpack.config.js index 2903e44..b934a70 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -7,7 +7,9 @@ const config = withModuleFederationPlugin({ exposes: { './OneCXAnnouncementModule': 'src/bootstrap.ts', './OneCXAnnouncementBannerComponent': - 'src/app/remotes/announcement-banner/announcement-banner.component.bootstrap.ts' + 'src/app/remotes/announcement-banner/announcement-banner.component.bootstrap.ts', + './OneCXAnnouncementListActiveComponent': + 'src/app/remotes/announcement-list-active/announcement-list-active.component.bootstrap.ts' }, shared: share({ '@angular/core': { requiredVersion: 'auto', includeSecondaries: true }, From 08eb7a7663061e853d57e5786c31a07ce530cb9b Mon Sep 17 00:00:00 2001 From: Christian Badura <93912698+cbadura@users.noreply.github.com> Date: Wed, 28 Aug 2024 07:04:45 +0200 Subject: [PATCH 2/2] Fix list active remote (#208) * feat: set up remote component * feat: finish remote component first draft * feat: list active tests * fix: bump deps * fix: banner tests * fix: baseurl in remote component * fix: tooltips * fix: bump deps --------- Co-authored-by: Christian Badura --- package-lock.json | 88 +++++++++---------- package.json | 22 ++--- .../announcement-list-active.component.html | 10 +-- .../announcement-list-active.component.ts | 2 +- 4 files changed, 61 insertions(+), 61 deletions(-) diff --git a/package-lock.json b/package-lock.json index ac59255..6f0c17b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26,17 +26,17 @@ "@ngrx/router-store": "^18.0.1", "@ngx-translate/core": "^15.0.0", "@ngx-translate/http-loader": "^8.0.0", - "@onecx/accelerator": "^5.8.0", - "@onecx/angular-accelerator": "^5.8.0", - "@onecx/angular-auth": "^5.8.0", - "@onecx/angular-integration-interface": "^5.8.0", - "@onecx/angular-remote-components": "^5.8.0", - "@onecx/angular-testing": "^5.8.0", - "@onecx/angular-webcomponents": "^5.8.0", - "@onecx/integration-interface": "^5.8.0", - "@onecx/keycloak-auth": "^5.8.0", - "@onecx/portal-integration-angular": "^5.8.0", - "@onecx/portal-layout-styles": "^5.8.0", + "@onecx/accelerator": "^5.9.0", + "@onecx/angular-accelerator": "^5.9.0", + "@onecx/angular-auth": "^5.9.0", + "@onecx/angular-integration-interface": "^5.9.0", + "@onecx/angular-remote-components": "^5.9.0", + "@onecx/angular-testing": "^5.9.0", + "@onecx/angular-webcomponents": "^5.9.0", + "@onecx/integration-interface": "^5.9.0", + "@onecx/keycloak-auth": "^5.9.0", + "@onecx/portal-integration-angular": "^5.9.0", + "@onecx/portal-layout-styles": "^5.9.0", "@webcomponents/webcomponentsjs": "^2.8.0", "file-saver": "^2.0.5", "keycloak-angular": "^16.0.1", @@ -6567,9 +6567,9 @@ } }, "node_modules/@onecx/accelerator": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@onecx/accelerator/-/accelerator-5.8.0.tgz", - "integrity": "sha512-MYV19RYf8rsOgujFtZef2ZTg/X+7hKsQEuvsN47v0x52sgoHS8c2eJvWUtgJ9I/CBA+ilQGolSDkv4rPSK5+jg==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/@onecx/accelerator/-/accelerator-5.9.0.tgz", + "integrity": "sha512-LNN323H0YK7I/MQQfh6p/XgpHjv7Dds+3MKo8xSY5XExsy/6I1BI5K4x3LXMG4xih1WmU6EahPMSclaq/TwWFg==", "license": "Apache-2.0", "peerDependencies": { "rxjs": "7.8.1", @@ -6577,9 +6577,9 @@ } }, "node_modules/@onecx/angular-accelerator": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@onecx/angular-accelerator/-/angular-accelerator-5.8.0.tgz", - "integrity": "sha512-vBofOKz+p1x8+V/cVVlV9xM1KIxxoZACMh5JlNVjEDxZ+cs4un9EE/TjkArtzl32unJ+gHCPDntt1WlcnbRt2w==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/@onecx/angular-accelerator/-/angular-accelerator-5.9.0.tgz", + "integrity": "sha512-mvCuKs6HxDv2vo0cDeD5hN4BYOTnxajFkaZGvQUtCOgtyt/d9Ub/ag9Vm2IsRL3gHbgz4T54gYdOrBo3PiPRZQ==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.3.0" @@ -6602,9 +6602,9 @@ } }, "node_modules/@onecx/angular-auth": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@onecx/angular-auth/-/angular-auth-5.8.0.tgz", - "integrity": "sha512-V90Ly1mHlGBht6VKJ1H2PEJ7mQMq3GSWpdep5cjyGY5SNCymd1rJexf96/bkWZf1lQ/IzIJbQBrFNlwdJiEXbA==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/@onecx/angular-auth/-/angular-auth-5.9.0.tgz", + "integrity": "sha512-9wS40d2tH5/qDR0F663FcH2GTYRqHYTbUMXEy48P7fXoqJzUvcmi+GIGn/uvim23JLDLMQuXjAMI4CCSgdfVhw==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.3.0" @@ -6621,9 +6621,9 @@ } }, "node_modules/@onecx/angular-integration-interface": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@onecx/angular-integration-interface/-/angular-integration-interface-5.8.0.tgz", - "integrity": "sha512-KtP4eo/mR+VkXswM6rANv+5rZNGN4yX5TSrsyIlGUwlhAma8NZqWvC3EvxupTQtBJluk1LvotbcGi6q8zjyNsg==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/@onecx/angular-integration-interface/-/angular-integration-interface-5.9.0.tgz", + "integrity": "sha512-baIHyrzXiNvjrwPF3MD762a2O7PiH1+1j1Ch8Uyk3Vfv5LKN/QlgSYalcqxxorS5tYO2Ovu6JPzg+Ftefz46Eg==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.3.0" @@ -6635,9 +6635,9 @@ } }, "node_modules/@onecx/angular-remote-components": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@onecx/angular-remote-components/-/angular-remote-components-5.8.0.tgz", - "integrity": "sha512-dFTm1OYciqGx4j/+cMJUUjK9dEqjWkoHLq89WMHmvEwVVjTVYFtPQAqBtgd4iTCiotAYY9fqPAi+laR99vqJjw==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/@onecx/angular-remote-components/-/angular-remote-components-5.9.0.tgz", + "integrity": "sha512-uwRlbeOYsynPl6M/0K7rEqWc+SzH5Y8lty1MFf2nqulikGzLPePq0D9Omzqo7Uo7ruRjqiutOAM3wBRHnW13cg==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.3.0" @@ -6653,9 +6653,9 @@ } }, "node_modules/@onecx/angular-testing": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@onecx/angular-testing/-/angular-testing-5.8.0.tgz", - "integrity": "sha512-mRRpVAouHtZ1UrsaxqPwP5MAaR4QgjKSUPyiQ4WurqgbgDm5ygUlLk3Vg7h3ADePK3TPTjYGZ8L+7u0WbWbhLQ==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/@onecx/angular-testing/-/angular-testing-5.9.0.tgz", + "integrity": "sha512-q1/WxSYUIeN4fX4ZPnw86G6r5rIbK2kwcQxvUJrT2Y5RbAcZv2onmau0drYgzgjtw2vxi74KK59iAwJdwql5mQ==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.3.0" @@ -6666,9 +6666,9 @@ } }, "node_modules/@onecx/angular-webcomponents": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@onecx/angular-webcomponents/-/angular-webcomponents-5.8.0.tgz", - "integrity": "sha512-yZbTeytoxkDqo/40Mxr4g4T03MECvyhNrDxA3lX3lZMSkhUzp4UJYxTqj8DLZ/+HX3URdrih66VocqHMpHzEcw==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/@onecx/angular-webcomponents/-/angular-webcomponents-5.9.0.tgz", + "integrity": "sha512-n/Hguc3herlYeEgDP3orC3Hgu/ae5jhS9EF/qLMUEqkTJTgjwp222ZmNBd0aWssztemB4WjHymjUY3ZfE7BRuQ==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.3.0" @@ -6684,9 +6684,9 @@ } }, "node_modules/@onecx/integration-interface": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@onecx/integration-interface/-/integration-interface-5.8.0.tgz", - "integrity": "sha512-PQ3m2ZBZDYk/gwbGnReyTFIKhlzgiEgt++K/xDu3+BBu4zxOAPHta/jUkg9fZAYEttHOMhGDl+/l1Or44tgSDA==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/@onecx/integration-interface/-/integration-interface-5.9.0.tgz", + "integrity": "sha512-j3GHBY85Ymf3cbtib38EQg0rZ4Zu6cw1AzDIMZaveGTSr0JgPphXss5HVmCSGWcMX2QgiF14NUAenLOcDCjXmQ==", "license": "Apache-2.0", "peerDependencies": { "@onecx/accelerator": "^5", @@ -6695,9 +6695,9 @@ } }, "node_modules/@onecx/keycloak-auth": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@onecx/keycloak-auth/-/keycloak-auth-5.8.0.tgz", - "integrity": "sha512-+2rOYjdLWhvII7NH9cRgD5pRonB3TT4WqUPN+NpUv4GX5A2efFQKyjdDQLnzlI7e8uiqGGaa8dLXvX+nFgG/NQ==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/@onecx/keycloak-auth/-/keycloak-auth-5.9.0.tgz", + "integrity": "sha512-U28M/S2cNscg0EUWoiDalYnNqjjM4ZeYc/nJW4jsQvzHtWyAHvWAkh9csvIM2/lQUwvoaRqhgQcq5AeoZqQ3FQ==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.3.0" @@ -6713,9 +6713,9 @@ } }, "node_modules/@onecx/portal-integration-angular": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@onecx/portal-integration-angular/-/portal-integration-angular-5.8.0.tgz", - "integrity": "sha512-aW5tTnj/ySGm8RBZsZnTAalFJQIBDVk/5g2kuz/liPKY1zUqhMxZQdkOlan8Mq/ZJRH1r/BvlJUYVbClvNkIdg==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/@onecx/portal-integration-angular/-/portal-integration-angular-5.9.0.tgz", + "integrity": "sha512-VloriJUGg1GyV9VffjVzce3NHSwLNPJWcA5HLHVwSFh2iBTuFT1l/JWJFW4Ma/bISHJO2kJZ1iYPQy/macBYbQ==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.3.0" @@ -6748,9 +6748,9 @@ } }, "node_modules/@onecx/portal-layout-styles": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@onecx/portal-layout-styles/-/portal-layout-styles-5.8.0.tgz", - "integrity": "sha512-07V5zjOHNjvVYrkki5EasOsKoaHBZDNCA6ydHWW8tJ2nxlLyRb+/xDs9G39XANAgA+1Std9Ut6bXY6wq73DIgQ==", + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/@onecx/portal-layout-styles/-/portal-layout-styles-5.9.0.tgz", + "integrity": "sha512-bCQKpUfNeRGawyfKwxY7QhAGzogpO94TPreeCzn4wwaLWQAfIDiMm+U30yIMowLqE6O6S/rHt/H2DqieZS0cvw==", "license": "Apache-2.0", "peerDependencies": { "tslib": "^2.6.3" diff --git a/package.json b/package.json index f6ec004..a6eff37 100644 --- a/package.json +++ b/package.json @@ -52,17 +52,17 @@ "@ngrx/router-store": "^18.0.1", "@ngx-translate/core": "^15.0.0", "@ngx-translate/http-loader": "^8.0.0", - "@onecx/accelerator": "^5.8.0", - "@onecx/angular-accelerator": "^5.8.0", - "@onecx/angular-auth": "^5.8.0", - "@onecx/angular-integration-interface": "^5.8.0", - "@onecx/angular-remote-components": "^5.8.0", - "@onecx/angular-testing": "^5.8.0", - "@onecx/angular-webcomponents": "^5.8.0", - "@onecx/integration-interface": "^5.8.0", - "@onecx/keycloak-auth": "^5.8.0", - "@onecx/portal-integration-angular": "^5.8.0", - "@onecx/portal-layout-styles": "^5.8.0", + "@onecx/accelerator": "^5.9.0", + "@onecx/angular-accelerator": "^5.9.0", + "@onecx/angular-auth": "^5.9.0", + "@onecx/angular-integration-interface": "^5.9.0", + "@onecx/angular-remote-components": "^5.9.0", + "@onecx/angular-testing": "^5.9.0", + "@onecx/angular-webcomponents": "^5.9.0", + "@onecx/integration-interface": "^5.9.0", + "@onecx/keycloak-auth": "^5.9.0", + "@onecx/portal-integration-angular": "^5.9.0", + "@onecx/portal-layout-styles": "^5.9.0", "@webcomponents/webcomponentsjs": "^2.8.0", "file-saver": "^2.0.5", "keycloak-angular": "^16.0.1", diff --git a/src/app/remotes/announcement-list-active/announcement-list-active.component.html b/src/app/remotes/announcement-list-active/announcement-list-active.component.html index fd8b741..57e20b5 100644 --- a/src/app/remotes/announcement-list-active/announcement-list-active.component.html +++ b/src/app/remotes/announcement-list-active/announcement-list-active.component.html @@ -15,7 +15,7 @@
@@ -24,7 +24,7 @@