diff --git a/lib/content-services/src/lib/common/services/upload.service.spec.ts b/lib/content-services/src/lib/common/services/upload.service.spec.ts index f204820a14..51b460400a 100644 --- a/lib/content-services/src/lib/common/services/upload.service.spec.ts +++ b/lib/content-services/src/lib/common/services/upload.service.spec.ts @@ -17,13 +17,12 @@ import { EventEmitter } from '@angular/core'; 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 { RepositoryInfo } from '@alfresco/js-api'; import { BehaviorSubject } from 'rxjs'; import { DiscoveryApiService } from '../../common/services/discovery-api.service'; import { FileModel, FileUploadStatus } from '../../common/models/file.model'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; import { AlfrescoApiService } from '../../services'; import { AlfrescoApiServiceMock } from '../../mock'; @@ -38,7 +37,7 @@ describe('UploadService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [AppConfigModule, HttpClientTestingModule], + imports: [], providers: [ UploadService, { provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock }, diff --git a/lib/core/src/lib/app-config/public-api.ts b/lib/core/src/lib/app-config/public-api.ts index 5ed4e0dbd7..fa74bc032f 100644 --- a/lib/core/src/lib/app-config/public-api.ts +++ b/lib/core/src/lib/app-config/public-api.ts @@ -20,5 +20,4 @@ export * from './debug-app-config.service'; export * from './app-config.pipe'; export * from './app-config-storage-prefix.factory'; -export * from './app-config.module'; export * from './provide-app-config'; diff --git a/lib/core/src/lib/viewer/components/viewer-render/viewer-render.component.html b/lib/core/src/lib/viewer/components/viewer-render/viewer-render.component.html index 266f27c486..dd4d0f9729 100644 --- a/lib/core/src/lib/viewer/components/viewer-render/viewer-render.component.html +++ b/lib/core/src/lib/viewer/components/viewer-render/viewer-render.component.html @@ -1,110 +1,118 @@ -
-
-
-
-

{{ 'ADF_VIEWER.LOADING' | translate }}

-
- +@if (isLoading) { +
+
+
+
+

{{ 'ADF_VIEWER.LOADING' | translate }}

+
+ +
-
+} @if (urlFile || blobFile) {
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - + @switch (viewerType) { + @case ('external') { + @if (!!externalViewer) { + - - - + } + } - - - + @case ('pdf') { + + } + + @case ('image') { + + } + + @case ('media') { + + } + + @case ('text') { + + } + + @case ('custom') { + @for (ext of viewerExtensions; track ext.id) { + @if (checkExtensions(ext.fileExtension)) { + + } + } + + + @if (extensionTemplate.isVisible) { + + + + } + + } + + @default { + + } + }
} - + +@if (viewerTemplateExtensions) { - +} diff --git a/lib/core/src/lib/viewer/components/viewer-render/viewer-render.component.ts b/lib/core/src/lib/viewer/components/viewer-render/viewer-render.component.ts index a73f61e532..218a09c132 100644 --- a/lib/core/src/lib/viewer/components/viewer-render/viewer-render.component.ts +++ b/lib/core/src/lib/viewer/components/viewer-render/viewer-render.component.ts @@ -15,8 +15,8 @@ * limitations under the License. */ -import { AppExtensionService, ExtensionsModule, ViewerExtensionRef } from '@alfresco/adf-extensions'; -import { NgForOf, NgIf, NgSwitch, NgSwitchCase, NgSwitchDefault, NgTemplateOutlet } from '@angular/common'; +import { AppExtensionService, ExtensionsModule, ViewerExtensionRef, PreviewExtensionComponent } from '@alfresco/adf-extensions'; +import { NgForOf, NgTemplateOutlet } from '@angular/common'; import { Component, EventEmitter, Injector, Input, OnChanges, OnInit, Output, TemplateRef, ViewEncapsulation } from '@angular/core'; import { MatDialog } from '@angular/material/dialog'; import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; @@ -38,9 +38,6 @@ import { UnknownFormatComponent } from '../unknown-format/unknown-format.compone imports: [ TranslatePipe, MatProgressSpinnerModule, - NgSwitch, - NgSwitchCase, - NgIf, PdfViewerComponent, ImgViewerComponent, MediaPlayerComponent, @@ -49,7 +46,7 @@ import { UnknownFormatComponent } from '../unknown-format/unknown-format.compone UnknownFormatComponent, ExtensionsModule, NgForOf, - NgSwitchDefault + PreviewExtensionComponent ], providers: [ViewUtilService] }) diff --git a/lib/extensions/src/lib/extensions.module.ts b/lib/extensions/src/lib/extensions.module.ts index da5954b99f..10b6c448de 100644 --- a/lib/extensions/src/lib/extensions.module.ts +++ b/lib/extensions/src/lib/extensions.module.ts @@ -15,36 +15,26 @@ * 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 { AppExtensionService } from './services/app-extension.service'; -import { setupExtensions } from './services/startup-extension-factory'; -export const EXTENSION_DIRECTIVES = [DynamicExtensionComponent, DynamicTabComponent, DynamicColumnComponent, PreviewExtensionComponent] as const; - -/** @deprecated import EXTENSION_DIRECTIVES or standalone components instead */ -@NgModule({ - imports: [...EXTENSION_DIRECTIVES], - exports: [...EXTENSION_DIRECTIVES] -}) +/** @deprecated use provideAppExtensions() api instead */ +@NgModule() export class ExtensionsModule { static forRoot(): ModuleWithProviders { return { ngModule: ExtensionsModule, providers: [ provideAppInitializer(() => { - const initializerFn = setupExtensions(inject(AppExtensionService)); - return initializerFn(); + const appExtensionService = inject(AppExtensionService); + return appExtensionService.load(); }) ] }; } /** - * @deprecated use `ExtensionsModule` instead, `EXTENSION_DIRECTIVES` or direct standalone components + * @deprecated use provideAppExtensions() api instead * @returns Module with providers */ static forChild(): ModuleWithProviders { diff --git a/lib/core/src/lib/app-config/app-config.module.ts b/lib/extensions/src/lib/providers.ts similarity index 55% rename from lib/core/src/lib/app-config/app-config.module.ts rename to lib/extensions/src/lib/providers.ts index f99bf292ee..02cd04f301 100644 --- a/lib/core/src/lib/app-config/app-config.module.ts +++ b/lib/extensions/src/lib/providers.ts @@ -15,12 +15,18 @@ * limitations under the License. */ -import { NgModule } from '@angular/core'; -import { AppConfigPipe } from './app-config.pipe'; +import { EnvironmentProviders, inject, provideAppInitializer, Provider } from '@angular/core'; +import { AppExtensionService } from './services/app-extension.service'; -/** @deprecated This module is deprecated, consider importing AppConfigPipe directly */ -@NgModule({ - imports: [AppConfigPipe], - exports: [AppConfigPipe] -}) -export class AppConfigModule {} +/** + * Provides all necessary entries for the app extensibility + * @returns list of providers + */ +export function provideAppExtensions(): (Provider | EnvironmentProviders)[] { + return [ + provideAppInitializer(() => { + const appExtensionService = inject(AppExtensionService); + return appExtensionService.load(); + }) + ]; +} diff --git a/lib/extensions/src/lib/services/startup-extension-factory.ts b/lib/extensions/src/lib/services/startup-extension-factory.ts deleted file mode 100644 index 07e0c1f279..0000000000 --- a/lib/extensions/src/lib/services/startup-extension-factory.ts +++ /dev/null @@ -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(); diff --git a/lib/extensions/src/public-api.ts b/lib/extensions/src/public-api.ts index 9d5e2bdfc7..3754faf88d 100644 --- a/lib/extensions/src/public-api.ts +++ b/lib/extensions/src/public-api.ts @@ -41,3 +41,4 @@ export * from './lib/store/states/repository.state'; export * from './lib/components/public-api'; export * from './lib/extensions.module'; +export * from './lib/providers';