From 80b83b549cb2cce628b2a56abcec059927c612e0 Mon Sep 17 00:00:00 2001 From: Sebastian Stehle Date: Mon, 28 Nov 2022 19:21:59 +0100 Subject: [PATCH] Graphql fixes2 (#944) * Fix referencing queries and improve tests. * Another test. * Tests fixed. * Fix inputs * A few fixes * GraphQL subscription tests * Remove log. * Fix asset-selector naming. --- .../Contents/ContentsSharedController.cs | 2 - .../src/Squidex/wwwroot/scripts/editor-sdk.js | 51 +- .../TestSuite.ApiTests/AssetTests.cs | 2 +- .../GraphQLSubscriptionTests.cs | 144 +++ .../TestSuite.ApiTests.csproj | 2 + frontend/package-lock.json | 11 +- frontend/package.json | 2 +- frontend/src/app/_theme.html | 22 +- .../pages/users/user-page.component.html | 2 +- .../pages/asset-tag-dialog.component.html | 2 +- .../shared/forms/assets-editor.component.html | 2 +- .../shared/forms/field-editor.component.html | 11 +- .../shared/forms/iframe-editor.component.html | 17 +- .../shared/forms/iframe-editor.component.scss | 11 + .../shared/forms/iframe-editor.component.ts | 43 +- .../forms/stock-photo-editor.component.html | 2 +- .../content-changed-trigger.component.html | 2 +- .../common/schema-edit-form.component.html | 6 +- .../schema/fields/field-wizard.component.html | 2 +- .../forms/field-form-common.component.html | 6 +- .../fields/forms/field-form.component.html | 2 +- .../fields/types/boolean-ui.component.html | 2 +- .../fields/types/date-time-ui.component.html | 4 +- .../fields/types/number-ui.component.html | 2 +- .../fields/types/string-ui.component.html | 2 +- .../types/string-validation.component.html | 8 +- .../fields/types/tags-ui.component.html | 2 +- .../schema-preview-urls-form.component.html | 4 +- .../schema-field-rules-form.component.html | 2 +- .../pages/schemas/schema-form.component.html | 2 +- .../clients/client-add-form.component.html | 2 +- .../pages/more/more-page.component.html | 6 +- .../pages/roles/role-add-form.component.html | 2 +- .../settings/settings-page.component.html | 10 +- .../workflow-add-form.component.html | 2 +- .../teams/pages/more/more-page.component.html | 2 +- .../forms/editable-title.component.html | 2 +- .../forms/editors/autocomplete.component.html | 2 +- .../editors/date-time-editor.component.html | 4 +- .../forms/editors/dropdown.component.html | 2 +- .../forms/editors/tag-editor.component.html | 2 +- .../shared/components/app-form.component.html | 2 +- .../assets/asset-dialog.component.html | 8 +- .../assets/asset-folder-dialog.component.html | 2 +- ...ent.html => asset-selector.component.html} | 0 ...ent.scss => asset-selector.component.scss} | 0 ...mponent.ts => asset-selector.component.ts} | 8 +- .../content-value-editor.component.html | 4 +- .../forms/geolocation-editor.component.html | 2 +- .../forms/markdown-editor.component.html | 4 +- .../forms/rich-editor.component.html | 4 +- .../references/content-selector.component.ts | 11 +- .../references/reference-input.component.html | 2 +- .../queries/filter-comparison.component.html | 4 +- .../search/search-form.component.html | 2 +- .../components/team-form.component.html | 2 +- frontend/src/app/shared/declarations.ts | 2 +- frontend/src/app/shared/module.ts | 6 +- frontend/src/app/theme/_bootstrap.scss | 10 + frontend/src/app/theme/icomoon/demo.html | 1034 ++++++++--------- 60 files changed, 886 insertions(+), 629 deletions(-) create mode 100644 backend/tools/TestSuite/TestSuite.ApiTests/GraphQLSubscriptionTests.cs rename frontend/src/app/shared/components/assets/{assets-selector.component.html => asset-selector.component.html} (100%) rename frontend/src/app/shared/components/assets/{assets-selector.component.scss => asset-selector.component.scss} (100%) rename frontend/src/app/shared/components/assets/{assets-selector.component.ts => asset-selector.component.ts} (91%) diff --git a/backend/src/Squidex/Areas/Api/Controllers/Contents/ContentsSharedController.cs b/backend/src/Squidex/Areas/Api/Controllers/Contents/ContentsSharedController.cs index d70edfd7a..7c7e74f1f 100644 --- a/backend/src/Squidex/Areas/Api/Controllers/Contents/ContentsSharedController.cs +++ b/backend/src/Squidex/Areas/Api/Controllers/Contents/ContentsSharedController.cs @@ -43,8 +43,6 @@ public sealed class ContentsSharedController : ApiController /// /// You can read the generated documentation for your app at /api/content/{appName}/docs. /// - [HttpGet] - [HttpPost] [Route("content/{app}/graphql/")] [Route("content/{app}/graphql/batch")] [ApiPermissionOrAnonymous] diff --git a/backend/src/Squidex/wwwroot/scripts/editor-sdk.js b/backend/src/Squidex/wwwroot/scripts/editor-sdk.js index cbf082c45..e0d131830 100644 --- a/backend/src/Squidex/wwwroot/scripts/editor-sdk.js +++ b/backend/src/Squidex/wwwroot/scripts/editor-sdk.js @@ -39,6 +39,20 @@ function isFunction(value) { return typeof value === 'function'; } +function isArrayOfStrings(value) { + if (!Array.isArray(value)) { + return false; + } + + for (var i = 0; i < value.length; i++) { + if (!isString(value[i])) { + return false; + } + } + + return true; +} + function SquidexPlugin() { var initHandler; var initCalled = false; @@ -82,7 +96,7 @@ function SquidexPlugin() { var editor = { /** - * Get the current value. + * Get the current context. */ getContext: function () { return context; @@ -140,13 +154,13 @@ function SquidexPlugin() { }; return editor; - } function SquidexFormField() { var context; var currentConfirm; var currentPickAssets; + var currentPickContents; var disabled = false; var disabledHandler; var formValue; @@ -218,6 +232,8 @@ function SquidexFormField() { if (event.source !== window) { var type = event.data.type; + console.log('Received Message: ' + type); + if (type === 'disabled') { var newDisabled = event.data.isDisabled; @@ -278,6 +294,14 @@ function SquidexFormField() { currentPickAssets.callback(event.data.result); } } + } else if (type === 'pickContentsResult') { + var correlationId = event.data.correlationId; + + if (currentPickContents && currentPickContents.correlationId === correlationId) { + if (typeof currentPickContents.callback === 'function') { + currentPickContents.callback(event.data.result); + } + } } } } @@ -462,6 +486,29 @@ function SquidexFormField() { } }, + /** + * Shows the dialog to pick assets. + * + * @param {string} schemas: The list of schema names. + * @param {function} callback The callback to invoke when the dialog is completed or closed. + */ + pickContents: function (schemas, callback) { + if (!isFunction(callback) || !isArrayOfStrings(schemas)) { + return; + } + + var correlationId = new Date().getTime().toString(); + + currentPickContents = { + correlationId: correlationId, + callback: callback + }; + + if (window.parent) { + window.parent.postMessage({ type: 'pickContents', correlationId: correlationId, schemas: schemas }, '*'); + } + }, + /** * Register an function that is called when the field is initialized. * diff --git a/backend/tools/TestSuite/TestSuite.ApiTests/AssetTests.cs b/backend/tools/TestSuite/TestSuite.ApiTests/AssetTests.cs index 5ac338422..94e6ff23d 100644 --- a/backend/tools/TestSuite/TestSuite.ApiTests/AssetTests.cs +++ b/backend/tools/TestSuite/TestSuite.ApiTests/AssetTests.cs @@ -762,7 +762,7 @@ public class AssetTests : IClassFixture if (remaining < buffer.Length) { - buffer = buffer[..(int)remaining]; + buffer = buffer[.. (int)remaining]; } var bytesRead = await base.ReadAsync(buffer, cancellationToken); diff --git a/backend/tools/TestSuite/TestSuite.ApiTests/GraphQLSubscriptionTests.cs b/backend/tools/TestSuite/TestSuite.ApiTests/GraphQLSubscriptionTests.cs new file mode 100644 index 000000000..d8556a9b7 --- /dev/null +++ b/backend/tools/TestSuite/TestSuite.ApiTests/GraphQLSubscriptionTests.cs @@ -0,0 +1,144 @@ +// ========================================================================== +// Squidex Headless CMS +// ========================================================================== +// Copyright (c) Squidex UG (haftungsbeschraenkt) +// All rights reserved. Licensed under the MIT license. +// ========================================================================== + +using System; +using System.Reactive.Linq; +using GraphQL; +using GraphQL.Client.Http; +using GraphQL.Client.Serializer.Newtonsoft; +using Squidex.ClientLibrary; +using Squidex.ClientLibrary.Management; +using TestSuite.Model; + +namespace TestSuite.ApiTests; + +#pragma warning disable SA1300 // Element should begin with upper-case letter +#pragma warning disable SA1507 // Code should not contain multiple blank lines in a row + +public class GraphQLSubscriptionTests : IClassFixture +{ + public ContentFixture _ { get; set; } + + public GraphQLSubscriptionTests(ContentFixture fixture) + { + _ = fixture; + } + + private sealed class ContentChangesResult + { + public ContentChanges ContentChanges { get; set; } + } + + private sealed class ContentChanges + { + public string Id { get; set; } + } + + private sealed class AssetChangesResult + { + public AssetChanges AssetChanges { get; set; } + } + + private sealed class AssetChanges + { + public string Id { get; set; } + } + + [Fact] + public async Task Should_listen_to_content_changes() + { + var client = await CreateClient(); + + + // STEP 1: Subscribe to changes. + var contentChanges = new GraphQLRequest + { + Query = @" + subscription { + contentChanges { + id + } + }" + }; + + var contentId = Guid.NewGuid().ToString(); + + var subscriptionStream + = client.CreateSubscriptionStream(contentChanges); + + var publishedContent = + subscriptionStream.Where(x => x.Data.ContentChanges.Id == contentId).Timeout(TimeSpan.FromSeconds(30)) + .FirstOrDefaultAsync(); + + + // STEP 2: Create Content. + await _.Contents.CreateAsync(new TestEntityData(), new ContentCreateOptions { Id = contentId }); + + + // STEP 3: Wait for publication. + var publishedResult = await publishedContent; + + Assert.Equal(contentId, publishedResult.Data.ContentChanges.Id); + } + + [Fact] + public async Task Should_listen_to_asset_changes() + { + var client = await CreateClient(); + + + // STEP 1: Subscribe to changes. + var assetChanges = new GraphQLRequest + { + Query = @" + subscription { + assetChanges { + id + } + }" + }; + + var assetId = Guid.NewGuid().ToString(); + + var subscriptionStream + = client.CreateSubscriptionStream(assetChanges); + + var publishedAsset = + subscriptionStream.Where(x => x.Data.AssetChanges.Id == assetId).Timeout(TimeSpan.FromSeconds(30)) + .FirstOrDefaultAsync(); + + + // STEP 2: Create asset. + var fileParameter = FileParameter.FromPath("Assets/SampleVideo_1280x720_1mb.mp4"); + + await using (fileParameter.Data) + { + await _.Assets.UploadAssetAsync(_.AppName, fileParameter, new AssetUploadOptions { Id = assetId }); + } + + // STEP 3: Wait for publication. + var publishedResult = await publishedAsset; + + Assert.Equal(assetId, publishedResult.Data.AssetChanges.Id); + } + + private async Task CreateClient() + { + var accessToken = await _.ClientManager.Options.Authenticator.GetBearerTokenAsync(_.AppName, default); + + var options = new GraphQLHttpClientOptions + { + EndPoint = new Uri(_.ClientManager.GenerateUrl($"/api/content/{_.AppName}/graphql?access_token={accessToken}")) + }; + + var client = new GraphQLHttpClient(options, new NewtonsoftJsonSerializer()); + + await client.InitializeWebsocketConnection(); + + return client; + } +} diff --git a/backend/tools/TestSuite/TestSuite.ApiTests/TestSuite.ApiTests.csproj b/backend/tools/TestSuite/TestSuite.ApiTests/TestSuite.ApiTests.csproj index 3704b228d..81af41129 100644 --- a/backend/tools/TestSuite/TestSuite.ApiTests/TestSuite.ApiTests.csproj +++ b/backend/tools/TestSuite/TestSuite.ApiTests/TestSuite.ApiTests.csproj @@ -15,6 +15,8 @@ + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/frontend/package-lock.json b/frontend/package-lock.json index b42d8d7b3..c711cd748 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -28,7 +28,7 @@ "angular-mentions": "1.5.0", "angular2-chartjs": "0.5.1", "babel-polyfill": "6.26.0", - "bootstrap": "5.2.2", + "bootstrap": "5.2.3", "core-js": "3.25.5", "cropperjs": "2.0.0-alpha.1", "date-fns": "2.29.3", @@ -14773,7 +14773,9 @@ "license": "ISC" }, "node_modules/bootstrap": { - "version": "5.2.2", + "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", @@ -14784,7 +14786,6 @@ "url": "https://opencollective.com/bootstrap" } ], - "license": "MIT", "peerDependencies": { "@popperjs/core": "^2.11.6" } @@ -42433,7 +42434,9 @@ "dev": true }, "bootstrap": { - "version": "5.2.2", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.2.3.tgz", + "integrity": "sha512-cEKPM+fwb3cT8NzQZYEu4HilJ3anCrWqh3CHAok1p9jXqMPsPTBhU25fBckEJHJ/p+tTxTFTsFQGM+gaHpi3QQ==", "requires": {} }, "boxen": { diff --git a/frontend/package.json b/frontend/package.json index 725aa8c7e..5cb636266 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -35,7 +35,7 @@ "angular-mentions": "1.5.0", "angular2-chartjs": "0.5.1", "babel-polyfill": "6.26.0", - "bootstrap": "5.2.2", + "bootstrap": "5.2.3", "core-js": "3.25.5", "cropperjs": "2.0.0-alpha.1", "date-fns": "2.29.3", diff --git a/frontend/src/app/_theme.html b/frontend/src/app/_theme.html index 4c2ee6fca..4699dec0e 100644 --- a/frontend/src/app/_theme.html +++ b/frontend/src/app/_theme.html @@ -100,7 +100,7 @@
- +
@@ -131,7 +131,7 @@
- +
@@ -676,19 +676,19 @@
- +
- +
- +
Success! You've done it.
@@ -696,7 +696,7 @@
- +
Shucks, try again.
@@ -708,13 +708,13 @@
You have entered an invalid value.
- +
- +
The app name cannot be changed later. @@ -730,7 +730,7 @@
- +
@@ -745,7 +745,7 @@
$ - .00 @@ -758,7 +758,7 @@
- diff --git a/frontend/src/app/features/administration/pages/users/user-page.component.html b/frontend/src/app/features/administration/pages/users/user-page.component.html index a8c9b271a..770417c9c 100644 --- a/frontend/src/app/features/administration/pages/users/user-page.component.html +++ b/frontend/src/app/features/administration/pages/users/user-page.component.html @@ -46,7 +46,7 @@ - +
diff --git a/frontend/src/app/features/assets/pages/asset-tag-dialog.component.html b/frontend/src/app/features/assets/pages/asset-tag-dialog.component.html index 271c3dafb..1514b5f4e 100644 --- a/frontend/src/app/features/assets/pages/asset-tag-dialog.component.html +++ b/frontend/src/app/features/assets/pages/asset-tag-dialog.component.html @@ -12,7 +12,7 @@ - +
diff --git a/frontend/src/app/features/content/shared/forms/assets-editor.component.html b/frontend/src/app/features/content/shared/forms/assets-editor.component.html index 67563ca28..d6b4293d5 100644 --- a/frontend/src/app/features/content/shared/forms/assets-editor.component.html +++ b/frontend/src/app/features/content/shared/forms/assets-editor.component.html @@ -80,5 +80,5 @@
- + \ No newline at end of file diff --git a/frontend/src/app/features/content/shared/forms/field-editor.component.html b/frontend/src/app/features/content/shared/forms/field-editor.component.html index 36a05dfe5..25f938123 100644 --- a/frontend/src/app/features/content/shared/forms/field-editor.component.html +++ b/frontend/src/app/features/content/shared/forms/field-editor.component.html @@ -28,13 +28,14 @@ + [language]="language" + [languages]="languages"> @@ -173,10 +174,10 @@ - + - + diff --git a/frontend/src/app/features/content/shared/forms/iframe-editor.component.html b/frontend/src/app/features/content/shared/forms/iframe-editor.component.html index ab6c6619c..424a9e513 100644 --- a/frontend/src/app/features/content/shared/forms/iframe-editor.component.html +++ b/frontend/src/app/features/content/shared/forms/iframe-editor.component.html @@ -1,11 +1,20 @@
-
- +
+
- - + + + + + + diff --git a/frontend/src/app/features/content/shared/forms/iframe-editor.component.scss b/frontend/src/app/features/content/shared/forms/iframe-editor.component.scss index 25d1dafdc..7fe08d916 100644 --- a/frontend/src/app/features/content/shared/forms/iframe-editor.component.scss +++ b/frontend/src/app/features/content/shared/forms/iframe-editor.component.scss @@ -17,4 +17,15 @@ iframe { iframe { height: 100% !important; } +} + +.expanded { + @include absolute(50px, 0, 0, 0); + overflow: hidden; + + iframe { + height: 100% !important; + overflow-x: auto !important; + overflow-y: auto !important; + } } \ No newline at end of file diff --git a/frontend/src/app/features/content/shared/forms/iframe-editor.component.ts b/frontend/src/app/features/content/shared/forms/iframe-editor.component.ts index 43557f693..5bdc3f411 100644 --- a/frontend/src/app/features/content/shared/forms/iframe-editor.component.ts +++ b/frontend/src/app/features/content/shared/forms/iframe-editor.component.ts @@ -9,7 +9,7 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Even import { AbstractControl } from '@angular/forms'; import { Router } from '@angular/router'; import { DialogModel, DialogService, disabled$, StatefulComponent, Types, value$ } from '@app/framework'; -import { AppsState, AssetDto, computeEditorUrl } from '@app/shared'; +import { AppLanguageDto, AppsState, AssetDto, computeEditorUrl, ContentDto } from '@app/shared'; interface State { // True, when the editor is shown as fullscreen. @@ -17,7 +17,7 @@ interface State { } @Component({ - selector: 'sqx-iframe-editor[context][formField][formIndex][formValue][formControlBinding]', + selector: 'sqx-iframe-editor[context][formField][formIndex][formValue][formControlBinding][language][languages]', styleUrls: ['./iframe-editor.component.scss'], templateUrl: './iframe-editor.component.html', changeDetection: ChangeDetectionStrategy.OnPush, @@ -26,7 +26,6 @@ export class IFrameEditorComponent extends StatefulComponent implements O private value: any; private isInitialized = false; private isDisabled = false; - private assetsCorrelationId: any; @ViewChild('iframe', { static: false }) public iframe!: ElementRef; @@ -38,10 +37,10 @@ export class IFrameEditorComponent extends StatefulComponent implements O public inner!: ElementRef; @Output() - public expandedChange = new EventEmitter(); + public isExpandedChange = new EventEmitter(); @Input() - public expanded = false; + public isExpanded = false; @Input() public context: any = {}; @@ -56,7 +55,10 @@ export class IFrameEditorComponent extends StatefulComponent implements O public formIndex?: number | null; @Input() - public language?: string | null; + public language!: AppLanguageDto; + + @Input() + public languages!: ReadonlyArray; @Input() public formControlBinding!: AbstractControl; @@ -73,8 +75,13 @@ export class IFrameEditorComponent extends StatefulComponent implements O public computedUrl = ''; + public assetsCorrelationId: any; public assetsDialog = new DialogModel(); + public contentsCorrelationId: any; + public contentsSchemas?: string[]; + public contentsDialog = new DialogModel(); + constructor(changeDetector: ChangeDetectorRef, private readonly appsState: AppsState, private readonly dialogs: DialogService, @@ -161,8 +168,8 @@ export class IFrameEditorComponent extends StatefulComponent implements O } else if (type === 'expanded') { const { mode } = event.data; - if (mode !== this.expanded) { - this.expandedChange.emit(); + if (mode !== this.isExpanded) { + this.isExpandedChange.emit(); } } else if (type === 'valueChanged') { const { value } = event.data; @@ -201,6 +208,14 @@ export class IFrameEditorComponent extends StatefulComponent implements O this.assetsCorrelationId = correlationId; this.assetsDialog.show(); } + } else if (type === 'pickContents') { + const { correlationId, schemas } = event.data; + + if (correlationId) { + this.contentsCorrelationId = correlationId; + this.contentsSchemas = schemas; + this.contentsDialog.show(); + } } this.detectChanges(); @@ -217,6 +232,16 @@ export class IFrameEditorComponent extends StatefulComponent implements O this.assetsDialog.hide(); } + public pickContents(contents: ReadonlyArray) { + if (this.contentsCorrelationId) { + this.sendMessage('pickContentsResult', { correlationId: this.contentsCorrelationId, result: contents }); + + this.contentsCorrelationId = null; + } + + this.contentsDialog.hide(); + } + public updateValue(obj: any) { if (!Types.equals(obj, this.value)) { this.value = obj; @@ -250,7 +275,7 @@ export class IFrameEditorComponent extends StatefulComponent implements O } private sendExpanded() { - this.sendMessage('expandedChanged', { expanded: this.expanded }); + this.sendMessage('expandedChanged', { expanded: this.isExpanded }); } private sendDisabled() { diff --git a/frontend/src/app/features/content/shared/forms/stock-photo-editor.component.html b/frontend/src/app/features/content/shared/forms/stock-photo-editor.component.html index 6427ba248..1803fbaa4 100644 --- a/frontend/src/app/features/content/shared/forms/stock-photo-editor.component.html +++ b/frontend/src/app/features/content/shared/forms/stock-photo-editor.component.html @@ -8,7 +8,7 @@ - +
diff --git a/frontend/src/app/features/rules/shared/triggers/content-changed-trigger.component.html b/frontend/src/app/features/rules/shared/triggers/content-changed-trigger.component.html index 9f4108a4e..67275eb43 100644 --- a/frontend/src/app/features/rules/shared/triggers/content-changed-trigger.component.html +++ b/frontend/src/app/features/rules/shared/triggers/content-changed-trigger.component.html @@ -21,7 +21,7 @@ {{triggerSchema.schema.displayName}} - - +
@@ -15,7 +15,7 @@ - + {{ 'schemas.schemaLabelHint' | sqxTranslate }}
@@ -25,7 +25,7 @@ - + {{ 'schemas.schemaHintsHint' | sqxTranslate }}
diff --git a/frontend/src/app/features/schemas/pages/schema/fields/field-wizard.component.html b/frontend/src/app/features/schemas/pages/schema/fields/field-wizard.component.html index 693c79721..71e30dbaf 100644 --- a/frontend/src/app/features/schemas/pages/schema/fields/field-wizard.component.html +++ b/frontend/src/app/features/schemas/pages/schema/fields/field-wizard.component.html @@ -53,7 +53,7 @@
- +
diff --git a/frontend/src/app/features/schemas/pages/schema/fields/forms/field-form-common.component.html b/frontend/src/app/features/schemas/pages/schema/fields/forms/field-form-common.component.html index b99b27668..5a1a512aa 100644 --- a/frontend/src/app/features/schemas/pages/schema/fields/forms/field-form-common.component.html +++ b/frontend/src/app/features/schemas/pages/schema/fields/forms/field-form-common.component.html @@ -3,7 +3,7 @@
- + {{ 'schemas.field.nameHint' | sqxTranslate }} @@ -17,7 +17,7 @@
- + {{ 'schemas.field.labelHint' | sqxTranslate }} @@ -31,7 +31,7 @@
- + {{ 'schemas.field.hintsHint' | sqxTranslate }} diff --git a/frontend/src/app/features/schemas/pages/schema/fields/forms/field-form.component.html b/frontend/src/app/features/schemas/pages/schema/fields/forms/field-form.component.html index 24ed6cd0d..3f9ed1771 100644 --- a/frontend/src/app/features/schemas/pages/schema/fields/forms/field-form.component.html +++ b/frontend/src/app/features/schemas/pages/schema/fields/forms/field-form.component.html @@ -60,6 +60,6 @@
-
+
\ No newline at end of file diff --git a/frontend/src/app/features/schemas/pages/schema/fields/types/boolean-ui.component.html b/frontend/src/app/features/schemas/pages/schema/fields/types/boolean-ui.component.html index 7d5d16529..855cad2e6 100644 --- a/frontend/src/app/features/schemas/pages/schema/fields/types/boolean-ui.component.html +++ b/frontend/src/app/features/schemas/pages/schema/fields/types/boolean-ui.component.html @@ -3,7 +3,7 @@
- + {{ 'schemas.field.placeholderHint' | sqxTranslate }} diff --git a/frontend/src/app/features/schemas/pages/schema/fields/types/date-time-ui.component.html b/frontend/src/app/features/schemas/pages/schema/fields/types/date-time-ui.component.html index e57c9a606..4062c8dc2 100644 --- a/frontend/src/app/features/schemas/pages/schema/fields/types/date-time-ui.component.html +++ b/frontend/src/app/features/schemas/pages/schema/fields/types/date-time-ui.component.html @@ -3,7 +3,7 @@
- + {{ 'schemas.field.placeholderHint' | sqxTranslate }} @@ -14,7 +14,7 @@
- + diff --git a/frontend/src/app/features/schemas/pages/schema/fields/types/number-ui.component.html b/frontend/src/app/features/schemas/pages/schema/fields/types/number-ui.component.html index f4b0fa537..010e606c5 100644 --- a/frontend/src/app/features/schemas/pages/schema/fields/types/number-ui.component.html +++ b/frontend/src/app/features/schemas/pages/schema/fields/types/number-ui.component.html @@ -3,7 +3,7 @@
- + {{ 'schemas.field.placeholderHint' | sqxTranslate }} diff --git a/frontend/src/app/features/schemas/pages/schema/fields/types/string-ui.component.html b/frontend/src/app/features/schemas/pages/schema/fields/types/string-ui.component.html index b9d367ccb..2fb8c2afd 100644 --- a/frontend/src/app/features/schemas/pages/schema/fields/types/string-ui.component.html +++ b/frontend/src/app/features/schemas/pages/schema/fields/types/string-ui.component.html @@ -3,7 +3,7 @@
- + {{ 'schemas.field.placeholderHint' | sqxTranslate }} diff --git a/frontend/src/app/features/schemas/pages/schema/fields/types/string-validation.component.html b/frontend/src/app/features/schemas/pages/schema/fields/types/string-validation.component.html index df50a2b55..28f183503 100644 --- a/frontend/src/app/features/schemas/pages/schema/fields/types/string-validation.component.html +++ b/frontend/src/app/features/schemas/pages/schema/fields/types/string-validation.component.html @@ -32,7 +32,7 @@
- + @@ -57,7 +57,7 @@
- +
@@ -119,7 +119,7 @@
- +
@@ -127,7 +127,7 @@
- + {{ 'schemas.field.defaultValuesHint' | sqxTranslate }} diff --git a/frontend/src/app/features/schemas/pages/schema/fields/types/tags-ui.component.html b/frontend/src/app/features/schemas/pages/schema/fields/types/tags-ui.component.html index e860e4a5c..501933cf0 100644 --- a/frontend/src/app/features/schemas/pages/schema/fields/types/tags-ui.component.html +++ b/frontend/src/app/features/schemas/pages/schema/fields/types/tags-ui.component.html @@ -3,7 +3,7 @@
- + {{ 'schemas.field.placeholderHint' | sqxTranslate }} diff --git a/frontend/src/app/features/schemas/pages/schema/preview/schema-preview-urls-form.component.html b/frontend/src/app/features/schemas/pages/schema/preview/schema-preview-urls-form.component.html index 486ad568f..9e6cbe85b 100644 --- a/frontend/src/app/features/schemas/pages/schema/preview/schema-preview-urls-form.component.html +++ b/frontend/src/app/features/schemas/pages/schema/preview/schema-preview-urls-form.component.html @@ -16,13 +16,13 @@
- +
- +
diff --git a/frontend/src/app/features/schemas/pages/schema/rules/schema-field-rules-form.component.html b/frontend/src/app/features/schemas/pages/schema/rules/schema-field-rules-form.component.html index 2b1f1b69f..176d13416 100644 --- a/frontend/src/app/features/schemas/pages/schema/rules/schema-field-rules-form.component.html +++ b/frontend/src/app/features/schemas/pages/schema/rules/schema-field-rules-form.component.html @@ -32,7 +32,7 @@
- +
diff --git a/frontend/src/app/features/schemas/pages/schemas/schema-form.component.html b/frontend/src/app/features/schemas/pages/schemas/schema-form.component.html index 391aecc0d..b1c06ce2c 100644 --- a/frontend/src/app/features/schemas/pages/schemas/schema-form.component.html +++ b/frontend/src/app/features/schemas/pages/schemas/schema-form.component.html @@ -18,7 +18,7 @@ - + {{ 'schemas.schemaNameHint' | sqxTranslate }} diff --git a/frontend/src/app/features/settings/pages/clients/client-add-form.component.html b/frontend/src/app/features/settings/pages/clients/client-add-form.component.html index f54cf393e..248cfc4d4 100644 --- a/frontend/src/app/features/settings/pages/clients/client-add-form.component.html +++ b/frontend/src/app/features/settings/pages/clients/client-add-form.component.html @@ -6,7 +6,7 @@
- +
diff --git a/frontend/src/app/features/settings/pages/roles/role-add-form.component.html b/frontend/src/app/features/settings/pages/roles/role-add-form.component.html index a72f6fcd3..90ec68db3 100644 --- a/frontend/src/app/features/settings/pages/roles/role-add-form.component.html +++ b/frontend/src/app/features/settings/pages/roles/role-add-form.component.html @@ -7,7 +7,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 a6af55ddd..b3eb41977 100644 --- a/frontend/src/app/framework/angular/forms/editable-title.component.html +++ b/frontend/src/app/framework/angular/forms/editable-title.component.html @@ -5,7 +5,7 @@
- +
diff --git a/frontend/src/app/framework/angular/forms/editors/autocomplete.component.html b/frontend/src/app/framework/angular/forms/editors/autocomplete.component.html index 7a1cce8cc..c454fc03b 100644 --- a/frontend/src/app/framework/angular/forms/editors/autocomplete.component.html +++ b/frontend/src/app/framework/angular/forms/editors/autocomplete.component.html @@ -1,5 +1,5 @@
-
- - +
@@ -118,7 +118,7 @@ - +
@@ -33,12 +33,12 @@ icon-wrap_text
- - + +
liga: - +
@@ -47,12 +47,12 @@ icon-fullscreen_exit
- - + +
liga: - +
@@ -61,12 +61,12 @@ icon-fullscreen
- - + +
liga: - +
@@ -75,12 +75,12 @@ icon-enter
- - + +
liga: - +
@@ -89,12 +89,12 @@ icon-zoom_out
- - + +
liga: - +
@@ -103,12 +103,12 @@ icon-zoom_in
- - + +
liga: - +
@@ -117,12 +117,12 @@ icon-flip
- - + +
liga: - +
@@ -131,12 +131,12 @@ icon-rotate_right
- - + +
liga: - +
@@ -145,12 +145,12 @@ icon-rotate_left
- - + +
liga: - +
@@ -159,12 +159,12 @@ icon-create_new_folder
- - + +
liga: - +
@@ -173,12 +173,12 @@ icon-folder
- - + +
liga: - +
@@ -187,12 +187,12 @@ icon-help2
- - + +
liga: - +
@@ -201,12 +201,12 @@ icon-trigger-Manual
- - + +
liga: - +
@@ -215,12 +215,12 @@ icon-play-line
- - + +
liga: - +
@@ -229,12 +229,12 @@ icon-corner-down-right
- - + +
liga: - +
@@ -243,12 +243,12 @@ icon-info-outline
- - + +
liga: - +
@@ -257,12 +257,12 @@ icon-upload-2
- - + +
liga: - +
@@ -271,12 +271,12 @@ icon-translate
- - + +
liga: - +
@@ -285,12 +285,12 @@ icon-arrow_back
- - + +
liga: - +
@@ -299,12 +299,12 @@ icon-external-link
- - + +
liga: - +
@@ -313,12 +313,12 @@ icon-minus-square
- - + +
liga: - +
@@ -327,12 +327,12 @@ icon-plus-square
- - + +
liga: - +
@@ -341,12 +341,12 @@ icon-drag2
- - + +
liga: - +
@@ -355,12 +355,12 @@ icon-comments
- - + +
liga: - +
@@ -369,12 +369,12 @@ icon-backup
- - + +
liga: - +
@@ -383,12 +383,12 @@ icon-support
- - + +
liga: - +
@@ -397,12 +397,12 @@ icon-control-RichText
- - + +
liga: - +
@@ -411,12 +411,12 @@ icon-download
- - + +
liga: - +
@@ -428,12 +428,12 @@ icon-backups
- - + +
liga: - +
@@ -442,12 +442,12 @@ icon-clients
- - + +
liga: - +
@@ -456,12 +456,12 @@ icon-contributors
- - + +
liga: - +
@@ -470,12 +470,12 @@ icon-languages
- - + +
liga: - +
@@ -484,12 +484,12 @@ icon-patterns
- - + +
liga: - +
@@ -498,12 +498,12 @@ icon-roles
- - + +
liga: - +
@@ -512,12 +512,12 @@ icon-subscription
- - + +
liga: - +
@@ -526,12 +526,12 @@ icon-workflows
- - + +
liga: - +
@@ -540,12 +540,12 @@ icon-component
- - + +
liga: - +
@@ -554,12 +554,12 @@ icon-plugin
- - + +
liga: - +
@@ -568,12 +568,12 @@ icon-angle-double-right
- - + +
liga: - +
@@ -582,12 +582,12 @@ icon-angle-double-left
- - + +
liga: - +
@@ -596,12 +596,12 @@ icon-filter-filled
- - + +
liga: - +
@@ -610,12 +610,12 @@ icon-clone
- - + +
liga: - +
@@ -624,12 +624,12 @@ icon-control-Tags
- - + +
liga: - +
@@ -638,12 +638,12 @@ icon-control-Checkboxes
- - + +
liga: - +
@@ -652,12 +652,12 @@ icon-control-List
- - + +
liga: - +
@@ -666,12 +666,12 @@ icon-control-Html
- - + +
liga: - +
@@ -680,12 +680,12 @@ icon-single-content
- - + +
liga: - +
@@ -694,12 +694,12 @@ icon-search-Content
- - + +
liga: - +
@@ -708,12 +708,12 @@ icon-type-Component
- - + +
liga: - +
@@ -722,12 +722,12 @@ icon-multiple-content
- - + +
liga: - +
@@ -736,12 +736,12 @@ icon-type-Components
- - + +
liga: - +
@@ -750,12 +750,12 @@ icon-type-Array
- - + +
liga: - +
@@ -764,12 +764,12 @@ icon-exclamation
- - + +
liga: - +
@@ -778,12 +778,12 @@ icon-orleans
- - + +
liga: - +
@@ -792,12 +792,12 @@ icon-document-lock
- - + +
liga: - +
@@ -806,12 +806,12 @@ icon-document-unpublish
- - + +
liga: - +
@@ -820,12 +820,12 @@ icon-angle-down
- - + +
liga: - +
@@ -834,12 +834,12 @@ icon-angle-left
- - + +
liga: - +
@@ -848,12 +848,12 @@ icon-angle-right
- - + +
liga: - +
@@ -862,12 +862,12 @@ icon-angle-up
- - + +
liga: - +
@@ -876,12 +876,12 @@ icon-api
- - + +
liga: - +
@@ -890,12 +890,12 @@ icon-assets
- - + +
liga: - +
@@ -904,12 +904,12 @@ icon-search-Asset
- - + +
liga: - +
@@ -918,12 +918,12 @@ icon-bug
- - + +
liga: - +
@@ -932,12 +932,12 @@ icon-caret-down
- - + +
liga: - +
@@ -946,12 +946,12 @@ icon-caret-left
- - + +
liga: - +
@@ -960,12 +960,12 @@ icon-caret-right
- - + +
liga: - +
@@ -974,12 +974,12 @@ icon-caret-up
- - + +
liga: - +
@@ -988,12 +988,12 @@ icon-contents
- - + +
liga: - +
@@ -1002,12 +1002,12 @@ icon-trigger-ContentChanged
- - + +
liga: - +
@@ -1016,12 +1016,12 @@ icon-control-Date
- - + +
liga: - +
@@ -1030,12 +1030,12 @@ icon-control-DateTime
- - + +
liga: - +
@@ -1044,12 +1044,12 @@ icon-control-Markdown
- - + +
liga: - +
@@ -1058,12 +1058,12 @@ icon-grid
- - + +
liga: - +
@@ -1072,12 +1072,12 @@ icon-list1
- - + +
liga: - +
@@ -1086,12 +1086,12 @@ icon-user-o
- - + +
liga: - +
@@ -1100,12 +1100,12 @@ icon-rules
- - + +
liga: - +
@@ -1114,12 +1114,12 @@ icon-search-Rule
- - + +
liga: - +
@@ -1131,12 +1131,12 @@ icon-type-UI
- - + +
liga: - +
@@ -1145,12 +1145,12 @@ icon-prerender
- - + +
liga: - +
@@ -1159,12 +1159,12 @@ icon-circle
- - + +
liga: - +
@@ -1173,12 +1173,12 @@ icon-control-Slug
- - + +
liga: - +
@@ -1187,12 +1187,12 @@ icon-type-Tags
- - + +
liga: - +
@@ -1201,12 +1201,12 @@ icon-activity
- - + +
liga: - +
@@ -1215,12 +1215,12 @@ icon-history
- - + +
liga: - +
@@ -1229,12 +1229,12 @@ icon-time
- - + +
liga: - +
@@ -1243,12 +1243,12 @@ icon-add
- - + +
liga: - +
@@ -1257,12 +1257,12 @@ icon-plus
- - + +
liga: - +
@@ -1271,12 +1271,12 @@ icon-check-circle
- - + +
liga: - +
@@ -1285,12 +1285,12 @@ icon-check-circle-filled
- - + +
liga: - +
@@ -1299,12 +1299,12 @@ icon-close
- - + +
liga: - +
@@ -1313,12 +1313,12 @@ icon-type-References
- - + +
liga: - +
@@ -1327,12 +1327,12 @@ icon-control-Checkbox
- - + +
liga: - +
@@ -1341,12 +1341,12 @@ icon-control-Dropdown
- - + +
liga: - +
@@ -1355,12 +1355,12 @@ icon-control-Input
- - + +
liga: - +
@@ -1369,12 +1369,12 @@ icon-control-Radio
- - + +
liga: - +
@@ -1383,12 +1383,12 @@ icon-control-TextArea
- - + +
liga: - +
@@ -1397,12 +1397,12 @@ icon-control-Toggle
- - + +
liga: - +
@@ -1411,12 +1411,12 @@ icon-copy
- - + +
liga: - +
@@ -1425,12 +1425,12 @@ icon-dashboard
- - + +
liga: - +
@@ -1439,12 +1439,12 @@ icon-search-Dashboard
- - + +
liga: - +
@@ -1453,12 +1453,12 @@ icon-delete
- - + +
liga: - +
@@ -1467,12 +1467,12 @@ icon-bin
- - + +
liga: - +
@@ -1481,12 +1481,12 @@ icon-delete-filled
- - + +
liga: - +
@@ -1495,12 +1495,12 @@ icon-document-delete
- - + +
liga: - +
@@ -1509,12 +1509,12 @@ icon-document-disable
- - + +
liga: - +
@@ -1523,12 +1523,12 @@ icon-document-publish
- - + +
liga: - +
@@ -1537,12 +1537,12 @@ icon-drag
- - + +
liga: - +
@@ -1551,12 +1551,12 @@ icon-filter
- - + +
liga: - +
@@ -1565,12 +1565,12 @@ icon-github
- - + +
liga: - +
@@ -1579,12 +1579,12 @@ icon-help
- - + +
liga: - +
@@ -1593,12 +1593,12 @@ icon-location
- - + +
liga: - +
@@ -1607,12 +1607,12 @@ icon-control-Map
- - + +
liga: - +
@@ -1621,12 +1621,12 @@ icon-type-Geolocation
- - + +
liga: - +
@@ -1635,12 +1635,12 @@ icon-logo
- - + +
liga: - +
@@ -1649,12 +1649,12 @@ icon-media
- - + +
liga: - +
@@ -1663,12 +1663,12 @@ icon-type-Assets
- - + +
liga: - +
@@ -1677,12 +1677,12 @@ icon-trigger-AssetChanged
- - + +
liga: - +
@@ -1691,12 +1691,12 @@ icon-control-StockPhoto
- - + +
liga: - +
@@ -1705,12 +1705,12 @@ icon-more
- - + +
liga: - +
@@ -1719,12 +1719,12 @@ icon-dots
- - + +
liga: - +
@@ -1733,12 +1733,12 @@ icon-pencil
- - + +
liga: - +
@@ -1747,12 +1747,12 @@ icon-reference
- - + +
liga: - +
@@ -1761,12 +1761,12 @@ icon-schemas
- - + +
liga: - +
@@ -1775,12 +1775,12 @@ icon-search-Schema
- - + +
liga: - +
@@ -1789,12 +1789,12 @@ icon-search
- - + +
liga: - +
@@ -1803,12 +1803,12 @@ icon-settings
- - + +
liga: - +
@@ -1817,12 +1817,12 @@ icon-search-Setting
- - + +
liga: - +
@@ -1831,12 +1831,12 @@ icon-type-Boolean
- - + +
liga: - +
@@ -1845,12 +1845,12 @@ icon-type-DateTime
- - + +
liga: - +
@@ -1859,12 +1859,12 @@ icon-type-Json
- - + +
liga: - +
@@ -1873,12 +1873,12 @@ icon-json
- - + +
liga: - +
@@ -1887,12 +1887,12 @@ icon-type-Number
- - + +
liga: - +
@@ -1901,12 +1901,12 @@ icon-type-String
- - + +
liga: - +
@@ -1915,12 +1915,12 @@ icon-user
- - + +
liga: - +
@@ -1929,12 +1929,12 @@ icon-upload-3
- - + +
liga: - +
@@ -1943,12 +1943,12 @@ icon-upload-4
- - + +
liga: - +
@@ -1960,12 +1960,12 @@ icon-arrow-right
- - + +
liga: - +
@@ -1974,12 +1974,12 @@ icon-upload
- - + +
liga: - +
@@ -1988,12 +1988,12 @@ icon-caret-bottom
- - + +
liga: - +
@@ -2002,12 +2002,12 @@ icon-caret-top
- - + +
liga: - +
@@ -2016,12 +2016,12 @@ icon-show
- - + +
liga: - +
@@ -2030,12 +2030,12 @@ icon-show-all
- - + +
liga: - +
@@ -2044,12 +2044,12 @@ icon-hide
- - + +
liga: - +
@@ -2058,12 +2058,12 @@ icon-hide-all
- - + +
liga: - +
@@ -2072,12 +2072,12 @@ icon-spinner2
- - + +
liga: - +
@@ -2086,12 +2086,12 @@ icon-star-full
- - + +
liga: - +
@@ -2100,12 +2100,12 @@ icon-star-empty
- - + +
liga: - +
@@ -2114,12 +2114,12 @@ icon-twitter
- - + +
liga: - +
@@ -2128,12 +2128,12 @@ icon-hour-glass
- - + +
liga: - +
@@ -2142,12 +2142,12 @@ icon-spinner
- - + +
liga: - +
@@ -2156,12 +2156,12 @@ icon-clock
- - + +
liga: - +
@@ -2170,12 +2170,12 @@ icon-bin2
- - + +
liga: - +
@@ -2184,12 +2184,12 @@ icon-earth
- - + +
liga: - +
@@ -2198,12 +2198,12 @@ icon-elapsed
- - + +
liga: - +
@@ -2212,12 +2212,12 @@ icon-google
- - + +
liga: - +
@@ -2226,12 +2226,12 @@ icon-lock
- - + +
liga: - +
@@ -2240,12 +2240,12 @@ icon-microsoft
- - + +
liga: - +
@@ -2254,12 +2254,12 @@ icon-pause
- - + +
liga: - +
@@ -2268,12 +2268,12 @@ icon-play
- - + +
liga: - +
@@ -2282,12 +2282,12 @@ icon-reset
- - + +
liga: - +
@@ -2296,12 +2296,12 @@ icon-settings2
- - + +
liga: - +
@@ -2310,12 +2310,12 @@ icon-timeout
- - + +
liga: - +
@@ -2324,12 +2324,12 @@ icon-unlocked
- - + +
liga: - +
@@ -2341,12 +2341,12 @@ icon-control-Color
- - + +
liga: - +
@@ -2355,12 +2355,12 @@ icon-browser
- - + +
liga: - +
@@ -2369,12 +2369,12 @@ icon-checkmark
- - + +
liga: - +
@@ -2383,12 +2383,12 @@ icon-control-Stars
- - + +
liga: - +
@@ -2400,12 +2400,12 @@ icon-grid1
- - + +
liga: - +
@@ -2414,12 +2414,12 @@ icon-list
- - + +
liga: - +
@@ -2428,12 +2428,12 @@ icon-info
- - + +
liga: - +
@@ -2446,7 +2446,7 @@ min="8" value="48" /> px -