diff --git a/src-ui/src/app/components/manage/document-attributes/document-attributes.component.html b/src-ui/src/app/components/manage/document-attributes/document-attributes.component.html
index da6077039..38f449956 100644
--- a/src-ui/src/app/components/manage/document-attributes/document-attributes.component.html
+++ b/src-ui/src/app/components/manage/document-attributes/document-attributes.component.html
@@ -51,8 +51,8 @@
*pngxIfPermissions="{ action: PermissionAction.Add, type: activeManagementList.permissionType }">
Create
- } @else if (activeCustomFields) {
-
diff --git a/src-ui/src/app/components/manage/document-attributes/document-attributes.component.spec.ts b/src-ui/src/app/components/manage/document-attributes/document-attributes.component.spec.ts
index 97a8bfd1f..b40c35692 100644
--- a/src-ui/src/app/components/manage/document-attributes/document-attributes.component.spec.ts
+++ b/src-ui/src/app/components/manage/document-attributes/document-attributes.component.spec.ts
@@ -18,6 +18,7 @@ import {
DocumentAttributesComponent,
DocumentAttributesSectionKind,
} from './document-attributes.component'
+import { CustomFieldsComponent } from './custom-fields/custom-fields.component'
import { ManagementListComponent } from './management-list/management-list.component'
@Component({
@@ -207,6 +208,29 @@ describe('DocumentAttributesComponent', () => {
expect(component.activeSection.kind).toBe(
DocumentAttributesSectionKind.CustomFields
)
- expect(component.activeCustomFields).toBeDefined()
+ const customFields = Object.create(CustomFieldsComponent.prototype)
+ customFields.editField = jest.fn()
+ component.activeOutlet = {
+ componentInstance: customFields,
+ } as any
+ expect(component.activeCustomFields).toBe(customFields)
+
+ component.addCustomField()
+ expect(customFields.editField).toHaveBeenCalled()
+ })
+
+ it('should show the add field button before the custom fields instance is available', async () => {
+ jest.spyOn(permissionsService, 'currentUserCan').mockReturnValue(true)
+
+ fixture.detectChanges()
+ component.activeNavID.set(2)
+ await fixture.whenStable()
+
+ expect(component.activeCustomFields).toBeNull()
+ expect(
+ fixture.nativeElement.querySelector(
+ 'pngx-page-header .btn-outline-primary'
+ )?.textContent
+ ).toContain('Add Field')
})
})
diff --git a/src-ui/src/app/components/manage/document-attributes/document-attributes.component.ts b/src-ui/src/app/components/manage/document-attributes/document-attributes.component.ts
index 482149ff0..0ff747407 100644
--- a/src-ui/src/app/components/manage/document-attributes/document-attributes.component.ts
+++ b/src-ui/src/app/components/manage/document-attributes/document-attributes.component.ts
@@ -163,12 +163,17 @@ export class DocumentAttributesComponent implements OnInit, OnDestroy {
}
get activeCustomFields(): CustomFieldsComponent | null {
- if (this.activeSection?.kind !== DocumentAttributesSectionKind.CustomFields)
- return null
+ if (!this.customFieldsActive) return null
const instance = this.activeOutlet?.componentInstance
return instance instanceof CustomFieldsComponent ? instance : null
}
+ get customFieldsActive(): boolean {
+ return (
+ this.activeSection?.kind === DocumentAttributesSectionKind.CustomFields
+ )
+ }
+
get activeTabLabel(): string {
return this.activeSection?.label ?? ''
}
@@ -224,6 +229,10 @@ export class DocumentAttributesComponent implements OnInit, OnDestroy {
this.router.navigate(['attributes', nextSection])
}
+ addCustomField(): void {
+ this.activeCustomFields?.editField(null)
+ }
+
private getDefaultNavID(): DocumentAttributesNavIDs | null {
return this.visibleSections[0]?.id ?? null
}