ACS-7393: content metadata as standalone

This commit is contained in:
Denys Vuika
2024-07-25 12:01:38 -04:00
parent a5a0b555e3
commit f24003ca1b
6 changed files with 59 additions and 48 deletions

View File

@@ -61,7 +61,8 @@ describe('ContentMetadataCardComponent', () => {
MatDialogModule, MatDialogModule,
PipeModule, PipeModule,
MatSnackBarModule, MatSnackBarModule,
MatTooltipModule MatTooltipModule,
ContentMetadataCardComponent
], ],
providers: [ providers: [
{ provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock }, { provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock },
@@ -69,7 +70,7 @@ describe('ContentMetadataCardComponent', () => {
{ {
provide: APP_INITIALIZER, provide: APP_INITIALIZER,
useFactory: versionCompatibilityFactory, useFactory: versionCompatibilityFactory,
deps: [ VersionCompatibilityService ], deps: [VersionCompatibilityService],
multi: true multi: true
} }
] ]

View File

@@ -22,9 +22,17 @@ import { ContentMetadataCustomPanel, PresetConfig } from '../../interfaces/conte
import { VersionCompatibilityService } from '../../../version-compatibility/version-compatibility.service'; import { VersionCompatibilityService } from '../../../version-compatibility/version-compatibility.service';
import { ContentService } from '../../../common/services/content.service'; import { ContentService } from '../../../common/services/content.service';
import { AllowableOperationsEnum } from '../../../common/models/allowable-operations.enum'; 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({ @Component({
selector: 'adf-content-metadata-card', selector: 'adf-content-metadata-card',
standalone: true,
imports: [CommonModule, MatCardModule, ContentMetadataComponent, MatButtonModule, MatIconModule, TranslateModule],
templateUrl: './content-metadata-card.component.html', templateUrl: './content-metadata-card.component.html',
styleUrls: ['./content-metadata-card.component.scss'], styleUrls: ['./content-metadata-card.component.scss'],
encapsulation: ViewEncapsulation.None, encapsulation: ViewEncapsulation.None,

View File

@@ -195,7 +195,8 @@ describe('ContentMetadataComponent', () => {
MatSnackBarModule, MatSnackBarModule,
MatProgressBarModule, MatProgressBarModule,
MatTooltipModule, MatTooltipModule,
PipeModule PipeModule,
ContentMetadataComponent
], ],
providers: [ providers: [
{ provide: TranslationService, useClass: TranslationMock }, { provide: TranslationService, useClass: TranslationMock },

View File

@@ -15,21 +15,14 @@
* limitations under the License. * limitations under the License.
*/ */
import { import { Component, Input, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewEncapsulation } from '@angular/core';
Component,
Input,
OnChanges,
OnDestroy,
OnInit,
SimpleChanges,
ViewEncapsulation
} from '@angular/core';
import { Category, CategoryEntry, CategoryLinkBody, CategoryPaging, Node, TagBody, TagEntry, TagPaging } from '@alfresco/js-api'; import { Category, CategoryEntry, CategoryLinkBody, CategoryPaging, Node, TagBody, TagEntry, TagPaging } from '@alfresco/js-api';
import { forkJoin, Observable, of, Subject, zip } from 'rxjs'; import { forkJoin, Observable, of, Subject, zip } from 'rxjs';
import { import {
AppConfigService, AppConfigService,
CardViewBaseItemModel, CardViewBaseItemModel,
CardViewItem, CardViewItem,
CardViewModule,
NotificationService, NotificationService,
TranslationService, TranslationService,
UpdateNotification UpdateNotification
@@ -45,6 +38,17 @@ import { CategoryService } from '../../../category/services/category.service';
import { CategoriesManagementMode } from '../../../category/categories-management/categories-management-mode'; import { CategoriesManagementMode } from '../../../category/categories-management/categories-management-mode';
import { AllowableOperationsEnum } from '../../../common/models/allowable-operations.enum'; import { AllowableOperationsEnum } from '../../../common/models/allowable-operations.enum';
import { ContentService } from '../../../common/services/content.service'; 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 { TagModule } from '../../../tag';
import { CategoriesManagementComponent } from '../../../category';
import { DynamicExtensionComponent } from '@alfresco/adf-extensions';
import { MatProgressBarModule } from '@angular/material/progress-bar';
const DEFAULT_SEPARATOR = ', '; const DEFAULT_SEPARATOR = ', ';
@@ -56,6 +60,21 @@ enum DefaultPanels {
@Component({ @Component({
selector: 'adf-content-metadata', selector: 'adf-content-metadata',
standalone: true,
imports: [
CommonModule,
MatExpansionModule,
ContentMetadataHeaderComponent,
MatButtonModule,
TranslateModule,
MatIconModule,
CardViewModule,
MatChipsModule,
TagModule,
CategoriesManagementComponent,
DynamicExtensionComponent,
MatProgressBarModule
],
templateUrl: './content-metadata.component.html', templateUrl: './content-metadata.component.html',
styleUrls: ['./content-metadata.component.scss'], styleUrls: ['./content-metadata.component.scss'],
host: { class: 'adf-content-metadata' }, host: { class: 'adf-content-metadata' },
@@ -173,12 +192,10 @@ export class ContentMetadataComponent implements OnChanges, OnInit, OnDestroy {
this.updateChanges(updatedNode.changed); this.updateChanges(updatedNode.changed);
}); });
this.cardViewContentUpdateService.updatedAspect$ this.cardViewContentUpdateService.updatedAspect$.pipe(debounceTime(500), takeUntil(this.onDestroy$)).subscribe((node) => {
.pipe(debounceTime(500), takeUntil(this.onDestroy$)) this.node.aspectNames = node?.aspectNames;
.subscribe((node) => { this.loadProperties(node);
this.node.aspectNames = node?.aspectNames; });
this.loadProperties(node);
});
this.loadProperties(this.node); this.loadProperties(this.node);
this.verifyAllowableOperations(); this.verifyAllowableOperations();
@@ -210,7 +227,10 @@ export class ContentMetadataComponent implements OnChanges, OnInit, OnDestroy {
} }
isPanelEditing(panelTitle: string): boolean { 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) { protected handleUpdateError(error: Error) {
@@ -250,7 +270,6 @@ export class ContentMetadataComponent implements OnChanges, OnInit, OnDestroy {
if (changes.displayDefaultProperties?.currentValue) { if (changes.displayDefaultProperties?.currentValue) {
this.expandPanel(this.DefaultPanels.PROPERTIES); this.expandPanel(this.DefaultPanels.PROPERTIES);
} }
} }
ngOnDestroy() { ngOnDestroy() {
@@ -365,7 +384,8 @@ export class ContentMetadataComponent implements OnChanges, OnInit, OnDestroy {
} }
keyDown(event: KeyboardEvent) { keyDown(event: KeyboardEvent) {
if (event.keyCode === 37 || event.keyCode === 39) { // ArrowLeft && ArrowRight if (event.keyCode === 37 || event.keyCode === 39) {
// ArrowLeft && ArrowRight
event.stopPropagation(); event.stopPropagation();
} }
} }

View File

@@ -15,35 +15,16 @@
* limitations under the License. * limitations under the License.
*/ */
import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core'; 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 { ContentMetadataComponent } from './components/content-metadata/content-metadata.component';
import { ContentMetadataCardComponent } from './components/content-metadata-card/content-metadata-card.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'; 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({ @NgModule({
imports: [ imports: [...CONTENT_METADATA_DIRECTIVES],
CommonModule, exports: [...CONTENT_METADATA_DIRECTIVES]
MaterialModule,
CoreModule,
TagModule,
CategoriesModule,
ExtensionsModule,
ContentMetadataHeaderComponent
],
exports: [
ContentMetadataComponent,
ContentMetadataCardComponent,
ContentMetadataHeaderComponent
],
declarations: [
ContentMetadataComponent,
ContentMetadataCardComponent
]
}) })
export class ContentMetadataModule {} export class ContentMetadataModule {}

View File

@@ -30,7 +30,7 @@ import { ContentNodeSelectorModule } from './content-node-selector/content-node-
import { ContentNodeShareModule } from './content-node-share/content-node-share.module'; import { ContentNodeShareModule } from './content-node-share/content-node-share.module';
import { ContentDirectiveModule } from './directives/content-directive.module'; import { ContentDirectiveModule } from './directives/content-directive.module';
import { CONTENT_DIALOG_DIRECTIVES } from './dialogs/dialog.module'; import { CONTENT_DIALOG_DIRECTIVES } from './dialogs/dialog.module';
import { ContentMetadataModule } from './content-metadata/content-metadata.module'; import { CONTENT_METADATA_DIRECTIVES } from './content-metadata/content-metadata.module';
import { PermissionManagerModule } from './permission-manager/permission-manager.module'; import { PermissionManagerModule } from './permission-manager/permission-manager.module';
import { TreeViewModule } from './tree-view/tree-view.module'; import { TreeViewModule } from './tree-view/tree-view.module';
import { ContentTypeModule } from './content-type/content-type.module'; import { ContentTypeModule } from './content-type/content-type.module';
@@ -65,7 +65,7 @@ import { NewVersionUploaderDialogComponent } from './new-version-uploader';
...BREADCRUMB_DIRECTIVES, ...BREADCRUMB_DIRECTIVES,
ContentNodeSelectorModule, ContentNodeSelectorModule,
ContentNodeShareModule, ContentNodeShareModule,
ContentMetadataModule, ...CONTENT_METADATA_DIRECTIVES,
ContentDirectiveModule, ContentDirectiveModule,
PermissionManagerModule, PermissionManagerModule,
VersionManagerModule, VersionManagerModule,
@@ -91,7 +91,7 @@ import { NewVersionUploaderDialogComponent } from './new-version-uploader';
...BREADCRUMB_DIRECTIVES, ...BREADCRUMB_DIRECTIVES,
ContentNodeSelectorModule, ContentNodeSelectorModule,
ContentNodeShareModule, ContentNodeShareModule,
ContentMetadataModule, ...CONTENT_METADATA_DIRECTIVES,
...CONTENT_DIALOG_DIRECTIVES, ...CONTENT_DIALOG_DIRECTIVES,
ContentDirectiveModule, ContentDirectiveModule,
PermissionManagerModule, PermissionManagerModule,