From a8d1684e76770cab84da3e1b784328ff9507775a Mon Sep 17 00:00:00 2001 From: Sebastian Stehle Date: Tue, 4 Jan 2022 13:44:00 +0100 Subject: [PATCH] Strict (#821) * Update packages * Test * Lint fixes. * strict mode --- frontend/app-config/webpack.config.js | 6 +- .../event-consumer.component.ts | 2 +- .../pages/users/user.component.ts | 2 +- .../pages/graphql/graphql-page.component.ts | 2 +- .../app/features/apps/pages/app.component.ts | 2 +- .../apps/pages/apps-page.component.html | 2 +- .../apps/pages/apps-page.component.ts | 4 +- .../apps/pages/news-dialog.component.ts | 2 +- .../pages/asset-tag-dialog.component.ts | 2 +- .../assets/pages/asset-tags.component.html | 2 +- .../assets/pages/asset-tags.component.ts | 8 +- .../assets/pages/assets-page.component.ts | 2 +- .../pages/calendar/calendar-page.component.ts | 8 +- .../pages/content/content-event.component.ts | 6 +- .../content/content-history-page.component.ts | 6 +- .../pages/content/content-page.component.ts | 12 +- .../editor/content-editor.component.ts | 14 +- .../content/editor/content-field.component.ts | 18 +- .../editor/content-section.component.ts | 14 +- .../editor/field-copy-button.component.ts | 12 +- .../editor/field-languages.component.ts | 6 +- .../content-inspection.component.ts | 8 +- .../content-references.component.ts | 6 +- .../pages/contents/contents-page.component.ts | 10 +- .../contents/custom-view-editor.component.ts | 6 +- .../pages/schemas/schemas-page.component.ts | 2 +- .../shared/content-extension.component.ts | 6 +- .../shared/due-time-selector.component.ts | 6 +- .../shared/forms/array-editor.component.ts | 20 +-- .../shared/forms/array-item.component.ts | 24 +-- .../forms/component-section.component.ts | 14 +- .../shared/forms/component.component.ts | 16 +- .../shared/forms/field-editor.component.ts | 18 +- .../shared/forms/iframe-editor.component.ts | 12 +- .../content/shared/list/content.component.ts | 18 +- .../shared/preview-button.component.ts | 4 +- .../references/content-creator.component.ts | 14 +- .../reference-dropdown.component.ts | 6 +- .../references/reference-item.component.ts | 6 +- .../references-checkboxes.component.ts | 2 +- .../references/references-editor.component.ts | 8 +- .../references/references-tags.component.ts | 6 +- .../pages/cards/api-calls-card.component.ts | 4 +- .../cards/api-calls-summary-card.component.ts | 4 +- .../pages/cards/api-card.component.ts | 2 +- .../cards/api-performance-card.component.ts | 4 +- .../pages/cards/api-traffic-card.component.ts | 4 +- .../api-traffic-summary-card.component.ts | 4 +- .../asset-uploads-count-card.component.ts | 4 +- .../asset-uploads-size-card.component.ts | 4 +- ...set-uploads-size-summary-card.component.ts | 4 +- .../cards/content-summary-card.component.ts | 6 +- .../pages/cards/github-card.component.ts | 2 +- .../pages/cards/history-card.component.ts | 4 +- .../pages/cards/iframe-card.component.ts | 4 +- .../pages/cards/schema-card.component.ts | 2 +- .../pages/cards/support-card.component.ts | 2 +- .../pages/dashboard-config.component.ts | 8 +- .../pages/dashboard-page.component.html | 2 +- .../pages/dashboard-page.component.ts | 12 +- .../pages/events/rule-event.component.ts | 4 +- .../rules/pages/rule/rule-page.component.ts | 8 +- .../rules/pages/rules/rule.component.ts | 6 +- .../rules/pages/rules/rules-page.component.ts | 2 +- .../simulated-rule-event.component.ts | 4 +- .../actions/formattable-input.component.ts | 6 +- .../actions/generic-action.component.ts | 2 +- .../rules/shared/rule-element.component.ts | 6 +- .../rules/shared/rule-icon.component.ts | 4 +- .../asset-changed-trigger.component.ts | 2 +- .../triggers/comment-trigger.component.ts | 2 +- .../content-changed-trigger.component.ts | 8 +- .../schema-changed-trigger.component.ts | 2 +- .../triggers/usage-trigger.component.ts | 2 +- .../common/schema-edit-form.component.ts | 2 +- .../export/schema-export-form.component.ts | 2 +- .../schema/fields/field-wizard.component.ts | 8 +- .../pages/schema/fields/field.component.ts | 12 +- .../forms/field-form-common.component.ts | 6 +- .../fields/forms/field-form-ui.component.ts | 6 +- .../forms/field-form-validation.component.ts | 10 +- .../fields/forms/field-form.component.ts | 10 +- .../schema/fields/schema-fields.component.ts | 6 +- .../types/array-validation.component.ts | 6 +- .../fields/types/assets-ui.component.ts | 6 +- .../types/assets-validation.component.ts | 10 +- .../fields/types/boolean-ui.component.ts | 6 +- .../types/boolean-validation.component.ts | 12 +- .../fields/types/component-ui.component.ts | 6 +- .../types/component-validation.component.ts | 6 +- .../fields/types/components-ui.component.ts | 6 +- .../types/components-validation.component.ts | 6 +- .../fields/types/date-time-ui.component.ts | 6 +- .../types/date-time-validation.component.ts | 14 +- .../fields/types/geolocation-ui.component.ts | 6 +- .../types/geolocation-validation.component.ts | 6 +- .../schema/fields/types/json-ui.component.ts | 6 +- .../fields/types/json-validation.component.ts | 6 +- .../fields/types/number-ui.component.ts | 10 +- .../types/number-validation.component.ts | 12 +- .../fields/types/references-ui.component.ts | 6 +- .../types/references-validation.component.ts | 10 +- .../fields/types/string-ui.component.ts | 10 +- .../types/string-validation.component.ts | 20 +-- .../schema/fields/types/tags-ui.component.ts | 6 +- .../fields/types/tags-validation.component.ts | 8 +- .../schema-preview-urls-form.component.ts | 2 +- .../schema-field-rules-form.component.ts | 4 +- .../pages/schema/schema-page.component.ts | 2 +- .../scripts/schema-scripts-form.component.ts | 2 +- .../pages/schema/ui/field-list.component.ts | 10 +- .../schema/ui/schema-ui-form.component.ts | 2 +- .../pages/backups/backup.component.ts | 2 +- .../clients/client-connect-form.component.ts | 17 +- .../pages/clients/client.component.ts | 6 +- .../contributor-add-form.component.ts | 4 +- .../contributors/contributor.component.ts | 4 +- .../import-contributors-dialog.component.ts | 4 +- .../pages/languages/language.component.ts | 8 +- .../pages/more/more-page.component.ts | 6 +- .../settings/pages/plans/plan.component.ts | 2 +- .../pages/plans/plans-page.component.ts | 2 +- .../settings/pages/roles/role.component.ts | 10 +- .../pages/settings/settings-page.component.ts | 4 +- .../workflows/workflow-diagram.component.ts | 4 +- .../workflows/workflow-step.component.ts | 12 +- .../workflow-transition.component.ts | 4 +- .../pages/workflows/workflow.component.ts | 8 +- .../app/framework/angular/avatar.component.ts | 2 +- .../angular/forms/confirm-click.directive.ts | 2 +- .../control-errors-messages.component.html | 2 +- .../control-errors-messages.component.ts | 2 +- .../angular/forms/control-errors.component.ts | 12 +- .../framework/angular/forms/copy.directive.ts | 2 +- .../angular/forms/editable-title.component.ts | 4 +- .../forms/editors/autocomplete.component.ts | 12 +- .../forms/editors/checkbox-group.component.ts | 2 +- .../forms/editors/code-editor.component.ts | 6 +- .../editors/date-time-editor.component.ts | 6 +- .../forms/editors/dropdown.component.ts | 6 +- .../editors/localized-input.component.ts | 8 +- .../forms/editors/tag-editor.component.ts | 6 +- .../angular/forms/file-drop.directive.ts | 6 +- .../angular/forms/focus-on-init.directive.ts | 2 +- .../angular/forms/form-alert.component.ts | 2 +- .../angular/forms/form-error.component.ts | 2 +- .../angular/forms/form-hint.component.ts | 2 +- .../framework/angular/forms/forms-helper.ts | 4 +- .../forms/indeterminate-value.directive.ts | 2 +- .../forms/transform-input.directive.ts | 2 +- .../angular/hover-background.directive.ts | 4 +- .../angular/image-source.directive.ts | 4 +- .../angular/language-selector.component.ts | 2 +- .../app/framework/angular/layout.component.ts | 12 +- .../framework/angular/list-view.component.ts | 6 +- .../framework/angular/markdown.directive.ts | 2 +- .../angular/modals/modal-dialog.component.ts | 4 +- .../modals/modal-placement.directive.ts | 2 +- .../angular/modals/modal.directive.ts | 4 +- .../modals/onboarding-tooltip.component.ts | 2 +- .../angular/modals/root-view.component.ts | 2 +- .../framework/angular/popup-link.directive.ts | 2 +- .../angular/routers/parent-link.directive.ts | 8 +- .../angular/routers/router-2-state.ts | 6 +- .../angular/scroll-active.directive.ts | 2 +- .../framework/angular/shortcut.component.ts | 2 +- .../framework/angular/shortcut.directive.ts | 4 +- .../angular/status-icon.component.ts | 2 +- .../angular/sync-scrolling.directive.ts | 2 +- .../framework/angular/sync-width.directive.ts | 2 +- .../angular/tab-router-link.directive.ts | 2 +- .../angular/template-wrapper.directive.ts | 6 +- .../app/framework/angular/title.component.ts | 2 +- .../angular/video-player.component.ts | 6 +- .../framework/services/analytics.service.ts | 2 +- .../app/framework/services/dialog.service.ts | 2 +- .../app/framework/services/resize.service.ts | 4 +- .../assets/asset-dialog.component.ts | 14 +- .../assets/asset-folder-dialog.component.ts | 2 +- .../asset-folder-dropdown-item.component.ts | 4 +- .../assets/asset-folder-dropdown.component.ts | 2 +- .../assets/asset-folder.component.ts | 4 +- .../assets/asset-history.component.ts | 6 +- .../assets/asset-text-editor.component.ts | 6 +- .../components/assets/asset.component.ts | 14 +- .../assets/assets-list.component.ts | 6 +- .../assets/image-cropper.component.ts | 6 +- .../assets/image-focus-point.component.ts | 10 +- .../components/comments/comment.component.ts | 12 +- .../components/comments/comments.component.ts | 12 +- .../contents/content-list-cell.directive.ts | 2 +- .../contents/content-list-field.component.ts | 6 +- .../contents/content-list-header.component.ts | 4 +- .../contents/content-status.component.ts | 4 +- .../content-value-editor.component.ts | 4 +- .../contents/content-value.component.ts | 2 +- .../forms/geolocation-editor.component.ts | 4 +- .../forms/markdown-editor.component.ts | 8 +- .../components/forms/rich-editor.component.ts | 6 +- .../app/shared/components/history/pipes.ts | 4 +- .../app/shared/components/notifo.component.ts | 4 +- frontend/app/shared/components/pipes.ts | 6 +- .../content-selector-item.component.ts | 6 +- .../references/content-selector.component.ts | 8 +- .../references/reference-input.component.ts | 4 +- .../components/schema-category.component.ts | 2 +- .../queries/filter-comparison.component.ts | 12 +- .../queries/filter-logical.component.ts | 10 +- .../search/queries/filter-node.component.ts | 12 +- .../search/queries/query-path.component.ts | 4 +- .../search/queries/query.component.ts | 8 +- .../search/queries/sorting.component.ts | 6 +- .../components/search/query-list.component.ts | 2 +- .../search/search-form.component.ts | 8 +- .../search/shared-queries.component.ts | 6 +- .../components/table-header.component.ts | 4 +- .../components/watching-users.component.ts | 2 +- frontend/app/shared/services/auth.service.ts | 2 +- .../app/shared/services/schemas.service.ts | 6 +- frontend/app/shared/services/schemas.types.ts | 4 +- .../app/shared/state/contents.form-rules.ts | 2 +- frontend/app/shared/state/contents.state.ts | 2 +- frontend/app/shared/state/languages.state.ts | 2 +- frontend/app/shared/state/resolvers.ts | 8 +- .../shell/pages/app/left-menu.component.ts | 2 +- .../internal/notifications-menu.component.ts | 4 +- .../pages/internal/search-menu.component.ts | 4 +- frontend/package-lock.json | 159 ++++++++++++++++++ frontend/package.json | 4 +- frontend/tsconfig.json | 1 + 230 files changed, 824 insertions(+), 663 deletions(-) diff --git a/frontend/app-config/webpack.config.js b/frontend/app-config/webpack.config.js index 645ab6fe0..fa723d914 100644 --- a/frontend/app-config/webpack.config.js +++ b/frontend/app-config/webpack.config.js @@ -28,7 +28,7 @@ const plugins = { // https://www.npmjs.com/package/@ngtools/webpack NgToolsWebpack: require('@ngtools/webpack'), // 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/ ESLintPlugin: require('eslint-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'; // eslint-disable-next-line no-console - console.log(`Use ${configFile}, Production: ${!!isProduction}, DevServer: ${isDevServer}`); + console.log(`Use ${configFile}, Production: ${!!isProduction}, DevServer: ${!!isDevServer}`); const config = { mode: isProduction ? 'production' : 'development', @@ -401,7 +401,7 @@ module.exports = function calculateConfig(env) { extractComments: true, }), - new plugins.OptimizeCSSAssetsPlugin({}), + new plugins.CssMinimizerPlugin({}), ], }; diff --git a/frontend/app/features/administration/pages/event-consumers/event-consumer.component.ts b/frontend/app/features/administration/pages/event-consumers/event-consumer.component.ts index e68b024ae..90d40a084 100644 --- a/frontend/app/features/administration/pages/event-consumers/event-consumer.component.ts +++ b/frontend/app/features/administration/pages/event-consumers/event-consumer.component.ts @@ -19,7 +19,7 @@ export class EventConsumerComponent { public error = new EventEmitter(); @Input('sqxEventConsumer') - public eventConsumer: EventConsumerDto; + public eventConsumer!: EventConsumerDto; constructor( private readonly eventConsumersState: EventConsumersState, diff --git a/frontend/app/features/administration/pages/users/user.component.ts b/frontend/app/features/administration/pages/users/user.component.ts index 7590b2df2..3b615fd9f 100644 --- a/frontend/app/features/administration/pages/users/user.component.ts +++ b/frontend/app/features/administration/pages/users/user.component.ts @@ -16,7 +16,7 @@ import { UserDto, UsersState } from '@app/features/administration/internal'; }) export class UserComponent { @Input('sqxUser') - public user: UserDto; + public user!: UserDto; constructor( private readonly usersState: UsersState, diff --git a/frontend/app/features/api/pages/graphql/graphql-page.component.ts b/frontend/app/features/api/pages/graphql/graphql-page.component.ts index ef4ef8f7c..deb67d475 100644 --- a/frontend/app/features/api/pages/graphql/graphql-page.component.ts +++ b/frontend/app/features/api/pages/graphql/graphql-page.component.ts @@ -20,7 +20,7 @@ import { catchError } from 'rxjs/operators'; }) export class GraphQLPageComponent implements AfterViewInit { @ViewChild('graphiQLContainer', { static: false }) - public graphiQLContainer: ElementRef; + public graphiQLContainer!: ElementRef; constructor( private readonly appsState: AppsState, diff --git a/frontend/app/features/apps/pages/app.component.ts b/frontend/app/features/apps/pages/app.component.ts index be3830096..8502a4b24 100644 --- a/frontend/app/features/apps/pages/app.component.ts +++ b/frontend/app/features/apps/pages/app.component.ts @@ -16,7 +16,7 @@ import { AppDto, ModalModel } from '@app/shared'; }) export class AppComponent { @Input() - public app: AppDto; + public app!: AppDto; @Output() public leave = new EventEmitter(); diff --git a/frontend/app/features/apps/pages/apps-page.component.html b/frontend/app/features/apps/pages/apps-page.component.html index 60b851b04..8fa9f0cd2 100644 --- a/frontend/app/features/apps/pages/apps-page.component.html +++ b/frontend/app/features/apps/pages/apps-page.component.html @@ -83,5 +83,5 @@ - + \ No newline at end of file diff --git a/frontend/app/features/apps/pages/apps-page.component.ts b/frontend/app/features/apps/pages/apps-page.component.ts index 5ffa7bd84..e8c44203d 100644 --- a/frontend/app/features/apps/pages/apps-page.component.ts +++ b/frontend/app/features/apps/pages/apps-page.component.ts @@ -21,10 +21,10 @@ export class AppsPageComponent implements OnInit { public onboardingDialog = new DialogModel(); - public newsFeatures: ReadonlyArray; + public newsFeatures?: ReadonlyArray; public newsDialog = new DialogModel(); - public info: string; + public info = ''; constructor( public readonly appsState: AppsState, diff --git a/frontend/app/features/apps/pages/news-dialog.component.ts b/frontend/app/features/apps/pages/news-dialog.component.ts index 39e2a7cad..a895055d4 100644 --- a/frontend/app/features/apps/pages/news-dialog.component.ts +++ b/frontend/app/features/apps/pages/news-dialog.component.ts @@ -18,7 +18,7 @@ export class NewsDialogComponent { public close = new EventEmitter(); @Input() - public features: ReadonlyArray; + public features!: ReadonlyArray; public trackByFeature(_index: number, feature: FeatureDto) { return feature; diff --git a/frontend/app/features/assets/pages/asset-tag-dialog.component.ts b/frontend/app/features/assets/pages/asset-tag-dialog.component.ts index 8527bb9a6..00c825151 100644 --- a/frontend/app/features/assets/pages/asset-tag-dialog.component.ts +++ b/frontend/app/features/assets/pages/asset-tag-dialog.component.ts @@ -18,7 +18,7 @@ export class AssetTagDialogComponent implements OnInit { public complete = new EventEmitter(); @Input() - public tagName: string; + public tagName!: string; public editForm = new RenameAssetTagForm(); diff --git a/frontend/app/features/assets/pages/asset-tags.component.html b/frontend/app/features/assets/pages/asset-tags.component.html index 9aac0595e..d5a2f5f76 100644 --- a/frontend/app/features/assets/pages/asset-tags.component.html +++ b/frontend/app/features/assets/pages/asset-tags.component.html @@ -24,5 +24,5 @@ - + \ No newline at end of file diff --git a/frontend/app/features/assets/pages/asset-tags.component.ts b/frontend/app/features/assets/pages/asset-tags.component.ts index 69dfc621c..f8d93518e 100644 --- a/frontend/app/features/assets/pages/asset-tags.component.ts +++ b/frontend/app/features/assets/pages/asset-tags.component.ts @@ -24,15 +24,15 @@ export class AssetTagsComponent { public toggle = new EventEmitter(); @Input() - public tags: ReadonlyArray; + public tags!: ReadonlyArray; @Input() - public tagsSelected: TagsSelected; + public tagsSelected!: TagsSelected; @Input() - public canRename: boolean; + public canRename = false; - public tagRenaming: TagItem; + public tagRenaming?: TagItem; public tagRenameDialog = new DialogModel(); public isEmpty() { diff --git a/frontend/app/features/assets/pages/assets-page.component.ts b/frontend/app/features/assets/pages/assets-page.component.ts index 7f99ee6cd..7879b53b0 100644 --- a/frontend/app/features/assets/pages/assets-page.component.ts +++ b/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 isListView: boolean; + public isListView = false; constructor( public readonly assetsRoute: Router2State, diff --git a/frontend/app/features/content/pages/calendar/calendar-page.component.ts b/frontend/app/features/content/pages/calendar/calendar-page.component.ts index d34b595dd..dfc9a3566 100644 --- a/frontend/app/features/content/pages/calendar/calendar-page.component.ts +++ b/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 { private calendar: any; - private language: LanguageDto; + private language!: LanguageDto; @ViewChild('calendarContainer', { static: false }) - public calendarContainer: ElementRef; + public calendarContainer!: ElementRef; public view: ViewMode = 'month'; public content?: ContentDto; public contentDialog = new DialogModel(); - public title: string; + public title = ''; - public isLoading: boolean; + public isLoading = false; constructor( private readonly appsState: AppsState, diff --git a/frontend/app/features/content/pages/content/content-event.component.ts b/frontend/app/features/content/pages/content/content-event.component.ts index b483fc804..6de3b26d6 100644 --- a/frontend/app/features/content/pages/content/content-event.component.ts +++ b/frontend/app/features/content/pages/content/content-event.component.ts @@ -22,12 +22,12 @@ export class ContentEventComponent implements OnChanges { public dataCompare = new EventEmitter(); @Input() - public event: HistoryEventDto; + public event!: HistoryEventDto; @Input() - public content: ContentDto; + public content!: ContentDto; - public canLoadOrCompare: boolean; + public canLoadOrCompare = false; public ngOnChanges() { this.canLoadOrCompare = diff --git a/frontend/app/features/content/pages/content/content-history-page.component.ts b/frontend/app/features/content/pages/content/content-history-page.component.ts index 3df215c29..ab4ce2043 100644 --- a/frontend/app/features/content/pages/content/content-history-page.component.ts +++ b/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 { @ViewChild('dueTimeSelector', { static: false }) - public dueTimeSelector: DueTimeSelectorComponent; + public dueTimeSelector!: DueTimeSelectorComponent; - public content: ContentDto; - public contentEvents: Observable>; + public content!: ContentDto; + public contentEvents?: Observable>; public dropdown = new ModalModel(); public dropdownNew = new ModalModel(); diff --git a/frontend/app/features/content/pages/content/content-page.component.ts b/frontend/app/features/content/pages/content/content-page.component.ts index 112a22425..e8ac397a3 100644 --- a/frontend/app/features/content/pages/content/content-page.component.ts +++ b/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 { - private autoSaveKey: AutoSaveKey; + private autoSaveKey!: AutoSaveKey; - public schema: SchemaDto; + public schema!: SchemaDto; public formContext: any; public contentTab = this.route.queryParams.pipe(map(x => x['tab'] || 'editor')); public content?: ContentDto | null; public contentId = ''; - public contentVersion: Version | null; - public contentForm: EditContentForm; + public contentVersion: Version | null = null; + public contentForm!: EditContentForm; public contentFormCompare: EditContentForm | null = null; public dropdown = new ModalModel(); - public language: AppLanguageDto; - public languages: ReadonlyArray; + public language!: AppLanguageDto; + public languages!: ReadonlyArray; public confirmPreview = () => { return this.checkPendingChangesBeforePreview(); diff --git a/frontend/app/features/content/pages/content/editor/content-editor.component.ts b/frontend/app/features/content/pages/content/editor/content-editor.component.ts index 0e9e8b76a..452b0bf00 100644 --- a/frontend/app/features/content/pages/content/editor/content-editor.component.ts +++ b/frontend/app/features/content/pages/content/editor/content-editor.component.ts @@ -27,28 +27,28 @@ export class ContentEditorComponent { public isNew = false; @Input() - public contentId: string; + public contentId!: string; @Input() - public contentForm: EditContentForm; + public contentForm!: EditContentForm; @Input() - public contentVersion: Version | null; + public contentVersion?: Version | null; @Input() public contentFormCompare?: EditContentForm | null; @Input() - public schema: SchemaDto; + public schema!: SchemaDto; @Input() - public formContext: any; + public formContext!: any; @Input() - public language: AppLanguageDto; + public language!: AppLanguageDto; @Input() - public languages: ReadonlyArray; + public languages!: ReadonlyArray; public trackBySection(_index: number, section: FieldSection) { return section.separator?.fieldId; diff --git a/frontend/app/features/content/pages/content/editor/content-field.component.ts b/frontend/app/features/content/pages/content/editor/content-field.component.ts index 1fc72b78e..c6a4ec92f 100644 --- a/frontend/app/features/content/pages/content/editor/content-field.component.ts +++ b/frontend/app/features/content/pages/content/editor/content-field.component.ts @@ -22,31 +22,31 @@ export class ContentFieldComponent implements OnChanges { public isCompact?: boolean | null; @Input() - public form: EditContentForm; + public form!: EditContentForm; @Input() public formCompare?: EditContentForm | null; @Input() - public formContext: any; + public formContext!: any; @Input() - public formLevel: number; + public formLevel!: number; @Input() - public formModel: FieldForm; + public formModel!: FieldForm; @Input() public formModelCompare?: FieldForm; @Input() - public schema: SchemaDto; + public schema!: SchemaDto; @Input() - public language: AppLanguageDto; + public language!: AppLanguageDto; @Input() - public languages: ReadonlyArray; + public languages!: ReadonlyArray; @HostBinding('class') public get class() { @@ -63,8 +63,8 @@ export class ContentFieldComponent implements OnChanges { public showAllControls = false; - public isDifferent: Observable; - public isInvalid: Observable; + public isDifferent?: Observable; + public isInvalid?: Observable; constructor( private readonly appsState: AppsState, diff --git a/frontend/app/features/content/pages/content/editor/content-section.component.ts b/frontend/app/features/content/pages/content/editor/content-section.component.ts index 7501d5fb3..7e187ef0f 100644 --- a/frontend/app/features/content/pages/content/editor/content-section.component.ts +++ b/frontend/app/features/content/pages/content/editor/content-section.component.ts @@ -27,28 +27,28 @@ export class ContentSectionComponent extends StatefulComponent implements public isCompact?: boolean | null; @Input() - public form: EditContentForm; + public form!: EditContentForm; @Input() public formCompare?: EditContentForm | null; @Input() - public formLevel: number; + public formLevel!: number; @Input() - public formContext: any; + public formContext!: any; @Input() - public formSection: FieldSection; + public formSection!: FieldSection; @Input() - public schema: SchemaDto; + public schema!: SchemaDto; @Input() - public language: AppLanguageDto; + public language!: AppLanguageDto; @Input() - public languages: ReadonlyArray; + public languages!: ReadonlyArray; constructor(changeDetector: ChangeDetectorRef, private readonly localStore: LocalStoreService, diff --git a/frontend/app/features/content/pages/content/editor/field-copy-button.component.ts b/frontend/app/features/content/pages/content/editor/field-copy-button.component.ts index 6954dfbc5..e2731da93 100644 --- a/frontend/app/features/content/pages/content/editor/field-copy-button.component.ts +++ b/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 { @Input() - public formModel: FieldForm; + public formModel!: FieldForm; @Input() - public languages: ReadonlyArray; + public languages!: ReadonlyArray; - public languageCodes: ReadonlyArray; + public languageCodes: ReadonlyArray = []; - public copySource: string; - public copyTargets: ReadonlyArray; + public copySource = ''; + public copyTargets?: ReadonlyArray; public dropdown = new ModalModel(); @@ -45,7 +45,7 @@ export class FieldCopyButtonComponent implements OnChanges { } 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; for (const target of this.copyTargets) { diff --git a/frontend/app/features/content/pages/content/editor/field-languages.component.ts b/frontend/app/features/content/pages/content/editor/field-languages.component.ts index c940f0ba3..db99eda91 100644 --- a/frontend/app/features/content/pages/content/editor/field-languages.component.ts +++ b/frontend/app/features/content/pages/content/editor/field-languages.component.ts @@ -25,13 +25,13 @@ export class FieldLanguagesComponent { public languageChange = new EventEmitter(); @Input() - public language: AppLanguageDto; + public language!: AppLanguageDto; @Input() - public languages: ReadonlyArray; + public languages!: ReadonlyArray; @Input() - public field: RootFieldDto; + public field!: RootFieldDto; public toggleShowAllControls() { this.showAllControlsChange.emit(!this.showAllControls); diff --git a/frontend/app/features/content/pages/content/inspecting/content-inspection.component.ts b/frontend/app/features/content/pages/content/inspecting/content-inspection.component.ts index d053666d5..5de7cb9cf 100644 --- a/frontend/app/features/content/pages/content/inspecting/content-inspection.component.ts +++ b/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(null); @Input() - public appName: string; + public appName!: string; @Input() - public language: AppLanguageDto; + public language!: AppLanguageDto; @Input() - public languages: ReadonlyArray; + public languages!: ReadonlyArray; @Input() - public content: ContentDto; + public content!: ContentDto; public mode = new BehaviorSubject('Content'); diff --git a/frontend/app/features/content/pages/content/references/content-references.component.ts b/frontend/app/features/content/pages/content/references/content-references.component.ts index 7dd3cfd2f..ec3965a06 100644 --- a/frontend/app/features/content/pages/content/references/content-references.component.ts +++ b/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 { @Input() - public content: ContentDto; + public content!: ContentDto; @Input() - public language: AppLanguageDto; + public language!: AppLanguageDto; @Input() - public languages: ReadonlyArray; + public languages!: ReadonlyArray; @Input() public mode: 'references' | 'referencing' = 'references'; diff --git a/frontend/app/features/content/pages/contents/contents-page.component.ts b/frontend/app/features/content/pages/contents/contents-page.component.ts index 5dacf225e..19a8631e4 100644 --- a/frontend/app/features/content/pages/contents/contents-page.component.ts +++ b/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 { @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 searchModal = new ModalModel(); @@ -39,8 +39,8 @@ export class ContentsPageComponent extends ResourceOwner implements OnInit { public selectionCanDelete = false; public selectionStatuses: { [name: string]: string } = {}; - public language: AppLanguageDto; - public languages: ReadonlyArray; + public language!: AppLanguageDto; + public languages!: ReadonlyArray; public get disableScheduler() { return this.appsState.snapshot.selectedSettings?.hideScheduler === true; diff --git a/frontend/app/features/content/pages/contents/custom-view-editor.component.ts b/frontend/app/features/content/pages/contents/custom-view-editor.component.ts index e9a945a84..ba1f337bb 100644 --- a/frontend/app/features/content/pages/contents/custom-view-editor.component.ts +++ b/frontend/app/features/content/pages/contents/custom-view-editor.component.ts @@ -19,12 +19,12 @@ export class CustomViewEditorComponent implements OnChanges { public fieldNamesChange = new EventEmitter>(); @Input() - public fieldNames: string[]; + public fieldNames!: string[]; @Input() - public allFields: ReadonlyArray; + public allFields!: ReadonlyArray; - public fieldsNotAdded: ReadonlyArray; + public fieldsNotAdded!: ReadonlyArray; public ngOnChanges() { this.fieldsNotAdded = this.allFields.filter(n => this.fieldNames.indexOf(n) < 0); diff --git a/frontend/app/features/content/pages/schemas/schemas-page.component.ts b/frontend/app/features/content/pages/schemas/schemas-page.component.ts index 38e65d50a..b95b84a1a 100644 --- a/frontend/app/features/content/pages/schemas/schemas-page.component.ts +++ b/frontend/app/features/content/pages/schemas/schemas-page.component.ts @@ -41,7 +41,7 @@ export class SchemasPageComponent { return getCategoryTree(schemas, categories, filter); }); - public isCollapsed: boolean; + public isCollapsed = false; public get width() { return this.isCollapsed ? '4rem' : '16rem'; diff --git a/frontend/app/features/content/shared/content-extension.component.ts b/frontend/app/features/content/shared/content-extension.component.ts index e5e94d9e3..7be9b25d4 100644 --- a/frontend/app/features/content/shared/content-extension.component.ts +++ b/frontend/app/features/content/shared/content-extension.component.ts @@ -21,20 +21,20 @@ export class ContentExtensionComponent extends ResourceOwner implements OnChange private isInitialized = false; @ViewChild('iframe', { static: false }) - public iframe: ElementRef; + public iframe!: ElementRef; @Input() public content?: ContentDto | null; @Input() - public contentSchema: SchemaDto; + public contentSchema!: SchemaDto; @Input() public set url(value: string | undefined | null) { this.computedUrl = computeEditorUrl(value, this.appsState.snapshot.selectedSettings); } - public computedUrl: string; + public computedUrl = ''; constructor(apiUrl: ApiUrlConfig, authService: AuthService, private readonly appsState: AppsState, diff --git a/frontend/app/features/content/shared/due-time-selector.component.ts b/frontend/app/features/content/shared/due-time-selector.component.ts index 041789b64..2d47652e2 100644 --- a/frontend/app/features/content/shared/due-time-selector.component.ts +++ b/frontend/app/features/content/shared/due-time-selector.component.ts @@ -17,7 +17,7 @@ const OPTION_IMMEDIATELY = 'Immediately'; templateUrl: './due-time-selector.component.html', }) export class DueTimeSelectorComponent { - private dueTimeResult: Subject; + private dueTimeResult?: Subject; @Input() public disabled?: boolean | null; @@ -42,8 +42,8 @@ export class DueTimeSelectorComponent { public confirmStatusChange() { const result = this.dueTimeMode === OPTION_IMMEDIATELY ? null : this.dueTime; - this.dueTimeResult.next(result); - this.dueTimeResult.complete(); + this.dueTimeResult?.next(result); + this.dueTimeResult?.complete(); this.cancelStatusChange(); } diff --git a/frontend/app/features/content/shared/forms/array-editor.component.ts b/frontend/app/features/content/shared/forms/array-editor.component.ts index 9cde50447..52e26e3b9 100644 --- a/frontend/app/features/content/shared/forms/array-editor.component.ts +++ b/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 { @Input() - public form: EditContentForm; + public form!: EditContentForm; @Input() - public formContext: any; + public formContext!: any; @Input() - public formLevel: number; + public formLevel!: number; @Input() - public formModel: FieldArrayForm; + public formModel!: FieldArrayForm; @Input() public canUnset?: boolean | null; @Input() - public language: AppLanguageDto; + public language!: AppLanguageDto; @Input() - public languages: ReadonlyArray; + public languages!: ReadonlyArray; @ViewChildren(ArrayItemComponent) - public children: QueryList; + public children!: QueryList; public isArray = false; public schemasDropdown = new ModalModel(); - public schemasList: ReadonlyArray; + public schemasList: ReadonlyArray = []; - public isDisabled: Observable; + public isDisabled?: Observable; public isCollapsedInitial = false; - public isFull: Observable; + public isFull?: Observable; public get hasField() { return this.formModel.field['nested']?.length > 0; diff --git a/frontend/app/features/content/shared/forms/array-item.component.ts b/frontend/app/features/content/shared/forms/array-item.component.ts index 9925de7d1..e88b0f4f7 100644 --- a/frontend/app/features/content/shared/forms/array-item.component.ts +++ b/frontend/app/features/content/shared/forms/array-item.component.ts @@ -20,7 +20,7 @@ interface State { } @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'], templateUrl: './array-item.component.html', changeDetection: ChangeDetectionStrategy.OnPush, @@ -36,16 +36,16 @@ export class ArrayItemComponent extends StatefulComponent implements OnCh public clone = new EventEmitter(); @Input() - public form: EditContentForm; + public form!: EditContentForm; @Input() - public formContext: any; + public formContext!: any; @Input() - public formLevel: number; + public formLevel!: number; @Input() - public formModel: ObjectFormBase; + public formModel!: ObjectFormBase; @Input() public canUnset?: boolean | null; @@ -63,22 +63,22 @@ export class ArrayItemComponent extends StatefulComponent implements OnCh public isDisabled?: boolean | null; @Input() - public index: number; + public index!: number; @Input() - public language: AppLanguageDto; + public language!: AppLanguageDto; @Input() - public languages: ReadonlyArray; + public languages!: ReadonlyArray; @ViewChildren(ComponentSectionComponent) - public sections: QueryList; + public sections!: QueryList; public isCollapsed = false; - public isInvalid: Observable; - public isInvalidComponent: Observable; + public isInvalid?: Observable; + public isInvalidComponent?: Observable; - public title: Observable; + public title?: Observable; constructor(changeDetector: ChangeDetectorRef, ) { diff --git a/frontend/app/features/content/shared/forms/component-section.component.ts b/frontend/app/features/content/shared/forms/component-section.component.ts index 111e8c05a..048e77c29 100644 --- a/frontend/app/features/content/shared/forms/component-section.component.ts +++ b/frontend/app/features/content/shared/forms/component-section.component.ts @@ -17,22 +17,22 @@ import { FieldEditorComponent } from './field-editor.component'; }) export class ComponentSectionComponent { @Input() - public form: EditContentForm; + public form!: EditContentForm; @Input() - public formContext: any; + public formContext!: any; @Input() - public formLevel: number; + public formLevel!: number; @Input() - public formSection: FieldSection; + public formSection!: FieldSection; @Input() - public language: AppLanguageDto; + public language!: AppLanguageDto; @Input() - public languages: ReadonlyArray; + public languages!: ReadonlyArray; @Input() public index: number | null | undefined; @@ -41,7 +41,7 @@ export class ComponentSectionComponent { public canUnset?: boolean | null; @ViewChildren(FieldEditorComponent) - public editors: QueryList; + public editors!: QueryList; public reset() { this.editors.forEach(editor => { diff --git a/frontend/app/features/content/shared/forms/component.component.ts b/frontend/app/features/content/shared/forms/component.component.ts index 9647f4672..9551ac61a 100644 --- a/frontend/app/features/content/shared/forms/component.component.ts +++ b/frontend/app/features/content/shared/forms/component.component.ts @@ -20,28 +20,28 @@ export class ComponentComponent extends ResourceOwner implements OnChanges { public canUnset?: boolean | null; @Input() - public form: EditContentForm; + public form!: EditContentForm; @Input() - public formContext: any; + public formContext!: any; @Input() - public formLevel: number; + public formLevel!: number; @Input() - public formModel: ComponentForm; + public formModel!: ComponentForm; @Input() - public language: AppLanguageDto; + public language!: AppLanguageDto; @Input() - public languages: ReadonlyArray; + public languages!: ReadonlyArray; @ViewChildren(ComponentSectionComponent) - public sections: QueryList; + public sections!: QueryList; public schemasDropdown = new ModalModel(); - public schemasList: ReadonlyArray; + public schemasList: ReadonlyArray = []; constructor( private readonly changeDetector: ChangeDetectorRef, diff --git a/frontend/app/features/content/shared/forms/field-editor.component.ts b/frontend/app/features/content/shared/forms/field-editor.component.ts index 529f07341..4af138212 100644 --- a/frontend/app/features/content/shared/forms/field-editor.component.ts +++ b/frontend/app/features/content/shared/forms/field-editor.component.ts @@ -19,22 +19,22 @@ export class FieldEditorComponent implements OnChanges { public readonly uniqueId = MathHelper.guid(); @Input() - public form: EditContentForm; + public form!: EditContentForm; @Input() - public formContext: any; + public formContext!: any; @Input() - public formLevel: number; + public formLevel!: number; @Input() - public formModel: AbstractContentForm; + public formModel!: AbstractContentForm; @Input() - public language: AppLanguageDto; + public language!: AppLanguageDto; @Input() - public languages: ReadonlyArray; + public languages!: ReadonlyArray; @Input() public index: number | null | undefined; @@ -43,12 +43,12 @@ export class FieldEditorComponent implements OnChanges { public canUnset?: boolean | null; @Input() - public displaySuffix: string; + public displaySuffix = ''; @ViewChild('editor', { static: false }) - public editor: ElementRef; + public editor!: ElementRef; - public isEmpty: Observable; + public isEmpty?: Observable; public get field() { return this.formModel.field; diff --git a/frontend/app/features/content/shared/forms/iframe-editor.component.ts b/frontend/app/features/content/shared/forms/iframe-editor.component.ts index 316d2bf1c..78ccbebf5 100644 --- a/frontend/app/features/content/shared/forms/iframe-editor.component.ts +++ b/frontend/app/features/content/shared/forms/iframe-editor.component.ts @@ -29,19 +29,19 @@ export class IFrameEditorComponent extends StatefulComponent implements O private assetsCorrelationId: any; @ViewChild('iframe', { static: false }) - public iframe: ElementRef; + public iframe!: ElementRef; @ViewChild('container', { static: false }) - public container: ElementRef; + public container!: ElementRef; @ViewChild('inner', { static: false }) - public inner: ElementRef; + public inner!: ElementRef; @Input() public context: any = {}; @Input() - public formValue: any; + public formValue!: any; @Input() public formIndex?: number | null; @@ -50,7 +50,7 @@ export class IFrameEditorComponent extends StatefulComponent implements O public language?: string | null; @Input() - public formControlBinding: AbstractControl; + public formControlBinding!: AbstractControl; @Input() public set disabled(value: boolean | undefined | null) { @@ -62,7 +62,7 @@ export class IFrameEditorComponent extends StatefulComponent implements O this.computedUrl = computeEditorUrl(value, this.appsState.snapshot.selectedSettings); } - public computedUrl: string; + public computedUrl = ''; public assetsDialog = new DialogModel(); diff --git a/frontend/app/features/content/shared/list/content.component.ts b/frontend/app/features/content/shared/list/content.component.ts index f54d4cd12..d9173fc61 100644 --- a/frontend/app/features/content/shared/list/content.component.ts +++ b/frontend/app/features/content/shared/list/content.component.ts @@ -33,10 +33,10 @@ export class ContentComponent implements OnChanges { public selected = false; @Input() - public language: AppLanguageDto; + public language!: AppLanguageDto; @Input() - public listFields: ReadonlyArray; + public listFields!: ReadonlyArray; @Input() public cloneable?: boolean | null; @@ -45,12 +45,12 @@ export class ContentComponent implements OnChanges { public link: any = null; @Input('sqxContent') - public content: ContentDto; + public content!: ContentDto; @ViewChildren(ContentListFieldComponent) - public fields: QueryList; + public fields!: QueryList; - public patchForm: PatchContentForm; + public patchForm?: PatchContentForm; public patchAllowed?: boolean | null; public dropdown = new ModalModel(); @@ -76,7 +76,7 @@ export class ContentComponent implements OnChanges { } public save() { - if (!this.content.canUpdate) { + if (!this.content.canUpdate || !this.patchForm) { return; } @@ -86,12 +86,12 @@ export class ContentComponent implements OnChanges { this.contentsState.patch(this.content, value) .subscribe({ next: () => { - this.patchForm.submitCompleted({ noReset: true }); + this.patchForm!.submitCompleted({ noReset: true }); this.changeDetector.detectChanges(); }, error: error => { - this.patchForm.submitFailed(error); + this.patchForm!.submitFailed(error); this.changeDetector.detectChanges(); }, @@ -108,7 +108,7 @@ export class ContentComponent implements OnChanges { } public cancel() { - this.patchForm.submitCompleted(); + this.patchForm?.submitCompleted(); this.fields.forEach(x => x.reset()); } diff --git a/frontend/app/features/content/shared/preview-button.component.ts b/frontend/app/features/content/shared/preview-button.component.ts index 018cc8fb7..9f2052e5d 100644 --- a/frontend/app/features/content/shared/preview-button.component.ts +++ b/frontend/app/features/content/shared/preview-button.component.ts @@ -29,10 +29,10 @@ export class PreviewButtonComponent extends StatefulComponent implements public confirm?: () => Observable; @Input() - public content: ContentDto; + public content!: ContentDto; @Input() - public schema: SchemaDto; + public schema!: SchemaDto; public dropdown = new ModalModel(); diff --git a/frontend/app/features/content/shared/references/content-creator.component.ts b/frontend/app/features/content/shared/references/content-creator.component.ts index 43c2b09fc..9d375a142 100644 --- a/frontend/app/features/content/shared/references/content-creator.component.ts +++ b/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; @Input() - public schemaIds: ReadonlyArray; + public schemaIds?: ReadonlyArray; @Input() - public language: AppLanguageDto; + public language!: AppLanguageDto; @Input() - public languages: ReadonlyArray; + public languages!: ReadonlyArray; @Input() - public formContext: any; + public formContext!: any; - public schema: SchemaDto; + public schema!: SchemaDto; public schemas: ReadonlyArray = []; - public contentForm: EditContentForm; + public contentForm!: EditContentForm; constructor( 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); 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]; diff --git a/frontend/app/features/content/shared/references/reference-dropdown.component.ts b/frontend/app/features/content/shared/references/reference-dropdown.component.ts index 0b12dfd35..16ac29c4e 100644 --- a/frontend/app/features/content/shared/references/reference-dropdown.component.ts +++ b/frontend/app/features/content/shared/references/reference-dropdown.component.ts @@ -42,13 +42,13 @@ export class ReferenceDropdownComponent extends StatefulControlComponent; + public languages!: ReadonlyArray; @Input() - public schemaId: string; + public schemaId!: string; @Input() public mode: 'Array' | 'Single' = 'Single'; diff --git a/frontend/app/features/content/shared/references/reference-item.component.ts b/frontend/app/features/content/shared/references/reference-item.component.ts index 3160e40f6..76a5bbdd4 100644 --- a/frontend/app/features/content/shared/references/reference-item.component.ts +++ b/frontend/app/features/content/shared/references/reference-item.component.ts @@ -24,7 +24,7 @@ export class ReferenceItemComponent implements OnChanges { public clone = new EventEmitter(); @Input() - public language: AppLanguageDto; + public language!: AppLanguageDto; @Input() public canRemove?: boolean | null = true; @@ -36,7 +36,7 @@ export class ReferenceItemComponent implements OnChanges { public isDisabled?: boolean | null; @Input() - public validations: { [id: string]: boolean }; + public validations?: { [id: string]: boolean }; @Input() public validityVisible?: boolean | null; @@ -45,7 +45,7 @@ export class ReferenceItemComponent implements OnChanges { public columns = 0; @Input('sqxReferenceItem') - public content: ContentDto; + public content!: ContentDto; public get valid() { return !this.validations ? undefined : this.validations[this.content.id]; diff --git a/frontend/app/features/content/shared/references/references-checkboxes.component.ts b/frontend/app/features/content/shared/references/references-checkboxes.component.ts index 8c0d76a39..d44e1fa16 100644 --- a/frontend/app/features/content/shared/references/references-checkboxes.component.ts +++ b/frontend/app/features/content/shared/references/references-checkboxes.component.ts @@ -38,7 +38,7 @@ export class ReferencesCheckboxesComponent extends StatefulControlComponent> { @Input() - public schemaIds: ReadonlyArray; + public schemaIds!: ReadonlyArray; @Input() - public language: AppLanguageDto; + public language!: AppLanguageDto; @Input() - public languages: ReadonlyArray; + public languages!: ReadonlyArray; @Input() - public formContext: any; + public formContext!: any; @Input() public allowDuplicates?: boolean | null = true; diff --git a/frontend/app/features/content/shared/references/references-tags.component.ts b/frontend/app/features/content/shared/references/references-tags.component.ts index 5e492f3cf..90f35600c 100644 --- a/frontend/app/features/content/shared/references/references-tags.component.ts +++ b/frontend/app/features/content/shared/references/references-tags.component.ts @@ -38,13 +38,13 @@ export class ReferencesTagsComponent extends StatefulControlComponent; + public languages!: ReadonlyArray; @Input() public set disabled(value: boolean | undefined | null) { diff --git a/frontend/app/features/dashboard/pages/cards/api-calls-card.component.ts b/frontend/app/features/dashboard/pages/cards/api-calls-card.component.ts index 99f11cd44..6124cf1f5 100644 --- a/frontend/app/features/dashboard/pages/cards/api-calls-card.component.ts +++ b/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 { @Input() - public app: AppDto; + public app!: AppDto; @Input() - public usage: CallsUsageDto; + public usage?: CallsUsageDto; public chartOptions = ChartOptions.Stacked; public chartData: any; diff --git a/frontend/app/features/dashboard/pages/cards/api-calls-summary-card.component.ts b/frontend/app/features/dashboard/pages/cards/api-calls-summary-card.component.ts index 13ae97765..be6155f89 100644 --- a/frontend/app/features/dashboard/pages/cards/api-calls-summary-card.component.ts +++ b/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 { @Input() - public app: AppDto; + public app!: AppDto; @Input() - public usage: CallsUsageDto; + public usage?: CallsUsageDto; public callsMonth = 0; public callsAllowed = 0; diff --git a/frontend/app/features/dashboard/pages/cards/api-card.component.ts b/frontend/app/features/dashboard/pages/cards/api-card.component.ts index 127960640..4406884c8 100644 --- a/frontend/app/features/dashboard/pages/cards/api-card.component.ts +++ b/frontend/app/features/dashboard/pages/cards/api-card.component.ts @@ -16,5 +16,5 @@ import { AppDto } from '@app/shared'; }) export class ApiCardComponent { @Input() - public app: AppDto; + public app!: AppDto; } diff --git a/frontend/app/features/dashboard/pages/cards/api-performance-card.component.ts b/frontend/app/features/dashboard/pages/cards/api-performance-card.component.ts index 330fef221..ae7dab2db 100644 --- a/frontend/app/features/dashboard/pages/cards/api-performance-card.component.ts +++ b/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 { @Input() - public app: AppDto; + public app!: AppDto; @Input() - public usage: CallsUsageDto; + public usage?: CallsUsageDto; @Input() public isStacked?: boolean | null; diff --git a/frontend/app/features/dashboard/pages/cards/api-traffic-card.component.ts b/frontend/app/features/dashboard/pages/cards/api-traffic-card.component.ts index 2e62f66f7..b5e7cea03 100644 --- a/frontend/app/features/dashboard/pages/cards/api-traffic-card.component.ts +++ b/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 { @Input() - public app: AppDto; + public app!: AppDto; @Input() - public usage: CallsUsageDto; + public usage?: CallsUsageDto; @Input() public isStacked?: boolean | null; diff --git a/frontend/app/features/dashboard/pages/cards/api-traffic-summary-card.component.ts b/frontend/app/features/dashboard/pages/cards/api-traffic-summary-card.component.ts index a55623da9..f7aaa9643 100644 --- a/frontend/app/features/dashboard/pages/cards/api-traffic-summary-card.component.ts +++ b/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 { @Input() - public app: AppDto; + public app!: AppDto; @Input() - public usage: CallsUsageDto; + public usage?: CallsUsageDto; public bytesMonth = 0; public bytesAllowed = 0; diff --git a/frontend/app/features/dashboard/pages/cards/asset-uploads-count-card.component.ts b/frontend/app/features/dashboard/pages/cards/asset-uploads-count-card.component.ts index 033b9f44c..ce578e520 100644 --- a/frontend/app/features/dashboard/pages/cards/asset-uploads-count-card.component.ts +++ b/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 { @Input() - public app: AppDto; + public app!: AppDto; @Input() - public usage: ReadonlyArray; + public usage?: ReadonlyArray; public chartData: any; public chartOptions = ChartOptions.Default; diff --git a/frontend/app/features/dashboard/pages/cards/asset-uploads-size-card.component.ts b/frontend/app/features/dashboard/pages/cards/asset-uploads-size-card.component.ts index f5d5f93a4..d79d7c8a3 100644 --- a/frontend/app/features/dashboard/pages/cards/asset-uploads-size-card.component.ts +++ b/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 { @Input() - public app: AppDto; + public app!: AppDto; @Input() - public usage: ReadonlyArray; + public usage?: ReadonlyArray; public chartData: any; public chartOptions = ChartOptions.Default; diff --git a/frontend/app/features/dashboard/pages/cards/asset-uploads-size-summary-card.component.ts b/frontend/app/features/dashboard/pages/cards/asset-uploads-size-summary-card.component.ts index 31b95cd84..2bff7bae3 100644 --- a/frontend/app/features/dashboard/pages/cards/asset-uploads-size-summary-card.component.ts +++ b/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 { @Input() - public app: AppDto; + public app!: AppDto; @Input() - public usage: CurrentStorageDto; + public usage?: CurrentStorageDto; public storageCurrent = 0; public storageAllowed = 0; diff --git a/frontend/app/features/dashboard/pages/cards/content-summary-card.component.ts b/frontend/app/features/dashboard/pages/cards/content-summary-card.component.ts index 879c7a37c..91a573b0d 100644 --- a/frontend/app/features/dashboard/pages/cards/content-summary-card.component.ts +++ b/frontend/app/features/dashboard/pages/cards/content-summary-card.component.ts @@ -14,17 +14,17 @@ interface State { } @Component({ - selector: 'sqx-content-summary-card', + selector: 'sqx-content-summary-card[app]', styleUrls: ['./content-summary-card.component.scss'], templateUrl: './content-summary-card.component.html', changeDetection: ChangeDetectionStrategy.OnPush, }) export class ContentSummaryCardComponent extends StatefulComponent implements OnInit { @Input() - public app: AppDto; + public app!: AppDto; @Input() - public options: any; + public options?: any; constructor(changeDetector: ChangeDetectorRef, private readonly contentsService: ContentsService, diff --git a/frontend/app/features/dashboard/pages/cards/github-card.component.ts b/frontend/app/features/dashboard/pages/cards/github-card.component.ts index 20747f44b..fafe57553 100644 --- a/frontend/app/features/dashboard/pages/cards/github-card.component.ts +++ b/frontend/app/features/dashboard/pages/cards/github-card.component.ts @@ -16,5 +16,5 @@ import { AppDto } from '@app/shared'; }) export class GithubCardComponent { @Input() - public app: AppDto; + public app!: AppDto; } diff --git a/frontend/app/features/dashboard/pages/cards/history-card.component.ts b/frontend/app/features/dashboard/pages/cards/history-card.component.ts index 8c24ced77..975c615d8 100644 --- a/frontend/app/features/dashboard/pages/cards/history-card.component.ts +++ b/frontend/app/features/dashboard/pages/cards/history-card.component.ts @@ -17,9 +17,9 @@ import { Observable } from 'rxjs'; }) export class HistoryCardComponent implements OnChanges { @Input() - public app: AppDto; + public app!: AppDto; - public history: Observable>; + public history?: Observable>; constructor( private readonly historyService: HistoryService, diff --git a/frontend/app/features/dashboard/pages/cards/iframe-card.component.ts b/frontend/app/features/dashboard/pages/cards/iframe-card.component.ts index fbea2871b..62049eb3b 100644 --- a/frontend/app/features/dashboard/pages/cards/iframe-card.component.ts +++ b/frontend/app/features/dashboard/pages/cards/iframe-card.component.ts @@ -16,13 +16,13 @@ import { AppDto } from '@app/shared'; }) export class IFrameCardComponent implements AfterViewInit { @Input() - public app: AppDto; + public app!: AppDto; @Input() public options: any; @ViewChild('iframe', { static: false }) - public iframe: ElementRef; + public iframe!: ElementRef; public ngAfterViewInit() { this.iframe.nativeElement.src = this.options?.src; diff --git a/frontend/app/features/dashboard/pages/cards/schema-card.component.ts b/frontend/app/features/dashboard/pages/cards/schema-card.component.ts index 96d98b5d6..5dc28c97c 100644 --- a/frontend/app/features/dashboard/pages/cards/schema-card.component.ts +++ b/frontend/app/features/dashboard/pages/cards/schema-card.component.ts @@ -16,5 +16,5 @@ import { AppDto } from '@app/shared'; }) export class SchemaCardComponent { @Input() - public app: AppDto; + public app!: AppDto; } diff --git a/frontend/app/features/dashboard/pages/cards/support-card.component.ts b/frontend/app/features/dashboard/pages/cards/support-card.component.ts index 0c6266d67..1a088a3e2 100644 --- a/frontend/app/features/dashboard/pages/cards/support-card.component.ts +++ b/frontend/app/features/dashboard/pages/cards/support-card.component.ts @@ -16,5 +16,5 @@ import { AppDto } from '@app/shared'; }) export class SupportCardComponent { @Input() - public app: AppDto; + public app!: AppDto; } diff --git a/frontend/app/features/dashboard/pages/dashboard-config.component.ts b/frontend/app/features/dashboard/pages/dashboard-config.component.ts index a9e227095..145c17885 100644 --- a/frontend/app/features/dashboard/pages/dashboard-config.component.ts +++ b/frontend/app/features/dashboard/pages/dashboard-config.component.ts @@ -11,16 +11,16 @@ import { GridsterItem } from 'angular-gridster2'; import { take } from 'rxjs/operators'; @Component({ - selector: 'sqx-dashboard-config', + selector: 'sqx-dashboard-config[app][config]', styleUrls: ['./dashboard-config.component.scss'], templateUrl: './dashboard-config.component.html', }) export class DashboardConfigComponent implements OnChanges { @Input() - public app: AppDto; + public app!: AppDto; @Input() - public config: GridsterItem[]; + public config!: GridsterItem[]; @Input() public needsAttention?: boolean | null; @@ -31,7 +31,7 @@ export class DashboardConfigComponent implements OnChanges { public configOptions: ReadonlyArray; public expertDialog = new DialogModel(); - public expertConfig: GridsterItem[]; + public expertConfig?: GridsterItem[]; public dropdownModal = new ModalModel(); diff --git a/frontend/app/features/dashboard/pages/dashboard-page.component.html b/frontend/app/features/dashboard/pages/dashboard-page.component.html index 090c72aa8..ae92eaa78 100644 --- a/frontend/app/features/dashboard/pages/dashboard-page.component.html +++ b/frontend/app/features/dashboard/pages/dashboard-page.component.html @@ -74,7 +74,7 @@
diff --git a/frontend/app/features/dashboard/pages/dashboard-page.component.ts b/frontend/app/features/dashboard/pages/dashboard-page.component.ts index 41d8d1f9e..471cb7429 100644 --- a/frontend/app/features/dashboard/pages/dashboard-page.component.ts +++ b/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 { @ViewChild('grid') - public grid: GridsterComponent; + public grid!: GridsterComponent; public selectedApp = this.appsState.selectedApp.pipe(defined()); - public isStacked: boolean; + public isStacked = false; - public storageCurrent: CurrentStorageDto; - public storageUsage: ReadonlyArray; + public storageCurrent?: CurrentStorageDto; + public storageUsage?: ReadonlyArray; - public callsUsage: CallsUsageDto; + public callsUsage?: CallsUsageDto; - public gridConfig: GridsterItem[]; + public gridConfig?: GridsterItem[]; public gridOptions = DEFAULT_OPTIONS; public isScrolled = false; diff --git a/frontend/app/features/rules/pages/events/rule-event.component.ts b/frontend/app/features/rules/pages/events/rule-event.component.ts index 484f04f7d..c0fca2d7b 100644 --- a/frontend/app/features/rules/pages/events/rule-event.component.ts +++ b/frontend/app/features/rules/pages/events/rule-event.component.ts @@ -16,10 +16,10 @@ import { RuleEventDto } from '@app/shared'; }) export class RuleEventComponent { @Input('sqxRuleEvent') - public event: RuleEventDto; + public event!: RuleEventDto; @Input() - public expanded: boolean; + public expanded = false; @Output() public expandedChange = new EventEmitter(); diff --git a/frontend/app/features/rules/pages/rule/rule-page.component.ts b/frontend/app/features/rules/pages/rule/rule-page.component.ts index e0c82e3e9..5c955f068 100644 --- a/frontend/app/features/rules/pages/rule/rule-page.component.ts +++ b/frontend/app/features/rules/pages/rule/rule-page.component.ts @@ -17,7 +17,7 @@ type ComponentState = { type: string; values: any; form: T }; templateUrl: './rule-page.component.html', }) export class RulePageComponent extends ResourceOwner implements OnInit { - public supportedActions: { [name: string]: RuleElementDto }; + public supportedActions: { [name: string]: RuleElementDto } = {}; public supportedTriggers = ALL_TRIGGERS; public rule?: RuleDto | null; @@ -33,7 +33,7 @@ export class RulePageComponent extends ResourceOwner implements OnInit { } public get actionElement() { - return this.supportedActions[this.currentAction?.type || '']; + return this.supportedActions![this.currentAction?.type || '']; } public get triggerElement() { @@ -86,14 +86,14 @@ export class RulePageComponent extends ResourceOwner implements OnInit { } 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); this.currentAction = { form, type, values }; this.currentAction.form.setEnabled(this.isEditable); } - this.currentAction.form.load(values); + this.currentAction!.form.load(values); } public selectTrigger(type: string, values = {}) { diff --git a/frontend/app/features/rules/pages/rules/rule.component.ts b/frontend/app/features/rules/pages/rules/rule.component.ts index 0ecc425ed..de767e1c4 100644 --- a/frontend/app/features/rules/pages/rules/rule.component.ts +++ b/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 { @Input() - public ruleTriggers: TriggersDto; + public ruleTriggers!: TriggersDto; @Input() - public ruleActions: ActionsDto; + public ruleActions!: ActionsDto; @Input() - public rule: RuleDto; + public rule!: RuleDto; public dropdown = new ModalModel(); diff --git a/frontend/app/features/rules/pages/rules/rules-page.component.ts b/frontend/app/features/rules/pages/rules/rules-page.component.ts index 02ca631e2..484fbe785 100644 --- a/frontend/app/features/rules/pages/rules/rules-page.component.ts +++ b/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', }) export class RulesPageComponent implements OnInit { - public supportedActions: { [name: string]: RuleElementDto }; + public supportedActions?: { [name: string]: RuleElementDto }; public supportedTriggers = ALL_TRIGGERS; constructor( diff --git a/frontend/app/features/rules/pages/simulator/simulated-rule-event.component.ts b/frontend/app/features/rules/pages/simulator/simulated-rule-event.component.ts index c7fdf7a47..7edceac0a 100644 --- a/frontend/app/features/rules/pages/simulator/simulated-rule-event.component.ts +++ b/frontend/app/features/rules/pages/simulator/simulated-rule-event.component.ts @@ -35,10 +35,10 @@ const ERRORS_FAILED = [ }) export class SimulatedRuleEventComponent { @Input('sqxSimulatedRuleEvent') - public event: SimulatedRuleEventDto; + public event!: SimulatedRuleEventDto; @Input() - public expanded: boolean; + public expanded = false; @Output() public expandedChange = new EventEmitter(); diff --git a/frontend/app/features/rules/shared/actions/formattable-input.component.ts b/frontend/app/features/rules/shared/actions/formattable-input.component.ts index 14ef64df8..332f561d8 100644 --- a/frontend/app/features/rules/shared/actions/formattable-input.component.ts +++ b/frontend/app/features/rules/shared/actions/formattable-input.component.ts @@ -32,16 +32,16 @@ export class FormattableInputComponent implements ControlValueAccessor, AfterVie private value?: string; @Input() - public type: 'Text' | 'Code'; + public type: 'Text' | 'Code' = 'Text'; @Input() public formattable = true; @ViewChild(DefaultValueAccessor) - public inputEditor: DefaultValueAccessor; + public inputEditor!: DefaultValueAccessor; @ViewChild(CodeEditorComponent) - public codeEditor: CodeEditorComponent; + public codeEditor!: CodeEditorComponent; public disabled = false; diff --git a/frontend/app/features/rules/shared/actions/generic-action.component.ts b/frontend/app/features/rules/shared/actions/generic-action.component.ts index ff177aff3..92746fbd2 100644 --- a/frontend/app/features/rules/shared/actions/generic-action.component.ts +++ b/frontend/app/features/rules/shared/actions/generic-action.component.ts @@ -16,5 +16,5 @@ import { ActionForm } from '@app/shared'; }) export class GenericActionComponent { @Input() - public actionForm: ActionForm; + public actionForm!: ActionForm; } diff --git a/frontend/app/features/rules/shared/rule-element.component.ts b/frontend/app/features/rules/shared/rule-element.component.ts index de7bbf8c2..591b300e4 100644 --- a/frontend/app/features/rules/shared/rule-element.component.ts +++ b/frontend/app/features/rules/shared/rule-element.component.ts @@ -16,14 +16,14 @@ import { RuleElementDto } from '@app/shared'; }) export class RuleElementComponent { @Input() - public type: string; + public type!: string; @Input() - public element: RuleElementDto; + public element!: RuleElementDto; @Input() public isSmall?: boolean | null = true; @Input() - public disabled: boolean; + public disabled = false; } diff --git a/frontend/app/features/rules/shared/rule-icon.component.ts b/frontend/app/features/rules/shared/rule-icon.component.ts index bae24c238..9d4fa00ec 100644 --- a/frontend/app/features/rules/shared/rule-icon.component.ts +++ b/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'; @Component({ - selector: 'sqx-rule-icon', + selector: 'sqx-rule-icon[element]', styleUrls: ['./rule-icon.component.scss'], templateUrl: './rule-icon.component.html', changeDetection: ChangeDetectionStrategy.OnPush, }) export class RuleIconComponent { @Input() - public element: RuleElementDto; + public element!: RuleElementDto; @Input() public size: 'sm' | 'md' | 'lg' = 'sm'; diff --git a/frontend/app/features/rules/shared/triggers/asset-changed-trigger.component.ts b/frontend/app/features/rules/shared/triggers/asset-changed-trigger.component.ts index e4a147503..f5a4ee261 100644 --- a/frontend/app/features/rules/shared/triggers/asset-changed-trigger.component.ts +++ b/frontend/app/features/rules/shared/triggers/asset-changed-trigger.component.ts @@ -15,5 +15,5 @@ import { TriggerForm } from '@app/shared'; }) export class AssetChangedTriggerComponent { @Input() - public triggerForm: TriggerForm; + public triggerForm!: TriggerForm; } diff --git a/frontend/app/features/rules/shared/triggers/comment-trigger.component.ts b/frontend/app/features/rules/shared/triggers/comment-trigger.component.ts index 04840c988..a045fff1c 100644 --- a/frontend/app/features/rules/shared/triggers/comment-trigger.component.ts +++ b/frontend/app/features/rules/shared/triggers/comment-trigger.component.ts @@ -15,5 +15,5 @@ import { TriggerForm } from '@app/shared'; }) export class CommentTriggerComponent { @Input() - public triggerForm: TriggerForm; + public triggerForm!: TriggerForm; } diff --git a/frontend/app/features/rules/shared/triggers/content-changed-trigger.component.ts b/frontend/app/features/rules/shared/triggers/content-changed-trigger.component.ts index 760564fe5..8ebef1f07 100644 --- a/frontend/app/features/rules/shared/triggers/content-changed-trigger.component.ts +++ b/frontend/app/features/rules/shared/triggers/content-changed-trigger.component.ts @@ -24,15 +24,15 @@ export class ContentChangedTriggerComponent implements OnChanges { public schemas?: ReadonlyArray | null; @Input() - public trigger: any; + public trigger!: any; @Input() - public triggerForm: TriggerForm; + public triggerForm!: TriggerForm; public triggerSchemas: TriggerSchemaForm[] = []; - public schemaToAdd: SchemaDto; - public schemasToAdd: ReadonlyArray; + public schemaToAdd!: SchemaDto; + public schemasToAdd!: ReadonlyArray; public get hasSchema() { return !!this.schemaToAdd; diff --git a/frontend/app/features/rules/shared/triggers/schema-changed-trigger.component.ts b/frontend/app/features/rules/shared/triggers/schema-changed-trigger.component.ts index 5d52ab6fa..dca647059 100644 --- a/frontend/app/features/rules/shared/triggers/schema-changed-trigger.component.ts +++ b/frontend/app/features/rules/shared/triggers/schema-changed-trigger.component.ts @@ -15,5 +15,5 @@ import { TriggerForm } from '@app/shared'; }) export class SchemaChangedTriggerComponent { @Input() - public triggerForm: TriggerForm; + public triggerForm!: TriggerForm; } diff --git a/frontend/app/features/rules/shared/triggers/usage-trigger.component.ts b/frontend/app/features/rules/shared/triggers/usage-trigger.component.ts index 4ce7336e2..945191f83 100644 --- a/frontend/app/features/rules/shared/triggers/usage-trigger.component.ts +++ b/frontend/app/features/rules/shared/triggers/usage-trigger.component.ts @@ -15,5 +15,5 @@ import { TriggerForm } from '@app/shared'; }) export class UsageTriggerComponent { @Input() - public triggerForm: TriggerForm; + public triggerForm!: TriggerForm; } diff --git a/frontend/app/features/schemas/pages/schema/common/schema-edit-form.component.ts b/frontend/app/features/schemas/pages/schema/common/schema-edit-form.component.ts index 88d7f8198..139826f4d 100644 --- a/frontend/app/features/schemas/pages/schema/common/schema-edit-form.component.ts +++ b/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 { @Input() - public schema: SchemaDto; + public schema!: SchemaDto; public fieldForm = new EditSchemaForm(); diff --git a/frontend/app/features/schemas/pages/schema/export/schema-export-form.component.ts b/frontend/app/features/schemas/pages/schema/export/schema-export-form.component.ts index f6c5e7a32..c4e548f9a 100644 --- a/frontend/app/features/schemas/pages/schema/export/schema-export-form.component.ts +++ b/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 { @Input() - public schema: SchemaDto; + public schema!: SchemaDto; public synchronizeForm = new SynchronizeSchemaForm(); diff --git a/frontend/app/features/schemas/pages/schema/fields/field-wizard.component.ts b/frontend/app/features/schemas/pages/schema/fields/field-wizard.component.ts index 58ab32c97..815664dfa 100644 --- a/frontend/app/features/schemas/pages/schema/fields/field-wizard.component.ts +++ b/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 { @ViewChild('nameInput', { static: false }) - public nameInput: ElementRef; + public nameInput!: ElementRef; @Input() - public schema: SchemaDto; + public schema!: SchemaDto; @Input() - public settings: AppSettingsDto; + public settings!: AppSettingsDto; @Input() public parent: RootFieldDto | null | undefined; @@ -36,7 +36,7 @@ export class FieldWizardComponent implements OnInit { } public fieldTypes = fieldTypes; - public field: FieldDto; + public field!: FieldDto; public addFieldForm = new AddFieldForm(); diff --git a/frontend/app/features/schemas/pages/schema/fields/field.component.ts b/frontend/app/features/schemas/pages/schema/fields/field.component.ts index 3727d2f4d..e19fc4f17 100644 --- a/frontend/app/features/schemas/pages/schema/fields/field.component.ts +++ b/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 { @Input() - public field: NestedFieldDto | RootFieldDto; + public field!: NestedFieldDto | RootFieldDto; @Input() - public schema: SchemaDto; + public schema!: SchemaDto; @Input() - public parent: RootFieldDto; + public parent?: RootFieldDto; @Input() - public languages: ReadonlyArray; + public languages!: ReadonlyArray; @Input() - public settings: AppSettingsDto; + public settings!: AppSettingsDto; public get isLocalizable() { return (this.parent && this.parent.isLocalizable) || this.field['isLocalizable']; @@ -41,7 +41,7 @@ export class FieldComponent implements OnChanges { public isEditing = false; public isEditable?: boolean | null; - public editForm: EditFieldForm; + public editForm!: EditFieldForm; public addFieldDialog = new DialogModel(); diff --git a/frontend/app/features/schemas/pages/schema/fields/forms/field-form-common.component.ts b/frontend/app/features/schemas/pages/schema/fields/forms/field-form-common.component.ts index 089d1cb99..0349c4d76 100644 --- a/frontend/app/features/schemas/pages/schema/fields/forms/field-form-common.component.ts +++ b/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 { @Input() - public fieldForm: FormGroup; + public fieldForm!: FormGroup; @Input() - public field: FieldDto; + public field!: FieldDto; @Input() - public schema: SchemaDto; + public schema!: SchemaDto; } diff --git a/frontend/app/features/schemas/pages/schema/fields/forms/field-form-ui.component.ts b/frontend/app/features/schemas/pages/schema/fields/forms/field-form-ui.component.ts index 632a874a6..825cfff61 100644 --- a/frontend/app/features/schemas/pages/schema/fields/forms/field-form-ui.component.ts +++ b/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 { @Input() - public fieldForm: FormGroup; + public fieldForm!: FormGroup; @Input() - public field: FieldDto; + public field!: FieldDto; @Input() - public schema: SchemaDto; + public schema!: SchemaDto; } diff --git a/frontend/app/features/schemas/pages/schema/fields/forms/field-form-validation.component.ts b/frontend/app/features/schemas/pages/schema/fields/forms/field-form-validation.component.ts index 3949d5f50..d41d38d43 100644 --- a/frontend/app/features/schemas/pages/schema/fields/forms/field-form-validation.component.ts +++ b/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 { @Input() - public fieldForm: FormGroup; + public fieldForm!: FormGroup; @Input() - public field: FieldDto; + public field!: FieldDto; @Input() - public schema: SchemaDto; + public schema!: SchemaDto; @Input() - public settings: AppSettingsDto; + public settings!: AppSettingsDto; @Input() - public languages: ReadonlyArray; + public languages!: ReadonlyArray; @Input() public isLocalizable?: boolean | null; diff --git a/frontend/app/features/schemas/pages/schema/fields/forms/field-form.component.ts b/frontend/app/features/schemas/pages/schema/fields/forms/field-form.component.ts index 3d28d0980..dbb5190a9 100644 --- a/frontend/app/features/schemas/pages/schema/fields/forms/field-form.component.ts +++ b/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; @Input() - public fieldForm: FormGroup; + public fieldForm!: FormGroup; @Input() - public field: FieldDto; + public field!: FieldDto; @Input() - public schema: SchemaDto; + public schema!: SchemaDto; @Input() - public settings: AppSettingsDto; + public settings!: AppSettingsDto; @Input() - public languages: ReadonlyArray; + public languages!: ReadonlyArray; @Input() public isLocalizable?: boolean | null; diff --git a/frontend/app/features/schemas/pages/schema/fields/schema-fields.component.ts b/frontend/app/features/schemas/pages/schema/fields/schema-fields.component.ts index 4274ddd45..23ad5601f 100644 --- a/frontend/app/features/schemas/pages/schema/fields/schema-fields.component.ts +++ b/frontend/app/features/schemas/pages/schema/fields/schema-fields.component.ts @@ -7,7 +7,7 @@ import { CdkDragDrop } from '@angular/cdk/drag-drop'; 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({ selector: 'sqx-schema-fields[schema]', @@ -18,7 +18,7 @@ export class SchemaFieldsComponent implements OnInit { public fieldTypes = fieldTypes; @Input() - public schema: SchemaDto; + public schema!: SchemaDto; public addFieldDialog = new DialogModel(); @@ -36,7 +36,7 @@ export class SchemaFieldsComponent implements OnInit { this.languageState.load(); } - public sortFields(event: CdkDragDrop>) { + public sortFields(event: CdkDragDrop>) { this.schemasState.orderFields(this.schema, sorted(event)).subscribe(); } diff --git a/frontend/app/features/schemas/pages/schema/fields/types/array-validation.component.ts b/frontend/app/features/schemas/pages/schema/fields/types/array-validation.component.ts index 668f47709..fd308febb 100644 --- a/frontend/app/features/schemas/pages/schema/fields/types/array-validation.component.ts +++ b/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 { @Input() - public fieldForm: FormGroup; + public fieldForm!: FormGroup; @Input() - public field: FieldDto; + public field!: FieldDto; @Input() - public properties: ArrayFieldPropertiesDto; + public properties!: ArrayFieldPropertiesDto; constructor( public readonly schemasSource: SchemaTagSource, diff --git a/frontend/app/features/schemas/pages/schema/fields/types/assets-ui.component.ts b/frontend/app/features/schemas/pages/schema/fields/types/assets-ui.component.ts index 77c7eb9b1..fde2deaf5 100644 --- a/frontend/app/features/schemas/pages/schema/fields/types/assets-ui.component.ts +++ b/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 { @Input() - public fieldForm: FormGroup; + public fieldForm!: FormGroup; @Input() - public field: FieldDto; + public field!: FieldDto; @Input() - public properties: AssetsFieldPropertiesDto; + public properties!: AssetsFieldPropertiesDto; } diff --git a/frontend/app/features/schemas/pages/schema/fields/types/assets-validation.component.ts b/frontend/app/features/schemas/pages/schema/fields/types/assets-validation.component.ts index 6a3ea33b1..6312990d0 100644 --- a/frontend/app/features/schemas/pages/schema/fields/types/assets-validation.component.ts +++ b/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'; @Component({ - selector: 'sqx-assets-validation[field][fieldForm][properties]', + selector: 'sqx-assets-validation[field][fieldForm][languages][properties]', styleUrls: ['assets-validation.component.scss'], templateUrl: 'assets-validation.component.html', }) export class AssetsValidationComponent { @Input() - public fieldForm: FormGroup; + public fieldForm!: FormGroup; @Input() - public field: FieldDto; + public field!: FieldDto; @Input() - public properties: AssetsFieldPropertiesDto; + public properties!: AssetsFieldPropertiesDto; @Input() - public languages: ReadonlyArray; + public languages!: ReadonlyArray; @Input() public isLocalizable?: boolean | null; diff --git a/frontend/app/features/schemas/pages/schema/fields/types/boolean-ui.component.ts b/frontend/app/features/schemas/pages/schema/fields/types/boolean-ui.component.ts index be3e0fe92..eae76b593 100644 --- a/frontend/app/features/schemas/pages/schema/fields/types/boolean-ui.component.ts +++ b/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; @Input() - public fieldForm: FormGroup; + public fieldForm!: FormGroup; @Input() - public field: FieldDto; + public field!: FieldDto; @Input() - public properties: BooleanFieldPropertiesDto; + public properties!: BooleanFieldPropertiesDto; } diff --git a/frontend/app/features/schemas/pages/schema/fields/types/boolean-validation.component.ts b/frontend/app/features/schemas/pages/schema/fields/types/boolean-validation.component.ts index a25c7d577..43ea0045f 100644 --- a/frontend/app/features/schemas/pages/schema/fields/types/boolean-validation.component.ts +++ b/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'; @Component({ - selector: 'sqx-boolean-validation[field][fieldForm][properties]', + selector: 'sqx-boolean-validation[field][fieldForm][languages][properties]', styleUrls: ['boolean-validation.component.scss'], templateUrl: 'boolean-validation.component.html', }) export class BooleanValidationComponent implements OnChanges { @Input() - public fieldForm: FormGroup; + public fieldForm!: FormGroup; @Input() - public field: FieldDto; + public field!: FieldDto; @Input() - public properties: BooleanFieldPropertiesDto; + public properties!: BooleanFieldPropertiesDto; @Input() - public languages: ReadonlyArray; + public languages!: ReadonlyArray; @Input() public isLocalizable?: boolean | null; - public showDefaultValue: Observable; + public showDefaultValue?: Observable; public ngOnChanges(changes: SimpleChanges) { if (changes['fieldForm']) { diff --git a/frontend/app/features/schemas/pages/schema/fields/types/component-ui.component.ts b/frontend/app/features/schemas/pages/schema/fields/types/component-ui.component.ts index c29f57280..5d28a4122 100644 --- a/frontend/app/features/schemas/pages/schema/fields/types/component-ui.component.ts +++ b/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 { @Input() - public fieldForm: FormGroup; + public fieldForm!: FormGroup; @Input() - public field: FieldDto; + public field!: FieldDto; @Input() - public properties: ReferencesFieldPropertiesDto; + public properties!: ReferencesFieldPropertiesDto; } diff --git a/frontend/app/features/schemas/pages/schema/fields/types/component-validation.component.ts b/frontend/app/features/schemas/pages/schema/fields/types/component-validation.component.ts index c9cd6b07d..0bbf45ef1 100644 --- a/frontend/app/features/schemas/pages/schema/fields/types/component-validation.component.ts +++ b/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 { @Input() - public fieldForm: FormGroup; + public fieldForm!: FormGroup; @Input() - public field: FieldDto; + public field!: FieldDto; @Input() - public properties: ReferencesFieldPropertiesDto; + public properties!: ReferencesFieldPropertiesDto; constructor( public readonly schemasSource: SchemaTagSource, diff --git a/frontend/app/features/schemas/pages/schema/fields/types/components-ui.component.ts b/frontend/app/features/schemas/pages/schema/fields/types/components-ui.component.ts index 369de8539..f224bc6a7 100644 --- a/frontend/app/features/schemas/pages/schema/fields/types/components-ui.component.ts +++ b/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 { @Input() - public fieldForm: FormGroup; + public fieldForm!: FormGroup; @Input() - public field: FieldDto; + public field!: FieldDto; @Input() - public properties: ReferencesFieldPropertiesDto; + public properties!: ReferencesFieldPropertiesDto; } diff --git a/frontend/app/features/schemas/pages/schema/fields/types/components-validation.component.ts b/frontend/app/features/schemas/pages/schema/fields/types/components-validation.component.ts index 86ed7d9ce..d0de1d483 100644 --- a/frontend/app/features/schemas/pages/schema/fields/types/components-validation.component.ts +++ b/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 { @Input() - public fieldForm: FormGroup; + public fieldForm!: FormGroup; @Input() - public field: FieldDto; + public field!: FieldDto; @Input() - public properties: ReferencesFieldPropertiesDto; + public properties!: ReferencesFieldPropertiesDto; constructor( public readonly schemasSource: SchemaTagSource, diff --git a/frontend/app/features/schemas/pages/schema/fields/types/date-time-ui.component.ts b/frontend/app/features/schemas/pages/schema/fields/types/date-time-ui.component.ts index 54f9810a1..dbb5f06f2 100644 --- a/frontend/app/features/schemas/pages/schema/fields/types/date-time-ui.component.ts +++ b/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; @Input() - public fieldForm: FormGroup; + public fieldForm!: FormGroup; @Input() - public field: FieldDto; + public field!: FieldDto; @Input() - public properties: DateTimeFieldPropertiesDto; + public properties!: DateTimeFieldPropertiesDto; } diff --git a/frontend/app/features/schemas/pages/schema/fields/types/date-time-validation.component.ts b/frontend/app/features/schemas/pages/schema/fields/types/date-time-validation.component.ts index 3364aafb9..d255be247 100644 --- a/frontend/app/features/schemas/pages/schema/fields/types/date-time-validation.component.ts +++ b/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 = ['Now', 'Today']; @Component({ - selector: 'sqx-date-time-validation[field][fieldForm][properties]', + selector: 'sqx-date-time-validation[field][fieldForm][languages][properties]', styleUrls: ['date-time-validation.component.scss'], templateUrl: 'date-time-validation.component.html', }) export class DateTimeValidationComponent implements OnChanges { @Input() - public fieldForm: FormGroup; + public fieldForm!: FormGroup; @Input() - public field: FieldDto; + public field!: FieldDto; @Input() - public properties: DateTimeFieldPropertiesDto; + public properties!: DateTimeFieldPropertiesDto; @Input() - public languages: ReadonlyArray; + public languages!: ReadonlyArray; @Input() public isLocalizable?: boolean | null; - public showDefaultValues: Observable; - public showDefaultValue: Observable; + public showDefaultValues?: Observable; + public showDefaultValue?: Observable; public calculatedDefaultValues = CALCULATED_DEFAULT_VALUES; diff --git a/frontend/app/features/schemas/pages/schema/fields/types/geolocation-ui.component.ts b/frontend/app/features/schemas/pages/schema/fields/types/geolocation-ui.component.ts index 5bfb92c4f..72afe4c15 100644 --- a/frontend/app/features/schemas/pages/schema/fields/types/geolocation-ui.component.ts +++ b/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 { @Input() - public fieldForm: FormGroup; + public fieldForm!: FormGroup; @Input() - public field: FieldDto; + public field!: FieldDto; @Input() - public properties: GeolocationFieldPropertiesDto; + public properties!: GeolocationFieldPropertiesDto; } diff --git a/frontend/app/features/schemas/pages/schema/fields/types/geolocation-validation.component.ts b/frontend/app/features/schemas/pages/schema/fields/types/geolocation-validation.component.ts index f44bed6a6..1fe3276f7 100644 --- a/frontend/app/features/schemas/pages/schema/fields/types/geolocation-validation.component.ts +++ b/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 { @Input() - public fieldForm: FormGroup; + public fieldForm!: FormGroup; @Input() - public field: FieldDto; + public field!: FieldDto; @Input() - public properties: GeolocationFieldPropertiesDto; + public properties!: GeolocationFieldPropertiesDto; } diff --git a/frontend/app/features/schemas/pages/schema/fields/types/json-ui.component.ts b/frontend/app/features/schemas/pages/schema/fields/types/json-ui.component.ts index 8eb62ae38..eda099dd2 100644 --- a/frontend/app/features/schemas/pages/schema/fields/types/json-ui.component.ts +++ b/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 { @Input() - public fieldForm: FormGroup; + public fieldForm!: FormGroup; @Input() - public field: FieldDto; + public field!: FieldDto; @Input() - public properties: JsonFieldPropertiesDto; + public properties!: JsonFieldPropertiesDto; } diff --git a/frontend/app/features/schemas/pages/schema/fields/types/json-validation.component.ts b/frontend/app/features/schemas/pages/schema/fields/types/json-validation.component.ts index ece104155..18cf7bcf1 100644 --- a/frontend/app/features/schemas/pages/schema/fields/types/json-validation.component.ts +++ b/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 { @Input() - public fieldForm: FormGroup; + public fieldForm!: FormGroup; @Input() - public field: FieldDto; + public field!: FieldDto; @Input() - public properties: JsonFieldPropertiesDto; + public properties!: JsonFieldPropertiesDto; } diff --git a/frontend/app/features/schemas/pages/schema/fields/types/number-ui.component.ts b/frontend/app/features/schemas/pages/schema/fields/types/number-ui.component.ts index 2034e38b6..59da12e03 100644 --- a/frontend/app/features/schemas/pages/schema/fields/types/number-ui.component.ts +++ b/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; @Input() - public fieldForm: FormGroup; + public fieldForm!: FormGroup; @Input() - public field: FieldDto; + public field!: FieldDto; @Input() - public properties: NumberFieldPropertiesDto; + public properties!: NumberFieldPropertiesDto; - public hideAllowedValues: Observable; - public hideInlineEditable: Observable; + public hideAllowedValues?: Observable; + public hideInlineEditable?: Observable; public ngOnChanges(changes: SimpleChanges) { if (changes['fieldForm']) { diff --git a/frontend/app/features/schemas/pages/schema/fields/types/number-validation.component.ts b/frontend/app/features/schemas/pages/schema/fields/types/number-validation.component.ts index 6942e1695..184dc5d91 100644 --- a/frontend/app/features/schemas/pages/schema/fields/types/number-validation.component.ts +++ b/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'; @Component({ - selector: 'sqx-number-validation[field][fieldForm][properties][schema]', + selector: 'sqx-number-validation[field][fieldForm][languages][properties][schema]', styleUrls: ['number-validation.component.scss'], templateUrl: 'number-validation.component.html', }) export class NumberValidationComponent { @Input() - public fieldForm: FormGroup; + public fieldForm!: FormGroup; @Input() - public field: FieldDto; + public field!: FieldDto; @Input() - public schema: SchemaDto; + public schema!: SchemaDto; @Input() - public properties: NumberFieldPropertiesDto; + public properties!: NumberFieldPropertiesDto; @Input() - public languages: ReadonlyArray; + public languages!: ReadonlyArray; @Input() public isLocalizable?: boolean | null; diff --git a/frontend/app/features/schemas/pages/schema/fields/types/references-ui.component.ts b/frontend/app/features/schemas/pages/schema/fields/types/references-ui.component.ts index f49e67b9f..08753919a 100644 --- a/frontend/app/features/schemas/pages/schema/fields/types/references-ui.component.ts +++ b/frontend/app/features/schemas/pages/schema/fields/types/references-ui.component.ts @@ -18,11 +18,11 @@ export class ReferencesUIComponent { public readonly editors = REFERENCES_FIELD_EDITORS; @Input() - public fieldForm: FormGroup; + public fieldForm!: FormGroup; @Input() - public field: FieldDto; + public field!: FieldDto; @Input() - public properties: ReferencesFieldPropertiesDto; + public properties!: ReferencesFieldPropertiesDto; } diff --git a/frontend/app/features/schemas/pages/schema/fields/types/references-validation.component.ts b/frontend/app/features/schemas/pages/schema/fields/types/references-validation.component.ts index 9c2c79513..a4d662387 100644 --- a/frontend/app/features/schemas/pages/schema/fields/types/references-validation.component.ts +++ b/frontend/app/features/schemas/pages/schema/fields/types/references-validation.component.ts @@ -10,22 +10,22 @@ import { FormGroup } from '@angular/forms'; import { FieldDto, LanguageDto, ReferencesFieldPropertiesDto, SchemaTagSource } from '@app/shared'; @Component({ - selector: 'sqx-references-validation[field][fieldForm][properties]', + selector: 'sqx-references-validation[field][fieldForm][languages][properties]', styleUrls: ['references-validation.component.scss'], templateUrl: 'references-validation.component.html', }) export class ReferencesValidationComponent { @Input() - public fieldForm: FormGroup; + public fieldForm!: FormGroup; @Input() - public field: FieldDto; + public field!: FieldDto; @Input() - public properties: ReferencesFieldPropertiesDto; + public properties!: ReferencesFieldPropertiesDto; @Input() - public languages: ReadonlyArray; + public languages!: ReadonlyArray; @Input() public isLocalizable?: boolean | null; diff --git a/frontend/app/features/schemas/pages/schema/fields/types/string-ui.component.ts b/frontend/app/features/schemas/pages/schema/fields/types/string-ui.component.ts index 33ca8ad37..90a931e06 100644 --- a/frontend/app/features/schemas/pages/schema/fields/types/string-ui.component.ts +++ b/frontend/app/features/schemas/pages/schema/fields/types/string-ui.component.ts @@ -19,16 +19,16 @@ export class StringUIComponent extends ResourceOwner implements OnChanges { public readonly editors = STRING_FIELD_EDITORS; @Input() - public fieldForm: FormGroup; + public fieldForm!: FormGroup; @Input() - public field: FieldDto; + public field!: FieldDto; @Input() - public properties: StringFieldPropertiesDto; + public properties!: StringFieldPropertiesDto; - public hideAllowedValues: Observable; - public hideInlineEditable: Observable; + public hideAllowedValues?: Observable; + public hideInlineEditable?: Observable; public ngOnChanges(changes: SimpleChanges) { if (changes['fieldForm']) { diff --git a/frontend/app/features/schemas/pages/schema/fields/types/string-validation.component.ts b/frontend/app/features/schemas/pages/schema/fields/types/string-validation.component.ts index c98e19bc3..6fa1614cb 100644 --- a/frontend/app/features/schemas/pages/schema/fields/types/string-validation.component.ts +++ b/frontend/app/features/schemas/pages/schema/fields/types/string-validation.component.ts @@ -11,7 +11,7 @@ import { AppSettingsDto, FieldDto, hasNoValue$, hasValue$, LanguageDto, ModalMod import { Observable } from 'rxjs'; @Component({ - selector: 'sqx-string-validation[field][fieldForm][properties][schema]', + selector: 'sqx-string-validation[field][fieldForm][languages][properties][schema][settings]', styleUrls: ['string-validation.component.scss'], templateUrl: 'string-validation.component.html', }) @@ -19,30 +19,30 @@ export class StringValidationComponent extends ResourceOwner implements OnChange public readonly contentTypes = STRING_CONTENT_TYPES; @Input() - public fieldForm: FormGroup; + public fieldForm!: FormGroup; @Input() - public field: FieldDto; + public field!: FieldDto; @Input() - public schema: SchemaDto; + public schema!: SchemaDto; @Input() - public properties: StringFieldPropertiesDto; + public properties!: StringFieldPropertiesDto; @Input() - public settings: AppSettingsDto; + public settings!: AppSettingsDto; @Input() - public languages: ReadonlyArray; + public languages!: ReadonlyArray; @Input() public isLocalizable?: boolean | null; - public showPatternMessage: Observable; - public showPatternSuggestions: Observable; + public showPatternMessage?: Observable; + public showPatternSuggestions?: Observable; - public patternName: string; + public patternName = ''; public patternsModal = new ModalModel(); public get showUnique() { diff --git a/frontend/app/features/schemas/pages/schema/fields/types/tags-ui.component.ts b/frontend/app/features/schemas/pages/schema/fields/types/tags-ui.component.ts index c39e09af5..4a3d6e8e0 100644 --- a/frontend/app/features/schemas/pages/schema/fields/types/tags-ui.component.ts +++ b/frontend/app/features/schemas/pages/schema/fields/types/tags-ui.component.ts @@ -18,11 +18,11 @@ export class TagsUIComponent { public readonly editors = TAGS_FIELD_EDITORS; @Input() - public fieldForm: FormGroup; + public fieldForm!: FormGroup; @Input() - public field: FieldDto; + public field!: FieldDto; @Input() - public properties: TagsFieldPropertiesDto; + public properties!: TagsFieldPropertiesDto; } diff --git a/frontend/app/features/schemas/pages/schema/fields/types/tags-validation.component.ts b/frontend/app/features/schemas/pages/schema/fields/types/tags-validation.component.ts index 2e56da61d..47de0c42e 100644 --- a/frontend/app/features/schemas/pages/schema/fields/types/tags-validation.component.ts +++ b/frontend/app/features/schemas/pages/schema/fields/types/tags-validation.component.ts @@ -16,16 +16,16 @@ import { FieldDto, LanguageDto, TagsFieldPropertiesDto } from '@app/shared'; }) export class TagsValidationComponent { @Input() - public fieldForm: FormGroup; + public fieldForm!: FormGroup; @Input() - public field: FieldDto; + public field!: FieldDto; @Input() - public properties: TagsFieldPropertiesDto; + public properties!: TagsFieldPropertiesDto; @Input() - public languages: ReadonlyArray; + public languages!: ReadonlyArray; @Input() public isLocalizable?: boolean | null; diff --git a/frontend/app/features/schemas/pages/schema/preview/schema-preview-urls-form.component.ts b/frontend/app/features/schemas/pages/schema/preview/schema-preview-urls-form.component.ts index 9d685fe43..e4f6e3a26 100644 --- a/frontend/app/features/schemas/pages/schema/preview/schema-preview-urls-form.component.ts +++ b/frontend/app/features/schemas/pages/schema/preview/schema-preview-urls-form.component.ts @@ -15,7 +15,7 @@ import { ConfigurePreviewUrlsForm, SchemaDto, SchemasState } from '@app/shared'; }) export class SchemaPreviewUrlsFormComponent implements OnChanges { @Input() - public schema: SchemaDto; + public schema!: SchemaDto; public editForm = new ConfigurePreviewUrlsForm(); diff --git a/frontend/app/features/schemas/pages/schema/rules/schema-field-rules-form.component.ts b/frontend/app/features/schemas/pages/schema/rules/schema-field-rules-form.component.ts index 18273a406..5c9fd04ff 100644 --- a/frontend/app/features/schemas/pages/schema/rules/schema-field-rules-form.component.ts +++ b/frontend/app/features/schemas/pages/schema/rules/schema-field-rules-form.component.ts @@ -15,11 +15,11 @@ import { ConfigureFieldRulesForm, FIELD_RULE_ACTIONS, SchemaDto, SchemasState } }) export class SchemaFieldRulesFormComponent implements OnChanges { @Input() - public schema: SchemaDto; + public schema!: SchemaDto; public editForm = new ConfigureFieldRulesForm(); - public fieldNames: ReadonlyArray; + public fieldNames!: ReadonlyArray; public fieldActions = FIELD_RULE_ACTIONS; public isEditable = false; diff --git a/frontend/app/features/schemas/pages/schema/schema-page.component.ts b/frontend/app/features/schemas/pages/schema/schema-page.component.ts index 982e3538b..193bc92d7 100644 --- a/frontend/app/features/schemas/pages/schema/schema-page.component.ts +++ b/frontend/app/features/schemas/pages/schema/schema-page.component.ts @@ -19,7 +19,7 @@ import { SchemaCloning } from './../messages'; export class SchemaPageComponent extends ResourceOwner implements OnInit { public readonly exact = { exact: true }; - public schema: SchemaDto; + public schema!: SchemaDto; public schemaTab = this.route.queryParams.pipe(map(x => x['tab'] || 'fields')); public editOptionsDropdown = new ModalModel(); diff --git a/frontend/app/features/schemas/pages/schema/scripts/schema-scripts-form.component.ts b/frontend/app/features/schemas/pages/schema/scripts/schema-scripts-form.component.ts index fb8772eac..5d0531248 100644 --- a/frontend/app/features/schemas/pages/schema/scripts/schema-scripts-form.component.ts +++ b/frontend/app/features/schemas/pages/schema/scripts/schema-scripts-form.component.ts @@ -16,7 +16,7 @@ import { EMPTY, Observable } from 'rxjs'; }) export class SchemaScriptsFormComponent implements OnChanges { @Input() - public schema: SchemaDto; + public schema!: SchemaDto; public schemaScript = 'query'; public schemaCompletions: Observable = EMPTY; diff --git a/frontend/app/features/schemas/pages/schema/ui/field-list.component.ts b/frontend/app/features/schemas/pages/schema/ui/field-list.component.ts index ca1f544a5..0fbf767fb 100644 --- a/frontend/app/features/schemas/pages/schema/ui/field-list.component.ts +++ b/frontend/app/features/schemas/pages/schema/ui/field-list.component.ts @@ -12,7 +12,7 @@ import { MetaFields, SchemaDto } from '@app/shared'; const META_FIELD_NAMES = Object.values(MetaFields); @Component({ - selector: 'sqx-field-list', + selector: 'sqx-field-list[fieldNames][schema]', styleUrls: ['./field-list.component.scss'], templateUrl: './field-list.component.html', changeDetection: ChangeDetectionStrategy.OnPush, @@ -22,10 +22,10 @@ export class FieldListComponent implements OnChanges { public emptyText = ''; @Input() - public schema: SchemaDto; + public schema!: SchemaDto; @Input() - public fieldNames: ReadonlyArray; + public fieldNames!: ReadonlyArray; @Input() public withMetaFields = false; @@ -33,8 +33,8 @@ export class FieldListComponent implements OnChanges { @Output() public fieldNamesChange = new EventEmitter>(); - public fieldsAdded: string[]; - public fieldsNotAdded: string[]; + public fieldsAdded!: string[]; + public fieldsNotAdded!: string[]; public ngOnChanges() { let allFields = this.schema.contentFields.map(x => x.name); diff --git a/frontend/app/features/schemas/pages/schema/ui/schema-ui-form.component.ts b/frontend/app/features/schemas/pages/schema/ui/schema-ui-form.component.ts index df1cd6821..1dc7ef4c0 100644 --- a/frontend/app/features/schemas/pages/schema/ui/schema-ui-form.component.ts +++ b/frontend/app/features/schemas/pages/schema/ui/schema-ui-form.component.ts @@ -15,7 +15,7 @@ import { SchemaDto, SchemasState } from '@app/shared'; }) export class SchemaUIFormComponent implements OnChanges { @Input() - public schema: SchemaDto; + public schema!: SchemaDto; public selectedTab = 0; diff --git a/frontend/app/features/settings/pages/backups/backup.component.ts b/frontend/app/features/settings/pages/backups/backup.component.ts index afcb437ab..e5e898661 100644 --- a/frontend/app/features/settings/pages/backups/backup.component.ts +++ b/frontend/app/features/settings/pages/backups/backup.component.ts @@ -16,7 +16,7 @@ import { ApiUrlConfig, BackupDto, BackupsState, Duration } from '@app/shared'; }) export class BackupComponent { @Input() - public backup: BackupDto; + public backup!: BackupDto; public get duration() { return Duration.create(this.backup.started, this.backup.stopped!).toString(); diff --git a/frontend/app/features/settings/pages/clients/client-connect-form.component.ts b/frontend/app/features/settings/pages/clients/client-connect-form.component.ts index ea04cc61c..21fcaafee 100644 --- a/frontend/app/features/settings/pages/clients/client-connect-form.component.ts +++ b/frontend/app/features/settings/pages/clients/client-connect-form.component.ts @@ -6,10 +6,10 @@ */ import { ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; -import { AccessTokenDto, ApiUrlConfig, AppsState, ClientDto, ClientsService, DialogService, RoleDto } from '@app/shared'; +import { AccessTokenDto, ApiUrlConfig, AppsState, ClientDto, ClientsService, DialogService } from '@app/shared'; @Component({ - selector: 'sqx-client-connect-form', + selector: 'sqx-client-connect-form[client]', styleUrls: ['./client-connect-form.component.scss'], templateUrl: './client-connect-form.component.html', }) @@ -18,16 +18,13 @@ export class ClientConnectFormComponent implements OnInit { public complete = new EventEmitter(); @Input() - public client: ClientDto; + public client!: ClientDto; - @Input() - public clientRoles: ReadonlyArray; - - public appName: string; + public appName!: string; - public connectToken: AccessTokenDto; - public connectHttpText: string; - public connectLibraryText: string; + public connectToken?: AccessTokenDto; + public connectHttpText = ''; + public connectLibraryText = ''; public step = 'Start'; diff --git a/frontend/app/features/settings/pages/clients/client.component.ts b/frontend/app/features/settings/pages/clients/client.component.ts index c331fd122..b8209a9f4 100644 --- a/frontend/app/features/settings/pages/clients/client.component.ts +++ b/frontend/app/features/settings/pages/clients/client.component.ts @@ -16,12 +16,12 @@ import { AppsState, ClientDto, ClientsState, DialogModel, RoleDto } from '@app/s }) export class ClientComponent implements OnChanges { @Input() - public client: ClientDto; + public client!: ClientDto; @Input() - public clientRoles: ReadonlyArray; + public clientRoles!: ReadonlyArray; - public apiCallsLimit: number; + public apiCallsLimit = 0; public connectDialog = new DialogModel(); diff --git a/frontend/app/features/settings/pages/contributors/contributor-add-form.component.ts b/frontend/app/features/settings/pages/contributors/contributor-add-form.component.ts index 334776cbc..15e164155 100644 --- a/frontend/app/features/settings/pages/contributors/contributor-add-form.component.ts +++ b/frontend/app/features/settings/pages/contributors/contributor-add-form.component.ts @@ -38,7 +38,7 @@ export class UsersDataSource implements AutocompleteSource { } @Component({ - selector: 'sqx-contributor-add-form', + selector: 'sqx-contributor-add-form[roles]', styleUrls: ['./contributor-add-form.component.scss'], templateUrl: './contributor-add-form.component.html', providers: [ @@ -49,7 +49,7 @@ export class ContributorAddFormComponent implements OnChanges { private defaultValue: any; @Input() - public roles: ReadonlyArray; + public roles!: ReadonlyArray; public assignContributorForm = new AssignContributorForm(); diff --git a/frontend/app/features/settings/pages/contributors/contributor.component.ts b/frontend/app/features/settings/pages/contributors/contributor.component.ts index 4838cd609..ec5284be9 100644 --- a/frontend/app/features/settings/pages/contributors/contributor.component.ts +++ b/frontend/app/features/settings/pages/contributors/contributor.component.ts @@ -16,13 +16,13 @@ import { ContributorDto, ContributorsState, RoleDto } from '@app/shared'; }) export class ContributorComponent { @Input() - public roles: ReadonlyArray; + public roles!: ReadonlyArray; @Input() public search?: string | RegExp | null; @Input('sqxContributor') - public contributor: ContributorDto; + public contributor!: ContributorDto; constructor( private readonly contributorsState: ContributorsState, diff --git a/frontend/app/features/settings/pages/contributors/import-contributors-dialog.component.ts b/frontend/app/features/settings/pages/contributors/import-contributors-dialog.component.ts index 99ed32eef..55f80607e 100644 --- a/frontend/app/features/settings/pages/contributors/import-contributors-dialog.component.ts +++ b/frontend/app/features/settings/pages/contributors/import-contributors-dialog.component.ts @@ -18,7 +18,7 @@ type ImportStatus = { }; @Component({ - selector: 'sqx-import-contributors-dialog', + selector: 'sqx-import-contributors-dialog[roles]', styleUrls: ['./import-contributors-dialog.component.scss'], templateUrl: './import-contributors-dialog.component.html', }) @@ -27,7 +27,7 @@ export class ImportContributorsDialogComponent { public close = new EventEmitter(); @Input() - public roles: ReadonlyArray; + public roles!: ReadonlyArray; public importForm = new ImportContributorsForm(); public importStatus: ReadonlyArray = []; diff --git a/frontend/app/features/settings/pages/languages/language.component.ts b/frontend/app/features/settings/pages/languages/language.component.ts index f86864652..36436eaca 100644 --- a/frontend/app/features/settings/pages/languages/language.component.ts +++ b/frontend/app/features/settings/pages/languages/language.component.ts @@ -16,15 +16,15 @@ import { AppLanguageDto, EditLanguageForm, LanguageDto, LanguagesState, sorted } }) export class LanguageComponent implements OnChanges { @Input() - public language: AppLanguageDto; + public language!: AppLanguageDto; @Input() - public fallbackLanguages: ReadonlyArray; + public fallbackLanguages!: ReadonlyArray; @Input() - public fallbackLanguagesNew: ReadonlyArray; + public fallbackLanguagesNew!: ReadonlyArray; - public otherLanguage: LanguageDto; + public otherLanguage!: LanguageDto; public isEditing?: boolean | null; public isEditable = false; diff --git a/frontend/app/features/settings/pages/more/more-page.component.ts b/frontend/app/features/settings/pages/more/more-page.component.ts index 4af53a0e2..43bf93021 100644 --- a/frontend/app/features/settings/pages/more/more-page.component.ts +++ b/frontend/app/features/settings/pages/more/more-page.component.ts @@ -15,11 +15,11 @@ import { AppDto, AppsState, defined, ResourceOwner, Types, UpdateAppForm } from templateUrl: './more-page.component.html', }) export class MorePageComponent extends ResourceOwner implements OnInit { - public app: AppDto; + public app!: AppDto; public isEditable = false; - public isImageEditable: boolean; - public isDeletable: boolean; + public isImageEditable = false; + public isDeletable = false; public uploading = false; public uploadProgress = 10; diff --git a/frontend/app/features/settings/pages/plans/plan.component.ts b/frontend/app/features/settings/pages/plans/plan.component.ts index be5518425..99f88dc08 100644 --- a/frontend/app/features/settings/pages/plans/plan.component.ts +++ b/frontend/app/features/settings/pages/plans/plan.component.ts @@ -16,7 +16,7 @@ import { PlanInfo, PlansState } from '@app/shared'; }) export class PlanComponent { @Input() - public planInfo: PlanInfo; + public planInfo!: PlanInfo; constructor( public readonly plansState: PlansState, diff --git a/frontend/app/features/settings/pages/plans/plans-page.component.ts b/frontend/app/features/settings/pages/plans/plans-page.component.ts index 22367e13d..6f6521698 100644 --- a/frontend/app/features/settings/pages/plans/plans-page.component.ts +++ b/frontend/app/features/settings/pages/plans/plans-page.component.ts @@ -15,7 +15,7 @@ import { ApiUrlConfig, PlanDto, PlansState } from '@app/shared'; templateUrl: './plans-page.component.html', }) export class PlansPageComponent implements OnInit { - private overridePlanId: string; + private overridePlanId?: string; public portalUrl = this.apiUrl.buildUrl('/portal/'); diff --git a/frontend/app/features/settings/pages/roles/role.component.ts b/frontend/app/features/settings/pages/roles/role.component.ts index 028ece35d..a4bf3c8f0 100644 --- a/frontend/app/features/settings/pages/roles/role.component.ts +++ b/frontend/app/features/settings/pages/roles/role.component.ts @@ -39,16 +39,16 @@ const SIMPLE_PROPERTIES: ReadonlyArray = [{ }) export class RoleComponent implements OnChanges { @Input() - public role: RoleDto; + public role!: RoleDto; @Input() - public allPermissions: AutocompleteSource; + public allPermissions!: AutocompleteSource; @Input() - public schemas: ReadonlyArray; + public schemas!: ReadonlyArray; @ViewChild('addInput', { static: false }) - public addPermissionInput: AutocompleteComponent; + public addPermissionInput!: AutocompleteComponent; public get halfSchemas() { return Math.ceil(this.schemas.length / 2); @@ -57,7 +57,7 @@ export class RoleComponent implements OnChanges { public descriptions = DESCRIPTIONS; public propertiesList = Settings.AppProperties; - public properties: {}; + public properties!: {}; public propertiesSimple = SIMPLE_PROPERTIES; public isEditing = false; diff --git a/frontend/app/features/settings/pages/settings/settings-page.component.ts b/frontend/app/features/settings/pages/settings/settings-page.component.ts index 08d8c12d7..ee1224157 100644 --- a/frontend/app/features/settings/pages/settings/settings-page.component.ts +++ b/frontend/app/features/settings/pages/settings/settings-page.component.ts @@ -17,7 +17,7 @@ export class SettingsPageComponent extends ResourceOwner implements OnInit { public isEditable = false; public editForm = new EditAppSettingsForm(); - public editingSettings: AppSettingsDto; + public editingSettings?: AppSettingsDto; constructor( private readonly appsState: AppsState, @@ -47,7 +47,7 @@ export class SettingsPageComponent extends ResourceOwner implements OnInit { } public save() { - if (!this.isEditable) { + if (!this.isEditable || !this.editingSettings) { return; } diff --git a/frontend/app/features/settings/pages/workflows/workflow-diagram.component.ts b/frontend/app/features/settings/pages/workflows/workflow-diagram.component.ts index 727ad164f..57a7e4964 100644 --- a/frontend/app/features/settings/pages/workflows/workflow-diagram.component.ts +++ b/frontend/app/features/settings/pages/workflows/workflow-diagram.component.ts @@ -19,10 +19,10 @@ export class WorkflowDiagramComponent implements AfterViewInit, OnDestroy, OnCha private network: any; @ViewChild('chartContainer', { static: false }) - public chartContainer: ElementRef; + public chartContainer!: ElementRef; @Input() - public workflow: WorkflowDto; + public workflow!: WorkflowDto; public isLoaded = false; diff --git a/frontend/app/features/settings/pages/workflows/workflow-step.component.ts b/frontend/app/features/settings/pages/workflows/workflow-step.component.ts index 8e98011cf..9a3f8b0aa 100644 --- a/frontend/app/features/settings/pages/workflows/workflow-step.component.ts +++ b/frontend/app/features/settings/pages/workflows/workflow-step.component.ts @@ -38,21 +38,21 @@ export class WorkflowStepComponent implements OnChanges { public remove = new EventEmitter(); @Input() - public workflow: WorkflowDto; + public workflow!: WorkflowDto; @Input() - public step: WorkflowStep; + public step!: WorkflowStep; @Input() - public roles: ReadonlyArray; + public roles!: ReadonlyArray; @Input() public disabled?: boolean | null; - public openSteps: ReadonlyArray; - public openStep: WorkflowStep; + public openSteps!: ReadonlyArray; + public openStep!: WorkflowStep; - public transitions: ReadonlyArray; + public transitions!: ReadonlyArray; public ngOnChanges(changes: SimpleChanges) { if (changes['workflow'] || changes['step']) { diff --git a/frontend/app/features/settings/pages/workflows/workflow-transition.component.ts b/frontend/app/features/settings/pages/workflows/workflow-transition.component.ts index 35ce4d70d..8126240cb 100644 --- a/frontend/app/features/settings/pages/workflows/workflow-transition.component.ts +++ b/frontend/app/features/settings/pages/workflows/workflow-transition.component.ts @@ -23,10 +23,10 @@ export class WorkflowTransitionComponent { public remove = new EventEmitter(); @Input() - public transition: WorkflowTransitionView; + public transition!: WorkflowTransitionView; @Input() - public roles: ReadonlyArray; + public roles!: ReadonlyArray; @Input() public disabled?: boolean | null; diff --git a/frontend/app/features/settings/pages/workflows/workflow.component.ts b/frontend/app/features/settings/pages/workflows/workflow.component.ts index f84cda413..1ccc82ed7 100644 --- a/frontend/app/features/settings/pages/workflows/workflow.component.ts +++ b/frontend/app/features/settings/pages/workflows/workflow.component.ts @@ -17,15 +17,15 @@ export class WorkflowComponent implements OnChanges { public readonly onBlur: { updateOn: 'blur' } = { updateOn: 'blur' }; @Input() - public workflow: WorkflowDto; + public workflow!: WorkflowDto; @Input() - public roles: ReadonlyArray; + public roles!: ReadonlyArray; @Input() - public schemasSource: SchemaTagSource; + public schemasSource!: SchemaTagSource; - public error: ErrorDto | null; + public error?: ErrorDto | null; public isEditing = false; public isEditable = false; diff --git a/frontend/app/framework/angular/avatar.component.ts b/frontend/app/framework/angular/avatar.component.ts index 33fbba706..89d3ae445 100644 --- a/frontend/app/framework/angular/avatar.component.ts +++ b/frontend/app/framework/angular/avatar.component.ts @@ -24,7 +24,7 @@ export class AvatarComponent implements OnChanges { @Input() public size = 50; - public imageSource: string | null; + public imageSource?: string | null; public imageSize = '50px'; public ngOnChanges(changes: SimpleChanges) { diff --git a/frontend/app/framework/angular/forms/confirm-click.directive.ts b/frontend/app/framework/angular/forms/confirm-click.directive.ts index 931fa319b..633c404c3 100644 --- a/frontend/app/framework/angular/forms/confirm-click.directive.ts +++ b/frontend/app/framework/angular/forms/confirm-click.directive.ts @@ -21,7 +21,7 @@ export class ConfirmClickDirective { public confirmText: string | undefined | null; @Input() - public confirmRememberKey: string; + public confirmRememberKey = ''; @Input() public confirmRequired?: boolean | null = true; diff --git a/frontend/app/framework/angular/forms/control-errors-messages.component.html b/frontend/app/framework/angular/forms/control-errors-messages.component.html index 9069f3986..771d5812f 100644 --- a/frontend/app/framework/angular/forms/control-errors-messages.component.html +++ b/frontend/app/framework/angular/forms/control-errors-messages.component.html @@ -1,4 +1,4 @@ -
+
{{message}} diff --git a/frontend/app/framework/angular/forms/control-errors-messages.component.ts b/frontend/app/framework/angular/forms/control-errors-messages.component.ts index aa1956849..400b88294 100644 --- a/frontend/app/framework/angular/forms/control-errors-messages.component.ts +++ b/frontend/app/framework/angular/forms/control-errors-messages.component.ts @@ -19,5 +19,5 @@ import { fadeAnimation } from '@app/framework/internal'; }) export class ControlErrorsMessagesComponent { @Input() - public errorMessages: ReadonlyArray; + public errorMessages?: ReadonlyArray; } diff --git a/frontend/app/framework/angular/forms/control-errors.component.ts b/frontend/app/framework/angular/forms/control-errors.component.ts index ec99dcd00..126128b25 100644 --- a/frontend/app/framework/angular/forms/control-errors.component.ts +++ b/frontend/app/framework/angular/forms/control-errors.component.ts @@ -24,11 +24,11 @@ interface State { changeDetection: ChangeDetectionStrategy.OnPush, }) export class ControlErrorsComponent extends StatefulComponent implements OnChanges, OnDestroy { - private displayFieldName: string; + private controlDisplayName = ''; private control: AbstractControl | null = null; @Input() - public for: string | AbstractControl; + public for!: string | AbstractControl; @Input() public fieldName: string | null | undefined; @@ -50,7 +50,7 @@ export class ControlErrorsComponent extends StatefulComponent implements const previousControl = this.control; if (this.fieldName) { - this.displayFieldName = this.fieldName; + this.controlDisplayName = this.fieldName; } else if (this.for) { if (Types.isString(this.for)) { let translation = this.localizer.get(`common.${this.for}`)!; @@ -59,9 +59,9 @@ export class ControlErrorsComponent extends StatefulComponent implements translation = this.for.substr(0, 1).toUpperCase() + this.for.substr(1); } - this.displayFieldName = translation; + this.controlDisplayName = translation; } else { - this.displayFieldName = this.localizer.get('common.field')!; + this.controlDisplayName = this.localizer.get('common.field')!; } } @@ -99,7 +99,7 @@ export class ControlErrorsComponent extends StatefulComponent implements if (this.control && this.control.invalid && this.isTouched && this.control.errors) { for (const key in this.control.errors) { if (this.control.errors.hasOwnProperty(key)) { - const message = formatError(this.localizer, this.displayFieldName, key, this.control.errors[key], this.control.value); + const message = formatError(this.localizer, this.controlDisplayName, key, this.control.errors[key], this.control.value); if (Types.isString(message)) { errorMessages.push(message); diff --git a/frontend/app/framework/angular/forms/copy.directive.ts b/frontend/app/framework/angular/forms/copy.directive.ts index 63709dafc..b308e7ad1 100644 --- a/frontend/app/framework/angular/forms/copy.directive.ts +++ b/frontend/app/framework/angular/forms/copy.directive.ts @@ -13,7 +13,7 @@ import { DialogService, Types } from '@app/framework/internal'; }) export class CopyDirective { @Input('sqxCopy') - public inputElement: any; + public inputElement!: any; constructor( private readonly dialogs: DialogService, diff --git a/frontend/app/framework/angular/forms/editable-title.component.ts b/frontend/app/framework/angular/forms/editable-title.component.ts index cdcc4050f..e5de9cc7e 100644 --- a/frontend/app/framework/angular/forms/editable-title.component.ts +++ b/frontend/app/framework/angular/forms/editable-title.component.ts @@ -22,10 +22,10 @@ export class EditableTitleComponent { public disabled?: boolean | null; @Input() - public fallback: string; + public fallback = ''; @Input() - public name: string; + public name!: string; @Input() public maxLength = 20; diff --git a/frontend/app/framework/angular/forms/editors/autocomplete.component.ts b/frontend/app/framework/angular/forms/editors/autocomplete.component.ts index d103fdad8..cf77a3a63 100644 --- a/frontend/app/framework/angular/forms/editors/autocomplete.component.ts +++ b/frontend/app/framework/angular/forms/editors/autocomplete.component.ts @@ -49,25 +49,25 @@ export class AutocompleteComponent extends StatefulControlComponent; + public itemTemplate!: TemplateRef; @ViewChild('input', { static: false }) - public inputControl: ElementRef; + public inputControl!: ElementRef; public suggestionsModal = new ModalModel(); diff --git a/frontend/app/framework/angular/forms/editors/checkbox-group.component.ts b/frontend/app/framework/angular/forms/editors/checkbox-group.component.ts index a057d904d..1c9f1e031 100644 --- a/frontend/app/framework/angular/forms/editors/checkbox-group.component.ts +++ b/frontend/app/framework/angular/forms/editors/checkbox-group.component.ts @@ -41,7 +41,7 @@ export class CheckboxGroupComponent extends StatefulControlComponent; + public containerElement!: ElementRef; @Input() public layout: 'Auto' | 'Singletine' | 'Multiline' = 'Auto'; diff --git a/frontend/app/framework/angular/forms/editors/code-editor.component.ts b/frontend/app/framework/angular/forms/editors/code-editor.component.ts index 63e582b9f..77b3c0b2b 100644 --- a/frontend/app/framework/angular/forms/editors/code-editor.component.ts +++ b/frontend/app/framework/angular/forms/editors/code-editor.component.ts @@ -35,7 +35,7 @@ export class CodeEditorComponent extends StatefulControlComponent<{}, string> im private completions: ReadonlyArray<{ name: string; value: string }> = []; @ViewChild('editor', { static: false }) - public editor: ElementRef; + public editor!: ElementRef; @Input() public borderless?: boolean | null; @@ -44,7 +44,7 @@ export class CodeEditorComponent extends StatefulControlComponent<{}, string> im public mode = 'ace/mode/javascript'; @Input() - public valueFile: string; + public valueFile = ''; @Input() public valueMode: 'String' | 'Json' = 'String'; @@ -53,7 +53,7 @@ export class CodeEditorComponent extends StatefulControlComponent<{}, string> im public maxLines: number | undefined; @Input() - public wordWrap: boolean; + public wordWrap = false; @Input() public height: number | 'auto' | 'full' = 'full'; diff --git a/frontend/app/framework/angular/forms/editors/date-time-editor.component.ts b/frontend/app/framework/angular/forms/editors/date-time-editor.component.ts index e5c45c0f3..5eb9b2db8 100644 --- a/frontend/app/framework/angular/forms/editors/date-time-editor.component.ts +++ b/frontend/app/framework/angular/forms/editors/date-time-editor.component.ts @@ -37,14 +37,14 @@ export class DateTimeEditorComponent extends StatefulControlComponent; + public dateInput!: ElementRef; public timeControl = new FormControl(); public dateControl = new FormControl(); diff --git a/frontend/app/framework/angular/forms/editors/dropdown.component.ts b/frontend/app/framework/angular/forms/editors/dropdown.component.ts index a19196dd4..1e3a02ad0 100644 --- a/frontend/app/framework/angular/forms/editors/dropdown.component.ts +++ b/frontend/app/framework/angular/forms/editors/dropdown.component.ts @@ -67,12 +67,12 @@ export class DropdownComponent extends StatefulControlComponent; + public templates!: QueryList; public dropdown = new ModalModel(); - public templateSelection: TemplateRef; - public templateItem: TemplateRef; + public templateSelection!: TemplateRef; + public templateItem!: TemplateRef; public queryInput = new FormControl(); diff --git a/frontend/app/framework/angular/forms/editors/localized-input.component.ts b/frontend/app/framework/angular/forms/editors/localized-input.component.ts index 23b3947cc..8ca8d348b 100644 --- a/frontend/app/framework/angular/forms/editors/localized-input.component.ts +++ b/frontend/app/framework/angular/forms/editors/localized-input.component.ts @@ -22,7 +22,7 @@ interface State { } @Component({ - selector: 'sqx-localized-input', + selector: 'sqx-localized-input[languages]', styleUrls: ['./localized-input.component.scss'], templateUrl: './localized-input.component.html', providers: [ @@ -34,16 +34,16 @@ export class LocalizedInputComponent extends StatefulControlComponent; + public languages!: ReadonlyArray; @Input() public type: 'text' | 'boolean' | 'datetime' | 'date' | 'tags' | 'number' = 'text'; @Input() - public name: string; + public name = ''; @Input() - public id: string; + public id = ''; @Input() public set disabled(value: boolean | undefined | null) { diff --git a/frontend/app/framework/angular/forms/editors/tag-editor.component.ts b/frontend/app/framework/angular/forms/editors/tag-editor.component.ts index 3e13cda9f..d916baa5b 100644 --- a/frontend/app/framework/angular/forms/editors/tag-editor.component.ts +++ b/frontend/app/framework/angular/forms/editors/tag-editor.component.ts @@ -41,13 +41,13 @@ interface State { }) export class TagEditorComponent extends StatefulControlComponent> implements AfterViewInit, OnChanges, OnInit { private latestValue: any; - private latestInput: string; + private latestInput?: string; @ViewChild('form', { static: false }) - public formElement: ElementRef; + public formElement!: ElementRef; @ViewChild('input', { static: false }) - public inputElement: ElementRef; + public inputElement!: ElementRef; @Output() public open = new EventEmitter(); diff --git a/frontend/app/framework/angular/forms/file-drop.directive.ts b/frontend/app/framework/angular/forms/file-drop.directive.ts index c402f5257..4069f36c4 100644 --- a/frontend/app/framework/angular/forms/file-drop.directive.ts +++ b/frontend/app/framework/angular/forms/file-drop.directive.ts @@ -15,13 +15,13 @@ export class FileDropDirective { private dragCounter = 0; @Input() - public allowedFiles: ReadonlyArray; + public allowedFiles?: ReadonlyArray; @Input('sqxDropOnlyImages') - public onlyImages: boolean; + public onlyImages!: boolean; @Input('sqxDropNoPaste') - public noPaste: boolean; + public noPaste!: boolean; @Input('sqxDropDisabled') public disabled = false; diff --git a/frontend/app/framework/angular/forms/focus-on-init.directive.ts b/frontend/app/framework/angular/forms/focus-on-init.directive.ts index 34e614691..6a9846085 100644 --- a/frontend/app/framework/angular/forms/focus-on-init.directive.ts +++ b/frontend/app/framework/angular/forms/focus-on-init.directive.ts @@ -13,7 +13,7 @@ import { Types } from '@app/framework/internal'; }) export class FocusOnInitDirective implements AfterViewInit { @Input() - public select: boolean; + public select = false; @Input('sqxFocusOnInit') public enabled?: string | boolean | null = true; diff --git a/frontend/app/framework/angular/forms/form-alert.component.ts b/frontend/app/framework/angular/forms/form-alert.component.ts index 0ad39c8c1..fd0ebae3d 100644 --- a/frontend/app/framework/angular/forms/form-alert.component.ts +++ b/frontend/app/framework/angular/forms/form-alert.component.ts @@ -15,7 +15,7 @@ import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; }) export class FormAlertComponent { @Input() - public class: string; + public class = ''; @Input() public marginTop: number | string | undefined | null = 2; diff --git a/frontend/app/framework/angular/forms/form-error.component.ts b/frontend/app/framework/angular/forms/form-error.component.ts index 8a8d83dde..876e0c947 100644 --- a/frontend/app/framework/angular/forms/form-error.component.ts +++ b/frontend/app/framework/angular/forms/form-error.component.ts @@ -24,7 +24,7 @@ export class FormErrorComponent implements OnChanges { @Input() public closeable?: boolean | null; - public show: boolean; + public show = false; public ngOnChanges(changes: SimpleChanges) { if (changes['error']) { diff --git a/frontend/app/framework/angular/forms/form-hint.component.ts b/frontend/app/framework/angular/forms/form-hint.component.ts index 3f5f47712..070a680cc 100644 --- a/frontend/app/framework/angular/forms/form-hint.component.ts +++ b/frontend/app/framework/angular/forms/form-hint.component.ts @@ -15,7 +15,7 @@ import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; }) export class FormHintComponent { @Input() - public class: string; + public class = ''; @Input() public marginTop: number | string = 0; diff --git a/frontend/app/framework/angular/forms/forms-helper.ts b/frontend/app/framework/angular/forms/forms-helper.ts index 7179249c5..1e28f280b 100644 --- a/frontend/app/framework/angular/forms/forms-helper.ts +++ b/frontend/app/framework/angular/forms/forms-helper.ts @@ -137,13 +137,13 @@ export function touchedChange$(form: AbstractControl) { const previousMarkedAsUntouched = form.markAsUntouched; form['markAsTouched'] = function markAsTouched(...args: any[]) { - previousMarkedAsTouched.apply(this, args); + previousMarkedAsTouched.apply(this, args as any); updateTouched(form.touched); }; form['markAsUntouched'] = function markAsTouched(...args: any[]) { - previousMarkedAsUntouched.apply(this, args); + previousMarkedAsUntouched.apply(this, args as any); updateTouched(form.touched); }; diff --git a/frontend/app/framework/angular/forms/indeterminate-value.directive.ts b/frontend/app/framework/angular/forms/indeterminate-value.directive.ts index 2e99acd1f..39b910454 100644 --- a/frontend/app/framework/angular/forms/indeterminate-value.directive.ts +++ b/frontend/app/framework/angular/forms/indeterminate-value.directive.ts @@ -22,7 +22,7 @@ export const SQX_INDETERMINATE_VALUE_CONTROL_VALUE_ACCESSOR: any = { export class IndeterminateValueDirective implements ControlValueAccessor { private callChange = (_: any) => { /* NOOP */ }; private callTouched = () => { /* NOOP */ }; - private isChecked: boolean | null; + private isChecked?: boolean | null; @Input() public threeStates = true; diff --git a/frontend/app/framework/angular/forms/transform-input.directive.ts b/frontend/app/framework/angular/forms/transform-input.directive.ts index 2e7934df5..16b7b3bdb 100644 --- a/frontend/app/framework/angular/forms/transform-input.directive.ts +++ b/frontend/app/framework/angular/forms/transform-input.directive.ts @@ -31,7 +31,7 @@ export const SQX_TRANSFORM_INPUT_VALUE_ACCESSOR: any = { export class TransformInputDirective implements ControlValueAccessor { private callChange = (_: any) => { /* NOOP */ }; private callTouched = () => { /* NOOP */ }; - private transformer: Transform; + private transformer = TransformNoop; @Input('sqxTransformInput') public set transform(value: Transform | string) { diff --git a/frontend/app/framework/angular/hover-background.directive.ts b/frontend/app/framework/angular/hover-background.directive.ts index c2f105ce1..f4678f942 100644 --- a/frontend/app/framework/angular/hover-background.directive.ts +++ b/frontend/app/framework/angular/hover-background.directive.ts @@ -11,10 +11,10 @@ import { Directive, ElementRef, HostListener, Input, Renderer2 } from '@angular/ selector: '[sqxHoverBackground]', }) export class HoverBackgroundDirective { - private previousBackground: string | null; + private previousBackground?: string | null; @Input('sqxHoverBackground') - public background: string; + public background!: string; constructor( private readonly element: ElementRef, diff --git a/frontend/app/framework/angular/image-source.directive.ts b/frontend/app/framework/angular/image-source.directive.ts index d200e09e4..11d14ded5 100644 --- a/frontend/app/framework/angular/image-source.directive.ts +++ b/frontend/app/framework/angular/image-source.directive.ts @@ -20,13 +20,13 @@ export class ImageSourceDirective extends ResourceOwner implements OnChanges, On private loadQuery: string | null = null; @Input('sqxImageSource') - public imageSource: string; + public imageSource!: string; @Input() public retryCount = 0; @Input() - public layoutKey: string; + public layoutKey = ''; @Input() public parent: any = null; diff --git a/frontend/app/framework/angular/language-selector.component.ts b/frontend/app/framework/angular/language-selector.component.ts index 777a61cde..7c9ec9a02 100644 --- a/frontend/app/framework/angular/language-selector.component.ts +++ b/frontend/app/framework/angular/language-selector.component.ts @@ -21,7 +21,7 @@ export class LanguageSelectorComponent implements OnChanges, OnInit { public languageChange = new EventEmitter(); @Input() - public language: Language; + public language!: Language; @Input() public languages: ReadonlyArray = []; diff --git a/frontend/app/framework/angular/layout.component.ts b/frontend/app/framework/angular/layout.component.ts index 1402b7146..75fc0fcb6 100644 --- a/frontend/app/framework/angular/layout.component.ts +++ b/frontend/app/framework/angular/layout.component.ts @@ -19,7 +19,7 @@ import { LayoutContainerDirective } from './layout-container.directive'; changeDetection: ChangeDetectionStrategy.OnPush, }) export class LayoutComponent implements OnInit, OnDestroy, AfterViewInit { - private widthPrevious: string; + private widthPrevious?: string; private widthToRender = 0; private isViewInitField = false; @@ -27,13 +27,13 @@ export class LayoutComponent implements OnInit, OnDestroy, AfterViewInit { public closeQueryParamsHandling: QueryParamsHandling = 'preserve'; @Input() - public titleText: string; + public titleText = ''; @Input() - public titleIcon: string; + public titleIcon = ''; @Input() - public titleCollapsed: string; + public titleCollapsed = ''; @Input() public layout: 'simple' | 'left' | 'main' = 'simple'; @@ -63,10 +63,10 @@ export class LayoutComponent implements OnInit, OnDestroy, AfterViewInit { public padding = false; @Input() - public customHeader: boolean; + public customHeader = false; @ViewChild('panel', { static: false }) - public panel: ElementRef; + public panel!: ElementRef; public get desiredWidth() { return this.isCollapsed ? 3 : this.width; diff --git a/frontend/app/framework/angular/list-view.component.ts b/frontend/app/framework/angular/list-view.component.ts index 4a7f95fbd..02c88f9a4 100644 --- a/frontend/app/framework/angular/list-view.component.ts +++ b/frontend/app/framework/angular/list-view.component.ts @@ -23,13 +23,13 @@ export class ListViewComponent extends StatefulComponent implements After private timer: any; @ViewChild('headerElement', { static: false }) - public headerElement: ElementRef; + public headerElement!: ElementRef; @ViewChild('footerElement', { static: false }) - public footerElement: ElementRef; + public footerElement!: ElementRef; @ViewChild('contentElement', { static: false }) - public contentElement: ElementRef; + public contentElement!: ElementRef; @Input() @HostBinding('class.overflow') public overflow?: boolean | null; diff --git a/frontend/app/framework/angular/markdown.directive.ts b/frontend/app/framework/angular/markdown.directive.ts index 123a9368f..ee8303c52 100644 --- a/frontend/app/framework/angular/markdown.directive.ts +++ b/frontend/app/framework/angular/markdown.directive.ts @@ -30,7 +30,7 @@ RENDERER_INLINE.link = RENDERER_DEFAULT.link; }) export class MarkdownDirective implements OnChanges { @Input('sqxMarkdown') - public markdown: string; + public markdown!: string; @Input() public inline = true; diff --git a/frontend/app/framework/angular/modals/modal-dialog.component.ts b/frontend/app/framework/angular/modals/modal-dialog.component.ts index 7bfc0010c..d4102cfbb 100644 --- a/frontend/app/framework/angular/modals/modal-dialog.component.ts +++ b/frontend/app/framework/angular/modals/modal-dialog.component.ts @@ -43,10 +43,10 @@ export class ModalDialogComponent implements AfterViewInit { public fullHeight?: boolean | null; @ViewChild('tabsElement', { static: false }) - public tabsElement: ElementRef; + public tabsElement!: ElementRef; @ViewChild('footerElement', { static: false }) - public footerElement: ElementRef; + public footerElement!: ElementRef; constructor( private readonly renderer: Renderer2, diff --git a/frontend/app/framework/angular/modals/modal-placement.directive.ts b/frontend/app/framework/angular/modals/modal-placement.directive.ts index 4fd068dea..ea64f59f1 100644 --- a/frontend/app/framework/angular/modals/modal-placement.directive.ts +++ b/frontend/app/framework/angular/modals/modal-placement.directive.ts @@ -13,7 +13,7 @@ import { timer } from 'rxjs'; selector: '[sqxAnchoredTo]', }) export class ModalPlacementDirective extends ResourceOwner implements AfterViewInit, OnDestroy { - private targetElement: Element; + private targetElement?: Element; @Input('sqxAnchoredTo') public set target(element: Element) { diff --git a/frontend/app/framework/angular/modals/modal.directive.ts b/frontend/app/framework/angular/modals/modal.directive.ts index 7e118bd5d..da8a47f29 100644 --- a/frontend/app/framework/angular/modals/modal.directive.ts +++ b/frontend/app/framework/angular/modals/modal.directive.ts @@ -20,8 +20,8 @@ export class ModalDirective implements OnDestroy { private static backdrop: any; private currentModel: DialogModel | ModalModel | null = null; private renderedView: EmbeddedViewRef | null = null; - private renderRoots: ReadonlyArray | null; - private isOpen: boolean; + private renderRoots: ReadonlyArray | null = null; + private isOpen = false; @Input('sqxModal') public set model(value: Model) { diff --git a/frontend/app/framework/angular/modals/onboarding-tooltip.component.ts b/frontend/app/framework/angular/modals/onboarding-tooltip.component.ts index a90a8c84b..c90658c77 100644 --- a/frontend/app/framework/angular/modals/onboarding-tooltip.component.ts +++ b/frontend/app/framework/angular/modals/onboarding-tooltip.component.ts @@ -23,7 +23,7 @@ export class OnboardingTooltipComponent extends StatefulComponent implements OnD public for: any; @Input() - public helpId: string; + public helpId = ''; @Input() public after = 1000; diff --git a/frontend/app/framework/angular/modals/root-view.component.ts b/frontend/app/framework/angular/modals/root-view.component.ts index 4d05ceb92..f3e573628 100644 --- a/frontend/app/framework/angular/modals/root-view.component.ts +++ b/frontend/app/framework/angular/modals/root-view.component.ts @@ -15,5 +15,5 @@ import { ChangeDetectionStrategy, Component, ViewChild, ViewContainerRef } from }) export class RootViewComponent { @ViewChild('element', { read: ViewContainerRef, static: false }) - public viewContainer: ViewContainerRef; + public viewContainer!: ViewContainerRef; } diff --git a/frontend/app/framework/angular/popup-link.directive.ts b/frontend/app/framework/angular/popup-link.directive.ts index 8a6a6a3ab..add6e0602 100644 --- a/frontend/app/framework/angular/popup-link.directive.ts +++ b/frontend/app/framework/angular/popup-link.directive.ts @@ -12,7 +12,7 @@ import { Directive, HostListener, Input } from '@angular/core'; }) export class PopupLinkDirective { @Input('sqxPopupLink') - public url: string; + public url!: string; @HostListener('click') public onClick(): boolean { diff --git a/frontend/app/framework/angular/routers/parent-link.directive.ts b/frontend/app/framework/angular/routers/parent-link.directive.ts index f636da921..a871661aa 100644 --- a/frontend/app/framework/angular/routers/parent-link.directive.ts +++ b/frontend/app/framework/angular/routers/parent-link.directive.ts @@ -13,13 +13,13 @@ import { ResourceOwner } from '@app/framework/internal'; selector: '[sqxParentLink]', }) export class ParentLinkDirective extends ResourceOwner implements OnInit { - private url: string; + private url?: string; @Input() public isLazyLoaded?: boolean | null; @Input() - public queryParamsHandling: QueryParamsHandling; + public queryParamsHandling?: QueryParamsHandling; constructor( private readonly router: Router, @@ -48,7 +48,9 @@ export class ParentLinkDirective extends ResourceOwner implements OnInit { @HostListener('click') public onClick(): boolean { - this.router.navigateByUrl(this.url); + if (this.url) { + this.router.navigateByUrl(this.url); + } return false; } diff --git a/frontend/app/framework/angular/routers/router-2-state.ts b/frontend/app/framework/angular/routers/router-2-state.ts index f916dd82f..ba137ecf9 100644 --- a/frontend/app/framework/angular/routers/router-2-state.ts +++ b/frontend/app/framework/angular/routers/router-2-state.ts @@ -163,7 +163,7 @@ export interface StateSynchronizerMap { @Injectable() export class Router2State implements OnDestroy, StateSynchronizer { - private mapper: Router2StateMap; + private mapper?: Router2StateMap; constructor( private readonly route: ActivatedRoute, @@ -198,8 +198,8 @@ export class Router2State implements OnDestroy, StateSynchronizer { export class Router2StateMap implements StateSynchronizerMap { private readonly syncs: RouteSynchronizer[] = []; - private lastSyncedQuery: QueryParams; - private stateSubscription: Subscription; + private lastSyncedQuery?: QueryParams; + private stateSubscription?: Subscription; constructor( private readonly state: State, diff --git a/frontend/app/framework/angular/scroll-active.directive.ts b/frontend/app/framework/angular/scroll-active.directive.ts index 0c1bedc28..09c718dde 100644 --- a/frontend/app/framework/angular/scroll-active.directive.ts +++ b/frontend/app/framework/angular/scroll-active.directive.ts @@ -15,7 +15,7 @@ export class ScrollActiveDirective implements AfterViewInit, OnChanges { public isActive = false; @Input('sqxScrollContainer') - public container: HTMLElement; + public container!: HTMLElement; constructor( private readonly element: ElementRef, diff --git a/frontend/app/framework/angular/shortcut.component.ts b/frontend/app/framework/angular/shortcut.component.ts index 84c066651..91d47fd9f 100644 --- a/frontend/app/framework/angular/shortcut.component.ts +++ b/frontend/app/framework/angular/shortcut.component.ts @@ -19,7 +19,7 @@ export class ShortcutComponent implements OnDestroy, OnInit { public trigger = new EventEmitter(); @Input() - public keys: string; + public keys = ''; @Input() public disabled?: boolean | null; diff --git a/frontend/app/framework/angular/shortcut.directive.ts b/frontend/app/framework/angular/shortcut.directive.ts index 6e824c78c..2dadf9f67 100644 --- a/frontend/app/framework/angular/shortcut.directive.ts +++ b/frontend/app/framework/angular/shortcut.directive.ts @@ -12,10 +12,10 @@ import { ShortcutService } from '@app/framework/internal'; selector: '[shortcut]', }) export class ShortcutDirective implements OnDestroy, OnInit { - private subscription: Function; + private subscription?: Function; @Input() - public shortcut: string; + public shortcut!: string; @Input() public shortcutAction: 'focus' | 'click' | 'none' = 'click'; diff --git a/frontend/app/framework/angular/status-icon.component.ts b/frontend/app/framework/angular/status-icon.component.ts index e80db2aa9..51a7f949e 100644 --- a/frontend/app/framework/angular/status-icon.component.ts +++ b/frontend/app/framework/angular/status-icon.component.ts @@ -15,7 +15,7 @@ import { ChangeDetectionStrategy, Component, Input } from '@angular/core'; }) export class StatusIconComponent { @Input() - public status: 'Started' | 'Failed' | 'Success' | 'Completed' | 'Pending'; + public status?: 'Started' | 'Failed' | 'Success' | 'Completed' | 'Pending'; @Input() public statusText: string | undefined | null; diff --git a/frontend/app/framework/angular/sync-scrolling.directive.ts b/frontend/app/framework/angular/sync-scrolling.directive.ts index 284d69985..c39c72ee2 100644 --- a/frontend/app/framework/angular/sync-scrolling.directive.ts +++ b/frontend/app/framework/angular/sync-scrolling.directive.ts @@ -12,7 +12,7 @@ import { Directive, HostListener, Input, Renderer2 } from '@angular/core'; }) export class SyncScollingDirective { @Input('sqxSyncScrolling') - public target: HTMLElement; + public target!: HTMLElement; constructor( private readonly renderer: Renderer2, diff --git a/frontend/app/framework/angular/sync-width.directive.ts b/frontend/app/framework/angular/sync-width.directive.ts index 01f4cc175..b47dd5b0e 100644 --- a/frontend/app/framework/angular/sync-width.directive.ts +++ b/frontend/app/framework/angular/sync-width.directive.ts @@ -13,7 +13,7 @@ import { ResizeListener, ResizeService, ResourceOwner } from '@app/framework/int }) export class SyncWidthDirective extends ResourceOwner implements AfterViewInit, ResizeListener { @Input('sqxSyncWidth') - public target: HTMLElement; + public target!: HTMLElement; constructor( private readonly element: ElementRef, diff --git a/frontend/app/framework/angular/tab-router-link.directive.ts b/frontend/app/framework/angular/tab-router-link.directive.ts index e8fba074b..cbd830ea6 100644 --- a/frontend/app/framework/angular/tab-router-link.directive.ts +++ b/frontend/app/framework/angular/tab-router-link.directive.ts @@ -13,7 +13,7 @@ import { ActivatedRoute, Router } from '@angular/router'; }) export class TabRouterlinkDirective { @Input('sqxTabRouterLink') - public commands: any[]; + public commands!: any[]; constructor( private readonly router: Router, diff --git a/frontend/app/framework/angular/template-wrapper.directive.ts b/frontend/app/framework/angular/template-wrapper.directive.ts index 1cbfddd38..bb4aa11e3 100644 --- a/frontend/app/framework/angular/template-wrapper.directive.ts +++ b/frontend/app/framework/angular/template-wrapper.directive.ts @@ -15,15 +15,15 @@ export class TemplateWrapperDirective implements OnDestroy, OnInit, OnChanges { public item: any; @Input() - public index: number; + public index = 0; @Input() public context: any; @Input('sqxTemplateWrapper') - public templateRef: TemplateRef; + public templateRef!: TemplateRef; - public view: EmbeddedViewRef; + public view?: EmbeddedViewRef; public constructor( private readonly viewContainer: ViewContainerRef, diff --git a/frontend/app/framework/angular/title.component.ts b/frontend/app/framework/angular/title.component.ts index 955922331..1fb70ec5b 100644 --- a/frontend/app/framework/angular/title.component.ts +++ b/frontend/app/framework/angular/title.component.ts @@ -23,7 +23,7 @@ export class TitleComponent implements OnDestroy, OnChanges { public url: any[] = ['./']; @Input() - public message: string; + public message!: string; constructor( private readonly route: ActivatedRoute, diff --git a/frontend/app/framework/angular/video-player.component.ts b/frontend/app/framework/angular/video-player.component.ts index 61f85087e..112a68785 100644 --- a/frontend/app/framework/angular/video-player.component.ts +++ b/frontend/app/framework/angular/video-player.component.ts @@ -20,13 +20,13 @@ export class VideoPlayerComponent implements AfterViewInit, OnDestroy, OnChanges private player: any; @Input() - public source: string; + public source = ''; @Input() - public mimeType: string; + public mimeType = ''; @ViewChild('video', { static: false }) - public video: ElementRef; + public video!: ElementRef; constructor( private readonly resourceLoader: ResourceLoaderService, diff --git a/frontend/app/framework/services/analytics.service.ts b/frontend/app/framework/services/analytics.service.ts index bb50d7470..46388c1f6 100644 --- a/frontend/app/framework/services/analytics.service.ts +++ b/frontend/app/framework/services/analytics.service.ts @@ -15,7 +15,7 @@ import { ResourceLoaderService } from './resource-loader.service'; @Injectable() export class AnalyticsService { private readonly gtag: any; - private readonly analyticsId: string; + private readonly analyticsId?: string; constructor( private readonly uiOptions?: UIOptions, diff --git a/frontend/app/framework/services/dialog.service.ts b/frontend/app/framework/services/dialog.service.ts index d0793a607..626cf7162 100644 --- a/frontend/app/framework/services/dialog.service.ts +++ b/frontend/app/framework/services/dialog.service.ts @@ -27,7 +27,7 @@ export class DialogRequest { return !!this.rememberKey; } - public remember: boolean; + public remember = false; constructor( public readonly title: string, diff --git a/frontend/app/framework/services/resize.service.ts b/frontend/app/framework/services/resize.service.ts index df623d75d..a1f4d5fa4 100644 --- a/frontend/app/framework/services/resize.service.ts +++ b/frontend/app/framework/services/resize.service.ts @@ -15,7 +15,7 @@ export interface ResizeListener { @Injectable() export class ResizeService implements OnDestroy { private readonly listeners = new WeakMap(); - private observer: ResizeObserver; + private observer?: ResizeObserver; public ngOnDestroy() { if (this.observer) { @@ -48,6 +48,6 @@ export class ResizeService implements OnDestroy { } public unlisten(target: Element) { - this.observer.unobserve(target); + this.observer?.unobserve(target); } } diff --git a/frontend/app/shared/components/assets/asset-dialog.component.ts b/frontend/app/shared/components/assets/asset-dialog.component.ts index 2a3707009..6a0e4780c 100644 --- a/frontend/app/shared/components/assets/asset-dialog.component.ts +++ b/frontend/app/shared/components/assets/asset-dialog.component.ts @@ -16,7 +16,7 @@ import { ImageCropperComponent } from './image-cropper.component'; import { ImageFocusPointComponent } from './image-focus-point.component'; @Component({ - selector: 'sqx-asset-dialog', + selector: 'sqx-asset-dialog[allTags][asset]', styleUrls: ['./asset-dialog.component.scss'], templateUrl: './asset-dialog.component.html', }) @@ -28,21 +28,21 @@ export class AssetDialogComponent implements OnChanges { public changed = new EventEmitter(); @Input() - public asset: AssetDto; + public asset!: AssetDto; @Input() - public allTags: ReadonlyArray; + public allTags!: ReadonlyArray; @ViewChildren(ImageCropperComponent) - public imageCropper: QueryList; + public imageCropper!: QueryList; @ViewChildren(ImageFocusPointComponent) - public imageFocus: QueryList; + public imageFocus!: QueryList; @ViewChildren(AssetTextEditorComponent) - public textEditor: QueryList; + public textEditor!: QueryList; - public path: Observable>; + public path!: Observable>; public isEditable = false; public isEditableAny = false; diff --git a/frontend/app/shared/components/assets/asset-folder-dialog.component.ts b/frontend/app/shared/components/assets/asset-folder-dialog.component.ts index 93aa0637b..097bf16f9 100644 --- a/frontend/app/shared/components/assets/asset-folder-dialog.component.ts +++ b/frontend/app/shared/components/assets/asset-folder-dialog.component.ts @@ -18,7 +18,7 @@ export class AssetFolderDialogComponent implements OnInit { public complete = new EventEmitter(); @Input() - public assetFolder: AssetFolderDto; + public assetFolder?: AssetFolderDto; public editForm = new RenameAssetFolderForm(); diff --git a/frontend/app/shared/components/assets/asset-folder-dropdown-item.component.ts b/frontend/app/shared/components/assets/asset-folder-dropdown-item.component.ts index 487060b92..bd8406564 100644 --- a/frontend/app/shared/components/assets/asset-folder-dropdown-item.component.ts +++ b/frontend/app/shared/components/assets/asset-folder-dropdown-item.component.ts @@ -16,10 +16,10 @@ import { AssetFolderDropdowNode } from './asset-folder-dropdown.state'; }) export class AssetFolderDropdownItemComponent { @Input() - public appName: string; + public appName!: string; @Input() - public node: AssetFolderDropdowNode; + public node!: AssetFolderDropdowNode; @Input() public nodeLevel = 0; diff --git a/frontend/app/shared/components/assets/asset-folder-dropdown.component.ts b/frontend/app/shared/components/assets/asset-folder-dropdown.component.ts index 3d46f752b..61994cd63 100644 --- a/frontend/app/shared/components/assets/asset-folder-dropdown.component.ts +++ b/frontend/app/shared/components/assets/asset-folder-dropdown.component.ts @@ -36,7 +36,7 @@ export class AssetFolderDropdownComponent extends StatefulControlComponent(); @Input() - public assetPathItem: AssetPathItem; + public assetPathItem!: AssetPathItem; public dropdown = new ModalModel(); diff --git a/frontend/app/shared/components/assets/asset-history.component.ts b/frontend/app/shared/components/assets/asset-history.component.ts index 8f408ed64..6cb659215 100644 --- a/frontend/app/shared/components/assets/asset-history.component.ts +++ b/frontend/app/shared/components/assets/asset-history.component.ts @@ -13,15 +13,15 @@ import { map } from 'rxjs/operators'; interface AssetEvent { event: HistoryEventDto; version: number; canDownload: boolean } @Component({ - selector: 'sqx-asset-history', + selector: 'sqx-asset-history[asset]', styleUrls: ['./asset-history.component.scss'], templateUrl: './asset-history.component.html', }) export class AssetHistoryComponent implements OnChanges { @Input() - public asset: AssetDto; + public asset!: AssetDto; - public assetEvents: Observable>; + public assetEvents!: Observable>; constructor( private readonly appsState: AppsState, diff --git a/frontend/app/shared/components/assets/asset-text-editor.component.ts b/frontend/app/shared/components/assets/asset-text-editor.component.ts index 64772a631..84d16b8d4 100644 --- a/frontend/app/shared/components/assets/asset-text-editor.component.ts +++ b/frontend/app/shared/components/assets/asset-text-editor.component.ts @@ -16,13 +16,13 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnInit } }) export class AssetTextEditorComponent implements OnInit { @Input() - public fileSource: string; + public fileSource = ''; @Input() - public fileName: string; + public fileName = ''; @Input() - public mimeType: string; + public mimeType = ''; public text = ''; diff --git a/frontend/app/shared/components/assets/asset.component.ts b/frontend/app/shared/components/assets/asset.component.ts index 7cdbbf8b3..e0f8d9090 100644 --- a/frontend/app/shared/components/assets/asset.component.ts +++ b/frontend/app/shared/components/assets/asset.component.ts @@ -39,13 +39,13 @@ export class AssetComponent extends StatefulComponent implements OnInit { public selectFolder = new EventEmitter(); @Input() - public assetFile: File; + public assetFile?: File; @Input() - public asset: AssetDto; + public asset?: AssetDto; @Input() - public assetsState: AssetsState; + public assetsState!: AssetsState; @Input() public folderId?: string; @@ -69,7 +69,7 @@ export class AssetComponent extends StatefulComponent implements OnInit { public isListView?: boolean | null; @Input() - public allTags: ReadonlyArray; + public allTags!: ReadonlyArray; public editDialog = new DialogModel(); @@ -109,13 +109,15 @@ export class AssetComponent extends StatefulComponent implements OnInit { } public updateFile(files: ReadonlyArray) { - if (files.length === 1 && this.asset.canUpload) { + const asset = this.asset; + + if (files.length === 1 && asset?.canUpload) { this.dialogs.confirm('i18n:assets.replaceConfirmTitle', 'i18n:assets.replaceConfirmText') .subscribe(confirmed => { if (confirmed) { this.setProgress(1); - this.assetUploader.uploadAsset(this.asset, files[0]) + this.assetUploader.uploadAsset(asset, files[0]) .subscribe({ next: asset => { if (Types.isNumber(asset)) { diff --git a/frontend/app/shared/components/assets/assets-list.component.ts b/frontend/app/shared/components/assets/assets-list.component.ts index 9aef384b4..9a6158966 100644 --- a/frontend/app/shared/components/assets/assets-list.component.ts +++ b/frontend/app/shared/components/assets/assets-list.component.ts @@ -15,7 +15,7 @@ interface State { } @Component({ - selector: 'sqx-assets-list', + selector: 'sqx-assets-list[assetsState]', styleUrls: ['./assets-list.component.scss'], templateUrl: './assets-list.component.html', changeDetection: ChangeDetectionStrategy.OnPush, @@ -25,7 +25,7 @@ export class AssetsListComponent extends StatefulComponent { public select = new EventEmitter(); @Input() - public assetsState: AssetsState; + public assetsState!: AssetsState; @Input() public isDisabled?: boolean | null; @@ -37,7 +37,7 @@ export class AssetsListComponent extends StatefulComponent { public indicateLoading?: boolean | null; @Input() - public selectedIds: {}; + public selectedIds?: {}; @Input() public showPager?: boolean | null = true; diff --git a/frontend/app/shared/components/assets/image-cropper.component.ts b/frontend/app/shared/components/assets/image-cropper.component.ts index 96ecd00a7..c85e5f9f8 100644 --- a/frontend/app/shared/components/assets/image-cropper.component.ts +++ b/frontend/app/shared/components/assets/image-cropper.component.ts @@ -17,13 +17,13 @@ import Cropper from 'cropperjs'; }) export class ImageCropperComponent implements AfterViewInit, OnDestroy, OnChanges { private cropper: Cropper | null = null; - private data: Cropper.Data; + private data?: Cropper.Data; @Input() - public imageSource: string; + public imageSource = ''; @ViewChild('editor', { static: false }) - public editor: ElementRef; + public editor!: ElementRef; public ngOnDestroy() { if (this.cropper) { diff --git a/frontend/app/shared/components/assets/image-focus-point.component.ts b/frontend/app/shared/components/assets/image-focus-point.component.ts index 387c6af86..526d9cea0 100644 --- a/frontend/app/shared/components/assets/image-focus-point.component.ts +++ b/frontend/app/shared/components/assets/image-focus-point.component.ts @@ -23,22 +23,22 @@ export class ImageFocusPointComponent implements AfterViewInit, OnDestroy, OnCha private y = 0; @Input() - public imageSource: string; + public imageSource = ''; @Input() public focusPoint: any; @ViewChild('image', { static: false }) - public image: ElementRef; + public image!: ElementRef; @ViewChild('previewWide', { static: false }) - public previewWide: ElementRef; + public previewWide!: ElementRef; @ViewChild('previewSmall', { static: false }) - public previewSmall: ElementRef; + public previewSmall!: ElementRef; @ViewChild('previewNormal', { static: false }) - public previewNormal: ElementRef; + public previewNormal!: ElementRef; public ngOnDestroy() { if (this.focusPicker) { diff --git a/frontend/app/shared/components/comments/comment.component.ts b/frontend/app/shared/components/comments/comment.component.ts index 29895e20b..c2752dd11 100644 --- a/frontend/app/shared/components/comments/comment.component.ts +++ b/frontend/app/shared/components/comments/comment.component.ts @@ -14,7 +14,7 @@ interface State { } @Component({ - selector: 'sqx-comment', + selector: 'sqx-comment[comment][commentsState]', styleUrls: ['./comment.component.scss'], templateUrl: './comment.component.html', changeDetection: ChangeDetectionStrategy.OnPush, @@ -30,26 +30,26 @@ export class CommentComponent extends StatefulComponent implements OnChan public canEdit?: boolean | null; @Input() - public commentsState: CommentsState; + public commentsState!: CommentsState; @Input() public confirmDelete?: boolean | null = true; @Input() - public comment: CommentDto; + public comment!: CommentDto; @Input() - public userToken: string; + public userToken = ''; @Input() - public mentionUsers: ReadonlyArray; + public mentionUsers?: ReadonlyArray; public mentionConfig: MentionConfig = { dropUp: true, labelKey: 'contributorEmail' }; public isDeletable = false; public isEditable = false; - public editingText: string; + public editingText = ''; constructor(changeDetector: ChangeDetectorRef, private readonly dialogs: DialogService, diff --git a/frontend/app/shared/components/comments/comments.component.ts b/frontend/app/shared/components/comments/comments.component.ts index c381b0bff..d6e490ea9 100644 --- a/frontend/app/shared/components/comments/comments.component.ts +++ b/frontend/app/shared/components/comments/comments.component.ts @@ -20,22 +20,22 @@ import { CommentComponent } from './comment.component'; }) export class CommentsComponent extends ResourceOwner implements OnChanges { @ViewChild('commentsList', { static: false }) - public commentsList: ElementRef; + public commentsList!: ElementRef; @ViewChildren(CommentComponent) - public children: QueryList; + public children!: QueryList; @Input() - public commentsId: string; + public commentsId = ''; - public commentsUrl: string; - public commentsState: CommentsState; + public commentsUrl!: string; + public commentsState!: CommentsState; public commentForm = new UpsertCommentForm(); public mentionUsers = this.contributorsState.contributors; public mentionConfig: MentionConfig = { dropUp: true, labelKey: 'contributorEmail' }; - public userToken: string; + public userToken = ''; constructor(authService: AuthService, private readonly appsState: AppsState, diff --git a/frontend/app/shared/components/contents/content-list-cell.directive.ts b/frontend/app/shared/components/contents/content-list-cell.directive.ts index 5d9862e4c..93cee3b98 100644 --- a/frontend/app/shared/components/contents/content-list-cell.directive.ts +++ b/frontend/app/shared/components/contents/content-list-cell.directive.ts @@ -86,7 +86,7 @@ export class ContentListWidthPipe implements PipeTransform { }) export class ContentListCellDirective implements OnChanges { @Input('sqxContentListCell') - public field: TableField; + public field!: TableField; constructor( private readonly element: ElementRef, diff --git a/frontend/app/shared/components/contents/content-list-field.component.ts b/frontend/app/shared/components/contents/content-list-field.component.ts index d6a036926..6c2d01573 100644 --- a/frontend/app/shared/components/contents/content-list-field.component.ts +++ b/frontend/app/shared/components/contents/content-list-field.component.ts @@ -22,10 +22,10 @@ interface State { }) export class ContentListFieldComponent extends StatefulComponent implements OnChanges { @Input() - public field: TableField; + public field!: TableField; @Input() - public content: ContentDto; + public content!: ContentDto; @Input() public patchAllowed?: boolean | null; @@ -34,7 +34,7 @@ export class ContentListFieldComponent extends StatefulComponent implemen public patchForm?: FormGroup | null; @Input() - public language: LanguageDto; + public language!: LanguageDto; constructor(changeDetector: ChangeDetectorRef) { super(changeDetector, { diff --git a/frontend/app/shared/components/contents/content-list-header.component.ts b/frontend/app/shared/components/contents/content-list-header.component.ts index 02543ab14..71a59938d 100644 --- a/frontend/app/shared/components/contents/content-list-header.component.ts +++ b/frontend/app/shared/components/contents/content-list-header.component.ts @@ -16,7 +16,7 @@ import { LanguageDto, MetaFields, Query, RootFieldDto, TableField, Types } from }) export class ContentListHeaderComponent { @Input() - public field: TableField; + public field!: TableField; @Output() public queryChange = new EventEmitter(); @@ -25,7 +25,7 @@ export class ContentListHeaderComponent { public query: Query | undefined; @Input() - public language: LanguageDto; + public language!: LanguageDto; public get metaFields() { return MetaFields; diff --git a/frontend/app/shared/components/contents/content-status.component.ts b/frontend/app/shared/components/contents/content-status.component.ts index 4caffb9e1..b580b312c 100644 --- a/frontend/app/shared/components/contents/content-status.component.ts +++ b/frontend/app/shared/components/contents/content-status.component.ts @@ -16,10 +16,10 @@ import { ScheduleDto } from '@app/shared'; }) export class ContentStatusComponent { @Input() - public status: string; + public status!: string; @Input() - public statusColor: string; + public statusColor!: string; @Input() public scheduled?: ScheduleDto | null; diff --git a/frontend/app/shared/components/contents/content-value-editor.component.ts b/frontend/app/shared/components/contents/content-value-editor.component.ts index 0e28b64a4..6616584ea 100644 --- a/frontend/app/shared/components/contents/content-value-editor.component.ts +++ b/frontend/app/shared/components/contents/content-value-editor.component.ts @@ -17,10 +17,10 @@ import { FieldDto, MathHelper } from '@app/shared/internal'; }) export class ContentValueEditorComponent { @Input() - public field: FieldDto; + public field!: FieldDto; @Input() - public form: FormGroup; + public form!: FormGroup; public readonly uniqueId = MathHelper.guid(); } diff --git a/frontend/app/shared/components/contents/content-value.component.ts b/frontend/app/shared/components/contents/content-value.component.ts index cb2c1cc0c..12e2223ce 100644 --- a/frontend/app/shared/components/contents/content-value.component.ts +++ b/frontend/app/shared/components/contents/content-value.component.ts @@ -16,7 +16,7 @@ import { HtmlValue, Types } from '@app/shared/internal'; }) export class ContentValueComponent { @Input() - public value: any; + public value!: any; public get isPlain() { return !Types.is(this.value, HtmlValue); diff --git a/frontend/app/shared/components/forms/geolocation-editor.component.ts b/frontend/app/shared/components/forms/geolocation-editor.component.ts index f8f825b3f..4fd961dd9 100644 --- a/frontend/app/shared/components/forms/geolocation-editor.component.ts +++ b/frontend/app/shared/components/forms/geolocation-editor.component.ts @@ -64,10 +64,10 @@ export class GeolocationEditorComponent extends StatefulControlComponent; + public editor!: ElementRef; @ViewChild('searchBox', { static: false }) - public searchBoxInput: ElementRef; + public searchBoxInput!: ElementRef; constructor(changeDetector: ChangeDetectorRef, private readonly localStore: LocalStoreService, diff --git a/frontend/app/shared/components/forms/markdown-editor.component.ts b/frontend/app/shared/components/forms/markdown-editor.component.ts index fb2c693d8..819b0a733 100644 --- a/frontend/app/shared/components/forms/markdown-editor.component.ts +++ b/frontend/app/shared/components/forms/markdown-editor.component.ts @@ -32,7 +32,7 @@ interface State { }) export class MarkdownEditorComponent extends StatefulControlComponent implements AfterViewInit { private simplemde: any; - private value: string; + private value?: string; @Input() public folderId?: string; @@ -43,13 +43,13 @@ export class MarkdownEditorComponent extends StatefulControlComponent implements AfterViewInit, OnDestroy { private tinyEditor: any; - private value: string; + private value?: string; @Output() public assetPluginClick = new EventEmitter(); @Input() - public folderId: string; + public folderId = ''; @Input() public set disabled(value: boolean | undefined | null) { @@ -40,7 +40,7 @@ export class RichEditorComponent extends StatefulControlComponent<{}, string> im } @ViewChild('editor', { static: false }) - public editor: ElementRef; + public editor!: ElementRef; public assetsDialog = new DialogModel(); diff --git a/frontend/app/shared/components/history/pipes.ts b/frontend/app/shared/components/history/pipes.ts index 68cc8a390..fdede0886 100644 --- a/frontend/app/shared/components/history/pipes.ts +++ b/frontend/app/shared/components/history/pipes.ts @@ -14,8 +14,8 @@ import { Subscription } from 'rxjs'; pure: false, }) export class HistoryMessagePipe implements OnDestroy, PipeTransform { - private subscription: Subscription; - private lastMessage: string; + private subscription?: Subscription; + private lastMessage?: string; private lastValue: string | null = null; constructor( diff --git a/frontend/app/shared/components/notifo.component.ts b/frontend/app/shared/components/notifo.component.ts index c7fe50374..25cc14db8 100644 --- a/frontend/app/shared/components/notifo.component.ts +++ b/frontend/app/shared/components/notifo.component.ts @@ -20,10 +20,10 @@ export class NotifoComponent implements AfterViewInit, OnChanges, OnDestroy { private readonly notifoApiKey: string | undefined; @Input() - public topic: string; + public topic = ''; @ViewChild('element', { static: false }) - public element: ElementRef; + public element!: ElementRef; public get isConfigured() { return !!this.notifoApiKey && !!this.notifoApiUrl; diff --git a/frontend/app/shared/components/pipes.ts b/frontend/app/shared/components/pipes.ts index 44cf8bc17..96a54de63 100644 --- a/frontend/app/shared/components/pipes.ts +++ b/frontend/app/shared/components/pipes.ts @@ -11,10 +11,10 @@ import { Observable, of, Subscription } from 'rxjs'; import { map } from 'rxjs/operators'; class UserAsyncPipe { - private lastUserId: string; + private lastUserId?: string; private lastValue: string | undefined = undefined; - private subscription: Subscription; - private current: Observable; + private subscription?: Subscription; + private current?: Observable; constructor(loading: string, private readonly users: UsersProviderService, diff --git a/frontend/app/shared/components/references/content-selector-item.component.ts b/frontend/app/shared/components/references/content-selector-item.component.ts index 231790cf6..e819edfff 100644 --- a/frontend/app/shared/components/references/content-selector-item.component.ts +++ b/frontend/app/shared/components/references/content-selector-item.component.ts @@ -27,13 +27,13 @@ export class ContentSelectorItemComponent { public selectable?: boolean | null = true; @Input() - public language: LanguageDto; + public language!: LanguageDto; @Input() - public schema: SchemaDto; + public schema!: SchemaDto; @Input('sqxContentSelectorItem') - public content: ContentDto; + public content!: ContentDto; public toggle() { if (this.selectable) { diff --git a/frontend/app/shared/components/references/content-selector.component.ts b/frontend/app/shared/components/references/content-selector.component.ts index 7e5a2dcbb..c49989a1f 100644 --- a/frontend/app/shared/components/references/content-selector.component.ts +++ b/frontend/app/shared/components/references/content-selector.component.ts @@ -30,10 +30,10 @@ export class ContentSelectorComponent extends ResourceOwner implements OnInit { public schemaIds?: ReadonlyArray; @Input() - public language: LanguageDto; + public language!: LanguageDto; @Input() - public languages: ReadonlyArray; + public languages!: ReadonlyArray; @Input() public allowDuplicates?: boolean | null; @@ -41,10 +41,10 @@ export class ContentSelectorComponent extends ResourceOwner implements OnInit { @Input() public alreadySelected: ReadonlyArray | undefined | null; - public schema: SchemaDto; + public schema!: SchemaDto; public schemas: ReadonlyArray = []; - public queryModel: QueryModel; + public queryModel!: QueryModel; public selectedItems: { [id: string]: ContentDto } = {}; public selectionCount = 0; diff --git a/frontend/app/shared/components/references/reference-input.component.ts b/frontend/app/shared/components/references/reference-input.component.ts index 705b559a3..6fb5da875 100644 --- a/frontend/app/shared/components/references/reference-input.component.ts +++ b/frontend/app/shared/components/references/reference-input.component.ts @@ -35,10 +35,10 @@ export class ReferenceInputComponent extends StatefulControlComponent; @Input() - public language: LanguageDto; + public language!: LanguageDto; @Input() - public languages: ReadonlyArray; + public languages!: ReadonlyArray; @Input() public mode: 'Array' | 'Single' = 'Single'; diff --git a/frontend/app/shared/components/schema-category.component.ts b/frontend/app/shared/components/schema-category.component.ts index 367c00c33..2c2e809f5 100644 --- a/frontend/app/shared/components/schema-category.component.ts +++ b/frontend/app/shared/components/schema-category.component.ts @@ -22,7 +22,7 @@ export class SchemaCategoryComponent implements OnChanges { public remove = new EventEmitter(); @Input() - public schemaCategory: SchemaCategory; + public schemaCategory!: SchemaCategory; @Input() public schemaTarget?: 'Schema' | 'Contents'; diff --git a/frontend/app/shared/components/search/queries/filter-comparison.component.ts b/frontend/app/shared/components/search/queries/filter-comparison.component.ts index 4c969ddfb..3ba0b2b1e 100644 --- a/frontend/app/shared/components/search/queries/filter-comparison.component.ts +++ b/frontend/app/shared/components/search/queries/filter-comparison.component.ts @@ -10,7 +10,7 @@ import { FilterComparison, LanguageDto, QueryFieldModel, QueryModel } from '@app import { ContributorsState } from '@app/shared/state/contributors.state'; @Component({ - selector: 'sqx-filter-comparison', + selector: 'sqx-filter-comparison[filter][language][languages][model]', styleUrls: ['./filter-comparison.component.scss'], templateUrl: './filter-comparison.component.html', changeDetection: ChangeDetectionStrategy.OnPush, @@ -23,18 +23,18 @@ export class FilterComparisonComponent implements OnChanges { public remove = new EventEmitter(); @Input() - public language: LanguageDto; + public language!: LanguageDto; @Input() - public languages: ReadonlyArray; + public languages!: ReadonlyArray; @Input() - public model: QueryModel; + public model!: QueryModel; @Input() - public filter: FilterComparison; + public filter!: FilterComparison; - public fieldModel: QueryFieldModel; + public fieldModel?: QueryFieldModel; public noValue = false; diff --git a/frontend/app/shared/components/search/queries/filter-logical.component.ts b/frontend/app/shared/components/search/queries/filter-logical.component.ts index d63bd843f..c81d01476 100644 --- a/frontend/app/shared/components/search/queries/filter-logical.component.ts +++ b/frontend/app/shared/components/search/queries/filter-logical.component.ts @@ -9,13 +9,13 @@ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from import { FilterLogical, FilterNode, LanguageDto, QueryModel } from '@app/shared/internal'; @Component({ - selector: 'sqx-filter-logical', + selector: 'sqx-filter-logical[filter][language][languages][model]', styleUrls: ['./filter-logical.component.scss'], templateUrl: './filter-logical.component.html', changeDetection: ChangeDetectionStrategy.OnPush, }) export class FilterLogicalComponent { - private filterValue: FilterLogical; + private filterValue!: FilterLogical; @Output() public change = new EventEmitter(); @@ -24,10 +24,10 @@ export class FilterLogicalComponent { public remove = new EventEmitter(); @Input() - public language: LanguageDto; + public language!: LanguageDto; @Input() - public languages: ReadonlyArray; + public languages!: ReadonlyArray; @Input() public level = 0; @@ -36,7 +36,7 @@ export class FilterLogicalComponent { public isRoot?: boolean | null; @Input() - public model: QueryModel; + public model!: QueryModel; @Input() public set filter(filter: FilterLogical | undefined | null) { diff --git a/frontend/app/shared/components/search/queries/filter-node.component.ts b/frontend/app/shared/components/search/queries/filter-node.component.ts index 4d7bbddce..ca9f69343 100644 --- a/frontend/app/shared/components/search/queries/filter-node.component.ts +++ b/frontend/app/shared/components/search/queries/filter-node.component.ts @@ -15,7 +15,7 @@ import { FilterComparison, FilterLogical, FilterNode, LanguageDto, QueryModel } changeDetection: ChangeDetectionStrategy.OnPush, }) export class FilterNodeComponent { - public comparison: FilterComparison; + public comparison?: FilterComparison; @Output() public change = new EventEmitter(); @@ -24,16 +24,16 @@ export class FilterNodeComponent { public remove = new EventEmitter(); @Input() - public language: LanguageDto; + public language!: LanguageDto; @Input() - public languages: ReadonlyArray; + public languages!: ReadonlyArray; @Input() - public level: number; + public level = 0; @Input() - public model: QueryModel; + public model!: QueryModel; @Input() public set filter(value: FilterNode) { @@ -44,5 +44,5 @@ export class FilterNodeComponent { } } - public logical: FilterLogical; + public logical?: FilterLogical; } diff --git a/frontend/app/shared/components/search/queries/query-path.component.ts b/frontend/app/shared/components/search/queries/query-path.component.ts index cc3adaa2e..66598cf5a 100644 --- a/frontend/app/shared/components/search/queries/query-path.component.ts +++ b/frontend/app/shared/components/search/queries/query-path.component.ts @@ -19,8 +19,8 @@ export class QueryPathComponent { public pathChange = new EventEmitter(); @Input() - public path: string; + public path = ''; @Input() - public model: QueryModel; + public model!: QueryModel; } diff --git a/frontend/app/shared/components/search/queries/query.component.ts b/frontend/app/shared/components/search/queries/query.component.ts index 10441976a..1ec64304a 100644 --- a/frontend/app/shared/components/search/queries/query.component.ts +++ b/frontend/app/shared/components/search/queries/query.component.ts @@ -9,7 +9,7 @@ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from import { LanguageDto, Query, QueryModel } from '@app/shared/internal'; @Component({ - selector: 'sqx-query', + selector: 'sqx-query[language][languages][model]', styleUrls: ['./query.component.scss'], templateUrl: './query.component.html', changeDetection: ChangeDetectionStrategy.OnPush, @@ -19,13 +19,13 @@ export class QueryComponent { public queryChange = new EventEmitter(); @Input() - public language: LanguageDto; + public language!: LanguageDto; @Input() - public languages: ReadonlyArray; + public languages!: ReadonlyArray; @Input() - public model: QueryModel; + public model!: QueryModel; @Input() public set query(query: Query | undefined | null) { diff --git a/frontend/app/shared/components/search/queries/sorting.component.ts b/frontend/app/shared/components/search/queries/sorting.component.ts index 0de8f55df..571a16def 100644 --- a/frontend/app/shared/components/search/queries/sorting.component.ts +++ b/frontend/app/shared/components/search/queries/sorting.component.ts @@ -9,7 +9,7 @@ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from import { QueryModel, QuerySorting, SORT_MODES } from '@app/shared/internal'; @Component({ - selector: 'sqx-sorting', + selector: 'sqx-sorting[model][sorting]', styleUrls: ['./sorting.component.scss'], templateUrl: './sorting.component.html', changeDetection: ChangeDetectionStrategy.OnPush, @@ -22,10 +22,10 @@ export class SortingComponent { public remove = new EventEmitter(); @Input() - public model: QueryModel; + public model!: QueryModel; @Input() - public sorting: QuerySorting; + public sorting!: QuerySorting; public modes = SORT_MODES; diff --git a/frontend/app/shared/components/search/query-list.component.ts b/frontend/app/shared/components/search/query-list.component.ts index 9424530fe..c17bc0476 100644 --- a/frontend/app/shared/components/search/query-list.component.ts +++ b/frontend/app/shared/components/search/query-list.component.ts @@ -31,7 +31,7 @@ export class QueryListComponent { public canRemove?: boolean | null; @Input() - public types: string; + public types = ''; public isSelectedQuery(saved: SavedQuery) { return equalsQuery(saved.query, this.queryUsed); diff --git a/frontend/app/shared/components/search/search-form.component.ts b/frontend/app/shared/components/search/search-form.component.ts index 544d5fac6..0e91bb4f2 100644 --- a/frontend/app/shared/components/search/search-form.component.ts +++ b/frontend/app/shared/components/search/search-form.component.ts @@ -25,7 +25,7 @@ export class SearchFormComponent implements OnChanges { public placeholder = ''; @Input() - public language: LanguageDto; + public language!: LanguageDto; @Input() public languages: ReadonlyArray = []; @@ -40,7 +40,7 @@ export class SearchFormComponent implements OnChanges { public queries?: Queries | null; @Input() - public queriesTypes: string; + public queriesTypes = ''; @Input() public enableShortcut?: boolean | null; @@ -50,13 +50,13 @@ export class SearchFormComponent implements OnChanges { public showQueries = false; - public saveKey: Observable; + public saveKey!: Observable; public saveQueryDialog = new DialogModel(); public saveQueryForm = new SaveQueryForm(); public searchDialog = new DialogModel(false); - public hasFilter: boolean; + public hasFilter = false; public ngOnChanges(changes: SimpleChanges) { if (changes['query'] || changes['queries']) { diff --git a/frontend/app/shared/components/search/shared-queries.component.ts b/frontend/app/shared/components/search/shared-queries.component.ts index 2b6365746..8b9c6493c 100644 --- a/frontend/app/shared/components/search/shared-queries.component.ts +++ b/frontend/app/shared/components/search/shared-queries.component.ts @@ -9,7 +9,7 @@ import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from import { Queries, Query } from '@app/shared/internal'; @Component({ - selector: 'sqx-shared-queries', + selector: 'sqx-shared-queries[queries][types]', styleUrls: ['./shared-queries.component.scss'], templateUrl: './shared-queries.component.html', changeDetection: ChangeDetectionStrategy.OnPush, @@ -22,8 +22,8 @@ export class SavedQueriesComponent { public queryUsed: Query | undefined | null; @Input() - public queries: Queries; + public queries!: Queries; @Input() - public types: string; + public types = ''; } diff --git a/frontend/app/shared/components/table-header.component.ts b/frontend/app/shared/components/table-header.component.ts index 8c1798206..521b672c3 100644 --- a/frontend/app/shared/components/table-header.component.ts +++ b/frontend/app/shared/components/table-header.component.ts @@ -22,13 +22,13 @@ export class TableHeaderComponent implements OnChanges { public query: Query | undefined | null; @Input() - public text: string; + public text = ''; @Input() public fieldPath?: string | undefined | null; @Input() - public language: LanguageDto; + public language!: LanguageDto; @Input() public sortable?: boolean | null; diff --git a/frontend/app/shared/components/watching-users.component.ts b/frontend/app/shared/components/watching-users.component.ts index b852586cd..658bf1f16 100644 --- a/frontend/app/shared/components/watching-users.component.ts +++ b/frontend/app/shared/components/watching-users.component.ts @@ -19,7 +19,7 @@ export class WatchingUsersComponent { private appName: string; @Input() - public resource: string; + public resource!: string; public users = timer(0, 5000).pipe( diff --git a/frontend/app/shared/services/auth.service.ts b/frontend/app/shared/services/auth.service.ts index b5103c468..afd8b7269 100644 --- a/frontend/app/shared/services/auth.service.ts +++ b/frontend/app/shared/services/auth.service.ts @@ -77,7 +77,7 @@ export class Profile { @Injectable() export class AuthService { - private readonly userManager: UserManager; + private readonly userManager!: UserManager; private readonly user$ = new ReplaySubject(1); private currentUser: Profile | null = null; diff --git a/frontend/app/shared/services/schemas.service.ts b/frontend/app/shared/services/schemas.service.ts index 7ad22d123..b733c819a 100644 --- a/frontend/app/shared/services/schemas.service.ts +++ b/frontend/app/shared/services/schemas.service.ts @@ -52,10 +52,10 @@ export class SchemaDto { public readonly displayName: string; - public readonly contentFields: ReadonlyArray; + public readonly contentFields: ReadonlyArray = []; - public readonly defaultListFields: ReadonlyArray; - public readonly defaultReferenceFields: ReadonlyArray; + public readonly defaultListFields: ReadonlyArray = []; + public readonly defaultReferenceFields: ReadonlyArray = []; constructor(links: ResourceLinks, public readonly id: string, diff --git a/frontend/app/shared/services/schemas.types.ts b/frontend/app/shared/services/schemas.types.ts index 07d12c57c..1cf2cb368 100644 --- a/frontend/app/shared/services/schemas.types.ts +++ b/frontend/app/shared/services/schemas.types.ts @@ -199,12 +199,12 @@ export const ASSET_PREVIEW_MODES: ReadonlyArray = [ export class AssetsFieldPropertiesDto extends FieldPropertiesDto { public readonly fieldType = 'Assets'; - public readonly previewMode: AssetPreviewMode; + public readonly previewMode: AssetPreviewMode = 'FileName'; public readonly defaultValue?: ReadonlyArray; public readonly defaultValues?: DefaultValue>; public readonly allowDuplicates?: boolean; public readonly allowedExtensions?: ReadonlyArray; - public readonly resolveFirst: boolean; + public readonly resolveFirst = false; public readonly aspectHeight?: number; public readonly aspectWidth?: number; public readonly folderId?: string; diff --git a/frontend/app/shared/state/contents.form-rules.ts b/frontend/app/shared/state/contents.form-rules.ts index 723dcf572..73f5ce720 100644 --- a/frontend/app/shared/state/contents.form-rules.ts +++ b/frontend/app/shared/state/contents.form-rules.ts @@ -60,7 +60,7 @@ const EMPTY_RULES: CompiledRule[] = []; const EMPTY_RULES_STATIC = { rules: EMPTY_RULES }; class ComponentRules implements ComponentRules { - private previouSchema: SchemaDto; + private previouSchema?: SchemaDto; private compiledRules: ReadonlyArray = []; public get rules() { diff --git a/frontend/app/shared/state/contents.state.ts b/frontend/app/shared/state/contents.state.ts index 1b430c48e..ee5766a15 100644 --- a/frontend/app/shared/state/contents.state.ts +++ b/frontend/app/shared/state/contents.state.ts @@ -432,7 +432,7 @@ export class ContentsState extends ContentsStateBase { @Injectable() export class ComponentContentsState extends ContentsStateBase { - public schema: { name: string }; + public schema!: { name: string }; constructor( appsState: AppsState, contentsService: ContentsService, dialogs: DialogService, diff --git a/frontend/app/shared/state/languages.state.ts b/frontend/app/shared/state/languages.state.ts index 040f6bf17..5fa081846 100644 --- a/frontend/app/shared/state/languages.state.ts +++ b/frontend/app/shared/state/languages.state.ts @@ -53,7 +53,7 @@ type LanguageResultList = ReadonlyArray; @Injectable() export class LanguagesState extends State { - private cachedLanguage$: Observable>; + private cachedLanguage$?: Observable>; public languages = this.project(x => x.languages); diff --git a/frontend/app/shared/state/resolvers.ts b/frontend/app/shared/state/resolvers.ts index aa5a264af..2b7c1e447 100644 --- a/frontend/app/shared/state/resolvers.ts +++ b/frontend/app/shared/state/resolvers.ts @@ -173,8 +173,8 @@ function chunkArray(array: T[], size: number): T[][] { } class Deferred { - private handleResolve: Function; - private handleReject: Function; + private handleResolve?: Function; + private handleReject?: Function; private isHandled = false; public readonly promise: Promise; @@ -192,7 +192,7 @@ class Deferred { } this.isHandled = true; - this.handleResolve(value); + this.handleResolve?.(value); } public reject(reason?: any) { @@ -201,6 +201,6 @@ class Deferred { } this.isHandled = true; - this.handleReject(reason); + this.handleReject?.(reason); } } diff --git a/frontend/app/shell/pages/app/left-menu.component.ts b/frontend/app/shell/pages/app/left-menu.component.ts index 30beab720..b518ac8e3 100644 --- a/frontend/app/shell/pages/app/left-menu.component.ts +++ b/frontend/app/shell/pages/app/left-menu.component.ts @@ -16,7 +16,7 @@ import { AppDto, Settings } from '@app/shared'; }) export class LeftMenuComponent { @Input() - public app: AppDto; + public app!: AppDto; public isAssetsHidden(app: AppDto) { return app.roleProperties[Settings.AppProperties.HIDE_ASSETS] === true; diff --git a/frontend/app/shell/pages/internal/notifications-menu.component.ts b/frontend/app/shell/pages/internal/notifications-menu.component.ts index b9224d07a..d8a8bbabc 100644 --- a/frontend/app/shell/pages/internal/notifications-menu.component.ts +++ b/frontend/app/shell/pages/internal/notifications-menu.component.ts @@ -26,13 +26,13 @@ export class NotificationsMenuComponent extends ResourceOwner implements OnInit public versionRead = -1; public versionReceived = -1; - public userToken: string; + public userToken = ''; public get unread() { return Math.max(0, this.versionReceived - this.versionRead); } - public isNotifoConfigured: boolean; + public isNotifoConfigured = false; constructor(authService: AuthService, commentsService: CommentsService, dialogs: DialogService, uiOptions: UIOptions, private readonly changeDetector: ChangeDetectorRef, diff --git a/frontend/app/shell/pages/internal/search-menu.component.ts b/frontend/app/shell/pages/internal/search-menu.component.ts index dbfe2b894..2302dc356 100644 --- a/frontend/app/shell/pages/internal/search-menu.component.ts +++ b/frontend/app/shell/pages/internal/search-menu.component.ts @@ -40,9 +40,9 @@ export class SearchSource implements AutocompleteSource { }) export class SearchMenuComponent { @ViewChild(AutocompleteComponent, { static: false }) - public searchControl: AutocompleteComponent; + public searchControl!: AutocompleteComponent; - public searchResult: SearchResultDto; + public searchResult?: SearchResultDto; constructor( private readonly router: Router, diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 93afa4902..a4b8a8102 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -90,6 +90,7 @@ "codelyzer": "6.0.2", "copy-webpack-plugin": "10.2.0", "css-loader": "6.5.1", + "css-minimizer-webpack-plugin": "^3.3.1", "cssnano": "5.0.14", "entities": "3.0.1", "eslint": "8.6.0", @@ -4363,6 +4364,103 @@ "node": ">=10" } }, + "node_modules/css-minimizer-webpack-plugin": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.3.1.tgz", + "integrity": "sha512-SHA7Hu/EiF0dOwdmV2+agvqYpG+ljlUa7Dvn1AVOmSH3N8KOERoaM9lGpstz9nGsoTjANGyUXdrxl/EwdMScRg==", + "dev": true, + "dependencies": { + "cssnano": "^5.0.6", + "jest-worker": "^27.0.2", + "postcss": "^8.3.5", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "clean-css": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/ajv": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", + "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/css-minimizer-webpack-plugin/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/css-prefers-color-scheme": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.1.tgz", @@ -18390,6 +18488,67 @@ } } }, + "css-minimizer-webpack-plugin": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.3.1.tgz", + "integrity": "sha512-SHA7Hu/EiF0dOwdmV2+agvqYpG+ljlUa7Dvn1AVOmSH3N8KOERoaM9lGpstz9nGsoTjANGyUXdrxl/EwdMScRg==", + "dev": true, + "requires": { + "cssnano": "^5.0.6", + "jest-worker": "^27.0.2", + "postcss": "^8.3.5", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { + "ajv": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", + "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, "css-prefers-color-scheme": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.1.tgz", diff --git a/frontend/package.json b/frontend/package.json index 48dec266c..d9496ca98 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -11,7 +11,7 @@ "test:clean": "rimraf _test-output", "lint:scripts": "eslint app/**/*.ts", "lint:style": "stylelint app/**/*.scss", - "build": "node --max_old_space_size=4096 node_modules/webpack/bin/webpack.js --config app-config/webpack.config.js --env production", + "build": "node --trace-deprecation --max_old_space_size=4096 node_modules/webpack/bin/webpack.js --config app-config/webpack.config.js --env production", "build:clean": "rimraf wwwroot/build", "build:analyze": "node --max_old_space_size=4096 node_modules/webpack/bin/webpack.js --config app-config/webpack.config.js --env production --env analyze", "postinstall": "npx patch-package && ngcc", @@ -98,6 +98,7 @@ "codelyzer": "6.0.2", "copy-webpack-plugin": "10.2.0", "css-loader": "6.5.1", + "css-minimizer-webpack-plugin": "^3.3.1", "cssnano": "5.0.14", "entities": "3.0.1", "eslint": "8.6.0", @@ -121,7 +122,6 @@ "karma-sourcemap-loader": "0.3.8", "karma-webpack": "5.0.0", "mini-css-extract-plugin": "2.4.5", - "optimize-css-assets-webpack-plugin": "6.0.1", "postcss-import": "14.0.2", "postcss-loader": "6.2.1", "postcss-preset-env": "7.1.0", diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json index 5ec45a31b..9ab37454c 100644 --- a/frontend/tsconfig.json +++ b/frontend/tsconfig.json @@ -18,6 +18,7 @@ "noUnusedParameters": false, "removeComments": false, "sourceMap": true, + "strict": true, "strictNullChecks": true, "suppressImplicitAnyIndexErrors": true, "target": "es2015",