- Not found
+
+ Unavailable
}
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 f872cb4b9..be479f2a4 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
@@ -151,6 +151,23 @@ describe('DocumentLinkComponent', () => {
expect(component.selectedDocuments).toEqual([])
})
+ it('should preserve and neutrally label unavailable document IDs', async () => {
+ jest.spyOn(documentService, 'getFew').mockReturnValue(
+ of({
+ count: 0,
+ all: [],
+ results: [],
+ })
+ )
+
+ component.writeValue([99])
+ await fixture.whenStable()
+
+ expect(component.selectedDocuments).toEqual([{ id: 99 }])
+ expect(fixture.nativeElement.textContent).toContain('Unavailable')
+ expect(fixture.nativeElement.textContent).not.toContain('Not found')
+ })
+
it('should support unselect', () => {
const getSpy = jest.spyOn(documentService, 'getFew')
getSpy.mockImplementation((ids) => {
@@ -167,6 +184,15 @@ describe('DocumentLinkComponent', () => {
expect(component.selectedDocuments).toEqual([documents[1]])
})
+ it('should not unselect documents when disabled', () => {
+ component.disabled = true
+ component.selectedDocuments = [documents[0]]
+
+ component.unselect(documents[0])
+
+ expect(component.selectedDocuments).toEqual([documents[0]])
+ })
+
it('should use correct compare, trackBy functions', () => {
expect(component.compareDocuments(documents[0], { id: 1 })).toBeTruthy()
expect(component.compareDocuments(documents[0], { id: 2 })).toBeFalsy()
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 cc6b8a6a7..4209bb9d0 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
@@ -101,7 +101,7 @@ export class DocumentLinkComponent
.subscribe((documentResults) => {
this.loading.set(false)
this.selectedDocuments = documentIDs.map(
- (id) => documentResults.results.find((d) => d.id === id) ?? {}
+ (id) => documentResults.results.find((d) => d.id === id) ?? { id }
)
super.writeValue(documentIDs)
})
@@ -142,6 +142,8 @@ export class DocumentLinkComponent
}
unselect(document: Document): void {
+ if (this.disabled) return
+
this.selectedDocuments = this.selectedDocuments.filter(
(d) => d && d.id !== document.id
)
diff --git a/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.html b/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.html
index 94c4dba9a..df9d5c299 100644
--- a/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.html
+++ b/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.html
@@ -114,13 +114,23 @@
-
-
-
+ @if (permissionService.currentUserCan(PermissionAction.Add, PermissionType.ShareLinkBundle)) {
+
+ }
+ @if (permissionService.currentUserCan(PermissionAction.View, PermissionType.ShareLinkBundle)) {
+
+ }
+ @if (
+ emailEnabled &&
+ (permissionService.currentUserCan(PermissionAction.Add, PermissionType.ShareLinkBundle) ||
+ permissionService.currentUserCan(PermissionAction.View, PermissionType.ShareLinkBundle))
+ ) {
+
+ }
@if (emailEnabled) {