diff --git a/src-ui/src/app/components/common/input/document-link/document-link.component.spec.ts b/src-ui/src/app/components/common/input/document-link/document-link.component.spec.ts index 34c427cf6..e00460ec5 100644 --- a/src-ui/src/app/components/common/input/document-link/document-link.component.spec.ts +++ b/src-ui/src/app/components/common/input/document-link/document-link.component.spec.ts @@ -20,6 +20,10 @@ const documents = [ id: 12, title: 'Document 12 bar', }, + { + id: 16, + title: 'Document 16 bar', + }, { id: 23, title: 'Document 23 bar', @@ -101,7 +105,7 @@ describe('DocumentLinkComponent', () => { }) component.writeValue([12, 23]) expect(component.value).toEqual([12, 23]) - expect(component.selectedDocuments).toEqual([documents[1], documents[2]]) + expect(component.selectedDocuments).toEqual([documents[1], documents[3]]) component.writeValue(null) expect(component.value).toEqual([]) expect(component.selectedDocuments).toEqual([]) @@ -131,4 +135,26 @@ describe('DocumentLinkComponent', () => { expect(component.compareDocuments(documents[0], { id: 2 })).toBeFalsy() expect(component.trackByFn(documents[1])).toEqual(12) }) + + it('should not include the current document or already selected documents in results', () => { + let foundDocs + component.foundDocuments$.subscribe((found) => (foundDocs = found)) + component.parentDocumentID = 23 + component.selectedDocuments = [documents[2]] + const listSpy = jest.spyOn(documentService, 'listFiltered') + listSpy.mockImplementation( + (page, pageSize, sortField, sortReverse, filterRules, extraParams) => { + const docs = documents.filter((d) => + d.title.includes(filterRules[0].value) + ) + return of({ + count: docs.length, + results: docs, + all: docs.map((d) => d.id), + }) + } + ) + component.documentsInput$.next('bar') + expect(foundDocs).toEqual([documents[1]]) + }) }) diff --git a/src-ui/src/app/components/common/input/document-link/document-link.component.ts b/src-ui/src/app/components/common/input/document-link/document-link.component.ts index 72482d1a1..77a0fb99a 100644 --- a/src-ui/src/app/components/common/input/document-link/document-link.component.ts +++ b/src-ui/src/app/components/common/input/document-link/document-link.component.ts @@ -43,6 +43,9 @@ export class DocumentLinkComponent @Input() notFoundText: string = $localize`No documents found` + @Input() + parentDocumentID: number + constructor(private documentsService: DocumentService) { super() } @@ -86,7 +89,13 @@ export class DocumentLinkComponent { truncate_content: true } ) .pipe( - map((results) => results.results), + map((results) => + results.results.filter( + (d) => + d.id !== this.parentDocumentID && + !this.selectedDocuments.find((sd) => sd.id === d.id) + ) + ), catchError(() => of([])), // empty on error tap(() => (this.loading = false)) ) diff --git a/src-ui/src/app/components/document-detail/document-detail.component.html b/src-ui/src/app/components/document-detail/document-detail.component.html index 192680e57..3211e60ed 100644 --- a/src-ui/src/app/components/document-detail/document-detail.component.html +++ b/src-ui/src/app/components/document-detail/document-detail.component.html @@ -124,7 +124,7 @@ - +