From 829805e2018d93a5d859aae95d801a99c4ea63bf Mon Sep 17 00:00:00 2001 From: Denys Vuika Date: Tue, 22 Jun 2021 16:36:06 +0100 Subject: [PATCH] [ADF-5432] component template and code fixes after testing Angular strict mode (#7118) * process list fixes * template error fixes * template and code fixes * bug fixes in templates and types * bugs, bugs are everywhere * fix test * test fixes * enable strict templates for extensions lib * enable strict mode for insights lib * enable strict mode for core lib * enable strict mode for content lib * strict mode for process lib * strict mode for process cloud * fix demo shell template issues * fix process cloud types --- .../app-layout/app-layout.component.ts | 5 +- .../community-task-cloud.component.ts | 2 +- .../people-groups-cloud-demo.component.html | 12 ++-- .../start-process-cloud-demo.component.ts | 2 +- .../cloud/tasks-cloud-demo.component.html | 3 +- .../cloud/tasks-cloud-demo.component.ts | 2 +- .../content-node-selector.component.ts | 6 +- .../datatable-dnd.component.html | 4 +- .../drag-and-drop/datatable-dnd.component.ts | 2 +- .../file-view/file-view.component.ts | 5 +- .../app/components/files/files.component.html | 10 +-- .../app/components/files/files.component.ts | 9 +-- ...ersion-manager-dialog-adapter.component.ts | 8 ++- .../components/form/form-list.component.html | 2 +- .../components/form/form-list.component.ts | 2 +- .../header-data/header-data.component.html | 12 ++-- .../header-data/header-data.component.ts | 5 +- .../header-data/header-data.service.ts | 9 +-- .../process-list-demo.component.ts | 32 +++++---- .../process-service.component.html | 4 +- .../process-service.component.ts | 4 +- .../search/search-result.component.html | 4 +- .../search/search-result.component.ts | 3 +- .../task-list-demo.component.ts | 60 ++++++++-------- .../trashcan/trashcan.component.html | 2 +- .../lib/breadcrumb/breadcrumb.component.html | 2 +- .../lib/breadcrumb/breadcrumb.component.ts | 4 ++ .../dropdown-breadcrumb.component.html | 2 +- ...content-node-selector-panel.component.html | 2 +- .../content-node-selector-panel.component.ts | 14 ++-- .../content-node-share.dialog.html | 2 +- .../content-node-share.dialog.spec.ts | 3 +- .../src/lib/dialogs/folder.dialog.html | 9 ++- .../src/lib/dialogs/node-lock.dialog.html | 10 +-- .../components/document-list.component.html | 6 +- .../components/document-list.component.ts | 4 +- .../add-permission-dialog.component.html | 4 +- .../permission-container.component.html | 4 +- .../permission-container.component.ts | 4 +- .../permission-list.component.html | 6 +- .../components/search-control.component.ts | 24 +++---- .../components/base-upload/upload-base.ts | 4 +- .../file-uploading-dialog.component.html | 2 - .../upload-button.component.spec.ts | 6 +- .../components/upload-button.component.ts | 4 +- .../upload-drag-area.component.html | 2 +- .../version-manager.component.ts | 12 ++-- .../version-upload.component.spec.ts | 2 +- .../version-upload.component.ts | 6 +- lib/content-services/tsconfig.lib.json | 3 +- .../card-view-dateitem.component.html | 12 ++-- .../card-view-dateitem.component.ts | 1 - .../select-filter-input.component.ts | 2 +- .../card-view-textitem.component.html | 6 +- lib/core/comments/comments.component.ts | 2 +- .../datatable/datatable.component.html | 2 +- .../datatable/datatable.component.ts | 4 +- .../form/components/form-base.component.ts | 7 +- .../widgets/core/form-widget.model.ts | 2 + .../widgets/date-time/date-time.widget.html | 4 +- .../components/widgets/date/date.widget.html | 2 +- .../editors/date/date.editor.html | 2 +- .../editors/datetime/datetime.editor.html | 6 +- .../multiline-text/multiline-text.widget.html | 2 +- .../components/widgets/tabs/tabs.widget.ts | 4 +- .../widgets/text/text-mask.component.ts | 4 +- .../components/header/header.component.ts | 3 +- .../layout-container.component.ts | 2 +- .../sidenav-layout.component.ts | 4 +- .../login/components/login.component.html | 4 +- lib/core/login/components/login.component.ts | 2 +- .../notification-history.component.ts | 6 +- .../settings/host-settings.component.html | 20 +++--- lib/core/settings/host-settings.component.ts | 66 ++++++++--------- lib/core/tsconfig.lib.json | 3 +- .../viewer/components/viewer.component.html | 9 +-- lib/extensions/tsconfig.lib.json | 3 +- .../analytics-generator.component.html | 4 +- .../analytics-generator.component.ts | 6 +- .../analytics-report-heat-map.component.html | 17 ++++- .../analytics-report-heat-map.component.ts | 4 ++ .../analytics-report-list.component.html | 2 +- .../analytics-report-list.component.ts | 6 +- ...analytics-report-parameters.component.html | 72 ++++++++++++------- .../analytics-report-parameters.component.ts | 32 +++++++++ .../components/analytics.component.html | 23 +++--- .../components/analytics.component.ts | 2 +- .../services/analytics.service.ts | 2 +- .../diagram/models/chart/bar-chart.model.ts | 11 --- .../lib/diagram/models/chart/chart.model.ts | 45 ++++++++++++ .../models/chart/details-table-chart.model.ts | 8 +-- .../models/chart/heat-map-chart.model.ts | 2 - .../diagram/models/chart/line-chart.model.ts | 5 -- .../diagram/models/chart/pie-chart.model.ts | 25 +------ .../diagram/models/chart/table-chart.model.ts | 13 +--- .../models/report/report-parameters.model.ts | 3 + lib/insights/tsconfig.lib.json | 3 +- .../attach-file-cloud-widget.component.html | 2 +- .../attach-file-cloud-widget.component.ts | 2 +- .../attach-file/upload-cloud.widget.ts | 10 +-- .../widgets/date/date-cloud.widget.html | 2 +- .../widgets/group/group-cloud.widget.html | 4 +- .../widgets/group/group-cloud.widget.ts | 5 +- .../widgets/people/people-cloud.widget.ts | 5 +- .../group/components/group-cloud.component.ts | 8 +-- .../edit-process-filter-cloud.component.html | 2 +- .../process-list-cloud.component.html | 10 +-- .../process-list-cloud.component.ts | 4 +- .../start-task-cloud.component.html | 2 +- .../components/start-task-cloud.component.ts | 18 ++--- ...base-edit-task-filter-cloud.component.html | 2 +- .../task-assignment-filter.component.ts | 4 +- .../base-task-list-cloud.component.html | 10 +-- .../base-task-list-cloud.component.ts | 2 +- .../components/task-list-cloud.component.ts | 4 +- .../task-list/models/filter-cloud-model.ts | 10 +-- lib/process-services-cloud/tsconfig.lib.json | 3 +- .../create-process-attachment.component.html | 2 +- .../create-task-attachment.component.html | 2 +- .../people-list/people-list.component.html | 2 +- .../people-list/people-list.component.ts | 3 +- .../components/process-filters.component.ts | 8 +-- .../components/process-list.component.html | 2 +- .../components/process-list.component.ts | 2 +- .../components/start-task.component.html | 4 +- .../components/task-details.component.html | 2 +- .../components/task-list.component.html | 8 +-- lib/process-services/tsconfig.lib.json | 3 +- tsconfig.json | 3 +- 129 files changed, 534 insertions(+), 435 deletions(-) diff --git a/demo-shell/src/app/components/app-layout/app-layout.component.ts b/demo-shell/src/app/components/app-layout/app-layout.component.ts index 316656ceab..df190dbe10 100644 --- a/demo-shell/src/app/components/app-layout/app-layout.component.ts +++ b/demo-shell/src/app/components/app-layout/app-layout.component.ts @@ -20,6 +20,7 @@ import { UserPreferencesService, AppConfigService, AlfrescoApiService, UserPrefe import { HeaderDataService } from '../header-data/header-data.service'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; +import { ThemePalette } from '@angular/material/core'; @Component({ templateUrl: './app-layout.component.html', @@ -92,14 +93,14 @@ export class AppLayoutComponent implements OnInit, OnDestroy { expandedSidenav = false; - position = 'start'; + position: 'start' | 'end' = 'start'; direction = 'ltr'; hideSidenav = false; showMenu = true; enableRedirect = true; - color = 'primary'; + color: ThemePalette = 'primary'; title = 'APP_LAYOUT.APP_NAME'; logo: string; redirectUrl: string | any[] = ['/home']; diff --git a/demo-shell/src/app/components/cloud/community/community-task-cloud.component.ts b/demo-shell/src/app/components/cloud/community/community-task-cloud.component.ts index 974b9b5d60..b8ad645658 100644 --- a/demo-shell/src/app/components/cloud/community/community-task-cloud.component.ts +++ b/demo-shell/src/app/components/cloud/community/community-task-cloud.component.ts @@ -48,7 +48,7 @@ export class CommunityTasksCloudDemoComponent implements OnInit, OnDestroy { filterId; multiselect: boolean; - selectedRows: string[] = []; + selectedRows: any[] = []; testingMode: boolean; selectionMode: string; taskDetailsRedirection: boolean; diff --git a/demo-shell/src/app/components/cloud/people-groups-cloud-demo.component.html b/demo-shell/src/app/components/cloud/people-groups-cloud-demo.component.html index ae6ed8d089..39af105809 100644 --- a/demo-shell/src/app/components/cloud/people-groups-cloud-demo.component.html +++ b/demo-shell/src/app/components/cloud/people-groups-cloud-demo.component.html @@ -20,15 +20,15 @@ {{ 'PEOPLE_GROUPS_CLOUD.ROLE' | translate }} ["ACTIVITI_ADMIN", "ACTIVITI_USER"] - + {{ 'PEOPLE_GROUPS_CLOUD.APP_NAME' | translate }} - + {{ 'PEOPLE_GROUPS_CLOUD.PRESELECTED_VALUE' | translate }} {{ DEFAULT_PEOPLE_PLACEHOLDER }} - + {{ 'PEOPLE_GROUPS_CLOUD.PRESELECT_VALIDATION' | translate }} @@ -92,19 +92,19 @@ {{ 'PEOPLE_GROUPS_CLOUD.ROLE' | translate }} ["ACTIVITI_ADMIN", "ACTIVITI_USER"] {{ 'PEOPLE_GROUPS_CLOUD.APP_NAME' | translate }} Preselect: {{ DEFAULT_GROUP_PLACEHOLDER }} diff --git a/demo-shell/src/app/components/cloud/start-process-cloud-demo.component.ts b/demo-shell/src/app/components/cloud/start-process-cloud-demo.component.ts index 0e47c89ba0..1b531ede2e 100644 --- a/demo-shell/src/app/components/cloud/start-process-cloud-demo.component.ts +++ b/demo-shell/src/app/components/cloud/start-process-cloud-demo.component.ts @@ -32,7 +32,7 @@ export class StartProcessCloudDemoComponent implements OnInit { appName; processName: string; - formValues: string; + formValues: any; variables: any; constructor(private appConfig: AppConfigService, diff --git a/demo-shell/src/app/components/cloud/tasks-cloud-demo.component.html b/demo-shell/src/app/components/cloud/tasks-cloud-demo.component.html index f57949014c..5840b27894 100644 --- a/demo-shell/src/app/components/cloud/tasks-cloud-demo.component.html +++ b/demo-shell/src/app/components/cloud/tasks-cloud-demo.component.html @@ -37,8 +37,7 @@ (showRowContextMenu)="onShowRowContextMenu($event)" (executeRowAction)="onExecuteRowAction($event)" (rowClick)="onRowClick($event)" - (rowsSelected)="onRowsSelected($event)" - #taskCloud> + (rowsSelected)="onRowsSelected($event)"> DataTable Drag and Drop Demo
+ (cell-drop)="onDrop($any($event))">
diff --git a/demo-shell/src/app/components/datatable/drag-and-drop/datatable-dnd.component.ts b/demo-shell/src/app/components/datatable/drag-and-drop/datatable-dnd.component.ts index 4193026c6d..0392f9c502 100644 --- a/demo-shell/src/app/components/datatable/drag-and-drop/datatable-dnd.component.ts +++ b/demo-shell/src/app/components/datatable/drag-and-drop/datatable-dnd.component.ts @@ -88,7 +88,7 @@ export class DataTableDnDComponent implements OnInit { this.data.setSorting(new DataSorting('id', 'asc')); } - onDragOver(event: CustomEvent) { + onDragOver(event: Event) { event.preventDefault(); } diff --git a/demo-shell/src/app/components/file-view/file-view.component.ts b/demo-shell/src/app/components/file-view/file-view.component.ts index 733fc4a494..5fb67fda7b 100644 --- a/demo-shell/src/app/components/file-view/file-view.component.ts +++ b/demo-shell/src/app/components/file-view/file-view.component.ts @@ -17,7 +17,7 @@ import { Component, OnInit, ViewEncapsulation } from '@angular/core'; import { ActivatedRoute, Router, PRIMARY_OUTLET } from '@angular/router'; -import { ContentService, AllowableOperationsEnum, PermissionsEnum, NodesApiService } from '@alfresco/adf-core'; +import { ContentService, AllowableOperationsEnum, PermissionsEnum, NodesApiService, FileUploadErrorEvent } from '@alfresco/adf-core'; import { MatSnackBar } from '@angular/material/snack-bar'; import { PreviewService } from '../../services/preview.service'; @@ -103,7 +103,8 @@ export class FileViewComponent implements OnInit { this.router.navigateByUrl(primaryUrl); } - onUploadError(errorMessage: string) { + onUploadError(event: FileUploadErrorEvent) { + const errorMessage = event.error; this.snackBar.open(errorMessage, '', { duration: 4000 }); } diff --git a/demo-shell/src/app/components/files/files.component.html b/demo-shell/src/app/components/files/files.component.html index 51205fe69a..34c8d7a02c 100644 --- a/demo-shell/src/app/components/files/files.component.html +++ b/demo-shell/src/app/components/files/files.component.html @@ -14,7 +14,7 @@ locationFormat="/files" [display]="'gallery'" [preselectNodes]="selectedNodes" - [showHeader]="false" + [showHeader]="noHeaderMode" [maxItems]="5" (preview)="showFile($event)" selectionMode="null"> @@ -117,7 +117,7 @@ + @@ -239,7 +239,7 @@ (preview)="showFile($event)" (folderChange)="onFolderChange($event)" (permissionError)="handlePermissionError($event)" - (name-click)="documentList.onNodeDblClick($event.detail?.node)" + (name-click)="documentList.onNodeDblClick($any($event).detail?.node)" (filterSelection)="onFilterSelected($event)"> @@ -648,7 +648,7 @@
diff --git a/demo-shell/src/app/components/files/files.component.ts b/demo-shell/src/app/components/files/files.component.ts index 434128141f..0a07e1fd7b 100644 --- a/demo-shell/src/app/components/files/files.component.ts +++ b/demo-shell/src/app/components/files/files.component.ts @@ -48,6 +48,7 @@ import { MetadataDialogAdapterComponent } from './metadata-dialog-adapter.compon import { Subject } from 'rxjs'; import { PreviewService } from '../../services/preview.service'; import { takeUntil, debounceTime, scan } from 'rxjs/operators'; +import { ThemePalette } from '@angular/material/core'; const DEFAULT_FOLDER_TO_SHOW = '-my-'; @@ -74,7 +75,7 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy { this.appConfig.get(AppConfigValues.BASESHAREURL) || this.appConfig.get(AppConfigValues.ECMHOST)) + '/preview/s/'; - toolbarColor = 'default'; + toolbarColor: ThemePalette; selectionModes = [ { value: 'none', viewValue: 'None' }, @@ -94,7 +95,7 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy { sorting = ['name', 'ASC']; @Input() - sortingMode = 'server'; + sortingMode: 'server' | 'client' = 'server'; @Input() showRecentFiles = true; @@ -106,7 +107,7 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy { showSettingsPanel = true; @Input() - showHeader: string = ShowHeaderMode.Always; + showHeader = ShowHeaderMode.Always; @Input() selectionMode = 'multiple'; @@ -207,7 +208,7 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy { preselectNodes: boolean; warnOnMultipleUploads = false; thumbnails = false; - + noHeaderMode = ShowHeaderMode.Never; enableCustomPermissionMessage = false; enableMediumTimeFormat = false; displayEmptyMetadata = false; diff --git a/demo-shell/src/app/components/files/version-manager-dialog-adapter.component.ts b/demo-shell/src/app/components/files/version-manager-dialog-adapter.component.ts index 86b007606c..e15ba65209 100644 --- a/demo-shell/src/app/components/files/version-manager-dialog-adapter.component.ts +++ b/demo-shell/src/app/components/files/version-manager-dialog-adapter.component.ts @@ -20,6 +20,7 @@ import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog'; import { MinimalNodeEntryEntity } from '@alfresco/js-api'; import { MatSnackBar } from '@angular/material/snack-bar'; import { PreviewService } from '../../services/preview.service'; +import { FileUploadErrorEvent } from '@alfresco/adf-core'; @Component({ templateUrl: './version-manager-dialog-adapter.component.html', @@ -45,8 +46,9 @@ export class VersionManagerDialogAdapterComponent { this.allowDownload = data.hasOwnProperty('allowDownload') ? data.allowDownload : this.allowDownload; } - uploadError(errorMessage: string) { - this.snackBar.open(errorMessage, '', {duration: 4000}); + uploadError(event: FileUploadErrorEvent) { + const errorMessage = event.error; + this.snackBar.open(errorMessage, '', { duration: 4000 }); } close() { @@ -58,7 +60,7 @@ export class VersionManagerDialogAdapterComponent { this.close(); } - hideVersionComparison(isCancelled: boolean | Node) { + hideVersionComparison(isCancelled: any) { if (isCancelled) { this.showVersionComparison = false; this.newFileVersion = null; diff --git a/demo-shell/src/app/components/form/form-list.component.html b/demo-shell/src/app/components/form/form-list.component.html index 7e4313195b..09e5142878 100644 --- a/demo-shell/src/app/components/form/form-list.component.html +++ b/demo-shell/src/app/components/form/form-list.component.html @@ -1,4 +1,4 @@ - +
diff --git a/demo-shell/src/app/components/form/form-list.component.ts b/demo-shell/src/app/components/form/form-list.component.ts index 99b0840163..2c3d3e7623 100644 --- a/demo-shell/src/app/components/form/form-list.component.ts +++ b/demo-shell/src/app/components/form/form-list.component.ts @@ -60,7 +60,7 @@ export class FormListComponent implements OnInit, OnDestroy { this.onDestroy$.complete(); } - onRowDblClick(event: CustomEvent) { + onRowDblClick(event: CustomEvent) { const rowForm = event.detail.value.obj; this.formService.getFormDefinitionById(rowForm.id).subscribe((formModel) => { diff --git a/demo-shell/src/app/components/header-data/header-data.component.html b/demo-shell/src/app/components/header-data/header-data.component.html index 9dac3b64df..bc101916f3 100644 --- a/demo-shell/src/app/components/header-data/header-data.component.html +++ b/demo-shell/src/app/components/header-data/header-data.component.html @@ -7,13 +7,13 @@
- OR -

*Choose only one value at a time: either hex code or theme color.

*press enter for submitting new hex color

@@ -21,27 +21,27 @@
-

*press enter for submitting new title

- +

*press enter for submitting new logo

- +

*Input JSON friendly array or explicit string. E.g. ["/test", 33, "user", 11] or "/test"

*press enter for submitting new link on logo

- +

*press enter for submitting new tooltip

diff --git a/demo-shell/src/app/components/header-data/header-data.component.ts b/demo-shell/src/app/components/header-data/header-data.component.ts index 096e70b989..0f48c0fd09 100644 --- a/demo-shell/src/app/components/header-data/header-data.component.ts +++ b/demo-shell/src/app/components/header-data/header-data.component.ts @@ -16,6 +16,7 @@ */ import { Component } from '@angular/core'; +import { ThemePalette } from '@angular/material/core'; import { HeaderDataService } from './header-data.service'; @Component({ @@ -24,7 +25,7 @@ import { HeaderDataService } from './header-data.service'; }) export class HeaderDataComponent { checkbox = true; - position = 'start'; + position: 'start' | 'end' = 'start'; hideSidenavToggle = false; constructor(private headerService: HeaderDataService) { @@ -34,7 +35,7 @@ export class HeaderDataComponent { this.headerService.hideMenuButton(); } - changeColor(color: string) { + changeColor(color: ThemePalette) { this.headerService.changeColor(color); } diff --git a/demo-shell/src/app/components/header-data/header-data.service.ts b/demo-shell/src/app/components/header-data/header-data.service.ts index 64c7f23110..ee01e62c3d 100644 --- a/demo-shell/src/app/components/header-data/header-data.service.ts +++ b/demo-shell/src/app/components/header-data/header-data.service.ts @@ -16,6 +16,7 @@ */ import { Injectable, Output, EventEmitter } from '@angular/core'; +import { ThemePalette } from '@angular/material/core'; @Injectable({ providedIn: 'root' @@ -26,12 +27,12 @@ export class HeaderDataService { show = true; @Output() hideMenu = new EventEmitter(); - @Output() color = new EventEmitter(); + @Output() color = new EventEmitter(); @Output() title = new EventEmitter(); @Output() logo = new EventEmitter(); @Output() redirectUrl = new EventEmitter(); @Output() tooltip = new EventEmitter(); - @Output() position = new EventEmitter(); + @Output() position = new EventEmitter<'start' | 'end'>(); @Output() hideSidenav = new EventEmitter(); hideMenuButton() { @@ -39,7 +40,7 @@ export class HeaderDataService { this.hideMenu.emit(this.show); } - changeColor(color: string) { + changeColor(color: ThemePalette) { this.color.emit(color); } @@ -60,7 +61,7 @@ export class HeaderDataService { this.tooltip.emit(tooltip); } - changePosition(position: string) { + changePosition(position: 'start' | 'end') { this.position.emit(position); } diff --git a/demo-shell/src/app/components/process-list-demo/process-list-demo.component.ts b/demo-shell/src/app/components/process-list-demo/process-list-demo.component.ts index 518fbca260..ab422ecf30 100644 --- a/demo-shell/src/app/components/process-list-demo/process-list-demo.component.ts +++ b/demo-shell/src/app/components/process-list-demo/process-list-demo.component.ts @@ -148,31 +148,35 @@ export class ProcessListDemoComponent implements OnInit, OnDestroy { return ended ? 'Completed' : 'Active'; } - get processAppId(): AbstractControl { - return this.processListForm.get('processAppId'); + private getControl(key: string): T { + return this.processListForm.get(key) as T; } - get processDefinitionId(): AbstractControl { - return this.processListForm.get('processDefinitionId'); + get processAppId(): FormControl { + return this.getControl('processAppId'); } - get processInstanceId(): AbstractControl { - return this.processListForm.get('processInstanceId'); + get processDefinitionId(): FormControl { + return this.getControl('processDefinitionId'); } - get processState(): AbstractControl { - return this.processListForm.get('processState'); + get processInstanceId(): FormControl { + return this.getControl('processInstanceId'); } - get processSort(): AbstractControl { - return this.processListForm.get('processSort'); + get processState(): FormControl { + return this.getControl('processState'); } - get processSize(): AbstractControl { - return this.processListForm.get('processSize'); + get processSort(): FormControl { + return this.getControl('processSort'); } - get processPage(): AbstractControl { - return this.processListForm.get('processPage'); + get processSize(): FormControl { + return this.getControl('processSize'); + } + + get processPage(): FormControl { + return this.getControl('processPage'); } } diff --git a/demo-shell/src/app/components/process-service/process-service.component.html b/demo-shell/src/app/components/process-service/process-service.component.html index 8338b6328d..6990f98e2a 100644 --- a/demo-shell/src/app/components/process-service/process-service.component.html +++ b/demo-shell/src/app/components/process-service/process-service.component.html @@ -53,7 +53,7 @@ (rowClick)="onTaskRowClick($event)" (success)="onSuccessTaskList()" (row-click)="onRowClick($event)" - (row-dblclick)="onTaskRowDblClick($event)" + (row-dblclick)="onTaskRowDblClick($any($event))" [multiselect]="multiSelectTask" #taskList> @@ -168,7 +168,7 @@ [showContextMenu]="processContextMenu" (showRowContextMenu)="onShowProcessRowContextMenu($event)" (rowClick)="onProcessRowClick($event)" - (row-dblclick)="onProcessRowDblClick($event)" + (row-dblclick)="onProcessRowDblClick($any($event))" [multiselect]="multiSelectProcess" (success)="onSuccessProcessList()"> diff --git a/demo-shell/src/app/components/process-service/process-service.component.ts b/demo-shell/src/app/components/process-service/process-service.component.ts index 1cc7ec91ef..ec90548e53 100644 --- a/demo-shell/src/app/components/process-service/process-service.component.ts +++ b/demo-shell/src/app/components/process-service/process-service.component.ts @@ -113,10 +113,10 @@ export class ProcessServiceComponent implements AfterViewInit, OnDestroy, OnInit @Input() appId: number = null; - filterSelected: object = null; + filterSelected: any = null; @Output() - changePageSize: EventEmitter = new EventEmitter(); + changePageSize = new EventEmitter(); selectFirstReport = false; multiSelectTask = false; diff --git a/demo-shell/src/app/components/search/search-result.component.html b/demo-shell/src/app/components/search/search-result.component.html index 3d9907b5ed..41d1a3cf40 100644 --- a/demo-shell/src/app/components/search/search-result.component.html +++ b/demo-shell/src/app/components/search/search-result.component.html @@ -13,14 +13,14 @@
(); diff --git a/demo-shell/src/app/components/task-list-demo/task-list-demo.component.ts b/demo-shell/src/app/components/task-list-demo/task-list-demo.component.ts index 061bafae13..ddd1415bc4 100644 --- a/demo-shell/src/app/components/task-list-demo/task-list-demo.component.ts +++ b/demo-shell/src/app/components/task-list-demo/task-list-demo.component.ts @@ -194,59 +194,63 @@ export class TaskListDemoComponent implements OnInit, OnDestroy { return this.taskListForm && this.taskListForm.dirty && this.taskListForm.valid; } - get taskAppId(): AbstractControl { - return this.taskListForm.get('taskAppId'); + private getControl(key: string): T { + return this.taskListForm.get(key) as T; } - get taskId(): AbstractControl { - return this.taskListForm.get('taskId'); + get taskAppId(): FormControl { + return this.getControl('taskAppId'); } - get taskProcessDefinitionId(): AbstractControl { - return this.taskListForm.get('taskProcessDefinitionId'); + get taskId(): FormControl { + return this.getControl('taskId'); } - get taskProcessInstanceId(): AbstractControl { - return this.taskListForm.get('taskProcessInstanceId'); + get taskProcessDefinitionId(): FormControl { + return this.getControl('taskProcessDefinitionId'); } - get taskName(): AbstractControl { - return this.taskListForm.get('taskName'); + get taskProcessInstanceId(): FormControl { + return this.getControl('taskProcessInstanceId'); } - get taskAssignment(): AbstractControl { - return this.taskListForm.get('taskAssignment'); + get taskName(): FormControl { + return this.getControl('taskName'); } - get taskState(): AbstractControl { - return this.taskListForm.get('taskState'); + get taskAssignment(): FormControl { + return this.getControl('taskAssignment'); } - get taskSort(): AbstractControl { - return this.taskListForm.get('taskSort'); + get taskState(): FormControl { + return this.getControl('taskState'); } - get taskIncludeProcessInstance(): AbstractControl { - return this.taskListForm.get('taskIncludeProcessInstance'); + get taskSort(): FormControl { + return this.getControl('taskSort'); } - get taskStart(): AbstractControl { - return this.taskListForm.get('taskStart'); + get taskIncludeProcessInstance(): FormControl { + return this.getControl('taskIncludeProcessInstance'); } - get taskSize(): AbstractControl { - return this.taskListForm.get('taskSize'); + get taskStart(): FormControl { + return this.getControl('taskStart'); } - get taskPage(): AbstractControl { - return this.taskListForm.get('taskPage'); + get taskSize(): FormControl { + return this.getControl('taskSize'); } - get taskDueAfter(): AbstractControl { - return this.taskListForm.get('taskDueAfter'); + get taskPage(): FormControl { + return this.getControl('taskPage'); } - get taskDueBefore(): AbstractControl { - return this.taskListForm.get('taskDueBefore'); + get taskDueAfter(): FormControl { + return this.getControl('taskDueAfter'); + } + + get taskDueBefore(): FormControl { + return this.getControl('taskDueBefore'); } } diff --git a/demo-shell/src/app/components/trashcan/trashcan.component.html b/demo-shell/src/app/components/trashcan/trashcan.component.html index da34b5f5cc..8067864bc8 100644 --- a/demo-shell/src/app/components/trashcan/trashcan.component.html +++ b/demo-shell/src/app/components/trashcan/trashcan.component.html @@ -18,7 +18,7 @@ mat-icon-button (selection-node-restored)="refresh()" (restore)="onRestore($event)" - [adf-restore]="documentList.selection" + [adf-restore]="$any(documentList).selection" *ngIf="documentList.selection.length" title="{{ 'TRASHCAN.ACTIONS.RESTORE' | translate }}"> restore diff --git a/lib/content-services/src/lib/breadcrumb/breadcrumb.component.html b/lib/content-services/src/lib/breadcrumb/breadcrumb.component.html index bc742fc7e5..b038c19438 100644 --- a/lib/content-services/src/lib/breadcrumb/breadcrumb.component.html +++ b/lib/content-services/src/lib/breadcrumb/breadcrumb.component.html @@ -31,7 +31,7 @@ diff --git a/lib/content-services/src/lib/breadcrumb/breadcrumb.component.ts b/lib/content-services/src/lib/breadcrumb/breadcrumb.component.ts index 497135b13b..21cbbd20ee 100644 --- a/lib/content-services/src/lib/breadcrumb/breadcrumb.component.ts +++ b/lib/content-services/src/lib/breadcrumb/breadcrumb.component.ts @@ -190,6 +190,10 @@ export class BreadcrumbComponent implements OnInit, OnChanges, OnDestroy { event.preventDefault(); } + this.onRouteClick(route); + } + + onRouteClick(route: PathElementEntity) { if (route && !this.readOnly) { this.navigate.emit(route); diff --git a/lib/content-services/src/lib/breadcrumb/dropdown-breadcrumb.component.html b/lib/content-services/src/lib/breadcrumb/dropdown-breadcrumb.component.html index 04a8bb50da..ac88ccd77d 100644 --- a/lib/content-services/src/lib/breadcrumb/dropdown-breadcrumb.component.html +++ b/lib/content-services/src/lib/breadcrumb/dropdown-breadcrumb.component.html @@ -23,7 +23,7 @@ diff --git a/lib/content-services/src/lib/content-node-selector/content-node-selector-panel.component.html b/lib/content-services/src/lib/content-node-selector/content-node-selector-panel.component.html index a417ee5ce7..6559d14645 100644 --- a/lib/content-services/src/lib/content-node-selector/content-node-selector-panel.component.html +++ b/lib/content-services/src/lib/content-node-selector/content-node-selector-panel.component.html @@ -69,7 +69,7 @@ #documentList [adf-highlight]="searchTerm" adf-highlight-selector=".adf-name-location-cell-name" - [showHeader]="false" + [showHeader]="showHeader" [node]="nodePaging" [preselectNodes]="preselectedNodes" [maxItems]="pageSize" diff --git a/lib/content-services/src/lib/content-node-selector/content-node-selector-panel.component.ts b/lib/content-services/src/lib/content-node-selector/content-node-selector-panel.component.ts index 9146800241..35157f7c9c 100644 --- a/lib/content-services/src/lib/content-node-selector/content-node-selector-panel.component.ts +++ b/lib/content-services/src/lib/content-node-selector/content-node-selector-panel.component.ts @@ -37,7 +37,8 @@ import { FileUploadCompleteEvent, FileUploadDeleteEvent, AppConfigService, - DataSorting + DataSorting, + ShowHeaderMode } from '@alfresco/adf-core'; import { FormControl } from '@angular/forms'; import { Node, NodePaging, Pagination, SiteEntry, SitePaging, NodeEntry, QueryBody, RequestScope } from '@alfresco/js-api'; @@ -212,23 +213,23 @@ export class ContentNodeSelectorPanelComponent implements OnInit, OnDestroy { /** Emitted when the user has chosen an item. */ @Output() - select: EventEmitter = new EventEmitter(); + select = new EventEmitter(); /** Emitted when the navigation changes. */ @Output() - navigationChange: EventEmitter = new EventEmitter(); + navigationChange = new EventEmitter(); /** Emitted when the select site changes. */ @Output() - siteChange: EventEmitter = new EventEmitter(); + siteChange = new EventEmitter(); /** Emitted when search is running. */ @Output() - showingSearch: EventEmitter = new EventEmitter(); + showingSearch = new EventEmitter(); /** Emitted when current folder loaded. */ @Output() - currentFolder: EventEmitter = new EventEmitter(); + currentFolder = new EventEmitter(); /** Emitted when folder loaded. */ @Output() @@ -252,6 +253,7 @@ export class ContentNodeSelectorPanelComponent implements OnInit, OnDestroy { breadcrumbFolderTitle: string | null = null; startSiteGuid: string | null = null; hasValidQuery: boolean = false; + showHeader = ShowHeaderMode.Never; @ViewChild(InfinitePaginationComponent, { static: true }) infinitePaginationComponent: InfinitePaginationComponent; diff --git a/lib/content-services/src/lib/content-node-share/content-node-share.dialog.html b/lib/content-services/src/lib/content-node-share/content-node-share.dialog.html index 9d82828d5a..2884a56879 100644 --- a/lib/content-services/src/lib/content-node-share/content-node-share.dialog.html +++ b/lib/content-services/src/lib/content-node-share/content-node-share.dialog.html @@ -63,7 +63,7 @@ #datetimePicker (closed)="onDatetimepickerClosed()" [type]="type" - timeInterval="1"> + [timeInterval]="1"> { ).toBe(''); }); - it('should not allow expiration date action when node has no update permission', () => { + it('should not allow expiration date action when node has no update permission', async () => { node.entry.properties['qshare:sharedId'] = 'sharedId'; node.entry.allowableOperations = []; @@ -276,6 +276,7 @@ describe('ShareDialogComponent', () => { }; fixture.detectChanges(); + await fixture.whenStable(); expect(fixture.nativeElement.querySelector('input[formcontrolname="time"]').disabled).toBe(true); expect(fixture.nativeElement.querySelector('.mat-slide-toggle[data-automation-id="adf-expire-toggle"]') diff --git a/lib/content-services/src/lib/dialogs/folder.dialog.html b/lib/content-services/src/lib/dialogs/folder.dialog.html index ea1f21bd66..b911a19e32 100644 --- a/lib/content-services/src/lib/dialogs/folder.dialog.html +++ b/lib/content-services/src/lib/dialogs/folder.dialog.html @@ -10,7 +10,8 @@ placeholder="{{ 'CORE.FOLDER_DIALOG.FOLDER_NAME.LABEL' | translate }}" matInput required - [formControl]="form.controls['name']"/> + [formControlName]="'name'" + /> @@ -28,7 +29,8 @@ id="adf-folder-title-input" matInput placeholder="{{ 'CORE.FOLDER_DIALOG.FOLDER_TITLE.LABEL' | translate }}" - [formControl]="form.controls['title']"/> + [formControlName]="'title'" + /> @@ -37,7 +39,8 @@ matInput placeholder="{{ 'CORE.FOLDER_DIALOG.FOLDER_DESCRIPTION.LABEL' | translate }}" rows="4" - [formControl]="form.controls['description']"> + [formControlName]="'description'"> + diff --git a/lib/content-services/src/lib/dialogs/node-lock.dialog.html b/lib/content-services/src/lib/dialogs/node-lock.dialog.html index 087dd1aeac..7effb315cb 100644 --- a/lib/content-services/src/lib/dialogs/node-lock.dialog.html +++ b/lib/content-services/src/lib/dialogs/node-lock.dialog.html @@ -5,20 +5,20 @@
- + {{ 'CORE.FILE_DIALOG.FILE_LOCK_CHECKBOX' | translate }} "{{ nodeName }}"
- + {{ 'CORE.FILE_DIALOG.ALLOW_OTHERS_CHECKBOX' | translate }}
- + {{ 'CORE.FILE_DIALOG.TIME_LOCK_CHECKBOX' | translate }} @@ -26,8 +26,8 @@ - - + +
diff --git a/lib/content-services/src/lib/document-list/components/document-list.component.html b/lib/content-services/src/lib/document-list/components/document-list.component.html index 8926a9f0a8..d3d6ec65b8 100644 --- a/lib/content-services/src/lib/document-list/components/document-list.component.html +++ b/lib/content-services/src/lib/document-list/components/document-list.component.html @@ -20,9 +20,9 @@ (executeRowAction)="onExecuteRowAction($event)" (rowClick)="onNodeClick($event.value?.node)" (rowDblClick)="onNodeDblClick($event.value?.node)" - (row-select)="onNodeSelect($event.detail)" - (row-unselect)="onNodeUnselect($event.detail)" - (sorting-changed)="onSortingChanged($event)" + (row-select)="onNodeSelect($any($event).detail)" + (row-unselect)="onNodeUnselect($any($event).detail)" + (sorting-changed)="onSortingChanged($any($event))" [class.adf-datatable-gallery-thumbnails]="data.thumbnails">
diff --git a/lib/content-services/src/lib/document-list/components/document-list.component.ts b/lib/content-services/src/lib/document-list/components/document-list.component.ts index 272d32320e..8f8cfff1e2 100644 --- a/lib/content-services/src/lib/document-list/components/document-list.component.ts +++ b/lib/content-services/src/lib/document-list/components/document-list.component.ts @@ -130,7 +130,7 @@ export class DocumentListComponent implements OnInit, OnChanges, OnDestroy, Afte /** Toggles the header */ @Input() - showHeader: string = ShowHeaderMode.Data; + showHeader = ShowHeaderMode.Data; /** User interaction for folder navigation or file preview. * Valid values are "click" and "dblclick". Default value: "dblclick" @@ -207,7 +207,7 @@ export class DocumentListComponent implements OnInit, OnChanges, OnDestroy, Afte * docs for more details and usage examples. */ @Input() - rowStyle: string; + rowStyle: { [key: string]: any; }; /** The CSS class to apply to every row */ @Input() diff --git a/lib/content-services/src/lib/permission-manager/components/add-permission/add-permission-dialog.component.html b/lib/content-services/src/lib/permission-manager/components/add-permission/add-permission-dialog.component.html index 67ccf059a8..cb4bfd7b2c 100644 --- a/lib/content-services/src/lib/permission-manager/components/add-permission/add-permission-dialog.component.html +++ b/lib/content-services/src/lib/permission-manager/components/add-permission/add-permission-dialog.component.html @@ -14,7 +14,7 @@ @@ -56,7 +56,7 @@ - + diff --git a/lib/content-services/src/lib/upload/components/upload-button.component.spec.ts b/lib/content-services/src/lib/upload/components/upload-button.component.spec.ts index 0341f22933..9f3bfc6c48 100644 --- a/lib/content-services/src/lib/upload/components/upload-button.component.spec.ts +++ b/lib/content-services/src/lib/upload/components/upload-button.component.spec.ts @@ -17,7 +17,7 @@ import { SimpleChange } from '@angular/core'; import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { ContentService, UploadService, setupTestBed } from '@alfresco/adf-core'; +import { ContentService, UploadService, setupTestBed, FileUploadErrorEvent } from '@alfresco/adf-core'; import { of, throwError } from 'rxjs'; import { UploadButtonComponent } from './upload-button.component'; import { NodeEntry } from '@alfresco/js-api'; @@ -377,8 +377,8 @@ describe('UploadButtonComponent', () => { spyOn(contentService, 'getNode').and.returnValue(throwError('error')); - component.error.subscribe((value) => { - expect(value).toBe('FILE_UPLOAD.BUTTON.PERMISSION_CHECK_ERROR'); + component.error.subscribe((value: FileUploadErrorEvent) => { + expect(value.error).toBe('FILE_UPLOAD.BUTTON.PERMISSION_CHECK_ERROR'); done(); }); diff --git a/lib/content-services/src/lib/upload/components/upload-button.component.ts b/lib/content-services/src/lib/upload/components/upload-button.component.ts index 63a26edae1..865c2f4d37 100644 --- a/lib/content-services/src/lib/upload/components/upload-button.component.ts +++ b/lib/content-services/src/lib/upload/components/upload-button.component.ts @@ -138,9 +138,9 @@ export class UploadButtonComponent extends UploadBase implements OnInit, OnChang (res) => this.permissionValue.next(this.nodeHasPermission(res.entry, AllowableOperationsEnum.CREATE)), (error: { error: Error }) => { if (error && error.error) { - this.error.emit(error.error.message); + this.error.emit({ error: error.error.message } as any); } else { - this.error.emit('FILE_UPLOAD.BUTTON.PERMISSION_CHECK_ERROR'); + this.error.emit({ error: 'FILE_UPLOAD.BUTTON.PERMISSION_CHECK_ERROR'} as any); } } ); diff --git a/lib/content-services/src/lib/upload/components/upload-drag-area.component.html b/lib/content-services/src/lib/upload/components/upload-drag-area.component.html index 1bcf21ba73..f3381efed4 100644 --- a/lib/content-services/src/lib/upload/components/upload-drag-area.component.html +++ b/lib/content-services/src/lib/upload/components/upload-drag-area.component.html @@ -1,7 +1,7 @@
diff --git a/lib/content-services/src/lib/version-manager/version-manager.component.ts b/lib/content-services/src/lib/version-manager/version-manager.component.ts index d4d572fcdf..2bb4ea3ba6 100644 --- a/lib/content-services/src/lib/version-manager/version-manager.component.ts +++ b/lib/content-services/src/lib/version-manager/version-manager.component.ts @@ -18,7 +18,7 @@ import { Component, Input, ViewEncapsulation, ViewChild, Output, EventEmitter, OnInit } from '@angular/core'; import { Node } from '@alfresco/js-api'; import { VersionListComponent } from './version-list.component'; -import { ContentService, AlfrescoApiService } from '@alfresco/adf-core'; +import { ContentService, AlfrescoApiService, FileUploadErrorEvent } from '@alfresco/adf-core'; import { trigger, state, style, animate, transition } from '@angular/animations'; @Component({ @@ -65,19 +65,19 @@ export class VersionManagerComponent implements OnInit { /** Emitted when a file is uploaded successfully. */ @Output() - uploadSuccess: EventEmitter = new EventEmitter(); + uploadSuccess = new EventEmitter(); /** Emitted when an error occurs during upload. */ @Output() - uploadError: EventEmitter = new EventEmitter(); + uploadError = new EventEmitter(); /** Emitted when an cancelling during upload. */ @Output() - uploadCancel: EventEmitter = new EventEmitter(); + uploadCancel = new EventEmitter(); /** Emitted when viewing a version. */ @Output() - viewVersion: EventEmitter = new EventEmitter(); + viewVersion = new EventEmitter(); @ViewChild('versionList', { static: true }) versionListComponent: VersionListComponent; @@ -110,7 +110,7 @@ export class VersionManagerComponent implements OnInit { this.uploadState = 'close'; } - onUploadError(event: any) { + onUploadError(event: FileUploadErrorEvent) { this.uploadError.emit(event); } diff --git a/lib/content-services/src/lib/version-manager/version-upload.component.spec.ts b/lib/content-services/src/lib/version-manager/version-upload.component.spec.ts index 7d22f28be1..38c387a452 100644 --- a/lib/content-services/src/lib/version-manager/version-upload.component.spec.ts +++ b/lib/content-services/src/lib/version-manager/version-upload.component.spec.ts @@ -79,7 +79,7 @@ describe('VersionUploadComponent', () => { expect(component.disabled).toEqual(false); done(); }); - component.onError(true); + component.onError({} as any); fixture.detectChanges(); }); diff --git a/lib/content-services/src/lib/version-manager/version-upload.component.ts b/lib/content-services/src/lib/version-manager/version-upload.component.ts index e587e2eef9..a0261e6749 100644 --- a/lib/content-services/src/lib/version-manager/version-upload.component.ts +++ b/lib/content-services/src/lib/version-manager/version-upload.component.ts @@ -17,7 +17,7 @@ import { Component, Input, ViewEncapsulation, Output, EventEmitter, OnInit, OnDestroy } from '@angular/core'; import { Node } from '@alfresco/js-api'; -import { ContentService, FileUploadEvent, UploadService } from '@alfresco/adf-core'; +import { ContentService, FileUploadErrorEvent, FileUploadEvent, UploadService } from '@alfresco/adf-core'; import { Subject } from 'rxjs'; import { takeUntil } from 'rxjs/operators'; @@ -58,7 +58,7 @@ export class VersionUploadComponent implements OnInit, OnDestroy { /** Emitted when an error occurs. */ @Output() - error = new EventEmitter(); + error = new EventEmitter(); /** Emitted when an cancelling during upload. */ @Output() @@ -114,7 +114,7 @@ export class VersionUploadComponent implements OnInit, OnDestroy { this.success.emit(event); } - onError(event: any) { + onError(event: FileUploadErrorEvent) { this.disabled = false; this.error.emit(event); } diff --git a/lib/content-services/tsconfig.lib.json b/lib/content-services/tsconfig.lib.json index 41ac1fdcd6..f33acf8526 100644 --- a/lib/content-services/tsconfig.lib.json +++ b/lib/content-services/tsconfig.lib.json @@ -13,6 +13,7 @@ "angularCompilerOptions": { "skipTemplateCodegen": true, "strictMetadataEmit": true, - "enableResourceInlining": true + "enableResourceInlining": true, + "strictTemplates": true } } diff --git a/lib/core/card-view/components/card-view-dateitem/card-view-dateitem.component.html b/lib/core/card-view/components/card-view-dateitem/card-view-dateitem.component.html index 2c49b32e21..17f5a302f5 100644 --- a/lib/core/card-view/components/card-view-dateitem/card-view-dateitem.component.html +++ b/lib/core/card-view/components/card-view-dateitem/card-view-dateitem.component.html @@ -46,8 +46,8 @@ (dateChange)="onDateChanged($event)"> @@ -60,8 +60,8 @@ class="adf-property-field adf-dateitem-chip-list-container adf-dateitem-editable"> - {{ propertyValue }} diff --git a/lib/core/card-view/components/card-view-dateitem/card-view-dateitem.component.ts b/lib/core/card-view/components/card-view-dateitem/card-view-dateitem.component.ts index 6a18fdc7c5..d2faeaba40 100644 --- a/lib/core/card-view/components/card-view-dateitem/card-view-dateitem.component.ts +++ b/lib/core/card-view/components/card-view-dateitem/card-view-dateitem.component.ts @@ -155,5 +155,4 @@ export class CardViewDateItemComponent extends BaseCardView { ...this.property }, this.property.value); } - } diff --git a/lib/core/card-view/components/card-view-selectitem/select-filter-input/select-filter-input.component.ts b/lib/core/card-view/components/card-view-selectitem/select-filter-input/select-filter-input.component.ts index 563b784c51..634622335d 100644 --- a/lib/core/card-view/components/card-view-selectitem/select-filter-input/select-filter-input.component.ts +++ b/lib/core/card-view/components/card-view-selectitem/select-filter-input/select-filter-input.component.ts @@ -56,7 +56,7 @@ export class SelectFilterInputComponent implements OnDestroy { }); } - reset(event?: KeyboardEvent) { + reset(event?: Event) { if (event) { event.stopPropagation(); } diff --git a/lib/core/card-view/components/card-view-textitem/card-view-textitem.component.html b/lib/core/card-view/components/card-view-textitem/card-view-textitem.component.html index 781521d7c3..b85643b022 100644 --- a/lib/core/card-view/components/card-view-textitem/card-view-textitem.component.html +++ b/lib/core/card-view/components/card-view-textitem/card-view-textitem.component.html @@ -21,9 +21,9 @@ [attr.data-automation-id]="'card-textitem-value-' + property.key">