mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-09-17 14:21:29 +00:00
AAE-36664 Cleanup deprecated AppConfigModule (#11016)
* cleanup deprecated AppConfigModule * migrate factory to initializer * add provideAppExtensions() api to allow deprecating ExtensionsModule in apps * fix viewer render import * use Angular control flow instead of NgIf * use Angular control flow instead of NgSwitch
This commit is contained in:
@@ -17,13 +17,12 @@
|
|||||||
|
|
||||||
import { EventEmitter } from '@angular/core';
|
import { EventEmitter } from '@angular/core';
|
||||||
import { TestBed } from '@angular/core/testing';
|
import { TestBed } from '@angular/core/testing';
|
||||||
import { AppConfigModule, AppConfigService, AppConfigServiceMock } from '@alfresco/adf-core';
|
import { AppConfigService, AppConfigServiceMock } from '@alfresco/adf-core';
|
||||||
import { UploadService } from './upload.service';
|
import { UploadService } from './upload.service';
|
||||||
import { RepositoryInfo } from '@alfresco/js-api';
|
import { RepositoryInfo } from '@alfresco/js-api';
|
||||||
import { BehaviorSubject } from 'rxjs';
|
import { BehaviorSubject } from 'rxjs';
|
||||||
import { DiscoveryApiService } from '../../common/services/discovery-api.service';
|
import { DiscoveryApiService } from '../../common/services/discovery-api.service';
|
||||||
import { FileModel, FileUploadStatus } from '../../common/models/file.model';
|
import { FileModel, FileUploadStatus } from '../../common/models/file.model';
|
||||||
import { HttpClientTestingModule } from '@angular/common/http/testing';
|
|
||||||
import { AlfrescoApiService } from '../../services';
|
import { AlfrescoApiService } from '../../services';
|
||||||
import { AlfrescoApiServiceMock } from '../../mock';
|
import { AlfrescoApiServiceMock } from '../../mock';
|
||||||
|
|
||||||
@@ -38,7 +37,7 @@ describe('UploadService', () => {
|
|||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
TestBed.configureTestingModule({
|
TestBed.configureTestingModule({
|
||||||
imports: [AppConfigModule, HttpClientTestingModule],
|
imports: [],
|
||||||
providers: [
|
providers: [
|
||||||
UploadService,
|
UploadService,
|
||||||
{ provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock },
|
{ provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock },
|
||||||
|
@@ -20,5 +20,4 @@ export * from './debug-app-config.service';
|
|||||||
export * from './app-config.pipe';
|
export * from './app-config.pipe';
|
||||||
export * from './app-config-storage-prefix.factory';
|
export * from './app-config-storage-prefix.factory';
|
||||||
|
|
||||||
export * from './app-config.module';
|
|
||||||
export * from './provide-app-config';
|
export * from './provide-app-config';
|
||||||
|
@@ -1,24 +1,26 @@
|
|||||||
<div *ngIf="isLoading" class="adf-viewer-render-main-loader">
|
@if (isLoading) {
|
||||||
|
<div class="adf-viewer-render-main-loader">
|
||||||
<div class="adf-viewer-render-layout-content adf-viewer__fullscreen-container">
|
<div class="adf-viewer-render-layout-content adf-viewer__fullscreen-container">
|
||||||
<div class="adf-viewer-render-content-container">
|
<div class="adf-viewer-render-content-container">
|
||||||
<div class="adf-viewer-render__loading-screen">
|
<div class="adf-viewer-render__loading-screen">
|
||||||
<h2 id="loading-spinner-label">{{ 'ADF_VIEWER.LOADING' | translate }}</h2>
|
<h2 id="loading-spinner-label">{{ 'ADF_VIEWER.LOADING' | translate }}</h2>
|
||||||
<div>
|
<div>
|
||||||
<mat-spinner aria-labelledby="loading-spinner-label"
|
<mat-spinner aria-labelledby="loading-spinner-label" class="adf-viewer-render__loading-screen__spinner" />
|
||||||
class="adf-viewer-render__loading-screen__spinner" />
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
}
|
||||||
|
|
||||||
@if (urlFile || blobFile) {
|
@if (urlFile || blobFile) {
|
||||||
<div [style.visibility]="isLoading ? 'hidden' : 'visible'" class="adf-viewer-render-main">
|
<div [style.visibility]="isLoading ? 'hidden' : 'visible'" class="adf-viewer-render-main">
|
||||||
<div class="adf-viewer-render-layout-content adf-viewer__fullscreen-container">
|
<div class="adf-viewer-render-layout-content adf-viewer__fullscreen-container">
|
||||||
<div class="adf-viewer-render-content-container" [ngSwitch]="viewerType">
|
<div class="adf-viewer-render-content-container">
|
||||||
<ng-container *ngSwitchCase="'external'">
|
@switch (viewerType) {
|
||||||
|
@case ('external') {
|
||||||
|
@if (!!externalViewer) {
|
||||||
<adf-preview-extension
|
<adf-preview-extension
|
||||||
*ngIf="!!externalViewer"
|
|
||||||
[id]="externalViewer.component"
|
[id]="externalViewer.component"
|
||||||
[url]="urlFile"
|
[url]="urlFile"
|
||||||
[extension]="externalViewer.fileExtension"
|
[extension]="externalViewer.fileExtension"
|
||||||
@@ -26,9 +28,10 @@
|
|||||||
[attr.data-automation-id]="externalViewer.component"
|
[attr.data-automation-id]="externalViewer.component"
|
||||||
(contentLoaded)="markAsLoaded()"
|
(contentLoaded)="markAsLoaded()"
|
||||||
/>
|
/>
|
||||||
</ng-container>
|
}
|
||||||
|
}
|
||||||
|
|
||||||
<ng-container *ngSwitchCase="'pdf'">
|
@case ('pdf') {
|
||||||
<adf-pdf-viewer
|
<adf-pdf-viewer
|
||||||
[thumbnailsTemplate]="thumbnailsTemplate"
|
[thumbnailsTemplate]="thumbnailsTemplate"
|
||||||
[allowThumbnails]="allowThumbnails"
|
[allowThumbnails]="allowThumbnails"
|
||||||
@@ -40,9 +43,9 @@
|
|||||||
(close)="onClose()"
|
(close)="onClose()"
|
||||||
(error)="onUnsupportedFile()"
|
(error)="onUnsupportedFile()"
|
||||||
/>
|
/>
|
||||||
</ng-container>
|
}
|
||||||
|
|
||||||
<ng-container *ngSwitchCase="'image'">
|
@case ('image') {
|
||||||
<adf-img-viewer
|
<adf-img-viewer
|
||||||
[urlFile]="urlFile"
|
[urlFile]="urlFile"
|
||||||
[readOnly]="readOnly"
|
[readOnly]="readOnly"
|
||||||
@@ -54,9 +57,9 @@
|
|||||||
(imageLoaded)="markAsLoaded()"
|
(imageLoaded)="markAsLoaded()"
|
||||||
(isSaving)="isSaving.emit($event)"
|
(isSaving)="isSaving.emit($event)"
|
||||||
/>
|
/>
|
||||||
</ng-container>
|
}
|
||||||
|
|
||||||
<ng-container *ngSwitchCase="'media'">
|
@case ('media') {
|
||||||
<adf-media-player
|
<adf-media-player
|
||||||
id="adf-mdedia-player"
|
id="adf-mdedia-player"
|
||||||
[urlFile]="urlFile"
|
[urlFile]="urlFile"
|
||||||
@@ -67,16 +70,16 @@
|
|||||||
(error)="onUnsupportedFile()"
|
(error)="onUnsupportedFile()"
|
||||||
(canPlay)="markAsLoaded()"
|
(canPlay)="markAsLoaded()"
|
||||||
/>
|
/>
|
||||||
</ng-container>
|
}
|
||||||
|
|
||||||
<ng-container *ngSwitchCase="'text'">
|
@case ('text') {
|
||||||
<adf-txt-viewer [urlFile]="urlFile" [blobFile]="blobFile" (contentLoaded)="markAsLoaded()" />
|
<adf-txt-viewer [urlFile]="urlFile" [blobFile]="blobFile" (contentLoaded)="markAsLoaded()" />
|
||||||
</ng-container>
|
}
|
||||||
|
|
||||||
<ng-container *ngSwitchCase="'custom'">
|
@case ('custom') {
|
||||||
<ng-container *ngFor="let ext of viewerExtensions">
|
@for (ext of viewerExtensions; track ext.id) {
|
||||||
|
@if (checkExtensions(ext.fileExtension)) {
|
||||||
<adf-preview-extension
|
<adf-preview-extension
|
||||||
*ngIf="checkExtensions(ext.fileExtension)"
|
|
||||||
[id]="ext.component"
|
[id]="ext.component"
|
||||||
[url]="urlFile"
|
[url]="urlFile"
|
||||||
[extension]="extension"
|
[extension]="extension"
|
||||||
@@ -84,27 +87,32 @@
|
|||||||
[attr.data-automation-id]="ext.component"
|
[attr.data-automation-id]="ext.component"
|
||||||
(contentLoaded)="markAsLoaded()"
|
(contentLoaded)="markAsLoaded()"
|
||||||
/>
|
/>
|
||||||
</ng-container>
|
}
|
||||||
|
}
|
||||||
|
|
||||||
<ng-container *ngFor="let extensionTemplate of extensionTemplates">
|
<ng-container *ngFor="let extensionTemplate of extensionTemplates">
|
||||||
<span *ngIf="extensionTemplate.isVisible" class="adf-viewer-render-custom-content">
|
@if (extensionTemplate.isVisible) {
|
||||||
|
<span class="adf-viewer-render-custom-content">
|
||||||
<ng-template
|
<ng-template
|
||||||
[ngTemplateOutlet]="extensionTemplate.template"
|
[ngTemplateOutlet]="extensionTemplate.template"
|
||||||
[ngTemplateOutletContext]="{ urlFile: urlFile, extension: extension, markAsLoaded: markAsLoaded.bind(this) }"
|
[ngTemplateOutletContext]="{ urlFile: urlFile, extension: extension, markAsLoaded: markAsLoaded.bind(this) }"
|
||||||
/>
|
/>
|
||||||
</span>
|
</span>
|
||||||
|
}
|
||||||
</ng-container>
|
</ng-container>
|
||||||
</ng-container>
|
}
|
||||||
|
|
||||||
<ng-container *ngSwitchDefault>
|
@default {
|
||||||
<adf-viewer-unknown-format [customError]="customError" />
|
<adf-viewer-unknown-format [customError]="customError" />
|
||||||
</ng-container>
|
}
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
<ng-container *ngIf="viewerTemplateExtensions">
|
|
||||||
|
@if (viewerTemplateExtensions) {
|
||||||
<ng-template [ngTemplateOutlet]="viewerTemplateExtensions"
|
<ng-template [ngTemplateOutlet]="viewerTemplateExtensions"
|
||||||
[ngTemplateOutletContext]="{ urlFile: urlFile, extension: extension, markAsLoaded: markAsLoaded.bind(this) }"
|
[ngTemplateOutletContext]="{ urlFile: urlFile, extension: extension, markAsLoaded: markAsLoaded.bind(this) }"
|
||||||
[ngTemplateOutletInjector]="injector" />
|
[ngTemplateOutletInjector]="injector" />
|
||||||
</ng-container>
|
}
|
||||||
|
@@ -15,8 +15,8 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { AppExtensionService, ExtensionsModule, ViewerExtensionRef } from '@alfresco/adf-extensions';
|
import { AppExtensionService, ExtensionsModule, ViewerExtensionRef, PreviewExtensionComponent } from '@alfresco/adf-extensions';
|
||||||
import { NgForOf, NgIf, NgSwitch, NgSwitchCase, NgSwitchDefault, NgTemplateOutlet } from '@angular/common';
|
import { NgForOf, NgTemplateOutlet } from '@angular/common';
|
||||||
import { Component, EventEmitter, Injector, Input, OnChanges, OnInit, Output, TemplateRef, ViewEncapsulation } from '@angular/core';
|
import { Component, EventEmitter, Injector, Input, OnChanges, OnInit, Output, TemplateRef, ViewEncapsulation } from '@angular/core';
|
||||||
import { MatDialog } from '@angular/material/dialog';
|
import { MatDialog } from '@angular/material/dialog';
|
||||||
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
|
||||||
@@ -38,9 +38,6 @@ import { UnknownFormatComponent } from '../unknown-format/unknown-format.compone
|
|||||||
imports: [
|
imports: [
|
||||||
TranslatePipe,
|
TranslatePipe,
|
||||||
MatProgressSpinnerModule,
|
MatProgressSpinnerModule,
|
||||||
NgSwitch,
|
|
||||||
NgSwitchCase,
|
|
||||||
NgIf,
|
|
||||||
PdfViewerComponent,
|
PdfViewerComponent,
|
||||||
ImgViewerComponent,
|
ImgViewerComponent,
|
||||||
MediaPlayerComponent,
|
MediaPlayerComponent,
|
||||||
@@ -49,7 +46,7 @@ import { UnknownFormatComponent } from '../unknown-format/unknown-format.compone
|
|||||||
UnknownFormatComponent,
|
UnknownFormatComponent,
|
||||||
ExtensionsModule,
|
ExtensionsModule,
|
||||||
NgForOf,
|
NgForOf,
|
||||||
NgSwitchDefault
|
PreviewExtensionComponent
|
||||||
],
|
],
|
||||||
providers: [ViewUtilService]
|
providers: [ViewUtilService]
|
||||||
})
|
})
|
||||||
|
@@ -15,36 +15,26 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { DynamicExtensionComponent } from './components/dynamic-component/dynamic.component';
|
|
||||||
import { DynamicTabComponent } from './components/dynamic-tab/dynamic-tab.component';
|
|
||||||
import { DynamicColumnComponent } from './components/dynamic-column/dynamic-column.component';
|
|
||||||
import { PreviewExtensionComponent } from './components/viewer/preview-extension.component';
|
|
||||||
import { NgModule, ModuleWithProviders, inject, provideAppInitializer } from '@angular/core';
|
import { NgModule, ModuleWithProviders, inject, provideAppInitializer } from '@angular/core';
|
||||||
import { AppExtensionService } from './services/app-extension.service';
|
import { AppExtensionService } from './services/app-extension.service';
|
||||||
import { setupExtensions } from './services/startup-extension-factory';
|
|
||||||
|
|
||||||
export const EXTENSION_DIRECTIVES = [DynamicExtensionComponent, DynamicTabComponent, DynamicColumnComponent, PreviewExtensionComponent] as const;
|
/** @deprecated use provideAppExtensions() api instead */
|
||||||
|
@NgModule()
|
||||||
/** @deprecated import EXTENSION_DIRECTIVES or standalone components instead */
|
|
||||||
@NgModule({
|
|
||||||
imports: [...EXTENSION_DIRECTIVES],
|
|
||||||
exports: [...EXTENSION_DIRECTIVES]
|
|
||||||
})
|
|
||||||
export class ExtensionsModule {
|
export class ExtensionsModule {
|
||||||
static forRoot(): ModuleWithProviders<ExtensionsModule> {
|
static forRoot(): ModuleWithProviders<ExtensionsModule> {
|
||||||
return {
|
return {
|
||||||
ngModule: ExtensionsModule,
|
ngModule: ExtensionsModule,
|
||||||
providers: [
|
providers: [
|
||||||
provideAppInitializer(() => {
|
provideAppInitializer(() => {
|
||||||
const initializerFn = setupExtensions(inject(AppExtensionService));
|
const appExtensionService = inject(AppExtensionService);
|
||||||
return initializerFn();
|
return appExtensionService.load();
|
||||||
})
|
})
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @deprecated use `ExtensionsModule` instead, `EXTENSION_DIRECTIVES` or direct standalone components
|
* @deprecated use provideAppExtensions() api instead
|
||||||
* @returns Module with providers
|
* @returns Module with providers
|
||||||
*/
|
*/
|
||||||
static forChild(): ModuleWithProviders<ExtensionsModule> {
|
static forChild(): ModuleWithProviders<ExtensionsModule> {
|
||||||
|
@@ -15,12 +15,18 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { NgModule } from '@angular/core';
|
import { EnvironmentProviders, inject, provideAppInitializer, Provider } from '@angular/core';
|
||||||
import { AppConfigPipe } from './app-config.pipe';
|
import { AppExtensionService } from './services/app-extension.service';
|
||||||
|
|
||||||
/** @deprecated This module is deprecated, consider importing AppConfigPipe directly */
|
/**
|
||||||
@NgModule({
|
* Provides all necessary entries for the app extensibility
|
||||||
imports: [AppConfigPipe],
|
* @returns list of providers
|
||||||
exports: [AppConfigPipe]
|
*/
|
||||||
})
|
export function provideAppExtensions(): (Provider | EnvironmentProviders)[] {
|
||||||
export class AppConfigModule {}
|
return [
|
||||||
|
provideAppInitializer(() => {
|
||||||
|
const appExtensionService = inject(AppExtensionService);
|
||||||
|
return appExtensionService.load();
|
||||||
|
})
|
||||||
|
];
|
||||||
|
}
|
@@ -1,20 +0,0 @@
|
|||||||
/*!
|
|
||||||
* @license
|
|
||||||
* Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.
|
|
||||||
*
|
|
||||||
* 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 { AppExtensionService } from './app-extension.service';
|
|
||||||
|
|
||||||
export const setupExtensions = (appExtensionService: AppExtensionService) => () => appExtensionService.load();
|
|
@@ -41,3 +41,4 @@ export * from './lib/store/states/repository.state';
|
|||||||
|
|
||||||
export * from './lib/components/public-api';
|
export * from './lib/components/public-api';
|
||||||
export * from './lib/extensions.module';
|
export * from './lib/extensions.module';
|
||||||
|
export * from './lib/providers';
|
||||||
|
Reference in New Issue
Block a user