From e4b9cf3dbe96b03e42d8fa3a94a713d0a02d09a5 Mon Sep 17 00:00:00 2001 From: Denys Vuika Date: Fri, 26 Jul 2024 11:04:02 -0400 Subject: [PATCH] ACS-7390: Migrating content components to Standalone (#9997) * ACS-7393: content metadata as standalone * ACS-7408: version manager as standalone * ACS-7408: version manager as standalone * ACS-7408: version manager as standalone * ACS-7407: upload as standalone * ACS-7404: tag as standalone * ACS-7404: tag as standalone * ACS-7401: permission manager as standalone * ACS-7395: content node share as standalone * ACS-7402: search components [ci:force] * ACS-7402: search components [ci:force] * content node selector panel * content node selector panel * Revert "content node selector panel" This reverts commit 3ad828e443a51b9c058f97d3c9090ed0f5b2519f. * Revert "content node selector panel" This reverts commit 5a2cd5a5b32bed1ad0b0ca6004c39aaaac751b42. --- .../content-metadata-card.component.spec.ts | 5 +- .../content-metadata-card.component.ts | 8 ++ .../content-metadata.component.spec.ts | 3 +- .../content-metadata.component.ts | 56 ++++++--- .../content-metadata.module.ts | 29 +---- .../content-node-share.dialog.html | 1 - .../content-node-share.dialog.spec.ts | 18 +-- .../content-node-share.dialog.ts | 29 ++++- .../content-node-share.directive.spec.ts | 7 +- .../content-node-share.directive.ts | 1 + .../content-node-share.module.ts | 11 +- .../src/lib/content.module.ts | 54 ++++---- .../new-version-uploader.dialog.spec.ts | 3 - .../add-permission-dialog.component.spec.ts | 2 +- .../add-permission-dialog.component.ts | 44 +++++-- .../add-permission-panel.component.spec.ts | 2 +- .../add-permission-panel.component.ts | 23 +++- .../add-permission.component.html | 4 +- .../add-permission.component.spec.ts | 2 +- .../add-permission.component.ts | 32 +++-- .../components/inherited-button.directive.ts | 18 +-- .../node-path-column.component.ts | 5 +- .../permission-container.component.ts | 44 ++++++- .../permission-list.component.html | 4 +- .../permission-list.component.ts | 23 +++- .../components/pop-over.directive.spec.ts | 5 +- .../components/pop-over.directive.ts | 16 +-- .../user-icon-column.component.ts | 10 +- .../user-name-column.component.ts | 3 + .../user-role-column.component.ts | 7 ++ .../permission-manager.module.ts | 48 +++---- .../search-check-list.component.ts | 18 +-- ...-chip-autocomplete-input.component.spec.ts | 3 +- ...earch-chip-autocomplete-input.component.ts | 12 +- .../search-chip-list.component.spec.ts | 8 +- .../search-chip-list.component.ts | 7 +- .../src/lib/search/search.module.ts | 20 +-- .../src/lib/tag/tag-actions.component.spec.ts | 2 +- .../src/lib/tag/tag-actions.component.ts | 41 +++--- .../src/lib/tag/tag-list.component.spec.ts | 2 +- .../src/lib/tag/tag-list.component.ts | 18 +-- .../lib/tag/tag-node-list.component.spec.ts | 2 +- .../src/lib/tag/tag-node-list.component.ts | 8 +- .../src/lib/tag/tag.module.ts | 27 +--- .../tags-creator.component.spec.ts | 26 +--- .../tags-creator/tags-creator.component.ts | 24 +++- .../src/lib/tree-view/tree-view.module.ts | 2 +- .../file-uploading-dialog.component.ts | 117 +++++++++--------- .../file-uploading-list-row.component.html | 2 +- .../file-uploading-list-row.component.ts | 22 ++++ .../file-uploading-list.component.ts | 56 +++------ .../components/upload-button.component.ts | 6 + .../components/upload-drag-area.component.ts | 3 + .../upload-version-button.component.ts | 18 ++- .../file-draggable.directive.spec.ts | 20 +-- .../directives/file-draggable.directive.ts | 6 +- .../directives/toggle-icon.directive.spec.ts | 11 +- .../directives/toggle-icon.directive.ts | 1 + .../src/lib/upload/upload.module.ts | 41 +++--- .../version-compatibility.directive.spec.ts | 4 +- .../version-compatibility.directive.ts | 7 +- .../version-compatibility.module.ts | 7 +- .../version-comparison.component.html | 4 +- .../version-comparison.component.ts | 11 +- .../version-manager/version-list.component.ts | 24 +++- .../version-manager.component.html | 8 +- .../version-manager.component.ts | 26 ++-- .../version-manager/version-manager.module.ts | 21 ++-- .../version-upload.component.html | 9 +- .../version-upload.component.ts | 37 ++++-- 70 files changed, 682 insertions(+), 516 deletions(-) diff --git a/lib/content-services/src/lib/content-metadata/components/content-metadata-card/content-metadata-card.component.spec.ts b/lib/content-services/src/lib/content-metadata/components/content-metadata-card/content-metadata-card.component.spec.ts index d030fecc74..9e7e5b6234 100644 --- a/lib/content-services/src/lib/content-metadata/components/content-metadata-card/content-metadata-card.component.spec.ts +++ b/lib/content-services/src/lib/content-metadata/components/content-metadata-card/content-metadata-card.component.spec.ts @@ -61,7 +61,8 @@ describe('ContentMetadataCardComponent', () => { MatDialogModule, PipeModule, MatSnackBarModule, - MatTooltipModule + MatTooltipModule, + ContentMetadataCardComponent ], providers: [ { provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock }, @@ -69,7 +70,7 @@ describe('ContentMetadataCardComponent', () => { { provide: APP_INITIALIZER, useFactory: versionCompatibilityFactory, - deps: [ VersionCompatibilityService ], + deps: [VersionCompatibilityService], multi: true } ] diff --git a/lib/content-services/src/lib/content-metadata/components/content-metadata-card/content-metadata-card.component.ts b/lib/content-services/src/lib/content-metadata/components/content-metadata-card/content-metadata-card.component.ts index a8054fb081..af55a615bd 100644 --- a/lib/content-services/src/lib/content-metadata/components/content-metadata-card/content-metadata-card.component.ts +++ b/lib/content-services/src/lib/content-metadata/components/content-metadata-card/content-metadata-card.component.ts @@ -22,9 +22,17 @@ import { ContentMetadataCustomPanel, PresetConfig } from '../../interfaces/conte import { VersionCompatibilityService } from '../../../version-compatibility/version-compatibility.service'; import { ContentService } from '../../../common/services/content.service'; import { AllowableOperationsEnum } from '../../../common/models/allowable-operations.enum'; +import { CommonModule } from '@angular/common'; +import { MatCardModule } from '@angular/material/card'; +import { ContentMetadataComponent } from '../content-metadata/content-metadata.component'; +import { MatButtonModule } from '@angular/material/button'; +import { MatIconModule } from '@angular/material/icon'; +import { TranslateModule } from '@ngx-translate/core'; @Component({ selector: 'adf-content-metadata-card', + standalone: true, + imports: [CommonModule, MatCardModule, ContentMetadataComponent, MatButtonModule, MatIconModule, TranslateModule], templateUrl: './content-metadata-card.component.html', styleUrls: ['./content-metadata-card.component.scss'], encapsulation: ViewEncapsulation.None, diff --git a/lib/content-services/src/lib/content-metadata/components/content-metadata/content-metadata.component.spec.ts b/lib/content-services/src/lib/content-metadata/components/content-metadata/content-metadata.component.spec.ts index 64b1db0966..886f34500d 100644 --- a/lib/content-services/src/lib/content-metadata/components/content-metadata/content-metadata.component.spec.ts +++ b/lib/content-services/src/lib/content-metadata/components/content-metadata/content-metadata.component.spec.ts @@ -195,7 +195,8 @@ describe('ContentMetadataComponent', () => { MatSnackBarModule, MatProgressBarModule, MatTooltipModule, - PipeModule + PipeModule, + ContentMetadataComponent ], providers: [ { provide: TranslationService, useClass: TranslationMock }, diff --git a/lib/content-services/src/lib/content-metadata/components/content-metadata/content-metadata.component.ts b/lib/content-services/src/lib/content-metadata/components/content-metadata/content-metadata.component.ts index c24ba5d5a4..ec4f84e51e 100644 --- a/lib/content-services/src/lib/content-metadata/components/content-metadata/content-metadata.component.ts +++ b/lib/content-services/src/lib/content-metadata/components/content-metadata/content-metadata.component.ts @@ -15,21 +15,14 @@ * limitations under the License. */ -import { - Component, - Input, - OnChanges, - OnDestroy, - OnInit, - SimpleChanges, - ViewEncapsulation -} from '@angular/core'; +import { Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewEncapsulation } from '@angular/core'; import { Category, CategoryEntry, CategoryLinkBody, CategoryPaging, Node, TagBody, TagEntry, TagPaging } from '@alfresco/js-api'; import { forkJoin, Observable, of, Subject, zip } from 'rxjs'; import { AppConfigService, CardViewBaseItemModel, CardViewItem, + CardViewModule, NotificationService, TranslationService, UpdateNotification @@ -45,6 +38,17 @@ import { CategoryService } from '../../../category/services/category.service'; import { CategoriesManagementMode } from '../../../category/categories-management/categories-management-mode'; import { AllowableOperationsEnum } from '../../../common/models/allowable-operations.enum'; import { ContentService } from '../../../common/services/content.service'; +import { CommonModule } from '@angular/common'; +import { MatExpansionModule } from '@angular/material/expansion'; +import { ContentMetadataHeaderComponent } from './content-metadata-header.component'; +import { MatButtonModule } from '@angular/material/button'; +import { TranslateModule } from '@ngx-translate/core'; +import { MatIconModule } from '@angular/material/icon'; +import { MatChipsModule } from '@angular/material/chips'; +import { CategoriesManagementComponent } from '../../../category'; +import { DynamicExtensionComponent } from '@alfresco/adf-extensions'; +import { MatProgressBarModule } from '@angular/material/progress-bar'; +import { TagsCreatorComponent } from '../../../tag'; const DEFAULT_SEPARATOR = ', '; @@ -56,6 +60,21 @@ enum DefaultPanels { @Component({ selector: 'adf-content-metadata', + standalone: true, + imports: [ + CommonModule, + MatExpansionModule, + ContentMetadataHeaderComponent, + MatButtonModule, + TranslateModule, + MatIconModule, + CardViewModule, + MatChipsModule, + CategoriesManagementComponent, + DynamicExtensionComponent, + MatProgressBarModule, + TagsCreatorComponent + ], templateUrl: './content-metadata.component.html', styleUrls: ['./content-metadata.component.scss'], host: { class: 'adf-content-metadata' }, @@ -173,12 +192,10 @@ export class ContentMetadataComponent implements OnChanges, OnInit, OnDestroy { this.updateChanges(updatedNode.changed); }); - this.cardViewContentUpdateService.updatedAspect$ - .pipe(debounceTime(500), takeUntil(this.onDestroy$)) - .subscribe((node) => { - this.node.aspectNames = node?.aspectNames; - this.loadProperties(node); - }); + this.cardViewContentUpdateService.updatedAspect$.pipe(debounceTime(500), takeUntil(this.onDestroy$)).subscribe((node) => { + this.node.aspectNames = node?.aspectNames; + this.loadProperties(node); + }); this.loadProperties(this.node); this.verifyAllowableOperations(); @@ -210,7 +227,10 @@ export class ContentMetadataComponent implements OnChanges, OnInit, OnDestroy { } isPanelEditing(panelTitle: string): boolean { - return this.editing && ((this.currentPanel.panelTitle === panelTitle && this.editedPanelTitle === panelTitle) || this.editedPanelTitle === panelTitle); + return ( + this.editing && + ((this.currentPanel.panelTitle === panelTitle && this.editedPanelTitle === panelTitle) || this.editedPanelTitle === panelTitle) + ); } protected handleUpdateError(error: Error) { @@ -250,7 +270,6 @@ export class ContentMetadataComponent implements OnChanges, OnInit, OnDestroy { if (changes.displayDefaultProperties?.currentValue) { this.expandPanel(this.DefaultPanels.PROPERTIES); } - } ngOnDestroy() { @@ -365,7 +384,8 @@ export class ContentMetadataComponent implements OnChanges, OnInit, OnDestroy { } keyDown(event: KeyboardEvent) { - if (event.keyCode === 37 || event.keyCode === 39) { // ArrowLeft && ArrowRight + if (event.keyCode === 37 || event.keyCode === 39) { + // ArrowLeft && ArrowRight event.stopPropagation(); } } diff --git a/lib/content-services/src/lib/content-metadata/content-metadata.module.ts b/lib/content-services/src/lib/content-metadata/content-metadata.module.ts index ea2fcac59d..aa5538b247 100644 --- a/lib/content-services/src/lib/content-metadata/content-metadata.module.ts +++ b/lib/content-services/src/lib/content-metadata/content-metadata.module.ts @@ -15,35 +15,16 @@ * limitations under the License. */ -import { CommonModule } from '@angular/common'; import { NgModule } from '@angular/core'; -import { MaterialModule } from '../material.module'; -import { CoreModule } from '@alfresco/adf-core'; import { ContentMetadataComponent } from './components/content-metadata/content-metadata.component'; import { ContentMetadataCardComponent } from './components/content-metadata-card/content-metadata-card.component'; -import { TagModule } from '../tag/tag.module'; -import { CategoriesModule } from '../category/category.module'; -import { ExtensionsModule } from '@alfresco/adf-extensions'; import { ContentMetadataHeaderComponent } from './components/content-metadata/content-metadata-header.component'; +export const CONTENT_METADATA_DIRECTIVES = [ContentMetadataComponent, ContentMetadataCardComponent, ContentMetadataHeaderComponent] as const; + +/** @deprecated use `...CONTENT_METADATA_DIRECTIVES` instead */ @NgModule({ - imports: [ - CommonModule, - MaterialModule, - CoreModule, - TagModule, - CategoriesModule, - ExtensionsModule, - ContentMetadataHeaderComponent - ], - exports: [ - ContentMetadataComponent, - ContentMetadataCardComponent, - ContentMetadataHeaderComponent - ], - declarations: [ - ContentMetadataComponent, - ContentMetadataCardComponent - ] + imports: [...CONTENT_METADATA_DIRECTIVES], + exports: [...CONTENT_METADATA_DIRECTIVES] }) export class ContentMetadataModule {} diff --git a/lib/content-services/src/lib/content-node-share/content-node-share.dialog.html b/lib/content-services/src/lib/content-node-share/content-node-share.dialog.html index 35775a2787..5dc9f98e45 100644 --- a/lib/content-services/src/lib/content-node-share/content-node-share.dialog.html +++ b/lib/content-services/src/lib/content-node-share/content-node-share.dialog.html @@ -83,7 +83,6 @@ data-automation-id="adf-share-link" class="adf-share-link__input" matInput - cdkFocusInitial placeholder="{{ 'SHARE.PUBLIC-LINK' | translate }}" [attr.aria-label]="'SHARE.PUBLIC-LINK' | translate" formControlName="sharedUrl" diff --git a/lib/content-services/src/lib/content-node-share/content-node-share.dialog.spec.ts b/lib/content-services/src/lib/content-node-share/content-node-share.dialog.spec.ts index e534164b33..7c037077ec 100644 --- a/lib/content-services/src/lib/content-node-share/content-node-share.dialog.spec.ts +++ b/lib/content-services/src/lib/content-node-share/content-node-share.dialog.spec.ts @@ -16,7 +16,7 @@ */ import { TestBed, ComponentFixture } from '@angular/core/testing'; -import { MatDialogRef, MAT_DIALOG_DATA, MatDialog } from '@angular/material/dialog'; +import { MatDialogRef, MAT_DIALOG_DATA, MatDialog, MatDialogModule } from '@angular/material/dialog'; import { of } from 'rxjs'; import { NotificationService } from '@alfresco/adf-core'; import { NodesApiService, RenditionService } from '../common'; @@ -33,7 +33,6 @@ import { MatSlideToggleHarness } from '@angular/material/slide-toggle/testing'; describe('ShareDialogComponent', () => { let loader: HarnessLoader; let node: NodeEntry; - let matDialog: MatDialog; const notificationServiceMock = { openSnackMessage: jasmine.createSpy('openSnackMessage') }; @@ -56,7 +55,7 @@ describe('ShareDialogComponent', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [ContentTestingModule], + imports: [ContentTestingModule, MatDialogModule, ShareDialogComponent], providers: [ { provide: NotificationService, useValue: notificationServiceMock }, { @@ -71,7 +70,6 @@ describe('ShareDialogComponent', () => { fixture = TestBed.createComponent(ShareDialogComponent); component = fixture.componentInstance; - matDialog = TestBed.inject(MatDialog); sharedLinksApiService = TestBed.inject(SharedLinksApiService); renditionService = TestBed.inject(RenditionService); nodesApiService = TestBed.inject(NodesApiService); @@ -179,7 +177,8 @@ describe('ShareDialogComponent', () => { }); it('should open a confirmation dialog when unshare button is triggered', async () => { - spyOn(matDialog, 'open').and.returnValue({ beforeClosed: () => of(false) } as any); + const dialog = fixture.debugElement.injector.get(MatDialog); + const openSpy = spyOn(dialog, 'open').and.returnValue({ beforeClosed: () => of(false) } as any); spyOn(sharedLinksApiService, 'deleteSharedLink').and.callThrough(); node.entry.properties['qshare:sharedId'] = 'sharedId'; @@ -194,11 +193,12 @@ describe('ShareDialogComponent', () => { const toggle = await loader.getHarness(MatSlideToggleHarness.with({ selector: shareToggleId })); await toggle.toggle(); - expect(matDialog.open).toHaveBeenCalled(); + expect(openSpy).toHaveBeenCalled(); }); it('should unshare file when confirmation dialog returns true', async () => { - spyOn(matDialog, 'open').and.returnValue({ beforeClosed: () => of(true) } as any); + const dialog = fixture.debugElement.injector.get(MatDialog); + spyOn(dialog, 'open').and.returnValue({ beforeClosed: () => of(true) } as any); spyOn(sharedLinksApiService, 'deleteSharedLink').and.returnValue(of({})); node.entry.properties['qshare:sharedId'] = 'sharedId'; @@ -208,6 +208,7 @@ describe('ShareDialogComponent', () => { }; fixture.detectChanges(); + await fixture.whenStable(); const toggle = await loader.getHarness(MatSlideToggleHarness.with({ selector: shareToggleId })); await toggle.toggle(); @@ -216,7 +217,8 @@ describe('ShareDialogComponent', () => { }); it('should not unshare file when confirmation dialog returns false', async () => { - spyOn(matDialog, 'open').and.returnValue({ beforeClosed: () => of(false) } as any); + const dialog = fixture.debugElement.injector.get(MatDialog); + spyOn(dialog, 'open').and.returnValue({ beforeClosed: () => of(false) } as any); spyOn(sharedLinksApiService, 'deleteSharedLink').and.callThrough(); node.entry.properties['qshare:sharedId'] = 'sharedId'; diff --git a/lib/content-services/src/lib/content-node-share/content-node-share.dialog.ts b/lib/content-services/src/lib/content-node-share/content-node-share.dialog.ts index c5111a718f..5f1d241e8a 100644 --- a/lib/content-services/src/lib/content-node-share/content-node-share.dialog.ts +++ b/lib/content-services/src/lib/content-node-share/content-node-share.dialog.ts @@ -16,17 +16,24 @@ */ import { Component, Inject, OnInit, ViewEncapsulation, ViewChild, OnDestroy } from '@angular/core'; -import { MAT_DIALOG_DATA, MatDialog, MatDialogRef } from '@angular/material/dialog'; -import { MatSlideToggleChange } from '@angular/material/slide-toggle'; -import { FormControl, FormGroup, Validators } from '@angular/forms'; +import { MAT_DIALOG_DATA, MatDialog, MatDialogModule, MatDialogRef } from '@angular/material/dialog'; +import { MatSlideToggleChange, MatSlideToggleModule } from '@angular/material/slide-toggle'; +import { FormControl, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms'; import { Subject } from 'rxjs'; import { ContentService } from '../common/services/content.service'; import { SharedLinksApiService } from './services/shared-links-api.service'; import { SharedLinkBodyCreate } from '@alfresco/js-api'; -import { ConfirmDialogComponent } from '@alfresco/adf-core'; +import { ClipboardModule, ConfirmDialogComponent } from '@alfresco/adf-core'; import { ContentNodeShareSettings } from './content-node-share.settings'; import { RenditionService } from '../common/services/rendition.service'; import { format, add, endOfDay, isBefore } from 'date-fns'; +import { CommonModule } from '@angular/common'; +import { TranslateModule } from '@ngx-translate/core'; +import { MatIconModule } from '@angular/material/icon'; +import { MatFormFieldModule } from '@angular/material/form-field'; +import { MatDatepickerModule } from '@angular/material/datepicker'; +import { MatInputModule } from '@angular/material/input'; +import { MatButtonModule } from '@angular/material/button'; interface SharedDialogFormProps { sharedUrl: FormControl; @@ -35,6 +42,20 @@ interface SharedDialogFormProps { @Component({ selector: 'adf-share-dialog', + standalone: true, + imports: [ + CommonModule, + TranslateModule, + MatIconModule, + MatDialogModule, + ReactiveFormsModule, + MatSlideToggleModule, + MatFormFieldModule, + MatDatepickerModule, + MatInputModule, + ClipboardModule, + MatButtonModule + ], templateUrl: './content-node-share.dialog.html', styleUrls: ['./content-node-share.dialog.scss'], host: { class: 'adf-share-dialog' }, diff --git a/lib/content-services/src/lib/content-node-share/content-node-share.directive.spec.ts b/lib/content-services/src/lib/content-node-share/content-node-share.directive.spec.ts index aa19ffa4c8..65b77e4f9a 100644 --- a/lib/content-services/src/lib/content-node-share/content-node-share.directive.spec.ts +++ b/lib/content-services/src/lib/content-node-share/content-node-share.directive.spec.ts @@ -21,10 +21,12 @@ import { Component } from '@angular/core'; import { DOCUMENT } from '@angular/common'; import { ContentTestingModule } from '../testing/content.testing.module'; import { CoreModule } from '@alfresco/adf-core'; -import { ContentNodeShareModule } from './content-node-share.module'; +import { NodeSharedDirective } from '@alfresco/adf-content-services'; @Component({ selector: 'adf-node-share-test-component', + standalone: true, + imports: [NodeSharedDirective], template: ` - ` + standalone: true, + imports: [ToggleIconDirective], + template: ` ` }) class TestComponent { @ViewChild(ToggleIconDirective) @@ -36,10 +36,7 @@ describe('ToggleIconDirective', () => { beforeEach(() => { TestBed.configureTestingModule({ - declarations: [ - TestComponent, - ToggleIconDirective - ] + imports: [TestComponent] }); fixture = TestBed.createComponent(TestComponent); component = fixture.componentInstance; diff --git a/lib/content-services/src/lib/upload/directives/toggle-icon.directive.ts b/lib/content-services/src/lib/upload/directives/toggle-icon.directive.ts index 878c2f93b8..70ecf45691 100644 --- a/lib/content-services/src/lib/upload/directives/toggle-icon.directive.ts +++ b/lib/content-services/src/lib/upload/directives/toggle-icon.directive.ts @@ -19,6 +19,7 @@ import { Directive, HostListener } from '@angular/core'; @Directive({ selector: '[adf-toggle-icon]', + standalone: true, exportAs: 'toggleIcon' }) export class ToggleIconDirective { diff --git a/lib/content-services/src/lib/upload/upload.module.ts b/lib/content-services/src/lib/upload/upload.module.ts index 5eca44abc2..a48bf6cd38 100644 --- a/lib/content-services/src/lib/upload/upload.module.ts +++ b/lib/content-services/src/lib/upload/upload.module.ts @@ -15,9 +15,7 @@ * limitations under the License. */ -import { CommonModule } from '@angular/common'; import { NgModule } from '@angular/core'; -import { MaterialModule } from '../material.module'; import { FileUploadingDialogComponent } from './components/file-uploading-dialog.component'; import { FileUploadingListRowComponent } from './components/file-uploading-list-row.component'; import { FileUploadingListComponent } from './components/file-uploading-list.component'; @@ -25,33 +23,24 @@ import { UploadButtonComponent } from './components/upload-button.component'; import { UploadVersionButtonComponent } from './components/upload-version-button.component'; import { UploadDragAreaComponent } from './components/upload-drag-area.component'; import { FileUploadErrorPipe } from './pipes/file-upload-error.pipe'; -import { CoreModule, FileSizePipe } from '@alfresco/adf-core'; import { FileDraggableDirective } from './directives/file-draggable.directive'; import { ToggleIconDirective } from './directives/toggle-icon.directive'; -import { A11yModule } from '@angular/cdk/a11y'; +export const CONTENT_UPLOAD_DIRECTIVES = [ + FileUploadErrorPipe, + FileDraggableDirective, + ToggleIconDirective, + UploadDragAreaComponent, + UploadButtonComponent, + UploadVersionButtonComponent, + FileUploadingListRowComponent, + FileUploadingListComponent, + FileUploadingDialogComponent +] as const; + +/** @deprecated use `...CONTENT_UPLOAD_DIRECTIVES` instead or import standalone components directly */ @NgModule({ - imports: [CoreModule, CommonModule, MaterialModule, A11yModule, FileUploadErrorPipe, FileSizePipe], - declarations: [ - FileDraggableDirective, - UploadDragAreaComponent, - UploadButtonComponent, - UploadVersionButtonComponent, - FileUploadingDialogComponent, - FileUploadingListComponent, - FileUploadingListRowComponent, - ToggleIconDirective - ], - exports: [ - FileDraggableDirective, - UploadDragAreaComponent, - UploadButtonComponent, - UploadVersionButtonComponent, - FileUploadingDialogComponent, - FileUploadingListComponent, - FileUploadingListRowComponent, - FileUploadErrorPipe, - ToggleIconDirective - ] + imports: [...CONTENT_UPLOAD_DIRECTIVES], + exports: [...CONTENT_UPLOAD_DIRECTIVES] }) export class UploadModule {} diff --git a/lib/content-services/src/lib/version-compatibility/version-compatibility.directive.spec.ts b/lib/content-services/src/lib/version-compatibility/version-compatibility.directive.spec.ts index 0b176a0b39..6a27511f9e 100644 --- a/lib/content-services/src/lib/version-compatibility/version-compatibility.directive.spec.ts +++ b/lib/content-services/src/lib/version-compatibility/version-compatibility.directive.spec.ts @@ -21,10 +21,10 @@ import { TestBed, ComponentFixture } from '@angular/core/testing'; import { VersionCompatibilityService } from './version-compatibility.service'; import { VersionInfo } from '@alfresco/js-api'; -import { VersionCompatibilityModule } from './version-compatibility.module'; import { RedirectAuthService } from '@alfresco/adf-core'; import { EMPTY, of } from 'rxjs'; import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { VersionCompatibilityDirective } from '@alfresco/adf-content-services'; @Component({ template: ` @@ -51,7 +51,7 @@ describe('VersionCompatibilityDirective', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [VersionCompatibilityModule, HttpClientTestingModule], + imports: [VersionCompatibilityDirective, HttpClientTestingModule], declarations: [TestComponent], providers: [{ provide: RedirectAuthService, useValue: { onLogin: EMPTY, onTokenReceived: of() } }] }); diff --git a/lib/content-services/src/lib/version-compatibility/version-compatibility.directive.ts b/lib/content-services/src/lib/version-compatibility/version-compatibility.directive.ts index 260595cf4b..14d3809d5b 100644 --- a/lib/content-services/src/lib/version-compatibility/version-compatibility.directive.ts +++ b/lib/content-services/src/lib/version-compatibility/version-compatibility.directive.ts @@ -20,10 +20,10 @@ import { VersionCompatibilityService } from './version-compatibility.service'; import { take } from 'rxjs/operators'; @Directive({ - selector: '[adf-acs-version]' + selector: '[adf-acs-version]', + standalone: true }) export class VersionCompatibilityDirective { - /** Minimum version required for component to work correctly . */ @Input('adf-acs-version') set version(requiredVersion: string) { @@ -34,8 +34,7 @@ export class VersionCompatibilityDirective { private templateRef: TemplateRef, private viewContainer: ViewContainerRef, private versionCompatibilityService: VersionCompatibilityService - ) { - } + ) {} private validateAcsVersion(requiredVersion: string) { this.versionCompatibilityService.acsVersionInitialized$.pipe(take(1)).subscribe(() => { diff --git a/lib/content-services/src/lib/version-compatibility/version-compatibility.module.ts b/lib/content-services/src/lib/version-compatibility/version-compatibility.module.ts index 6e1707371e..066ec2204c 100644 --- a/lib/content-services/src/lib/version-compatibility/version-compatibility.module.ts +++ b/lib/content-services/src/lib/version-compatibility/version-compatibility.module.ts @@ -15,13 +15,12 @@ * limitations under the License. */ -import { CommonModule } from '@angular/common'; import { NgModule } from '@angular/core'; import { VersionCompatibilityDirective } from './version-compatibility.directive'; +/** @deprecated use `VersionCompatibilityDirective` instead */ @NgModule({ - imports: [CommonModule], - exports: [VersionCompatibilityDirective], - declarations: [VersionCompatibilityDirective] + imports: [VersionCompatibilityDirective], + exports: [VersionCompatibilityDirective] }) export class VersionCompatibilityModule {} diff --git a/lib/content-services/src/lib/version-manager/version-comparison.component.html b/lib/content-services/src/lib/version-manager/version-comparison.component.html index 4ba7258efa..af26d760fd 100644 --- a/lib/content-services/src/lib/version-manager/version-comparison.component.html +++ b/lib/content-services/src/lib/version-manager/version-comparison.component.html @@ -1,6 +1,6 @@
-

{{'ADF_VERSION_COMPARISON.CURRENT_VERSION'|translate }}

+

{{'ADF_VERSION_COMPARISON.CURRENT_VERSION' | translate }}

keyboard_arrow_right
-

{{'ADF_VERSION_COMPARISON.NEW_VERSION'|translate }}

+

{{'ADF_VERSION_COMPARISON.NEW_VERSION' | translate }}

- -
@@ -19,20 +17,16 @@
-
- close', [ - style({visibility: 'hidden'}), - animate('0.4s cubic-bezier(0.25, 0.8, 0.25, 1)') - ]), - transition('close => open', [ - style({visibility: 'visible'}), - animate('0.4s cubic-bezier(0.25, 0.8, 0.25, 1)') - ]) + state('open', style({ height: '175px', opacity: 1, visibility: 'visible' })), + state('close', style({ height: '0%', opacity: 0, visibility: 'hidden' })), + transition('open => close', [style({ visibility: 'hidden' }), animate('0.4s cubic-bezier(0.25, 0.8, 0.25, 1)')]), + transition('close => open', [style({ visibility: 'visible' }), animate('0.4s cubic-bezier(0.25, 0.8, 0.25, 1)')]) ]) ], encapsulation: ViewEncapsulation.None }) export class VersionManagerComponent implements OnInit { - /** Target node to manage version history. */ @Input() node: Node; @@ -86,9 +86,7 @@ export class VersionManagerComponent implements OnInit { uploadState: string = 'close'; - constructor(private contentService: ContentService, - private nodesApiService: NodesApiService) { - } + constructor(private contentService: ContentService, private nodesApiService: NodesApiService) {} ngOnInit() { if (this.newFileVersion) { diff --git a/lib/content-services/src/lib/version-manager/version-manager.module.ts b/lib/content-services/src/lib/version-manager/version-manager.module.ts index 7d19b06d58..bfe732b453 100644 --- a/lib/content-services/src/lib/version-manager/version-manager.module.ts +++ b/lib/content-services/src/lib/version-manager/version-manager.module.ts @@ -15,23 +15,22 @@ * limitations under the License. */ -import { CommonModule } from '@angular/common'; -import { FormsModule } from '@angular/forms'; import { NgModule } from '@angular/core'; -import { MaterialModule } from '../material.module'; - import { VersionUploadComponent } from './version-upload.component'; import { VersionManagerComponent } from './version-manager.component'; import { VersionListComponent } from './version-list.component'; -import { UploadModule } from '../upload/upload.module'; -import { VersionCompatibilityModule } from '../version-compatibility/version-compatibility.module'; -import { CoreModule, FileTypePipe } from '@alfresco/adf-core'; import { VersionComparisonComponent } from './version-comparison.component'; -import { ScrollingModule } from '@angular/cdk/scrolling'; +export const CONTENT_VERSION_DIRECTIVES = [ + VersionUploadComponent, + VersionManagerComponent, + VersionListComponent, + VersionComparisonComponent +] as const; + +/** @deprecated use `...CONTENT_VERSION_DIRECTIVES` instead */ @NgModule({ - imports: [CommonModule, MaterialModule, CoreModule, UploadModule, VersionCompatibilityModule, FormsModule, ScrollingModule, FileTypePipe], - exports: [VersionUploadComponent, VersionManagerComponent, VersionListComponent, FormsModule, VersionComparisonComponent], - declarations: [VersionUploadComponent, VersionManagerComponent, VersionListComponent, VersionComparisonComponent] + imports: [...CONTENT_VERSION_DIRECTIVES], + exports: [...CONTENT_VERSION_DIRECTIVES] }) export class VersionManagerModule {} diff --git a/lib/content-services/src/lib/version-manager/version-upload.component.html b/lib/content-services/src/lib/version-manager/version-upload.component.html index 8aeb14ea08..da7f98f4b0 100644 --- a/lib/content-services/src/lib/version-manager/version-upload.component.html +++ b/lib/content-services/src/lib/version-manager/version-upload.component.html @@ -8,11 +8,12 @@ - {{'ADF_VERSION_LIST.ACTIONS.UPLOAD.COMMENT' | translate}} - + {{'ADF_VERSION_LIST.ACTIONS.UPLOAD.COMMENT' | translate}} + -
(); - constructor(private contentService: ContentService, private uploadService: UploadService) { - } + constructor(private contentService: ContentService, private uploadService: UploadService) {} ngOnInit() { - this.uploadService.fileUploadStarting - .pipe(takeUntil(this.onDestroy$)) - .subscribe((event: FileUploadEvent) => { - this.disabled = true; - this.uploadStarted.emit(event); - }); + this.uploadService.fileUploadStarting.pipe(takeUntil(this.onDestroy$)).subscribe((event: FileUploadEvent) => { + this.disabled = true; + this.uploadStarted.emit(event); + }); } canUpload(): boolean { @@ -143,8 +158,8 @@ export class VersionUploadComponent implements OnInit, OnDestroy { } getNextMajorVersion(version: string): string { - const { major} = this.getParsedVersion(version); - return `${major + 1 }.0`; + const { major } = this.getParsedVersion(version); + return `${major + 1}.0`; } private getParsedVersion(version: string) {