Angular 19 migration (#10795)

This commit is contained in:
dominikiwanekhyland
2025-07-03 12:09:53 +02:00
committed by GitHub
parent c7f28d54d6
commit 951b22e098
561 changed files with 9574 additions and 17354 deletions
+9 -3
View File
@@ -10,7 +10,13 @@
"createDefaultProgram": true
},
"rules": {
"jsdoc/tag-lines": ["error", "any", {"startLines": 1}],
"jsdoc/tag-lines": [
"error",
"any",
{
"startLines": 1
}
],
"@typescript-eslint/naming-convention": "warn",
"@typescript-eslint/consistent-type-assertions": "warn",
"@typescript-eslint/prefer-for-of": "warn",
@@ -43,7 +49,6 @@
"style": "camelCase"
}
],
"@angular-eslint/no-host-metadata-property": "off",
"@angular-eslint/no-input-prefix": "error",
"@typescript-eslint/consistent-type-definitions": "error",
"@typescript-eslint/dot-notation": "off",
@@ -74,7 +79,8 @@
"rxjs/no-subject-unsubscribe": "error",
"rxjs/no-subject-value": "error",
"rxjs/no-unsafe-takeuntil": "error",
"unicorn/filename-case": "error"
"unicorn/filename-case": "error",
"@angular-eslint/prefer-standalone": "off"
}
},
{
@@ -38,7 +38,6 @@ describe('AppsListComponent', () => {
let getAppsSpy: jasmine.Spy;
@Component({
standalone: true,
imports: [CustomEmptyContentTemplateDirective, AppsListComponent],
template: `
<adf-apps>
@@ -38,7 +38,6 @@ export const APP_LIST_LAYOUT_GRID: string = 'GRID';
@Component({
selector: 'adf-apps',
standalone: true,
imports: [
CommonModule,
MatListModule,
@@ -27,7 +27,6 @@ import { ProcessTestingModule } from '../../testing/process.testing.module';
@Component({
selector: 'adf-dialog-test',
standalone: true,
template: ''
})
export class DialogSelectAppTestComponent {
@@ -25,7 +25,6 @@ import { MatButtonModule } from '@angular/material/button';
@Component({
selector: 'adf-select-apps-dialog',
standalone: true,
imports: [CommonModule, TranslatePipe, MatDialogModule, MatSelectModule, MatButtonModule],
templateUrl: './select-apps-dialog.component.html',
styleUrls: ['./select-apps-dialog.component.scss'],
@@ -25,7 +25,6 @@ import { MatIconModule } from '@angular/material/icon';
@Component({
selector: 'adf-create-process-attachment',
standalone: true,
imports: [CommonModule, UploadDirective, MatButtonModule, MatIconModule],
styleUrls: ['./create-process-attachment.component.css'],
templateUrl: './create-process-attachment.component.html'
@@ -25,7 +25,6 @@ import { MatIconModule } from '@angular/material/icon';
@Component({
selector: 'adf-create-task-attachment',
standalone: true,
imports: [CommonModule, MatButtonModule, UploadDirective, MatIconModule],
styleUrls: ['./create-task-attachment.component.scss'],
templateUrl: './create-task-attachment.component.html'
@@ -240,7 +240,6 @@ describe('ProcessAttachmentListComponent', () => {
});
@Component({
standalone: true,
imports: [EmptyListHeaderDirective, EmptyListComponent, ProcessAttachmentListComponent],
template: `
<adf-process-attachment-list>
@@ -44,7 +44,6 @@ import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
@Component({
selector: 'adf-process-attachment-list',
standalone: true,
imports: [
CommonModule,
TranslatePipe,
@@ -287,7 +287,8 @@ describe('TaskAttachmentList', () => {
<div adf-empty-list-header class="adf-empty-list-header">Custom header</div>
</adf-empty-list>
</adf-task-attachment-list>
`
`,
standalone: false
})
class CustomEmptyTemplateComponent {}
@@ -45,7 +45,6 @@ import { TranslatePipe } from '@ngx-translate/core';
@Component({
selector: 'adf-task-attachment-list',
standalone: true,
imports: [
CommonModule,
MatProgressSpinnerModule,
@@ -19,7 +19,6 @@ import { Component } from '@angular/core';
@Component({
selector: 'adf-form-custom-outcomes',
standalone: true,
template: '<ng-content />'
})
export class FormCustomOutcomesComponent {}
@@ -22,7 +22,6 @@ import { DataColumnComponent, DataColumnListComponent, DataTableComponent } from
@Component({
selector: 'adf-form-list',
standalone: true,
imports: [CommonModule, DataTableComponent, DataColumnListComponent, DataColumnComponent],
templateUrl: './form-list.component.html',
encapsulation: ViewEncapsulation.None
@@ -57,7 +57,8 @@ describe('FormComponent', () => {
@Component({
selector: 'adf-custom-widget',
template: '<div></div>'
template: '<div></div>',
standalone: false
})
// eslint-disable-next-line @angular-eslint/component-class-suffix
class CustomWidget {
@@ -986,7 +987,6 @@ describe('FormComponent', () => {
});
@Component({
standalone: true,
imports: [FormCustomOutcomesComponent, MatButtonModule, FormComponent],
selector: 'adf-form-with-custom-outcomes',
template: ` <adf-form #adfForm>
@@ -62,7 +62,6 @@ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
@Component({
selector: 'adf-form',
standalone: true,
imports: [CommonModule, MatCardModule, MatButtonModule, MatIconModule, TranslatePipe, FormRendererComponent, FormatSpacePipe],
templateUrl: './form.component.html',
styleUrls: ['./form.component.scss'],
@@ -39,7 +39,6 @@ import { MatIconModule } from '@angular/material/icon';
@Component({
selector: 'adf-start-form',
standalone: true,
imports: [CommonModule, TranslatePipe, MatButtonModule, MatCardModule, FormRendererComponent, MatIconModule],
templateUrl: './start-form.component.html',
styleUrls: ['./start-form.component.scss'],
@@ -35,7 +35,6 @@ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
@Component({
selector: 'adf-attach-file-widget-dialog',
standalone: true,
imports: [CommonModule, MatDialogModule, LoginDialogPanelComponent, MatButtonModule, TranslatePipe, ContentNodeSelectorPanelComponent],
templateUrl: './attach-file-widget-dialog.component.html',
styleUrls: ['./attach-file-widget-dialog.component.scss'],
@@ -38,7 +38,6 @@ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
@Component({
selector: 'attach-widget',
standalone: true,
imports: [CommonModule, TranslatePipe, MatIconModule, MatButtonModule, MatMenuModule, MatListModule, ErrorWidgetComponent, AlfrescoIconComponent],
templateUrl: './attach-file-widget.component.html',
styleUrls: ['./attach-file-widget.component.scss'],
@@ -29,7 +29,6 @@ import { MatButtonModule } from '@angular/material/button';
@Component({
selector: 'attach-folder-widget',
standalone: true,
imports: [CommonModule, TranslatePipe, MatIconModule, MatLineModule, MatButtonModule, ErrorWidgetComponent],
templateUrl: './attach-folder-widget.component.html',
styleUrls: ['./attach-folder-widget.component.scss'],
@@ -27,7 +27,6 @@ import { MatButtonModule } from '@angular/material/button';
@Component({
selector: 'adf-content',
standalone: true,
imports: [CommonModule, TranslatePipe, MatCardModule, MatIconModule, MatButtonModule],
templateUrl: './content.widget.html',
styleUrls: ['./content.widget.scss'],
@@ -22,7 +22,6 @@ import { ContentWidgetComponent } from './content.widget';
@Component({
selector: 'adf-form-document-widget',
standalone: true,
imports: [CommonModule, ContentWidgetComponent],
templateUrl: './document.widget.html',
host: {
@@ -39,7 +39,6 @@ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
@Component({
selector: 'dropdown-widget',
standalone: true,
imports: [CommonModule, TranslatePipe, MatFormFieldModule, MatSelectModule, ReactiveFormsModule, ErrorWidgetComponent],
templateUrl: './dropdown.widget.html',
styleUrls: ['./dropdown.widget.scss'],
@@ -31,7 +31,6 @@ import { RowEditorComponent } from './editors/row-editor/row.editor';
@Component({
selector: 'dynamic-table-widget',
standalone: true,
imports: [CommonModule, TranslatePipe, MatCheckboxModule, MatButtonModule, MatIconModule, RowEditorComponent, ErrorWidgetComponent],
templateUrl: './dynamic-table.widget.html',
styleUrls: ['./dynamic-table.widget.scss'],
@@ -27,7 +27,6 @@ import { MatInputModule } from '@angular/material/input';
@Component({
selector: 'adf-amount-editor',
standalone: true,
imports: [CommonModule, MatFormFieldModule, MatInputModule],
templateUrl: './amount.editor.html',
styleUrls: ['./amount.editor.scss']
@@ -26,7 +26,6 @@ import { MatCheckboxModule } from '@angular/material/checkbox';
@Component({
selector: 'adf-boolean-editor',
standalone: true,
imports: [CommonModule, MatCheckboxModule],
templateUrl: './boolean.editor.html',
styleUrls: ['./boolean.editor.scss']
@@ -30,7 +30,6 @@ import { FormsModule } from '@angular/forms';
@Component({
selector: 'adf-date-editor',
standalone: true,
imports: [CommonModule, MatFormFieldModule, MatDatepickerModule, MatInputModule, FormsModule],
templateUrl: './date.editor.html',
providers: [
@@ -35,7 +35,6 @@ import { FormsModule } from '@angular/forms';
@Component({
selector: 'adf-datetime-editor',
standalone: true,
imports: [CommonModule, MatFormFieldModule, MatInputModule, MatDatetimepickerModule, FormsModule],
templateUrl: './datetime.editor.html',
providers: [
@@ -32,7 +32,6 @@ import { FormsModule } from '@angular/forms';
@Component({
selector: 'adf-dropdown-editor',
standalone: true,
imports: [CommonModule, MatFormFieldModule, MatSelectModule, FormsModule],
templateUrl: './dropdown.editor.html',
styleUrls: ['./dropdown.editor.scss']
@@ -34,7 +34,6 @@ import { MatButtonModule } from '@angular/material/button';
@Component({
selector: 'row-editor',
standalone: true,
imports: [
CommonModule,
DropdownEditorComponent,
@@ -27,7 +27,6 @@ import { MatInputModule } from '@angular/material/input';
@Component({
selector: 'adf-text-editor',
standalone: true,
imports: [CommonModule, MatFormFieldModule, MatInputModule],
templateUrl: './text.editor.html',
styleUrls: ['./text.editor.scss']
@@ -25,7 +25,6 @@ import { AlfrescoViewerComponent } from '@alfresco/adf-content-services';
@Component({
selector: 'file-viewer-widget',
standalone: true,
imports: [CommonModule, TranslatePipe, AlfrescoViewerComponent, ErrorWidgetComponent],
templateUrl: './file-viewer.widget.html',
styleUrls: ['./file-viewer.widget.scss'],
@@ -33,7 +33,6 @@ import { MatIconModule } from '@angular/material/icon';
@Component({
selector: 'functional-group-widget',
standalone: true,
imports: [
CommonModule,
MatFormFieldModule,
@@ -34,7 +34,6 @@ import { MatAutocompleteModule } from '@angular/material/autocomplete';
@Component({
selector: 'people-widget',
standalone: true,
imports: [
CommonModule,
TranslatePipe,
@@ -28,7 +28,6 @@ import { FormsModule } from '@angular/forms';
@Component({
selector: 'radio-buttons-widget',
standalone: true,
imports: [CommonModule, TranslatePipe, MatRadioModule, FormsModule, ErrorWidgetComponent],
templateUrl: './radio-buttons.widget.html',
styleUrls: ['./radio-buttons.widget.scss'],
@@ -31,7 +31,6 @@ import { MatInputModule } from '@angular/material/input';
@Component({
selector: 'typeahead-widget',
standalone: true,
imports: [CommonModule, TranslatePipe, MatFormFieldModule, FormsModule, MatAutocompleteModule, ErrorWidgetComponent, MatInputModule],
templateUrl: './typeahead.widget.html',
styleUrls: ['./typeahead.widget.scss'],
@@ -30,7 +30,6 @@ import { MatIconModule } from '@angular/material/icon';
@Component({
selector: 'upload-widget',
standalone: true,
imports: [CommonModule, TranslatePipe, MatListModule, MatButtonModule, MatIconModule, ErrorWidgetComponent],
templateUrl: './upload.widget.html',
styleUrls: ['./upload.widget.scss'],
@@ -23,7 +23,6 @@ import { CommonModule } from '@angular/common';
@Component({
selector: 'adf-people-list',
standalone: true,
imports: [CommonModule, DataTableComponent],
templateUrl: './people-list.component.html',
styleUrls: ['./people-list.component.scss']
@@ -31,7 +31,6 @@ import { PeopleListComponent } from '../people-list/people-list.component';
@Component({
selector: 'adf-people-search-field',
standalone: true,
imports: [
CommonModule,
MatFormFieldModule,
@@ -27,7 +27,6 @@ import { MatButtonModule } from '@angular/material/button';
@Component({
selector: 'adf-people-search',
standalone: true,
imports: [CommonModule, TranslatePipe, PeopleSearchFieldComponent, MatButtonModule],
templateUrl: './people-search.component.html',
styleUrls: ['./people-search.component.scss'],
@@ -32,7 +32,6 @@ const DEFAULT_ASSIGNEE_PLACEHOLDER = 'ADF_TASK_LIST.PEOPLE.ASSIGNEE';
@Component({
selector: 'adf-people-selector',
standalone: true,
imports: [CommonModule, PeopleSearchFieldComponent, MatButtonModule, MatIconModule],
templateUrl: './people-selector.component.html',
styleUrls: ['./people-selector.component.scss'],
@@ -31,7 +31,6 @@ import { DataColumnComponent, DataColumnListComponent } from '@alfresco/adf-core
@Component({
selector: 'adf-people',
standalone: true,
imports: [
CommonModule,
MatCardModule,
@@ -22,8 +22,6 @@ import { CommonModule } from '@angular/common';
@Component({
selector: 'adf-process-instance-comments',
standalone: true,
imports: [CommonModule, CommentsComponent],
providers: [
{
@@ -26,7 +26,6 @@ import { ProcessAuditDirective } from '@alfresco/adf-process-services';
@Component({
selector: 'adf-basic-button',
standalone: true,
imports: [ProcessAuditDirective],
template: ` <button
id="auditButton"
@@ -27,7 +27,6 @@ const PDF_FORMAT: string = 'pdf';
@Directive({
// eslint-disable-next-line @angular-eslint/directive-selector
selector: 'button[adf-process-audit]',
standalone: true,
host: {
role: 'button',
'(click)': 'onClickAudit()'
@@ -30,7 +30,6 @@ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
@Component({
selector: 'adf-process-instance-filters',
standalone: true,
imports: [CommonModule, TranslatePipe, MatButtonModule, IconComponent],
templateUrl: './process-filters.component.html',
styleUrls: ['./process-filters.component.scss'],
@@ -29,7 +29,6 @@ import { ProcessCommentsComponent } from '../../../process-comments';
@Component({
selector: 'adf-process-instance-details',
standalone: true,
imports: [
CommonModule,
TranslatePipe,
@@ -31,7 +31,6 @@ import { MatCardModule } from '@angular/material/card';
@Component({
selector: 'adf-process-instance-header',
standalone: true,
imports: [CommonModule, MatCardModule, CardViewComponent],
templateUrl: './process-instance-header.component.html',
styleUrls: ['./process-instance-header.component.css']
@@ -33,7 +33,6 @@ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
@Component({
selector: 'adf-process-instance-tasks',
standalone: true,
imports: [CommonModule, MatButtonModule, TranslatePipe, MatChipsModule, MatListModule, MatIconModule, MatDialogModule, StartFormComponent],
templateUrl: './process-instance-tasks.component.html',
styleUrls: ['./process-instance-tasks.component.css']
@@ -465,7 +465,6 @@ describe('ProcessInstanceListComponent', () => {
});
@Component({
standalone: true,
imports: [ProcessInstanceListComponent, DataColumnListComponent, DataColumnComponent, FullNamePipe],
template: ` <adf-process-instance-list #processListComponentInstance>
<data-columns>
@@ -508,7 +507,6 @@ describe('CustomProcessListComponent', () => {
});
@Component({
standalone: true,
imports: [CustomEmptyContentTemplateDirective, ProcessInstanceListComponent],
template: `
<adf-process-instance-list [appId]="1">
@@ -551,7 +549,6 @@ describe('Process List: Custom EmptyTemplateComponent', () => {
});
@Component({
standalone: true,
imports: [ProcessInstanceListComponent, DataColumnComponent, DataColumnListComponent, FullNamePipe],
template: ` <adf-process-instance-list
[appId]="appId"
@@ -71,7 +71,6 @@ export const processPresetsDefaultModel = {
@Component({
selector: 'adf-process-instance-list',
standalone: true,
imports: [
CommonModule,
MatProgressSpinnerModule,
@@ -62,7 +62,6 @@ const PROCESS_DEFINITION_IDENTIFIER_REG_EXP = new RegExp('%{processdefinition}',
@Component({
selector: 'adf-start-process',
standalone: true,
imports: [
CommonModule,
MatProgressSpinnerModule,
@@ -22,7 +22,6 @@ import { CommonModule } from '@angular/common';
@Component({
selector: 'adf-task-comments',
standalone: true,
imports: [CommonModule, CommentsComponent],
templateUrl: './task-comments.component.html',
encapsulation: ViewEncapsulation.None,
@@ -31,7 +31,6 @@ import { FormComponent } from '../../../form';
@Component({
selector: 'adf-attach-form',
standalone: true,
imports: [CommonModule, MatCardModule, TranslatePipe, MatFormFieldModule, MatSelectModule, ReactiveFormsModule, MatButtonModule, FormComponent],
templateUrl: './attach-form.component.html',
styleUrls: ['./attach-form.component.scss']
@@ -30,7 +30,6 @@ import { FormsModule } from '@angular/forms';
@Component({
selector: 'adf-checklist',
standalone: true,
imports: [
CommonModule,
TranslatePipe,
@@ -42,7 +42,6 @@ const MAX_LENGTH = 255;
@Component({
selector: 'adf-start-task',
standalone: true,
imports: [
CommonModule,
TranslatePipe,
@@ -61,7 +61,6 @@ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
/** @deprecated no longer used anywhere, and can be safely removed */
@Component({
selector: 'adf-task-details',
standalone: true,
imports: [
CommonModule,
TranslatePipe,
@@ -32,7 +32,6 @@ import { forkJoin, Observable } from 'rxjs';
@Component({
selector: 'adf-task-filters',
standalone: true,
imports: [CommonModule, TranslatePipe, MatButtonModule, IconComponent],
templateUrl: './task-filters.component.html',
styleUrls: ['./task-filters.component.scss'],
@@ -24,7 +24,6 @@ import { ClaimTaskDirective } from '@alfresco/adf-process-services';
describe('ClaimTaskDirective', () => {
@Component({
standalone: true,
imports: [ClaimTaskDirective],
selector: 'adf-claim-test-component',
template: '<button adf-claim-task [taskId]="taskId" (success)="onClaim($event)">Claim</button>'
@@ -73,21 +72,19 @@ describe('ClaimTaskDirective', () => {
expect(unclaimSpy).toHaveBeenCalledWith(fixture.componentInstance.taskId);
});
});
// eslint-disable @angular-eslint/template/elements-content
describe('Claim Task Directive validation errors', () => {
@Component({
standalone: true,
imports: [ClaimTaskDirective],
selector: 'adf-claim-no-fields-validation-component',
template: '<button adf-claim-task></button>'
template: '<button adf-claim-task>Task</button>'
})
class ClaimTestMissingInputDirectiveComponent {}
@Component({
standalone: true,
imports: [ClaimTaskDirective],
selector: 'adf-claim-no-taskid-validation-component',
template: '<button adf-claim-task [taskId]=""></button>'
template: '<button adf-claim-task [taskId]="">Task</button>'
})
class ClaimTestMissingTaskIdDirectiveComponent {}
@@ -20,8 +20,7 @@ import { TaskListService } from '../../services/tasklist.service';
@Directive({
// eslint-disable-next-line @angular-eslint/directive-selector
selector: '[adf-claim-task]',
standalone: true
selector: '[adf-claim-task]'
})
export class ClaimTaskDirective implements OnInit {
/** (Required) The id of the task. */
@@ -41,7 +41,6 @@ import { FormComponent, FormCustomOutcomesComponent } from '../../../form';
@Component({
selector: 'adf-task-form',
standalone: true,
imports: [
CommonModule,
MatCardModule,
@@ -24,7 +24,6 @@ import { UnclaimTaskDirective } from '@alfresco/adf-process-services';
describe('UnclaimTaskDirective', () => {
@Component({
standalone: true,
imports: [UnclaimTaskDirective],
selector: 'adf-unclaim-test-component',
template: '<button adf-unclaim-task [taskId]="taskId" (success)="onUnclaim($event)">Unclaim</button>'
@@ -76,18 +75,16 @@ describe('UnclaimTaskDirective', () => {
describe('Claim Task Directive validation errors', () => {
@Component({
standalone: true,
imports: [UnclaimTaskDirective],
selector: 'adf-unclaim-no-fields-validation-component',
template: '<button adf-unclaim-task></button>'
template: '<button adf-unclaim-task>Task</button>'
})
class ClaimTestMissingInputDirectiveComponent {}
@Component({
standalone: true,
imports: [UnclaimTaskDirective],
selector: 'adf-claim-no-taskid-validation-component',
template: '<button adf-unclaim-task [taskId]=""></button>'
template: '<button adf-unclaim-task [taskId]="">Task</button>'
})
class ClaimTestMissingTaskIdDirectiveComponent {}
@@ -20,8 +20,7 @@ import { TaskListService } from '../../services/tasklist.service';
@Directive({
// eslint-disable-next-line @angular-eslint/directive-selector
selector: '[adf-unclaim-task]',
standalone: true
selector: '[adf-unclaim-task]'
})
export class UnclaimTaskDirective implements OnInit {
/** (Required) The id of the task. */
@@ -45,7 +45,6 @@ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
@Component({
selector: 'adf-task-header',
standalone: true,
imports: [CommonModule, MatCardModule, MatButtonModule, UnclaimTaskDirective, ClaimTaskDirective, TranslatePipe, CardViewComponent],
templateUrl: './task-header.component.html',
styleUrls: ['./task-header.component.scss'],
@@ -647,7 +647,6 @@ describe('TaskListComponent', () => {
});
@Component({
standalone: true,
imports: [DataColumnComponent, DataColumnListComponent, TaskListComponent, FullNamePipe],
template: ` <adf-tasklist #taskList>
<data-columns>
@@ -694,7 +693,6 @@ describe('CustomTaskListComponent', () => {
});
@Component({
standalone: true,
imports: [CustomEmptyContentTemplateDirective, TaskListComponent],
template: `
<adf-tasklist [appId]="1">
@@ -738,7 +736,6 @@ describe('Task List: Custom EmptyTemplateComponent', () => {
});
@Component({
standalone: true,
imports: [CommonModule, TaskListComponent, DataColumnComponent, DataColumnListComponent, FullNamePipe],
template: ` <adf-tasklist [showContextMenu]="true" (showRowContextMenu)="onShowRowContextMenu($event)" #taskList>
<data-columns>
@@ -60,7 +60,6 @@ export const PRESET_KEY = 'adf-task-list.presets';
@Component({
selector: 'adf-tasklist',
standalone: true,
imports: [
CommonModule,
MatProgressSpinnerModule,
@@ -23,7 +23,6 @@ import { MatButtonModule } from '@angular/material/button';
@Component({
selector: 'adf-task-standalone',
standalone: true,
imports: [CommonModule, TranslatePipe, MatCardModule, MatButtonModule],
templateUrl: './task-standalone.component.html',
styleUrls: ['./task-standalone.component.scss'],