diff --git a/src-ui/src/app/components/common/confirm-dialog/merge-as-versions-confirm-dialog/merge-as-versions-confirm-dialog.component.html b/src-ui/src/app/components/common/confirm-dialog/merge-as-versions-confirm-dialog/merge-as-versions-confirm-dialog.component.html index 58ba0bd15..283a85bf1 100644 --- a/src-ui/src/app/components/common/confirm-dialog/merge-as-versions-confirm-dialog/merge-as-versions-confirm-dialog.component.html +++ b/src-ui/src/app/components/common/confirm-dialog/merge-as-versions-confirm-dialog/merge-as-versions-confirm-dialog.component.html @@ -49,10 +49,10 @@ diff --git a/src-ui/src/app/components/document-detail/document-version-dropdown/add-existing-document-version-dialog/add-existing-document-version-dialog.component.html b/src-ui/src/app/components/document-detail/document-version-dropdown/add-existing-document-version-dialog/add-existing-document-version-dialog.component.html index c92993c93..3a08646dd 100644 --- a/src-ui/src/app/components/document-detail/document-version-dropdown/add-existing-document-version-dialog/add-existing-document-version-dialog.component.html +++ b/src-ui/src/app/components/document-detail/document-version-dropdown/add-existing-document-version-dialog/add-existing-document-version-dialog.component.html @@ -13,6 +13,6 @@
Select one document to add as a version.
diff --git a/src-ui/src/app/components/document-detail/document-version-dropdown/add-existing-document-version-dialog/add-existing-document-version-dialog.component.spec.ts b/src-ui/src/app/components/document-detail/document-version-dropdown/add-existing-document-version-dialog/add-existing-document-version-dialog.component.spec.ts index 8d8a20a2a..f41ae2b9f 100644 --- a/src-ui/src/app/components/document-detail/document-version-dropdown/add-existing-document-version-dialog/add-existing-document-version-dialog.component.spec.ts +++ b/src-ui/src/app/components/document-detail/document-version-dropdown/add-existing-document-version-dialog/add-existing-document-version-dialog.component.spec.ts @@ -53,4 +53,21 @@ describe('AddExistingDocumentVersionDialogComponent', () => { expect(activeModal.dismiss).toHaveBeenCalled() }) + + it('should re-render the buttons when they are toggled from outside', async () => { + const cancelButton: HTMLButtonElement = fixture.nativeElement.querySelector( + '.modal-footer button' + ) + expect(cancelButton.disabled).toBeFalsy() + + // No detectChanges: the dropdown toggling this from a request callback is + // all that happens, and nothing else schedules a render for the modal + component.buttonsEnabled.set(false) + await fixture.whenStable() + expect(cancelButton.disabled).toBeTruthy() + + component.buttonsEnabled.set(true) + await fixture.whenStable() + expect(cancelButton.disabled).toBeFalsy() + }) }) diff --git a/src-ui/src/app/components/document-detail/document-version-dropdown/add-existing-document-version-dialog/add-existing-document-version-dialog.component.ts b/src-ui/src/app/components/document-detail/document-version-dropdown/add-existing-document-version-dialog/add-existing-document-version-dialog.component.ts index ce967a4ad..e06e14a08 100644 --- a/src-ui/src/app/components/document-detail/document-version-dropdown/add-existing-document-version-dialog/add-existing-document-version-dialog.component.ts +++ b/src-ui/src/app/components/document-detail/document-version-dropdown/add-existing-document-version-dialog/add-existing-document-version-dialog.component.ts @@ -1,4 +1,11 @@ -import { Component, EventEmitter, Input, Output, inject } from '@angular/core' +import { + Component, + EventEmitter, + Input, + Output, + inject, + signal, +} from '@angular/core' import { FormsModule } from '@angular/forms' import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap' import { DocumentLinkComponent } from 'src/app/components/common/input/document-link/document-link.component' @@ -15,7 +22,7 @@ export class AddExistingDocumentVersionDialogComponent { @Output() confirmClicked = new EventEmitter() selectedDocumentIDs: number[] = [] - buttonsEnabled = true + readonly buttonsEnabled = signal(true) confirm(): void { if (this.selectedDocumentIDs.length !== 1) return diff --git a/src-ui/src/app/components/document-detail/document-version-dropdown/document-version-dropdown.component.spec.ts b/src-ui/src/app/components/document-detail/document-version-dropdown/document-version-dropdown.component.spec.ts index f69f967ab..23f1ad499 100644 --- a/src-ui/src/app/components/document-detail/document-version-dropdown/document-version-dropdown.component.spec.ts +++ b/src-ui/src/app/components/document-detail/document-version-dropdown/document-version-dropdown.component.spec.ts @@ -1,5 +1,5 @@ import { DatePipe } from '@angular/common' -import { SimpleChange } from '@angular/core' +import { SimpleChange, signal } from '@angular/core' import { ComponentFixture, TestBed } from '@angular/core/testing' import { NgbModal } from '@ng-bootstrap/ng-bootstrap' import { NgxBootstrapIconsModule, allIcons } from 'ngx-bootstrap-icons' @@ -342,7 +342,7 @@ describe('DocumentVersionDropdownComponent', () => { const modal = { componentInstance: { rootDocumentID: null, - buttonsEnabled: true, + buttonsEnabled: signal(true), confirmClicked, }, close: jest.fn(), diff --git a/src-ui/src/app/components/document-detail/document-version-dropdown/document-version-dropdown.component.ts b/src-ui/src/app/components/document-detail/document-version-dropdown/document-version-dropdown.component.ts index a46fa972d..f9711fd76 100644 --- a/src-ui/src/app/components/document-detail/document-version-dropdown/document-version-dropdown.component.ts +++ b/src-ui/src/app/components/document-detail/document-version-dropdown/document-version-dropdown.component.ts @@ -290,7 +290,7 @@ export class DocumentVersionDropdownComponent implements OnChanges, OnDestroy { dialog.confirmClicked .pipe(takeUntil(this.destroy$), takeUntil(this.documentChange$)) .subscribe((existingDocumentID) => { - dialog.buttonsEnabled = false + dialog.buttonsEnabled.set(false) const versionLabel = this.newVersionLabel?.trim() this.documentsService .mergeDocumentsAsVersions( @@ -301,7 +301,7 @@ export class DocumentVersionDropdownComponent implements OnChanges, OnDestroy { .pipe( switchMap(() => this.documentsService.getVersions(this.documentId)), first(), - finalize(() => (dialog.buttonsEnabled = true)), + finalize(() => dialog.buttonsEnabled.set(true)), takeUntil(this.destroy$), takeUntil(this.documentChange$) ) diff --git a/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.ts b/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.ts index 2009ab06d..497bf0de7 100644 --- a/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.ts +++ b/src-ui/src/app/components/document-list/bulk-editor/bulk-editor.component.ts @@ -1012,7 +1012,6 @@ export class BulkEditorComponent mergeDialog.confirmClicked .pipe(takeUntil(this.unsubscribeNotifier)) .subscribe(() => { - mergeDialog.buttonsEnabled = false this.executeDocumentAction( modal, this.documentService.mergeDocumentsAsVersions(