AOT compatibility enhancements (#2015)

* aot compatibility updates

- remove index files where needed
- move material dependencies to a separete module
- use aot compatible lambda functions for module export

* remove unused imports

* re-export Material module

* core module enhancements

- fix AOT issue with providers (use lambda instead of variable)
- move context menu to a separate module

* core module enhancements

* feature modules
This commit is contained in:
Denys Vuika
2017-06-30 22:20:12 +01:00
committed by Eugenio Romano
parent b0cdd4557d
commit 98598f03b2
16 changed files with 135 additions and 207 deletions

View File

@@ -21,9 +21,13 @@ import { HttpModule, Http } from '@angular/http';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { TranslateModule, TranslateLoader } from '@ngx-translate/core'; import { TranslateModule, TranslateLoader } from '@ngx-translate/core';
import { MaterialModule } from './src/material.module'; import { MaterialModule } from './src/material.module';
import { AppConfigModule } from './src/services/app-config.service'; import { ContextMenuModule } from './src/components/context-menu/context-menu.module';
import { CardViewModule } from './src/components/view/card-view.module';
import { CollapsableModule } from './src/components/collapsable/collapsable.module';
import { AdfToolbarComponent } from './src/components/toolbar/toolbar.component'; import { AdfToolbarComponent } from './src/components/toolbar/toolbar.component';
import { AppConfigModule } from './src/services/app-config.service';
import { import {
AlfrescoAuthenticationService, AlfrescoAuthenticationService,
@@ -49,17 +53,18 @@ import { FileSizePipe } from './src/pipes/file-size.pipe';
import { UploadDirective } from './src/directives/upload.directive'; import { UploadDirective } from './src/directives/upload.directive';
import { DataColumnComponent } from './src/components/data-column/data-column.component'; import { DataColumnComponent } from './src/components/data-column/data-column.component';
import { DataColumnListComponent } from './src/components/data-column/data-column-list.component'; import { DataColumnListComponent } from './src/components/data-column/data-column-list.component';
import { MATERIAL_DESIGN_DIRECTIVES } from './src/components/material/index';
import { CONTEXT_MENU_PROVIDERS, CONTEXT_MENU_DIRECTIVES } from './src/components/context-menu/index';
import { COLLAPSABLE_DIRECTIVES } from './src/components/collapsable/index';
import { VIEW_DIRECTIVES } from './src/components/view/index';
import { MDL } from './src/components/material/mdl-upgrade-element.directive';
import { AlfrescoMdlButtonDirective } from './src/components/material/mdl-button.directive';
import { AlfrescoMdlMenuDirective } from './src/components/material/mdl-menu.directive';
import { AlfrescoMdlTextFieldDirective } from './src/components/material/mdl-textfield.directive';
export { ContextMenuModule } from './src/components/context-menu/context-menu.module';
export { CardViewModule } from './src/components/view/card-view.module';
export { CollapsableModule } from './src/components/collapsable/collapsable.module';
export * from './src/services/index'; export * from './src/services/index';
export * from './src/components/index';
export * from './src/components/data-column/data-column.component'; export * from './src/components/data-column/data-column.component';
export * from './src/components/data-column/data-column-list.component'; export * from './src/components/data-column/data-column-list.component';
export * from './src/components/collapsable/index';
export * from './src/components/view/index';
export * from './src/directives/upload.directive'; export * from './src/directives/upload.directive';
export * from './src/utils/index'; export * from './src/utils/index';
export * from './src/events/base.event'; export * from './src/events/base.event';
@@ -108,22 +113,20 @@ export function createTranslateLoader(http: Http, logService: LogService) {
} }
}), }),
MaterialModule, MaterialModule,
AppConfigModule AppConfigModule,
ContextMenuModule,
CardViewModule,
CollapsableModule
], ],
declarations: [ declarations: [
...MATERIAL_DESIGN_DIRECTIVES, ...obsoleteMdlDirectives(),
...CONTEXT_MENU_DIRECTIVES,
...COLLAPSABLE_DIRECTIVES,
...VIEW_DIRECTIVES,
UploadDirective, UploadDirective,
DataColumnComponent, DataColumnComponent,
DataColumnListComponent, DataColumnListComponent,
FileSizePipe, FileSizePipe,
AdfToolbarComponent AdfToolbarComponent
], ],
providers: [ providers: providers(),
...ALFRESCO_CORE_PROVIDERS
],
exports: [ exports: [
BrowserAnimationsModule, BrowserAnimationsModule,
CommonModule, CommonModule,
@@ -132,10 +135,10 @@ export function createTranslateLoader(http: Http, logService: LogService) {
HttpModule, HttpModule,
TranslateModule, TranslateModule,
MaterialModule, MaterialModule,
...MATERIAL_DESIGN_DIRECTIVES, ContextMenuModule,
...CONTEXT_MENU_DIRECTIVES, CardViewModule,
...COLLAPSABLE_DIRECTIVES, CollapsableModule,
...VIEW_DIRECTIVES, ...obsoleteMdlDirectives(),
UploadDirective, UploadDirective,
DataColumnComponent, DataColumnComponent,
DataColumnListComponent, DataColumnListComponent,
@@ -151,7 +154,7 @@ export class CoreModule {
return { return {
ngModule: CoreModule, ngModule: CoreModule,
providers: [ providers: [
...ALFRESCO_CORE_PROVIDERS, ...providers(),
AppConfigService, AppConfigService,
InitAppConfigServiceProvider(appConfigFile) InitAppConfigServiceProvider(appConfigFile)
] ]

View File

@@ -15,5 +15,23 @@
* limitations under the License. * limitations under the License.
*/ */
export * from './datatable.component'; import { NgModule } from '@angular/core';
export * from './datatable-cell.component'; import { CommonModule } from '@angular/common';
import { AccordionComponent } from './accordion.component';
import { AccordionGroupComponent } from './accordion-group.component';
@NgModule({
imports: [
CommonModule
],
declarations: [
AccordionComponent,
AccordionGroupComponent
],
exports: [
AccordionComponent,
AccordionGroupComponent
]
})
export class CollapsableModule {}

View File

@@ -15,19 +15,27 @@
* limitations under the License. * limitations under the License.
*/ */
import { ContextMenuService } from './context-menu.service'; import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { ContextMenuHolderComponent } from './context-menu-holder.component'; import { ContextMenuHolderComponent } from './context-menu-holder.component';
import { ContextMenuDirective } from './context-menu.directive'; import { ContextMenuDirective } from './context-menu.directive';
import { ContextMenuService } from './context-menu.service';
export * from './context-menu.service'; @NgModule({
export * from './context-menu-holder.component'; imports: [
export * from './context-menu.directive'; CommonModule
],
export const CONTEXT_MENU_PROVIDERS: [any] = [ declarations: [
ContextMenuService ContextMenuHolderComponent,
]; ContextMenuDirective
],
export const CONTEXT_MENU_DIRECTIVES: [any] = [ exports: [
ContextMenuHolderComponent, ContextMenuHolderComponent,
ContextMenuDirective ContextMenuDirective
]; ],
providers: [
ContextMenuService
]
})
export class ContextMenuModule {}

View File

@@ -1,21 +0,0 @@
/*!
* @license
* Copyright 2016 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.
*/
export * from './context-menu/index';
export * from './material/index';
export * from './collapsable/index';
export * from './view/index';

View File

@@ -1,33 +0,0 @@
/*!
* @license
* Copyright 2016 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 { MDL } from './mdl-upgrade-element.directive';
import { AlfrescoMdlButtonDirective } from './mdl-button.directive';
import { AlfrescoMdlMenuDirective } from './mdl-menu.directive';
import { AlfrescoMdlTextFieldDirective } from './mdl-textfield.directive';
export * from './mdl-upgrade-element.directive';
export * from './mdl-button.directive';
export * from './mdl-menu.directive';
export * from './mdl-textfield.directive';
export const MATERIAL_DESIGN_DIRECTIVES: [any] = [
MDL,
AlfrescoMdlButtonDirective,
AlfrescoMdlMenuDirective,
AlfrescoMdlTextFieldDirective
];

View File

@@ -15,11 +15,7 @@
* limitations under the License. * limitations under the License.
*/ */
import { import { Component, Input } from '@angular/core';
Component,
Input,
OnInit
} from '@angular/core';
import { CardViewModel } from '../../models/card-view.model'; import { CardViewModel } from '../../models/card-view.model';
import * as moment from 'moment'; import * as moment from 'moment';
@@ -28,19 +24,11 @@ import * as moment from 'moment';
templateUrl: './adf-card-view.component.html', templateUrl: './adf-card-view.component.html',
styleUrls: ['./adf-card-view.component.css'] styleUrls: ['./adf-card-view.component.css']
}) })
export class CardView implements OnInit { export class CardView {
@Input() @Input()
properties: CardViewModel []; properties: CardViewModel [];
constructor() {
}
ngOnInit() {
}
getPropertyValue(property: CardViewModel): string { getPropertyValue(property: CardViewModel): string {
if (!property.value) { if (!property.value) {
return property.default; return property.default;

View File

@@ -15,8 +15,19 @@
* limitations under the License. * limitations under the License.
*/ */
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { CardView } from './adf-card-view.component'; import { CardView } from './adf-card-view.component';
export const VIEW_DIRECTIVES: [any] = [ @NgModule({
CardView imports: [
]; CommonModule
],
declarations: [
CardView
],
exports: [
CardView
]
})
export class CardViewModule {}

View File

@@ -18,14 +18,16 @@
import { NgModule } from '@angular/core'; import { NgModule } from '@angular/core';
import { MdSnackBarModule, MdToolbarModule, MdButtonModule } from '@angular/material'; import { MdSnackBarModule, MdToolbarModule, MdButtonModule } from '@angular/material';
const MATERIAL_MODULES = [ export function modules() {
MdSnackBarModule, return [
MdToolbarModule, MdSnackBarModule,
MdButtonModule MdToolbarModule,
]; MdButtonModule
];
}
@NgModule({ @NgModule({
imports: MATERIAL_MODULES, imports: modules(),
exports: MATERIAL_MODULES exports: modules()
}) })
export class MaterialModule {} export class MaterialModule {}

View File

@@ -16,14 +16,16 @@
*/ */
import { NgModule, ModuleWithProviders } from '@angular/core'; import { NgModule, ModuleWithProviders } from '@angular/core';
import { MdCheckboxModule, MdMenuModule, MdIconModule, MdButtonModule } from '@angular/material';
import { CoreModule } from 'ng2-alfresco-core'; import { CoreModule } from 'ng2-alfresco-core';
import { MaterialModule } from './src/material.module';
export * from './src/data/index'; export * from './src/data/index';
export * from './src/components/index';
export * from './src/components/pagination/index'; export { DataTableCellComponent } from './src/components/datatable/datatable-cell.component';
export * from './src/components/datatable/data-cell.event'; export { DataTableComponent } from './src/components/datatable/datatable.component';
export * from './src/components/datatable/data-row-action.event'; export { PaginationComponent } from './src/components/pagination/pagination.component';
export { DataCellEvent, DataCellEventModel } from './src/components/datatable/data-cell.event';
export { DataRowActionEvent, DataRowActionModel } from './src/components/datatable/data-row-action.event';
import { DataTableComponent } from './src/components/datatable/datatable.component'; import { DataTableComponent } from './src/components/datatable/datatable.component';
import { NoContentTemplateComponent } from './src/directives/no-content-template.component'; import { NoContentTemplateComponent } from './src/directives/no-content-template.component';
@@ -31,31 +33,25 @@ import { LoadingContentTemplateComponent } from './src/directives/loading-templa
import { PaginationComponent } from './src/components/pagination/pagination.component'; import { PaginationComponent } from './src/components/pagination/pagination.component';
import { DataTableCellComponent } from './src/components/datatable/datatable-cell.component'; import { DataTableCellComponent } from './src/components/datatable/datatable-cell.component';
export const ALFRESCO_DATATABLE_DIRECTIVES: [any] = [ export function directives() {
DataTableComponent, return [
DataTableCellComponent, DataTableComponent,
NoContentTemplateComponent, DataTableCellComponent,
LoadingContentTemplateComponent, NoContentTemplateComponent,
PaginationComponent LoadingContentTemplateComponent,
]; PaginationComponent
];
}
@NgModule({ @NgModule({
imports: [ imports: [
CoreModule, CoreModule,
MdCheckboxModule, MaterialModule
MdMenuModule,
MdIconModule,
MdButtonModule
],
declarations: [
...ALFRESCO_DATATABLE_DIRECTIVES
], ],
declarations: directives(),
exports: [ exports: [
...ALFRESCO_DATATABLE_DIRECTIVES, ...directives(),
MdCheckboxModule, MaterialModule
MdMenuModule,
MdIconModule,
MdButtonModule
] ]
}) })
export class DataTableModule { export class DataTableModule {

View File

@@ -16,7 +16,7 @@
*/ */
import { Component, Input, ChangeDetectionStrategy } from '@angular/core'; import { Component, Input, ChangeDetectionStrategy } from '@angular/core';
import { DataTableAdapter, DataColumn, DataRow } from '../../data/index'; import { DataTableAdapter, DataColumn, DataRow } from '../../data/datatable-adapter';
@Component({ @Component({
selector: 'alfresco-datatable-cell', selector: 'alfresco-datatable-cell',

View File

@@ -16,12 +16,14 @@
*/ */
import { Component, OnChanges, SimpleChange, SimpleChanges, Input, Output, EventEmitter, ElementRef, TemplateRef, AfterContentInit, ContentChild, Optional } from '@angular/core'; import { Component, OnChanges, SimpleChange, SimpleChanges, Input, Output, EventEmitter, ElementRef, TemplateRef, AfterContentInit, ContentChild, Optional } from '@angular/core';
import { DataTableAdapter, DataRow, DataColumn, DataSorting, DataRowEvent, ObjectDataTableAdapter, ObjectDataRow } from '../../data/index';
import { DataCellEvent } from './data-cell.event';
import { DataRowActionEvent } from './data-row-action.event';
import { DataColumnListComponent } from 'ng2-alfresco-core';
import { MdCheckboxChange } from '@angular/material'; import { MdCheckboxChange } from '@angular/material';
import { Observable, Observer } from 'rxjs/Rx'; import { Observable, Observer } from 'rxjs/Rx';
import { DataColumnListComponent } from 'ng2-alfresco-core';
import { DataTableAdapter, DataRow, DataColumn, DataSorting, DataRowEvent } from '../../data/datatable-adapter';
import { ObjectDataTableAdapter, ObjectDataRow } from '../../data/object-datatable-adapter';
import { DataCellEvent } from './data-cell.event';
import { DataRowActionEvent } from './data-row-action.event';
declare var componentHandler; declare var componentHandler;

View File

@@ -1,19 +0,0 @@
/*!
* @license
* Copyright 2016 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.
*/
export * from './datatable/index';
export * from './pagination/index';

View File

@@ -1,18 +0,0 @@
/*!
* @license
* Copyright 2016 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.
*/
export * from './pagination.component';

View File

@@ -15,5 +15,5 @@
* limitations under the License. * limitations under the License.
*/ */
export * from './datatable-adapter'; export { DataColumn, DataRow, DataRowEvent, DataSorting, DataTableAdapter } from './datatable-adapter';
export * from './object-datatable-adapter'; export { ObjectDataColumn, ObjectDataRow, ObjectDataTableAdapter } from './object-datatable-adapter';

View File

@@ -1,19 +0,0 @@
/*!
* @license
* Copyright 2016 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.
*/
export * from './no-content-template.component';
export * from './loading-template.component';

View File

@@ -15,10 +15,20 @@
* limitations under the License. * limitations under the License.
*/ */
import {AccordionComponent} from './accordion.component'; import { NgModule } from '@angular/core';
import {AccordionGroupComponent} from './accordion-group.component'; import { MdCheckboxModule, MdMenuModule, MdIconModule, MdButtonModule } from '@angular/material';
export const COLLAPSABLE_DIRECTIVES: [any] = [ export function modules() {
AccordionComponent, return [
AccordionGroupComponent MdCheckboxModule,
]; MdMenuModule,
MdIconModule,
MdButtonModule
];
}
@NgModule({
imports: modules(),
exports: modules()
})
export class MaterialModule {}