AAE-30596 Fix required reactive widgets do not visibility conditions (#10595)

* AAE-30596 Fix required reactive widgets do not visibility conditions

* fix unit test
This commit is contained in:
Tomasz Gnyp
2025-01-28 10:30:12 +01:00
committed by GitHub
parent 35aec24c0f
commit c4b3b9f3d4
11 changed files with 110 additions and 26 deletions

View File

@@ -179,6 +179,24 @@ describe('DropdownWidgetComponent', () => {
expect(element.querySelector('.adf-invalid')).toBeFalsy();
});
it('should be valid when field is hidden with empty value', () => {
widget.field.isVisible = false;
fixture.detectChanges();
expect(widget.field.isValid).toBeTrue();
expect(widget.dropdownControl.valid).toBeTrue();
expect(widget.field.validationSummary.message).toBe('');
});
it('should be invalid when field is hidden with empty value', () => {
widget.field.isVisible = true;
fixture.detectChanges();
expect(widget.field.isValid).toBeFalse();
expect(widget.dropdownControl.valid).toBeFalse();
expect(widget.field.validationSummary.message).toBe('FORM.FIELD.REQUIRED');
});
});
describe('when template is ready', () => {

View File

@@ -150,7 +150,7 @@ export class DropdownWidgetComponent extends WidgetComponent implements OnInit,
}
private updateFormControlState(): void {
this.dropdownControl.setValidators(this.isRequired() ? [this.customRequiredValidator(this.field)] : []);
this.dropdownControl.setValidators(this.isRequired() && this.field?.isVisible ? [this.customRequiredValidator(this.field)] : []);
this.field?.readOnly || this.readOnly
? this.dropdownControl.disable({ emitEvent: false })
: this.dropdownControl.enable({ emitEvent: false });