From 64b5e9ea19adea325e8a2afa8090a6afef8d0c94 Mon Sep 17 00:00:00 2001 From: Alexandru Cibotari Date: Thu, 8 Feb 2024 18:35:52 +0100 Subject: [PATCH] Update Angular 17 --- package-lock.json | 637 ++++++++++-------- src/app/app.module.ts | 2 +- src/app/features/assets/assets.component.html | 4 +- .../add-document-dialog.component.html | 4 +- .../features/contents/contents.component.html | 134 ++-- .../edit-document-schema.component.html | 325 +++++---- .../edit-document-schema.component.ts | 31 +- .../assets-select.component.html | 106 ++- .../assets-select/assets-select.component.ts | 10 +- src/app/features/me/me.component.html | 67 +- src/app/features/me/me.component.ts | 17 +- .../config-dialog.component.html | 23 +- .../edit-enum/edit-enum.component.html | 61 +- .../import-dialog.component.html | 4 +- .../asset-select/asset-select.component.html | 44 +- .../edit-field/edit-field.component.html | 211 +++--- .../settings/general/general.component.html | 39 +- .../locale-dialog.component.html | 10 +- .../settings/locales/locales.component.html | 34 +- .../features/settings/settings.component.html | 21 +- .../token-dialog/token-dialog.component.html | 4 +- .../settings/tokens/tokens.component.html | 5 +- .../features/settings/ui/ui.component.html | 35 +- .../visual-editor.component.html | 86 +-- .../space-dialog/space-dialog.component.html | 4 +- src/app/features/spaces/spaces.component.html | 20 +- src/app/features/tasks/tasks.component.html | 50 +- .../export-dialog.component.html | 20 +- .../import-dialog.component.html | 24 +- .../translation-add-dialog.component.html | 42 +- .../translation-array-edit.component.html | 18 +- .../translation-array-view.component.html | 4 +- .../translation-edit-dialog.component.html | 14 +- .../translation-plural-view.component.html | 8 +- .../translations/translations.component.html | 16 +- .../user-dialog/user-dialog.component.html | 16 +- .../user-invite-dialog.component.html | 20 +- src/app/features/users/users.component.html | 31 +- src/app/login/login.component.html | 26 +- 39 files changed, 1242 insertions(+), 985 deletions(-) diff --git a/package-lock.json b/package-lock.json index f473573d..b9e9d120 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "localess", - "version": "1.8.0", + "version": "1.6.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "localess", - "version": "1.8.0", + "version": "1.6.0", "license": "MIT", "dependencies": { "@angular/animations": "^17.1.0", @@ -287,6 +287,34 @@ "postcss": "^8.1.0" } }, + "node_modules/@angular-devkit/build-angular/node_modules/postcss": { + "version": "8.4.33", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz", + "integrity": "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, "node_modules/@angular-devkit/build-webpack": { "version": "0.1701.2", "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1701.2.tgz", @@ -3283,14 +3311,14 @@ } }, "node_modules/@firebase/analytics": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.10.0.tgz", - "integrity": "sha512-Locv8gAqx0e+GX/0SI3dzmBY5e9kjVDtD+3zCFLJ0tH2hJwuCAiL+5WkHuxKj92rqQj/rvkBUCfA1ewlX2hehg==", + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.10.1.tgz", + "integrity": "sha512-5mnH1aQa99J5lZMJwTNzIoRc4yGXHf+fOn+EoEWhCDA3XGPweGHcylCbqq+G1wVJmfILL57fohDMa8ftMZ+44g==", "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/installations": "0.6.4", + "@firebase/component": "0.6.5", + "@firebase/installations": "0.6.5", "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", + "@firebase/util": "1.9.4", "tslib": "^2.1.0" }, "peerDependencies": { @@ -3298,14 +3326,14 @@ } }, "node_modules/@firebase/analytics-compat": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.2.6.tgz", - "integrity": "sha512-4MqpVLFkGK7NJf/5wPEEP7ePBJatwYpyjgJ+wQHQGHfzaCDgntOnl9rL2vbVGGKCnRqWtZDIWhctB86UWXaX2Q==", + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/@firebase/analytics-compat/-/analytics-compat-0.2.7.tgz", + "integrity": "sha512-17VCly4P0VFBDqaaal7m1nhyYQwsygtaTpSsnc51sFPRrr9XIYtnD8ficon9fneEGEoJQ2g7OtASvhwX9EbK8g==", "dependencies": { - "@firebase/analytics": "0.10.0", + "@firebase/analytics": "0.10.1", "@firebase/analytics-types": "0.8.0", - "@firebase/component": "0.6.4", - "@firebase/util": "1.9.3", + "@firebase/component": "0.6.5", + "@firebase/util": "1.9.4", "tslib": "^2.1.0" }, "peerDependencies": { @@ -3318,25 +3346,25 @@ "integrity": "sha512-iRP+QKI2+oz3UAh4nPEq14CsEjrjD6a5+fuypjScisAh9kXKFvdJOZJDwk7kikLvWVLGEs9+kIUS4LPQV7VZVw==" }, "node_modules/@firebase/app": { - "version": "0.9.26", - "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.9.26.tgz", - "integrity": "sha512-zCjo6KhNhbuFB+V+Z4H9g4+BZ78E7n3ShxaBtuIcRkpwdm7+1BsafzChOsDYuI86m97HUWsyLPurLBhqcupFFA==", + "version": "0.9.27", + "resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.9.27.tgz", + "integrity": "sha512-p2Dvl1ge4kRsyK5+wWcmdAIE9MSwZ0pDKAYB51LZgZuz6wciUZk4E1yAEdkfQlRxuHehn+Ol9WP5Qk2XQZiHGg==", "dependencies": { - "@firebase/component": "0.6.4", + "@firebase/component": "0.6.5", "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", + "@firebase/util": "1.9.4", "idb": "7.1.1", "tslib": "^2.1.0" } }, "node_modules/@firebase/app-check": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.8.1.tgz", - "integrity": "sha512-zi3vbM5tb/eGRWyiqf+1DXbxFu9Q07dnm46rweodgUpH9B8svxYkHfNwYWx7F5mjHU70SQDuaojH1We5ws9OKA==", + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/@firebase/app-check/-/app-check-0.8.2.tgz", + "integrity": "sha512-A2B5+ldOguYAeqW1quFN5qNdruSNRrg4W59ag1Eq6QzxuHNIkrE+TrapfrW/z5NYFjCxAYqr/unVCgmk80Dwcg==", "dependencies": { - "@firebase/component": "0.6.4", + "@firebase/component": "0.6.5", "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", + "@firebase/util": "1.9.4", "tslib": "^2.1.0" }, "peerDependencies": { @@ -3344,15 +3372,15 @@ } }, "node_modules/@firebase/app-check-compat": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/@firebase/app-check-compat/-/app-check-compat-0.3.8.tgz", - "integrity": "sha512-EaETtChR4UgMokJFw+r6jfcIyCTUZSe0a6ivF37D9MxlG9G3wzK1COyXgxoX96GzXmDPc2aubX4PxCrdVHhrnA==", + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@firebase/app-check-compat/-/app-check-compat-0.3.9.tgz", + "integrity": "sha512-7LxyupQ8XeEHRh72mO+tqm69kHT6KbWi2KtFMGedJ6tNbwzFzojcXESMKN8RpADXbYoQgY3loWMJjMx4r2Zt7w==", "dependencies": { - "@firebase/app-check": "0.8.1", + "@firebase/app-check": "0.8.2", "@firebase/app-check-types": "0.5.0", - "@firebase/component": "0.6.4", + "@firebase/component": "0.6.5", "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", + "@firebase/util": "1.9.4", "tslib": "^2.1.0" }, "peerDependencies": { @@ -3370,14 +3398,14 @@ "integrity": "sha512-uwSUj32Mlubybw7tedRzR24RP8M8JUVR3NPiMk3/Z4bCmgEKTlQBwMXrehDAZ2wF+TsBq0SN1c6ema71U/JPyQ==" }, "node_modules/@firebase/app-compat": { - "version": "0.2.26", - "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.2.26.tgz", - "integrity": "sha512-tVNOYvB3lIFkN3RmcTieo5qYRIkYak9iC6E7dZMxax52uMIUJiIKKtPkarbwZh6EnUxru5hJRo8tfUZGuaQDQw==", + "version": "0.2.27", + "resolved": "https://registry.npmjs.org/@firebase/app-compat/-/app-compat-0.2.27.tgz", + "integrity": "sha512-SYlqocfUDKPHR6MSFC8hree0BTiWFu5o8wbf6zFlYXyG41w7TcHp4wJi4H/EL5V6cM4kxwruXTJtqXX/fRAZtw==", "dependencies": { - "@firebase/app": "0.9.26", - "@firebase/component": "0.6.4", + "@firebase/app": "0.9.27", + "@firebase/component": "0.6.5", "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", + "@firebase/util": "1.9.4", "tslib": "^2.1.0" } }, @@ -3387,13 +3415,13 @@ "integrity": "sha512-AeweANOIo0Mb8GiYm3xhTEBVCmPwTYAu9Hcd2qSkLuga/6+j9b1Jskl5bpiSQWy9eJ/j5pavxj6eYogmnuzm+Q==" }, "node_modules/@firebase/auth": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-1.5.1.tgz", - "integrity": "sha512-sVi7rq2YneLGJFqHa5S6nDfCHix9yuVV3RLhj/pWPlB4a36ofXal4E6PJwpeMc8uLjWEr1aovYN1jkXWNB6Avw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-1.6.0.tgz", + "integrity": "sha512-Qhl35eJTV6BwvuueTPCY6x8kUlYyzALtjp/Ws0X3fw3AnjVVfuVb7oQ3Xh5VPVfMFhaIuUAd1KXwcAuIklkSDw==", "dependencies": { - "@firebase/component": "0.6.4", + "@firebase/component": "0.6.5", "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", + "@firebase/util": "1.9.4", "tslib": "^2.1.0", "undici": "5.26.5" }, @@ -3408,14 +3436,14 @@ } }, "node_modules/@firebase/auth-compat": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.5.1.tgz", - "integrity": "sha512-rgDZnrDoekRvtzXVji8Z61wxxkof6pTkjYEkybILrjM8tGP9tx4xa9qGpF4ax3AzF+rKr7mIa9NnoXEK4UNqmQ==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@firebase/auth-compat/-/auth-compat-0.5.2.tgz", + "integrity": "sha512-pRgje5BPCNR1vXyvGOVXwOHtv88A2WooXfklI8sV7/jWi03ExFqNfpJT26GUo/oD39NoKJ3Kt6rD5gVvdV7lMw==", "dependencies": { - "@firebase/auth": "1.5.1", + "@firebase/auth": "1.6.0", "@firebase/auth-types": "0.12.0", - "@firebase/component": "0.6.4", - "@firebase/util": "1.9.3", + "@firebase/component": "0.6.5", + "@firebase/util": "1.9.4", "tslib": "^2.1.0", "undici": "5.26.5" }, @@ -3460,58 +3488,58 @@ } }, "node_modules/@firebase/component": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.6.4.tgz", - "integrity": "sha512-rLMyrXuO9jcAUCaQXCMjCMUsWrba5fzHlNK24xz5j2W6A/SRmK8mZJ/hn7V0fViLbxC0lPMtrK1eYzk6Fg03jA==", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@firebase/component/-/component-0.6.5.tgz", + "integrity": "sha512-2tVDk1ixi12sbDmmfITK8lxSjmcb73BMF6Qwc3U44hN/J1Fi1QY/Hnnb6klFlbB9/G16a3J3d4nXykye2EADTw==", "dependencies": { - "@firebase/util": "1.9.3", + "@firebase/util": "1.9.4", "tslib": "^2.1.0" } }, "node_modules/@firebase/database": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@firebase/database/-/database-1.0.2.tgz", - "integrity": "sha512-8X6NBJgUQzDz0xQVaCISoOLINKat594N2eBbMR3Mu/MH/ei4WM+aAMlsNzngF22eljXu1SILP5G3evkyvsG3Ng==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@firebase/database/-/database-1.0.3.tgz", + "integrity": "sha512-9fjqLt9JzL46gw9+NRqsgQEMjgRwfd8XtzcKqG+UYyhVeFCdVRQ0Wp6Dw/dvYHnbH5vNEKzNv36dcB4p+PIAAA==", "dependencies": { "@firebase/app-check-interop-types": "0.3.0", "@firebase/auth-interop-types": "0.2.1", - "@firebase/component": "0.6.4", + "@firebase/component": "0.6.5", "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", + "@firebase/util": "1.9.4", "faye-websocket": "0.11.4", "tslib": "^2.1.0" } }, "node_modules/@firebase/database-compat": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-1.0.2.tgz", - "integrity": "sha512-09ryJnXDvuycsxn8aXBzLhBTuCos3HEnCOBWY6hosxfYlNCGnLvG8YMlbSAt5eNhf7/00B095AEfDsdrrLjxqA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@firebase/database-compat/-/database-compat-1.0.3.tgz", + "integrity": "sha512-7tHEOcMbK5jJzHWyphPux4osogH/adWwncxdMxdBpB9g1DNIyY4dcz1oJdlkXGM/i/AjUBesZsd5CuwTRTBNTw==", "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/database": "1.0.2", - "@firebase/database-types": "1.0.0", + "@firebase/component": "0.6.5", + "@firebase/database": "1.0.3", + "@firebase/database-types": "1.0.1", "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", + "@firebase/util": "1.9.4", "tslib": "^2.1.0" } }, "node_modules/@firebase/database-types": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-1.0.0.tgz", - "integrity": "sha512-SjnXStoE0Q56HcFgNQ+9SsmJc0c8TqGARdI/T44KXy+Ets3r6x/ivhQozT66bMnCEjJRywYoxNurRTMlZF8VNg==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-1.0.1.tgz", + "integrity": "sha512-Tmcmx5XgiI7UVF/4oGg2P3AOTfq3WKEPsm2yf+uXtN7uG/a4WTWhVMrXGYRY2ZUL1xPxv9V33wQRJ+CcrUhVXw==", "dependencies": { "@firebase/app-types": "0.9.0", - "@firebase/util": "1.9.3" + "@firebase/util": "1.9.4" } }, "node_modules/@firebase/firestore": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-4.4.1.tgz", - "integrity": "sha512-LCWZZ+rgNET1qw3vpugmGCJZVbz7c5NkgKect5pZn36gaBzGVb8+pRQ8WSZ1veYVMOK6SKrBkS1Rw6EqcmPnyw==", + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-4.4.2.tgz", + "integrity": "sha512-YaX6ypa/RzU6OkxzUQlpSxwhOIWdTraCNz7sMsbaSEjjl/pj/QvX6TqjkdWGzuBYh2S6rz7ErhDO0g39oZZw/g==", "dependencies": { - "@firebase/component": "0.6.4", + "@firebase/component": "0.6.5", "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", + "@firebase/util": "1.9.4", "@firebase/webchannel-wrapper": "0.10.5", "@grpc/grpc-js": "~1.9.0", "@grpc/proto-loader": "^0.7.8", @@ -3526,14 +3554,14 @@ } }, "node_modules/@firebase/firestore-compat": { - "version": "0.3.24", - "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.3.24.tgz", - "integrity": "sha512-Wj5cgqmQwTnqHS4KabOpXCNIaSTtVDP1NitnhjXff04Q4QK0aeIbeO1TPlSSTmUb6S7KzoKD4XR99hfKZDYbfA==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@firebase/firestore-compat/-/firestore-compat-0.3.25.tgz", + "integrity": "sha512-+xI7WmsgZCBhMn/+uhDKcg+lsOUJ9FJyt5PGTzkFPbCsozWfeQZ7eVnfPh0rMkUOf0yIQ924RIe04gwvEIbcoQ==", "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/firestore": "4.4.1", + "@firebase/component": "0.6.5", + "@firebase/firestore": "4.4.2", "@firebase/firestore-types": "3.0.0", - "@firebase/util": "1.9.3", + "@firebase/util": "1.9.4", "tslib": "^2.1.0" }, "peerDependencies": { @@ -3561,15 +3589,15 @@ } }, "node_modules/@firebase/functions": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.11.0.tgz", - "integrity": "sha512-n1PZxKnJ++k73Q8khTPwihlbeKo6emnGzE0hX6QVQJsMq82y/XKmNpw2t/q30VJgwaia3ZXU1fd1C5wHncL+Zg==", + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.11.1.tgz", + "integrity": "sha512-3uUa1hB79Gmy6E1gHTfzoHeZolBeHc/I/n3+lOCDe6BOos9AHmzRjKygcFE/7VA2FJjitCE0K+OHI6+OuoY8fQ==", "dependencies": { "@firebase/app-check-interop-types": "0.3.0", "@firebase/auth-interop-types": "0.2.1", - "@firebase/component": "0.6.4", + "@firebase/component": "0.6.5", "@firebase/messaging-interop-types": "0.2.0", - "@firebase/util": "1.9.3", + "@firebase/util": "1.9.4", "tslib": "^2.1.0", "undici": "5.26.5" }, @@ -3578,14 +3606,14 @@ } }, "node_modules/@firebase/functions-compat": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@firebase/functions-compat/-/functions-compat-0.3.6.tgz", - "integrity": "sha512-RQpO3yuHtnkqLqExuAT2d0u3zh8SDbeBYK5EwSCBKI9mjrFeJRXBnd3pEG+x5SxGJLy56/5pQf73mwt0OuH5yg==", + "version": "0.3.7", + "resolved": "https://registry.npmjs.org/@firebase/functions-compat/-/functions-compat-0.3.7.tgz", + "integrity": "sha512-uXe6Kmku5lNogp3OpPBcOJbSvnaCOn+YxS3zlXKNU6Q/NLwcvO3RY1zwYyctCos2RemEw3KEQ7YdzcECXjHWLw==", "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/functions": "0.11.0", + "@firebase/component": "0.6.5", + "@firebase/functions": "0.11.1", "@firebase/functions-types": "0.6.0", - "@firebase/util": "1.9.3", + "@firebase/util": "1.9.4", "tslib": "^2.1.0" }, "peerDependencies": { @@ -3609,13 +3637,13 @@ } }, "node_modules/@firebase/installations": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.6.4.tgz", - "integrity": "sha512-u5y88rtsp7NYkCHC3ElbFBrPtieUybZluXyzl7+4BsIz4sqb4vSAuwHEUgCgCeaQhvsnxDEU6icly8U9zsJigA==", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.6.5.tgz", + "integrity": "sha512-0xxnQWw8rSRzu0ZOCkZaO+MJ0LkDAfwwTB2Z1SxRK6FAz5xkxD1ZUwM0WbCRni49PKubCrZYOJ6yg7tSjU7AKA==", "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/util": "1.9.3", - "idb": "7.0.1", + "@firebase/component": "0.6.5", + "@firebase/util": "1.9.4", + "idb": "7.1.1", "tslib": "^2.1.0" }, "peerDependencies": { @@ -3623,14 +3651,14 @@ } }, "node_modules/@firebase/installations-compat": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@firebase/installations-compat/-/installations-compat-0.2.4.tgz", - "integrity": "sha512-LI9dYjp0aT9Njkn9U4JRrDqQ6KXeAmFbRC0E7jI7+hxl5YmRWysq5qgQl22hcWpTk+cm3es66d/apoDU/A9n6Q==", + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@firebase/installations-compat/-/installations-compat-0.2.5.tgz", + "integrity": "sha512-usvoIaog5CHEw082HXLrKAZ1qd4hIC3N/LDe2NqBgI3pkGE/7auLVM4Gn5gvyryp0x8z/IP1+d9fkGUj2OaGLQ==", "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/installations": "0.6.4", + "@firebase/component": "0.6.5", + "@firebase/installations": "0.6.5", "@firebase/installations-types": "0.5.0", - "@firebase/util": "1.9.3", + "@firebase/util": "1.9.4", "tslib": "^2.1.0" }, "peerDependencies": { @@ -3645,11 +3673,6 @@ "@firebase/app-types": "0.x" } }, - "node_modules/@firebase/installations/node_modules/idb": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/idb/-/idb-7.0.1.tgz", - "integrity": "sha512-UUxlE7vGWK5RfB/fDwEGgRf84DY/ieqNha6msMV99UsEMQhJ1RwbCd8AYBj3QMgnE3VZnfQvm4oKVCJTYlqIgg==" - }, "node_modules/@firebase/logger": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.4.0.tgz", @@ -3659,14 +3682,14 @@ } }, "node_modules/@firebase/messaging": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.12.5.tgz", - "integrity": "sha512-i/rrEI2k9ueFhdIr8KQsptWGskrsnkC5TkohCTrJKz9P0C/PbNv14IAMkwhMJTqIur5VwuOnrUkc9Kdz7awekw==", + "version": "0.12.6", + "resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.12.6.tgz", + "integrity": "sha512-IORsPp9IPWq4j4yEhTOZ6GAGi3gQwGc+4yexmTAlya+qeBRSdRnJg2iIU/aj+tcKDQYr9RQuQPgHHOdFIx//vA==", "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/installations": "0.6.4", + "@firebase/component": "0.6.5", + "@firebase/installations": "0.6.5", "@firebase/messaging-interop-types": "0.2.0", - "@firebase/util": "1.9.3", + "@firebase/util": "1.9.4", "idb": "7.1.1", "tslib": "^2.1.0" }, @@ -3675,13 +3698,13 @@ } }, "node_modules/@firebase/messaging-compat": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.2.5.tgz", - "integrity": "sha512-qHQZxm4hEG8/HFU/ls5/bU+rpnlPDoZoqi3ATMeb6s4hovYV9+PfV5I7ZrKV5eFFv47Hx1PWLe5uPnS4e7gMwQ==", + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/@firebase/messaging-compat/-/messaging-compat-0.2.6.tgz", + "integrity": "sha512-Q2xC1s4L7Vpss7P7Gy6GuIS+xmJrf/vm9+gX76IK1Bo1TjoKwleCLHt1LHkPz5Rvqg5pTgzzI8qqPhBpZosFCg==", "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/messaging": "0.12.5", - "@firebase/util": "1.9.3", + "@firebase/component": "0.6.5", + "@firebase/messaging": "0.12.6", + "@firebase/util": "1.9.4", "tslib": "^2.1.0" }, "peerDependencies": { @@ -3694,14 +3717,14 @@ "integrity": "sha512-ujA8dcRuVeBixGR9CtegfpU4YmZf3Lt7QYkcj693FFannwNuZgfAYaTmbJ40dtjB81SAu6tbFPL9YLNT15KmOQ==" }, "node_modules/@firebase/performance": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.6.4.tgz", - "integrity": "sha512-HfTn/bd8mfy/61vEqaBelNiNnvAbUtME2S25A67Nb34zVuCSCRIX4SseXY6zBnOFj3oLisaEqhVcJmVPAej67g==", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.6.5.tgz", + "integrity": "sha512-OzAGcWhOqEFH9GdwUuY0oC5FSlnMejcnmSAhR+EjpI7exdDvixyLyCR4txjSHYNTbumrFBG+EP8GO11CNXRaJA==", "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/installations": "0.6.4", + "@firebase/component": "0.6.5", + "@firebase/installations": "0.6.5", "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", + "@firebase/util": "1.9.4", "tslib": "^2.1.0" }, "peerDependencies": { @@ -3709,15 +3732,15 @@ } }, "node_modules/@firebase/performance-compat": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@firebase/performance-compat/-/performance-compat-0.2.4.tgz", - "integrity": "sha512-nnHUb8uP9G8islzcld/k6Bg5RhX62VpbAb/Anj7IXs/hp32Eb2LqFPZK4sy3pKkBUO5wcrlRWQa6wKOxqlUqsg==", + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@firebase/performance-compat/-/performance-compat-0.2.5.tgz", + "integrity": "sha512-jJwJkVyDcIMBaVGrZ6CRGs4m5FCZsWB5QCWYI3FdsHyIa9/TfteNDilxj9wGciF2naFIHDW7TgE69U5dAH9Ktg==", "dependencies": { - "@firebase/component": "0.6.4", + "@firebase/component": "0.6.5", "@firebase/logger": "0.4.0", - "@firebase/performance": "0.6.4", + "@firebase/performance": "0.6.5", "@firebase/performance-types": "0.2.0", - "@firebase/util": "1.9.3", + "@firebase/util": "1.9.4", "tslib": "^2.1.0" }, "peerDependencies": { @@ -3730,14 +3753,14 @@ "integrity": "sha512-kYrbr8e/CYr1KLrLYZZt2noNnf+pRwDq2KK9Au9jHrBMnb0/C9X9yWSXmZkFt4UIdsQknBq8uBB7fsybZdOBTA==" }, "node_modules/@firebase/remote-config": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.4.4.tgz", - "integrity": "sha512-x1ioTHGX8ZwDSTOVp8PBLv2/wfwKzb4pxi0gFezS5GCJwbLlloUH4YYZHHS83IPxnua8b6l0IXUaWd0RgbWwzQ==", + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.4.5.tgz", + "integrity": "sha512-rGLqc/4OmxrS39RA9kgwa6JmgWytQuMo+B8pFhmGp3d++x2Hf9j+MLQfhOLyyUo64fNw20J19mLXhrXvKHsjZQ==", "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/installations": "0.6.4", + "@firebase/component": "0.6.5", + "@firebase/installations": "0.6.5", "@firebase/logger": "0.4.0", - "@firebase/util": "1.9.3", + "@firebase/util": "1.9.4", "tslib": "^2.1.0" }, "peerDependencies": { @@ -3745,15 +3768,15 @@ } }, "node_modules/@firebase/remote-config-compat": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.2.4.tgz", - "integrity": "sha512-FKiki53jZirrDFkBHglB3C07j5wBpitAaj8kLME6g8Mx+aq7u9P7qfmuSRytiOItADhWUj7O1JIv7n9q87SuwA==", + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@firebase/remote-config-compat/-/remote-config-compat-0.2.5.tgz", + "integrity": "sha512-ImkNnLuGrD/bylBHDJigSY6LMwRrwt37wQbsGZhWG4QQ6KLzHzSf0nnFRRFvkOZodEUE57Ib8l74d6Yn/6TDUQ==", "dependencies": { - "@firebase/component": "0.6.4", + "@firebase/component": "0.6.5", "@firebase/logger": "0.4.0", - "@firebase/remote-config": "0.4.4", + "@firebase/remote-config": "0.4.5", "@firebase/remote-config-types": "0.3.0", - "@firebase/util": "1.9.3", + "@firebase/util": "1.9.4", "tslib": "^2.1.0" }, "peerDependencies": { @@ -3766,12 +3789,12 @@ "integrity": "sha512-RtEH4vdcbXZuZWRZbIRmQVBNsE7VDQpet2qFvq6vwKLBIQRQR5Kh58M4ok3A3US8Sr3rubYnaGqZSurCwI8uMA==" }, "node_modules/@firebase/storage": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.12.0.tgz", - "integrity": "sha512-SGs02Y/mmWBRsqZiYLpv4Sf7uZYZzMWVNN+aKiDqPsFBCzD6hLvGkXz+u98KAl8FqcjgB8BtSu01wm4pm76KHA==", + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.12.1.tgz", + "integrity": "sha512-KJ5NV7FUh54TeTlEjdkTTX60ciCKOp9EqlbLnpdcXUYRJg0Z4810TXbilPc1z7fTIG4iPjtdi95bGE9n4dBX8A==", "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/util": "1.9.3", + "@firebase/component": "0.6.5", + "@firebase/util": "1.9.4", "tslib": "^2.1.0", "undici": "5.26.5" }, @@ -3780,14 +3803,14 @@ } }, "node_modules/@firebase/storage-compat": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@firebase/storage-compat/-/storage-compat-0.3.3.tgz", - "integrity": "sha512-WNtjYPhpOA1nKcRu5lIodX0wZtP8pI0VxDJnk6lr+av7QZNS1s6zvr+ERDTve+Qu4Hq/ZnNaf3kBEQR2ccXn6A==", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@firebase/storage-compat/-/storage-compat-0.3.4.tgz", + "integrity": "sha512-Y0m5e2gS/wB9Ioth2X/Sgz76vcxvqgQrCmfa9qwhss/N31kxY2Gks6Frv0nrE18AjVfcSmcfDitqUwxcMOTRSg==", "dependencies": { - "@firebase/component": "0.6.4", - "@firebase/storage": "0.12.0", + "@firebase/component": "0.6.5", + "@firebase/storage": "0.12.1", "@firebase/storage-types": "0.8.0", - "@firebase/util": "1.9.3", + "@firebase/util": "1.9.4", "tslib": "^2.1.0" }, "peerDependencies": { @@ -3815,9 +3838,9 @@ } }, "node_modules/@firebase/util": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.9.3.tgz", - "integrity": "sha512-DY02CRhOZwpzO36fHpuVysz6JZrscPiBXD0fXp6qSrL9oNOx5KWICKdR95C0lSITzxp0TZosVyHqzatE8JbcjA==", + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@firebase/util/-/util-1.9.4.tgz", + "integrity": "sha512-WLonYmS1FGHT97TsUmRN3qnTh5TeeoJp1Gg5fithzuAgdZOUtsYECfy7/noQ3llaguios8r5BuXSEiK82+UrxQ==", "dependencies": { "tslib": "^2.1.0" } @@ -5021,9 +5044,9 @@ } }, "node_modules/@npmcli/agent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.0.tgz", - "integrity": "sha512-2yThA1Es98orMkpSLVqlDZAMPK3jHJhifP2gnNUdk1754uZ8yI5c+ulCoVG+WlntQA6MzhrURMXjSd9Z7dJ2/Q==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.1.tgz", + "integrity": "sha512-H4FrOVtNyWC8MUwL3UfjOsAihHvT1Pe8POj3JvjXhSTJipsZMtgUALCT4mGyYZNxymkUfOw3PUj6dE4QPp6osQ==", "dev": true, "dependencies": { "agent-base": "^7.1.0", @@ -5947,9 +5970,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "4.17.42", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.42.tgz", - "integrity": "sha512-ckM3jm2bf/MfB3+spLPWYPUH573plBFwpOhqQ2WottxYV85j1HQFlxmnTq57X1yHY9awZPig06hL/cLMgNWHIQ==", + "version": "4.17.43", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.43.tgz", + "integrity": "sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==", "dev": true, "dependencies": { "@types/node": "*", @@ -5998,9 +6021,9 @@ "dev": true }, "node_modules/@types/node": { - "version": "20.11.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.14.tgz", - "integrity": "sha512-w3yWCcwULefjP9DmDDsgUskrMoOy5Z8MiwKHr1FvqGPtx7CvJzQvxD7eKpxNtklQxLruxSXWddyeRtyud0RcXQ==", + "version": "20.11.16", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.16.tgz", + "integrity": "sha512-gKb0enTmRCzXSSUJDq6/sPcqrfCv2mkkG6Jt/clpn5eiCbKTY+SgZUxo+p8ZKMof5dCp9vHQUAB7wOUTod22wQ==", "dependencies": { "undici-types": "~5.26.4" } @@ -6113,16 +6136,16 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.20.0.tgz", - "integrity": "sha512-fTwGQUnjhoYHeSF6m5pWNkzmDDdsKELYrOBxhjMrofPqCkoC2k3B2wvGHFxa1CTIqkEn88nlW1HVMztjo2K8Hg==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", + "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.20.0", - "@typescript-eslint/type-utils": "6.20.0", - "@typescript-eslint/utils": "6.20.0", - "@typescript-eslint/visitor-keys": "6.20.0", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/type-utils": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -6148,13 +6171,13 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.20.0.tgz", - "integrity": "sha512-qnSobiJQb1F5JjN0YDRPHruQTrX7ICsmltXhkV536mp4idGAYrIyr47zF/JmkJtEcAVnIz4gUYJ7gOZa6SmN4g==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", + "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.20.0", - "@typescript-eslint/utils": "6.20.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/utils": "6.21.0", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, @@ -6175,17 +6198,17 @@ } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.20.0.tgz", - "integrity": "sha512-/EKuw+kRu2vAqCoDwDCBtDRU6CTKbUmwwI7SH7AashZ+W+7o8eiyy6V2cdOqN49KsTcASWsC5QeghYuRDTyOOg==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", + "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.20.0", - "@typescript-eslint/types": "6.20.0", - "@typescript-eslint/typescript-estree": "6.20.0", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", "semver": "^7.5.4" }, "engines": { @@ -6341,15 +6364,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.20.0.tgz", - "integrity": "sha512-bYerPDF/H5v6V76MdMYhjwmwgMA+jlPVqjSDq2cRqMi8bP5sR3Z+RLOiOMad3nsnmDVmn2gAFCyNgh/dIrfP/w==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", + "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.20.0", - "@typescript-eslint/types": "6.20.0", - "@typescript-eslint/typescript-estree": "6.20.0", - "@typescript-eslint/visitor-keys": "6.20.0", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", "debug": "^4.3.4" }, "engines": { @@ -6369,13 +6392,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.20.0.tgz", - "integrity": "sha512-p4rvHQRDTI1tGGMDFQm+GtxP1ZHyAh64WANVoyEcNMpaTFn3ox/3CcgtIlELnRfKzSs/DwYlDccJEtr3O6qBvA==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", + "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.20.0", - "@typescript-eslint/visitor-keys": "6.20.0" + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -6470,9 +6493,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.20.0.tgz", - "integrity": "sha512-MM9mfZMAhiN4cOEcUOEx+0HmuaW3WBfukBZPCfwSqFnQy0grXYtngKCqpQN339X3RrwtzspWJrpbrupKYUSBXQ==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", + "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -6483,13 +6506,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.20.0.tgz", - "integrity": "sha512-RnRya9q5m6YYSpBN7IzKu9FmLcYtErkDkc8/dKv81I9QiLLtVBHrjz+Ev/crAqgMNW2FCsoZF4g2QUylMnJz+g==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", + "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.20.0", - "@typescript-eslint/visitor-keys": "6.20.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -6610,12 +6633,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.20.0.tgz", - "integrity": "sha512-E8Cp98kRe4gKHjJD4NExXKz/zOJ1A2hhZc+IMVD6i7w4yjIvh6VyuRI0gRtxAsXtoC35uGMaQ9rjI2zJaXDEAw==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", + "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.20.0", + "@typescript-eslint/types": "6.21.0", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -7588,14 +7611,18 @@ } }, "node_modules/call-bind": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", - "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.6.tgz", + "integrity": "sha512-Mj50FLHtlsoVfRfnHaZvyrooHcrlceNZdL/QBvJJVd9Ta55qCQK0gs4ss2oZDeV9zFCs6ewzYgVE5yfVmfFpVg==", "dev": true, "dependencies": { + "es-errors": "^1.3.0", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.1", - "set-function-length": "^1.1.1" + "get-intrinsic": "^1.2.3", + "set-function-length": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -7635,9 +7662,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001582", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001582.tgz", - "integrity": "sha512-vsJG3V5vgfduaQGVxL53uSX/HUzxyr2eA8xCo36OLal7sRcSZbibJtLeh0qja4sFOr/QQGt4opB4tOy+eOgAxg==", + "version": "1.0.30001585", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001585.tgz", + "integrity": "sha512-yr2BWR1yLXQ8fMpdS/4ZZXpseBgE7o4g41x3a6AJOqZuOi+iE/WdJYAuZ6Y95i4Ohd2Y+9MzIWRR+uGABH4s3Q==", "dev": true, "funding": [ { @@ -7680,16 +7707,10 @@ "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" }, "node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "devOptional": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -7702,6 +7723,9 @@ "engines": { "node": ">= 8.10.0" }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, "optionalDependencies": { "fsevents": "~2.3.2" } @@ -8493,14 +8517,15 @@ } }, "node_modules/define-data-property": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", - "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.2.tgz", + "integrity": "sha512-SRtsSqsDbgpJBbW3pABMCOt6rQyeM8s8RiyeSN8jYG8sYmt/kGJejbydttUsnDs1tadr19tvhT4ShwMyoqAm4g==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.1", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.2", "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" + "has-property-descriptors": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -8742,9 +8767,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.653", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.653.tgz", - "integrity": "sha512-wA2A2LQCqnEwQAvwADQq3KpMpNwgAUBnRmrFgRzHnPhbQUFArTR32Ab46f4p0MovDLcg4uqd4nCsN2hTltslpA==", + "version": "1.4.661", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.661.tgz", + "integrity": "sha512-AFg4wDHSOk5F+zA8aR+SVIOabu7m0e7BiJnigCvPXzIGy731XENw/lmNxTySpVFtkFEy+eyt4oHhh5FF3NjQNw==", "dev": true }, "node_modules/emoji-regex": { @@ -8827,9 +8852,9 @@ } }, "node_modules/engine.io-parser": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.1.tgz", - "integrity": "sha512-9JktcM3u18nU9N2Lz3bWeBgxVgOKpw7yhRaoxQA3FUDZzzw+9WlA6p4G4u0RixNkg14fH7EfEc/RhpurtiROTQ==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.2.tgz", + "integrity": "sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==", "dev": true, "engines": { "node": ">=10.0.0" @@ -8921,6 +8946,15 @@ "is-arrayish": "^0.2.1" } }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-module-lexer": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", @@ -8978,9 +9012,9 @@ } }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "engines": { "node": ">=6" } @@ -9731,9 +9765,9 @@ "dev": true }, "node_modules/fastq": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.0.tgz", - "integrity": "sha512-zGygtijUMT7jnk3h26kUms3BkSDp4IfIKjmnqI2tvx6nuBfiF1UqOxbnLfzdv+apBy+53oaImsKtMw/xYbW+1w==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, "dependencies": { "reusify": "^1.0.4" @@ -9908,36 +9942,36 @@ } }, "node_modules/firebase": { - "version": "10.7.2", - "resolved": "https://registry.npmjs.org/firebase/-/firebase-10.7.2.tgz", - "integrity": "sha512-zED3kAJyf+Xx5tXpC3vjmlWTm/SIVoJJ6MOLuXYJkqKAUJLG7Q1Jxy6l1DxCzGgBqZHxc0Jh6q+qG++9kimHsw==", - "dependencies": { - "@firebase/analytics": "0.10.0", - "@firebase/analytics-compat": "0.2.6", - "@firebase/app": "0.9.26", - "@firebase/app-check": "0.8.1", - "@firebase/app-check-compat": "0.3.8", - "@firebase/app-compat": "0.2.26", + "version": "10.8.0", + "resolved": "https://registry.npmjs.org/firebase/-/firebase-10.8.0.tgz", + "integrity": "sha512-UJpC24vw8JFuHEOQyArBGKTUd7+kohLISCzHyn0M/prP0KOTx2io1eyLliEid330QqnWI7FOlPxoU97qecCSfQ==", + "dependencies": { + "@firebase/analytics": "0.10.1", + "@firebase/analytics-compat": "0.2.7", + "@firebase/app": "0.9.27", + "@firebase/app-check": "0.8.2", + "@firebase/app-check-compat": "0.3.9", + "@firebase/app-compat": "0.2.27", "@firebase/app-types": "0.9.0", - "@firebase/auth": "1.5.1", - "@firebase/auth-compat": "0.5.1", - "@firebase/database": "1.0.2", - "@firebase/database-compat": "1.0.2", - "@firebase/firestore": "4.4.1", - "@firebase/firestore-compat": "0.3.24", - "@firebase/functions": "0.11.0", - "@firebase/functions-compat": "0.3.6", - "@firebase/installations": "0.6.4", - "@firebase/installations-compat": "0.2.4", - "@firebase/messaging": "0.12.5", - "@firebase/messaging-compat": "0.2.5", - "@firebase/performance": "0.6.4", - "@firebase/performance-compat": "0.2.4", - "@firebase/remote-config": "0.4.4", - "@firebase/remote-config-compat": "0.2.4", - "@firebase/storage": "0.12.0", - "@firebase/storage-compat": "0.3.3", - "@firebase/util": "1.9.3" + "@firebase/auth": "1.6.0", + "@firebase/auth-compat": "0.5.2", + "@firebase/database": "1.0.3", + "@firebase/database-compat": "1.0.3", + "@firebase/firestore": "4.4.2", + "@firebase/firestore-compat": "0.3.25", + "@firebase/functions": "0.11.1", + "@firebase/functions-compat": "0.3.7", + "@firebase/installations": "0.6.5", + "@firebase/installations-compat": "0.2.5", + "@firebase/messaging": "0.12.6", + "@firebase/messaging-compat": "0.2.6", + "@firebase/performance": "0.6.5", + "@firebase/performance-compat": "0.2.5", + "@firebase/remote-config": "0.4.5", + "@firebase/remote-config-compat": "0.2.5", + "@firebase/storage": "0.12.1", + "@firebase/storage-compat": "0.3.4", + "@firebase/util": "1.9.4" } }, "node_modules/flat": { @@ -10159,16 +10193,20 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", - "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dev": true, "dependencies": { + "es-errors": "^1.3.0", "function-bind": "^1.1.2", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", "hasown": "^2.0.0" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -14158,9 +14196,9 @@ } }, "node_modules/postcss": { - "version": "8.4.33", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.33.tgz", - "integrity": "sha512-Kkpbhhdjw2qQs2O2DGX+8m5OVqEcbB9HRBvuYM9pgrjEFUg30A9LmXNlTAUj4S9kgtGyrMbTzVjH7E+s5Re2yg==", + "version": "8.4.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", + "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", "dev": true, "funding": [ { @@ -14394,9 +14432,9 @@ } }, "node_modules/prettier": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.4.tgz", - "integrity": "sha512-FWu1oLHKCrtpO1ypU6J0SbK2d9Ckwysq6bHj/uaCP26DxrPpppCLQRGVuqAxSTvhF00AcvDRyYrLNW7ocBhFFQ==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.2.5.tgz", + "integrity": "sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" @@ -15517,14 +15555,15 @@ } }, "node_modules/set-function-length": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.0.tgz", - "integrity": "sha512-4DBHDoyHlM1IRPGYcoxexgh67y4ueR53FKV1yyxwFMY7aCqcN/38M1+SwZ/qJQ8iLv7+ck385ot4CcisOAPT9w==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.1.tgz", + "integrity": "sha512-j4t6ccc+VsKwYHso+kElc5neZpjtq9EnRICFZtWyBsLojhmeF/ZBd/elqm22WJh/BziDe/SBiOeAt0m2mfLD0g==", "dev": true, "dependencies": { - "define-data-property": "^1.1.1", + "define-data-property": "^1.1.2", + "es-errors": "^1.3.0", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.2", + "get-intrinsic": "^1.2.3", "gopd": "^1.0.1", "has-property-descriptors": "^1.0.1" }, @@ -15581,14 +15620,18 @@ } }, "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.5.tgz", + "integrity": "sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -16543,12 +16586,12 @@ } }, "node_modules/ts-api-utils": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz", - "integrity": "sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.2.1.tgz", + "integrity": "sha512-RIYA36cJn2WiH9Hy77hdF9r7oEwxAtB/TS9/S4Qd90Ap4z5FSiin5zEiTL44OII1Y3IIlEvxwxFUVgrHSZ/UpA==", "dev": true, "engines": { - "node": ">=16.13.0" + "node": ">=16" }, "peerDependencies": { "typescript": ">=4.2.0" @@ -17486,9 +17529,9 @@ } }, "node_modules/winston-transport": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.6.0.tgz", - "integrity": "sha512-wbBA9PbPAHxKiygo7ub7BYRiKxms0tpfU2ljtWzb3SjRjv5yl6Ozuy/TkXf00HTAt+Uylo3gSkNwzc4ME0wiIg==", + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.7.0.tgz", + "integrity": "sha512-ajBj65K5I7denzer2IYW6+2bNIVqLGDHqDw3Ow8Ohh+vdW+rv4MZ6eiDvHoKhfJFZ2auyN8byXieDDJ96ViONg==", "dependencies": { "logform": "^2.3.2", "readable-stream": "^3.6.0", diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 18728a87..b6f75a2c 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -85,7 +85,7 @@ import { IMAGE_LOADER, ImageLoaderConfig } from '@angular/common'; provide: IMAGE_LOADER, useValue: (config: ImageLoaderConfig) => { // optimize image for API assets - if (config.src.startsWith('/api/')) { + if (config.src.startsWith('/api/') && config.width) { return `${config.src}?w=${config.width}`; } else { return config.src; diff --git a/src/app/features/assets/assets.component.html b/src/app/features/assets/assets.component.html index 59b87782..eccdde46 100644 --- a/src/app/features/assets/assets.component.html +++ b/src/app/features/assets/assets.component.html @@ -178,7 +178,7 @@ *matRowDef="let row; columns: displayedColumns" (click)="onRowSelect(row)" [class.row-folder]="row.kind === 'FOLDER'"> - + @if (!isLoading) {

@@ -188,7 +188,7 @@
-
+ } @if (fileUploadQueue.length > 0) { diff --git a/src/app/features/contents/add-document-dialog/add-document-dialog.component.html b/src/app/features/contents/add-document-dialog/add-document-dialog.component.html index b7bf8eff..86dffaeb 100644 --- a/src/app/features/contents/add-document-dialog/add-document-dialog.component.html +++ b/src/app/features/contents/add-document-dialog/add-document-dialog.component.html @@ -24,7 +24,9 @@

Add Document

Schema - {{ schema.displayName || schema.name }} + @for (schema of data.schemas; track schema.id) { + {{ schema.displayName || schema.name }} + } @if (form.controls['schema'].errors; as errors) { {{ fe.errors(errors) }} diff --git a/src/app/features/contents/contents.component.html b/src/app/features/contents/contents.component.html index 3ab138c9..e85fc6d1 100644 --- a/src/app/features/contents/contents.component.html +++ b/src/app/features/contents/contents.component.html @@ -6,7 +6,7 @@ - + @if ('CONTENT_CREATE' | canUserPerform | async) { - + } - - + @if ('CONTENT_IMPORT' | canUserPerform | async) { + + } + @if ('CONTENT_EXPORT' | canUserPerform | async) { + + } - +@if (isLoading) { + +} +
- - {{ pathItem.name }} - + @for (pathItem of contentPath; track pathItem.fullSlug; let isFirst = $first) { + + {{ pathItem.name }} + + } @@ -72,89 +81,80 @@ - Status + Status - - - + @switch (element.kind) { + @case ('DOCUMENT') { + @if (element?.publishedAt === undefined) { adjust - - + } @else if (element?.publishedAt?.seconds > element?.updatedAt?.seconds) { adjust - - + } @else if (element?.publishedAt && element?.publishedAt?.seconds < element?.updatedAt?.seconds) { adjust - - - + } + } + @case ('FOLDER') { folder - - + } + } - Name + Name - + @if (element.locked) { lock - + } {{ element.name }} - Slug - {{ element.slug }} + Slug + {{ element.slug }} - Schema + Schema - - + @if (element.kind === 'DOCUMENT') { + @if (schemasMap.get(element.schema); as schema) { {{ schema.displayName || schema.name }} - - unknown... - + } @else { + unknown... + } + } - Published At - {{ element.publishedAt?.toDate() | date: 'medium' }} + Published At + {{ element.publishedAt?.toDate() | date: 'medium' }} - Created At - {{ element.createdAt?.toDate() | date: 'medium' }} + Created At + {{ element.createdAt?.toDate() | date: 'medium' }} - Updated At - {{ element.updatedAt?.toDate() | date: 'medium' }} + Updated At + {{ element.updatedAt?.toDate() | date: 'medium' }} Actions - - - + @if ('CONTENT_UPDATE' | canUserPerform | async) { + + } + @if ('CONTENT_CREATE' | canUserPerform | async) { + + } + @if ('CONTENT_DELETE' | canUserPerform | async) { + + } diff --git a/src/app/features/contents/edit-document-schema/edit-document-schema.component.html b/src/app/features/contents/edit-document-schema/edit-document-schema.component.html index ad8b9819..489b4d27 100644 --- a/src/app/features/contents/edit-document-schema/edit-document-schema.component.html +++ b/src/app/features/contents/edit-document-schema/edit-document-schema.component.html @@ -1,6 +1,6 @@ @if (rootSchema) {
- + @for (field of rootSchema.fields; track field.name) { @switch (field.kind) { @case ('TEXT') { @@ -17,12 +17,18 @@ - language - {{ field.description }} - - {{ form.controls[field.name]?.value?.length || 0 }} /{{ field.maxLength }} - - {{ fe.errors(errors) }} + @if (field.translatable) { + language + } + @if (field.description) { + {{ field.description }} + } + @if (field.maxLength) { + {{ form.controls[field.name]?.value?.length || 0 }} /{{ field.maxLength }} + } + @if (form.controls[field.name].errors; as errors) { + {{ fe.errors(errors) }} + } } @@ -37,12 +43,18 @@ [attr.maxlength]="field.maxLength" [placeholder]="!isDefaultLocale && data[field.name]" autocomplete="off"> - language - {{ field.description }} - - {{ form.controls[field.name]?.value?.length || 0 }} /{{ field.maxLength }} - - {{ fe.errors(errors) }} + @if (field.translatable) { + language + } + @if (field.description) { + {{ field.description }} + } + @if (field.maxLength) { + {{ form.controls[field.name]?.value?.length || 0 }} /{{ field.maxLength }} + } + @if (form.controls[field.name].errors; as errors) { + {{ fe.errors(errors) }} + } } @@ -57,12 +69,18 @@ [attr.maxlength]="field.maxLength" [placeholder]="!isDefaultLocale && data[field.name]" autocomplete="off"> - language - {{ field.description }} - - {{ form.controls[field.name]?.value?.length || 0 }} /{{ field.maxLength }} - - {{ fe.errors(errors) }} + @if (field.translatable) { + language + } + @if (field.description) { + {{ field.description }} + } + @if (field.maxLength) { + {{ form.controls[field.name]?.value?.length || 0 }} /{{ field.maxLength }} + } + @if (form.controls[field.name].errors; as errors) { + {{ fe.errors(errors) }} + } } @@ -77,9 +95,15 @@ [attr.max]="field.maxValue" [placeholder]="!isDefaultLocale && data[field.name]" autocomplete="off" /> - language - {{ field.description }} - {{ fe.errors(errors) }} + @if (field.translatable) { + language + } + @if (field.description) { + {{ field.description }} + } + @if (form.controls[field.name].errors; as errors) { + {{ fe.errors(errors) }} + } } @@ -94,9 +118,15 @@ [attr.max]="field.maxValue" [placeholder]="!isDefaultLocale && data[field.name]" autocomplete="off" /> - language - {{ field.description }} - {{ fe.errors(errors) }} + @if (field.translatable) { + language + } + @if (field.description) { + {{ field.description }} + } + @if (form.controls[field.name].errors; as errors) { + {{ fe.errors(errors) }} + } } @@ -109,9 +139,15 @@ [formControlName]="field.name" [placeholder]="!isDefaultLocale && data[field.name]" autocomplete="off" /> - language - {{ field.description }} - {{ fe.errors(errors) }} + @if (field.translatable) { + language + } + @if (field.description) { + {{ field.description }} + } + @if (form.controls[field.name].errors; as errors) { + {{ fe.errors(errors) }} + } } @@ -124,9 +160,15 @@ [formControlName]="field.name" [placeholder]="!isDefaultLocale && data[field.name]" autocomplete="off" /> - language - {{ field.description }} - {{ fe.errors(errors) }} + @if (field.translatable) { + language + } + @if (field.description) { + {{ field.description }} + } + @if (form.controls[field.name].errors; as errors) { + {{ fe.errors(errors) }} + } } @@ -135,10 +177,16 @@    {{ field.displayName || field.name }}   - language + @if (field.translatable) { + language + }
- {{ field.description }} - {{ fe.errors(errors) }} + @if (field.description) { + {{ field.description }} + } + @if (form.controls[field.name].errors; as errors) { + {{ fe.errors(errors) }} + }
} @@ -238,53 +286,62 @@ add_circle - + @for (sch of filterSchema(field.schemas); track sch.id) { + + } - - - {{ sch.displayName }} #{{ sch.name }} - - - {{ previewText(item, sch, locale) }} - - - - navigate_next - - + @if (data[field.name]; as item) { + + @if (schemaCompNodeByName().get(item.schema); as sch) { + + {{ sch.displayName }} #{{ sch.name }} + + + @if (sch.previewField) { + {{ previewText(item, sch, locale) }} + } + + } + + + navigate_next + + + } - - {{ field.description }} + @if (field.description) { + {{ field.description }} + } } @case ('SCHEMAS') { @@ -296,78 +353,86 @@ add_circle - + @for (sch of filterSchema(field.schemas); track sch.id) { + + } - - drag_indicator - - {{ sch.displayName }} #{{ sch.name }} - - - {{ previewText(item, sch, locale) }} - - - - - navigate_next - - + @for (item of data[field.name]; track item; let idx = $index) { + + drag_indicator + @if (schemaCompNodeByName().get(item.schema); as sch) { + + {{ sch.displayName }} #{{ sch.name }} + + + @if (sch.previewField) { + {{ previewText(item, sch, locale) }} + } + + } + + + + navigate_next + + + } - {{ field.description }} + @if (field.description) { + {{ field.description }} + } } @default { {{ field.kind }} is not implemented } } -
+ }
} - - - - - - EditDocumentSchema Form => {{ form?.valid }} - -
isDefaultLocale = {{ isDefaultLocale }}
-
{{ form.value | json }}
-
{{ form.errors | json }}
-
-
-
+@if (settings$ | async; as settings) { + @if (settings.debugEnabled) { + + + + EditDocumentSchema Form => {{ form?.valid }} + +
isDefaultLocale = {{ isDefaultLocale }}
+
{{ form.value | json }}
+
{{ form.errors | json }}
+
+
+ } +} diff --git a/src/app/features/contents/edit-document-schema/edit-document-schema.component.ts b/src/app/features/contents/edit-document-schema/edit-document-schema.component.ts index 34473dba..5e261eb4 100644 --- a/src/app/features/contents/edit-document-schema/edit-document-schema.component.ts +++ b/src/app/features/contents/edit-document-schema/edit-document-schema.component.ts @@ -68,6 +68,29 @@ export class EditDocumentSchemaComponent implements OnInit, OnChanges { rootSchema?: SchemaComponent; schemaMapById = computed(() => new Map(this.schemas().map(it => [it.id, it]))); schemaMapByName = computed(() => new Map(this.schemas().map(it => [it.name, it]))); + schemaCompNodeList = computed(() => + this.schemas() + .filter(it => it.type === SchemaType.NODE) + .map(it => it as SchemaComponent) + ); + schemaCompNodeById = computed( + () => + new Map( + this.schemas() + .filter(it => it.type === SchemaType.NODE) + .map(it => it as SchemaComponent) + .map(it => [it.id, it]) + ) + ); + schemaCompNodeByName = computed( + () => + new Map( + this.schemas() + .filter(it => it.type === SchemaType.NODE) + .map(it => it as SchemaComponent) + .map(it => [it.name, it]) + ) + ); schemaEnumMapById = computed( () => new Map( @@ -240,18 +263,18 @@ export class EditDocumentSchemaComponent implements OnInit, OnChanges { //console.groupEnd() } - filterSchema(ids?: string[]): Schema[] { + filterSchema(ids?: string[]): SchemaComponent[] { if (ids) { - const result: Schema[] = []; + const result: SchemaComponent[] = []; for (const id of ids) { - const r = this.schemaMapById().get(id); + const r = this.schemaCompNodeById().get(id); if (r) { result.push(r); } } return result; } - return this.schemas(); + return this.schemaCompNodeList(); } addSchemaOne(field: SchemaField, schema: Schema): void { diff --git a/src/app/features/contents/shared/assets-select/assets-select.component.html b/src/app/features/contents/shared/assets-select/assets-select.component.html index d252b3c0..bb523345 100644 --- a/src/app/features/contents/shared/assets-select/assets-select.component.html +++ b/src/app/features/contents/shared/assets-select/assets-select.component.html @@ -1,60 +1,58 @@ -
- - - - - {{ component().displayName || component().name }} - @if (component().translatable) { - language + + + + + {{ component().displayName || component().name }} + @if (component().translatable) { + language + } + + + + + + + + @for (asset of assets; track asset.id; let idx = $index) { + + drag_indicator + @if (asset.type.startsWith('image/')) { + thumbnail + } @else { + file_present } - - - - - - - - @for (asset of assets; track asset.id; let idx = $index) { - - drag_indicator - @if (asset.type.startsWith('image/')) { - thumbnail - } @else { - file_present +
{{ asset.name }}{{ asset.extension }}
+
+ {{ asset.size | digitalStore }} + @if (asset.metadata; as metadata) { + | W{{ metadata.width }} x H{{ metadata.height }} } -
{{ asset.name }}{{ asset.extension }}
-
- {{ asset.size | digitalStore }} - @if (asset.metadata; as metadata) { - | W{{ metadata.width }} x H{{ metadata.height }} - } -
- - - - - } - - @if (component().description; as description) { - {{ description }} - } - @if (form().errors; as errors) { - {{ fe.errors(errors) }} +
+ + + +
} -
-
-
+ + @if (component().description; as description) { + {{ description }} + } + @if (form().errors; as errors) { + {{ fe.errors(errors) }} + } + + @if (settings$ | async; as settings) { @if (settings.debugEnabled) { diff --git a/src/app/features/contents/shared/assets-select/assets-select.component.ts b/src/app/features/contents/shared/assets-select/assets-select.component.ts index 1938fcfa..6997d090 100644 --- a/src/app/features/contents/shared/assets-select/assets-select.component.ts +++ b/src/app/features/contents/shared/assets-select/assets-select.component.ts @@ -3,7 +3,7 @@ import { FormArray, FormBuilder, FormGroup } from '@angular/forms'; import { FormErrorHandlerService } from '@core/error-handler/form-error-handler.service'; import { SchemaFieldAssets, SchemaFieldKind } from '@shared/models/schema.model'; import { MatDialog } from '@angular/material/dialog'; -import { Asset } from '@shared/models/asset.model'; +import { Asset, AssetFile, AssetKind } from '@shared/models/asset.model'; import { Store } from '@ngrx/store'; import { AppState } from '@core/state/core.state'; import { AssetService } from '@shared/services/asset.service'; @@ -27,7 +27,7 @@ export class AssetsSelectComponent implements OnInit, OnDestroy { @Output() assetsChange = new EventEmitter(); - assets: Asset[] = []; + assets: AssetFile[] = []; // Subscriptions settings$ = this.store.select(selectSettings); @@ -56,8 +56,8 @@ export class AssetsSelectComponent implements OnInit, OnDestroy { // Make sure to have assets display in exactly the same order this.assets = ids .map(it => byId.get(it)) - .filter(asset => asset) - .map(it => it!); + .filter(asset => asset?.kind === AssetKind.FILE) + .map(it => it as AssetFile); this.cd.markForCheck(); }, }); @@ -66,7 +66,7 @@ export class AssetsSelectComponent implements OnInit, OnDestroy { openAssetSelectDialog(): void { this.dialog - .open(AssetsSelectDialogComponent, { + .open(AssetsSelectDialogComponent, { minWidth: '900px', width: 'calc(100vw - 160px)', maxWidth: '1280px', diff --git a/src/app/features/me/me.component.html b/src/app/features/me/me.component.html index b2e00211..3766c775 100644 --- a/src/app/features/me/me.component.html +++ b/src/app/features/me/me.component.html @@ -5,37 +5,40 @@ - -
-
-
-
- - - circle - {{ user.displayName }} - - - -
-
Email : {{ user.email }}
-
Email Verified: {{ user.emailVerified ? 'Yes' : 'Not' }}
-
Role : {{ user.role | uppercase }}
-
- - - - - - - - - Your account is linked to an external authentication provider.
- You can't manage your personal data and password here. -
-
-
+@if (isLoading()) { + +} +@if (user$ | async; as user) { +
+
+
+
+ + + circle + {{ user.displayName }} + + + +
+
Email : {{ user.email }}
+
Email Verified: {{ user.emailVerified ? 'Yes' : 'Not' }}
+
Role : {{ user.role | uppercase }}
+
+ + + @if (isPasswordProvider && numberProviders === 1) { + + + + } @else { + Your account is linked to an external authentication provider.
+ You can't manage your personal data and password here. + } +
+
+
+
-
-
+} diff --git a/src/app/features/me/me.component.ts b/src/app/features/me/me.component.ts index 26942d50..582b0154 100644 --- a/src/app/features/me/me.component.ts +++ b/src/app/features/me/me.component.ts @@ -1,12 +1,11 @@ -import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, inject, OnInit } from '@angular/core'; +import { ChangeDetectionStrategy, ChangeDetectorRef, Component, DestroyRef, inject, OnInit, signal } from '@angular/core'; import { MatDialog } from '@angular/material/dialog'; import { Store } from '@ngrx/store'; import { Auth, user, User } from '@angular/fire/auth'; import { AppState } from '@core/state/core.state'; import { selectUser } from '@core/state/user/user.selector'; -import { UserState } from '@core/state/user/user.model'; -import { filter, switchMap } from 'rxjs/operators'; +import { filter, switchMap, tap } from 'rxjs/operators'; import { MeDialogComponent } from './me-dialog/me-dialog.component'; import { MeDialogModel } from './me-dialog/me-dialog.model'; import { MeService } from '@shared/services/me.service'; @@ -24,8 +23,8 @@ import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; changeDetection: ChangeDetectionStrategy.OnPush, }) export class MeComponent implements OnInit { - isLoading = true; - user?: UserState; + isLoading = signal(true); + user$ = this.store.select(selectUser).pipe(tap(() => this.isLoading.set(false))); authUser?: User | null; isPasswordProvider = false; isGoogleProvider = false; @@ -43,14 +42,6 @@ export class MeComponent implements OnInit { ) {} ngOnInit(): void { - this.store - .select(selectUser) - .pipe(takeUntilDestroyed(this.destroyRef)) - .subscribe(user => { - this.user = user; - this.isLoading = false; - this.cd.markForCheck(); - }); user(this.auth) .pipe(takeUntilDestroyed(this.destroyRef)) .subscribe(authUser => { diff --git a/src/app/features/plugins/config-dialog/config-dialog.component.html b/src/app/features/plugins/config-dialog/config-dialog.component.html index 98d06d20..59406bc6 100644 --- a/src/app/features/plugins/config-dialog/config-dialog.component.html +++ b/src/app/features/plugins/config-dialog/config-dialog.component.html @@ -2,19 +2,24 @@

{{ data.plugin.name }}


- + @for (config of data.plugin.configurationFields; track config) { {{ config.displayName }} - - {{ option.name }} - - + @if (config.options) { + + {{ option.name }} + + } @else { - - {{ config.description }} - {{ fe.errors(errors) }} + } + @if (config.description) { + {{ config.description }} + } + @if (form.controls[config.name].errors; as errors) { + {{ fe.errors(errors) }} + } - + }
diff --git a/src/app/features/schemas/edit-enum/edit-enum.component.html b/src/app/features/schemas/edit-enum/edit-enum.component.html index 56db415c..582c1be6 100644 --- a/src/app/features/schemas/edit-enum/edit-enum.component.html +++ b/src/app/features/schemas/edit-enum/edit-enum.component.html @@ -58,39 +58,36 @@

Values


- - - - drag_indicator - Option {{ idx + 1 }} - - - + @for (control of values.controls; track control; let idx = $index) { + + + + drag_indicator + Option {{ idx + 1 }} + + + - - Name - - {{ control.value.name?.length || 0 }}/30 - @if (control.controls['name']?.errors; as errors) { - {{ fe.errors(errors) }} - } - - - Value - - {{ control.value.value?.length || 0 }}/30 - @if (control.controls['value']?.errors; as errors) { - {{ fe.errors(errors) }} - } - - + + Name + + {{ control.value.name?.length || 0 }}/30 + @if (control.controls['name']?.errors; as errors) { + {{ fe.errors(errors) }} + } + + + Value + + {{ control.value.value?.length || 0 }}/30 + @if (control.controls['value']?.errors; as errors) { + {{ fe.errors(errors) }} + } + + + } diff --git a/src/app/features/schemas/shared/asset-select/asset-select.component.html b/src/app/features/schemas/shared/asset-select/asset-select.component.html index 8e691aa5..2a49e8a0 100644 --- a/src/app/features/schemas/shared/asset-select/asset-select.component.html +++ b/src/app/features/schemas/shared/asset-select/asset-select.component.html @@ -5,28 +5,28 @@
- - - - - - - thumbnail - - - file_present - - - {{ asset.name }}{{ asset.extension }} - + @if (asset) { + + + + + + @if (asset.type.startsWith('image/')) { + thumbnail + } @else { + file_present + } + {{ asset.name }}{{ asset.extension }} + + } diff --git a/src/app/features/schemas/shared/edit-field/edit-field.component.html b/src/app/features/schemas/shared/edit-field/edit-field.component.html index 7577629e..d3c91ae6 100644 --- a/src/app/features/schemas/shared/edit-field/edit-field.component.html +++ b/src/app/features/schemas/shared/edit-field/edit-field.component.html @@ -9,7 +9,9 @@ Will be used in JSON structure. {{ form.value.name.length || 0 }}/50 - {{ fe.errors(errors) }} + @if (form.controls['name']?.errors; as errors) { + {{ fe.errors(errors) }} + } Kind @@ -18,88 +20,106 @@ {{ selectedFieldKind.icon }} {{ selectedFieldKind.name }} - - {{ schemaFieldKindDescriptions[kind].icon }} - {{ schemaFieldKindDescriptions[kind].name }} - + @for (kind of fieldKinds; track kind) { + + {{ schemaFieldKindDescriptions[kind].icon }} + {{ schemaFieldKindDescriptions[kind].name }} + + } - {{ fe.errors(errors) }} + @if (form.controls['kind']?.errors; as errors) { + {{ fe.errors(errors) }} + } Display Name {{ form.value.displayName?.length || 0 }}/50 - {{ fe.errors(errors) }} + @if (form.controls['displayName']?.errors; as errors) { + {{ fe.errors(errors) }} + }   Required

- -   Translatable + @if ( + [ + 'TEXT', + 'TEXTAREA', + 'MARKDOWN', + 'NUMBER', + 'COLOR', + 'DATE', + 'DATETIME', + 'BOOLEAN', + 'OPTION', + 'OPTIONS', + 'LINK', + 'ASSET', + 'ASSETS' + ].includes(form.value.kind) + ) { +    + Translatable

-
+ } Description {{ form.value.description?.length || 0 }}/250 - {{ fe.errors(errors) }} + @if (form.controls['description']?.errors; as errors) { + {{ fe.errors(errors) }} + } Default Value {{ form.value.defaultValue?.length || 0 }}/250 - {{ fe.errors(errors) }} + @if (form.controls['defaultValue']?.errors; as errors) { + {{ fe.errors(errors) }} + } - + @if (form.value.kind === 'NUMBER') { Min Value - {{ fe.errors(errors) }} + @if (form.controls['minValue']?.errors; as errors) { + {{ fe.errors(errors) }} + } Max Value - {{ fe.errors(errors) }} + @if (form.controls['maxValue']?.errors; as errors) { + {{ fe.errors(errors) }} + } - + } - + @if (['TEXT', 'TEXTAREA', 'MARKDOWN'].includes(form.value.kind)) { Min Length - {{ fe.errors(errors) }} + @if (form.controls['minLength']?.errors; as errors) { + {{ fe.errors(errors) }} + } Max Length - {{ fe.errors(errors) }} + @if (form.controls['maxLength']?.errors; as errors) { + {{ fe.errors(errors) }} + } - + } @if (['OPTION', 'OPTIONS'].includes(form.value.kind)) { @@ -141,39 +161,36 @@

Options


- - - - drag_indicator - Option {{ idx + 1 }} - - - + @for (option of options?.controls; track option; let idx = $index) { + + + + drag_indicator + Option {{ idx + 1 }} + + + - - Name - - {{ option.value.name?.length || 0 }}/30 - @if (form.controls['name']?.errors; as errors) { - {{ fe.errors(errors) }} - } - - - Value - - {{ option.value.value?.length || 0 }}/30 - @if (form.controls['value']?.errors; as errors) { - {{ fe.errors(errors) }} - } - - + + Name + + {{ option.value.name?.length || 0 }}/30 + @if (form.controls['name']?.errors; as errors) { + {{ fe.errors(errors) }} + } + + + Value + + {{ option.value.value?.length || 0 }}/30 + @if (form.controls['value']?.errors; as errors) { + {{ fe.errors(errors) }} + } + + + } - - -
- - Space ID - - - -
+@if (isLoading) { + +} +@if (space) { +
- Space Name - - {{ form.controls['name'].value?.length || 0 }}/30 - {{ fe.errors(errors) }} + Space ID + + - -
+
+ + Space Name + + {{ form.controls['name'].value?.length || 0 }}/30 + @if (form.controls['name'].errors; as errors) { + {{ fe.errors(errors) }} + } + +
+
+} diff --git a/src/app/features/settings/locales/locale-dialog/locale-dialog.component.html b/src/app/features/settings/locales/locale-dialog/locale-dialog.component.html index 66639e98..4365253f 100644 --- a/src/app/features/settings/locales/locale-dialog/locale-dialog.component.html +++ b/src/app/features/settings/locales/locale-dialog/locale-dialog.component.html @@ -3,12 +3,16 @@

Locale Form


- Locale + Locale - {{ locale.name }} ({{ locale.id }}) + @for (locale of filteredLocales | async; track locale.id) { + {{ locale.name }} ({{ locale.id }}) + } - {{ fe.errors(errors) }} + @if (form.controls['locale'].errors; as errors) { + {{ fe.errors(errors) }} + }
diff --git a/src/app/features/settings/locales/locales.component.html b/src/app/features/settings/locales/locales.component.html index 58a16f6b..67470e6d 100644 --- a/src/app/features/settings/locales/locales.component.html +++ b/src/app/features/settings/locales/locales.component.html @@ -8,37 +8,41 @@ - - +@if (isLoading) { + +}
- Id - {{ element.id }} + Id + {{ element.id }} - Name - {{ element.name }} + Name + {{ element.name }} - Translatable + Translatable {{ isSupport(element.id) ? 'check' : 'clear' }} - Fallback + Fallback - - + @if (selectedSpace?.localeFallback?.id === element.id) { + + } @else { + + } - Actions + Actions - - +@if (isLoading) { + +}
diff --git a/src/app/features/settings/ui/ui.component.html b/src/app/features/settings/ui/ui.component.html index 9ea123cd..cf41d287 100644 --- a/src/app/features/settings/ui/ui.component.html +++ b/src/app/features/settings/ui/ui.component.html @@ -9,17 +9,24 @@ - -
-
- - Color - - Primary - Accent - Warn - - {{ fe.errors(errors) }} - -
-
+@if (isLoading) { + +} + +@if (space) { +
+
+ + Color + + Primary + Accent + Warn + + @if (form.controls['color'].errors; as errors) { + {{ fe.errors(errors) }} + } + +
+
+} diff --git a/src/app/features/settings/visual-editor/visual-editor.component.html b/src/app/features/settings/visual-editor/visual-editor.component.html index 439eaf9c..11d128a2 100644 --- a/src/app/features/settings/visual-editor/visual-editor.component.html +++ b/src/app/features/settings/visual-editor/visual-editor.component.html @@ -9,7 +9,10 @@ - +@if (isLoading) { + +} +
@@ -24,46 +27,49 @@
- - - - drag_indicator - Environment {{ idx + 1 }} - - - + @for (option of environments?.controls; track option; let idx = $index) { + + + + drag_indicator + Environment {{ idx + 1 }} + + + - - Name - - {{ option.value.name?.length || 0 }}/30 - {{ fe.errors(errors) }} - - - URL - - {{ option.value.url?.length || 0 }}/250 - {{ fe.errors(errors) }} - - + + Name + + {{ option.value.name?.length || 0 }}/30 + @if (option.controls['name']?.errors; as errors) { + {{ fe.errors(errors) }} + } + + + URL + + {{ option.value.url?.length || 0 }}/250 + @if (option.controls['url']?.errors; as errors) { + {{ fe.errors(errors) }} + } + + + }
- - - - - Form : {{ form?.valid }} - -
{{ form.value | json }}
-
{{ form.errors | json }}
-
-
-
+@if (settings$ | async; as settings) { + @if (settings.debugEnabled) { + + + + Form : {{ form?.valid }} + +
{{ form.value | json }}
+
{{ form.errors | json }}
+
+
+ } +} diff --git a/src/app/features/spaces/space-dialog/space-dialog.component.html b/src/app/features/spaces/space-dialog/space-dialog.component.html index 12c5803e..2e9c6143 100644 --- a/src/app/features/spaces/space-dialog/space-dialog.component.html +++ b/src/app/features/spaces/space-dialog/space-dialog.component.html @@ -6,7 +6,9 @@

Space Form

Name {{ form.controls['name'].value?.length || 0 }}/30 - {{ fe.errors(errors) }} + @if (form.controls['name'].errors; as errors) { + {{ fe.errors(errors) }} + } diff --git a/src/app/features/spaces/spaces.component.html b/src/app/features/spaces/spaces.component.html index c15b9b82..db4d9822 100644 --- a/src/app/features/spaces/spaces.component.html +++ b/src/app/features/spaces/spaces.component.html @@ -8,11 +8,13 @@ - +@if (isLoading) { + +}
- ID + ID {{ element.id }} diff --git a/src/app/features/translations/translation-add-dialog/translation-add-dialog.component.html b/src/app/features/translations/translation-add-dialog/translation-add-dialog.component.html index bde01803..891c8f8e 100644 --- a/src/app/features/translations/translation-add-dialog/translation-add-dialog.component.html +++ b/src/app/features/translations/translation-add-dialog/translation-add-dialog.component.html @@ -6,34 +6,48 @@

Add Translation

Name {{ name.value?.length || 0 }}/150 - {{ fe.errors(errors) }} - - - Type - - {{ type }} - - {{ fe.errors(errors) }} + @if (form.controls['name'].errors; as errors) { + {{ fe.errors(errors) }} + } + @if (false) { + + Type + + @for (type of translationTypes; track type) { + {{ type }} + } + + @if (form.controls['type'].errors; as errors) { + {{ fe.errors(errors) }} + } + + } Description {{ description.value?.length || 0 }}/250 - {{ fe.errors(errors) }} + @if (form.controls['description'].errors; as errors) { + {{ fe.errors(errors) }} + } Value {{ defaultValue.value?.length || 0 }}/1000 - {{ fe.errors(errors) }} + @if (form.controls['value'].errors; as errors) { + {{ fe.errors(errors) }} + } - - {{ label }} - cancel - + @for (label of form.controls['labels'].value; track label) { + + {{ label }} + cancel + + }
- - Item {{ i }} - - - {{ control.value?.length || 0 }}/150 - + @for (control of values.controls; track control; let i = $index) { + + Item {{ i }} + + + {{ control.value?.length || 0 }}/150 + + }
diff --git a/src/app/features/translations/translation-array-view/translation-array-view.component.html b/src/app/features/translations/translation-array-view/translation-array-view.component.html index 010ee010..d753eebf 100644 --- a/src/app/features/translations/translation-array-view/translation-array-view.component.html +++ b/src/app/features/translations/translation-array-view/translation-array-view.component.html @@ -1,3 +1,5 @@
    -
  • {{ item }}
  • + @for (item of extract(); track item) { +
  • {{ item }}
  • + }
diff --git a/src/app/features/translations/translation-edit-dialog/translation-edit-dialog.component.html b/src/app/features/translations/translation-edit-dialog/translation-edit-dialog.component.html index a7612948..fac306ff 100644 --- a/src/app/features/translations/translation-edit-dialog/translation-edit-dialog.component.html +++ b/src/app/features/translations/translation-edit-dialog/translation-edit-dialog.component.html @@ -6,14 +6,18 @@

Translation

Description {{ description.value?.length || 0 }}/250 - {{ fe.errors(errors) }} + @if (form.controls['description'].errors; as errors) { + {{ fe.errors(errors) }} + } - - {{ label }} - cancel - + @for (label of form.controls['labels'].value; track label) { + + {{ label }} + cancel + + } -
  • - {{ toPlural(item.key) }} : {{ item.value }} -
  • + @for (item of extract() | keyvalue; track item.key) { +
  • + {{ toPlural(item.key) }} : {{ item.value }} +
  • + } diff --git a/src/app/features/translations/translations.component.html b/src/app/features/translations/translations.component.html index 0cf6aadf..341bb434 100644 --- a/src/app/features/translations/translations.component.html +++ b/src/app/features/translations/translations.component.html @@ -119,11 +119,17 @@ {{ translation.name }} - - - - - + @switch (translation.type) { + @case ('STRING') { + + } + @case ('PLURAL') { + + } + @case ('ARRAY') { + + } + } diff --git a/src/app/features/users/user-dialog/user-dialog.component.html b/src/app/features/users/user-dialog/user-dialog.component.html index 4ede4137..788affa2 100644 --- a/src/app/features/users/user-dialog/user-dialog.component.html +++ b/src/app/features/users/user-dialog/user-dialog.component.html @@ -9,10 +9,12 @@

    User

    Custom Admin - {{ fe.errors(errors) }} + @if (form.controls['role'].errors; as errors) { + {{ fe.errors(errors) }} + }
    - + @if (form.value.role === 'custom') { Permissions
    Administration
    @@ -141,7 +143,7 @@

    User

    Import Asset.
    -
    + } @@ -149,6 +151,8 @@

    User

    - -
    {{ form.value | json }}
    -
    +@if (settings$ | async; as settings) { + @if (settings.debugEnabled) { +
    {{ form.value | json }}
    + } +} diff --git a/src/app/features/users/user-invite-dialog/user-invite-dialog.component.html b/src/app/features/users/user-invite-dialog/user-invite-dialog.component.html index 4c16dfeb..58227964 100644 --- a/src/app/features/users/user-invite-dialog/user-invite-dialog.component.html +++ b/src/app/features/users/user-invite-dialog/user-invite-dialog.component.html @@ -5,12 +5,16 @@

    User Invite

    Email - {{ fe.errors(errors) }} + @if (form.controls['email'].errors; as errors) { + {{ fe.errors(errors) }} + } Password - {{ fe.errors(errors) }} + @if (form.controls['password'].errors; as errors) { + {{ fe.errors(errors) }} + } Display Name @@ -25,7 +29,7 @@

    User Invite

    - + @if (form.value.role === 'custom') { Permissions
    Administration
    @@ -154,7 +158,7 @@

    User Invite

    Import Asset.
    -
    + } @@ -162,8 +166,8 @@

    User Invite

    - - +@if (settings$ | async; as settings) { + @if (settings.debugEnabled) {
    {{ form.value | json }}
    -
    -
    + } +} diff --git a/src/app/features/users/users.component.html b/src/app/features/users/users.component.html index 0b90d2b5..5b68a664 100644 --- a/src/app/features/users/users.component.html +++ b/src/app/features/users/users.component.html @@ -13,42 +13,45 @@ - +@if (isLoading) { + +} +
    - Avatar + Avatar circle - Email - {{ element.email }} + Email + {{ element.email }} - Name - {{ element.displayName }} + Name + {{ element.displayName }} - Role + Role {{ element.role || 'none' | uppercase }} - + @if (element.role === 'custom') {  info - + } - Created At - {{ element.createdAt?.toDate() | date: 'medium' }} + Created At + {{ element.createdAt?.toDate() | date: 'medium' }} - Updated At - {{ element.updatedAt?.toDate() | date: 'medium' }} + Updated At + {{ element.updatedAt?.toDate() | date: 'medium' }} - Actions + Actions
    }