Browse Source

Strict (#821)

* Update packages

* Test

* Lint fixes.

* strict mode
pull/822/head
Sebastian Stehle 4 years ago
committed by GitHub
parent
commit
a8d1684e76
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 6
      frontend/app-config/webpack.config.js
  2. 2
      frontend/app/features/administration/pages/event-consumers/event-consumer.component.ts
  3. 2
      frontend/app/features/administration/pages/users/user.component.ts
  4. 2
      frontend/app/features/api/pages/graphql/graphql-page.component.ts
  5. 2
      frontend/app/features/apps/pages/app.component.ts
  6. 2
      frontend/app/features/apps/pages/apps-page.component.html
  7. 4
      frontend/app/features/apps/pages/apps-page.component.ts
  8. 2
      frontend/app/features/apps/pages/news-dialog.component.ts
  9. 2
      frontend/app/features/assets/pages/asset-tag-dialog.component.ts
  10. 2
      frontend/app/features/assets/pages/asset-tags.component.html
  11. 8
      frontend/app/features/assets/pages/asset-tags.component.ts
  12. 2
      frontend/app/features/assets/pages/assets-page.component.ts
  13. 8
      frontend/app/features/content/pages/calendar/calendar-page.component.ts
  14. 6
      frontend/app/features/content/pages/content/content-event.component.ts
  15. 6
      frontend/app/features/content/pages/content/content-history-page.component.ts
  16. 12
      frontend/app/features/content/pages/content/content-page.component.ts
  17. 14
      frontend/app/features/content/pages/content/editor/content-editor.component.ts
  18. 18
      frontend/app/features/content/pages/content/editor/content-field.component.ts
  19. 14
      frontend/app/features/content/pages/content/editor/content-section.component.ts
  20. 12
      frontend/app/features/content/pages/content/editor/field-copy-button.component.ts
  21. 6
      frontend/app/features/content/pages/content/editor/field-languages.component.ts
  22. 8
      frontend/app/features/content/pages/content/inspecting/content-inspection.component.ts
  23. 6
      frontend/app/features/content/pages/content/references/content-references.component.ts
  24. 10
      frontend/app/features/content/pages/contents/contents-page.component.ts
  25. 6
      frontend/app/features/content/pages/contents/custom-view-editor.component.ts
  26. 2
      frontend/app/features/content/pages/schemas/schemas-page.component.ts
  27. 6
      frontend/app/features/content/shared/content-extension.component.ts
  28. 6
      frontend/app/features/content/shared/due-time-selector.component.ts
  29. 20
      frontend/app/features/content/shared/forms/array-editor.component.ts
  30. 24
      frontend/app/features/content/shared/forms/array-item.component.ts
  31. 14
      frontend/app/features/content/shared/forms/component-section.component.ts
  32. 16
      frontend/app/features/content/shared/forms/component.component.ts
  33. 18
      frontend/app/features/content/shared/forms/field-editor.component.ts
  34. 12
      frontend/app/features/content/shared/forms/iframe-editor.component.ts
  35. 18
      frontend/app/features/content/shared/list/content.component.ts
  36. 4
      frontend/app/features/content/shared/preview-button.component.ts
  37. 14
      frontend/app/features/content/shared/references/content-creator.component.ts
  38. 6
      frontend/app/features/content/shared/references/reference-dropdown.component.ts
  39. 6
      frontend/app/features/content/shared/references/reference-item.component.ts
  40. 2
      frontend/app/features/content/shared/references/references-checkboxes.component.ts
  41. 8
      frontend/app/features/content/shared/references/references-editor.component.ts
  42. 6
      frontend/app/features/content/shared/references/references-tags.component.ts
  43. 4
      frontend/app/features/dashboard/pages/cards/api-calls-card.component.ts
  44. 4
      frontend/app/features/dashboard/pages/cards/api-calls-summary-card.component.ts
  45. 2
      frontend/app/features/dashboard/pages/cards/api-card.component.ts
  46. 4
      frontend/app/features/dashboard/pages/cards/api-performance-card.component.ts
  47. 4
      frontend/app/features/dashboard/pages/cards/api-traffic-card.component.ts
  48. 4
      frontend/app/features/dashboard/pages/cards/api-traffic-summary-card.component.ts
  49. 4
      frontend/app/features/dashboard/pages/cards/asset-uploads-count-card.component.ts
  50. 4
      frontend/app/features/dashboard/pages/cards/asset-uploads-size-card.component.ts
  51. 4
      frontend/app/features/dashboard/pages/cards/asset-uploads-size-summary-card.component.ts
  52. 6
      frontend/app/features/dashboard/pages/cards/content-summary-card.component.ts
  53. 2
      frontend/app/features/dashboard/pages/cards/github-card.component.ts
  54. 4
      frontend/app/features/dashboard/pages/cards/history-card.component.ts
  55. 4
      frontend/app/features/dashboard/pages/cards/iframe-card.component.ts
  56. 2
      frontend/app/features/dashboard/pages/cards/schema-card.component.ts
  57. 2
      frontend/app/features/dashboard/pages/cards/support-card.component.ts
  58. 8
      frontend/app/features/dashboard/pages/dashboard-config.component.ts
  59. 2
      frontend/app/features/dashboard/pages/dashboard-page.component.html
  60. 12
      frontend/app/features/dashboard/pages/dashboard-page.component.ts
  61. 4
      frontend/app/features/rules/pages/events/rule-event.component.ts
  62. 8
      frontend/app/features/rules/pages/rule/rule-page.component.ts
  63. 6
      frontend/app/features/rules/pages/rules/rule.component.ts
  64. 2
      frontend/app/features/rules/pages/rules/rules-page.component.ts
  65. 4
      frontend/app/features/rules/pages/simulator/simulated-rule-event.component.ts
  66. 6
      frontend/app/features/rules/shared/actions/formattable-input.component.ts
  67. 2
      frontend/app/features/rules/shared/actions/generic-action.component.ts
  68. 6
      frontend/app/features/rules/shared/rule-element.component.ts
  69. 4
      frontend/app/features/rules/shared/rule-icon.component.ts
  70. 2
      frontend/app/features/rules/shared/triggers/asset-changed-trigger.component.ts
  71. 2
      frontend/app/features/rules/shared/triggers/comment-trigger.component.ts
  72. 8
      frontend/app/features/rules/shared/triggers/content-changed-trigger.component.ts
  73. 2
      frontend/app/features/rules/shared/triggers/schema-changed-trigger.component.ts
  74. 2
      frontend/app/features/rules/shared/triggers/usage-trigger.component.ts
  75. 2
      frontend/app/features/schemas/pages/schema/common/schema-edit-form.component.ts
  76. 2
      frontend/app/features/schemas/pages/schema/export/schema-export-form.component.ts
  77. 8
      frontend/app/features/schemas/pages/schema/fields/field-wizard.component.ts
  78. 12
      frontend/app/features/schemas/pages/schema/fields/field.component.ts
  79. 6
      frontend/app/features/schemas/pages/schema/fields/forms/field-form-common.component.ts
  80. 6
      frontend/app/features/schemas/pages/schema/fields/forms/field-form-ui.component.ts
  81. 10
      frontend/app/features/schemas/pages/schema/fields/forms/field-form-validation.component.ts
  82. 10
      frontend/app/features/schemas/pages/schema/fields/forms/field-form.component.ts
  83. 6
      frontend/app/features/schemas/pages/schema/fields/schema-fields.component.ts
  84. 6
      frontend/app/features/schemas/pages/schema/fields/types/array-validation.component.ts
  85. 6
      frontend/app/features/schemas/pages/schema/fields/types/assets-ui.component.ts
  86. 10
      frontend/app/features/schemas/pages/schema/fields/types/assets-validation.component.ts
  87. 6
      frontend/app/features/schemas/pages/schema/fields/types/boolean-ui.component.ts
  88. 12
      frontend/app/features/schemas/pages/schema/fields/types/boolean-validation.component.ts
  89. 6
      frontend/app/features/schemas/pages/schema/fields/types/component-ui.component.ts
  90. 6
      frontend/app/features/schemas/pages/schema/fields/types/component-validation.component.ts
  91. 6
      frontend/app/features/schemas/pages/schema/fields/types/components-ui.component.ts
  92. 6
      frontend/app/features/schemas/pages/schema/fields/types/components-validation.component.ts
  93. 6
      frontend/app/features/schemas/pages/schema/fields/types/date-time-ui.component.ts
  94. 14
      frontend/app/features/schemas/pages/schema/fields/types/date-time-validation.component.ts
  95. 6
      frontend/app/features/schemas/pages/schema/fields/types/geolocation-ui.component.ts
  96. 6
      frontend/app/features/schemas/pages/schema/fields/types/geolocation-validation.component.ts
  97. 6
      frontend/app/features/schemas/pages/schema/fields/types/json-ui.component.ts
  98. 6
      frontend/app/features/schemas/pages/schema/fields/types/json-validation.component.ts
  99. 10
      frontend/app/features/schemas/pages/schema/fields/types/number-ui.component.ts
  100. 12
      frontend/app/features/schemas/pages/schema/fields/types/number-validation.component.ts

6
frontend/app-config/webpack.config.js

@ -28,7 +28,7 @@ const plugins = {
// https://www.npmjs.com/package/@ngtools/webpack // https://www.npmjs.com/package/@ngtools/webpack
NgToolsWebpack: require('@ngtools/webpack'), NgToolsWebpack: require('@ngtools/webpack'),
// https://github.com/NMFR/optimize-css-assets-webpack-plugin // https://github.com/NMFR/optimize-css-assets-webpack-plugin
OptimizeCSSAssetsPlugin: require('optimize-css-assets-webpack-plugin'), CssMinimizerPlugin: require('css-minimizer-webpack-plugin'),
// https://webpack.js.org/plugins/eslint-webpack-plugin/ // https://webpack.js.org/plugins/eslint-webpack-plugin/
ESLintPlugin: require('eslint-webpack-plugin'), ESLintPlugin: require('eslint-webpack-plugin'),
// https://github.com/webpack-contrib/stylelint-webpack-plugin // https://github.com/webpack-contrib/stylelint-webpack-plugin
@ -53,7 +53,7 @@ module.exports = function calculateConfig(env) {
const configFile = isTests ? 'tsconfig.spec.json' : 'tsconfig.app.json'; const configFile = isTests ? 'tsconfig.spec.json' : 'tsconfig.app.json';
// eslint-disable-next-line no-console // eslint-disable-next-line no-console
console.log(`Use ${configFile}, Production: ${!!isProduction}, DevServer: ${isDevServer}`); console.log(`Use ${configFile}, Production: ${!!isProduction}, DevServer: ${!!isDevServer}`);
const config = { const config = {
mode: isProduction ? 'production' : 'development', mode: isProduction ? 'production' : 'development',
@ -401,7 +401,7 @@ module.exports = function calculateConfig(env) {
extractComments: true, extractComments: true,
}), }),
new plugins.OptimizeCSSAssetsPlugin({}), new plugins.CssMinimizerPlugin({}),
], ],
}; };

2
frontend/app/features/administration/pages/event-consumers/event-consumer.component.ts

@ -19,7 +19,7 @@ export class EventConsumerComponent {
public error = new EventEmitter(); public error = new EventEmitter();
@Input('sqxEventConsumer') @Input('sqxEventConsumer')
public eventConsumer: EventConsumerDto; public eventConsumer!: EventConsumerDto;
constructor( constructor(
private readonly eventConsumersState: EventConsumersState, private readonly eventConsumersState: EventConsumersState,

2
frontend/app/features/administration/pages/users/user.component.ts

@ -16,7 +16,7 @@ import { UserDto, UsersState } from '@app/features/administration/internal';
}) })
export class UserComponent { export class UserComponent {
@Input('sqxUser') @Input('sqxUser')
public user: UserDto; public user!: UserDto;
constructor( constructor(
private readonly usersState: UsersState, private readonly usersState: UsersState,

2
frontend/app/features/api/pages/graphql/graphql-page.component.ts

@ -20,7 +20,7 @@ import { catchError } from 'rxjs/operators';
}) })
export class GraphQLPageComponent implements AfterViewInit { export class GraphQLPageComponent implements AfterViewInit {
@ViewChild('graphiQLContainer', { static: false }) @ViewChild('graphiQLContainer', { static: false })
public graphiQLContainer: ElementRef; public graphiQLContainer!: ElementRef;
constructor( constructor(
private readonly appsState: AppsState, private readonly appsState: AppsState,

2
frontend/app/features/apps/pages/app.component.ts

@ -16,7 +16,7 @@ import { AppDto, ModalModel } from '@app/shared';
}) })
export class AppComponent { export class AppComponent {
@Input() @Input()
public app: AppDto; public app!: AppDto;
@Output() @Output()
public leave = new EventEmitter<AppDto>(); public leave = new EventEmitter<AppDto>();

2
frontend/app/features/apps/pages/apps-page.component.html

@ -83,5 +83,5 @@
</ng-container> </ng-container>
<ng-container *sqxModal="newsDialog"> <ng-container *sqxModal="newsDialog">
<sqx-news-dialog [features]="newsFeatures" (close)="newsDialog.hide()"></sqx-news-dialog> <sqx-news-dialog [features]="newsFeatures!" (close)="newsDialog.hide()"></sqx-news-dialog>
</ng-container> </ng-container>

4
frontend/app/features/apps/pages/apps-page.component.ts

@ -21,10 +21,10 @@ export class AppsPageComponent implements OnInit {
public onboardingDialog = new DialogModel(); public onboardingDialog = new DialogModel();
public newsFeatures: ReadonlyArray<FeatureDto>; public newsFeatures?: ReadonlyArray<FeatureDto>;
public newsDialog = new DialogModel(); public newsDialog = new DialogModel();
public info: string; public info = '';
constructor( constructor(
public readonly appsState: AppsState, public readonly appsState: AppsState,

2
frontend/app/features/apps/pages/news-dialog.component.ts

@ -18,7 +18,7 @@ export class NewsDialogComponent {
public close = new EventEmitter(); public close = new EventEmitter();
@Input() @Input()
public features: ReadonlyArray<FeatureDto>; public features!: ReadonlyArray<FeatureDto>;
public trackByFeature(_index: number, feature: FeatureDto) { public trackByFeature(_index: number, feature: FeatureDto) {
return feature; return feature;

2
frontend/app/features/assets/pages/asset-tag-dialog.component.ts

@ -18,7 +18,7 @@ export class AssetTagDialogComponent implements OnInit {
public complete = new EventEmitter(); public complete = new EventEmitter();
@Input() @Input()
public tagName: string; public tagName!: string;
public editForm = new RenameAssetTagForm(); public editForm = new RenameAssetTagForm();

2
frontend/app/features/assets/pages/asset-tags.component.html

@ -24,5 +24,5 @@
</div> </div>
<ng-container *sqxModal="tagRenameDialog"> <ng-container *sqxModal="tagRenameDialog">
<sqx-asset-tag-dialog [tagName]="tagRenaming.name" (complete)="tagRenameDialog.hide()"></sqx-asset-tag-dialog> <sqx-asset-tag-dialog [tagName]="tagRenaming!.name" (complete)="tagRenameDialog.hide()"></sqx-asset-tag-dialog>
</ng-container> </ng-container>

8
frontend/app/features/assets/pages/asset-tags.component.ts

@ -24,15 +24,15 @@ export class AssetTagsComponent {
public toggle = new EventEmitter<string>(); public toggle = new EventEmitter<string>();
@Input() @Input()
public tags: ReadonlyArray<TagItem>; public tags!: ReadonlyArray<TagItem>;
@Input() @Input()
public tagsSelected: TagsSelected; public tagsSelected!: TagsSelected;
@Input() @Input()
public canRename: boolean; public canRename = false;
public tagRenaming: TagItem; public tagRenaming?: TagItem;
public tagRenameDialog = new DialogModel(); public tagRenameDialog = new DialogModel();
public isEmpty() { public isEmpty() {

2
frontend/app/features/assets/pages/assets-page.component.ts

@ -22,7 +22,7 @@ export class AssetsPageComponent extends ResourceOwner implements OnInit {
public addAssetFolderDialog = new DialogModel(); public addAssetFolderDialog = new DialogModel();
public isListView: boolean; public isListView = false;
constructor( constructor(
public readonly assetsRoute: Router2State, public readonly assetsRoute: Router2State,

8
frontend/app/features/content/pages/calendar/calendar-page.component.ts

@ -19,19 +19,19 @@ type ViewMode = 'day' | 'week' | 'month';
}) })
export class CalendarPageComponent implements AfterViewInit, OnDestroy { export class CalendarPageComponent implements AfterViewInit, OnDestroy {
private calendar: any; private calendar: any;
private language: LanguageDto; private language!: LanguageDto;
@ViewChild('calendarContainer', { static: false }) @ViewChild('calendarContainer', { static: false })
public calendarContainer: ElementRef; public calendarContainer!: ElementRef;
public view: ViewMode = 'month'; public view: ViewMode = 'month';
public content?: ContentDto; public content?: ContentDto;
public contentDialog = new DialogModel(); public contentDialog = new DialogModel();
public title: string; public title = '';
public isLoading: boolean; public isLoading = false;
constructor( constructor(
private readonly appsState: AppsState, private readonly appsState: AppsState,

6
frontend/app/features/content/pages/content/content-event.component.ts

@ -22,12 +22,12 @@ export class ContentEventComponent implements OnChanges {
public dataCompare = new EventEmitter(); public dataCompare = new EventEmitter();
@Input() @Input()
public event: HistoryEventDto; public event!: HistoryEventDto;
@Input() @Input()
public content: ContentDto; public content!: ContentDto;
public canLoadOrCompare: boolean; public canLoadOrCompare = false;
public ngOnChanges() { public ngOnChanges() {
this.canLoadOrCompare = this.canLoadOrCompare =

6
frontend/app/features/content/pages/content/content-history-page.component.ts

@ -19,10 +19,10 @@ import { ContentPageComponent } from './content-page.component';
}) })
export class ContentHistoryPageComponent extends ResourceOwner implements OnInit { export class ContentHistoryPageComponent extends ResourceOwner implements OnInit {
@ViewChild('dueTimeSelector', { static: false }) @ViewChild('dueTimeSelector', { static: false })
public dueTimeSelector: DueTimeSelectorComponent; public dueTimeSelector!: DueTimeSelectorComponent;
public content: ContentDto; public content!: ContentDto;
public contentEvents: Observable<ReadonlyArray<HistoryEventDto>>; public contentEvents?: Observable<ReadonlyArray<HistoryEventDto>>;
public dropdown = new ModalModel(); public dropdown = new ModalModel();
public dropdownNew = new ModalModel(); public dropdownNew = new ModalModel();

12
frontend/app/features/content/pages/content/content-page.component.ts

@ -22,23 +22,23 @@ import { filter, map, tap } from 'rxjs/operators';
], ],
}) })
export class ContentPageComponent extends ResourceOwner implements CanComponentDeactivate, OnInit { export class ContentPageComponent extends ResourceOwner implements CanComponentDeactivate, OnInit {
private autoSaveKey: AutoSaveKey; private autoSaveKey!: AutoSaveKey;
public schema: SchemaDto; public schema!: SchemaDto;
public formContext: any; public formContext: any;
public contentTab = this.route.queryParams.pipe(map(x => x['tab'] || 'editor')); public contentTab = this.route.queryParams.pipe(map(x => x['tab'] || 'editor'));
public content?: ContentDto | null; public content?: ContentDto | null;
public contentId = ''; public contentId = '';
public contentVersion: Version | null; public contentVersion: Version | null = null;
public contentForm: EditContentForm; public contentForm!: EditContentForm;
public contentFormCompare: EditContentForm | null = null; public contentFormCompare: EditContentForm | null = null;
public dropdown = new ModalModel(); public dropdown = new ModalModel();
public language: AppLanguageDto; public language!: AppLanguageDto;
public languages: ReadonlyArray<AppLanguageDto>; public languages!: ReadonlyArray<AppLanguageDto>;
public confirmPreview = () => { public confirmPreview = () => {
return this.checkPendingChangesBeforePreview(); return this.checkPendingChangesBeforePreview();

14
frontend/app/features/content/pages/content/editor/content-editor.component.ts

@ -27,28 +27,28 @@ export class ContentEditorComponent {
public isNew = false; public isNew = false;
@Input() @Input()
public contentId: string; public contentId!: string;
@Input() @Input()
public contentForm: EditContentForm; public contentForm!: EditContentForm;
@Input() @Input()
public contentVersion: Version | null; public contentVersion?: Version | null;
@Input() @Input()
public contentFormCompare?: EditContentForm | null; public contentFormCompare?: EditContentForm | null;
@Input() @Input()
public schema: SchemaDto; public schema!: SchemaDto;
@Input() @Input()
public formContext: any; public formContext!: any;
@Input() @Input()
public language: AppLanguageDto; public language!: AppLanguageDto;
@Input() @Input()
public languages: ReadonlyArray<AppLanguageDto>; public languages!: ReadonlyArray<AppLanguageDto>;
public trackBySection(_index: number, section: FieldSection<RootFieldDto, FieldForm>) { public trackBySection(_index: number, section: FieldSection<RootFieldDto, FieldForm>) {
return section.separator?.fieldId; return section.separator?.fieldId;

18
frontend/app/features/content/pages/content/editor/content-field.component.ts

@ -22,31 +22,31 @@ export class ContentFieldComponent implements OnChanges {
public isCompact?: boolean | null; public isCompact?: boolean | null;
@Input() @Input()
public form: EditContentForm; public form!: EditContentForm;
@Input() @Input()
public formCompare?: EditContentForm | null; public formCompare?: EditContentForm | null;
@Input() @Input()
public formContext: any; public formContext!: any;
@Input() @Input()
public formLevel: number; public formLevel!: number;
@Input() @Input()
public formModel: FieldForm; public formModel!: FieldForm;
@Input() @Input()
public formModelCompare?: FieldForm; public formModelCompare?: FieldForm;
@Input() @Input()
public schema: SchemaDto; public schema!: SchemaDto;
@Input() @Input()
public language: AppLanguageDto; public language!: AppLanguageDto;
@Input() @Input()
public languages: ReadonlyArray<AppLanguageDto>; public languages!: ReadonlyArray<AppLanguageDto>;
@HostBinding('class') @HostBinding('class')
public get class() { public get class() {
@ -63,8 +63,8 @@ export class ContentFieldComponent implements OnChanges {
public showAllControls = false; public showAllControls = false;
public isDifferent: Observable<boolean>; public isDifferent?: Observable<boolean>;
public isInvalid: Observable<boolean>; public isInvalid?: Observable<boolean>;
constructor( constructor(
private readonly appsState: AppsState, private readonly appsState: AppsState,

14
frontend/app/features/content/pages/content/editor/content-section.component.ts

@ -27,28 +27,28 @@ export class ContentSectionComponent extends StatefulComponent<State> implements
public isCompact?: boolean | null; public isCompact?: boolean | null;
@Input() @Input()
public form: EditContentForm; public form!: EditContentForm;
@Input() @Input()
public formCompare?: EditContentForm | null; public formCompare?: EditContentForm | null;
@Input() @Input()
public formLevel: number; public formLevel!: number;
@Input() @Input()
public formContext: any; public formContext!: any;
@Input() @Input()
public formSection: FieldSection<RootFieldDto, FieldForm>; public formSection!: FieldSection<RootFieldDto, FieldForm>;
@Input() @Input()
public schema: SchemaDto; public schema!: SchemaDto;
@Input() @Input()
public language: AppLanguageDto; public language!: AppLanguageDto;
@Input() @Input()
public languages: ReadonlyArray<AppLanguageDto>; public languages!: ReadonlyArray<AppLanguageDto>;
constructor(changeDetector: ChangeDetectorRef, constructor(changeDetector: ChangeDetectorRef,
private readonly localStore: LocalStoreService, private readonly localStore: LocalStoreService,

12
frontend/app/features/content/pages/content/editor/field-copy-button.component.ts

@ -15,15 +15,15 @@ import { AppLanguageDto, FieldForm, ModalModel } from '@app/shared';
}) })
export class FieldCopyButtonComponent implements OnChanges { export class FieldCopyButtonComponent implements OnChanges {
@Input() @Input()
public formModel: FieldForm; public formModel!: FieldForm;
@Input() @Input()
public languages: ReadonlyArray<AppLanguageDto>; public languages!: ReadonlyArray<AppLanguageDto>;
public languageCodes: ReadonlyArray<string>; public languageCodes: ReadonlyArray<string> = [];
public copySource: string; public copySource = '';
public copyTargets: ReadonlyArray<string>; public copyTargets?: ReadonlyArray<string>;
public dropdown = new ModalModel(); public dropdown = new ModalModel();
@ -45,7 +45,7 @@ export class FieldCopyButtonComponent implements OnChanges {
} }
public copy() { public copy() {
if (this.copySource && this.copyTargets?.length > 0) { if (this.copySource && this.copyTargets && this.copyTargets?.length > 0) {
const source = this.formModel.get(this.copySource).form.value; const source = this.formModel.get(this.copySource).form.value;
for (const target of this.copyTargets) { for (const target of this.copyTargets) {

6
frontend/app/features/content/pages/content/editor/field-languages.component.ts

@ -25,13 +25,13 @@ export class FieldLanguagesComponent {
public languageChange = new EventEmitter<AppLanguageDto>(); public languageChange = new EventEmitter<AppLanguageDto>();
@Input() @Input()
public language: AppLanguageDto; public language!: AppLanguageDto;
@Input() @Input()
public languages: ReadonlyArray<AppLanguageDto>; public languages!: ReadonlyArray<AppLanguageDto>;
@Input() @Input()
public field: RootFieldDto; public field!: RootFieldDto;
public toggleShowAllControls() { public toggleShowAllControls() {
this.showAllControlsChange.emit(!this.showAllControls); this.showAllControlsChange.emit(!this.showAllControls);

8
frontend/app/features/content/pages/content/inspecting/content-inspection.component.ts

@ -21,16 +21,16 @@ export class ContentInspectionComponent implements OnChanges, OnDestroy {
private languageChanges$ = new BehaviorSubject<AppLanguageDto | null>(null); private languageChanges$ = new BehaviorSubject<AppLanguageDto | null>(null);
@Input() @Input()
public appName: string; public appName!: string;
@Input() @Input()
public language: AppLanguageDto; public language!: AppLanguageDto;
@Input() @Input()
public languages: ReadonlyArray<AppLanguageDto>; public languages!: ReadonlyArray<AppLanguageDto>;
@Input() @Input()
public content: ContentDto; public content!: ContentDto;
public mode = new BehaviorSubject<Mode>('Content'); public mode = new BehaviorSubject<Mode>('Content');

6
frontend/app/features/content/pages/content/references/content-references.component.ts

@ -19,13 +19,13 @@ import { AppLanguageDto, ComponentContentsState, ContentDto, QuerySynchronizer,
}) })
export class ContentReferencesComponent implements OnChanges, OnInit, OnDestroy { export class ContentReferencesComponent implements OnChanges, OnInit, OnDestroy {
@Input() @Input()
public content: ContentDto; public content!: ContentDto;
@Input() @Input()
public language: AppLanguageDto; public language!: AppLanguageDto;
@Input() @Input()
public languages: ReadonlyArray<AppLanguageDto>; public languages!: ReadonlyArray<AppLanguageDto>;
@Input() @Input()
public mode: 'references' | 'referencing' = 'references'; public mode: 'references' | 'referencing' = 'references';

10
frontend/app/features/content/pages/contents/contents-page.component.ts

@ -24,11 +24,11 @@ import { DueTimeSelectorComponent } from './../../shared/due-time-selector.compo
}) })
export class ContentsPageComponent extends ResourceOwner implements OnInit { export class ContentsPageComponent extends ResourceOwner implements OnInit {
@ViewChild('dueTimeSelector', { static: false }) @ViewChild('dueTimeSelector', { static: false })
public dueTimeSelector: DueTimeSelectorComponent; public dueTimeSelector!: DueTimeSelectorComponent;
public schema: SchemaDto; public schema!: SchemaDto;
public tableView: TableFields; public tableView!: TableFields;
public tableViewModal = new ModalModel(); public tableViewModal = new ModalModel();
public searchModal = new ModalModel(); public searchModal = new ModalModel();
@ -39,8 +39,8 @@ export class ContentsPageComponent extends ResourceOwner implements OnInit {
public selectionCanDelete = false; public selectionCanDelete = false;
public selectionStatuses: { [name: string]: string } = {}; public selectionStatuses: { [name: string]: string } = {};
public language: AppLanguageDto; public language!: AppLanguageDto;
public languages: ReadonlyArray<AppLanguageDto>; public languages!: ReadonlyArray<AppLanguageDto>;
public get disableScheduler() { public get disableScheduler() {
return this.appsState.snapshot.selectedSettings?.hideScheduler === true; return this.appsState.snapshot.selectedSettings?.hideScheduler === true;

6
frontend/app/features/content/pages/contents/custom-view-editor.component.ts

@ -19,12 +19,12 @@ export class CustomViewEditorComponent implements OnChanges {
public fieldNamesChange = new EventEmitter<ReadonlyArray<string>>(); public fieldNamesChange = new EventEmitter<ReadonlyArray<string>>();
@Input() @Input()
public fieldNames: string[]; public fieldNames!: string[];
@Input() @Input()
public allFields: ReadonlyArray<string>; public allFields!: ReadonlyArray<string>;
public fieldsNotAdded: ReadonlyArray<string>; public fieldsNotAdded!: ReadonlyArray<string>;
public ngOnChanges() { public ngOnChanges() {
this.fieldsNotAdded = this.allFields.filter(n => this.fieldNames.indexOf(n) < 0); this.fieldsNotAdded = this.allFields.filter(n => this.fieldNames.indexOf(n) < 0);

2
frontend/app/features/content/pages/schemas/schemas-page.component.ts

@ -41,7 +41,7 @@ export class SchemasPageComponent {
return getCategoryTree(schemas, categories, filter); return getCategoryTree(schemas, categories, filter);
}); });
public isCollapsed: boolean; public isCollapsed = false;
public get width() { public get width() {
return this.isCollapsed ? '4rem' : '16rem'; return this.isCollapsed ? '4rem' : '16rem';

6
frontend/app/features/content/shared/content-extension.component.ts

@ -21,20 +21,20 @@ export class ContentExtensionComponent extends ResourceOwner implements OnChange
private isInitialized = false; private isInitialized = false;
@ViewChild('iframe', { static: false }) @ViewChild('iframe', { static: false })
public iframe: ElementRef<HTMLIFrameElement>; public iframe!: ElementRef<HTMLIFrameElement>;
@Input() @Input()
public content?: ContentDto | null; public content?: ContentDto | null;
@Input() @Input()
public contentSchema: SchemaDto; public contentSchema!: SchemaDto;
@Input() @Input()
public set url(value: string | undefined | null) { public set url(value: string | undefined | null) {
this.computedUrl = computeEditorUrl(value, this.appsState.snapshot.selectedSettings); this.computedUrl = computeEditorUrl(value, this.appsState.snapshot.selectedSettings);
} }
public computedUrl: string; public computedUrl = '';
constructor(apiUrl: ApiUrlConfig, authService: AuthService, constructor(apiUrl: ApiUrlConfig, authService: AuthService,
private readonly appsState: AppsState, private readonly appsState: AppsState,

6
frontend/app/features/content/shared/due-time-selector.component.ts

@ -17,7 +17,7 @@ const OPTION_IMMEDIATELY = 'Immediately';
templateUrl: './due-time-selector.component.html', templateUrl: './due-time-selector.component.html',
}) })
export class DueTimeSelectorComponent { export class DueTimeSelectorComponent {
private dueTimeResult: Subject<string | null>; private dueTimeResult?: Subject<string | null>;
@Input() @Input()
public disabled?: boolean | null; public disabled?: boolean | null;
@ -42,8 +42,8 @@ export class DueTimeSelectorComponent {
public confirmStatusChange() { public confirmStatusChange() {
const result = this.dueTimeMode === OPTION_IMMEDIATELY ? null : this.dueTime; const result = this.dueTimeMode === OPTION_IMMEDIATELY ? null : this.dueTime;
this.dueTimeResult.next(result); this.dueTimeResult?.next(result);
this.dueTimeResult.complete(); this.dueTimeResult?.complete();
this.cancelStatusChange(); this.cancelStatusChange();
} }

20
frontend/app/features/content/shared/forms/array-editor.component.ts

@ -20,38 +20,38 @@ import { ArrayItemComponent } from './array-item.component';
}) })
export class ArrayEditorComponent implements OnChanges, OnInit { export class ArrayEditorComponent implements OnChanges, OnInit {
@Input() @Input()
public form: EditContentForm; public form!: EditContentForm;
@Input() @Input()
public formContext: any; public formContext!: any;
@Input() @Input()
public formLevel: number; public formLevel!: number;
@Input() @Input()
public formModel: FieldArrayForm; public formModel!: FieldArrayForm;
@Input() @Input()
public canUnset?: boolean | null; public canUnset?: boolean | null;
@Input() @Input()
public language: AppLanguageDto; public language!: AppLanguageDto;
@Input() @Input()
public languages: ReadonlyArray<AppLanguageDto>; public languages!: ReadonlyArray<AppLanguageDto>;
@ViewChildren(ArrayItemComponent) @ViewChildren(ArrayItemComponent)
public children: QueryList<ArrayItemComponent>; public children!: QueryList<ArrayItemComponent>;
public isArray = false; public isArray = false;
public schemasDropdown = new ModalModel(); public schemasDropdown = new ModalModel();
public schemasList: ReadonlyArray<SchemaDto>; public schemasList: ReadonlyArray<SchemaDto> = [];
public isDisabled: Observable<boolean>; public isDisabled?: Observable<boolean>;
public isCollapsedInitial = false; public isCollapsedInitial = false;
public isFull: Observable<boolean>; public isFull?: Observable<boolean>;
public get hasField() { public get hasField() {
return this.formModel.field['nested']?.length > 0; return this.formModel.field['nested']?.length > 0;

24
frontend/app/features/content/shared/forms/array-item.component.ts

@ -20,7 +20,7 @@ interface State {
} }
@Component({ @Component({
selector: 'sqx-array-item[form][formContext][formLevel][language][languages][index]', selector: 'sqx-array-item[form][formContext][formLevel][formModel][index][language][languages]',
styleUrls: ['./array-item.component.scss'], styleUrls: ['./array-item.component.scss'],
templateUrl: './array-item.component.html', templateUrl: './array-item.component.html',
changeDetection: ChangeDetectionStrategy.OnPush, changeDetection: ChangeDetectionStrategy.OnPush,
@ -36,16 +36,16 @@ export class ArrayItemComponent extends StatefulComponent<State> implements OnCh
public clone = new EventEmitter(); public clone = new EventEmitter();
@Input() @Input()
public form: EditContentForm; public form!: EditContentForm;
@Input() @Input()
public formContext: any; public formContext!: any;
@Input() @Input()
public formLevel: number; public formLevel!: number;
@Input() @Input()
public formModel: ObjectFormBase; public formModel!: ObjectFormBase;
@Input() @Input()
public canUnset?: boolean | null; public canUnset?: boolean | null;
@ -63,22 +63,22 @@ export class ArrayItemComponent extends StatefulComponent<State> implements OnCh
public isDisabled?: boolean | null; public isDisabled?: boolean | null;
@Input() @Input()
public index: number; public index!: number;
@Input() @Input()
public language: AppLanguageDto; public language!: AppLanguageDto;
@Input() @Input()
public languages: ReadonlyArray<AppLanguageDto>; public languages!: ReadonlyArray<AppLanguageDto>;
@ViewChildren(ComponentSectionComponent) @ViewChildren(ComponentSectionComponent)
public sections: QueryList<ComponentSectionComponent>; public sections!: QueryList<ComponentSectionComponent>;
public isCollapsed = false; public isCollapsed = false;
public isInvalid: Observable<boolean>; public isInvalid?: Observable<boolean>;
public isInvalidComponent: Observable<boolean>; public isInvalidComponent?: Observable<boolean>;
public title: Observable<string>; public title?: Observable<string>;
constructor(changeDetector: ChangeDetectorRef, constructor(changeDetector: ChangeDetectorRef,
) { ) {

14
frontend/app/features/content/shared/forms/component-section.component.ts

@ -17,22 +17,22 @@ import { FieldEditorComponent } from './field-editor.component';
}) })
export class ComponentSectionComponent { export class ComponentSectionComponent {
@Input() @Input()
public form: EditContentForm; public form!: EditContentForm;
@Input() @Input()
public formContext: any; public formContext!: any;
@Input() @Input()
public formLevel: number; public formLevel!: number;
@Input() @Input()
public formSection: FieldSection<FieldDto, any>; public formSection!: FieldSection<FieldDto, any>;
@Input() @Input()
public language: AppLanguageDto; public language!: AppLanguageDto;
@Input() @Input()
public languages: ReadonlyArray<AppLanguageDto>; public languages!: ReadonlyArray<AppLanguageDto>;
@Input() @Input()
public index: number | null | undefined; public index: number | null | undefined;
@ -41,7 +41,7 @@ export class ComponentSectionComponent {
public canUnset?: boolean | null; public canUnset?: boolean | null;
@ViewChildren(FieldEditorComponent) @ViewChildren(FieldEditorComponent)
public editors: QueryList<FieldEditorComponent>; public editors!: QueryList<FieldEditorComponent>;
public reset() { public reset() {
this.editors.forEach(editor => { this.editors.forEach(editor => {

16
frontend/app/features/content/shared/forms/component.component.ts

@ -20,28 +20,28 @@ export class ComponentComponent extends ResourceOwner implements OnChanges {
public canUnset?: boolean | null; public canUnset?: boolean | null;
@Input() @Input()
public form: EditContentForm; public form!: EditContentForm;
@Input() @Input()
public formContext: any; public formContext!: any;
@Input() @Input()
public formLevel: number; public formLevel!: number;
@Input() @Input()
public formModel: ComponentForm; public formModel!: ComponentForm;
@Input() @Input()
public language: AppLanguageDto; public language!: AppLanguageDto;
@Input() @Input()
public languages: ReadonlyArray<AppLanguageDto>; public languages!: ReadonlyArray<AppLanguageDto>;
@ViewChildren(ComponentSectionComponent) @ViewChildren(ComponentSectionComponent)
public sections: QueryList<ComponentSectionComponent>; public sections!: QueryList<ComponentSectionComponent>;
public schemasDropdown = new ModalModel(); public schemasDropdown = new ModalModel();
public schemasList: ReadonlyArray<SchemaDto>; public schemasList: ReadonlyArray<SchemaDto> = [];
constructor( constructor(
private readonly changeDetector: ChangeDetectorRef, private readonly changeDetector: ChangeDetectorRef,

18
frontend/app/features/content/shared/forms/field-editor.component.ts

@ -19,22 +19,22 @@ export class FieldEditorComponent implements OnChanges {
public readonly uniqueId = MathHelper.guid(); public readonly uniqueId = MathHelper.guid();
@Input() @Input()
public form: EditContentForm; public form!: EditContentForm;
@Input() @Input()
public formContext: any; public formContext!: any;
@Input() @Input()
public formLevel: number; public formLevel!: number;
@Input() @Input()
public formModel: AbstractContentForm<FieldDto, AbstractControl>; public formModel!: AbstractContentForm<FieldDto, AbstractControl>;
@Input() @Input()
public language: AppLanguageDto; public language!: AppLanguageDto;
@Input() @Input()
public languages: ReadonlyArray<AppLanguageDto>; public languages!: ReadonlyArray<AppLanguageDto>;
@Input() @Input()
public index: number | null | undefined; public index: number | null | undefined;
@ -43,12 +43,12 @@ export class FieldEditorComponent implements OnChanges {
public canUnset?: boolean | null; public canUnset?: boolean | null;
@Input() @Input()
public displaySuffix: string; public displaySuffix = '';
@ViewChild('editor', { static: false }) @ViewChild('editor', { static: false })
public editor: ElementRef; public editor!: ElementRef;
public isEmpty: Observable<boolean>; public isEmpty?: Observable<boolean>;
public get field() { public get field() {
return this.formModel.field; return this.formModel.field;

12
frontend/app/features/content/shared/forms/iframe-editor.component.ts

@ -29,19 +29,19 @@ export class IFrameEditorComponent extends StatefulComponent<State> implements O
private assetsCorrelationId: any; private assetsCorrelationId: any;
@ViewChild('iframe', { static: false }) @ViewChild('iframe', { static: false })
public iframe: ElementRef<HTMLIFrameElement>; public iframe!: ElementRef<HTMLIFrameElement>;
@ViewChild('container', { static: false }) @ViewChild('container', { static: false })
public container: ElementRef<HTMLElement>; public container!: ElementRef<HTMLElement>;
@ViewChild('inner', { static: false }) @ViewChild('inner', { static: false })
public inner: ElementRef<HTMLElement>; public inner!: ElementRef<HTMLElement>;
@Input() @Input()
public context: any = {}; public context: any = {};
@Input() @Input()
public formValue: any; public formValue!: any;
@Input() @Input()
public formIndex?: number | null; public formIndex?: number | null;
@ -50,7 +50,7 @@ export class IFrameEditorComponent extends StatefulComponent<State> implements O
public language?: string | null; public language?: string | null;
@Input() @Input()
public formControlBinding: AbstractControl; public formControlBinding!: AbstractControl;
@Input() @Input()
public set disabled(value: boolean | undefined | null) { public set disabled(value: boolean | undefined | null) {
@ -62,7 +62,7 @@ export class IFrameEditorComponent extends StatefulComponent<State> implements O
this.computedUrl = computeEditorUrl(value, this.appsState.snapshot.selectedSettings); this.computedUrl = computeEditorUrl(value, this.appsState.snapshot.selectedSettings);
} }
public computedUrl: string; public computedUrl = '';
public assetsDialog = new DialogModel(); public assetsDialog = new DialogModel();

18
frontend/app/features/content/shared/list/content.component.ts

@ -33,10 +33,10 @@ export class ContentComponent implements OnChanges {
public selected = false; public selected = false;
@Input() @Input()
public language: AppLanguageDto; public language!: AppLanguageDto;
@Input() @Input()
public listFields: ReadonlyArray<TableField>; public listFields!: ReadonlyArray<TableField>;
@Input() @Input()
public cloneable?: boolean | null; public cloneable?: boolean | null;
@ -45,12 +45,12 @@ export class ContentComponent implements OnChanges {
public link: any = null; public link: any = null;
@Input('sqxContent') @Input('sqxContent')
public content: ContentDto; public content!: ContentDto;
@ViewChildren(ContentListFieldComponent) @ViewChildren(ContentListFieldComponent)
public fields: QueryList<ContentListFieldComponent>; public fields!: QueryList<ContentListFieldComponent>;
public patchForm: PatchContentForm; public patchForm?: PatchContentForm;
public patchAllowed?: boolean | null; public patchAllowed?: boolean | null;
public dropdown = new ModalModel(); public dropdown = new ModalModel();
@ -76,7 +76,7 @@ export class ContentComponent implements OnChanges {
} }
public save() { public save() {
if (!this.content.canUpdate) { if (!this.content.canUpdate || !this.patchForm) {
return; return;
} }
@ -86,12 +86,12 @@ export class ContentComponent implements OnChanges {
this.contentsState.patch(this.content, value) this.contentsState.patch(this.content, value)
.subscribe({ .subscribe({
next: () => { next: () => {
this.patchForm.submitCompleted({ noReset: true }); this.patchForm!.submitCompleted({ noReset: true });
this.changeDetector.detectChanges(); this.changeDetector.detectChanges();
}, },
error: error => { error: error => {
this.patchForm.submitFailed(error); this.patchForm!.submitFailed(error);
this.changeDetector.detectChanges(); this.changeDetector.detectChanges();
}, },
@ -108,7 +108,7 @@ export class ContentComponent implements OnChanges {
} }
public cancel() { public cancel() {
this.patchForm.submitCompleted(); this.patchForm?.submitCompleted();
this.fields.forEach(x => x.reset()); this.fields.forEach(x => x.reset());
} }

4
frontend/app/features/content/shared/preview-button.component.ts

@ -29,10 +29,10 @@ export class PreviewButtonComponent extends StatefulComponent<State> implements
public confirm?: () => Observable<boolean>; public confirm?: () => Observable<boolean>;
@Input() @Input()
public content: ContentDto; public content!: ContentDto;
@Input() @Input()
public schema: SchemaDto; public schema!: SchemaDto;
public dropdown = new ModalModel(); public dropdown = new ModalModel();

14
frontend/app/features/content/shared/references/content-creator.component.ts

@ -29,21 +29,21 @@ export class ContentCreatorComponent extends ResourceOwner implements OnInit {
public schemaName?: string | null; public schemaName?: string | null;
@Input() @Input()
public schemaIds: ReadonlyArray<string>; public schemaIds?: ReadonlyArray<string>;
@Input() @Input()
public language: AppLanguageDto; public language!: AppLanguageDto;
@Input() @Input()
public languages: ReadonlyArray<AppLanguageDto>; public languages!: ReadonlyArray<AppLanguageDto>;
@Input() @Input()
public formContext: any; public formContext!: any;
public schema: SchemaDto; public schema!: SchemaDto;
public schemas: ReadonlyArray<SchemaDto> = []; public schemas: ReadonlyArray<SchemaDto> = [];
public contentForm: EditContentForm; public contentForm!: EditContentForm;
constructor( constructor(
private readonly contentsState: ComponentContentsState, private readonly contentsState: ComponentContentsState,
@ -56,7 +56,7 @@ export class ContentCreatorComponent extends ResourceOwner implements OnInit {
this.schemas = this.schemasState.snapshot.schemas.filter(x => x.canContentsCreate); this.schemas = this.schemasState.snapshot.schemas.filter(x => x.canContentsCreate);
if (this.schemaIds && this.schemaIds.length > 0) { if (this.schemaIds && this.schemaIds.length > 0) {
this.schemas = this.schemas.filter(x => this.schemaIds.indexOf(x.id) >= 0); this.schemas = this.schemas.filter(x => this.schemaIds!.indexOf(x.id) >= 0);
} }
const selectedSchema = this.schemas.find(x => x.name === this.schemaName) || this.schemas[0]; const selectedSchema = this.schemas.find(x => x.name === this.schemaName) || this.schemas[0];

6
frontend/app/features/content/shared/references/reference-dropdown.component.ts

@ -42,13 +42,13 @@ export class ReferenceDropdownComponent extends StatefulControlComponent<State,
private isLoadingFailed = false; private isLoadingFailed = false;
@Input() @Input()
public language: LanguageDto; public language!: LanguageDto;
@Input() @Input()
public languages: ReadonlyArray<LanguageDto>; public languages!: ReadonlyArray<LanguageDto>;
@Input() @Input()
public schemaId: string; public schemaId!: string;
@Input() @Input()
public mode: 'Array' | 'Single' = 'Single'; public mode: 'Array' | 'Single' = 'Single';

6
frontend/app/features/content/shared/references/reference-item.component.ts

@ -24,7 +24,7 @@ export class ReferenceItemComponent implements OnChanges {
public clone = new EventEmitter(); public clone = new EventEmitter();
@Input() @Input()
public language: AppLanguageDto; public language!: AppLanguageDto;
@Input() @Input()
public canRemove?: boolean | null = true; public canRemove?: boolean | null = true;
@ -36,7 +36,7 @@ export class ReferenceItemComponent implements OnChanges {
public isDisabled?: boolean | null; public isDisabled?: boolean | null;
@Input() @Input()
public validations: { [id: string]: boolean }; public validations?: { [id: string]: boolean };
@Input() @Input()
public validityVisible?: boolean | null; public validityVisible?: boolean | null;
@ -45,7 +45,7 @@ export class ReferenceItemComponent implements OnChanges {
public columns = 0; public columns = 0;
@Input('sqxReferenceItem') @Input('sqxReferenceItem')
public content: ContentDto; public content!: ContentDto;
public get valid() { public get valid() {
return !this.validations ? undefined : this.validations[this.content.id]; return !this.validations ? undefined : this.validations[this.content.id];

2
frontend/app/features/content/shared/references/references-checkboxes.component.ts

@ -38,7 +38,7 @@ export class ReferencesCheckboxesComponent extends StatefulControlComponent<Stat
public schemaId: string | undefined | null; public schemaId: string | undefined | null;
@Input() @Input()
public language: LanguageDto; public language!: LanguageDto;
@Input() @Input()
public set disabled(value: boolean | undefined | null) { public set disabled(value: boolean | undefined | null) {

8
frontend/app/features/content/shared/references/references-editor.component.ts

@ -33,16 +33,16 @@ interface State {
}) })
export class ReferencesEditorComponent extends StatefulControlComponent<State, ReadonlyArray<string>> { export class ReferencesEditorComponent extends StatefulControlComponent<State, ReadonlyArray<string>> {
@Input() @Input()
public schemaIds: ReadonlyArray<string>; public schemaIds!: ReadonlyArray<string>;
@Input() @Input()
public language: AppLanguageDto; public language!: AppLanguageDto;
@Input() @Input()
public languages: ReadonlyArray<AppLanguageDto>; public languages!: ReadonlyArray<AppLanguageDto>;
@Input() @Input()
public formContext: any; public formContext!: any;
@Input() @Input()
public allowDuplicates?: boolean | null = true; public allowDuplicates?: boolean | null = true;

6
frontend/app/features/content/shared/references/references-tags.component.ts

@ -38,13 +38,13 @@ export class ReferencesTagsComponent extends StatefulControlComponent<State, Rea
private isLoadingFailed = false; private isLoadingFailed = false;
@Input() @Input()
public schemaId: string; public schemaId!: string;
@Input() @Input()
public language: LanguageDto; public language!: LanguageDto;
@Input() @Input()
public languages: ReadonlyArray<LanguageDto>; public languages!: ReadonlyArray<LanguageDto>;
@Input() @Input()
public set disabled(value: boolean | undefined | null) { public set disabled(value: boolean | undefined | null) {

4
frontend/app/features/dashboard/pages/cards/api-calls-card.component.ts

@ -17,10 +17,10 @@ import { ChartHelpers, ChartOptions } from './shared';
}) })
export class ApiCallsCardComponent implements OnChanges { export class ApiCallsCardComponent implements OnChanges {
@Input() @Input()
public app: AppDto; public app!: AppDto;
@Input() @Input()
public usage: CallsUsageDto; public usage?: CallsUsageDto;
public chartOptions = ChartOptions.Stacked; public chartOptions = ChartOptions.Stacked;
public chartData: any; public chartData: any;

4
frontend/app/features/dashboard/pages/cards/api-calls-summary-card.component.ts

@ -16,10 +16,10 @@ import { AppDto, CallsUsageDto } from '@app/shared';
}) })
export class ApiCallsSummaryCardComponent implements OnChanges { export class ApiCallsSummaryCardComponent implements OnChanges {
@Input() @Input()
public app: AppDto; public app!: AppDto;
@Input() @Input()
public usage: CallsUsageDto; public usage?: CallsUsageDto;
public callsMonth = 0; public callsMonth = 0;
public callsAllowed = 0; public callsAllowed = 0;

2
frontend/app/features/dashboard/pages/cards/api-card.component.ts

@ -16,5 +16,5 @@ import { AppDto } from '@app/shared';
}) })
export class ApiCardComponent { export class ApiCardComponent {
@Input() @Input()
public app: AppDto; public app!: AppDto;
} }

4
frontend/app/features/dashboard/pages/cards/api-performance-card.component.ts

@ -17,10 +17,10 @@ import { ChartHelpers, ChartOptions } from './shared';
}) })
export class ApiPerformanceCardComponent implements OnChanges { export class ApiPerformanceCardComponent implements OnChanges {
@Input() @Input()
public app: AppDto; public app!: AppDto;
@Input() @Input()
public usage: CallsUsageDto; public usage?: CallsUsageDto;
@Input() @Input()
public isStacked?: boolean | null; public isStacked?: boolean | null;

4
frontend/app/features/dashboard/pages/cards/api-traffic-card.component.ts

@ -17,10 +17,10 @@ import { ChartHelpers, ChartOptions } from './shared';
}) })
export class ApiTrafficCardComponent implements OnChanges { export class ApiTrafficCardComponent implements OnChanges {
@Input() @Input()
public app: AppDto; public app!: AppDto;
@Input() @Input()
public usage: CallsUsageDto; public usage?: CallsUsageDto;
@Input() @Input()
public isStacked?: boolean | null; public isStacked?: boolean | null;

4
frontend/app/features/dashboard/pages/cards/api-traffic-summary-card.component.ts

@ -16,10 +16,10 @@ import { AppDto, CallsUsageDto } from '@app/shared';
}) })
export class ApiTrafficSummaryCardComponent implements OnChanges { export class ApiTrafficSummaryCardComponent implements OnChanges {
@Input() @Input()
public app: AppDto; public app!: AppDto;
@Input() @Input()
public usage: CallsUsageDto; public usage?: CallsUsageDto;
public bytesMonth = 0; public bytesMonth = 0;
public bytesAllowed = 0; public bytesAllowed = 0;

4
frontend/app/features/dashboard/pages/cards/asset-uploads-count-card.component.ts

@ -17,10 +17,10 @@ import { ChartHelpers, ChartOptions } from './shared';
}) })
export class AssetUploadsCountCardComponent implements OnChanges { export class AssetUploadsCountCardComponent implements OnChanges {
@Input() @Input()
public app: AppDto; public app!: AppDto;
@Input() @Input()
public usage: ReadonlyArray<StorageUsagePerDateDto>; public usage?: ReadonlyArray<StorageUsagePerDateDto>;
public chartData: any; public chartData: any;
public chartOptions = ChartOptions.Default; public chartOptions = ChartOptions.Default;

4
frontend/app/features/dashboard/pages/cards/asset-uploads-size-card.component.ts

@ -17,10 +17,10 @@ import { ChartHelpers, ChartOptions } from './shared';
}) })
export class AssetUploadsSizeCardComponent implements OnChanges { export class AssetUploadsSizeCardComponent implements OnChanges {
@Input() @Input()
public app: AppDto; public app!: AppDto;
@Input() @Input()
public usage: ReadonlyArray<StorageUsagePerDateDto>; public usage?: ReadonlyArray<StorageUsagePerDateDto>;
public chartData: any; public chartData: any;
public chartOptions = ChartOptions.Default; public chartOptions = ChartOptions.Default;

4
frontend/app/features/dashboard/pages/cards/asset-uploads-size-summary-card.component.ts

@ -16,10 +16,10 @@ import { AppDto, CurrentStorageDto } from '@app/shared';
}) })
export class AssetUploadsSizeSummaryCardComponent implements OnChanges { export class AssetUploadsSizeSummaryCardComponent implements OnChanges {
@Input() @Input()
public app: AppDto; public app!: AppDto;
@Input() @Input()
public usage: CurrentStorageDto; public usage?: CurrentStorageDto;
public storageCurrent = 0; public storageCurrent = 0;
public storageAllowed = 0; public storageAllowed = 0;

6
frontend/app/features/dashboard/pages/cards/content-summary-card.component.ts

@ -14,17 +14,17 @@ interface State {
} }
@Component({ @Component({
selector: 'sqx-content-summary-card', selector: 'sqx-content-summary-card[app]',
styleUrls: ['./content-summary-card.component.scss'], styleUrls: ['./content-summary-card.component.scss'],
templateUrl: './content-summary-card.component.html', templateUrl: './content-summary-card.component.html',
changeDetection: ChangeDetectionStrategy.OnPush, changeDetection: ChangeDetectionStrategy.OnPush,
}) })
export class ContentSummaryCardComponent extends StatefulComponent<State> implements OnInit { export class ContentSummaryCardComponent extends StatefulComponent<State> implements OnInit {
@Input() @Input()
public app: AppDto; public app!: AppDto;
@Input() @Input()
public options: any; public options?: any;
constructor(changeDetector: ChangeDetectorRef, constructor(changeDetector: ChangeDetectorRef,
private readonly contentsService: ContentsService, private readonly contentsService: ContentsService,

2
frontend/app/features/dashboard/pages/cards/github-card.component.ts

@ -16,5 +16,5 @@ import { AppDto } from '@app/shared';
}) })
export class GithubCardComponent { export class GithubCardComponent {
@Input() @Input()
public app: AppDto; public app!: AppDto;
} }

4
frontend/app/features/dashboard/pages/cards/history-card.component.ts

@ -17,9 +17,9 @@ import { Observable } from 'rxjs';
}) })
export class HistoryCardComponent implements OnChanges { export class HistoryCardComponent implements OnChanges {
@Input() @Input()
public app: AppDto; public app!: AppDto;
public history: Observable<ReadonlyArray<HistoryEventDto>>; public history?: Observable<ReadonlyArray<HistoryEventDto>>;
constructor( constructor(
private readonly historyService: HistoryService, private readonly historyService: HistoryService,

4
frontend/app/features/dashboard/pages/cards/iframe-card.component.ts

@ -16,13 +16,13 @@ import { AppDto } from '@app/shared';
}) })
export class IFrameCardComponent implements AfterViewInit { export class IFrameCardComponent implements AfterViewInit {
@Input() @Input()
public app: AppDto; public app!: AppDto;
@Input() @Input()
public options: any; public options: any;
@ViewChild('iframe', { static: false }) @ViewChild('iframe', { static: false })
public iframe: ElementRef<HTMLIFrameElement>; public iframe!: ElementRef<HTMLIFrameElement>;
public ngAfterViewInit() { public ngAfterViewInit() {
this.iframe.nativeElement.src = this.options?.src; this.iframe.nativeElement.src = this.options?.src;

2
frontend/app/features/dashboard/pages/cards/schema-card.component.ts

@ -16,5 +16,5 @@ import { AppDto } from '@app/shared';
}) })
export class SchemaCardComponent { export class SchemaCardComponent {
@Input() @Input()
public app: AppDto; public app!: AppDto;
} }

2
frontend/app/features/dashboard/pages/cards/support-card.component.ts

@ -16,5 +16,5 @@ import { AppDto } from '@app/shared';
}) })
export class SupportCardComponent { export class SupportCardComponent {
@Input() @Input()
public app: AppDto; public app!: AppDto;
} }

8
frontend/app/features/dashboard/pages/dashboard-config.component.ts

@ -11,16 +11,16 @@ import { GridsterItem } from 'angular-gridster2';
import { take } from 'rxjs/operators'; import { take } from 'rxjs/operators';
@Component({ @Component({
selector: 'sqx-dashboard-config', selector: 'sqx-dashboard-config[app][config]',
styleUrls: ['./dashboard-config.component.scss'], styleUrls: ['./dashboard-config.component.scss'],
templateUrl: './dashboard-config.component.html', templateUrl: './dashboard-config.component.html',
}) })
export class DashboardConfigComponent implements OnChanges { export class DashboardConfigComponent implements OnChanges {
@Input() @Input()
public app: AppDto; public app!: AppDto;
@Input() @Input()
public config: GridsterItem[]; public config!: GridsterItem[];
@Input() @Input()
public needsAttention?: boolean | null; public needsAttention?: boolean | null;
@ -31,7 +31,7 @@ export class DashboardConfigComponent implements OnChanges {
public configOptions: ReadonlyArray<GridsterItem>; public configOptions: ReadonlyArray<GridsterItem>;
public expertDialog = new DialogModel(); public expertDialog = new DialogModel();
public expertConfig: GridsterItem[]; public expertConfig?: GridsterItem[];
public dropdownModal = new ModalModel(); public dropdownModal = new ModalModel();

2
frontend/app/features/dashboard/pages/dashboard-page.component.html

@ -74,7 +74,7 @@
<div class="dashboard-settings" *ngIf="grid"> <div class="dashboard-settings" *ngIf="grid">
<sqx-dashboard-config [app]="app" [needsAttention]="isScrolled" <sqx-dashboard-config [app]="app" [needsAttention]="isScrolled"
[config]="gridConfig" [config]="gridConfig!"
(configChange)="changeConfig($event)"> (configChange)="changeConfig($event)">
</sqx-dashboard-config> </sqx-dashboard-config>
</div> </div>

12
frontend/app/features/dashboard/pages/dashboard-page.component.ts

@ -19,18 +19,18 @@ import { GridsterComponent, GridsterConfig, GridsterItem, GridType } from 'angul
}) })
export class DashboardPageComponent extends ResourceOwner implements AfterViewInit, OnInit { export class DashboardPageComponent extends ResourceOwner implements AfterViewInit, OnInit {
@ViewChild('grid') @ViewChild('grid')
public grid: GridsterComponent; public grid!: GridsterComponent;
public selectedApp = this.appsState.selectedApp.pipe(defined()); public selectedApp = this.appsState.selectedApp.pipe(defined());
public isStacked: boolean; public isStacked = false;
public storageCurrent: CurrentStorageDto; public storageCurrent?: CurrentStorageDto;
public storageUsage: ReadonlyArray<StorageUsagePerDateDto>; public storageUsage?: ReadonlyArray<StorageUsagePerDateDto>;
public callsUsage: CallsUsageDto; public callsUsage?: CallsUsageDto;
public gridConfig: GridsterItem[]; public gridConfig?: GridsterItem[];
public gridOptions = DEFAULT_OPTIONS; public gridOptions = DEFAULT_OPTIONS;
public isScrolled = false; public isScrolled = false;

4
frontend/app/features/rules/pages/events/rule-event.component.ts

@ -16,10 +16,10 @@ import { RuleEventDto } from '@app/shared';
}) })
export class RuleEventComponent { export class RuleEventComponent {
@Input('sqxRuleEvent') @Input('sqxRuleEvent')
public event: RuleEventDto; public event!: RuleEventDto;
@Input() @Input()
public expanded: boolean; public expanded = false;
@Output() @Output()
public expandedChange = new EventEmitter<any>(); public expandedChange = new EventEmitter<any>();

8
frontend/app/features/rules/pages/rule/rule-page.component.ts

@ -17,7 +17,7 @@ type ComponentState<T> = { type: string; values: any; form: T };
templateUrl: './rule-page.component.html', templateUrl: './rule-page.component.html',
}) })
export class RulePageComponent extends ResourceOwner implements OnInit { export class RulePageComponent extends ResourceOwner implements OnInit {
public supportedActions: { [name: string]: RuleElementDto }; public supportedActions: { [name: string]: RuleElementDto } = {};
public supportedTriggers = ALL_TRIGGERS; public supportedTriggers = ALL_TRIGGERS;
public rule?: RuleDto | null; public rule?: RuleDto | null;
@ -33,7 +33,7 @@ export class RulePageComponent extends ResourceOwner implements OnInit {
} }
public get actionElement() { public get actionElement() {
return this.supportedActions[this.currentAction?.type || '']; return this.supportedActions![this.currentAction?.type || ''];
} }
public get triggerElement() { public get triggerElement() {
@ -86,14 +86,14 @@ export class RulePageComponent extends ResourceOwner implements OnInit {
} }
public selectAction(type: string, values = {}) { public selectAction(type: string, values = {}) {
if (this.currentAction?.type !== type) { if (this.currentAction?.type !== type && this.supportedActions) {
const form = new ActionForm(this.supportedActions[type], type); const form = new ActionForm(this.supportedActions[type], type);
this.currentAction = { form, type, values }; this.currentAction = { form, type, values };
this.currentAction.form.setEnabled(this.isEditable); this.currentAction.form.setEnabled(this.isEditable);
} }
this.currentAction.form.load(values); this.currentAction!.form.load(values);
} }
public selectTrigger(type: string, values = {}) { public selectTrigger(type: string, values = {}) {

6
frontend/app/features/rules/pages/rules/rule.component.ts

@ -16,13 +16,13 @@ import { ActionsDto, ModalModel, RuleDto, RulesState, TriggersDto } from '@app/s
}) })
export class RuleComponent { export class RuleComponent {
@Input() @Input()
public ruleTriggers: TriggersDto; public ruleTriggers!: TriggersDto;
@Input() @Input()
public ruleActions: ActionsDto; public ruleActions!: ActionsDto;
@Input() @Input()
public rule: RuleDto; public rule!: RuleDto;
public dropdown = new ModalModel(); public dropdown = new ModalModel();

2
frontend/app/features/rules/pages/rules/rules-page.component.ts

@ -14,7 +14,7 @@ import { ALL_TRIGGERS, RuleDto, RuleElementDto, RulesService, RulesState, Schema
templateUrl: './rules-page.component.html', templateUrl: './rules-page.component.html',
}) })
export class RulesPageComponent implements OnInit { export class RulesPageComponent implements OnInit {
public supportedActions: { [name: string]: RuleElementDto }; public supportedActions?: { [name: string]: RuleElementDto };
public supportedTriggers = ALL_TRIGGERS; public supportedTriggers = ALL_TRIGGERS;
constructor( constructor(

4
frontend/app/features/rules/pages/simulator/simulated-rule-event.component.ts

@ -35,10 +35,10 @@ const ERRORS_FAILED = [
}) })
export class SimulatedRuleEventComponent { export class SimulatedRuleEventComponent {
@Input('sqxSimulatedRuleEvent') @Input('sqxSimulatedRuleEvent')
public event: SimulatedRuleEventDto; public event!: SimulatedRuleEventDto;
@Input() @Input()
public expanded: boolean; public expanded = false;
@Output() @Output()
public expandedChange = new EventEmitter<any>(); public expandedChange = new EventEmitter<any>();

6
frontend/app/features/rules/shared/actions/formattable-input.component.ts

@ -32,16 +32,16 @@ export class FormattableInputComponent implements ControlValueAccessor, AfterVie
private value?: string; private value?: string;
@Input() @Input()
public type: 'Text' | 'Code'; public type: 'Text' | 'Code' = 'Text';
@Input() @Input()
public formattable = true; public formattable = true;
@ViewChild(DefaultValueAccessor) @ViewChild(DefaultValueAccessor)
public inputEditor: DefaultValueAccessor; public inputEditor!: DefaultValueAccessor;
@ViewChild(CodeEditorComponent) @ViewChild(CodeEditorComponent)
public codeEditor: CodeEditorComponent; public codeEditor!: CodeEditorComponent;
public disabled = false; public disabled = false;

2
frontend/app/features/rules/shared/actions/generic-action.component.ts

@ -16,5 +16,5 @@ import { ActionForm } from '@app/shared';
}) })
export class GenericActionComponent { export class GenericActionComponent {
@Input() @Input()
public actionForm: ActionForm; public actionForm!: ActionForm;
} }

6
frontend/app/features/rules/shared/rule-element.component.ts

@ -16,14 +16,14 @@ import { RuleElementDto } from '@app/shared';
}) })
export class RuleElementComponent { export class RuleElementComponent {
@Input() @Input()
public type: string; public type!: string;
@Input() @Input()
public element: RuleElementDto; public element!: RuleElementDto;
@Input() @Input()
public isSmall?: boolean | null = true; public isSmall?: boolean | null = true;
@Input() @Input()
public disabled: boolean; public disabled = false;
} }

4
frontend/app/features/rules/shared/rule-icon.component.ts

@ -9,14 +9,14 @@ import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
import { RuleElementDto } from '@app/shared'; import { RuleElementDto } from '@app/shared';
@Component({ @Component({
selector: 'sqx-rule-icon', selector: 'sqx-rule-icon[element]',
styleUrls: ['./rule-icon.component.scss'], styleUrls: ['./rule-icon.component.scss'],
templateUrl: './rule-icon.component.html', templateUrl: './rule-icon.component.html',
changeDetection: ChangeDetectionStrategy.OnPush, changeDetection: ChangeDetectionStrategy.OnPush,
}) })
export class RuleIconComponent { export class RuleIconComponent {
@Input() @Input()
public element: RuleElementDto; public element!: RuleElementDto;
@Input() @Input()
public size: 'sm' | 'md' | 'lg' = 'sm'; public size: 'sm' | 'md' | 'lg' = 'sm';

2
frontend/app/features/rules/shared/triggers/asset-changed-trigger.component.ts

@ -15,5 +15,5 @@ import { TriggerForm } from '@app/shared';
}) })
export class AssetChangedTriggerComponent { export class AssetChangedTriggerComponent {
@Input() @Input()
public triggerForm: TriggerForm; public triggerForm!: TriggerForm;
} }

2
frontend/app/features/rules/shared/triggers/comment-trigger.component.ts

@ -15,5 +15,5 @@ import { TriggerForm } from '@app/shared';
}) })
export class CommentTriggerComponent { export class CommentTriggerComponent {
@Input() @Input()
public triggerForm: TriggerForm; public triggerForm!: TriggerForm;
} }

8
frontend/app/features/rules/shared/triggers/content-changed-trigger.component.ts

@ -24,15 +24,15 @@ export class ContentChangedTriggerComponent implements OnChanges {
public schemas?: ReadonlyArray<SchemaDto> | null; public schemas?: ReadonlyArray<SchemaDto> | null;
@Input() @Input()
public trigger: any; public trigger!: any;
@Input() @Input()
public triggerForm: TriggerForm; public triggerForm!: TriggerForm;
public triggerSchemas: TriggerSchemaForm[] = []; public triggerSchemas: TriggerSchemaForm[] = [];
public schemaToAdd: SchemaDto; public schemaToAdd!: SchemaDto;
public schemasToAdd: ReadonlyArray<SchemaDto>; public schemasToAdd!: ReadonlyArray<SchemaDto>;
public get hasSchema() { public get hasSchema() {
return !!this.schemaToAdd; return !!this.schemaToAdd;

2
frontend/app/features/rules/shared/triggers/schema-changed-trigger.component.ts

@ -15,5 +15,5 @@ import { TriggerForm } from '@app/shared';
}) })
export class SchemaChangedTriggerComponent { export class SchemaChangedTriggerComponent {
@Input() @Input()
public triggerForm: TriggerForm; public triggerForm!: TriggerForm;
} }

2
frontend/app/features/rules/shared/triggers/usage-trigger.component.ts

@ -15,5 +15,5 @@ import { TriggerForm } from '@app/shared';
}) })
export class UsageTriggerComponent { export class UsageTriggerComponent {
@Input() @Input()
public triggerForm: TriggerForm; public triggerForm!: TriggerForm;
} }

2
frontend/app/features/schemas/pages/schema/common/schema-edit-form.component.ts

@ -15,7 +15,7 @@ import { EditSchemaForm, SchemaDto, SchemasState } from '@app/shared';
}) })
export class SchemaEditFormComponent implements OnChanges { export class SchemaEditFormComponent implements OnChanges {
@Input() @Input()
public schema: SchemaDto; public schema!: SchemaDto;
public fieldForm = new EditSchemaForm(); public fieldForm = new EditSchemaForm();

2
frontend/app/features/schemas/pages/schema/export/schema-export-form.component.ts

@ -15,7 +15,7 @@ import { SchemaDto, SchemasState, SynchronizeSchemaForm } from '@app/shared';
}) })
export class SchemaExportFormComponent implements OnChanges { export class SchemaExportFormComponent implements OnChanges {
@Input() @Input()
public schema: SchemaDto; public schema!: SchemaDto;
public synchronizeForm = new SynchronizeSchemaForm(); public synchronizeForm = new SynchronizeSchemaForm();

8
frontend/app/features/schemas/pages/schema/fields/field-wizard.component.ts

@ -17,13 +17,13 @@ const DEFAULT_FIELD = { name: '', partitioning: 'invariant', properties: createP
}) })
export class FieldWizardComponent implements OnInit { export class FieldWizardComponent implements OnInit {
@ViewChild('nameInput', { static: false }) @ViewChild('nameInput', { static: false })
public nameInput: ElementRef<HTMLElement>; public nameInput!: ElementRef<HTMLElement>;
@Input() @Input()
public schema: SchemaDto; public schema!: SchemaDto;
@Input() @Input()
public settings: AppSettingsDto; public settings!: AppSettingsDto;
@Input() @Input()
public parent: RootFieldDto | null | undefined; public parent: RootFieldDto | null | undefined;
@ -36,7 +36,7 @@ export class FieldWizardComponent implements OnInit {
} }
public fieldTypes = fieldTypes; public fieldTypes = fieldTypes;
public field: FieldDto; public field!: FieldDto;
public addFieldForm = new AddFieldForm(); public addFieldForm = new AddFieldForm();

12
frontend/app/features/schemas/pages/schema/fields/field.component.ts

@ -16,19 +16,19 @@ import { AppSettingsDto, createProperties, DialogModel, EditFieldForm, LanguageD
}) })
export class FieldComponent implements OnChanges { export class FieldComponent implements OnChanges {
@Input() @Input()
public field: NestedFieldDto | RootFieldDto; public field!: NestedFieldDto | RootFieldDto;
@Input() @Input()
public schema: SchemaDto; public schema!: SchemaDto;
@Input() @Input()
public parent: RootFieldDto; public parent?: RootFieldDto;
@Input() @Input()
public languages: ReadonlyArray<LanguageDto>; public languages!: ReadonlyArray<LanguageDto>;
@Input() @Input()
public settings: AppSettingsDto; public settings!: AppSettingsDto;
public get isLocalizable() { public get isLocalizable() {
return (this.parent && this.parent.isLocalizable) || this.field['isLocalizable']; return (this.parent && this.parent.isLocalizable) || this.field['isLocalizable'];
@ -41,7 +41,7 @@ export class FieldComponent implements OnChanges {
public isEditing = false; public isEditing = false;
public isEditable?: boolean | null; public isEditable?: boolean | null;
public editForm: EditFieldForm; public editForm!: EditFieldForm;
public addFieldDialog = new DialogModel(); public addFieldDialog = new DialogModel();

6
frontend/app/features/schemas/pages/schema/fields/forms/field-form-common.component.ts

@ -16,11 +16,11 @@ import { FieldDto, SchemaDto } from '@app/shared';
}) })
export class FieldFormCommonComponent { export class FieldFormCommonComponent {
@Input() @Input()
public fieldForm: FormGroup; public fieldForm!: FormGroup;
@Input() @Input()
public field: FieldDto; public field!: FieldDto;
@Input() @Input()
public schema: SchemaDto; public schema!: SchemaDto;
} }

6
frontend/app/features/schemas/pages/schema/fields/forms/field-form-ui.component.ts

@ -16,11 +16,11 @@ import { FieldDto, SchemaDto } from '@app/shared';
}) })
export class FieldFormUIComponent { export class FieldFormUIComponent {
@Input() @Input()
public fieldForm: FormGroup; public fieldForm!: FormGroup;
@Input() @Input()
public field: FieldDto; public field!: FieldDto;
@Input() @Input()
public schema: SchemaDto; public schema!: SchemaDto;
} }

10
frontend/app/features/schemas/pages/schema/fields/forms/field-form-validation.component.ts

@ -16,19 +16,19 @@ import { AppSettingsDto, FieldDto, LanguageDto, SchemaDto } from '@app/shared';
}) })
export class FieldFormValidationComponent { export class FieldFormValidationComponent {
@Input() @Input()
public fieldForm: FormGroup; public fieldForm!: FormGroup;
@Input() @Input()
public field: FieldDto; public field!: FieldDto;
@Input() @Input()
public schema: SchemaDto; public schema!: SchemaDto;
@Input() @Input()
public settings: AppSettingsDto; public settings!: AppSettingsDto;
@Input() @Input()
public languages: ReadonlyArray<LanguageDto>; public languages!: ReadonlyArray<LanguageDto>;
@Input() @Input()
public isLocalizable?: boolean | null; public isLocalizable?: boolean | null;

10
frontend/app/features/schemas/pages/schema/fields/forms/field-form.component.ts

@ -22,19 +22,19 @@ export class FieldFormComponent implements AfterViewInit {
public isEditable?: boolean | null; public isEditable?: boolean | null;
@Input() @Input()
public fieldForm: FormGroup; public fieldForm!: FormGroup;
@Input() @Input()
public field: FieldDto; public field!: FieldDto;
@Input() @Input()
public schema: SchemaDto; public schema!: SchemaDto;
@Input() @Input()
public settings: AppSettingsDto; public settings!: AppSettingsDto;
@Input() @Input()
public languages: ReadonlyArray<LanguageDto>; public languages!: ReadonlyArray<LanguageDto>;
@Input() @Input()
public isLocalizable?: boolean | null; public isLocalizable?: boolean | null;

6
frontend/app/features/schemas/pages/schema/fields/schema-fields.component.ts

@ -7,7 +7,7 @@
import { CdkDragDrop } from '@angular/cdk/drag-drop'; import { CdkDragDrop } from '@angular/cdk/drag-drop';
import { Component, Input, OnInit } from '@angular/core'; import { Component, Input, OnInit } from '@angular/core';
import { AppsState, DialogModel, FieldDto, fieldTypes, LanguagesState, SchemaDto, SchemasState, sorted } from '@app/shared'; import { AppsState, DialogModel, FieldDto, fieldTypes, LanguagesState, RootFieldDto, SchemaDto, SchemasState, sorted } from '@app/shared';
@Component({ @Component({
selector: 'sqx-schema-fields[schema]', selector: 'sqx-schema-fields[schema]',
@ -18,7 +18,7 @@ export class SchemaFieldsComponent implements OnInit {
public fieldTypes = fieldTypes; public fieldTypes = fieldTypes;
@Input() @Input()
public schema: SchemaDto; public schema!: SchemaDto;
public addFieldDialog = new DialogModel(); public addFieldDialog = new DialogModel();
@ -36,7 +36,7 @@ export class SchemaFieldsComponent implements OnInit {
this.languageState.load(); this.languageState.load();
} }
public sortFields(event: CdkDragDrop<ReadonlyArray<FieldDto>>) { public sortFields(event: CdkDragDrop<ReadonlyArray<RootFieldDto>>) {
this.schemasState.orderFields(this.schema, sorted(event)).subscribe(); this.schemasState.orderFields(this.schema, sorted(event)).subscribe();
} }

6
frontend/app/features/schemas/pages/schema/fields/types/array-validation.component.ts

@ -16,13 +16,13 @@ import { ArrayFieldPropertiesDto, FieldDto, SchemaTagSource } from '@app/shared'
}) })
export class ArrayValidationComponent { export class ArrayValidationComponent {
@Input() @Input()
public fieldForm: FormGroup; public fieldForm!: FormGroup;
@Input() @Input()
public field: FieldDto; public field!: FieldDto;
@Input() @Input()
public properties: ArrayFieldPropertiesDto; public properties!: ArrayFieldPropertiesDto;
constructor( constructor(
public readonly schemasSource: SchemaTagSource, public readonly schemasSource: SchemaTagSource,

6
frontend/app/features/schemas/pages/schema/fields/types/assets-ui.component.ts

@ -16,11 +16,11 @@ import { AssetsFieldPropertiesDto, FieldDto } from '@app/shared';
}) })
export class AssetsUIComponent { export class AssetsUIComponent {
@Input() @Input()
public fieldForm: FormGroup; public fieldForm!: FormGroup;
@Input() @Input()
public field: FieldDto; public field!: FieldDto;
@Input() @Input()
public properties: AssetsFieldPropertiesDto; public properties!: AssetsFieldPropertiesDto;
} }

10
frontend/app/features/schemas/pages/schema/fields/types/assets-validation.component.ts

@ -10,22 +10,22 @@ import { FormGroup } from '@angular/forms';
import { AssetsFieldPropertiesDto, FieldDto, LanguageDto } from '@app/shared'; import { AssetsFieldPropertiesDto, FieldDto, LanguageDto } from '@app/shared';
@Component({ @Component({
selector: 'sqx-assets-validation[field][fieldForm][properties]', selector: 'sqx-assets-validation[field][fieldForm][languages][properties]',
styleUrls: ['assets-validation.component.scss'], styleUrls: ['assets-validation.component.scss'],
templateUrl: 'assets-validation.component.html', templateUrl: 'assets-validation.component.html',
}) })
export class AssetsValidationComponent { export class AssetsValidationComponent {
@Input() @Input()
public fieldForm: FormGroup; public fieldForm!: FormGroup;
@Input() @Input()
public field: FieldDto; public field!: FieldDto;
@Input() @Input()
public properties: AssetsFieldPropertiesDto; public properties!: AssetsFieldPropertiesDto;
@Input() @Input()
public languages: ReadonlyArray<LanguageDto>; public languages!: ReadonlyArray<LanguageDto>;
@Input() @Input()
public isLocalizable?: boolean | null; public isLocalizable?: boolean | null;

6
frontend/app/features/schemas/pages/schema/fields/types/boolean-ui.component.ts

@ -18,11 +18,11 @@ export class BooleanUIComponent {
public readonly editors = BOOLEAN_FIELD_EDITORS; public readonly editors = BOOLEAN_FIELD_EDITORS;
@Input() @Input()
public fieldForm: FormGroup; public fieldForm!: FormGroup;
@Input() @Input()
public field: FieldDto; public field!: FieldDto;
@Input() @Input()
public properties: BooleanFieldPropertiesDto; public properties!: BooleanFieldPropertiesDto;
} }

12
frontend/app/features/schemas/pages/schema/fields/types/boolean-validation.component.ts

@ -11,27 +11,27 @@ import { BooleanFieldPropertiesDto, FieldDto, hasNoValue$, LanguageDto } from '@
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
@Component({ @Component({
selector: 'sqx-boolean-validation[field][fieldForm][properties]', selector: 'sqx-boolean-validation[field][fieldForm][languages][properties]',
styleUrls: ['boolean-validation.component.scss'], styleUrls: ['boolean-validation.component.scss'],
templateUrl: 'boolean-validation.component.html', templateUrl: 'boolean-validation.component.html',
}) })
export class BooleanValidationComponent implements OnChanges { export class BooleanValidationComponent implements OnChanges {
@Input() @Input()
public fieldForm: FormGroup; public fieldForm!: FormGroup;
@Input() @Input()
public field: FieldDto; public field!: FieldDto;
@Input() @Input()
public properties: BooleanFieldPropertiesDto; public properties!: BooleanFieldPropertiesDto;
@Input() @Input()
public languages: ReadonlyArray<LanguageDto>; public languages!: ReadonlyArray<LanguageDto>;
@Input() @Input()
public isLocalizable?: boolean | null; public isLocalizable?: boolean | null;
public showDefaultValue: Observable<boolean>; public showDefaultValue?: Observable<boolean>;
public ngOnChanges(changes: SimpleChanges) { public ngOnChanges(changes: SimpleChanges) {
if (changes['fieldForm']) { if (changes['fieldForm']) {

6
frontend/app/features/schemas/pages/schema/fields/types/component-ui.component.ts

@ -16,11 +16,11 @@ import { FieldDto, ReferencesFieldPropertiesDto } from '@app/shared';
}) })
export class ComponentUIComponent { export class ComponentUIComponent {
@Input() @Input()
public fieldForm: FormGroup; public fieldForm!: FormGroup;
@Input() @Input()
public field: FieldDto; public field!: FieldDto;
@Input() @Input()
public properties: ReferencesFieldPropertiesDto; public properties!: ReferencesFieldPropertiesDto;
} }

6
frontend/app/features/schemas/pages/schema/fields/types/component-validation.component.ts

@ -16,13 +16,13 @@ import { FieldDto, ReferencesFieldPropertiesDto, SchemaTagSource } from '@app/sh
}) })
export class ComponentValidationComponent { export class ComponentValidationComponent {
@Input() @Input()
public fieldForm: FormGroup; public fieldForm!: FormGroup;
@Input() @Input()
public field: FieldDto; public field!: FieldDto;
@Input() @Input()
public properties: ReferencesFieldPropertiesDto; public properties!: ReferencesFieldPropertiesDto;
constructor( constructor(
public readonly schemasSource: SchemaTagSource, public readonly schemasSource: SchemaTagSource,

6
frontend/app/features/schemas/pages/schema/fields/types/components-ui.component.ts

@ -16,11 +16,11 @@ import { FieldDto, ReferencesFieldPropertiesDto } from '@app/shared';
}) })
export class ComponentsUIComponent { export class ComponentsUIComponent {
@Input() @Input()
public fieldForm: FormGroup; public fieldForm!: FormGroup;
@Input() @Input()
public field: FieldDto; public field!: FieldDto;
@Input() @Input()
public properties: ReferencesFieldPropertiesDto; public properties!: ReferencesFieldPropertiesDto;
} }

6
frontend/app/features/schemas/pages/schema/fields/types/components-validation.component.ts

@ -16,13 +16,13 @@ import { FieldDto, ReferencesFieldPropertiesDto, SchemaTagSource } from '@app/sh
}) })
export class ComponentsValidationComponent { export class ComponentsValidationComponent {
@Input() @Input()
public fieldForm: FormGroup; public fieldForm!: FormGroup;
@Input() @Input()
public field: FieldDto; public field!: FieldDto;
@Input() @Input()
public properties: ReferencesFieldPropertiesDto; public properties!: ReferencesFieldPropertiesDto;
constructor( constructor(
public readonly schemasSource: SchemaTagSource, public readonly schemasSource: SchemaTagSource,

6
frontend/app/features/schemas/pages/schema/fields/types/date-time-ui.component.ts

@ -19,11 +19,11 @@ export class DateTimeUIComponent {
public readonly editors = DATETIME_FIELD_EDITORS; public readonly editors = DATETIME_FIELD_EDITORS;
@Input() @Input()
public fieldForm: FormGroup; public fieldForm!: FormGroup;
@Input() @Input()
public field: FieldDto; public field!: FieldDto;
@Input() @Input()
public properties: DateTimeFieldPropertiesDto; public properties!: DateTimeFieldPropertiesDto;
} }

14
frontend/app/features/schemas/pages/schema/fields/types/date-time-validation.component.ts

@ -13,28 +13,28 @@ import { Observable } from 'rxjs';
const CALCULATED_DEFAULT_VALUES: ReadonlyArray<string> = ['Now', 'Today']; const CALCULATED_DEFAULT_VALUES: ReadonlyArray<string> = ['Now', 'Today'];
@Component({ @Component({
selector: 'sqx-date-time-validation[field][fieldForm][properties]', selector: 'sqx-date-time-validation[field][fieldForm][languages][properties]',
styleUrls: ['date-time-validation.component.scss'], styleUrls: ['date-time-validation.component.scss'],
templateUrl: 'date-time-validation.component.html', templateUrl: 'date-time-validation.component.html',
}) })
export class DateTimeValidationComponent implements OnChanges { export class DateTimeValidationComponent implements OnChanges {
@Input() @Input()
public fieldForm: FormGroup; public fieldForm!: FormGroup;
@Input() @Input()
public field: FieldDto; public field!: FieldDto;
@Input() @Input()
public properties: DateTimeFieldPropertiesDto; public properties!: DateTimeFieldPropertiesDto;
@Input() @Input()
public languages: ReadonlyArray<LanguageDto>; public languages!: ReadonlyArray<LanguageDto>;
@Input() @Input()
public isLocalizable?: boolean | null; public isLocalizable?: boolean | null;
public showDefaultValues: Observable<boolean>; public showDefaultValues?: Observable<boolean>;
public showDefaultValue: Observable<boolean>; public showDefaultValue?: Observable<boolean>;
public calculatedDefaultValues = CALCULATED_DEFAULT_VALUES; public calculatedDefaultValues = CALCULATED_DEFAULT_VALUES;

6
frontend/app/features/schemas/pages/schema/fields/types/geolocation-ui.component.ts

@ -16,11 +16,11 @@ import { FieldDto, GeolocationFieldPropertiesDto } from '@app/shared';
}) })
export class GeolocationUIComponent { export class GeolocationUIComponent {
@Input() @Input()
public fieldForm: FormGroup; public fieldForm!: FormGroup;
@Input() @Input()
public field: FieldDto; public field!: FieldDto;
@Input() @Input()
public properties: GeolocationFieldPropertiesDto; public properties!: GeolocationFieldPropertiesDto;
} }

6
frontend/app/features/schemas/pages/schema/fields/types/geolocation-validation.component.ts

@ -16,11 +16,11 @@ import { FieldDto, GeolocationFieldPropertiesDto } from '@app/shared';
}) })
export class GeolocationValidationComponent { export class GeolocationValidationComponent {
@Input() @Input()
public fieldForm: FormGroup; public fieldForm!: FormGroup;
@Input() @Input()
public field: FieldDto; public field!: FieldDto;
@Input() @Input()
public properties: GeolocationFieldPropertiesDto; public properties!: GeolocationFieldPropertiesDto;
} }

6
frontend/app/features/schemas/pages/schema/fields/types/json-ui.component.ts

@ -16,11 +16,11 @@ import { FieldDto, JsonFieldPropertiesDto } from '@app/shared';
}) })
export class JsonUIComponent { export class JsonUIComponent {
@Input() @Input()
public fieldForm: FormGroup; public fieldForm!: FormGroup;
@Input() @Input()
public field: FieldDto; public field!: FieldDto;
@Input() @Input()
public properties: JsonFieldPropertiesDto; public properties!: JsonFieldPropertiesDto;
} }

6
frontend/app/features/schemas/pages/schema/fields/types/json-validation.component.ts

@ -16,11 +16,11 @@ import { FieldDto, JsonFieldPropertiesDto } from '@app/shared';
}) })
export class JsonValidationComponent { export class JsonValidationComponent {
@Input() @Input()
public fieldForm: FormGroup; public fieldForm!: FormGroup;
@Input() @Input()
public field: FieldDto; public field!: FieldDto;
@Input() @Input()
public properties: JsonFieldPropertiesDto; public properties!: JsonFieldPropertiesDto;
} }

10
frontend/app/features/schemas/pages/schema/fields/types/number-ui.component.ts

@ -20,16 +20,16 @@ export class NumberUIComponent extends ResourceOwner implements OnChanges {
public readonly editors = NUMBER_FIELD_EDITORS; public readonly editors = NUMBER_FIELD_EDITORS;
@Input() @Input()
public fieldForm: FormGroup; public fieldForm!: FormGroup;
@Input() @Input()
public field: FieldDto; public field!: FieldDto;
@Input() @Input()
public properties: NumberFieldPropertiesDto; public properties!: NumberFieldPropertiesDto;
public hideAllowedValues: Observable<boolean>; public hideAllowedValues?: Observable<boolean>;
public hideInlineEditable: Observable<boolean>; public hideInlineEditable?: Observable<boolean>;
public ngOnChanges(changes: SimpleChanges) { public ngOnChanges(changes: SimpleChanges) {
if (changes['fieldForm']) { if (changes['fieldForm']) {

12
frontend/app/features/schemas/pages/schema/fields/types/number-validation.component.ts

@ -10,25 +10,25 @@ import { FormGroup } from '@angular/forms';
import { FieldDto, LanguageDto, NumberFieldPropertiesDto, RootFieldDto, SchemaDto, Types } from '@app/shared'; import { FieldDto, LanguageDto, NumberFieldPropertiesDto, RootFieldDto, SchemaDto, Types } from '@app/shared';
@Component({ @Component({
selector: 'sqx-number-validation[field][fieldForm][properties][schema]', selector: 'sqx-number-validation[field][fieldForm][languages][properties][schema]',
styleUrls: ['number-validation.component.scss'], styleUrls: ['number-validation.component.scss'],
templateUrl: 'number-validation.component.html', templateUrl: 'number-validation.component.html',
}) })
export class NumberValidationComponent { export class NumberValidationComponent {
@Input() @Input()
public fieldForm: FormGroup; public fieldForm!: FormGroup;
@Input() @Input()
public field: FieldDto; public field!: FieldDto;
@Input() @Input()
public schema: SchemaDto; public schema!: SchemaDto;
@Input() @Input()
public properties: NumberFieldPropertiesDto; public properties!: NumberFieldPropertiesDto;
@Input() @Input()
public languages: ReadonlyArray<LanguageDto>; public languages!: ReadonlyArray<LanguageDto>;
@Input() @Input()
public isLocalizable?: boolean | null; public isLocalizable?: boolean | null;

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save