diff --git a/src/app/shared/object-list/sidebar-search-list-element/sidebar-search-list-element.component.html b/src/app/shared/object-list/sidebar-search-list-element/sidebar-search-list-element.component.html index 040f528768d..e96753167d0 100644 --- a/src/app/shared/object-list/sidebar-search-list-element/sidebar-search-list-element.component.html +++ b/src/app/shared/object-list/sidebar-search-list-element/sidebar-search-list-element.component.html @@ -1,4 +1,4 @@ - +
diff --git a/src/app/shared/object-list/sidebar-search-list-element/sidebar-search-list-element.component.ts b/src/app/shared/object-list/sidebar-search-list-element/sidebar-search-list-element.component.ts index e65883cd3ec..20847d3c75d 100644 --- a/src/app/shared/object-list/sidebar-search-list-element/sidebar-search-list-element.component.ts +++ b/src/app/shared/object-list/sidebar-search-list-element/sidebar-search-list-element.component.ts @@ -15,6 +15,7 @@ import { import { find, map, + switchMap, } from 'rxjs/operators'; import { DSONameService } from '../../../core/breadcrumbs/dso-name.service'; @@ -68,7 +69,7 @@ export class SidebarSearchListElementComponent, K exte ngOnInit(): void { super.ngOnInit(); if (hasValue(this.dso)) { - this.parentTitle$ = this.getParentTitle(); + this.parentTitle$ = this.getHierarchicalName(); this.description = this.getDescription(); } } @@ -92,6 +93,33 @@ export class SidebarSearchListElementComponent, K exte ); } + getHierarchicalName(): Observable { + return this.getParentTitle().pipe( + switchMap((parentTitle: string) => { + return this.getParent().pipe( + switchMap((parentRD: RemoteData) => { + if (hasValue(parentRD) && hasValue(parentRD.payload)) { + const parentInstance = this.createInstanceFromDSpaceObject(parentRD.payload); + return parentInstance.getHierarchicalName().pipe( + map((ancestorName: string) => ancestorName ? `${ancestorName} > ${parentTitle}` : parentTitle), + ); + } + return observableOf(parentTitle); + }), + ); + }), + ); + } + + /** + * Utility method to create an instance of the current class from a DSpaceObject + */ + private createInstanceFromDSpaceObject(dso: DSpaceObject): this { + const instance = Object.create(this); + instance.dso = dso; + return instance; + } + /** * Get the parent of the object */ diff --git a/src/app/shared/truncatable/truncatable-part/truncatable-part.component.scss b/src/app/shared/truncatable/truncatable-part/truncatable-part.component.scss index e045b197d28..5602606a5c2 100644 --- a/src/app/shared/truncatable/truncatable-part/truncatable-part.component.scss +++ b/src/app/shared/truncatable/truncatable-part/truncatable-part.component.scss @@ -9,3 +9,8 @@ .removeFaded.content::after { display: none; } + +.content { + white-space: normal; + overflow: visible; +}