[ADF-5146] Upgrade to Angular 10 (#5834)

* remove useless module

* upgrade to angular 8

* upgrade material to v8

* upgrade adf libs

* migrate demo shell to v8

* upgrade to angular 9

* upgrade material to v9

* remove hammer

* upgrade nx

* upgrade datetime picker

* upgrade flex layout

* update core api

* remove entry components

* code fixes

* upgrade testbed usage

* code fixes

* remove unnecessary core-js from tests

* upgrade CLI

* ts config fixes

* fix builds

* fix testing config

* compile fixes

* fix demo shell dev setup

* fix core tests

* fix card view import

* upgrade nx

* disable smart builds for now

* remove fdescribe

* restore smart builds

* fix issues

* unify tsconfigs and fix newly found issues

* fix configuration and cleanup package scripts

* improved production build from the same config

* use ADF libs directly instead of node_modules

* disable smart build

* single app configuration (angular)

* fix core build

* fix build scripts

* lint fixes

* fix linting setup

* fix linting rules

* various fixes

* disable affected libs for unit tests

* cleanup insights package.json

* simplify smart-build

* fix content tests

* fix tests

* test fixes

* fix tests

* fix test

* fix tests

* disable AppExtensionsModule (monaco example)

* remove monaco extension module

* upgrade bundle check rules

* fix insights tests and karma config

* fix protractor config

* e2e workaround

* upgrade puppeteer and split linting and build

* reusable resources config

* update protractor config

* fix after rebase

* fix protractor config

* fix e2e tsconfig

* update e2e setup

* Save demoshell artifact on S3 and remove travis cache

* Push the libs on S3 and fetch before releasing it

* Add deps

* Add dependencies among libs and run only affected unit test and build

* fix the travis stage name

* fix after renaming dev to demoshell

* force the order of the projects

* remove unused dependencies

* fix content e2e script

* exit codes fix

* add extra exit codes to core e2e

* postinstall hook and package cleanup

* cleanup packages

* remove deprecated code and dependency on router

* improve bundle analyzer script

* minor code fixes

* update spec

* fix code after rebase

* upgrade protractor after rebase

* fix e2e mapping lib

* Update tsconfig.e2e.json

* update e2e tsconfig

* fix angular config

* fix protractor runs

* cache dist folder for libs

* update material selectors for dropdowns

* selector fixes

* remove duplicated e2e that have unit tests already

* fix login selector

* fix e2e

* fix test

* fix import issues

* fix selector

* cleanup old monaco extension files

* cleanup demo shell login

* add protractor max retries

* disable customisations of protractor

* fix login validation

* fix after rebase

* fix after rebase, disable latest versions of libs

* Hide the report tab and rollback the localstorage

* rename protractor config back to js

* restore lint as part of build

* cleanup code

* do not copy anything to node_modules on dist test

* fix unit tests

* config fixes

* fix code

* fix code after rebase

* fix tests

* remove existing words from spellcheck

* remove useless directive decorators

* update package.json after rebase

* add js-api back

* code fixes

* add missing export

* update configs

* fix code

* try fix the sso login test

* fix

* remove puppeteer unit

* fix e2e script

* fix

* make provider easy

* fix routes module before upgrade

* fix unit tests

* upgrade angular cli

* upgrade to angular 10

Co-authored-by: maurizio vitale <maurizio.vitale@alfresco.com>
Co-authored-by: Eugenio Romano <eugenio.romano@alfresco.com>
Co-authored-by: Eugenio Romano <eromano@users.noreply.github.com>
This commit is contained in:
Denys Vuika
2020-07-03 13:01:05 +01:00
committed by GitHub
parent 2f0a585273
commit cd2b489100
579 changed files with 15689 additions and 10745 deletions

View File

@@ -1,27 +0,0 @@
/*!
* @license
* Copyright 2019 Alfresco Software, Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { NgModule } from '@angular/core';
import { AcaMonacoModule } from 'adf-monaco-extension';
@NgModule({
imports: [
AcaMonacoModule
]
})
export class AppExtensionsModule {
}

View File

@@ -22,7 +22,7 @@ import {
PageTitleService
} from '@alfresco/adf-core';
import { Router } from '@angular/router';
import { MatDialog } from '@angular/material';
import { MatDialog } from '@angular/material/dialog';
@Component({
selector: 'app-root',

View File

@@ -47,10 +47,8 @@ import { AppsViewComponent } from './components/process-service/apps-view.compon
import { FilesComponent } from './components/files/files.component';
import { VersionManagerDialogAdapterComponent } from './components/files/version-manager-dialog-adapter.component';
import { MetadataDialogAdapterComponent } from './components/files/metadata-dialog-adapter.component';
import { ThemePickerModule } from './components/theme-picker/theme-picker';
import { routing } from './app.routes';
import { appRoutes } from './app.routes';
import { TaskAttachmentsComponent } from './components/process-service/task-attachments.component';
import { ProcessAttachmentsComponent } from './components/process-service/process-attachments.component';
import { SharedLinkViewComponent } from './components/shared-link-view/shared-link-view.component';
@@ -60,7 +58,6 @@ import { MonacoEditorModule } from 'ngx-monaco-editor';
import { ContentModule } from '@alfresco/adf-content-services';
import { InsightsModule } from '@alfresco/adf-insights';
import { ProcessModule } from '@alfresco/adf-process-services';
import { AppExtensionsModule } from './app-extension.module';
import { TreeViewSampleComponent } from './components/tree-view/tree-view-sample.component';
import { CloudLayoutComponent } from './components/cloud/cloud-layout.component';
import { AppsCloudDemoComponent } from './components/cloud/apps-cloud-demo.component';
@@ -81,9 +78,9 @@ import { FormCloudDemoComponent } from './components/app-layout/cloud/form-demo/
import { environment } from '../environments/environment';
import { AppCloudSharedModule } from './components/cloud/shared/cloud.shared.module';
import { DemoErrorComponent } from './components/error/demo-error.component';
import {
ProcessServicesCloudModule
} from '@alfresco/adf-process-services-cloud';
import { ProcessServicesCloudModule } from '@alfresco/adf-process-services-cloud';
import { FilteredSearchComponent } from './components/files/filtered-search.component';
import { RouterModule } from '@angular/router';
import { registerLocaleData } from '@angular/common';
import localeFr from '@angular/common/locales/fr';
@@ -102,7 +99,6 @@ import localePl from '@angular/common/locales/pl';
import localeFi from '@angular/common/locales/fi';
import localeDa from '@angular/common/locales/da';
import localeSv from '@angular/common/locales/sv';
import { FilteredSearchComponent } from './components/files/filtered-search.component';
registerLocaleData(localeFr);
registerLocaleData(localeDe);
@@ -126,11 +122,10 @@ registerLocaleData(localeSv);
BrowserModule,
environment.e2e ? NoopAnimationsModule : BrowserAnimationsModule,
ReactiveFormsModule,
routing,
RouterModule.forRoot(appRoutes, { initialNavigation: true }),
FormsModule,
HttpClientModule,
MaterialModule,
AppExtensionsModule,
FlexLayoutModule,
TranslateModule.forRoot(),
CoreModule.forRoot(),
@@ -215,10 +210,6 @@ registerLocaleData(localeSv);
}
}
],
entryComponents: [
VersionManagerDialogAdapterComponent,
MetadataDialogAdapterComponent
],
bootstrap: [AppComponent]
})
export class AppModule {

View File

@@ -15,15 +15,8 @@
* limitations under the License.
*/
import { ModuleWithProviders } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import {
AuthGuard,
AuthGuardEcm,
ErrorContentComponent,
AuthGuardBpm,
AuthGuardSsoRoleService
} from '@alfresco/adf-core';
import { Routes } from '@angular/router';
import { AuthGuard, AuthGuardEcm, ErrorContentComponent, AuthGuardBpm, AuthGuardSsoRoleService } from '@alfresco/adf-core';
import { AppLayoutComponent } from './components/app-layout/app-layout.component';
import { HomeComponent } from './components/home/home.component';
import { LogoutComponent } from './components/logout/logout.component';
@@ -60,12 +53,13 @@ import { ConfirmDialogExampleComponent } from './components/confirm-dialog/confi
import { DemoErrorComponent } from './components/error/demo-error.component';
import { TaskHeaderCloudDemoComponent } from './components/cloud/task-header-cloud-demo.component';
import { FilteredSearchComponent } from './components/files/filtered-search.component';
export const appRoutes: Routes = [
{ path: 'login', loadChildren: 'app/components/login/login.module#AppLoginModule' },
{ path: 'login', loadChildren: () => import('./components/login/login.module').then(m => m.AppLoginModule) },
{ path: 'logout', component: LogoutComponent },
{
path: 'settings',
loadChildren: 'app/components/settings/settings.module#AppSettingsModule'
loadChildren: () => import('./components/settings/settings.module').then(m => m.AppSettingsModule)
},
{
path: 'files/:nodeId/view',
@@ -76,7 +70,7 @@ export const appRoutes: Routes = [
children: [
{
path: '',
loadChildren: 'app/components/file-view/file-view.module#FileViewModule'
loadChildren: () => import('./components/file-view/file-view.module').then(m => m.FileViewModule)
}
]
},
@@ -88,7 +82,7 @@ export const appRoutes: Routes = [
children: [
{
path: '',
loadChildren: 'app/components/file-view/file-view.module#FileViewModule'
loadChildren: () => import('./components/file-view/file-view.module').then(m => m.FileViewModule)
}
]
},
@@ -101,14 +95,14 @@ export const appRoutes: Routes = [
{
path: 'breadcrumb',
canActivate: [AuthGuardEcm],
loadChildren: 'app/components/breadcrumb-demo/breadcrumb-demo.module#AppBreadcrumbModule'
loadChildren: () => import('./components/breadcrumb-demo/breadcrumb-demo.module').then(m => m.AppBreadcrumbModule)
},
{
path: 'notifications',
children: [
{
path: '',
loadChildren: 'app/components/notifications/notifications.module#AppNotificationsModule'
loadChildren: () => import('./components/notifications/notifications.module').then(m => m.AppNotificationsModule)
}
]
},
@@ -117,7 +111,7 @@ export const appRoutes: Routes = [
children: [
{
path: '',
loadChildren: 'app/components/config-editor/config-editor.module#AppConfigEditorModule'
loadChildren: () => import('./components/config-editor/config-editor.module').then(m => m.AppConfigEditorModule)
}
]
},
@@ -126,7 +120,7 @@ export const appRoutes: Routes = [
children: [
{
path: '',
loadChildren: 'app/components/pipes/pipes.module#AppPipesModule'
loadChildren: () => import('./components/pipes/pipes.module').then(m => m.AppPipesModule)
}
]
},
@@ -135,7 +129,7 @@ export const appRoutes: Routes = [
children: [
{
path: '',
loadChildren: 'app/components/card-view/card-view.module#AppCardViewModule'
loadChildren: () => import('./components/card-view/card-view.module').then(m => m.AppCardViewModule)
}
]
},
@@ -144,7 +138,7 @@ export const appRoutes: Routes = [
children: [
{
path: '',
loadChildren: 'app/components/sites/sites.module#SitesModule'
loadChildren: () => import('./components/sites/sites.module').then(m => m.SitesModule)
}
]
},
@@ -153,7 +147,7 @@ export const appRoutes: Routes = [
children: [
{
path: '',
loadChildren: 'app/components/header-data/header-data.module#AppHeaderDataModule'
loadChildren: () => import('./components/header-data/header-data.module').then(m => m.AppHeaderDataModule)
}
]
},
@@ -184,7 +178,7 @@ export const appRoutes: Routes = [
},
{
path: 'community',
loadChildren: 'app/components/cloud/community/community.module#AppCommunityModule'
loadChildren: () => import('./components/cloud/community/community.module').then(m => m.AppCommunityModule)
},
{
path: ':appName',
@@ -232,7 +226,7 @@ export const appRoutes: Routes = [
},
{
path: 'node-selector',
loadChildren: 'app/components/content-node-selector/content-node-selector.module#AppContentNodeSelectorModule'
loadChildren: () => import('./components/content-node-selector/content-node-selector.module').then(m => m.AppContentNodeSelectorModule)
},
{
path: 'confirm-dialog',
@@ -240,12 +234,12 @@ export const appRoutes: Routes = [
},
{
path: 'settings-layout',
loadChildren: 'app/components/settings/settings.module#AppSettingsModule'
loadChildren: () => import('./components/settings/settings.module').then(m => m.AppSettingsModule)
},
{
path: 'trashcan',
canActivate: [AuthGuardEcm],
loadChildren: 'app/components/trashcan/trashcan.module#AppTrashcanModule'
loadChildren: () => import('./components/trashcan/trashcan.module').then(m => m.AppTrashcanModule)
},
{
path: 'files',
@@ -270,7 +264,7 @@ export const appRoutes: Routes = [
{
path: 'extensions/document-list/presets',
canActivate: [AuthGuardEcm],
loadChildren: './components/document-list/extension-presets/extension-presets.module#ExtensionPresetsModule'
loadChildren: () => import('./components/document-list/extension-presets/extension-presets.module').then(m => m.ExtensionPresetsModule)
},
{
path: 'files/:id',
@@ -285,16 +279,16 @@ export const appRoutes: Routes = [
{
path: 'dl-custom-sources',
canActivate: [AuthGuardEcm],
loadChildren: 'app/components/files/custom-sources.module#AppCustomSourcesModule'
loadChildren: () => import('./components/files/custom-sources.module').then(m => m.AppCustomSourcesModule)
},
{
path: 'datatable',
loadChildren: 'app/components/datatable/datatable.module#AppDataTableModule'
loadChildren: () => import('./components/datatable/datatable.module').then(m => m.AppDataTableModule)
},
{
path: 'datatable/dnd',
loadChildren: './components/datatable/drag-and-drop/datatable-dnd.module#AppDataTableDndModule'
loadChildren: () => import('./components/datatable/drag-and-drop/datatable-dnd.module').then(m => m.AppDataTableDndModule)
},
{
path: 'search',
@@ -368,17 +362,17 @@ export const appRoutes: Routes = [
{
path: 'webscript',
canActivate: [AuthGuardEcm],
loadChildren: 'app/components/webscript/webscript.module#AppWebScriptModule'
loadChildren: () => import('./components/webscript/webscript.module').then(m => m.AppWebScriptModule)
},
{
path: 'tag',
canActivate: [AuthGuardEcm],
loadChildren: 'app/components/tag/tag.module#AppTagModule'
loadChildren: () => import('./components/tag/tag.module').then(m => m.AppTagModule)
},
{
path: 'social',
canActivate: [AuthGuardEcm],
loadChildren: 'app/components/social/social.module#AppSocialModule'
loadChildren: () => import('./components/social/social.module').then(m => m.AppSocialModule)
},
{
path: 'permissions/:id',
@@ -392,11 +386,11 @@ export const appRoutes: Routes = [
},
{
path: 'about',
loadChildren: 'app/components/about/about.module#AppAboutModule'
loadChildren: () => import('./components/about/about.module').then(m => m.AppAboutModule)
},
{
path: 'icons',
loadChildren: './components/icons/icons.module#AppIconsModule'
loadChildren: () => import('./components/icons/icons.module').then(m => m.AppIconsModule)
},
{ path: 'form-cloud', component: FormCloudDemoComponent },
{ path: 'form', component: FormComponent },
@@ -413,11 +407,11 @@ export const appRoutes: Routes = [
},
{
path: 'datatable-lazy',
loadChildren: 'app/components/lazy-loading/lazy-loading.module#LazyLoadingModule'
loadChildren: () => import('./components/lazy-loading/lazy-loading.module').then(m => m.LazyLoadingModule)
},
{
path: 'copy-content',
loadChildren: 'app/components/datatable/copy-content/datatable.module#AppDataTableCopyModule'
loadChildren: () => import('./components/datatable/copy-content/datatable.module').then(m => m.AppDataTableCopyModule)
},
{
path: 'template-list',
@@ -426,12 +420,12 @@ export const appRoutes: Routes = [
{
path: 'task-list',
canActivate: [AuthGuardBpm],
loadChildren: 'app/components/task-list-demo/task-list.module#AppTaskListModule'
loadChildren: () => import('./components/task-list-demo/task-list.module').then(m => m.AppTaskListModule)
},
{
path: 'process-list',
canActivate: [AuthGuardBpm],
loadChildren: 'app/components/process-list-demo/process-list.module#AppProcessListModule'
loadChildren: () => import('./components/process-list-demo/process-list.module').then(m => m.AppProcessListModule)
},
{
path: 'error/no-authorization',
@@ -459,5 +453,3 @@ export const appRoutes: Routes = [
redirectTo: 'error/404'
}
];
export const routing: ModuleWithProviders = RouterModule.forRoot(appRoutes, { initialNavigation: true });

View File

@@ -40,7 +40,7 @@ import { takeUntil } from 'rxjs/operators';
})
export class CardViewComponent implements OnInit, OnDestroy {
@ViewChild('console') console: ElementRef;
@ViewChild('console', { static: true }) console: ElementRef;
isEditable = true;
properties: any;

View File

@@ -6,14 +6,14 @@
<mat-card-content>
<br>
<mat-radio-group (change)="onChangePeopleMode($event)">
<mat-radio-button checked="true" class="app-people-single-mode" data-automation-id="app-people-single-mode" value="single">{{
<mat-radio-button [checked]="true" class="app-people-single-mode" data-automation-id="app-people-single-mode" value="single">{{
'PEOPLE_GROUPS_CLOUD.SINGLE' | translate }}</mat-radio-button>
<mat-radio-button class="app-people-multiple-mode" data-automation-id="app-people-multiple-mode" value="multiple">{{
'PEOPLE_GROUPS_CLOUD.MULTI' | translate }}</mat-radio-button>
</mat-radio-group>
<div class="app-people-control-options">
<mat-radio-group (change)="onChangePeopleFilterMode($event)">
<mat-radio-button checked="true" class="app-people-single-mode" value="appName">{{
<mat-radio-button [checked]="true" class="app-people-single-mode" value="appName">{{
'PEOPLE_GROUPS_CLOUD.APP_FILTER_MODE' | translate }}</mat-radio-button>
<mat-radio-button class="app-people-multiple-mode" data-automation-id="app-people-filter-role" value="role">{{
'PEOPLE_GROUPS_CLOUD.ROLE_FILTER_MODE' | translate }}</mat-radio-button>
@@ -77,14 +77,14 @@
<mat-card-content>
<br>
<mat-radio-group (change)="onChangeGroupsMode($event)">
<mat-radio-button checked="true" class="app-people-single-mode" data-automation-id="app-group-single-mode" value="single">{{
<mat-radio-button [checked]="true" class="app-people-single-mode" data-automation-id="app-group-single-mode" value="single">{{
'PEOPLE_GROUPS_CLOUD.SINGLE' | translate }}</mat-radio-button>
<mat-radio-button class="app-people-multiple-mode" data-automation-id="app-group-multiple-mode" value="multiple">{{
'PEOPLE_GROUPS_CLOUD.MULTI' | translate }}</mat-radio-button>
</mat-radio-group>
<div class="app-groups-control-options">
<mat-radio-group (change)="onChangeGroupsFilterMode($event)">
<mat-radio-button checked="true" class="app-people-single-mode" value="appName">{{
<mat-radio-button [checked]="true" class="app-people-single-mode" value="appName">{{
'PEOPLE_GROUPS_CLOUD.APP_FILTER_MODE' | translate }}</mat-radio-button>
<mat-radio-button class="app-people-multiple-mode" data-automation-id="app-group-filter-role" value="role">{{
'PEOPLE_GROUPS_CLOUD.ROLE_FILTER_MODE' | translate }}</mat-radio-button>

View File

@@ -17,7 +17,8 @@
import { Component, ViewEncapsulation } from '@angular/core';
import { ComponentSelectionMode } from '@alfresco/adf-process-services-cloud';
import { MatRadioChange, MatCheckboxChange } from '@angular/material';
import { MatCheckboxChange } from '@angular/material/checkbox';
import { MatRadioChange } from '@angular/material/radio';
import { IdentityGroupModel, IdentityUserModel } from '@alfresco/adf-core';
@Component({

View File

@@ -18,7 +18,10 @@
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { CloudSettingsComponent } from './cloud-settings.component';
import { MatDialogModule, MatInputModule, MatSelectModule, MatSlideToggleModule } from '@angular/material';
import { MatDialogModule } from '@angular/material/dialog';
import { MatInputModule } from '@angular/material/input';
import { MatSelectModule } from '@angular/material/select';
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
import { CoreModule } from '@alfresco/adf-core';
import { FlexLayoutModule } from '@angular/flex-layout';

View File

@@ -19,7 +19,7 @@ import { Component, OnInit } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { NotificationService, AppConfigService } from '@alfresco/adf-core';
import { CloudLayoutService } from './services/cloud-layout.service';
import { PreviewService } from 'app/services/preview.service';
import { PreviewService } from '../../services/preview.service';
@Component({
templateUrl: './start-process-cloud-demo.component.html',

View File

@@ -19,7 +19,7 @@ import { Component, ViewChild } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { NotificationService } from '@alfresco/adf-core';
import { TaskHeaderCloudComponent } from '@alfresco/adf-process-services-cloud';
import { PreviewService } from 'app/services/preview.service';
import { PreviewService } from '../../services/preview.service';
@Component({
templateUrl: './task-details-cloud-demo.component.html',
@@ -27,7 +27,7 @@ import { PreviewService } from 'app/services/preview.service';
})
export class TaskDetailsCloudDemoComponent {
@ViewChild('taskHeader')
@ViewChild('taskHeader', { static: true })
taskHeader: TaskHeaderCloudComponent;
taskId: string;

View File

@@ -24,7 +24,7 @@ import { FormControl } from '@angular/forms';
styleUrls: ['./task-header-cloud-demo.component.scss']
})
export class TaskHeaderCloudDemoComponent {
@ViewChild('taskHeader')
@ViewChild('taskHeader', { static: true })
taskHeader: TaskHeaderCloudComponent;
appName: string;

View File

@@ -16,7 +16,7 @@
*/
import { Component } from '@angular/core';
import { MatDialog } from '@angular/material';
import { MatDialog } from '@angular/material/dialog';
import { ConfirmDialogComponent } from '@alfresco/adf-content-services';
@Component({

View File

@@ -42,9 +42,6 @@ const routes: Routes = [
declarations: [
ExtensionPresetsComponent,
NameColumnComponent
],
entryComponents: [
NameColumnComponent
]
})
export class ExtensionPresetsModule {

View File

@@ -18,7 +18,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 { MatSnackBar } from '@angular/material';
import { MatSnackBar } from '@angular/material/snack-bar';
import { PreviewService } from '../../services/preview.service';
@Component({

View File

@@ -27,7 +27,7 @@ export class CustomSourcesComponent {
@Input()
selectedSource = '-recent-';
@ViewChild('customSourcesDocumentList')
@ViewChild('customSourcesDocumentList', { static: true })
documentList: DocumentListComponent;
sources = [

View File

@@ -200,13 +200,6 @@
<mat-icon>create</mat-icon>
<span>{{ 'DOCUMENT_LIST.TOOLBAR.EDIT_FOLDER' | translate }}</span>
</button>
<button mat-menu-item
[disabled]="!hasSelection(documentList.selection)"
title="Download"
(click)="downloadNodes(documentList.selection)">
<mat-icon>get_app</mat-icon>
<span>{{ 'DOCUMENT_LIST.TOOLBAR.DOWNLOAD' | translate }}</span>
</button>
<button mat-menu-item
adf-check-allowable-operation="delete"
[adf-nodes]="documentList.selection"
@@ -540,7 +533,7 @@
</section>
<section>
<mat-slide-toggle [color]="'primary'" [(ngModel)]="multiselect">
<mat-slide-toggle data-automation-id="multiSelectToggle" [color]="'primary'" [(ngModel)]="multiselect">
{{'DOCUMENT_LIST.MULTISELECT_CHECKBOXES' | translate}}
</mat-slide-toggle>
</section>

View File

@@ -21,7 +21,7 @@ import {
} from '@angular/core';
import { Location } from '@angular/common';
import { MatDialog } from '@angular/material';
import { MatDialog } from '@angular/material/dialog';
import { ActivatedRoute, Params, Router } from '@angular/router';
import { MinimalNodeEntity, NodePaging, Pagination, MinimalNodeEntryEntity, SiteEntry, SearchEntry } from '@alfresco/js-api';
import {
@@ -184,13 +184,13 @@ export class FilesComponent implements OnInit, OnChanges, OnDestroy {
@Output()
deleteElementSuccess: EventEmitter<any> = new EventEmitter();
@ViewChild('documentList')
@ViewChild('documentList', { static: true })
documentList: DocumentListComponent;
@ViewChild('standardPagination')
standardPagination: PaginationComponent;
@ViewChild(InfinitePaginationComponent)
@ViewChild(InfinitePaginationComponent, { static: true })
infinitePaginationComponent: InfinitePaginationComponent;
@ViewChild(HighlightDirective)

View File

@@ -16,7 +16,7 @@
*/
import { Component, Inject, ViewEncapsulation } from '@angular/core';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
import { MinimalNodeEntryEntity } from '@alfresco/js-api';
@Component({

View File

@@ -20,6 +20,7 @@ import { Injectable, Output, EventEmitter } from '@angular/core';
@Injectable({
providedIn: 'root'
})
// tslint:disable-next-line: directive-class-suffix
export class HeaderDataService {
show = true;

View File

@@ -16,7 +16,7 @@
*/
import { Component, OnInit } from '@angular/core';
import { MatIconRegistry } from '@angular/material';
import { MatIconRegistry } from '@angular/material/icon';
import { DomSanitizer } from '@angular/platform-browser';
@Component({

View File

@@ -4,7 +4,7 @@
<p class="app-toggle">
<mat-slide-toggle
id="switch3"
[color]="'primary'"
color="primary"
(change)="toggleCSRF()"
[checked]="!disableCsrf">
CSRF
@@ -13,7 +13,7 @@
<p class="app-toggle">
<mat-slide-toggle
id="switch4"
[color]="'primary'"
color="primary"
(change)="toggleFooter()"
[checked]="showFooter">
{{ 'LOGIN.LOGIN_FOOTER'| translate }}
@@ -22,7 +22,7 @@
<p class="app-toggle">
<mat-slide-toggle
id="adf-toggle-show-rememberme"
[color]="'primary'"
color="primary"
(change)="toggleRememberMe()"
[checked]="showRememberMe">
{{ 'LOGIN.SHOW_REMEMBERME'| translate }}
@@ -31,7 +31,7 @@
<p class="app-toggle">
<mat-slide-toggle
id="adf-toggle-show-successRoute"
[color]="'primary'"
color="primary"
(change)="toggleSuccessRoute()"
[checked]="customSuccessRoute">
{{ 'LOGIN.SHOW_SUCCESS_ROUTE'| translate }}
@@ -51,7 +51,7 @@
<p class="app-toggle">
<mat-slide-toggle
id="adf-toggle-logo"
[color]="'primary'"
color="primary"
(change)="toggleLogo()"
[checked]="customLogoImage">
{{ 'LOGIN.CUSTOM_LOGO'| translate }}
@@ -77,13 +77,10 @@
</a>
<adf-login
#alfrescoLogin
[successRoute]="customSuccessRouteURI"
[logoImageUrl]="customLogoImageURL"
[fieldsValidation]="customValidation"
[showLoginActions]="showFooter"
[showRememberMe]="showFooter && showRememberMe"
(executeSubmit)="checkForm($event)"
copyrightText="{{ 'application.copyright' | adfAppConfig }}"
(success)="onLogin()"
(error)="onError($event)">
@@ -91,7 +88,7 @@
<p>
<mat-slide-toggle
id="switch3-mobile"
[color]="'primary'"
color="primary"
(change)="toggleCSRF()"
[checked]="!disableCsrf">
CSRF
@@ -100,14 +97,19 @@
<p>
<mat-slide-toggle
id="switch4-mobile"
[color]="'primary'"
color="primary"
(change)="toggleFooter()"
[checked]="showFooter">
{{ 'LOGIN.LOGIN_FOOTER'| translate }}
</mat-slide-toggle>
</p>
<button type="button" mat-raised-button color="accent" class="app-mobile-setting-button" routerLink="/settings"
data-automation-id="settings">{{ 'APP_LAYOUT.SETTINGS'| translate }}
<button
type="button"
mat-raised-button
color="accent"
class="app-mobile-setting-button"
routerLink="/settings"
data-automation-id="settings">{{ 'APP_LAYOUT.SETTINGS'| translate }}
</button>
</div>

View File

@@ -15,8 +15,7 @@
* limitations under the License.
*/
import { Component, OnInit, ViewChild } from '@angular/core';
import { Validators } from '@angular/forms';
import { Component } from '@angular/core';
import { Router } from '@angular/router';
import { LogService } from '@alfresco/adf-core';
@@ -25,12 +24,8 @@ import { LogService } from '@alfresco/adf-core';
templateUrl: './login.component.html',
styleUrls: ['./login.component.scss']
})
export class LoginComponent implements OnInit {
export class LoginComponent {
@ViewChild('alfrescoLogin')
alfrescoLogin: any;
customValidation: any;
customSuccessRouteURI = '';
customLogoImageURL = './assets/images/alfresco-logo.svg';
@@ -39,28 +34,17 @@ export class LoginComponent implements OnInit {
showRememberMe = true;
customSuccessRoute = false;
customLogoImage = false;
customMinLength = 2;
constructor(private router: Router,
private logService: LogService) {
this.customValidation = {
username: ['', Validators.compose([Validators.required, Validators.minLength(this.customMinLength)])],
password: ['', Validators.required]
};
}
ngOnInit() {
this.alfrescoLogin.addCustomValidationError('username', 'required', 'LOGIN.MESSAGES.USERNAME-REQUIRED');
this.alfrescoLogin.addCustomValidationError('username', 'minlength', 'LOGIN.MESSAGES.USERNAME-MIN', { minLength: this.customMinLength });
this.alfrescoLogin.addCustomValidationError('password', 'required', 'LOGIN.MESSAGES.PASSWORD-REQUIRED');
}
onLogin() {
this.router.navigate(['/home']);
}
onError($event) {
this.logService.error($event);
onError(err: any) {
this.logService.error(err);
}
toggleCSRF() {
@@ -88,9 +72,4 @@ export class LoginComponent implements OnInit {
this.customLogoImageURL = null;
}
}
checkForm(event: any) {
const values = event.values;
this.logService.log(values);
}
}

View File

@@ -17,7 +17,7 @@
import { Component, OnInit, OnDestroy } from '@angular/core';
import { NotificationService } from '@alfresco/adf-core';
import { MatSnackBarConfig } from '@angular/material';
import { MatSnackBarConfig } from '@angular/material/snack-bar';
import { FormBuilder, FormGroup, FormControl } from '@angular/forms';
import { Subject } from 'rxjs';
import { takeUntil } from 'rxjs/operators';

View File

@@ -28,7 +28,7 @@ import { NodesApiService, NotificationService } from '@alfresco/adf-core';
})
export class DemoPermissionComponent implements OnInit {
@ViewChild('permissionList')
@ViewChild('permissionList', { static: true })
displayPermissionComponent: PermissionListComponent;
nodeId: string;

View File

@@ -46,8 +46,7 @@ export class CustomStencil01 extends WidgetComponent {
@NgModule({
declarations: [ CustomEditorComponent, CustomStencil01 ],
exports: [ CustomEditorComponent, CustomStencil01 ],
entryComponents: [ CustomEditorComponent, CustomStencil01 ]
exports: [ CustomEditorComponent, CustomStencil01 ]
})
export class CustomEditorsModule {

View File

@@ -118,7 +118,7 @@
label="{{'PS-TAB.PROCESSES-TAB' | translate}}">
<div class="app-page-content" *ngIf="showProcessTab">
<div class="app-grid" fxLayout="row" fxLayout.lt-lg="column" fxLayoutAlign="stretch">
<div class="app-grid-item app-processes-menu" fxFlex.gt-md="225px">
<div id="app-processes-menu" class="app-grid-item app-processes-menu" fxFlex.gt-md="225px">
<div class="app-list-buttons">
<adf-sidebar-action-menu [expanded]="true" [width]="205"
title="{{'ADF_SIDEBAR_ACTION_MENU.BUTTON.CREATE' | translate}}">
@@ -237,12 +237,12 @@
<div class="app-grid-item app-reports-menu" fxFlex.gt-md="300px">
<span><h5>Report List</h5></span>
<mat-divider></mat-divider>
<adf-analytics-report-list
<!-- <adf-analytics-report-list
[appId]="appId"
[selectFirst]="selectFirstReport"
(reportClick)="onReportClick($event)"
#analyticsReportList>
</adf-analytics-report-list>
</adf-analytics-report-list> -->
</div>
<div class="app-grid-item app-reports-details" fxFlex.gt-md="1 1 auto">
<adf-analytics

View File

@@ -103,7 +103,7 @@ export class ProcessServiceComponent implements AfterViewInit, OnDestroy, OnInit
@ViewChild('activitiStartProcess')
activitiStartProcess: StartProcessInstanceComponent;
@ViewChild('analyticsReportList')
@ViewChild('analyticsReportList', { static: true })
analyticsReportList: AnalyticsReportListComponent;
@Input()

View File

@@ -25,22 +25,22 @@ import { ObjectDataTableAdapter } from '@alfresco/adf-core';
})
export class TemplateDemoComponent implements AfterViewChecked {
@ViewChild('defaultDocumentList')
@ViewChild('defaultDocumentList', { static: true })
defaultDocumentListComponent: DocumentListComponent;
@ViewChild('customLoadingDocumentList')
@ViewChild('customLoadingDocumentList', { static: true })
customLoadingDocumentList: DocumentListComponent;
@ViewChild('customNoPermissionDocumentList')
@ViewChild('customNoPermissionDocumentList', { static: true })
customNoPermissionDocumentList: DocumentListComponent;
@ViewChild('defaultNoPermissionDocumentList')
@ViewChild('defaultNoPermissionDocumentList', { static: true })
defaultNoPermissionDocumentList: DocumentListComponent;
@ViewChild('customEmptyDocumentList')
@ViewChild('customEmptyDocumentList', { static: true })
customEmptyDocumentList: DocumentListComponent;
@ViewChild('defaultEmptyDocumentList')
@ViewChild('defaultEmptyDocumentList', { static: true })
defaultEmptyDocumentList: DocumentListComponent;
constructor() {

View File

@@ -17,10 +17,12 @@
import { CommonModule } from '@angular/common';
import { ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
import {
MatButtonModule, MatGridListModule, MatIconModule, MatMenuModule,
MatTooltipModule, MatListModule
} from '@angular/material';
import { MatButtonModule } from '@angular/material/button';
import { MatGridListModule } from '@angular/material/grid-list';
import { MatIconModule } from '@angular/material/icon';
import { MatListModule } from '@angular/material/list';
import { MatMenuModule } from '@angular/material/menu';
import { MatTooltipModule } from '@angular/material/tooltip';
import { StyleManager } from './style-manager/style-manager';
import { DocsSiteTheme, ThemeStorage } from './theme-storage/theme-storage';

View File

@@ -28,7 +28,7 @@ import { takeUntil } from 'rxjs/operators';
styleUrls: ['trashcan.component.scss']
})
export class TrashcanComponent implements OnInit, OnDestroy {
@ViewChild('documentList')
@ViewChild('documentList', { static: true })
documentList: DocumentListComponent;
currentLocale;

View File

@@ -16,39 +16,48 @@
*/
import { NgModule } from '@angular/core';
import {
MatDialogModule,
MatInputModule,
MatProgressBarModule,
MatSelectModule,
MatSidenavModule,
MatSlideToggleModule,
MatCardModule,
MatListModule,
MatMenuModule,
MatToolbarModule,
MatSnackBarModule,
MatExpansionModule
} from '@angular/material';
const MATERIAL_MODULES = [
MatSlideToggleModule,
MatInputModule,
MatSelectModule,
MatDialogModule,
MatSidenavModule,
MatProgressBarModule,
MatCardModule,
MatListModule,
MatMenuModule,
MatToolbarModule,
MatSnackBarModule,
MatExpansionModule
];
import { MatCardModule } from '@angular/material/card';
import { MatDialogModule } from '@angular/material/dialog';
import { MatExpansionModule } from '@angular/material/expansion';
import { MatInputModule } from '@angular/material/input';
import { MatListModule } from '@angular/material/list';
import { MatMenuModule } from '@angular/material/menu';
import { MatProgressBarModule } from '@angular/material/progress-bar';
import { MatSelectModule } from '@angular/material/select';
import { MatSidenavModule } from '@angular/material/sidenav';
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
import { MatSnackBarModule } from '@angular/material/snack-bar';
import { MatToolbarModule } from '@angular/material/toolbar';
@NgModule({
imports: MATERIAL_MODULES,
exports: MATERIAL_MODULES
imports: [
MatSlideToggleModule,
MatInputModule,
MatSelectModule,
MatDialogModule,
MatSidenavModule,
MatProgressBarModule,
MatCardModule,
MatListModule,
MatMenuModule,
MatToolbarModule,
MatSnackBarModule,
MatExpansionModule
],
exports: [
MatSlideToggleModule,
MatInputModule,
MatSelectModule,
MatDialogModule,
MatSidenavModule,
MatProgressBarModule,
MatCardModule,
MatListModule,
MatMenuModule,
MatToolbarModule,
MatSnackBarModule,
MatExpansionModule
]
})
export class MaterialModule {
}

View File

@@ -2,8 +2,7 @@
"$schema": "../../../lib/extensions/src/lib/config/schema/app-extension.schema.json",
"$references": [
"plugin1.json",
"plugin2.json",
"monaco-extension.json"
"plugin2.json"
],
"$dependencies": [],

View File

@@ -1,17 +0,0 @@
{
"$schema": "../../../lib/extensions/config/schema/plugin-extension.schema.json",
"$version": "1.0.0",
"$name": "monaco extension",
"$description": "monaco plugin",
"features": {
"viewer": {
"content": [
{
"id": "dev.tools.viewer",
"fileExtension": "js",
"component": "monaco-extension.main.component"
}
]
}
}
}

View File

@@ -20,8 +20,6 @@ import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app/app.module';
import { environment } from './environments/environment';
import 'hammerjs';
import 'chart.js';
import 'ng2-charts';

View File

@@ -1,13 +0,0 @@
{
"extends": "../tsconfig.json",
"compilerOptions": {
"outDir": "../out-tsc/app",
"module": "es2015",
"baseUrl": ".",
"types": []
},
"exclude": [
"test.ts",
"**/*.spec.ts"
]
}

View File

@@ -1,52 +0,0 @@
{
"extends": "../tsconfig.json",
"compilerOptions": {
"outDir": "../out-tsc/app",
"module": "es2015",
"rootDir": "..",
"baseUrl": ".",
"skipLibCheck": false,
"types": [],
"paths": {
"@alfresco/js-api": [
"../../node_modules/@alfresco/js-api"
],
"rxjs/*": [
"../../node_modules/rxjs/*"
],
"@angular/*": [
"../../node_modules/@angular/*"
],
"@alfresco/adf-extensions": [
"../../lib/extensions"
],
"@alfresco/adf-core": [
"../../lib/core"
],
"@alfresco/adf-content-services": [
"../../lib/content-services"
],
"@alfresco/adf-process-services": [
"../../lib/process-services"
],
"@alfresco/adf-insights": [
"../../lib/insights"
],
"@alfresco/adf-process-services-cloud": [
"../../lib/process-services-cloud"
],
"@alfresco/adf-testing": [
"../../lib/testing"
]
}
},
"exclude": [
"test.ts",
"**/*.spec.ts"
],
"angularCompilerOptions": {
"skipTemplateCodegen": false,
"entryModule": "./app/app.module#AppModule",
"genDir": "../ngfactory"
}
}

View File

@@ -1,5 +1,5 @@
{
"extends": "../tsconfig.json",
"extends": "../../tsconfig.json",
"compilerOptions": {
"outDir": "../out-tsc/spec",
"types": [

View File

@@ -1044,11 +1044,6 @@
"from": "custom-event-polyfill@0.3.0",
"resolved": "https://registry.npmjs.org/custom-event-polyfill/-/custom-event-polyfill-0.3.0.tgz"
},
"hammerjs": {
"version": "2.0.8",
"from": "hammerjs@2.0.8",
"resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz"
},
"minimatch-browser": {
"version": "1.0.0",
"from": "minimatch-browser@1.0.0",