mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2026-07-30 15:45:58 +00:00
Fix: correct missing add field button for custom fields (#13424)
This commit is contained in:
+2
-2
@@ -51,8 +51,8 @@
|
||||
*pngxIfPermissions="{ action: PermissionAction.Add, type: activeManagementList.permissionType }">
|
||||
<i-bs name="plus-circle" class="me-1"></i-bs><ng-container i18n>Create</ng-container>
|
||||
</button>
|
||||
} @else if (activeCustomFields) {
|
||||
<button type="button" class="btn btn-sm btn-outline-primary" (click)="activeCustomFields.editField()"
|
||||
} @else if (customFieldsActive) {
|
||||
<button type="button" class="btn btn-sm btn-outline-primary" (click)="addCustomField()"
|
||||
*pngxIfPermissions="{ action: PermissionAction.Add, type: PermissionType.CustomField }">
|
||||
<i-bs name="plus-circle" class="me-1"></i-bs><ng-container i18n>Add Field</ng-container>
|
||||
</button>
|
||||
|
||||
+25
-1
@@ -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')
|
||||
})
|
||||
})
|
||||
|
||||
+11
-2
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user