From ab2a616c61cbca4058f40f8edbb7a7e7b99b6236 Mon Sep 17 00:00:00 2001 From: Sushmitha V <58967843+Sushmitha-Vk@users.noreply.github.com> Date: Thu, 22 Sep 2022 23:07:55 +0530 Subject: [PATCH] [AAE-10643] Form validation for dropdown required field (#7844) --- .../widgets/core/form-field-validator.spec.ts | 12 ++++++++++++ .../components/widgets/core/form-field-validator.ts | 4 ++++ 2 files changed, 16 insertions(+) diff --git a/lib/core/src/lib/form/components/widgets/core/form-field-validator.spec.ts b/lib/core/src/lib/form/components/widgets/core/form-field-validator.spec.ts index a5dae7a66e..fb50958f23 100644 --- a/lib/core/src/lib/form/components/widgets/core/form-field-validator.spec.ts +++ b/lib/core/src/lib/form/components/widgets/core/form-field-validator.spec.ts @@ -113,6 +113,18 @@ describe('FormFieldValidator', () => { expect(validator.validate(field)).toBe(false); }); + it('should fail for dropdown with empty object', () => { + const field = new FormFieldModel(new FormModel(), { + type: FormFieldTypes.DROPDOWN, + value: {}, + required: true, + options: [{ id: 'one', name: 'one' }], + selectionType: 'multiple' + }); + + expect(validator.validate(field)).toBe(false); + }); + it('should fail for radio buttons', () => { const field = new FormFieldModel(new FormModel(), { type: FormFieldTypes.RADIO_BUTTONS, diff --git a/lib/core/src/lib/form/components/widgets/core/form-field-validator.ts b/lib/core/src/lib/form/components/widgets/core/form-field-validator.ts index c939f4b403..6a8a5005e1 100644 --- a/lib/core/src/lib/form/components/widgets/core/form-field-validator.ts +++ b/lib/core/src/lib/form/components/widgets/core/form-field-validator.ts @@ -69,6 +69,10 @@ export class RequiredFieldValidator implements FormFieldValidator { return false; } } + + if (field.required && typeof field.value === 'object' && field.value && !Object.keys(field.value).length) { + return false; + } } if (field.type === FormFieldTypes.RADIO_BUTTONS) {