From c0883b1dbfd410207440da791068c1886a1e4c8f Mon Sep 17 00:00:00 2001 From: Bastian Rihm Date: Tue, 17 Sep 2024 16:54:20 +0200 Subject: [PATCH 01/30] Fix follow generic relation subset (#4141) --- .../services/autoupdate/autoupdate.service.ts | 2 +- .../model-request-builder.service.ts | 26 ++++++++----------- 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/client/src/app/site/services/autoupdate/autoupdate.service.ts b/client/src/app/site/services/autoupdate/autoupdate.service.ts index 039170da04..d8644f9c7f 100644 --- a/client/src/app/site/services/autoupdate/autoupdate.service.ts +++ b/client/src/app/site/services/autoupdate/autoupdate.service.ts @@ -269,7 +269,7 @@ export class AutoupdateService { } = {}; for (const id of requestIds) { - const { modelRequest } = this._activeRequestObjects[id]; + const modelRequest = this._activeRequestObjects[id]?.modelRequest; if (modelRequest) { for (const key of Object.keys(autoupdateData)) { const data = key.split(`/`); diff --git a/client/src/app/site/services/model-request-builder/model-request-builder.service.ts b/client/src/app/site/services/model-request-builder/model-request-builder.service.ts index 13cbfc6083..e216ffaa22 100644 --- a/client/src/app/site/services/model-request-builder/model-request-builder.service.ts +++ b/client/src/app/site/services/model-request-builder/model-request-builder.service.ts @@ -168,7 +168,7 @@ export class ModelRequestBuilderService { } } - private addFollowedRelations(modelRequestObject: ModelRequestObject): void { + private addFollowedRelations(modelRequestObject: ModelRequestObject, skipUnknownRelations = false): void { for (const entry of modelRequestObject.simplifiedRequest.follow || []) { let follow: Follow; if (typeof entry === `string`) { @@ -178,7 +178,13 @@ export class ModelRequestBuilderService { } else { follow = entry; } - this.getFollowedRelation(modelRequestObject, follow); + try { + this.getFollowedRelation(modelRequestObject, follow); + } catch (e) { + if (!skipUnknownRelations || !(e instanceof UnknownRelationError)) { + throw e; + } + } } } @@ -288,19 +294,9 @@ export class ModelRequestBuilderService { // Add relations if (request.follow) { for (const viewModel of possibleViewModels) { - try { - // The last to write to fields will win... - const modelRequestObject = new ModelRequestObject(viewModel.COLLECTION, request, fields); - this.addFollowedRelations(modelRequestObject); - } catch (e) { - if (e instanceof UnknownRelationError) { - // Explicitly allow following relations for only a subset of foreign models - // of this relation. If a specific relation cannot be found, just do not request it. - // This will succeed for the subset of models, that do have the requested relation. - continue; - } - throw e; - } + // The last to write to fields will win... + const modelRequestObject = new ModelRequestObject(viewModel.COLLECTION, request, fields); + this.addFollowedRelations(modelRequestObject, true); } } } From 75ea7c7299526e0232ecebecaa66c7ac7915eabe Mon Sep 17 00:00:00 2001 From: Viktoriia Krasnovyd <114735598+vkrasnovyd@users.noreply.github.com> Date: Wed, 18 Sep 2024 08:41:05 +0200 Subject: [PATCH 02/30] Replace span with the relevant os-class (#4134) --- .../participant-detail-view.component.html | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/client/src/app/site/pages/meetings/pages/participants/pages/participant-detail/components/participant-detail-view/participant-detail-view.component.html b/client/src/app/site/pages/meetings/pages/participants/pages/participant-detail/components/participant-detail-view/participant-detail-view.component.html index 7633203746..f4a1d90bd2 100644 --- a/client/src/app/site/pages/meetings/pages/participants/pages/participant-detail/components/participant-detail-view/participant-detail-view.component.html +++ b/client/src/app/site/pages/meetings/pages/participants/pages/participant-detail/components/participant-detail-view/participant-detail-view.component.html @@ -263,7 +263,9 @@

{{ 'Voting right delegated to (proxy)' | translate }}

@if (showVoteDelegations && user!.vote_delegations_from().length > 0) {

{{ 'Voting right received from (principals)' | translate }}

- {{ user!.vote_delegations_from() }} + + {{ voteDelegationsFrom }} +
} From 88ba93b3e77a06f7623d8e7d9d3a0ffdaa5558aa Mon Sep 17 00:00:00 2001 From: Viktoriia Krasnovyd <114735598+vkrasnovyd@users.noreply.github.com> Date: Wed, 18 Sep 2024 11:00:15 +0200 Subject: [PATCH 03/30] Change default motion poll title (#4136) --- .../motion-poll.service/motion-poll.service.ts | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/client/src/app/site/pages/meetings/pages/motions/modules/motion-poll/services/motion-poll.service/motion-poll.service.ts b/client/src/app/site/pages/meetings/pages/motions/modules/motion-poll/services/motion-poll.service/motion-poll.service.ts index 3d65775ebc..63d8d6f88b 100644 --- a/client/src/app/site/pages/meetings/pages/motions/modules/motion-poll/services/motion-poll.service/motion-poll.service.ts +++ b/client/src/app/site/pages/meetings/pages/motions/modules/motion-poll/services/motion-poll.service/motion-poll.service.ts @@ -56,20 +56,28 @@ export class MotionPollService extends PollService { public getDefaultPollData(contentObject?: Motion): Partial { const poll: Partial = { - title: this.translate.instant(`Vote`), onehundred_percent_base: this.defaultPercentBase, entitled_group_ids: Object.values(this.defaultGroupIds ?? []), type: this.isElectronicVotingEnabled ? this.defaultPollType : PollType.Analog, pollmethod: PollMethod.YNA }; + let titlePrefix = this.translate.instant(`Motion`); + let title = this.translate.instant(`Vote`); + if (contentObject) { + if (contentObject.number) { + titlePrefix += ` ${contentObject.number}`; + } + const length = this.repo.getViewModelListByContentObject(contentObject.fqid).length; if (length) { - poll.title += ` (${length + 1})`; + title += ` (${length + 1})`; } } + poll.title = `${titlePrefix} ${title}:`; + return poll; } From 55a799683b135203ec585790d4d8df4c304bef3f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 18 Sep 2024 11:25:18 +0200 Subject: [PATCH 04/30] Bump video.js from 8.17.3 to 8.17.4 in /client (#4122) --- client/package-lock.json | 97 ++++++++++++++++++++-------------------- client/package.json | 2 +- 2 files changed, 50 insertions(+), 49 deletions(-) diff --git a/client/package-lock.json b/client/package-lock.json index d050c22757..4997987a57 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -68,7 +68,7 @@ "qrcode": "^1.5.4", "rxjs": "^7.8.1", "tinycolor2": "1.6.0", - "video.js": "^8.17.3", + "video.js": "^8.17.4", "zone.js": "^0.14.10" }, "devDependencies": { @@ -6355,9 +6355,9 @@ } }, "node_modules/@videojs/http-streaming": { - "version": "3.13.2", - "resolved": "https://registry.npmjs.org/@videojs/http-streaming/-/http-streaming-3.13.2.tgz", - "integrity": "sha512-eCfQp61w00hg7Y9npmLnsJ6UvDF+SsFYzu7mQJgVXxWpVm9AthYWA3KQEKA7F7Sy6yzlm/Sps8BHs5ItelNZgQ==", + "version": "3.13.3", + "resolved": "https://registry.npmjs.org/@videojs/http-streaming/-/http-streaming-3.13.3.tgz", + "integrity": "sha512-L7H+iTeqHeZ5PylzOx+pT3CVyzn4TALWYTJKkIc1pDaV/cTVfNGtG+9/vXPAydD+wR/xH1M9/t2JH8tn/DCT4w==", "dependencies": { "@babel/runtime": "^7.12.5", "@videojs/vhs-utils": "4.0.0", @@ -6376,6 +6376,31 @@ "video.js": "^8.14.0" } }, + "node_modules/@videojs/http-streaming/node_modules/aes-decrypter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/aes-decrypter/-/aes-decrypter-4.0.1.tgz", + "integrity": "sha512-H1nh/P9VZXUf17AA5NQfJML88CFjVBDuGkp5zDHa7oEhYN9TTpNLJknRY1ie0iSKWlDf6JRnJKaZVDSQdPy6Cg==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "@videojs/vhs-utils": "^3.0.5", + "global": "^4.4.0", + "pkcs7": "^1.0.4" + } + }, + "node_modules/@videojs/http-streaming/node_modules/aes-decrypter/node_modules/@videojs/vhs-utils": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@videojs/vhs-utils/-/vhs-utils-3.0.5.tgz", + "integrity": "sha512-PKVgdo8/GReqdx512F+ombhS+Bzogiofy1LgAj4tN8PfdBx3HSS7V5WfJotKTqtOWGwVfSWsrYN/t09/DSryrw==", + "dependencies": { + "@babel/runtime": "^7.12.5", + "global": "^4.4.0", + "url-toolkit": "^2.2.1" + }, + "engines": { + "node": ">=8", + "npm": ">=5" + } + }, "node_modules/@videojs/vhs-utils": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@videojs/vhs-utils/-/vhs-utils-4.0.0.tgz", @@ -6661,24 +6686,23 @@ } }, "node_modules/aes-decrypter": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/aes-decrypter/-/aes-decrypter-4.0.1.tgz", - "integrity": "sha512-H1nh/P9VZXUf17AA5NQfJML88CFjVBDuGkp5zDHa7oEhYN9TTpNLJknRY1ie0iSKWlDf6JRnJKaZVDSQdPy6Cg==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/aes-decrypter/-/aes-decrypter-4.0.2.tgz", + "integrity": "sha512-lc+/9s6iJvuaRe5qDlMTpCFjnwpkeOXp8qP3oiZ5jsj1MRg+SBVUmmICrhxHvc8OELSmc+fEyyxAuppY6hrWzw==", "dependencies": { "@babel/runtime": "^7.12.5", - "@videojs/vhs-utils": "^3.0.5", + "@videojs/vhs-utils": "^4.1.1", "global": "^4.4.0", "pkcs7": "^1.0.4" } }, "node_modules/aes-decrypter/node_modules/@videojs/vhs-utils": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@videojs/vhs-utils/-/vhs-utils-3.0.5.tgz", - "integrity": "sha512-PKVgdo8/GReqdx512F+ombhS+Bzogiofy1LgAj4tN8PfdBx3HSS7V5WfJotKTqtOWGwVfSWsrYN/t09/DSryrw==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@videojs/vhs-utils/-/vhs-utils-4.1.1.tgz", + "integrity": "sha512-5iLX6sR2ownbv4Mtejw6Ax+naosGvoT9kY+gcuHzANyUZZ+4NpeNdKMUhb6ag0acYej1Y7cmr/F2+4PrggMiVA==", "dependencies": { "@babel/runtime": "^7.12.5", - "global": "^4.4.0", - "url-toolkit": "^2.2.1" + "global": "^4.4.0" }, "engines": { "node": ">=8", @@ -10845,11 +10869,6 @@ "node": ">=8" } }, - "node_modules/individual": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/individual/-/individual-2.0.0.tgz", - "integrity": "sha512-pWt8hBCqJsUWI/HtcfWod7+N9SgAqyPEaF7JQjwzjn5vGrpg6aQ5qeAFQ7dx//UH4J1O+7xqew+gCeeFt6xN/g==" - }, "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -12569,23 +12588,22 @@ } }, "node_modules/m3u8-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/m3u8-parser/-/m3u8-parser-7.1.0.tgz", - "integrity": "sha512-7N+pk79EH4oLKPEYdgRXgAsKDyA/VCo0qCHlUwacttQA0WqsjZQYmNfywMvjlY9MpEBVZEt0jKFd73Kv15EBYQ==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/m3u8-parser/-/m3u8-parser-7.2.0.tgz", + "integrity": "sha512-CRatFqpjVtMiMaKXxNvuI3I++vUumIXVVT/JpCpdU/FynV/ceVw1qpPyyBNindL+JlPMSesx+WX1QJaZEJSaMQ==", "dependencies": { "@babel/runtime": "^7.12.5", - "@videojs/vhs-utils": "^3.0.5", + "@videojs/vhs-utils": "^4.1.1", "global": "^4.4.0" } }, "node_modules/m3u8-parser/node_modules/@videojs/vhs-utils": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@videojs/vhs-utils/-/vhs-utils-3.0.5.tgz", - "integrity": "sha512-PKVgdo8/GReqdx512F+ombhS+Bzogiofy1LgAj4tN8PfdBx3HSS7V5WfJotKTqtOWGwVfSWsrYN/t09/DSryrw==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@videojs/vhs-utils/-/vhs-utils-4.1.1.tgz", + "integrity": "sha512-5iLX6sR2ownbv4Mtejw6Ax+naosGvoT9kY+gcuHzANyUZZ+4NpeNdKMUhb6ag0acYej1Y7cmr/F2+4PrggMiVA==", "dependencies": { "@babel/runtime": "^7.12.5", - "global": "^4.4.0", - "url-toolkit": "^2.2.1" + "global": "^4.4.0" }, "engines": { "node": ">=8", @@ -15580,14 +15598,6 @@ "queue-microtask": "^1.2.2" } }, - "node_modules/rust-result": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rust-result/-/rust-result-1.0.0.tgz", - "integrity": "sha512-6cJzSBU+J/RJCF063onnQf0cDUOHs9uZI1oroSGnHOph+CQTIJ5Pp2hK5kEQq1+7yE/EEWfulSNXAQ2jikPthA==", - "dependencies": { - "individual": "^2.0.0" - } - }, "node_modules/rxjs": { "version": "7.8.1", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", @@ -15615,14 +15625,6 @@ } ] }, - "node_modules/safe-json-parse": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/safe-json-parse/-/safe-json-parse-4.0.0.tgz", - "integrity": "sha512-RjZPPHugjK0TOzFrLZ8inw44s9bKox99/0AZW9o/BEQVrJfhI+fIHMErnPyRa89/yRXUUr93q+tiN6zhoVV4wQ==", - "dependencies": { - "rust-result": "^1.0.0" - } - }, "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", @@ -17405,12 +17407,12 @@ } }, "node_modules/video.js": { - "version": "8.17.3", - "resolved": "https://registry.npmjs.org/video.js/-/video.js-8.17.3.tgz", - "integrity": "sha512-zhhmE0LNxJRA603/48oYzF7GYdT+rQRscvcsouYxFE71aKhalHLBP6S9/XjixnyjcrYgwIx8OQo6eSjcbbAW0Q==", + "version": "8.17.4", + "resolved": "https://registry.npmjs.org/video.js/-/video.js-8.17.4.tgz", + "integrity": "sha512-AECieAxKMKB/QgYK36ci50phfpWys6bFT6+pGMpSafeFYSoZaQ2Vpl83T9Qqcesv4TO7oNtiycnVeaBnrva2oA==", "dependencies": { "@babel/runtime": "^7.12.5", - "@videojs/http-streaming": "3.13.2", + "@videojs/http-streaming": "3.13.3", "@videojs/vhs-utils": "^4.0.0", "@videojs/xhr": "2.7.0", "aes-decrypter": "^4.0.1", @@ -17418,7 +17420,6 @@ "m3u8-parser": "^7.1.0", "mpd-parser": "^1.2.2", "mux.js": "^7.0.1", - "safe-json-parse": "4.0.0", "videojs-contrib-quality-levels": "4.1.0", "videojs-font": "4.2.0", "videojs-vtt.js": "0.15.5" diff --git a/client/package.json b/client/package.json index e547f833b8..505274989d 100644 --- a/client/package.json +++ b/client/package.json @@ -95,7 +95,7 @@ "qrcode": "^1.5.4", "rxjs": "^7.8.1", "tinycolor2": "1.6.0", - "video.js": "^8.17.3", + "video.js": "^8.17.4", "zone.js": "^0.14.10" }, "devDependencies": { From 9450514e7cc395ed750e0b3182a65e1d1b5c9ac5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 18 Sep 2024 11:25:40 +0200 Subject: [PATCH 05/30] Bump ng2-pdf-viewer from 10.3.0 to 10.3.1 in /client (#4121) --- client/package-lock.json | 8 ++++---- client/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/client/package-lock.json b/client/package-lock.json index 4997987a57..9ed5da030f 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -56,7 +56,7 @@ "jszip": "^3.10.1", "material-design-icons-iconfont": "^6.7.0", "ng2-charts": "^6.0.1", - "ng2-pdf-viewer": "^10.3.0", + "ng2-pdf-viewer": "^10.3.1", "ngx-date-fns": "^11.0.0", "ngx-device-detector": "^8.0.0", "ngx-file-drop": "^16.0.0", @@ -13238,9 +13238,9 @@ } }, "node_modules/ng2-pdf-viewer": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/ng2-pdf-viewer/-/ng2-pdf-viewer-10.3.0.tgz", - "integrity": "sha512-zU51lVcsmCy1Nytw94r2ABHfdBKlJWc+Zllk7Fct3pT3b7Q8UbMiZ8IbA4d5iXoe2/iznsS2YXGzMn0/vPHcXA==", + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/ng2-pdf-viewer/-/ng2-pdf-viewer-10.3.1.tgz", + "integrity": "sha512-Tdeu74Go1qzBMmpVbiKA96bgtHCeh+Qnq7ErVLHsV/9TPoCO6cRBsGW/7ojdH1S92MnnM6/iQGLY3EnMYh1wOg==", "dependencies": { "pdfjs-dist": "^4.5.136", "tslib": "^2.3.0" diff --git a/client/package.json b/client/package.json index 505274989d..3751964885 100644 --- a/client/package.json +++ b/client/package.json @@ -83,7 +83,7 @@ "jszip": "^3.10.1", "material-design-icons-iconfont": "^6.7.0", "ng2-charts": "^6.0.1", - "ng2-pdf-viewer": "^10.3.0", + "ng2-pdf-viewer": "^10.3.1", "ngx-date-fns": "^11.0.0", "ngx-device-detector": "^8.0.0", "ngx-file-drop": "^16.0.0", From dc21e8d8abbdc1bce4cc36a82daddf0d4109aa90 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 18 Sep 2024 11:27:21 +0200 Subject: [PATCH 06/30] Bump the angular group in /client with 15 updates (#4118) --- client/package-lock.json | 240 +++++++++++++++++++-------------------- client/package.json | 30 ++--- 2 files changed, 135 insertions(+), 135 deletions(-) diff --git a/client/package-lock.json b/client/package-lock.json index 9ed5da030f..ef8341a2ed 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -9,18 +9,18 @@ "version": "4.1.x-dev", "license": "MIT", "dependencies": { - "@angular/animations": "^18.2.3", - "@angular/cdk": "^18.2.3", - "@angular/common": "^18.2.3", - "@angular/compiler": "^18.2.3", - "@angular/core": "^18.2.3", - "@angular/forms": "^18.2.3", - "@angular/material": "^18.2.3", - "@angular/material-date-fns-adapter": "^18.2.3", - "@angular/platform-browser": "^18.2.3", - "@angular/platform-browser-dynamic": "^18.2.3", - "@angular/router": "^18.2.3", - "@angular/service-worker": "^18.2.3", + "@angular/animations": "^18.2.4", + "@angular/cdk": "^18.2.4", + "@angular/common": "^18.2.4", + "@angular/compiler": "^18.2.4", + "@angular/core": "^18.2.4", + "@angular/forms": "^18.2.4", + "@angular/material": "^18.2.4", + "@angular/material-date-fns-adapter": "^18.2.4", + "@angular/platform-browser": "^18.2.4", + "@angular/platform-browser-dynamic": "^18.2.4", + "@angular/router": "^18.2.4", + "@angular/service-worker": "^18.2.4", "@material/typography": "^14.0.0", "@ngx-pwa/local-storage": "^18.0.0", "@ngx-translate/core": "^15.0.0", @@ -72,14 +72,14 @@ "zone.js": "^0.14.10" }, "devDependencies": { - "@angular-devkit/build-angular": "^18.2.3", + "@angular-devkit/build-angular": "^18.2.4", "@angular-eslint/builder": "^18.3.0", "@angular-eslint/eslint-plugin": "^18.3.0", "@angular-eslint/eslint-plugin-template": "^18.3.0", "@angular-eslint/schematics": "^18.3.0", "@angular-eslint/template-parser": "^18.3.0", - "@angular/cli": "^18.2.3", - "@angular/compiler-cli": "^18.2.3", + "@angular/cli": "^18.2.4", + "@angular/compiler-cli": "^18.2.4", "@colsen1991/ngx-translate-extract-marker": "^2.0.8", "@types/file-saver": "^2.0.7", "@types/jasmine": "~5.1.4", @@ -128,12 +128,12 @@ } }, "node_modules/@angular-devkit/architect": { - "version": "0.1802.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1802.3.tgz", - "integrity": "sha512-WQ2AmkUKy1bqrDlNfozW8+VT2Tv/Fdmu4GIXps3ytZANyAKiIvTzmmql2cRCXXraa9FNMjLWNvz+qolDxWVdYQ==", + "version": "0.1802.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1802.4.tgz", + "integrity": "sha512-VH7AwGng1zuWPTJoH1IgHYeNhqZIgzlwDx39JPmArZAW/WZHDILWB7ipbTNw0R4U4VncrXJqDmMVex7NdHP6sg==", "dev": true, "dependencies": { - "@angular-devkit/core": "18.2.3", + "@angular-devkit/core": "18.2.4", "rxjs": "7.8.1" }, "engines": { @@ -143,16 +143,16 @@ } }, "node_modules/@angular-devkit/build-angular": { - "version": "18.2.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-18.2.3.tgz", - "integrity": "sha512-uUQba0SIskKORHcPayt7LpqPRKD//48EW92SgGHEArn2KklM+FSYBOA9OtrJeZ/UAcoJpdLDtvyY4+S7oFzomg==", + "version": "18.2.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-18.2.4.tgz", + "integrity": "sha512-zLDstS95Yb7iBA1ZCYe3LsOLpIhr0ZC3sZ03PhVvAGbVRGSbQNnhQRZLKMk+LDhYJiG+eNFQGLfU3RfZrGds7A==", "dev": true, "dependencies": { "@ampproject/remapping": "2.3.0", - "@angular-devkit/architect": "0.1802.3", - "@angular-devkit/build-webpack": "0.1802.3", - "@angular-devkit/core": "18.2.3", - "@angular/build": "18.2.3", + "@angular-devkit/architect": "0.1802.4", + "@angular-devkit/build-webpack": "0.1802.4", + "@angular-devkit/core": "18.2.4", + "@angular/build": "18.2.4", "@babel/core": "7.25.2", "@babel/generator": "7.25.0", "@babel/helper-annotate-as-pure": "7.24.7", @@ -163,7 +163,7 @@ "@babel/preset-env": "7.25.3", "@babel/runtime": "7.25.0", "@discoveryjs/json-ext": "0.6.1", - "@ngtools/webpack": "18.2.3", + "@ngtools/webpack": "18.2.4", "@vitejs/plugin-basic-ssl": "1.1.0", "ansi-colors": "4.1.3", "autoprefixer": "10.4.20", @@ -316,12 +316,12 @@ } }, "node_modules/@angular-devkit/build-webpack": { - "version": "0.1802.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1802.3.tgz", - "integrity": "sha512-/Nixv9uAg6v/OPoZa0PB0zi+iezzBkgLrnrJnestny5B536l9WRtsw97RjeQDu+x2BClQsxNe8NL2A7EvjVD6w==", + "version": "0.1802.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1802.4.tgz", + "integrity": "sha512-juaDoguYccObm2xnzRDRlOtiL7ZyZcSAyiyls6QuO8hoo/h6phdHALJkUhI9+SIhCRQ6eUQtolC7hN3J+FZKnA==", "dev": true, "dependencies": { - "@angular-devkit/architect": "0.1802.3", + "@angular-devkit/architect": "0.1802.4", "rxjs": "7.8.1" }, "engines": { @@ -335,9 +335,9 @@ } }, "node_modules/@angular-devkit/core": { - "version": "18.2.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-18.2.3.tgz", - "integrity": "sha512-vbFs+ofNK9OWeMIcFarFjegXVklhtSdLTEFKZ9trDVr8alTJdjI9AiYa6OOUTDAyq0hqYxV26xlCisWAPe7s5w==", + "version": "18.2.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-18.2.4.tgz", + "integrity": "sha512-svlgZ0vbLrfNJAQE5WePAutcYIyA7C0OfzKSTMsfV2X1I+1blYDaZIu/ocnHqofMHu6ZqdSaaU/p/rieqU8fcA==", "dev": true, "dependencies": { "ajv": "8.17.1", @@ -391,12 +391,12 @@ } }, "node_modules/@angular-devkit/schematics": { - "version": "18.2.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-18.2.3.tgz", - "integrity": "sha512-N3tRAzBW2yWQhebvc1Ha18XTMSXOQTfr8HNjx7Fasx0Fg1tNyGR612MJNZw6je/PqyItKeUHOhztvFMfCQjRyg==", + "version": "18.2.4", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-18.2.4.tgz", + "integrity": "sha512-s2WdUhyLlKj5kOjb6vrvJg9/31KvgyRJGjy7PnzS43tpwF9MLuM3AYhuJsXHPhx+i0nyWn/Jnd8ZLjMzXljSxg==", "dev": true, "dependencies": { - "@angular-devkit/core": "18.2.3", + "@angular-devkit/core": "18.2.4", "jsonc-parser": "3.3.1", "magic-string": "0.30.11", "ora": "5.4.1", @@ -532,9 +532,9 @@ } }, "node_modules/@angular/animations": { - "version": "18.2.3", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-18.2.3.tgz", - "integrity": "sha512-rIATopHr83lYR0X05buHeHssq9CGw0I0YPIQcpUTGnlqIpJcQVCf7jCFn4KGZrE9V55hFY3MD4S28njlwCToQQ==", + "version": "18.2.4", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-18.2.4.tgz", + "integrity": "sha512-ajjXpLD+SyxbHnmhj2ZvYpXneviOjcBgU9L2UX4OVS0jVWxCNHLhJrcMqtqFHA6U5fPnhPNR9cmnt6tmqri0rA==", "dependencies": { "tslib": "^2.3.0" }, @@ -542,17 +542,17 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/core": "18.2.3" + "@angular/core": "18.2.4" } }, "node_modules/@angular/build": { - "version": "18.2.3", - "resolved": "https://registry.npmjs.org/@angular/build/-/build-18.2.3.tgz", - "integrity": "sha512-USrD2Zvcb1te2dnqhH7JZ5XeJDg/t7fjUHR4f93vvMrnrncwCjLoHbHpz01HCHfcIVRgsYUdAmAi1iG7vpak7w==", + "version": "18.2.4", + "resolved": "https://registry.npmjs.org/@angular/build/-/build-18.2.4.tgz", + "integrity": "sha512-GVs7O7wxNMJCkqh6Vv2u9GEArWg9jyEt8Fofd6CJGzxKBYQ4hR5gjzL/lU6kNFiMcioS1wm1f6qtJtgilUO+9A==", "dev": true, "dependencies": { "@ampproject/remapping": "2.3.0", - "@angular-devkit/architect": "0.1802.3", + "@angular-devkit/architect": "0.1802.4", "@babel/core": "7.25.2", "@babel/helper-annotate-as-pure": "7.24.7", "@babel/helper-split-export-declaration": "7.24.7", @@ -643,9 +643,9 @@ } }, "node_modules/@angular/cdk": { - "version": "18.2.3", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-18.2.3.tgz", - "integrity": "sha512-lUcpYTxPZuntJ1FK7V2ugapCGMIhT6TUDjIGgXfS9AxGSSKgwr8HNs6Ze9pcjYC44UhP40sYAZuiaFwmE60A2A==", + "version": "18.2.4", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-18.2.4.tgz", + "integrity": "sha512-o+TuxZDqStfkviEkCR05pVyP6R2RIruEs/45Cms76hlsIheMoxRaxir/yrHdh4tZESJJhcO/EVE+aymNIRWAfg==", "dependencies": { "tslib": "^2.3.0" }, @@ -659,17 +659,17 @@ } }, "node_modules/@angular/cli": { - "version": "18.2.3", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-18.2.3.tgz", - "integrity": "sha512-40258vuliH6+p8QSByZe5EcIXSj0iR3PNF6yuusClR/ByToHOnmuPw7WC+AYr0ooozmqlim/EjQe4/037OUB3w==", + "version": "18.2.4", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-18.2.4.tgz", + "integrity": "sha512-n+Y2xlgcpTZ+MZmycf2b3ceVvANDJFkDEodobVtyG63WvGOhkZ3aGhT7sHguKpAQwJLicSf8zF2z+v1Yi0DvRw==", "dev": true, "dependencies": { - "@angular-devkit/architect": "0.1802.3", - "@angular-devkit/core": "18.2.3", - "@angular-devkit/schematics": "18.2.3", + "@angular-devkit/architect": "0.1802.4", + "@angular-devkit/core": "18.2.4", + "@angular-devkit/schematics": "18.2.4", "@inquirer/prompts": "5.3.8", "@listr2/prompt-adapter-inquirer": "2.0.15", - "@schematics/angular": "18.2.3", + "@schematics/angular": "18.2.4", "@yarnpkg/lockfile": "1.1.0", "ini": "4.1.3", "jsonc-parser": "3.3.1", @@ -692,9 +692,9 @@ } }, "node_modules/@angular/common": { - "version": "18.2.3", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-18.2.3.tgz", - "integrity": "sha512-NFL4yXXImSCH7i1xnHykUjHa9vl9827fGiwSV2mnf7LjSUsyDzFD8/54dNuYN9OY8AUD+PnK0YdNro6cczVyIA==", + "version": "18.2.4", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-18.2.4.tgz", + "integrity": "sha512-flUaKhdr8KvtjH0cLC6Rrjirt8GsiFlrmZLZplr784O3Gkei2VBBNFoopgmlEzbVGPiIG5QlFZH9yvah6JPQZw==", "dependencies": { "tslib": "^2.3.0" }, @@ -702,14 +702,14 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/core": "18.2.3", + "@angular/core": "18.2.4", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/compiler": { - "version": "18.2.3", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-18.2.3.tgz", - "integrity": "sha512-Il3ljs0j1GaYoqYFdShjUP1ryck5xTOaA8uQuRgqwU0FOwEDfugSAM3Qf7nJx/sgxTM0Lm/Nrdv2u6i1gZWeuQ==", + "version": "18.2.4", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-18.2.4.tgz", + "integrity": "sha512-o3ngFr1Bjt7cKOu4DSZJGCUF9YPTxJee97wFon2eNFj6FFNTmnGwAvsnJjHBMmk90fmZLC2/HpPdhYz7WprMZQ==", "dependencies": { "tslib": "^2.3.0" }, @@ -717,7 +717,7 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/core": "18.2.3" + "@angular/core": "18.2.4" }, "peerDependenciesMeta": { "@angular/core": { @@ -726,9 +726,9 @@ } }, "node_modules/@angular/compiler-cli": { - "version": "18.2.3", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-18.2.3.tgz", - "integrity": "sha512-BcmqYKnkcJTkGjuPztClZNQve7tdI290J5F3iZBx6c7/vaw8EU8EGZtpWYZpgiVn5S6jhcKyc1dLF9ggO9vftg==", + "version": "18.2.4", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-18.2.4.tgz", + "integrity": "sha512-BIp5zr+npqSs/4KWPxwKdn7+sjo008ieNOQDlXyQms9BKlxx/gDnj7W2TsxhrkDTYCIHF73fJZ7u2U8Qy4JWfw==", "dev": true, "dependencies": { "@babel/core": "7.25.2", @@ -749,14 +749,14 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/compiler": "18.2.3", + "@angular/compiler": "18.2.4", "typescript": ">=5.4 <5.6" } }, "node_modules/@angular/core": { - "version": "18.2.3", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-18.2.3.tgz", - "integrity": "sha512-VGhMJxj7d0rYpqVfQrcGRB7EE/BCziotft/I/YPl6bOMPSAvMukG7DXQuJdYpNrr62ks78mlzHlZX/cdmB9Prw==", + "version": "18.2.4", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-18.2.4.tgz", + "integrity": "sha512-ulYmYpI/ZVQ5BL38rBy4DS/9wgGWmVD9Uo6tcrLqCzt1G1G2nKwseZv009536pHfk6dj2HdPSkpcerhWh57DWw==", "dependencies": { "tslib": "^2.3.0" }, @@ -769,9 +769,9 @@ } }, "node_modules/@angular/forms": { - "version": "18.2.3", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-18.2.3.tgz", - "integrity": "sha512-+OBaAH0e8hue9eyLnbgpxg1/X9fps6bwXECfJ0nL5BDPU5itZ428YJbEnj5bTx0hEbqfTRiV4LgexdI+D9eOpw==", + "version": "18.2.4", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-18.2.4.tgz", + "integrity": "sha512-rlLhReauUz6jhLCEkGabLqqF6xLaTfvxafuj2ojzcqoKGSZcXDIM/UOSoWX756B8NtrpsuglpGBZjZlsrAZGsg==", "dependencies": { "tslib": "^2.3.0" }, @@ -779,22 +779,22 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/common": "18.2.3", - "@angular/core": "18.2.3", - "@angular/platform-browser": "18.2.3", + "@angular/common": "18.2.4", + "@angular/core": "18.2.4", + "@angular/platform-browser": "18.2.4", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/material": { - "version": "18.2.3", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-18.2.3.tgz", - "integrity": "sha512-JFfvXaMHMhskncaxxus4sDvie9VYdMkfYgfinkLXpZlPFyn1IzjDw0c1BcrcsuD7UxQVZ/v5tucCgq1FQfGRpA==", + "version": "18.2.4", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-18.2.4.tgz", + "integrity": "sha512-F09145mI/EAHY9ngdnQTo3pFRmUoU/50i6cmddtL4cse0WidatoodQr0gZCksxhmpJgRy5mTcjh/LU2hShOgcA==", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { "@angular/animations": "^18.0.0 || ^19.0.0", - "@angular/cdk": "18.2.3", + "@angular/cdk": "18.2.4", "@angular/common": "^18.0.0 || ^19.0.0", "@angular/core": "^18.0.0 || ^19.0.0", "@angular/forms": "^18.0.0 || ^19.0.0", @@ -803,22 +803,22 @@ } }, "node_modules/@angular/material-date-fns-adapter": { - "version": "18.2.3", - "resolved": "https://registry.npmjs.org/@angular/material-date-fns-adapter/-/material-date-fns-adapter-18.2.3.tgz", - "integrity": "sha512-tIBorpTAUZ0wnjjdWt7YL2blLoClMVkyWfvIcve6Tgll0ddndhdMvrNms19+Z5YinrDVIgGdjIP4W0KscnNmtQ==", + "version": "18.2.4", + "resolved": "https://registry.npmjs.org/@angular/material-date-fns-adapter/-/material-date-fns-adapter-18.2.4.tgz", + "integrity": "sha512-8WYx86Eh8BmI3LoiXZbdFwkCTAX2X3X1nqXvNgHpC1ucNROytu4Op4ns2QabS3Nru7xXiL5cKd8wMC1FEh3fFA==", "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { "@angular/core": "^18.0.0 || ^19.0.0", - "@angular/material": "18.2.3", + "@angular/material": "18.2.4", "date-fns": ">2.20.0 <4.0" } }, "node_modules/@angular/platform-browser": { - "version": "18.2.3", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-18.2.3.tgz", - "integrity": "sha512-M2ob4zN7tAcL2mx7U6KnZNqNFPFl9MlPBE0FrjQjIzAjU0wSYPIJXmaPu9aMUp9niyo+He5iX98I+URi2Yc99g==", + "version": "18.2.4", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-18.2.4.tgz", + "integrity": "sha512-ddzq5MyPvFyTv0kUe8U9fbhE1nZtLYBCFKDqICrzHXiVRAdqLv6qtE5PtbURrdspSy1u/YEGV4LdkNJK3UgnZQ==", "dependencies": { "tslib": "^2.3.0" }, @@ -826,9 +826,9 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/animations": "18.2.3", - "@angular/common": "18.2.3", - "@angular/core": "18.2.3" + "@angular/animations": "18.2.4", + "@angular/common": "18.2.4", + "@angular/core": "18.2.4" }, "peerDependenciesMeta": { "@angular/animations": { @@ -837,9 +837,9 @@ } }, "node_modules/@angular/platform-browser-dynamic": { - "version": "18.2.3", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-18.2.3.tgz", - "integrity": "sha512-nWi9ZxN4KpbJkttIckFO1PCoW0+gb/18xFO+JWyLBAtcbsudj/Mv0P/fdOaSfQdLkPhZfORr3ZcfiTkhmuGyEg==", + "version": "18.2.4", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-18.2.4.tgz", + "integrity": "sha512-0nA04zJueGzdnl37TJ7guDCrzxYS4fjqgvYKiOpFktpMHPuNrBlAQo5YA7u20HGFG3i47PQh7hEWhQaqcXXpQw==", "dependencies": { "tslib": "^2.3.0" }, @@ -847,16 +847,16 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/common": "18.2.3", - "@angular/compiler": "18.2.3", - "@angular/core": "18.2.3", - "@angular/platform-browser": "18.2.3" + "@angular/common": "18.2.4", + "@angular/compiler": "18.2.4", + "@angular/core": "18.2.4", + "@angular/platform-browser": "18.2.4" } }, "node_modules/@angular/router": { - "version": "18.2.3", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-18.2.3.tgz", - "integrity": "sha512-fvD9eSDIiIbeYoUokoWkXzu7/ZaxlzKPUHFqX1JuKuH5ciQDeT/d7lp4mj31Bxammhohzi3+z12THJYsCkj/iQ==", + "version": "18.2.4", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-18.2.4.tgz", + "integrity": "sha512-kYNHD3K1Xou2PRMqbG2tVahtMobgDlhwHdMB7G5oFHg6K13gQ2TmopF1U5A2wYtIMdsC+AkVGIJEOxQN8fmgcA==", "dependencies": { "tslib": "^2.3.0" }, @@ -864,16 +864,16 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/common": "18.2.3", - "@angular/core": "18.2.3", - "@angular/platform-browser": "18.2.3", + "@angular/common": "18.2.4", + "@angular/core": "18.2.4", + "@angular/platform-browser": "18.2.4", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/service-worker": { - "version": "18.2.3", - "resolved": "https://registry.npmjs.org/@angular/service-worker/-/service-worker-18.2.3.tgz", - "integrity": "sha512-KplaBYhhwsM3gPeOImfDGhAknN+BIcZJkHl8YRnhoUEFHsTZ8LTV02C4LWQL3YTu3pK+uj/lPMKi1CA37cXQ8g==", + "version": "18.2.4", + "resolved": "https://registry.npmjs.org/@angular/service-worker/-/service-worker-18.2.4.tgz", + "integrity": "sha512-yvdHWtD9m70JE9kPapu819f7g0rsBKvIs1FebS7/fvt4Cj7B6+0xSCnoiQPDE5hpRl8qSk/8eikFcGVM/D8F8g==", "dependencies": { "tslib": "^2.3.0" }, @@ -884,8 +884,8 @@ "node": "^18.19.1 || ^20.11.1 || >=22.0.0" }, "peerDependencies": { - "@angular/common": "18.2.3", - "@angular/core": "18.2.3" + "@angular/common": "18.2.4", + "@angular/core": "18.2.4" } }, "node_modules/@babel/code-frame": { @@ -4058,9 +4058,9 @@ ] }, "node_modules/@ngtools/webpack": { - "version": "18.2.3", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-18.2.3.tgz", - "integrity": "sha512-DDuBHcu23qckt43SexBJaPEIeMc/HKaFOidILZM9D4gU4C9VroMActdR218dvQ802QfL0S46t5Ykz8ENprIfjA==", + "version": "18.2.4", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-18.2.4.tgz", + "integrity": "sha512-JVDRexu3q7lg2oqJG36RtX7cqTheoZRwg2HhMV8hYXUDL0fyOrv2galwTCgXrx7vAjlx45L2uR2kuWbgW0VVcQ==", "dev": true, "engines": { "node": "^18.19.1 || ^20.11.1 || >=22.0.0", @@ -4667,13 +4667,13 @@ ] }, "node_modules/@schematics/angular": { - "version": "18.2.3", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-18.2.3.tgz", - "integrity": "sha512-whSON70z9HYb4WboVXmPFE/RLKJJQLWNzNcUyi8OSDZkQbJnYgPp0///n738m26Y/XeJDv11q1gESy+Zl2AdUw==", + "version": "18.2.4", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-18.2.4.tgz", + "integrity": "sha512-GxrPv4eOPrjMKoAVhch9eprW8H/DFhBy5Zgp7CgGui9NprYkkubxw/yyo11WfR5CFZ/q5AfsjV76dPCkhLwLmA==", "dev": true, "dependencies": { - "@angular-devkit/core": "18.2.3", - "@angular-devkit/schematics": "18.2.3", + "@angular-devkit/core": "18.2.4", + "@angular-devkit/schematics": "18.2.4", "jsonc-parser": "3.3.1" }, "engines": { @@ -5960,9 +5960,9 @@ } }, "node_modules/@types/qs": { - "version": "6.9.15", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", - "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", + "version": "6.9.16", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.16.tgz", + "integrity": "sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A==", "dev": true }, "node_modules/@types/range-parser": { diff --git a/client/package.json b/client/package.json index 3751964885..83b7839abc 100644 --- a/client/package.json +++ b/client/package.json @@ -36,18 +36,18 @@ "get-available-languages": "npm run ts -- cli/get-available-languages.ts" }, "dependencies": { - "@angular/animations": "^18.2.3", - "@angular/cdk": "^18.2.3", - "@angular/common": "^18.2.3", - "@angular/compiler": "^18.2.3", - "@angular/core": "^18.2.3", - "@angular/forms": "^18.2.3", - "@angular/material": "^18.2.3", - "@angular/material-date-fns-adapter": "^18.2.3", - "@angular/platform-browser": "^18.2.3", - "@angular/platform-browser-dynamic": "^18.2.3", - "@angular/router": "^18.2.3", - "@angular/service-worker": "^18.2.3", + "@angular/animations": "^18.2.4", + "@angular/cdk": "^18.2.4", + "@angular/common": "^18.2.4", + "@angular/compiler": "^18.2.4", + "@angular/core": "^18.2.4", + "@angular/forms": "^18.2.4", + "@angular/material": "^18.2.4", + "@angular/material-date-fns-adapter": "^18.2.4", + "@angular/platform-browser": "^18.2.4", + "@angular/platform-browser-dynamic": "^18.2.4", + "@angular/router": "^18.2.4", + "@angular/service-worker": "^18.2.4", "@material/typography": "^14.0.0", "@ngx-pwa/local-storage": "^18.0.0", "@ngx-translate/core": "^15.0.0", @@ -99,14 +99,14 @@ "zone.js": "^0.14.10" }, "devDependencies": { - "@angular-devkit/build-angular": "^18.2.3", + "@angular-devkit/build-angular": "^18.2.4", "@angular-eslint/builder": "^18.3.0", "@angular-eslint/eslint-plugin": "^18.3.0", "@angular-eslint/eslint-plugin-template": "^18.3.0", "@angular-eslint/schematics": "^18.3.0", "@angular-eslint/template-parser": "^18.3.0", - "@angular/cli": "^18.2.3", - "@angular/compiler-cli": "^18.2.3", + "@angular/cli": "^18.2.4", + "@angular/compiler-cli": "^18.2.4", "@colsen1991/ngx-translate-extract-marker": "^2.0.8", "@types/file-saver": "^2.0.7", "@types/jasmine": "~5.1.4", From aafe887d42e6ef42a3128721bf526edc6cc93344 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 18 Sep 2024 09:30:16 +0000 Subject: [PATCH 07/30] Bump eslint-plugin-unused-imports from 4.1.3 to 4.1.4 in /client (#4120) --- client/package-lock.json | 8 ++++---- client/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/client/package-lock.json b/client/package-lock.json index ef8341a2ed..3faa749b21 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -96,7 +96,7 @@ "eslint-config-prettier": "^9.1.0", "eslint-plugin-prettier": "^5.2.1", "eslint-plugin-simple-import-sort": "^12.1.1", - "eslint-plugin-unused-imports": "^4.1.3", + "eslint-plugin-unused-imports": "^4.1.4", "fetch-mock": "^11.1.3", "jasmine-core": "~5.3.0", "js-yaml": "^4.1.0", @@ -9254,9 +9254,9 @@ } }, "node_modules/eslint-plugin-unused-imports": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-4.1.3.tgz", - "integrity": "sha512-lqrNZIZjFMUr7P06eoKtQLwyVRibvG7N+LtfKtObYGizAAGrcqLkc3tDx+iAik2z7q0j/XI3ihjupIqxhFabFA==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-4.1.4.tgz", + "integrity": "sha512-YptD6IzQjDardkl0POxnnRBhU1OEePMV0nd6siHaRBbd+lyh6NAhFEobiznKU7kTsSsDeSD62Pe7kAM1b7dAZQ==", "dev": true, "peerDependencies": { "@typescript-eslint/eslint-plugin": "^8.0.0-0 || ^7.0.0 || ^6.0.0 || ^5.0.0", diff --git a/client/package.json b/client/package.json index 83b7839abc..83964cdaf2 100644 --- a/client/package.json +++ b/client/package.json @@ -123,7 +123,7 @@ "eslint-config-prettier": "^9.1.0", "eslint-plugin-prettier": "^5.2.1", "eslint-plugin-simple-import-sort": "^12.1.1", - "eslint-plugin-unused-imports": "^4.1.3", + "eslint-plugin-unused-imports": "^4.1.4", "fetch-mock": "^11.1.3", "jasmine-core": "~5.3.0", "js-yaml": "^4.1.0", From 569fe951de6947d8fa4e537c4a8c621c074bfa68 Mon Sep 17 00:00:00 2001 From: "openslides-automation[bot]" <125256978+openslides-automation[bot]@users.noreply.github.com> Date: Wed, 18 Sep 2024 11:38:47 +0200 Subject: [PATCH 08/30] Update meta repository (#4116) --- client/src/meta | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/meta b/client/src/meta index 8e7451440f..84bb58e141 160000 --- a/client/src/meta +++ b/client/src/meta @@ -1 +1 @@ -Subproject commit 8e7451440fae5aa809e3d828b6552c7f0e7feb3d +Subproject commit 84bb58e141e088f9fd0678214d5b51d040d53034 From 6f8316fbe510f21f585a21213498d36a7a513857 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 18 Sep 2024 11:39:07 +0200 Subject: [PATCH 09/30] Bump the angular-eslint group in /client with 5 updates (#4119) --- client/package-lock.json | 102 +++++++++++++++++---------------------- client/package.json | 10 ++-- 2 files changed, 49 insertions(+), 63 deletions(-) diff --git a/client/package-lock.json b/client/package-lock.json index 3faa749b21..a43719c7f4 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -73,11 +73,11 @@ }, "devDependencies": { "@angular-devkit/build-angular": "^18.2.4", - "@angular-eslint/builder": "^18.3.0", - "@angular-eslint/eslint-plugin": "^18.3.0", - "@angular-eslint/eslint-plugin-template": "^18.3.0", - "@angular-eslint/schematics": "^18.3.0", - "@angular-eslint/template-parser": "^18.3.0", + "@angular-eslint/builder": "^18.3.1", + "@angular-eslint/eslint-plugin": "^18.3.1", + "@angular-eslint/eslint-plugin-template": "^18.3.1", + "@angular-eslint/schematics": "^18.3.1", + "@angular-eslint/template-parser": "^18.3.1", "@angular/cli": "^18.2.4", "@angular/compiler-cli": "^18.2.4", "@colsen1991/ngx-translate-extract-marker": "^2.0.8", @@ -409,9 +409,9 @@ } }, "node_modules/@angular-eslint/builder": { - "version": "18.3.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-18.3.0.tgz", - "integrity": "sha512-httEQyqyBw3+0CRtAa7muFxHrauRfkEfk/jmrh5fn2Eiu+I53hAqFPgrwVi1V6AP/kj2zbAiWhd5xM3pMJdoRQ==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-18.3.1.tgz", + "integrity": "sha512-cPc7Ye9zDs5M4i+feL6vob+mh7yX5vxvOS5KQIhneUrp5e9D+IGuNFMmBLlOPpmklSc9XJBtuvI5Zjuh4z1ETw==", "dev": true, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", @@ -419,19 +419,19 @@ } }, "node_modules/@angular-eslint/bundled-angular-compiler": { - "version": "18.3.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-18.3.0.tgz", - "integrity": "sha512-v/59FxUKnMzymVce99gV43huxoqXWMb85aKvzlNvLN+ScDu6ZE4YMiTQNpfapVL2lkxhs0uwB3jH17EYd5TcsA==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-18.3.1.tgz", + "integrity": "sha512-sikmkjfsXPpPTku1aQkQ1MNNEKGBgGGRvUN/WeNS9dhCJ4dxU3O7dZctt1aQWj+W3nbuUtDiimAWF5fZHGFE2Q==", "dev": true }, "node_modules/@angular-eslint/eslint-plugin": { - "version": "18.3.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-18.3.0.tgz", - "integrity": "sha512-Vl7gfPMXxvtHTjYdlzR161aj5xrqW6T57wd8ToQ7Gqzm0qHGfY6kE4SQobUa2LCYckTNSlv+zXe48C4ah/dSjw==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-18.3.1.tgz", + "integrity": "sha512-MP4Nm+SHboF8KdnN0KpPEGAaTTzDLPm3+S/4W3Mg8onqWCyadyd4mActh9mK/pvCj8TVlb/SW1zeTtdMYhwonw==", "dev": true, "dependencies": { - "@angular-eslint/bundled-angular-compiler": "18.3.0", - "@angular-eslint/utils": "18.3.0" + "@angular-eslint/bundled-angular-compiler": "18.3.1", + "@angular-eslint/utils": "18.3.1" }, "peerDependencies": { "@typescript-eslint/utils": "^7.11.0 || ^8.0.0", @@ -440,13 +440,13 @@ } }, "node_modules/@angular-eslint/eslint-plugin-template": { - "version": "18.3.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-18.3.0.tgz", - "integrity": "sha512-ddR/qwYbUeq9IpyVKrPbfZyRBTy6V8uc5I0JcBKttQ4CZ4joXhqsVgWFsI+JAMi8E66uNj1VC7NuKCOjDINv2Q==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-18.3.1.tgz", + "integrity": "sha512-hBJ3+f7VSidvrtYaXH7Vp0sWvblA9jLK2c6uQzhYGWdEDUcTg7g7VI9ThW39WvMbHqkyzNE4PPOynK69cBEDGg==", "dev": true, "dependencies": { - "@angular-eslint/bundled-angular-compiler": "18.3.0", - "@angular-eslint/utils": "18.3.0", + "@angular-eslint/bundled-angular-compiler": "18.3.1", + "@angular-eslint/utils": "18.3.1", "aria-query": "5.3.0", "axobject-query": "4.1.0" }, @@ -456,42 +456,14 @@ "typescript": "*" } }, - "node_modules/@angular-eslint/eslint-plugin-template/node_modules/@angular-eslint/utils": { - "version": "18.3.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-18.3.0.tgz", - "integrity": "sha512-sCrkHkpxBJZLuCikdboZoawCfc2UgbJv+T14tu2uQCv+Vwzeadnu04vkeY2vTkA8GeBdBij/G9/N/nvwmwVw3g==", - "dev": true, - "dependencies": { - "@angular-eslint/bundled-angular-compiler": "18.3.0" - }, - "peerDependencies": { - "@typescript-eslint/utils": "^7.11.0 || ^8.0.0", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": "*" - } - }, - "node_modules/@angular-eslint/eslint-plugin/node_modules/@angular-eslint/utils": { - "version": "18.3.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-18.3.0.tgz", - "integrity": "sha512-sCrkHkpxBJZLuCikdboZoawCfc2UgbJv+T14tu2uQCv+Vwzeadnu04vkeY2vTkA8GeBdBij/G9/N/nvwmwVw3g==", - "dev": true, - "dependencies": { - "@angular-eslint/bundled-angular-compiler": "18.3.0" - }, - "peerDependencies": { - "@typescript-eslint/utils": "^7.11.0 || ^8.0.0", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": "*" - } - }, "node_modules/@angular-eslint/schematics": { - "version": "18.3.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-18.3.0.tgz", - "integrity": "sha512-rQ4DEWwf3f5n096GAK6JvXD0SRzRJ52WRaIyKg8MMkk6qvUDfZI8seOkcbjDtZoIe6Ds7DfqSfJgNVte75qvPQ==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-18.3.1.tgz", + "integrity": "sha512-BTsQHDu7LjvXannJTb5BqMPCFIHRNN94eRyb60VfjJxB/ZFtsbAQDFFOi5lEZsRsd4mBeUMuL9mW4IMcPtUQ9Q==", "dev": true, "dependencies": { - "@angular-eslint/eslint-plugin": "18.3.0", - "@angular-eslint/eslint-plugin-template": "18.3.0", + "@angular-eslint/eslint-plugin": "18.3.1", + "@angular-eslint/eslint-plugin-template": "18.3.1", "ignore": "5.3.2", "semver": "7.6.3", "strip-json-comments": "3.1.1" @@ -502,12 +474,12 @@ } }, "node_modules/@angular-eslint/template-parser": { - "version": "18.3.0", - "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-18.3.0.tgz", - "integrity": "sha512-1mUquqcnugI4qsoxcYZKZ6WMi6RPelDcJZg2YqGyuaIuhWmi3ZqJZLErSSpjP60+TbYZu7wM8Kchqa1bwJtEaQ==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-18.3.1.tgz", + "integrity": "sha512-JUUkfWH1G+u/Uk85ZYvJSt/qwN/Ko+jlXFtzBEcknJZsTWTwBcp36v77gPZe5FmKSziJZpyPUd+7Kiy6tuSCTw==", "dev": true, "dependencies": { - "@angular-eslint/bundled-angular-compiler": "18.3.0", + "@angular-eslint/bundled-angular-compiler": "18.3.1", "eslint-scope": "^8.0.2" }, "peerDependencies": { @@ -531,6 +503,20 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@angular-eslint/utils": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-18.3.1.tgz", + "integrity": "sha512-sd9niZI7h9H2FQ7OLiQsLFBhjhRQTASh+Q0+4+hyjv9idbSHBJli8Gsi2fqj9zhtMKpAZFTrWzuLUpubJ9UYbA==", + "dev": true, + "dependencies": { + "@angular-eslint/bundled-angular-compiler": "18.3.1" + }, + "peerDependencies": { + "@typescript-eslint/utils": "^7.11.0 || ^8.0.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": "*" + } + }, "node_modules/@angular/animations": { "version": "18.2.4", "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-18.2.4.tgz", diff --git a/client/package.json b/client/package.json index 83964cdaf2..2cc3f386f3 100644 --- a/client/package.json +++ b/client/package.json @@ -100,11 +100,11 @@ }, "devDependencies": { "@angular-devkit/build-angular": "^18.2.4", - "@angular-eslint/builder": "^18.3.0", - "@angular-eslint/eslint-plugin": "^18.3.0", - "@angular-eslint/eslint-plugin-template": "^18.3.0", - "@angular-eslint/schematics": "^18.3.0", - "@angular-eslint/template-parser": "^18.3.0", + "@angular-eslint/builder": "^18.3.1", + "@angular-eslint/eslint-plugin": "^18.3.1", + "@angular-eslint/eslint-plugin-template": "^18.3.1", + "@angular-eslint/schematics": "^18.3.1", + "@angular-eslint/template-parser": "^18.3.1", "@angular/cli": "^18.2.4", "@angular/compiler-cli": "^18.2.4", "@colsen1991/ngx-translate-extract-marker": "^2.0.8", From 7be728ef33c8b72e94007d7f0f048b2e92cd169f Mon Sep 17 00:00:00 2001 From: Ludwig Reiter Date: Wed, 18 Sep 2024 11:41:38 +0200 Subject: [PATCH 10/30] Fix none item setting id 0 in selector for motion block (#4128) --- .../motion-block-list/motion-block-list.component.ts | 3 +++ 1 file changed, 3 insertions(+) diff --git a/client/src/app/site/pages/meetings/pages/motions/pages/motion-blocks/components/motion-block-list/motion-block-list.component.ts b/client/src/app/site/pages/meetings/pages/motions/pages/motion-blocks/components/motion-block-list/motion-block-list.component.ts index cedf85c0ed..27707105c6 100644 --- a/client/src/app/site/pages/meetings/pages/motions/pages/motion-blocks/components/motion-block-list/motion-block-list.component.ts +++ b/client/src/app/site/pages/meetings/pages/motions/pages/motion-blocks/components/motion-block-list/motion-block-list.component.ts @@ -73,6 +73,9 @@ export class MotionBlockListComponent extends BaseMeetingListViewComponent { if (result) { + if (result[`agenda_parent_id`] === 0) { + result[`agenda_parent_id`] = null; + } this.repo.create(result); } }); From ec12018f8a8033fc332b2e8a79b997117d44841d Mon Sep 17 00:00:00 2001 From: Bastian Rihm Date: Wed, 18 Sep 2024 12:07:52 +0200 Subject: [PATCH 11/30] Align editor styles with displayed content stylings (#4100) --- .../ui/modules/editor/components/editor/editor.component.scss | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/client/src/app/ui/modules/editor/components/editor/editor.component.scss b/client/src/app/ui/modules/editor/components/editor/editor.component.scss index 7b30fbdc98..78a8012902 100644 --- a/client/src/app/ui/modules/editor/components/editor/editor.component.scss +++ b/client/src/app/ui/modules/editor/components/editor/editor.component.scss @@ -1,3 +1,5 @@ +@import 'src/assets/styles/mixins/detail-view-appearance.scss'; + .editor { .editor-menu { display: flex; @@ -84,6 +86,8 @@ border: 1px dashed #bbb; } } + + @include detail-view-appearance; } &:focus-within { border-bottom-color: var(--mdc-filled-text-field-focus-active-indicator-color); From c5afd0865457cc056f764ad3a7794eea5d56f992 Mon Sep 17 00:00:00 2001 From: Viktoriia Krasnovyd <114735598+vkrasnovyd@users.noreply.github.com> Date: Thu, 19 Sep 2024 09:12:42 +0200 Subject: [PATCH 12/30] Change poll title in Autopilot (#4139) --- .../poll-collection/poll-collection.component.ts | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/client/src/app/site/pages/meetings/pages/autopilot/components/poll-collection/poll-collection.component.ts b/client/src/app/site/pages/meetings/pages/autopilot/components/poll-collection/poll-collection.component.ts index ddf7ae1e42..d788f6bd88 100644 --- a/client/src/app/site/pages/meetings/pages/autopilot/components/poll-collection/poll-collection.component.ts +++ b/client/src/app/site/pages/meetings/pages/autopilot/components/poll-collection/poll-collection.component.ts @@ -2,8 +2,10 @@ import { ChangeDetectorRef, Component, Input, OnDestroy, OnInit } from '@angular import { TranslateService } from '@ngx-translate/core'; import { map } from 'rxjs'; import { Id } from 'src/app/domain/definitions/key-types'; +import { Assignment } from 'src/app/domain/models/assignments/assignment'; import { PollContentObject } from 'src/app/domain/models/poll'; import { PollClassType } from 'src/app/domain/models/poll/poll-constants'; +import { Topic } from 'src/app/domain/models/topics/topic'; import { BaseComponent } from 'src/app/site/base/base.component'; import { BaseViewModel } from 'src/app/site/base/base-view-model'; import { PollControllerService } from 'src/app/site/pages/meetings/modules/poll/services/poll-controller.service'; @@ -106,11 +108,15 @@ export class PollCollectionComponent extends BaseCo public getPollVoteTitle(poll: ViewPoll): string { const contentObject = poll.getContentObject(); const listTitle = contentObject.getListTitle(); - const model = contentObject.getVerboseName(); + const objectCollection = contentObject.COLLECTION; const pollTitle = poll.getTitle(); - if (this.showExtendedTitle && contentObject?.fqid !== this.currentProjection?.fqid) { - return `(${model}) ${listTitle} - ${pollTitle}`; + if ( + this.showExtendedTitle && + contentObject?.fqid !== this.currentProjection?.fqid && + [Topic.COLLECTION, Assignment.COLLECTION].includes(objectCollection) + ) { + return `${listTitle}: ${pollTitle}`; } else { return pollTitle; } From f51043040738adf4d2d3e0c8244b998a214461a7 Mon Sep 17 00:00:00 2001 From: Bastian Rihm Date: Fri, 20 Sep 2024 13:16:40 +0200 Subject: [PATCH 13/30] Fix amendment list performance (#3969) --- .../projectable-list.component.ts | 6 +++- .../amendment-list.component.ts | 34 ++++++++++++++----- .../view-list/view-list.component.ts | 13 +++++++ 3 files changed, 43 insertions(+), 10 deletions(-) diff --git a/client/src/app/site/pages/meetings/modules/meetings-component-collector/projectable-list/components/projectable-list/projectable-list.component.ts b/client/src/app/site/pages/meetings/modules/meetings-component-collector/projectable-list/components/projectable-list/projectable-list.component.ts index e667b1ba7f..c8b066bc76 100644 --- a/client/src/app/site/pages/meetings/modules/meetings-component-collector/projectable-list/components/projectable-list/projectable-list.component.ts +++ b/client/src/app/site/pages/meetings/modules/meetings-component-collector/projectable-list/components/projectable-list/projectable-list.component.ts @@ -1,4 +1,4 @@ -import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; +import { ChangeDetectionStrategy, Component, Input, ViewChild } from '@angular/core'; import { map, Observable } from 'rxjs'; import { Permission } from 'src/app/domain/definitions/permission'; import { BaseViewModel } from 'src/app/site/base/base-view-model'; @@ -8,6 +8,7 @@ import { BaseProjectableViewModel } from 'src/app/site/pages/meetings/view-model import { OperatorService } from 'src/app/site/services/operator.service'; import { ColumnRestriction, ListComponent } from 'src/app/ui/modules/list'; import { BaseListComponent } from 'src/app/ui/modules/list/base/base-list.component'; +import { ViewListComponent } from 'src/app/ui/modules/list/components/view-list/view-list.component'; import { END_POSITION, START_POSITION @@ -33,6 +34,9 @@ export class ProjectableListComponent | undefined; + /** * If a Projector column should be shown (at all) */ diff --git a/client/src/app/site/pages/meetings/pages/motions/pages/amendments/components/amendment-list/amendment-list.component.ts b/client/src/app/site/pages/meetings/pages/motions/pages/amendments/components/amendment-list/amendment-list.component.ts index 10e0ed4402..09b94ed89b 100644 --- a/client/src/app/site/pages/meetings/pages/motions/pages/amendments/components/amendment-list/amendment-list.component.ts +++ b/client/src/app/site/pages/meetings/pages/motions/pages/amendments/components/amendment-list/amendment-list.component.ts @@ -1,10 +1,11 @@ -import { Component, OnInit, ViewEncapsulation } from '@angular/core'; +import { Component, OnInit, ViewChild, ViewEncapsulation } from '@angular/core'; import { ActivatedRoute, ParamMap } from '@angular/router'; import { TranslateService } from '@ngx-translate/core'; -import { distinctUntilChanged, firstValueFrom, Observable, of, switchMap } from 'rxjs'; +import { firstValueFrom, Observable, of, switchMap } from 'rxjs'; import { Id } from 'src/app/domain/definitions/key-types'; import { ItemTypeChoices } from 'src/app/domain/models/agenda/agenda-item'; import { BaseMeetingListViewComponent } from 'src/app/site/pages/meetings/base/base-meeting-list-view.component'; +import { ProjectableListComponent } from 'src/app/site/pages/meetings/modules/meetings-component-collector/projectable-list/components/projectable-list/projectable-list.component'; import { ChangeRecoMode } from '../../../../../../../../../domain/models/motions/motions.constants'; import { MotionExportDialogService } from '../../../../components/motion-export-dialog/services/motion-export-dialog.service'; @@ -29,6 +30,9 @@ const AMENDMENT_LIST_STORAGE_INDEX = `amendment_list`; encapsulation: ViewEncapsulation.None }) export class AmendmentListComponent extends BaseMeetingListViewComponent implements OnInit { + @ViewChild(ProjectableListComponent) + private readonly _projectableTableComponent: ProjectableListComponent | undefined; + /** * Hold the Id of the parent motion */ @@ -93,13 +97,21 @@ export class AmendmentListComponent extends BaseMeetingListViewComponent x.length === y.length)) - .subscribe(amendments => { - for (const amendment of amendments) { - this._amendmentDiffLinesMap[amendment.id] = this.getAmendmentDiffLines(amendment); + this.amendmentFilterService.outputObservable.subscribe(amendments => { + const viewList = this._projectableTableComponent?.viewListComponent; + if (!viewList) { + return; + } + + const entriesInViewport = viewList.entriesInViewport.map(e => e.id); + for (const amendment of amendments) { + if (this._amendmentDiffLinesMap[amendment.id]) { + this._amendmentDiffLinesMap[amendment.id] = entriesInViewport.includes(amendment.id) + ? this.getAmendmentDiffLines(amendment) + : undefined; } - }), + } + }), this.meetingSettingsService .get(`motions_show_sequential_number`) .subscribe(show => (this.showSequentialNumber = show)) @@ -113,7 +125,11 @@ export class AmendmentListComponent extends BaseMeetingListViewComponent implements OnInit, OnDest return this._scrollingTableComponent.source; } + public get entriesInViewport(): V[] { + const entries = []; + if (this.scrollViewport) { + const range = this.scrollViewport.getRenderedRange(); + for (let i = range.start; i < range.end; i++) { + if (this.source[i]) { + entries.push(this.source[i]); + } + } + } + return entries; + } + /** * Observable to the raw data */ From 0db6a3af592b0b4fca9d69a0d366e0e41d2e00ca Mon Sep 17 00:00:00 2001 From: Ludwig Reiter Date: Fri, 20 Sep 2024 16:43:30 +0200 Subject: [PATCH 14/30] Dashboard reposition closed meeting icon (#4082) --- .../dashboard/dashboard.component.html | 24 ++++++++++++------- .../dashboard/dashboard.component.scss | 14 +++++++++++ .../dashboard-detail.module.ts | 4 +++- .../meeting-list/meeting-list.component.html | 9 ++++++- .../meeting-list/meeting-list.component.scss | 8 +++++++ 5 files changed, 48 insertions(+), 11 deletions(-) diff --git a/client/src/app/site/pages/organization/pages/dashboard/pages/dashboard-detail/components/dashboard/dashboard.component.html b/client/src/app/site/pages/organization/pages/dashboard/pages/dashboard-detail/components/dashboard/dashboard.component.html index 96afe96fc2..f9d9f1df05 100644 --- a/client/src/app/site/pages/organization/pages/dashboard/pages/dashboard-detail/components/dashboard/dashboard.component.html +++ b/client/src/app/site/pages/organization/pages/dashboard/pages/dashboard-detail/components/dashboard/dashboard.component.html @@ -158,12 +158,19 @@

{{ 'Calendar' | translate }}

[ngClass]="context?.cssClass" [routerLink]="meeting.id" > - @if (meeting.locked_from_inside) { - lock - }
-
{{ meeting.name }}
-
+
+ +
{{ meeting.name }}
+
+
+
@if (meeting.location) { {{ meeting.location }} } @@ -183,12 +190,11 @@

{{ 'Calendar' | translate }}

} @else {
- @if (meeting.locked_from_inside) { - lock - }
- {{ meeting.name }} + +
{{ meeting.name }}
+
@if (meeting.location) { diff --git a/client/src/app/site/pages/organization/pages/dashboard/pages/dashboard-detail/components/dashboard/dashboard.component.scss b/client/src/app/site/pages/organization/pages/dashboard/pages/dashboard-detail/components/dashboard/dashboard.component.scss index 95313c9d24..865250a2b5 100644 --- a/client/src/app/site/pages/organization/pages/dashboard/pages/dashboard-detail/components/dashboard/dashboard.component.scss +++ b/client/src/app/site/pages/organization/pages/dashboard/pages/dashboard-detail/components/dashboard/dashboard.component.scss @@ -134,6 +134,12 @@ os-dashboard { } } + .show-lock-icon { + mat-icon { + display: inline-block !important; + } + } + .orga-information { width: calc(100% - 128px); @@ -298,4 +304,12 @@ os-dashboard { } } } + + .align-w-title-if-locked { + padding-left: 25px; + } + + .align-w-title-if-not-locked { + padding-left: 6px; + } } diff --git a/client/src/app/site/pages/organization/pages/dashboard/pages/dashboard-detail/dashboard-detail.module.ts b/client/src/app/site/pages/organization/pages/dashboard/pages/dashboard-detail/dashboard-detail.module.ts index 102aefca06..595dc76d92 100644 --- a/client/src/app/site/pages/organization/pages/dashboard/pages/dashboard-detail/dashboard-detail.module.ts +++ b/client/src/app/site/pages/organization/pages/dashboard/pages/dashboard-detail/dashboard-detail.module.ts @@ -11,6 +11,7 @@ import { OpenSlidesTranslationModule } from 'src/app/site/modules/translations'; import { HeadBarModule } from 'src/app/ui/modules/head-bar'; import { MeetingTimeModule } from 'src/app/ui/modules/meeting-time/meeting-time.module'; +import { IconContainerModule } from '../../../../../../../ui/modules/icon-container/icon-container.module'; import { DashboardComponent } from './components/dashboard/dashboard.component'; import { DashboardDetailRoutingModule } from './dashboard-detail-routing.module'; @@ -28,7 +29,8 @@ import { DashboardDetailRoutingModule } from './dashboard-detail-routing.module' ScrollingModule, HeadBarModule, MeetingTimeModule, - OpenSlidesTranslationModule.forChild() + OpenSlidesTranslationModule.forChild(), + IconContainerModule ] }) export class DashboardDetailModule {} diff --git a/client/src/app/site/pages/organization/pages/orga-meetings/pages/meeting-list/components/meeting-list/meeting-list.component.html b/client/src/app/site/pages/organization/pages/orga-meetings/pages/meeting-list/components/meeting-list/meeting-list.component.html index 6d3f7cc03c..36e2f5a324 100644 --- a/client/src/app/site/pages/organization/pages/orga-meetings/pages/meeting-list/components/meeting-list/meeting-list.component.html +++ b/client/src/app/site/pages/organization/pages/orga-meetings/pages/meeting-list/components/meeting-list/meeting-list.component.html @@ -78,7 +78,14 @@

{{ 'Meetings' | translate }}

@if (meeting.location || meeting.start_time || meeting.end_time) { -
+ @let numIcons = meeting.isArchived + meeting.isTemplate + !!meeting.locked_from_inside; +
@if (meeting.location) { {{ meeting.location }} } diff --git a/client/src/app/site/pages/organization/pages/orga-meetings/pages/meeting-list/components/meeting-list/meeting-list.component.scss b/client/src/app/site/pages/organization/pages/orga-meetings/pages/meeting-list/components/meeting-list/meeting-list.component.scss index 26570fcc42..b402899f9b 100644 --- a/client/src/app/site/pages/organization/pages/orga-meetings/pages/meeting-list/components/meeting-list/meeting-list.component.scss +++ b/client/src/app/site/pages/organization/pages/orga-meetings/pages/meeting-list/components/meeting-list/meeting-list.component.scss @@ -18,3 +18,11 @@ .no-access { cursor: auto; } + +.align-w-title-w-one-icon { + padding-left: 17px; +} + +.align-w-title-w-two-icon { + padding-left: 33px; +} From a68d5b08b307ba6cf9ffab88604b808e3d49c61f Mon Sep 17 00:00:00 2001 From: Ludwig Reiter Date: Mon, 23 Sep 2024 12:20:56 +0200 Subject: [PATCH 15/30] Hide group/external_id for non meeting admins (#4160) --- .../group-list/group-list.component.html | 10 ++++++---- .../group-list/group-list.component.ts | 18 ++++++++++++++++-- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/client/src/app/site/pages/meetings/pages/participants/modules/groups/components/group-list/group-list.component.html b/client/src/app/site/pages/meetings/pages/participants/modules/groups/components/group-list/group-list.component.html index 7320cefadb..cebd6d404a 100644 --- a/client/src/app/site/pages/meetings/pages/participants/modules/groups/components/group-list/group-list.component.html +++ b/client/src/app/site/pages/meetings/pages/participants/modules/groups/components/group-list/group-list.component.html @@ -105,10 +105,12 @@

} - - {{ 'External ID' | translate }} - - + @if (allowExternalId) { + + {{ 'External ID' | translate }} + + + } diff --git a/client/src/app/site/pages/meetings/pages/participants/modules/groups/components/group-list/group-list.component.ts b/client/src/app/site/pages/meetings/pages/participants/modules/groups/components/group-list/group-list.component.ts index a624408094..be2822c3d6 100644 --- a/client/src/app/site/pages/meetings/pages/participants/modules/groups/components/group-list/group-list.component.ts +++ b/client/src/app/site/pages/meetings/pages/participants/modules/groups/components/group-list/group-list.component.ts @@ -11,6 +11,7 @@ import { isUniqueAmong } from 'src/app/infrastructure/utils/validators/is-unique import { CanComponentDeactivate } from 'src/app/site/guards/watch-for-changes.guard'; import { BaseMeetingComponent } from 'src/app/site/pages/meetings/base/base-meeting.component'; import { ViewGroup } from 'src/app/site/pages/meetings/pages/participants'; +import { OperatorService } from 'src/app/site/services/operator.service'; import { PromptService } from 'src/app/ui/modules/prompt-dialog'; import { GroupControllerService } from '../../services'; @@ -80,6 +81,7 @@ export class GroupListComponent extends BaseMeetingComponent implements OnInit, private dialog: MatDialog, private repo: GroupControllerService, private promptService: PromptService, + private operator: OperatorService, private formBuilder: UntypedFormBuilder ) { super(); @@ -113,7 +115,7 @@ export class GroupListComponent extends BaseMeetingComponent implements OnInit, const name = this.selectedGroup ? this.selectedGroup.name : ``; const external_id = this.selectedGroup?.external_id ?? ``; - this.groupForm = this.formBuilder.group({ + const formConfig = { name: [ name, [ @@ -126,7 +128,12 @@ export class GroupListComponent extends BaseMeetingComponent implements OnInit, ] ], external_id: [external_id] - }); + }; + if (!this.allowExternalId) { + delete formConfig.external_id; + } + + this.groupForm = this.formBuilder.group(formConfig); this.dialogRef = this.dialog.open(this.groupEditDialog!, infoDialogSettings); @@ -277,4 +284,11 @@ export class GroupListComponent extends BaseMeetingComponent implements OnInit, } return true; } + + /** + * Function to allow to edit the external_id + */ + public get allowExternalId(): boolean { + return this.operator.isMeetingAdmin || this.operator.isSuperAdmin; + } } From 2a900ee8891b53d4d2c995c07a65d4b820ef21f9 Mon Sep 17 00:00:00 2001 From: Ludwig Reiter Date: Mon, 23 Sep 2024 12:25:28 +0200 Subject: [PATCH 16/30] File-list: Hide edit/group button in multiselect (#4161) --- .../file-list/components/file-list/file-list.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/app/ui/modules/file-list/components/file-list/file-list.component.html b/client/src/app/ui/modules/file-list/components/file-list/file-list.component.html index a017cfbb0e..dc0d296039 100644 --- a/client/src/app/ui/modules/file-list/components/file-list/file-list.component.html +++ b/client/src/app/ui/modules/file-list/components/file-list/file-list.component.html @@ -118,7 +118,7 @@