diff --git a/src/SIL.XForge.Scripture/ClientApp/src/app/translate/draft-generation/draft-apply-dialog/draft-apply-dialog.component.html b/src/SIL.XForge.Scripture/ClientApp/src/app/translate/draft-generation/draft-apply-dialog/draft-apply-dialog.component.html
index 3136ed2c09..d344e1b1de 100644
--- a/src/SIL.XForge.Scripture/ClientApp/src/app/translate/draft-generation/draft-apply-dialog/draft-apply-dialog.component.html
+++ b/src/SIL.XForge.Scripture/ClientApp/src/app/translate/draft-generation/draft-apply-dialog/draft-apply-dialog.component.html
@@ -19,7 +19,7 @@
@if (targetChapters$ | async; as chapters) {
= new Map();
+ isValid: boolean = false;
constructor(
@Inject(MAT_DIALOG_DATA) private data: DraftApplyDialogConfig,
@@ -188,8 +189,11 @@ export class DraftApplyDialogComponent implements OnInit {
}
private validateProject(): void {
- // setTimeout prevents a "changed after checked" exception
- setTimeout(() => this.projectSelect?.customValidate(SFValidators.customValidator(this.getCustomErrorState())));
+ // setTimeout prevents a "changed after checked" exception (may be removable after SF-3014)
+ setTimeout(() => {
+ this.isValid = this.getCustomErrorState() === CustomErrorState.None;
+ this.projectSelect?.customValidate(SFValidators.customValidator(this.getCustomErrorState()));
+ });
}
private async chaptersWithTextAsync(project: SFProjectProfile): Promise {