diff --git a/.github/workflows/dev.yml b/.github/workflows/dev.yml index 48abc021f..62caa2971 100644 --- a/.github/workflows/dev.yml +++ b/.github/workflows/dev.yml @@ -21,12 +21,17 @@ jobs: - name: Prepare - Inject short Variables uses: rlespinasse/github-slug-action@v4.4.1 - - name: Prepare - Set up QEMU + - name: Prepare - Setup QEMU uses: docker/setup-qemu-action@v3.0.0 - - name: Prepare - Set up Docker Buildx + - name: Prepare - Setup Docker Buildx uses: docker/setup-buildx-action@v3.0.0 + - name: Prepare - Setup Node + uses: actions/setup-node@v3 + with: + node-version: 18 + - name: Build - BUILD uses: docker/build-push-action@v5.1.0 with: @@ -40,6 +45,28 @@ jobs: run: docker-compose up -d working-directory: tools/TestSuite + - name: Test - Install Playwright Dependencies + run: npm ci + working-directory: './tools/e2e' + + - name: Test - Install Playwright Browsers + run: npx playwright install --with-deps + working-directory: './tools/e2e' + + - name: Test - Run Playwright Tests + run: npx playwright test + working-directory: './tools/e2e' + env: + BASE__URL: http://localhost:8080 + + - name: Test - Upload Playwright Artifacts + if: always() + uses: actions/upload-artifact@v3 + with: + name: playwright-report + path: tools/e2e/playwright-report/ + retention-days: 30 + - name: Test - RUN uses: kohlerdominik/docker-run-action@v1.1.0 with: diff --git a/.github/workflows/make-screenshots.yml b/.github/workflows/make-screenshots.yml new file mode 100644 index 000000000..f6fc1029b --- /dev/null +++ b/.github/workflows/make-screenshots.yml @@ -0,0 +1,57 @@ +name: Screenshot +concurrency: build + +on: + workflow_dispatch: + +jobs: + screenshot: + runs-on: ubuntu-latest + steps: + - name: Prepare - Checkout + uses: actions/checkout@v4.1.1 + + - name: Prepare - Setup QEMU + uses: docker/setup-qemu-action@v3.0.0 + + - name: Prepare - Setup Docker Buildx + uses: docker/setup-buildx-action@v3.0.0 + + - name: Prepare - Setup Node + uses: actions/setup-node@v3 + with: + node-version: 18 + + - name: Build - BUILD + uses: docker/build-push-action@v5.1.0 + with: + load: true + cache-from: type=gha + cache-to: type=gha,mode=max + tags: squidex-local + + - name: Test - Start Compose + run: docker-compose up -d + working-directory: tools/TestSuite + + - name: Test - Install Playwright Dependencies + run: npm ci + working-directory: './tools/e2e' + + - name: Test - Install Playwright Browsers + run: npx playwright install --with-deps + working-directory: './tools/e2e' + + - name: Test - Run Playwright Tests + run: npx playwright test --update-snapshots + working-directory: './tools/e2e' + env: + BASE__URL: http://localhost:8080 + + - name: Test - Upload Playwright Artifacts + if: always() + uses: actions/upload-artifact@v3 + with: + name: snapshots + path: tools/e2e/snapshots/ + retention-days: 30 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index b53f56a47..cf66857a7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -16,12 +16,17 @@ jobs: - name: Prepare - Inject short Variables uses: rlespinasse/github-slug-action@v4.4.1 - - name: Prepare - Set up QEMU + - name: Prepare - Setup QEMU uses: docker/setup-qemu-action@v3.0.0 - - name: Prepare - Set up Docker Buildx + - name: Prepare - Setup Docker Buildx uses: docker/setup-buildx-action@v3.0.0 + - name: Prepare - Setup Node + uses: actions/setup-node@v3 + with: + node-version: 18 + - name: Build - BUILD uses: docker/build-push-action@v5.1.0 with: @@ -35,6 +40,28 @@ jobs: run: docker-compose up -d working-directory: tools/TestSuite + - name: Test - Install Playwright Dependencies + run: npm ci + working-directory: './tools/e2e' + + - name: Test - Install Playwright Browsers + run: npx playwright install --with-deps + working-directory: './tools/e2e' + + - name: Test - Run Playwright Tests + run: npx playwright test + working-directory: './tools/e2e' + env: + BASE__URL: http://localhost:8080 + + - name: Test - Upload Playwright Artifacts + if: always() + uses: actions/upload-artifact@v3 + with: + name: playwright-report + path: tools/e2e/playwright-report/ + retention-days: 30 + - name: Test - RUN uses: kohlerdominik/docker-run-action@v1.1.0 with: diff --git a/backend/i18n/frontend_en.json b/backend/i18n/frontend_en.json index 428094564..58ba96756 100644 --- a/backend/i18n/frontend_en.json +++ b/backend/i18n/frontend_en.json @@ -350,6 +350,7 @@ "common.notSupported": "Not Supported", "common.noValue": "- No value -", "common.openAPI": "Open API", + "common.options": "Options", "common.or": "or", "common.pagerInfo": "{itemFirst}-{itemLast} of {numberOfItems}", "common.pagerInfoNoTotal": "{itemFirst}-{itemLast} of total?", diff --git a/backend/i18n/frontend_fr.json b/backend/i18n/frontend_fr.json index 4bdf964ca..163c12382 100644 --- a/backend/i18n/frontend_fr.json +++ b/backend/i18n/frontend_fr.json @@ -350,6 +350,7 @@ "common.notSupported": "Non supporté", "common.noValue": "- Aucune valeur -", "common.openAPI": "Ouvrir l'API", + "common.options": "Options", "common.or": "ou", "common.pagerInfo": "{itemFirst}-{itemLast} de {numberOfItems}", "common.pagerInfoNoTotal": "{itemFirst}-{itemLast} Du total?", diff --git a/backend/i18n/frontend_it.json b/backend/i18n/frontend_it.json index 311bd4ed6..014f1959f 100644 --- a/backend/i18n/frontend_it.json +++ b/backend/i18n/frontend_it.json @@ -350,6 +350,7 @@ "common.notSupported": "Not Supported", "common.noValue": "- Nessun valore -", "common.openAPI": "Open API", + "common.options": "Options", "common.or": "o", "common.pagerInfo": "{itemFirst}-{itemLast} of {numberOfItems}", "common.pagerInfoNoTotal": "{itemFirst}-{itemLast} of total?", diff --git a/backend/i18n/frontend_nl.json b/backend/i18n/frontend_nl.json index 7dfdfded2..b41923b00 100644 --- a/backend/i18n/frontend_nl.json +++ b/backend/i18n/frontend_nl.json @@ -350,6 +350,7 @@ "common.notSupported": "Not Supported", "common.noValue": "- Geen waarde -", "common.openAPI": "Open API", + "common.options": "Options", "common.or": "of", "common.pagerInfo": "{itemFirst} - {itemLast} van {numberOfItems}", "common.pagerInfoNoTotal": "{itemFirst}-{itemLast} of total?", diff --git a/backend/i18n/frontend_pt.json b/backend/i18n/frontend_pt.json index afa8d213b..f24fdb959 100644 --- a/backend/i18n/frontend_pt.json +++ b/backend/i18n/frontend_pt.json @@ -350,6 +350,7 @@ "common.notSupported": "Não suportado", "common.noValue": "- Sem valor -", "common.openAPI": "Open API", + "common.options": "Options", "common.or": "ou", "common.pagerInfo": "{itemFirst}-{itemLast} de {numberOfItems}", "common.pagerInfoNoTotal": "{itemFirst}-{itemLast} do total?", diff --git a/backend/i18n/frontend_zh.json b/backend/i18n/frontend_zh.json index 97b3d788c..59f166d5e 100644 --- a/backend/i18n/frontend_zh.json +++ b/backend/i18n/frontend_zh.json @@ -350,6 +350,7 @@ "common.notSupported": "Not Supported", "common.noValue": "- 无值 -", "common.openAPI": "Open API", + "common.options": "Options", "common.or": "或", "common.pagerInfo": "{itemFirst}-{itemLast} 的 {numberOfItems}", "common.pagerInfoNoTotal": "{itemFirst}-{itemLast} of total?", diff --git a/backend/i18n/source/frontend_en.json b/backend/i18n/source/frontend_en.json index 428094564..58ba96756 100644 --- a/backend/i18n/source/frontend_en.json +++ b/backend/i18n/source/frontend_en.json @@ -350,6 +350,7 @@ "common.notSupported": "Not Supported", "common.noValue": "- No value -", "common.openAPI": "Open API", + "common.options": "Options", "common.or": "or", "common.pagerInfo": "{itemFirst}-{itemLast} of {numberOfItems}", "common.pagerInfoNoTotal": "{itemFirst}-{itemLast} of total?", diff --git a/backend/src/Squidex/Areas/Api/Controllers/Apps/AppAssetsController.cs b/backend/src/Squidex/Areas/Api/Controllers/Apps/AppAssetsController.cs index f3e8cf647..bfbc3ccc6 100644 --- a/backend/src/Squidex/Areas/Api/Controllers/Apps/AppAssetsController.cs +++ b/backend/src/Squidex/Areas/Api/Controllers/Apps/AppAssetsController.cs @@ -47,7 +47,7 @@ public sealed class AppAssetsController : ApiController } /// - /// Update the app asset scripts. + /// Update the asset scripts. /// /// The name of the app to update. /// The values to update. diff --git a/backend/src/Squidex/Areas/Api/Controllers/Apps/AppLanguagesController.cs b/backend/src/Squidex/Areas/Api/Controllers/Apps/AppLanguagesController.cs index 8da4b7039..a033ba11a 100644 --- a/backend/src/Squidex/Areas/Api/Controllers/Apps/AppLanguagesController.cs +++ b/backend/src/Squidex/Areas/Api/Controllers/Apps/AppLanguagesController.cs @@ -52,7 +52,7 @@ public sealed class AppLanguagesController : ApiController } /// - /// Attaches an app language. + /// Add an app language. /// /// The name of the app. /// The language to add to the app. diff --git a/backend/src/Squidex/Areas/Api/Controllers/Apps/AppSettingsController.cs b/backend/src/Squidex/Areas/Api/Controllers/Apps/AppSettingsController.cs index 25b8081c7..62f234770 100644 --- a/backend/src/Squidex/Areas/Api/Controllers/Apps/AppSettingsController.cs +++ b/backend/src/Squidex/Areas/Api/Controllers/Apps/AppSettingsController.cs @@ -47,7 +47,7 @@ public sealed class AppSettingsController : ApiController } /// - /// Update the app settings. + /// Update the settings. /// /// The name of the app to update. /// The values to update. diff --git a/backend/src/Squidex/Areas/Api/Controllers/History/HistoryController.cs b/backend/src/Squidex/Areas/Api/Controllers/History/HistoryController.cs index 5be7085bd..012aad7ad 100644 --- a/backend/src/Squidex/Areas/Api/Controllers/History/HistoryController.cs +++ b/backend/src/Squidex/Areas/Api/Controllers/History/HistoryController.cs @@ -29,7 +29,7 @@ public sealed class HistoryController : ApiController } /// - /// Get historical events. + /// Get the app history. /// /// The name of the app. /// The name of the channel. @@ -50,7 +50,7 @@ public sealed class HistoryController : ApiController } /// - /// Get historical events for a team. + /// Get the team history. /// /// The ID of the team. /// The name of the channel. diff --git a/backend/src/Squidex/Areas/Api/Controllers/Statistics/UsagesController.cs b/backend/src/Squidex/Areas/Api/Controllers/Statistics/UsagesController.cs index a770b8809..88bd4145e 100644 --- a/backend/src/Squidex/Areas/Api/Controllers/Statistics/UsagesController.cs +++ b/backend/src/Squidex/Areas/Api/Controllers/Statistics/UsagesController.cs @@ -98,7 +98,7 @@ public sealed class UsagesController : ApiController } /// - /// Get api calls in date range. + /// Get api calls in date range for app. /// /// The name of the app. /// The from date. @@ -148,7 +148,7 @@ public sealed class UsagesController : ApiController } /// - /// Get total asset size. + /// Get total asset size for app. /// /// The name of the app. /// Storage usage returned. @@ -171,7 +171,7 @@ public sealed class UsagesController : ApiController } /// - /// Get total asset size by team. + /// Get total asset size for team. /// /// The ID of the team. /// Storage usage returned. @@ -194,7 +194,7 @@ public sealed class UsagesController : ApiController } /// - /// Get asset usage by date. + /// Get asset usage by date for app. /// /// The name of the app. /// The from date. diff --git a/backend/src/Squidex/Areas/IdentityServer/Config/CreateAdminInitializer.cs b/backend/src/Squidex/Areas/IdentityServer/Config/CreateAdminInitializer.cs index d528f3670..28833010d 100644 --- a/backend/src/Squidex/Areas/IdentityServer/Config/CreateAdminInitializer.cs +++ b/backend/src/Squidex/Areas/IdentityServer/Config/CreateAdminInitializer.cs @@ -20,79 +20,82 @@ namespace Squidex.Areas.IdentityServer.Config; public sealed class CreateAdminInitializer : IInitializable { private readonly IServiceProvider serviceProvider; - private readonly MyIdentityOptions identityOptions; public int Order => int.MaxValue; - public CreateAdminInitializer(IServiceProvider serviceProvider, IOptions identityOptions) + public CreateAdminInitializer(IServiceProvider serviceProvider) { this.serviceProvider = serviceProvider; - this.identityOptions = identityOptions.Value; } public async Task InitializeAsync( CancellationToken ct) { + await using var scope = serviceProvider.CreateAsyncScope(); + + var identityOptions = serviceProvider.GetRequiredService>().Value; + IdentityModelEventSource.ShowPII = identityOptions.ShowPII; - if (identityOptions.IsAdminConfigured()) + if (!identityOptions.IsAdminConfigured()) { - await using (var scope = serviceProvider.CreateAsyncScope()) - { - var userService = scope.ServiceProvider.GetRequiredService(); + return; + } + + var userService = scope.ServiceProvider.GetRequiredService(); - var adminEmail = identityOptions.AdminEmail; - var adminPass = identityOptions.AdminPassword; + var adminEmail = identityOptions.AdminEmail; + var adminPass = identityOptions.AdminPassword; - var isEmpty = await IsEmptyAsync(userService); + var isEmpty = await IsEmptyAsync(userService); - if (isEmpty || identityOptions.AdminRecreate) + if (!isEmpty && !identityOptions.AdminRecreate) + { + return; + } + + try + { + var user = await userService.FindByEmailAsync(adminEmail, ct); + + if (user != null) + { + if (identityOptions.AdminRecreate) { - try - { - var user = await userService.FindByEmailAsync(adminEmail, ct); - - if (user != null) - { - if (identityOptions.AdminRecreate) - { - var permissions = CreatePermissions(user.Claims.Permissions()); - - var values = new UserValues - { - Password = adminPass, - Permissions = permissions - }; - - await userService.UpdateAsync(user.Id, values, ct: ct); - } - } - else - { - var permissions = CreatePermissions(PermissionSet.Empty); - - var values = new UserValues - { - Password = adminPass, - Permissions = permissions, - DisplayName = adminEmail - }; - - await userService.CreateAsync(adminEmail, values, ct: ct); - } - } - catch (Exception ex) + var permissions = CreatePermissions(user.Claims.Permissions(), identityOptions); + + var values = new UserValues { - var log = serviceProvider.GetRequiredService>(); + Password = adminPass, + Permissions = permissions + }; - log.LogError(ex, "Failed to create administrator."); - } + await userService.UpdateAsync(user.Id, values, ct: ct); } } + else + { + var permissions = CreatePermissions(PermissionSet.Empty, identityOptions); + + var values = new UserValues + { + Password = adminPass, + Permissions = permissions, + DisplayName = adminEmail + }; + + await userService.CreateAsync(adminEmail, values, ct: ct); + } + } + catch (Exception ex) + { + var log = serviceProvider.GetRequiredService>(); + + log.LogError(ex, "Failed to create administrator."); } } - private PermissionSet CreatePermissions(PermissionSet permissions) + private static PermissionSet CreatePermissions(PermissionSet permissions, MyIdentityOptions identityOptions) { permissions = permissions.Add(PermissionIds.Admin); diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 5ee2f7117..b224b72d7 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -30,7 +30,7 @@ "ace-builds": "^1.31.2", "angular-gridster2": "17.0.0", "angular-mentions": "1.5.0", - "bootstrap": "5.3.2", + "bootstrap": "5.2.3", "copy-webpack-plugin": "^11.0.0", "core-js": "3.33.3", "cropperjs": "2.0.0-alpha.1", @@ -13059,9 +13059,9 @@ "license": "ISC" }, "node_modules/bootstrap": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.2.tgz", - "integrity": "sha512-D32nmNWiQHo94BKHLmOrdjlL05q1c8oxbtBphQFb9Z5to6eGRDCm0QgeaZ4zFBHzfg2++rqa2JkqCcxDy0sH0g==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.2.3.tgz", + "integrity": "sha512-cEKPM+fwb3cT8NzQZYEu4HilJ3anCrWqh3CHAok1p9jXqMPsPTBhU25fBckEJHJ/p+tTxTFTsFQGM+gaHpi3QQ==", "funding": [ { "type": "github", @@ -13073,7 +13073,7 @@ } ], "peerDependencies": { - "@popperjs/core": "^2.11.8" + "@popperjs/core": "^2.11.6" } }, "node_modules/bplist-parser": { diff --git a/frontend/package.json b/frontend/package.json index 7521c7c22..4456b1251 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -37,7 +37,7 @@ "ace-builds": "^1.31.2", "angular-gridster2": "17.0.0", "angular-mentions": "1.5.0", - "bootstrap": "5.3.2", + "bootstrap": "5.2.3", "copy-webpack-plugin": "^11.0.0", "core-js": "3.33.3", "cropperjs": "2.0.0-alpha.1", diff --git a/frontend/src/app/features/apps/pages/app.component.html b/frontend/src/app/features/apps/pages/app.component.html index 597b0e2f9..49e9d358b 100644 --- a/frontend/src/app/features/apps/pages/app.component.html +++ b/frontend/src/app/features/apps/pages/app.component.html @@ -26,6 +26,7 @@ diff --git a/frontend/src/app/features/apps/pages/apps-page.component.ts b/frontend/src/app/features/apps/pages/apps-page.component.ts index ccf74f83e..4db833d27 100644 --- a/frontend/src/app/features/apps/pages/apps-page.component.ts +++ b/frontend/src/app/features/apps/pages/apps-page.component.ts @@ -97,6 +97,7 @@ export class AppsPageComponent implements OnInit { this.appsState.apps.pipe(take(1)) .subscribe(apps => { if (apps.length === 0 && + this.uiOptions.value.hideOnboarding !== true && this.tourState.snapshot.status !== 'Completed' && this.tourState.snapshot.status !== 'Started') { this.onboardingDialog.show(); diff --git a/frontend/src/app/features/apps/pages/team.component.html b/frontend/src/app/features/apps/pages/team.component.html index 0660e2628..76459b148 100644 --- a/frontend/src/app/features/apps/pages/team.component.html +++ b/frontend/src/app/features/apps/pages/team.component.html @@ -8,6 +8,7 @@
diff --git a/frontend/src/app/features/content/pages/content/content-page.component.html b/frontend/src/app/features/content/pages/content/content-page.component.html index b5de3281c..040ba2518 100644 --- a/frontend/src/app/features/content/pages/content/content-page.component.html +++ b/frontend/src/app/features/content/pages/content/content-page.component.html @@ -5,6 +5,7 @@
+ @@ -64,6 +65,7 @@ diff --git a/frontend/src/app/features/content/pages/contents/contents-page.component.html b/frontend/src/app/features/content/pages/contents/contents-page.component.html index 8398ec8f1..f05719e43 100644 --- a/frontend/src/app/features/content/pages/contents/contents-page.component.html +++ b/frontend/src/app/features/content/pages/contents/contents-page.component.html @@ -65,6 +65,7 @@
diff --git a/frontend/src/app/features/content/shared/forms/array-editor.component.scss b/frontend/src/app/features/content/shared/forms/array-editor.component.scss index 3bb7d683e..ac3485635 100644 --- a/frontend/src/app/features/content/shared/forms/array-editor.component.scss +++ b/frontend/src/app/features/content/shared/forms/array-editor.component.scss @@ -19,6 +19,14 @@ virtual-scroller { } } +.disabled { + pointer-events: none; + + & { + opacity: .5; + } +} + .static { padding-bottom: .375rem; padding-top: .375rem; diff --git a/frontend/src/app/features/content/shared/list/content.component.html b/frontend/src/app/features/content/shared/list/content.component.html index 103bb687a..b4eaf2e57 100644 --- a/frontend/src/app/features/content/shared/list/content.component.html +++ b/frontend/src/app/features/content/shared/list/content.component.html @@ -23,6 +23,7 @@ diff --git a/frontend/src/app/features/content/shared/references/reference-item.component.html b/frontend/src/app/features/content/shared/references/reference-item.component.html index 386dc88bd..40a37ac88 100644 --- a/frontend/src/app/features/content/shared/references/reference-item.component.html +++ b/frontend/src/app/features/content/shared/references/reference-item.component.html @@ -41,6 +41,7 @@
diff --git a/frontend/src/app/features/dashboard/pages/dashboard-config.component.html b/frontend/src/app/features/dashboard/pages/dashboard-config.component.html index dea02bd87..d87ae9765 100644 --- a/frontend/src/app/features/dashboard/pages/dashboard-config.component.html +++ b/frontend/src/app/features/dashboard/pages/dashboard-config.component.html @@ -1,5 +1,6 @@ diff --git a/frontend/src/app/features/rules/pages/events/rule-event.component.html b/frontend/src/app/features/rules/pages/events/rule-event.component.html index d8bde62bc..0d3520a72 100644 --- a/frontend/src/app/features/rules/pages/events/rule-event.component.html +++ b/frontend/src/app/features/rules/pages/events/rule-event.component.html @@ -13,6 +13,7 @@ diff --git a/frontend/src/app/features/rules/pages/rule/rule-page.component.html b/frontend/src/app/features/rules/pages/rule/rule-page.component.html index 81eb75613..db6a128d6 100644 --- a/frontend/src/app/features/rules/pages/rule/rule-page.component.html +++ b/frontend/src/app/features/rules/pages/rule/rule-page.component.html @@ -5,7 +5,8 @@
- + + diff --git a/frontend/src/app/features/rules/pages/rules/rule.component.html b/frontend/src/app/features/rules/pages/rules/rule.component.html index cf620dca3..d8ebfbc1f 100644 --- a/frontend/src/app/features/rules/pages/rules/rule.component.html +++ b/frontend/src/app/features/rules/pages/rules/rule.component.html @@ -12,7 +12,8 @@
- diff --git a/frontend/src/app/features/rules/pages/simulator/simulated-rule-event.component.html b/frontend/src/app/features/rules/pages/simulator/simulated-rule-event.component.html index 66828e946..f03a30503 100644 --- a/frontend/src/app/features/rules/pages/simulator/simulated-rule-event.component.html +++ b/frontend/src/app/features/rules/pages/simulator/simulated-rule-event.component.html @@ -10,6 +10,7 @@ diff --git a/frontend/src/app/features/schemas/pages/schema/fields/field.component.html b/frontend/src/app/features/schemas/pages/schema/fields/field.component.html index a661a66de..b330c7e38 100644 --- a/frontend/src/app/features/schemas/pages/schema/fields/field.component.html +++ b/frontend/src/app/features/schemas/pages/schema/fields/field.component.html @@ -37,10 +37,12 @@
- diff --git a/frontend/src/app/features/schemas/pages/schema/schema-page.component.html b/frontend/src/app/features/schemas/pages/schema/schema-page.component.html index 26756c00c..66b80d890 100644 --- a/frontend/src/app/features/schemas/pages/schema/schema-page.component.html +++ b/frontend/src/app/features/schemas/pages/schema/schema-page.component.html @@ -41,7 +41,8 @@
- diff --git a/frontend/src/app/features/schemas/pages/schemas/schemas-page.component.html b/frontend/src/app/features/schemas/pages/schemas/schemas-page.component.html index ef16d6a38..fb064ff8a 100644 --- a/frontend/src/app/features/schemas/pages/schemas/schemas-page.component.html +++ b/frontend/src/app/features/schemas/pages/schemas/schemas-page.component.html @@ -4,7 +4,12 @@
-
diff --git a/frontend/src/app/features/settings/pages/languages/language.component.html b/frontend/src/app/features/settings/pages/languages/language.component.html index 850a2da06..aa664bbbb 100644 --- a/frontend/src/app/features/settings/pages/languages/language.component.html +++ b/frontend/src/app/features/settings/pages/languages/language.component.html @@ -9,6 +9,7 @@
diff --git a/frontend/src/app/features/settings/pages/roles/role.component.html b/frontend/src/app/features/settings/pages/roles/role.component.html index 9eed58ab6..0b5f5d76f 100644 --- a/frontend/src/app/features/settings/pages/roles/role.component.html +++ b/frontend/src/app/features/settings/pages/roles/role.component.html @@ -16,6 +16,7 @@
diff --git a/frontend/src/app/features/settings/pages/workflows/workflow.component.html b/frontend/src/app/features/settings/pages/workflows/workflow.component.html index 8e8960707..ec9a6144b 100644 --- a/frontend/src/app/features/settings/pages/workflows/workflow.component.html +++ b/frontend/src/app/features/settings/pages/workflows/workflow.component.html @@ -15,6 +15,7 @@
diff --git a/frontend/src/app/framework/angular/forms/editable-title.component.html b/frontend/src/app/framework/angular/forms/editable-title.component.html index d33e926e0..f6d9aad5e 100644 --- a/frontend/src/app/framework/angular/forms/editable-title.component.html +++ b/frontend/src/app/framework/angular/forms/editable-title.component.html @@ -8,12 +8,14 @@
-
-
diff --git a/frontend/src/app/framework/angular/forms/editable-title.component.ts b/frontend/src/app/framework/angular/forms/editable-title.component.ts index da1595751..0773d53ce 100644 --- a/frontend/src/app/framework/angular/forms/editable-title.component.ts +++ b/frontend/src/app/framework/angular/forms/editable-title.component.ts @@ -9,6 +9,7 @@ import { NgIf } from '@angular/common'; import { booleanAttribute, Component, EventEmitter, Input, numberAttribute, Output } from '@angular/core'; import { FormControl, FormsModule, ReactiveFormsModule, ValidatorFn, Validators } from '@angular/forms'; import { Keys } from '@app/framework/internal'; +import { TranslatePipe } from '../pipes/translate.pipe'; import { ControlErrorsComponent } from './control-errors.component'; import { FocusOnInitDirective } from './focus-on-init.directive'; @@ -23,6 +24,7 @@ import { FocusOnInitDirective } from './focus-on-init.directive'; FormsModule, NgIf, ReactiveFormsModule, + TranslatePipe, ], }) export class EditableTitleComponent { diff --git a/frontend/src/app/framework/angular/forms/editors/toggle.component.html b/frontend/src/app/framework/angular/forms/editors/toggle.component.html index 51e03c888..f897ec4c4 100644 --- a/frontend/src/app/framework/angular/forms/editors/toggle.component.html +++ b/frontend/src/app/framework/angular/forms/editors/toggle.component.html @@ -1,4 +1,5 @@
diff --git a/frontend/src/app/framework/angular/layout.component.html b/frontend/src/app/framework/angular/layout.component.html index 18f012642..ffaa498f5 100644 --- a/frontend/src/app/framework/angular/layout.component.html +++ b/frontend/src/app/framework/angular/layout.component.html @@ -49,7 +49,8 @@
- diff --git a/frontend/src/app/framework/angular/modals/modal-dialog.component.html b/frontend/src/app/framework/angular/modals/modal-dialog.component.html index 267e5de19..d43603e00 100644 --- a/frontend/src/app/framework/angular/modals/modal-dialog.component.html +++ b/frontend/src/app/framework/angular/modals/modal-dialog.component.html @@ -1,4 +1,4 @@ -