reusable extensibility lib (#585)

reusable extensibility lib (part 1)
This commit is contained in:
Denys Vuika
2018-08-29 16:38:44 +01:00
committed by GitHub
parent 091e0d3e3f
commit c916ab4cd1
88 changed files with 1312 additions and 1123 deletions

View File

@@ -31,75 +31,32 @@ import { TrashcanComponent } from '../components/trashcan/trashcan.component';
import { ToolbarActionComponent } from './components/toolbar/toolbar-action.component';
import * as app from './evaluators/app.evaluators';
import * as nav from './evaluators/navigation.evaluators';
import { ExtensionService } from './extension.service';
import { CustomExtensionComponent } from './components/custom-component/custom.component';
import { AppExtensionService } from './extension.service';
import { ToggleInfoDrawerComponent } from '../components/toolbar/toggle-info-drawer/toggle-info-drawer.component';
import { ToggleFavoriteComponent } from '../components/toolbar/toggle-favorite/toggle-favorite.component';
import { ToolbarButtonComponent } from './components/toolbar/toolbar-button.component';
import { MetadataTabComponent } from '../components/info-drawer/metadata-tab/metadata-tab.component';
import { CommentsTabComponent } from '../components/info-drawer/comments-tab/comments-tab.component';
import { VersionsTabComponent } from '../components/info-drawer/versions-tab/versions-tab.component';
import { ExtensionLoaderService } from './extension-loader.service';
import { ExtensionsModule, ExtensionService } from '@alfresco/adf-extensions';
export function setupExtensions(extensions: ExtensionService): Function {
extensions.setComponents({
'app.layout.main': LayoutComponent,
'app.components.trashcan': TrashcanComponent,
'app.components.tabs.metadata': MetadataTabComponent,
'app.components.tabs.comments': CommentsTabComponent,
'app.components.tabs.versions': VersionsTabComponent,
'app.toolbar.toggleInfoDrawer': ToggleInfoDrawerComponent,
'app.toolbar.toggleFavorite': ToggleFavoriteComponent
});
extensions.setAuthGuards({
'app.auth': AuthGuardEcm
});
extensions.setEvaluators({
'app.selection.canDelete': app.canDeleteSelection,
'app.selection.canDownload': app.canDownloadSelection,
'app.selection.notEmpty': app.hasSelection,
'app.selection.canUnshare': app.canUnshareNodes,
'app.selection.canAddFavorite': app.canAddFavorite,
'app.selection.canRemoveFavorite': app.canRemoveFavorite,
'app.selection.first.canUpdate': app.canUpdateSelectedNode,
'app.selection.file': app.hasFileSelected,
'app.selection.file.canShare': app.canShareFile,
'app.selection.library': app.hasLibrarySelected,
'app.selection.folder': app.hasFolderSelected,
'app.selection.folder.canUpdate': app.canUpdateSelectedFolder,
'app.navigation.folder.canCreate': app.canCreateFolder,
'app.navigation.folder.canUpload': app.canUpload,
'app.navigation.isTrashcan': nav.isTrashcan,
'app.navigation.isNotTrashcan': nav.isNotTrashcan,
'app.navigation.isLibraries': nav.isLibraries,
'app.navigation.isNotLibraries': nav.isNotLibraries,
'app.navigation.isSharedFiles': nav.isSharedFiles,
'app.navigation.isNotSharedFiles': nav.isNotSharedFiles,
'app.navigation.isFavorites': nav.isFavorites,
'app.navigation.isNotFavorites': nav.isNotFavorites,
'app.navigation.isRecentFiles': nav.isRecentFiles,
'app.navigation.isNotRecentFiles': nav.isNotRecentFiles,
'app.navigation.isSearchResults': nav.isSearchResults,
'app.navigation.isNotSearchResults': nav.isNotSearchResults
});
return () => extensions.load();
export function setupExtensions(service: AppExtensionService): Function {
return () => service.load();
}
@NgModule({
imports: [CommonModule, CoreModule.forChild()],
imports: [
CommonModule,
CoreModule.forChild(),
ExtensionsModule.forChild()
],
declarations: [
ToolbarActionComponent,
ToolbarButtonComponent,
CustomExtensionComponent
ToolbarButtonComponent
],
exports: [
ToolbarActionComponent,
ToolbarButtonComponent,
CustomExtensionComponent
ToolbarButtonComponent
]
})
export class CoreExtensionsModule {
@@ -107,12 +64,11 @@ export class CoreExtensionsModule {
return {
ngModule: CoreExtensionsModule,
providers: [
ExtensionLoaderService,
ExtensionService,
AppExtensionService,
{
provide: APP_INITIALIZER,
useFactory: setupExtensions,
deps: [ExtensionService],
deps: [AppExtensionService],
multi: true
}
]
@@ -124,4 +80,50 @@ export class CoreExtensionsModule {
ngModule: CoreExtensionsModule
};
}
constructor(extensions: ExtensionService) {
extensions.setComponents({
'app.layout.main': LayoutComponent,
'app.components.trashcan': TrashcanComponent,
'app.components.tabs.metadata': MetadataTabComponent,
'app.components.tabs.comments': CommentsTabComponent,
'app.components.tabs.versions': VersionsTabComponent,
'app.toolbar.toggleInfoDrawer': ToggleInfoDrawerComponent,
'app.toolbar.toggleFavorite': ToggleFavoriteComponent
});
extensions.setAuthGuards({
'app.auth': AuthGuardEcm
});
extensions.setEvaluators({
'app.selection.canDelete': app.canDeleteSelection,
'app.selection.canDownload': app.canDownloadSelection,
'app.selection.notEmpty': app.hasSelection,
'app.selection.canUnshare': app.canUnshareNodes,
'app.selection.canAddFavorite': app.canAddFavorite,
'app.selection.canRemoveFavorite': app.canRemoveFavorite,
'app.selection.first.canUpdate': app.canUpdateSelectedNode,
'app.selection.file': app.hasFileSelected,
'app.selection.file.canShare': app.canShareFile,
'app.selection.library': app.hasLibrarySelected,
'app.selection.folder': app.hasFolderSelected,
'app.selection.folder.canUpdate': app.canUpdateSelectedFolder,
'app.navigation.folder.canCreate': app.canCreateFolder,
'app.navigation.folder.canUpload': app.canUpload,
'app.navigation.isTrashcan': nav.isTrashcan,
'app.navigation.isNotTrashcan': nav.isNotTrashcan,
'app.navigation.isLibraries': nav.isLibraries,
'app.navigation.isNotLibraries': nav.isNotLibraries,
'app.navigation.isSharedFiles': nav.isSharedFiles,
'app.navigation.isNotSharedFiles': nav.isNotSharedFiles,
'app.navigation.isFavorites': nav.isFavorites,
'app.navigation.isNotFavorites': nav.isNotFavorites,
'app.navigation.isRecentFiles': nav.isRecentFiles,
'app.navigation.isNotRecentFiles': nav.isNotRecentFiles,
'app.navigation.isSearchResults': nav.isSearchResults,
'app.navigation.isNotSearchResults': nav.isNotSearchResults
});
}
}