[ACA-4310] - Show the breadcrumb even for invalid selections in searc… (#7241)

* [ACA-4310] - Show the breadcrumb even for invalid selections in search results

* Empty commit

Co-authored-by: Ardit Domi <arditdomi@apl-c02g64vpmd6t.home>
This commit is contained in:
arditdomi 2021-09-08 12:14:08 +01:00 committed by GitHub
parent 20f1ca1cf9
commit cb79b216ce
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 4 deletions

View File

@ -269,7 +269,7 @@ describe('ContentNodeSelectorPanelComponent', () => {
});
it('should show the breadcrumb for the selected node when search results are displayed', async () => {
it('should show the breadcrumb in search results for a valid node selection', async () => {
searchQueryBuilderService.userQuery = 'mock-search-term';
searchQueryBuilderService.update();
triggerSearchResults(fakeResultSetPaging);
@ -283,6 +283,21 @@ describe('ContentNodeSelectorPanelComponent', () => {
expect(breadcrumb.componentInstance.folderNode.path).toBe(chosenNode.path);
});
it('should show the breadcrumb in search results even for an invalid node selection', async () => {
component.isSelectionValid = (node: Node) => node.isFile;
searchQueryBuilderService.userQuery = 'mock-search-term';
searchQueryBuilderService.update();
triggerSearchResults(fakeResultSetPaging);
const chosenNode = new Node({ path: { elements: ['fake-path'] }, isFile: false, isFolder: true });
component.onCurrentSelection([{ entry: chosenNode }]);
fixture.detectChanges();
const breadcrumb = fixture.debugElement.query(By.directive(DropdownBreadcrumbComponent));
expect(breadcrumb).not.toBeNull();
expect(breadcrumb.componentInstance.folderNode.path).toBe(chosenNode.path);
});
it('should NOT show the breadcrumb for the selected node when not on search results list', async () => {
triggerSearchResults(fakeResultSetPaging);
fixture.detectChanges();

View File

@ -248,7 +248,8 @@ export class ContentNodeSelectorPanelComponent implements OnInit, OnDestroy {
showingSearchResults: boolean = false;
loadingSearchResults: boolean = false;
inDialog: boolean = false;
_chosenNode: Node [] = null;
_chosenNode: Node[] = null;
selectionWithoutValidation: Node[] = null;
folderIdToShow: string | null = null;
breadcrumbFolderTitle: string | null = null;
startSiteGuid: string | null = null;
@ -454,8 +455,8 @@ export class ContentNodeSelectorPanelComponent implements OnInit, OnDestroy {
get breadcrumbFolderNode(): Node | null {
let folderNode: Node;
if (this.showingSearchResults && this.chosenNode) {
folderNode = this.chosenNode[0];
if (this.showingSearchResults && this.selectionWithoutValidation?.length) {
folderNode = this.selectionWithoutValidation[0];
} else {
folderNode = this.documentList.folderNode;
}
@ -629,6 +630,7 @@ export class ContentNodeSelectorPanelComponent implements OnInit, OnDestroy {
onCurrentSelection(nodesEntries: NodeEntry[]): void {
const validNodesEntity = nodesEntries.filter((node) => this.isSelectionValid(node.entry));
this.chosenNode = validNodesEntity.map((node) => node.entry);
this.selectionWithoutValidation = nodesEntries.map(node => node.entry);
}
setTitleIfCustomSite(site: SiteEntry) {