From a51efa641d2cf70d2e57f6b8bb179e203a4c44fe Mon Sep 17 00:00:00 2001 From: Sven Heidemann Date: Tue, 18 Oct 2022 18:04:53 +0200 Subject: [PATCH] Improved auth views and imrpoved default settings handling #70 --- kdb-web/.gitignore | 3 + kdb-web/package-lock.json | 607 +++++++++--------- kdb-web/src/app/app.component.ts | 32 +- .../app/components/header/header.component.ts | 1 - kdb-web/src/app/modules/auth/auth.module.ts | 8 +- .../auth-header/auth-header.component.html | 10 + .../auth-header/auth-header.component.scss | 0 .../auth-header/auth-header.component.spec.ts | 23 + .../auth-header/auth-header.component.ts | 83 +++ .../forget-password.component.html | 30 +- .../components/login/login.component.html | 22 +- .../registration/registration.component.html | 36 +- .../src/app/services/theme/theme.service.ts | 10 +- kdb-web/src/assets/i18n/de.json | 33 +- kdb-web/src/assets/i18n/en.json | 4 +- kdb-web/src/styles.scss | 16 +- kdb-web/src/styles/primeng-fixes.scss | 7 +- .../src/styles/themes/default-dark-theme.scss | 5 +- .../styles/themes/default-light-theme.scss | 5 +- .../styles/themes/sh-edraft-dark-theme.scss | 5 +- .../styles/themes/sh-edraft-light-theme.scss | 5 +- 21 files changed, 569 insertions(+), 376 deletions(-) create mode 100644 kdb-web/src/app/modules/auth/components/auth-header/auth-header.component.html create mode 100644 kdb-web/src/app/modules/auth/components/auth-header/auth-header.component.scss create mode 100644 kdb-web/src/app/modules/auth/components/auth-header/auth-header.component.spec.ts create mode 100644 kdb-web/src/app/modules/auth/components/auth-header/auth-header.component.ts diff --git a/kdb-web/.gitignore b/kdb-web/.gitignore index c03363f8..50db1a94 100644 --- a/kdb-web/.gitignore +++ b/kdb-web/.gitignore @@ -41,3 +41,6 @@ testem.log # System files .DS_Store Thumbs.db + +ignore +ignore/* \ No newline at end of file diff --git a/kdb-web/package-lock.json b/kdb-web/package-lock.json index 273efa03..6094a76e 100644 --- a/kdb-web/package-lock.json +++ b/kdb-web/package-lock.json @@ -64,12 +64,12 @@ } }, "node_modules/@angular-devkit/architect": { - "version": "0.1402.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1402.5.tgz", - "integrity": "sha512-vtJEwB51UEY1Q7FCI7xGLdhdb2SRTtI1Qs0or95momn85NuxlaMQsXK1Wxu9/EwtWKZK8dXePXbB/hpiNt61JQ==", + "version": "0.1402.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1402.6.tgz", + "integrity": "sha512-qTmPBD7fBXBtlSapGLUEcJvRuL/O556zCFFpH3kSlzPNTYxi2falBjGY+4aG+078RXT1vVZtFsvRTart6VbhAg==", "dev": true, "dependencies": { - "@angular-devkit/core": "14.2.5", + "@angular-devkit/core": "14.2.6", "rxjs": "6.6.7" }, "engines": { @@ -97,15 +97,15 @@ "dev": true }, "node_modules/@angular-devkit/build-angular": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-14.2.5.tgz", - "integrity": "sha512-jSgH11E+zs1C24lXj7R/PgXsTUpoYoMr1GtO6mpVROgXL5czVlL+b/B1p2HwbcAKuI9WXb48X6OZ6fOZhDQlSg==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-14.2.6.tgz", + "integrity": "sha512-XtaUwb3aZ8S0vl0y9bmbdFOH0KQCQ778twFH+ZfHW2BcPYtQz2Cy2rcVKXBQ850RyC0GxgMPfco6OGQndPpizg==", "dev": true, "dependencies": { "@ampproject/remapping": "2.2.0", - "@angular-devkit/architect": "0.1402.5", - "@angular-devkit/build-webpack": "0.1402.5", - "@angular-devkit/core": "14.2.5", + "@angular-devkit/architect": "0.1402.6", + "@angular-devkit/build-webpack": "0.1402.6", + "@angular-devkit/core": "14.2.6", "@babel/core": "7.18.10", "@babel/generator": "7.18.12", "@babel/helper-annotate-as-pure": "7.18.6", @@ -116,7 +116,7 @@ "@babel/runtime": "7.18.9", "@babel/template": "7.18.10", "@discoveryjs/json-ext": "0.5.7", - "@ngtools/webpack": "14.2.5", + "@ngtools/webpack": "14.2.6", "ansi-colors": "4.1.3", "babel-loader": "8.2.5", "babel-plugin-istanbul": "6.1.1", @@ -223,12 +223,12 @@ "dev": true }, "node_modules/@angular-devkit/build-webpack": { - "version": "0.1402.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1402.5.tgz", - "integrity": "sha512-h+o0GZD9iATwWjaTiUR0lJ3QZ9twUOJ1sotRchXHzAXMuaDk8wqqPriL5S0qDMlA2QqpNt4OD9rodUCRwae7fw==", + "version": "0.1402.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1402.6.tgz", + "integrity": "sha512-gKsDxQ9pze0N1qDM0kdM4FfwpkjSOb0bQzqjZi7wTfrh/WGIQMCjG9CRwWT+Z289ZKaTpcQDPsDtOSo5QpKNDg==", "dev": true, "dependencies": { - "@angular-devkit/architect": "0.1402.5", + "@angular-devkit/architect": "0.1402.6", "rxjs": "6.6.7" }, "engines": { @@ -260,9 +260,9 @@ "dev": true }, "node_modules/@angular-devkit/core": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.5.tgz", - "integrity": "sha512-lSje+HX0fx9Y2A4k63jVHrWdGT4wellhwcZpTCv9P6LvdfTkAlrfra3TaYhUPjavCsPwlRC/VVQN3Qkzk5m6gA==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.6.tgz", + "integrity": "sha512-qtRSdRm/h7C3ya04PJTDgQXV6mM8Y4RakANX1GTSXetCf9AVSxg74NJX76DWUgiHT4JiPYnJgJU6Hr/L0H6JOQ==", "dev": true, "dependencies": { "ajv": "8.11.0", @@ -381,9 +381,9 @@ "dev": true }, "node_modules/@angular/animations": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.2.5.tgz", - "integrity": "sha512-4BhR9jSjgIwoK/alu7FSwSU5SxISMVFBAl/4cEYchfCqnflMNkZ8WwRVKTQjyeuYW5KtQTw9jRNp4tGK1YQWYw==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.2.6.tgz", + "integrity": "sha512-Tmb3Jj016j8m8OOGSk/ReL0b+OuUCMj0KQansk3C4pCpH9oPF67Vnm0fmVC2wYjjsSS/iDgl4kaDW740wfPGNQ==", "dependencies": { "tslib": "^2.3.0" }, @@ -391,7 +391,7 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/core": "14.2.5" + "@angular/core": "14.2.6" } }, "node_modules/@angular/cli": { @@ -514,9 +514,9 @@ "dev": true }, "node_modules/@angular/common": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.2.5.tgz", - "integrity": "sha512-v2fIK6imfMkUvYNjZQO+drE39QO3eSS95Yy7UN+6inb47DkAfzx6hipA9zKrMENjsS3kDv1d7cgDHE7WuOCzIw==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.2.6.tgz", + "integrity": "sha512-WNX7xe8LKP5DHPlae+c77PDwj0iIAAPIe1lWbhQysyi8uttbtL9VVP2XTFuQ3E6oVHJr+0IR0LMVGJ+a8i6zsw==", "dependencies": { "tslib": "^2.3.0" }, @@ -524,14 +524,14 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/core": "14.2.5", + "@angular/core": "14.2.6", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/compiler": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.2.5.tgz", - "integrity": "sha512-L7d2/D6o9wlB2ugqRYpev6a8JntqS+7lF2o6z8y7RR2YAlAu71nq0BDsQez4/aSCK3HnDq0yhEnns7vcmOq/jA==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.2.6.tgz", + "integrity": "sha512-XtmJRNQQ/bUcRjB6jG67km3EPug8frnHH50sLqxye+cljCzWQpzFN/Qr1z0abuzEX8OC4alqxCDCFgTFyyVkaQ==", "dependencies": { "tslib": "^2.3.0" }, @@ -539,7 +539,7 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/core": "14.2.5" + "@angular/core": "14.2.6" }, "peerDependenciesMeta": { "@angular/core": { @@ -548,9 +548,9 @@ } }, "node_modules/@angular/compiler-cli": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.2.5.tgz", - "integrity": "sha512-3GYzTPw96TfJjw7Aso+f+uN6VFBWedqRATUQ6v+BAEyZIboirdLI1JQFOcCfuKWUM2B48RW+pdIduZmG3ckotA==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.2.6.tgz", + "integrity": "sha512-zKnpZ5WDbM31dwr5GDAbCblMIEUzWSglUyqCxJfbCg21dE0EuLfd/WzsROgM2TucOtCT5xNipqz4bc+wdEOIgQ==", "dev": true, "dependencies": { "@babel/core": "^7.17.2", @@ -573,14 +573,14 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/compiler": "14.2.5", + "@angular/compiler": "14.2.6", "typescript": ">=4.6.2 <4.9" } }, "node_modules/@angular/core": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-14.2.5.tgz", - "integrity": "sha512-Ok78Abq0puMGlolvNVzKFvsX7ePDkyxpZzztDzXDdRA4x4o6bAuuDG9Y7Wab2+wsdY6NktO+dFQjq1UBWClgSg==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-14.2.6.tgz", + "integrity": "sha512-fEIz7E488X03tLIqmWQRpahxRRU2SMjb9i/rMUjMQJkbppJC3cykl31bCYzeixNO+zpE55GPGuQX2qI/yDenZA==", "dependencies": { "tslib": "^2.3.0" }, @@ -593,9 +593,9 @@ } }, "node_modules/@angular/forms": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.2.5.tgz", - "integrity": "sha512-aMH5Vrftny0KF0XzWQIGfHoI0LVQ2aatpWzdUWiUqBeX/Q+ucmxeP5rZyKtUsi0flETWxdRZSBTjbXZ3dsIcTA==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.2.6.tgz", + "integrity": "sha512-t7Hd9RMnHbXRTdH/H8h8ZC3PsK1U4rH+XYaIbQNcys/XSf1uRFHx9MWqkwS5hoQEFOxkFSX5dRv2xSnHtxfq5w==", "dependencies": { "tslib": "^2.3.0" }, @@ -603,16 +603,16 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/common": "14.2.5", - "@angular/core": "14.2.5", - "@angular/platform-browser": "14.2.5", + "@angular/common": "14.2.6", + "@angular/core": "14.2.6", + "@angular/platform-browser": "14.2.6", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/platform-browser": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.2.5.tgz", - "integrity": "sha512-FDZm23N9veSEouQX1YuZUjv7Nillroi+v0VbN1x5iPpFZEudaoZYT3A7bpJwdlxUx/4rGS0caaXNhN3CowtIeQ==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.2.6.tgz", + "integrity": "sha512-KQUN4YVYEK5NOL7QFnDulQta6tm9rPh/mruX/XCLkSmoRMlFBmsHyjx+VJBnBNUbUxNsBj7kknifOu9PqDgAWg==", "dependencies": { "tslib": "^2.3.0" }, @@ -620,9 +620,9 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/animations": "14.2.5", - "@angular/common": "14.2.5", - "@angular/core": "14.2.5" + "@angular/animations": "14.2.6", + "@angular/common": "14.2.6", + "@angular/core": "14.2.6" }, "peerDependenciesMeta": { "@angular/animations": { @@ -631,9 +631,9 @@ } }, "node_modules/@angular/platform-browser-dynamic": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.2.5.tgz", - "integrity": "sha512-7W8oLs8YEGRr8izgUlpHgBfg3vUb5H0yicTHJY4zIqHJJbG1rTl46CjULaMjYM/FWcS8o7y6XJJcHx0c7pKNsw==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.2.6.tgz", + "integrity": "sha512-SlWEYLED4ST1AFfgeB8SyKLVJYp36XT+3Vw3yDrObsthzXCiFAuYHQZfSWgT1Sfx3uFqEdN7nskJqD05wN3mQg==", "dependencies": { "tslib": "^2.3.0" }, @@ -641,16 +641,16 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/common": "14.2.5", - "@angular/compiler": "14.2.5", - "@angular/core": "14.2.5", - "@angular/platform-browser": "14.2.5" + "@angular/common": "14.2.6", + "@angular/compiler": "14.2.6", + "@angular/core": "14.2.6", + "@angular/platform-browser": "14.2.6" } }, "node_modules/@angular/router": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.2.5.tgz", - "integrity": "sha512-AUHcr9Lln7emJ/aete08UoqWQFZOLH1MhuP78r2pixvnNiZ9C8hcevX1rGGax0Po/Gy4PSJ4wnFhZPgifqCguQ==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.2.6.tgz", + "integrity": "sha512-Vz1kadGSqA7ZCZQ2woNbSBPMdiE5eTZv8cGympaFnFQQUzQTQ6zi22wY4RzovDk5Lw+EQkvOmaW2864LDzDeug==", "dependencies": { "tslib": "^2.3.0" }, @@ -658,9 +658,9 @@ "node": "^14.15.0 || >=16.10.0" }, "peerDependencies": { - "@angular/common": "14.2.5", - "@angular/core": "14.2.5", - "@angular/platform-browser": "14.2.5", + "@angular/common": "14.2.6", + "@angular/core": "14.2.6", + "@angular/platform-browser": "14.2.6", "rxjs": "^6.5.3 || ^7.4.0" } }, @@ -2319,9 +2319,9 @@ } }, "node_modules/@babel/traverse/node_modules/@babel/generator": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.4.tgz", - "integrity": "sha512-5T2lY5vXqS+5UEit/5TwcIUeCnwgCljcF8IQRT6XRQPBrvLeq5V8W+URv+GvwoF3FP8tkhp++evVyDzkDGzNmA==", + "version": "7.19.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.5.tgz", + "integrity": "sha512-DxbNz9Lz4aMZ99qPpO1raTbcrI1ZeYh+9NR9qhfkQIbFtVEqotHojEBxHzmxhVONkGt6VyrqVQcgpefMy9pqcg==", "dev": true, "dependencies": { "@babel/types": "^7.19.4", @@ -2768,9 +2768,9 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.16", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.16.tgz", - "integrity": "sha512-LCQ+NeThyJ4k1W2d+vIKdxuSt9R3pQSZ4P92m7EakaYuXcVWbHuT5bjNcqLd4Rdgi6xYWYDvBJZJLZSLanjDcA==", + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", "dev": true, "dependencies": { "@jridgewell/resolve-uri": "3.1.0", @@ -2784,9 +2784,9 @@ "dev": true }, "node_modules/@microsoft/signalr": { - "version": "6.0.9", - "resolved": "https://registry.npmjs.org/@microsoft/signalr/-/signalr-6.0.9.tgz", - "integrity": "sha512-DGVYe3ycT2PfRU7m3xCbv1HjhvClKl2VB1HyFlvf8SqBGXz3Cx+oalNWGYrGIgADA6Q2xaB4GaDmDdprTa2U0Q==", + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/@microsoft/signalr/-/signalr-6.0.10.tgz", + "integrity": "sha512-ND9LiIYac+ZDgCgW2QzpNfe9BTiOtjc2AX/2GtFIhRGhEzx5CixcNANg2VGj27IAxycAPPnEoy7+QA31Eil7QQ==", "dependencies": { "abort-controller": "^3.0.0", "eventsource": "^1.0.7", @@ -2795,30 +2795,10 @@ "ws": "^7.4.5" } }, - "node_modules/@microsoft/signalr/node_modules/ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/@ngtools/webpack": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-14.2.5.tgz", - "integrity": "sha512-Thwq1WyOOq1PIWMcjAAqKI1hbvGC0ywxbNoDadOlWpEFm6k0dvXC6Zm9lnVkePjxlPfagvbnv55+Lv9Vmygc1g==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-14.2.6.tgz", + "integrity": "sha512-HdfoHLGPzyP135BOlvTQcpeWisVfiH0u40YNTBVK3QAsrLnY17e2QG5BWBOrVYipRu1975cZtTC9rPjcCY8aLQ==", "dev": true, "engines": { "node": "^14.15.0 || >=16.10.0", @@ -3220,9 +3200,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "18.8.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.8.3.tgz", - "integrity": "sha512-0os9vz6BpGwxGe9LOhgP/ncvYN5Tx1fNcd2TM3rD/aCGBkysb+ZWpXEocG24h6ZzOi13+VB8HndAQFezsSOw1w==", + "version": "18.11.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.0.tgz", + "integrity": "sha512-IOXCvVRToe7e0ny7HpT/X9Rb2RYtElG1a+VshjwT00HxrM2dWBApHQoqsI6WiY7Q03vdf2bCrIGzVrkF/5t10w==", "dev": true }, "node_modules/@types/parse-json": { @@ -4170,9 +4150,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001418", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001418.tgz", - "integrity": "sha512-oIs7+JL3K9JRQ3jPZjlH6qyYDp+nBTCais7hjh0s+fuBwufc7uZ7hPYMXrDOJhV360KGMTcczMRObk0/iMqZRg==", + "version": "1.0.30001421", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001421.tgz", + "integrity": "sha512-Sw4eLbgUJAEhjLs1Fa+mk45sidp1wRn5y6GtDpHGBaNJ9OCDJaVh2tIaWWUnGfuXfKf1JCBaIarak3FkVAvEeA==", "dev": true, "funding": [ { @@ -4422,6 +4402,12 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -4485,26 +4471,6 @@ "node": ">= 0.6" } }, - "node_modules/content-disposition/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/content-type": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", @@ -4515,13 +4481,10 @@ } }, "node_modules/convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.1" - } + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true }, "node_modules/cookie": { "version": "0.4.2", @@ -4872,9 +4835,9 @@ } }, "node_modules/cssdb": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.0.1.tgz", - "integrity": "sha512-pT3nzyGM78poCKLAEy2zWIVX2hikq6dIrjuZzLV98MumBg+xMTNYfHx7paUlfiRTgg91O/vR889CIf+qiv79Rw==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.0.2.tgz", + "integrity": "sha512-Vm4b6P/PifADu0a76H0DKRNVWq3Rq9xa/Nx6oEMUBJlwTUuZoZ3dkZxo8Gob3UEL53Cq+Ma1GBgISed6XEBs3w==", "dev": true, "funding": { "type": "opencollective", @@ -5132,9 +5095,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.276", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.276.tgz", - "integrity": "sha512-EpuHPqu8YhonqLBXHoU6hDJCD98FCe6KDoet3/gY1qsQ6usjJoHqBH2YIVs8FXaAtHwVL8Uqa/fsYao/vq9VWQ==", + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", "dev": true }, "node_modules/emoji-regex": { @@ -5215,6 +5178,26 @@ "xmlhttprequest-ssl": "~2.0.0" } }, + "node_modules/engine.io-client/node_modules/ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/engine.io-parser": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", @@ -5223,6 +5206,27 @@ "node": ">=10.0.0" } }, + "node_modules/engine.io/node_modules/ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/enhanced-resolve": { "version": "5.10.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", @@ -5911,26 +5915,6 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, - "node_modules/express/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/express/node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -6493,6 +6477,12 @@ "util-deprecate": "~1.0.1" } }, + "node_modules/hpack.js/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, "node_modules/hpack.js/node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -8205,10 +8195,13 @@ } }, "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/minipass": { "version": "3.3.4", @@ -10602,10 +10595,24 @@ } }, "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, "node_modules/safer-buffer": { "version": "2.1.2", @@ -11015,9 +11022,9 @@ } }, "node_modules/socket.io": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.2.tgz", - "integrity": "sha512-6fCnk4ARMPZN448+SQcnn1u8OHUC72puJcNtSgg2xS34Cu7br1gQ09YKkO1PFfDn/wyUE9ZgMAwosJed003+NQ==", + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.3.tgz", + "integrity": "sha512-zdpnnKU+H6mOp7nYRXH4GNv1ux6HL6+lHL8g7Ds7Lj8CkdK1jJK/dlwsKDculbyOHifcJ0Pr/yeXnZQ5GeFrcg==", "dev": true, "dependencies": { "accepts": "~1.3.4", @@ -11290,26 +11297,6 @@ "safe-buffer": "~5.2.0" } }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -11815,9 +11802,9 @@ } }, "node_modules/ua-parser-js": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz", - "integrity": "sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==", + "version": "0.7.32", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.32.tgz", + "integrity": "sha512-f9BESNVhzlhEFf2CHMSj40NWOjYPl1YKYbrvIr/hFTDEmLq7SRbWvm7FcdcpCYT95zrOhC7gZSxjdnnTpBcwVw==", "dev": true, "funding": [ { @@ -12445,11 +12432,11 @@ "dev": true }, "node_modules/ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", "engines": { - "node": ">=10.0.0" + "node": ">=8.3.0" }, "peerDependencies": { "bufferutil": "^4.0.1", @@ -12559,12 +12546,12 @@ } }, "@angular-devkit/architect": { - "version": "0.1402.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1402.5.tgz", - "integrity": "sha512-vtJEwB51UEY1Q7FCI7xGLdhdb2SRTtI1Qs0or95momn85NuxlaMQsXK1Wxu9/EwtWKZK8dXePXbB/hpiNt61JQ==", + "version": "0.1402.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1402.6.tgz", + "integrity": "sha512-qTmPBD7fBXBtlSapGLUEcJvRuL/O556zCFFpH3kSlzPNTYxi2falBjGY+4aG+078RXT1vVZtFsvRTart6VbhAg==", "dev": true, "requires": { - "@angular-devkit/core": "14.2.5", + "@angular-devkit/core": "14.2.6", "rxjs": "6.6.7" }, "dependencies": { @@ -12586,15 +12573,15 @@ } }, "@angular-devkit/build-angular": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-14.2.5.tgz", - "integrity": "sha512-jSgH11E+zs1C24lXj7R/PgXsTUpoYoMr1GtO6mpVROgXL5czVlL+b/B1p2HwbcAKuI9WXb48X6OZ6fOZhDQlSg==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-14.2.6.tgz", + "integrity": "sha512-XtaUwb3aZ8S0vl0y9bmbdFOH0KQCQ778twFH+ZfHW2BcPYtQz2Cy2rcVKXBQ850RyC0GxgMPfco6OGQndPpizg==", "dev": true, "requires": { "@ampproject/remapping": "2.2.0", - "@angular-devkit/architect": "0.1402.5", - "@angular-devkit/build-webpack": "0.1402.5", - "@angular-devkit/core": "14.2.5", + "@angular-devkit/architect": "0.1402.6", + "@angular-devkit/build-webpack": "0.1402.6", + "@angular-devkit/core": "14.2.6", "@babel/core": "7.18.10", "@babel/generator": "7.18.12", "@babel/helper-annotate-as-pure": "7.18.6", @@ -12605,7 +12592,7 @@ "@babel/runtime": "7.18.9", "@babel/template": "7.18.10", "@discoveryjs/json-ext": "0.5.7", - "@ngtools/webpack": "14.2.5", + "@ngtools/webpack": "14.2.6", "ansi-colors": "4.1.3", "babel-loader": "8.2.5", "babel-plugin-istanbul": "6.1.1", @@ -12676,12 +12663,12 @@ } }, "@angular-devkit/build-webpack": { - "version": "0.1402.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1402.5.tgz", - "integrity": "sha512-h+o0GZD9iATwWjaTiUR0lJ3QZ9twUOJ1sotRchXHzAXMuaDk8wqqPriL5S0qDMlA2QqpNt4OD9rodUCRwae7fw==", + "version": "0.1402.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1402.6.tgz", + "integrity": "sha512-gKsDxQ9pze0N1qDM0kdM4FfwpkjSOb0bQzqjZi7wTfrh/WGIQMCjG9CRwWT+Z289ZKaTpcQDPsDtOSo5QpKNDg==", "dev": true, "requires": { - "@angular-devkit/architect": "0.1402.5", + "@angular-devkit/architect": "0.1402.6", "rxjs": "6.6.7" }, "dependencies": { @@ -12703,9 +12690,9 @@ } }, "@angular-devkit/core": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.5.tgz", - "integrity": "sha512-lSje+HX0fx9Y2A4k63jVHrWdGT4wellhwcZpTCv9P6LvdfTkAlrfra3TaYhUPjavCsPwlRC/VVQN3Qkzk5m6gA==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.6.tgz", + "integrity": "sha512-qtRSdRm/h7C3ya04PJTDgQXV6mM8Y4RakANX1GTSXetCf9AVSxg74NJX76DWUgiHT4JiPYnJgJU6Hr/L0H6JOQ==", "dev": true, "requires": { "ajv": "8.11.0", @@ -12788,9 +12775,9 @@ } }, "@angular/animations": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.2.5.tgz", - "integrity": "sha512-4BhR9jSjgIwoK/alu7FSwSU5SxISMVFBAl/4cEYchfCqnflMNkZ8WwRVKTQjyeuYW5KtQTw9jRNp4tGK1YQWYw==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.2.6.tgz", + "integrity": "sha512-Tmb3Jj016j8m8OOGSk/ReL0b+OuUCMj0KQansk3C4pCpH9oPF67Vnm0fmVC2wYjjsSS/iDgl4kaDW740wfPGNQ==", "requires": { "tslib": "^2.3.0" } @@ -12882,25 +12869,25 @@ } }, "@angular/common": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.2.5.tgz", - "integrity": "sha512-v2fIK6imfMkUvYNjZQO+drE39QO3eSS95Yy7UN+6inb47DkAfzx6hipA9zKrMENjsS3kDv1d7cgDHE7WuOCzIw==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.2.6.tgz", + "integrity": "sha512-WNX7xe8LKP5DHPlae+c77PDwj0iIAAPIe1lWbhQysyi8uttbtL9VVP2XTFuQ3E6oVHJr+0IR0LMVGJ+a8i6zsw==", "requires": { "tslib": "^2.3.0" } }, "@angular/compiler": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.2.5.tgz", - "integrity": "sha512-L7d2/D6o9wlB2ugqRYpev6a8JntqS+7lF2o6z8y7RR2YAlAu71nq0BDsQez4/aSCK3HnDq0yhEnns7vcmOq/jA==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.2.6.tgz", + "integrity": "sha512-XtmJRNQQ/bUcRjB6jG67km3EPug8frnHH50sLqxye+cljCzWQpzFN/Qr1z0abuzEX8OC4alqxCDCFgTFyyVkaQ==", "requires": { "tslib": "^2.3.0" } }, "@angular/compiler-cli": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.2.5.tgz", - "integrity": "sha512-3GYzTPw96TfJjw7Aso+f+uN6VFBWedqRATUQ6v+BAEyZIboirdLI1JQFOcCfuKWUM2B48RW+pdIduZmG3ckotA==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.2.6.tgz", + "integrity": "sha512-zKnpZ5WDbM31dwr5GDAbCblMIEUzWSglUyqCxJfbCg21dE0EuLfd/WzsROgM2TucOtCT5xNipqz4bc+wdEOIgQ==", "dev": true, "requires": { "@babel/core": "^7.17.2", @@ -12916,41 +12903,41 @@ } }, "@angular/core": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-14.2.5.tgz", - "integrity": "sha512-Ok78Abq0puMGlolvNVzKFvsX7ePDkyxpZzztDzXDdRA4x4o6bAuuDG9Y7Wab2+wsdY6NktO+dFQjq1UBWClgSg==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-14.2.6.tgz", + "integrity": "sha512-fEIz7E488X03tLIqmWQRpahxRRU2SMjb9i/rMUjMQJkbppJC3cykl31bCYzeixNO+zpE55GPGuQX2qI/yDenZA==", "requires": { "tslib": "^2.3.0" } }, "@angular/forms": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.2.5.tgz", - "integrity": "sha512-aMH5Vrftny0KF0XzWQIGfHoI0LVQ2aatpWzdUWiUqBeX/Q+ucmxeP5rZyKtUsi0flETWxdRZSBTjbXZ3dsIcTA==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.2.6.tgz", + "integrity": "sha512-t7Hd9RMnHbXRTdH/H8h8ZC3PsK1U4rH+XYaIbQNcys/XSf1uRFHx9MWqkwS5hoQEFOxkFSX5dRv2xSnHtxfq5w==", "requires": { "tslib": "^2.3.0" } }, "@angular/platform-browser": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.2.5.tgz", - "integrity": "sha512-FDZm23N9veSEouQX1YuZUjv7Nillroi+v0VbN1x5iPpFZEudaoZYT3A7bpJwdlxUx/4rGS0caaXNhN3CowtIeQ==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.2.6.tgz", + "integrity": "sha512-KQUN4YVYEK5NOL7QFnDulQta6tm9rPh/mruX/XCLkSmoRMlFBmsHyjx+VJBnBNUbUxNsBj7kknifOu9PqDgAWg==", "requires": { "tslib": "^2.3.0" } }, "@angular/platform-browser-dynamic": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.2.5.tgz", - "integrity": "sha512-7W8oLs8YEGRr8izgUlpHgBfg3vUb5H0yicTHJY4zIqHJJbG1rTl46CjULaMjYM/FWcS8o7y6XJJcHx0c7pKNsw==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.2.6.tgz", + "integrity": "sha512-SlWEYLED4ST1AFfgeB8SyKLVJYp36XT+3Vw3yDrObsthzXCiFAuYHQZfSWgT1Sfx3uFqEdN7nskJqD05wN3mQg==", "requires": { "tslib": "^2.3.0" } }, "@angular/router": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.2.5.tgz", - "integrity": "sha512-AUHcr9Lln7emJ/aete08UoqWQFZOLH1MhuP78r2pixvnNiZ9C8hcevX1rGGax0Po/Gy4PSJ4wnFhZPgifqCguQ==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.2.6.tgz", + "integrity": "sha512-Vz1kadGSqA7ZCZQ2woNbSBPMdiE5eTZv8cGympaFnFQQUzQTQ6zi22wY4RzovDk5Lw+EQkvOmaW2864LDzDeug==", "requires": { "tslib": "^2.3.0" } @@ -14114,9 +14101,9 @@ }, "dependencies": { "@babel/generator": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.4.tgz", - "integrity": "sha512-5T2lY5vXqS+5UEit/5TwcIUeCnwgCljcF8IQRT6XRQPBrvLeq5V8W+URv+GvwoF3FP8tkhp++evVyDzkDGzNmA==", + "version": "7.19.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.19.5.tgz", + "integrity": "sha512-DxbNz9Lz4aMZ99qPpO1raTbcrI1ZeYh+9NR9qhfkQIbFtVEqotHojEBxHzmxhVONkGt6VyrqVQcgpefMy9pqcg==", "dev": true, "requires": { "@babel/types": "^7.19.4", @@ -14380,9 +14367,9 @@ "dev": true }, "@jridgewell/trace-mapping": { - "version": "0.3.16", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.16.tgz", - "integrity": "sha512-LCQ+NeThyJ4k1W2d+vIKdxuSt9R3pQSZ4P92m7EakaYuXcVWbHuT5bjNcqLd4Rdgi6xYWYDvBJZJLZSLanjDcA==", + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", "dev": true, "requires": { "@jridgewell/resolve-uri": "3.1.0", @@ -14396,29 +14383,21 @@ "dev": true }, "@microsoft/signalr": { - "version": "6.0.9", - "resolved": "https://registry.npmjs.org/@microsoft/signalr/-/signalr-6.0.9.tgz", - "integrity": "sha512-DGVYe3ycT2PfRU7m3xCbv1HjhvClKl2VB1HyFlvf8SqBGXz3Cx+oalNWGYrGIgADA6Q2xaB4GaDmDdprTa2U0Q==", + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/@microsoft/signalr/-/signalr-6.0.10.tgz", + "integrity": "sha512-ND9LiIYac+ZDgCgW2QzpNfe9BTiOtjc2AX/2GtFIhRGhEzx5CixcNANg2VGj27IAxycAPPnEoy7+QA31Eil7QQ==", "requires": { "abort-controller": "^3.0.0", "eventsource": "^1.0.7", "fetch-cookie": "^0.11.0", "node-fetch": "^2.6.7", "ws": "^7.4.5" - }, - "dependencies": { - "ws": { - "version": "7.5.9", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", - "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", - "requires": {} - } } }, "@ngtools/webpack": { - "version": "14.2.5", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-14.2.5.tgz", - "integrity": "sha512-Thwq1WyOOq1PIWMcjAAqKI1hbvGC0ywxbNoDadOlWpEFm6k0dvXC6Zm9lnVkePjxlPfagvbnv55+Lv9Vmygc1g==", + "version": "14.2.6", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-14.2.6.tgz", + "integrity": "sha512-HdfoHLGPzyP135BOlvTQcpeWisVfiH0u40YNTBVK3QAsrLnY17e2QG5BWBOrVYipRu1975cZtTC9rPjcCY8aLQ==", "dev": true, "requires": {} }, @@ -14740,9 +14719,9 @@ "dev": true }, "@types/node": { - "version": "18.8.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.8.3.tgz", - "integrity": "sha512-0os9vz6BpGwxGe9LOhgP/ncvYN5Tx1fNcd2TM3rD/aCGBkysb+ZWpXEocG24h6ZzOi13+VB8HndAQFezsSOw1w==", + "version": "18.11.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.0.tgz", + "integrity": "sha512-IOXCvVRToe7e0ny7HpT/X9Rb2RYtElG1a+VshjwT00HxrM2dWBApHQoqsI6WiY7Q03vdf2bCrIGzVrkF/5t10w==", "dev": true }, "@types/parse-json": { @@ -15506,9 +15485,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001418", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001418.tgz", - "integrity": "sha512-oIs7+JL3K9JRQ3jPZjlH6qyYDp+nBTCais7hjh0s+fuBwufc7uZ7hPYMXrDOJhV360KGMTcczMRObk0/iMqZRg==", + "version": "1.0.30001421", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001421.tgz", + "integrity": "sha512-Sw4eLbgUJAEhjLs1Fa+mk45sidp1wRn5y6GtDpHGBaNJ9OCDJaVh2tIaWWUnGfuXfKf1JCBaIarak3FkVAvEeA==", "dev": true }, "chalk": { @@ -15694,6 +15673,12 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true } } }, @@ -15751,14 +15736,6 @@ "dev": true, "requires": { "safe-buffer": "5.2.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } } }, "content-type": { @@ -15768,13 +15745,10 @@ "dev": true }, "convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true }, "cookie": { "version": "0.4.2", @@ -16020,9 +15994,9 @@ "dev": true }, "cssdb": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.0.1.tgz", - "integrity": "sha512-pT3nzyGM78poCKLAEy2zWIVX2hikq6dIrjuZzLV98MumBg+xMTNYfHx7paUlfiRTgg91O/vR889CIf+qiv79Rw==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.0.2.tgz", + "integrity": "sha512-Vm4b6P/PifADu0a76H0DKRNVWq3Rq9xa/Nx6oEMUBJlwTUuZoZ3dkZxo8Gob3UEL53Cq+Ma1GBgISed6XEBs3w==", "dev": true }, "cssesc": { @@ -16207,9 +16181,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.4.276", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.276.tgz", - "integrity": "sha512-EpuHPqu8YhonqLBXHoU6hDJCD98FCe6KDoet3/gY1qsQ6usjJoHqBH2YIVs8FXaAtHwVL8Uqa/fsYao/vq9VWQ==", + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", "dev": true }, "emoji-regex": { @@ -16266,6 +16240,15 @@ "debug": "~4.3.1", "engine.io-parser": "~5.0.3", "ws": "~8.2.3" + }, + "dependencies": { + "ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "dev": true, + "requires": {} + } } }, "engine.io-client": { @@ -16278,6 +16261,14 @@ "engine.io-parser": "~5.0.3", "ws": "~8.2.3", "xmlhttprequest-ssl": "~2.0.0" + }, + "dependencies": { + "ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "requires": {} + } } }, "engine.io-parser": { @@ -16715,12 +16706,6 @@ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, "statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -17151,6 +17136,12 @@ "util-deprecate": "~1.0.1" } }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, "string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -18440,9 +18431,9 @@ } }, "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", "dev": true }, "minipass": { @@ -20125,9 +20116,9 @@ } }, "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true }, "safer-buffer": { @@ -20443,9 +20434,9 @@ "dev": true }, "socket.io": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.2.tgz", - "integrity": "sha512-6fCnk4ARMPZN448+SQcnn1u8OHUC72puJcNtSgg2xS34Cu7br1gQ09YKkO1PFfDn/wyUE9ZgMAwosJed003+NQ==", + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.3.tgz", + "integrity": "sha512-zdpnnKU+H6mOp7nYRXH4GNv1ux6HL6+lHL8g7Ds7Lj8CkdK1jJK/dlwsKDculbyOHifcJ0Pr/yeXnZQ5GeFrcg==", "dev": true, "requires": { "accepts": "~1.3.4", @@ -20670,14 +20661,6 @@ "dev": true, "requires": { "safe-buffer": "~5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } } }, "string-width": { @@ -21039,9 +21022,9 @@ "dev": true }, "ua-parser-js": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz", - "integrity": "sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==", + "version": "0.7.32", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.32.tgz", + "integrity": "sha512-f9BESNVhzlhEFf2CHMSj40NWOjYPl1YKYbrvIr/hFTDEmLq7SRbWvm7FcdcpCYT95zrOhC7gZSxjdnnTpBcwVw==", "dev": true }, "unicode-canonical-property-names-ecmascript": { @@ -21486,9 +21469,9 @@ "dev": true }, "ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", "requires": {} }, "xmlhttprequest-ssl": { diff --git a/kdb-web/src/app/app.component.ts b/kdb-web/src/app/app.component.ts index 72139e66..1a2cf35f 100644 --- a/kdb-web/src/app/app.component.ts +++ b/kdb-web/src/app/app.component.ts @@ -1,4 +1,6 @@ import { Component, OnInit } from '@angular/core'; +import { TranslateService } from '@ngx-translate/core'; +import { PrimeNGConfig } from 'primeng/api'; import { AuthService } from './services/auth/auth.service'; import { SocketService } from './services/socket/socket.service'; import { ThemeService } from './services/theme/theme.service'; @@ -18,10 +20,10 @@ export class AppComponent implements OnInit { constructor( private authService: AuthService, private themeService: ThemeService, - private socket: SocketService - ) { } - - ngOnInit(): void { + private socket: SocketService, + private translateService: TranslateService, + private config: PrimeNGConfig + ) { this.themeService.sidebarWidth$.subscribe(value => { this.sidebarWidth = value; }); @@ -31,11 +33,33 @@ export class AppComponent implements OnInit { this.authService.isLoggedIn$.subscribe(value => { this.isLoggedIn = value; }); + } + + ngOnInit(): void { + this.translateService.setDefaultLang('en'); this.themeService.loadTheme(); this.socket.startSocket(); } + loadLang(): void { + let lang = localStorage.getItem(`default_lang`); + if (!lang) { + lang = 'en'; + this.setLang(lang); + } + this.translate(lang); + } + + setLang(lang: string): void { + localStorage.setItem(`default_lang`, lang); + } + + translate(lang: string) { + this.translateService.use(lang); + this.translateService.get('primeng').subscribe(res => this.config.setTranslation(res)); + } + setSideWidth($event: any): void { this.themeService.setSideWidth($event); diff --git a/kdb-web/src/app/components/header/header.component.ts b/kdb-web/src/app/components/header/header.component.ts index ff71d92f..441ceb58 100644 --- a/kdb-web/src/app/components/header/header.component.ts +++ b/kdb-web/src/app/components/header/header.component.ts @@ -29,7 +29,6 @@ export class HeaderComponent implements OnInit { ) { } ngOnInit(): void { - this.translateService.setDefaultLang('en'); this.initMenuLists(); this.loadLang(); this.translateService.onLangChange.subscribe((event: LangChangeEvent) => { diff --git a/kdb-web/src/app/modules/auth/auth.module.ts b/kdb-web/src/app/modules/auth/auth.module.ts index 4e7c48c3..e0afca6a 100644 --- a/kdb-web/src/app/modules/auth/auth.module.ts +++ b/kdb-web/src/app/modules/auth/auth.module.ts @@ -1,18 +1,20 @@ -import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; +import { NgModule } from '@angular/core'; +import { SharedModule } from '../shared/shared.module'; import { AuthRoutingModule } from './auth-routing.module'; +import { AuthHeaderComponent } from './components/auth-header/auth-header.component'; import { ForgetPasswordComponent } from './components/forget-password/forget-password.component'; import { LoginComponent } from './components/login/login.component'; import { RegistrationComponent } from './components/registration/registration.component'; -import { SharedModule } from '../shared/shared.module'; @NgModule({ declarations: [ ForgetPasswordComponent, LoginComponent, - RegistrationComponent + RegistrationComponent, + AuthHeaderComponent ], imports: [ CommonModule, diff --git a/kdb-web/src/app/modules/auth/components/auth-header/auth-header.component.html b/kdb-web/src/app/modules/auth/components/auth-header/auth-header.component.html new file mode 100644 index 00000000..1b48c147 --- /dev/null +++ b/kdb-web/src/app/modules/auth/components/auth-header/auth-header.component.html @@ -0,0 +1,10 @@ +
+
+ + +
+
+ + +
+
\ No newline at end of file diff --git a/kdb-web/src/app/modules/auth/components/auth-header/auth-header.component.scss b/kdb-web/src/app/modules/auth/components/auth-header/auth-header.component.scss new file mode 100644 index 00000000..e69de29b diff --git a/kdb-web/src/app/modules/auth/components/auth-header/auth-header.component.spec.ts b/kdb-web/src/app/modules/auth/components/auth-header/auth-header.component.spec.ts new file mode 100644 index 00000000..7afe71ab --- /dev/null +++ b/kdb-web/src/app/modules/auth/components/auth-header/auth-header.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AuthHeaderComponent } from './auth-header.component'; + +describe('AuthHeaderComponent', () => { + let component: AuthHeaderComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ AuthHeaderComponent ] + }) + .compileComponents(); + + fixture = TestBed.createComponent(AuthHeaderComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/kdb-web/src/app/modules/auth/components/auth-header/auth-header.component.ts b/kdb-web/src/app/modules/auth/components/auth-header/auth-header.component.ts new file mode 100644 index 00000000..0858dc8a --- /dev/null +++ b/kdb-web/src/app/modules/auth/components/auth-header/auth-header.component.ts @@ -0,0 +1,83 @@ +import { Component, OnInit } from '@angular/core'; +import { Router } from '@angular/router'; +import { TranslateService, LangChangeEvent } from '@ngx-translate/core'; +import { MenuItem, PrimeNGConfig } from 'primeng/api'; +import { catchError } from 'rxjs'; +import { AuthService } from 'src/app/services/auth/auth.service'; +import { SettingsService } from 'src/app/services/settings/settings.service'; +import { SpinnerService } from 'src/app/services/spinner/spinner.service'; +import { ThemeService } from 'src/app/services/theme/theme.service'; + +@Component({ + selector: 'app-auth-header', + templateUrl: './auth-header.component.html', + styleUrls: ['./auth-header.component.scss'] +}) +export class AuthHeaderComponent implements OnInit { + langList: MenuItem[] = []; + themeList: MenuItem[] = []; + userMenuList!: MenuItem[]; + + constructor( + private router: Router, + private themeService: ThemeService, + private spinnerService: SpinnerService, + private settings: SettingsService, + private translateService: TranslateService, + private config: PrimeNGConfig + ) { } + + ngOnInit(): void { + this.initMenuLists(); + this.loadLang(); + } + + initMenuLists(): void { + this.langList = [ + { + label: 'English', command: () => { + this.translate('en'); + this.setLang('en'); + }, + }, + { + label: 'Deutsch', command: () => { + this.translate('de'); + this.setLang('de'); + }, + }, + ]; + + this.settings.getThemes()?.forEach(theme => { + this.themeList.push({ + label: theme.Label, + command: () => { + this.changeTheme(theme.Name); + } + }); + }); + } + + changeTheme(name: string): void { + this.themeService.setTheme(name, true); + } + + translate(lang: string) { + this.translateService.use(lang); + this.translateService.get('primeng').subscribe(res => this.config.setTranslation(res)); + } + + loadLang(): void { + let lang = localStorage.getItem(`default_lang`); + if (!lang) { + lang = 'en'; + this.setLang(lang); + } + this.translate(lang); + } + + setLang(lang: string): void { + localStorage.setItem(`default_lang`, lang); + } + +} diff --git a/kdb-web/src/app/modules/auth/components/forget-password/forget-password.component.html b/kdb-web/src/app/modules/auth/components/forget-password/forget-password.component.html index e1fee63e..71f7761e 100644 --- a/kdb-web/src/app/modules/auth/components/forget-password/forget-password.component.html +++ b/kdb-web/src/app/modules/auth/components/forget-password/forget-password.component.html @@ -5,24 +5,26 @@

{{'auth.header' | translate}}

- +
{{'auth.forgot_password.send_confirmation_url' | translate}}
@@ -33,8 +35,8 @@

{{'auth.header' | translate}}

- +
@@ -42,16 +44,20 @@ placeholder="{{'auth.forgot_password.repeat_password' | translate}}" [ngClass]="{ 'invalid-feedback-input': submitted && repeatErrors.password}">
-
{{'auth.forgot_password.passwords_do_not_match' | translate}}
+
{{'auth.forgot_password.passwords_do_not_match' | + translate}}
+ + \ No newline at end of file diff --git a/kdb-web/src/app/modules/auth/components/login/login.component.html b/kdb-web/src/app/modules/auth/components/login/login.component.html index 43ea33cd..54789bee 100644 --- a/kdb-web/src/app/modules/auth/components/login/login.component.html +++ b/kdb-web/src/app/modules/auth/components/login/login.component.html @@ -4,7 +4,7 @@

sh-edraft.de

-
- E-Mail wird benötigt
-
Benutzer nicht gefunden
-
E-Mail wurde nicht bestätigt
+ {{'auth.login.e_mail_required' | translate}}
+
{{'auth.login.user_not_found' | translate}}
+
{{'auth.login.e_mail_not_confirmed' | translate}}
@@ -24,7 +24,7 @@ styleClass="p-password p-component p-inputwrapper p-input-icon-right" Remove after update! --> -
- Password wird benötigt
-
Falsches passwort
+ {{'auth.login.password_required' | translate}}
+
{{'auth.login.wrong_password' | translate}}
+ + \ No newline at end of file diff --git a/kdb-web/src/app/modules/auth/components/registration/registration.component.html b/kdb-web/src/app/modules/auth/components/registration/registration.component.html index 2d9f41bd..ba7eac00 100644 --- a/kdb-web/src/app/modules/auth/components/registration/registration.component.html +++ b/kdb-web/src/app/modules/auth/components/registration/registration.component.html @@ -4,80 +4,82 @@

sh-edraft.de

-
- Vorname wird benötigt
-
Vorname ist ungültig
+ {{'auth.register.first_name_required' | translate}}
+
{{'auth.register.first_name_invalid' | translate}}
-
- Nachname wird benötigt
-
Nachname ist ungültig
+ {{'auth.register.last_name_required' | translate}}
+
{{'auth.register.last_name_invalid' | translate}}
-
- E-Mail wird benötigt
-
Benutzer existiert bereits
+ {{'auth.register.e_mail_required' | translate}}
+
{{'auth.register.user_already_exists' | translate}}
-
-
Die E-Mails stimmen nicht überein
+
{{'auth.register.e_mails_not_match' | translate}}
-
- Password wird benötigt
+ {{'auth.register.password_required' | translate}}
-
-
Die Passwörter stimmen nicht überein
+
{{'auth.register.passwords_not_match' | translate}}
+ + \ No newline at end of file diff --git a/kdb-web/src/app/services/theme/theme.service.ts b/kdb-web/src/app/services/theme/theme.service.ts index 6dc3410a..6abe0955 100644 --- a/kdb-web/src/app/services/theme/theme.service.ts +++ b/kdb-web/src/app/services/theme/theme.service.ts @@ -41,7 +41,7 @@ export class ThemeService { const mail = this.authService.getEMailFromDecodedToken(token); let defaultThemeName = localStorage.getItem(`default_themeName`); - if (!defaultThemeName || defaultThemeName != Themes.Default) { + if (!defaultThemeName) { defaultThemeName = Themes.Default; } @@ -58,7 +58,13 @@ export class ThemeService { this.setTheme(userThemeName); } - setTheme(name: string): void { + setTheme(name: string, isDefault: boolean = false): void { + if (isDefault) { + localStorage.setItem(`default_themeName`, name); + this.themeName$.next(name); + return; + } + this.authService.isUserLoggedInAsync().then(result => { if (!result) { localStorage.setItem(`default_themeName`, Themes.Default); diff --git a/kdb-web/src/assets/i18n/de.json b/kdb-web/src/assets/i18n/de.json index 9eec0bf3..9f305603 100644 --- a/kdb-web/src/assets/i18n/de.json +++ b/kdb-web/src/assets/i18n/de.json @@ -89,8 +89,37 @@ }, "auth": { "header": "Krümmelmonster WI", - "login": {}, - "register": {}, + "login": { + "e_mail": "E-Mail", + "password": "Passwort", + "login": "Einloggen", + "register": "Registrieren", + "forgot_password": "Passwort vergessen?", + "e_mail_required": "E-Mail benötigt", + "user_not_found": "Benutzer nicht gefunden", + "e_mail_not_confirmed": "E-Mail nicht bestätigt", + "password_required": "Passwort benötigt", + "wrong_password": "Falsches passwort" + }, + "register": { + "first_name": "Vorname", + "last_name": "Nachname", + "e_mail": "E-Mail", + "repeat_e_mail": "E-mail wiederholen", + "password": "Password", + "repeat_password": "password wiederholen", + "register": "Registrieren", + "login": "Einloggen", + "user_already_exists": "Benutzer existiert bereits", + "passwords_not_match": "Passwörter sitmmen nicht überein", + "e_mails_not_match": "E-Mails sitmmen nicht überein", + "first_name_required": "Vorname benötigt", + "last_name_required": "Nachname benötigt", + "e_mail_required": "E-Mail benötigt", + "password_required": "Passwort benötigt", + "first_name_invalid": "Vorname ungültig", + "last_name_invalid": "Nachname ungültig" + }, "forgot_password": { "e_mail": "E-Mail", "send_confirmation_url": "Falls ein Benutzer mit der E-Mail gefunden wurde, wurde Betstätigungslink versendet", diff --git a/kdb-web/src/assets/i18n/en.json b/kdb-web/src/assets/i18n/en.json index d289c560..0851c3e4 100644 --- a/kdb-web/src/assets/i18n/en.json +++ b/kdb-web/src/assets/i18n/en.json @@ -92,7 +92,7 @@ "password": "Password", "login": "Login", "register": "Register", - "forgot_password": "Forgot password", + "forgot_password": "Forgot password?", "e_mail_required": "E-Mail required", "user_not_found": "User not found", "e_mail_not_confirmed": "Email was not confirmed", @@ -114,7 +114,7 @@ "first_name_required": "Forename required", "last_name_required": "Surname required", "e_mail_required": "E-Mail required", - "password_required": "Passwort required", + "password_required": "Password required", "first_name_invalid": "Forename invalid", "last_name_invalid": "Surname invalid" }, diff --git a/kdb-web/src/styles.scss b/kdb-web/src/styles.scss index 8bbd6cd8..58c34115 100644 --- a/kdb-web/src/styles.scss +++ b/kdb-web/src/styles.scss @@ -68,6 +68,12 @@ header { } } +.auth-header { + .p-menu-overlay { + width: 180px !important; + } +} + .app { height: 100%; display: flex; @@ -361,8 +367,11 @@ footer { display: flex; justify-content: center; align-items: center; + flex-direction: column; + gap: 15px; - .login-form-wrapper { + .login-form-wrapper, + .auth-header { width: 350px; height: 350px; @@ -418,6 +427,11 @@ footer { .register-confirm-form-wrapper { height: 250px; } + + .auth-header { + width: 350px; + height: 75px; + } } .input-field { diff --git a/kdb-web/src/styles/primeng-fixes.scss b/kdb-web/src/styles/primeng-fixes.scss index 5bad03ee..c6b246f4 100644 --- a/kdb-web/src/styles/primeng-fixes.scss +++ b/kdb-web/src/styles/primeng-fixes.scss @@ -23,8 +23,11 @@ } } -.p-menu-overlay { - top: $headerHeight !important; +header, +.app { + .p-menu-overlay { + top: $headerHeight !important; + } } .p-panelmenu { diff --git a/kdb-web/src/styles/themes/default-dark-theme.scss b/kdb-web/src/styles/themes/default-dark-theme.scss index 8a5b60fa..9f0e2f6e 100644 --- a/kdb-web/src/styles/themes/default-dark-theme.scss +++ b/kdb-web/src/styles/themes/default-dark-theme.scss @@ -194,7 +194,8 @@ .login-wrapper { background-color: $secondaryBackgroundColor; - .login-form-wrapper { + .login-form-wrapper, + .auth-header { background-color: $primaryBackgroundColor; .login-form { @@ -424,7 +425,7 @@ } input, - .p-password { + .p-password input { border-radius: 10px; border: $default-border; diff --git a/kdb-web/src/styles/themes/default-light-theme.scss b/kdb-web/src/styles/themes/default-light-theme.scss index bc58a6f7..69a1b97d 100644 --- a/kdb-web/src/styles/themes/default-light-theme.scss +++ b/kdb-web/src/styles/themes/default-light-theme.scss @@ -194,7 +194,8 @@ .login-wrapper { background-color: $secondaryBackgroundColor; - .login-form-wrapper { + .login-form-wrapper, + .auth-header { background-color: $primaryBackgroundColor; .login-form { @@ -424,7 +425,7 @@ } input, - .p-password { + .p-password input { border-radius: 10px; border: $default-border; diff --git a/kdb-web/src/styles/themes/sh-edraft-dark-theme.scss b/kdb-web/src/styles/themes/sh-edraft-dark-theme.scss index 9e45019f..cef76707 100644 --- a/kdb-web/src/styles/themes/sh-edraft-dark-theme.scss +++ b/kdb-web/src/styles/themes/sh-edraft-dark-theme.scss @@ -196,7 +196,8 @@ .login-wrapper { background-color: $secondaryBackgroundColor; - .login-form-wrapper { + .login-form-wrapper, + .auth-header { background-color: $primaryBackgroundColor; .login-form { @@ -426,7 +427,7 @@ } input, - .p-password { + .p-password input { border-radius: 10px; border: $default-border; diff --git a/kdb-web/src/styles/themes/sh-edraft-light-theme.scss b/kdb-web/src/styles/themes/sh-edraft-light-theme.scss index 26c70cd5..8ae5f724 100644 --- a/kdb-web/src/styles/themes/sh-edraft-light-theme.scss +++ b/kdb-web/src/styles/themes/sh-edraft-light-theme.scss @@ -194,7 +194,8 @@ .login-wrapper { background-color: $secondaryBackgroundColor; - .login-form-wrapper { + .login-form-wrapper, + .auth-header { background-color: $primaryBackgroundColor; .login-form { @@ -424,7 +425,7 @@ } input, - .p-password { + .p-password input { border-radius: 10px; border: $default-border;