diff --git a/lib/content-services/src/lib/dialogs/folder/folder.dialog.spec.ts b/lib/content-services/src/lib/dialogs/folder/folder.dialog.spec.ts index 74cac7bde8..a1ed1e9971 100644 --- a/lib/content-services/src/lib/dialogs/folder/folder.dialog.spec.ts +++ b/lib/content-services/src/lib/dialogs/folder/folder.dialog.spec.ts @@ -15,7 +15,7 @@ * limitations under the License. */ -import { TestBed, ComponentFixture } from '@angular/core/testing'; +import { ComponentFixture, TestBed } from '@angular/core/testing'; import { MatDialogRef } from '@angular/material/dialog'; import { NodesApiService } from '../../common/services/nodes-api.service'; @@ -316,6 +316,17 @@ describe('FolderDialogComponent', () => { component.submit(); }); + + it('should enable submit button after changing name field when previous value caused error', () => { + createFolderNode$.error(throwError('error')); + spyOn(component, 'handleError').and.callFake((val) => val); + component.form.controls['name'].setValue(''); + component.submit(); + expect(component.disableSubmitButton).toBeTrue(); + + component.form.controls['name'].setValue('testName'); + expect(component.disableSubmitButton).toBeFalse(); + }); }); }); diff --git a/lib/content-services/src/lib/dialogs/folder/folder.dialog.ts b/lib/content-services/src/lib/dialogs/folder/folder.dialog.ts index c606afc71d..a1af433198 100644 --- a/lib/content-services/src/lib/dialogs/folder/folder.dialog.ts +++ b/lib/content-services/src/lib/dialogs/folder/folder.dialog.ts @@ -16,7 +16,7 @@ */ import { Observable } from 'rxjs'; -import { Component, Inject, OnInit, Optional, EventEmitter, Output, ViewEncapsulation } from '@angular/core'; +import { Component, DestroyRef, EventEmitter, inject, Inject, OnInit, Optional, Output, ViewEncapsulation } from '@angular/core'; import { ReactiveFormsModule, UntypedFormBuilder, UntypedFormGroup, Validators } from '@angular/forms'; import { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog'; import { Node } from '@alfresco/js-api'; @@ -29,6 +29,7 @@ import { MatFormFieldModule } from '@angular/material/form-field'; import { MatInputModule } from '@angular/material/input'; import { AutoFocusDirective } from '../../directives'; import { MatButtonModule } from '@angular/material/button'; +import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; @Component({ selector: 'adf-folder-dialog', @@ -93,6 +94,8 @@ export class FolderDialogComponent implements OnInit { }; } + private readonly destroyRef = inject(DestroyRef); + constructor( private formBuilder: UntypedFormBuilder, private dialog: MatDialogRef, @@ -132,6 +135,8 @@ export class FolderDialogComponent implements OnInit { title: [title], description: [description] }); + + this.form.controls['name'].valueChanges.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => (this.disableSubmitButton = false)); } submit() {