diff --git a/projects/aca-content/assets/i18n/en.json b/projects/aca-content/assets/i18n/en.json index e1ce84a11..bdd4ea332 100644 --- a/projects/aca-content/assets/i18n/en.json +++ b/projects/aca-content/assets/i18n/en.json @@ -446,6 +446,7 @@ "NODE_MOVE": { "SINGULAR": "Moved {{ success }} item.", "PLURAL": "Moved {{ success }} items.", + "GENERAL": "Moved item", "PARTIAL": { "SINGULAR": "Partially moved {{ partially }} item.", "PLURAL": "Partially moved {{ partially }} items.", diff --git a/projects/aca-content/src/lib/components/files/files.component.html b/projects/aca-content/src/lib/components/files/files.component.html index 5fe5142f8..173d1ec5d 100644 --- a/projects/aca-content/src/lib/components/files/files.component.html +++ b/projects/aca-content/src/lib/components/files/files.component.html @@ -6,7 +6,8 @@ [folderNode]="node" [selectedRowItemsCount]="selectedRowItemsCount" [maxItems]="isSmallScreen ? 1 : 0" (navigate)="onBreadcrumbNavigate($event)" - (breadcrumbPathElementsChange)="breadcrumbPathNames = $event"/> + (breadcrumbPathElementsChange)="breadcrumbPathNames = $event" + (dropped)="onBreadcrumbDrop($event)"/> diff --git a/projects/aca-content/src/lib/components/files/files.component.ts b/projects/aca-content/src/lib/components/files/files.component.ts index d75c2d10c..6504cceec 100644 --- a/projects/aca-content/src/lib/components/files/files.component.ts +++ b/projects/aca-content/src/lib/components/files/files.component.ts @@ -26,6 +26,8 @@ import { CustomEmptyContentTemplateDirective, DataColumnComponent, DataColumnListComponent, + DataRow, + NotificationService, PaginationComponent, ShowHeaderMode } from '@alfresco/adf-core'; @@ -56,12 +58,13 @@ import { } from '@alfresco/adf-content-services'; import { DocumentListPresetRef, DynamicColumnComponent } from '@alfresco/adf-extensions'; import { CommonModule } from '@angular/common'; -import { TranslatePipe } from '@ngx-translate/core'; +import { TranslatePipe, TranslateService } from '@ngx-translate/core'; import { DocumentListDirective } from '../../directives/document-list.directive'; import { MatProgressSpinnerModule } from '@angular/material/progress-spinner'; import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; import { HttpErrorResponse } from '@angular/common/http'; import { extractFiltersFromEncodedQuery } from '../../utils/aca-search-utils'; +import { CdkDragDrop } from '@angular/cdk/drag-drop'; @Component({ imports: [ @@ -92,8 +95,10 @@ import { extractFiltersFromEncodedQuery } from '../../utils/aca-search-utils'; export class FilesComponent extends PageComponent implements OnInit, OnDestroy { private readonly contentApi = inject(ContentApiService); private readonly nodeActionsService = inject(NodeActionsService); + private readonly notificationService = inject(NotificationService); private readonly route = inject(ActivatedRoute); private readonly queryBuilderService = inject(SearchHeaderQueryBuilderService); + private readonly translateService = inject(TranslateService); isValidPath = true; isAdmin = false; @@ -419,4 +424,14 @@ export class FilesComponent extends PageComponent implements OnInit, OnDestroy { } } } + + onBreadcrumbDrop(event: CdkDragDrop) { + this.documentListService.moveNode(event.item.data.id, event.container.id).subscribe({ + next: () => { + this.documentListService.reload(); + this.notificationService.showInfo(this.translateService.instant('APP.MESSAGES.INFO.NODE_MOVE.GENERAL')); + }, + error: () => this.notificationService.showError(this.translateService.instant('APP.MESSAGES.ERRORS.NODE_MOVE')) + }); + } }