diff --git a/packages/fieldset/src/LionFieldset.js b/packages/fieldset/src/LionFieldset.js index cfccbd53a..1f0395cf0 100644 --- a/packages/fieldset/src/LionFieldset.js +++ b/packages/fieldset/src/LionFieldset.js @@ -266,7 +266,11 @@ export class LionFieldset extends FormRegistrarMixin( }); } - _setValueMapForAllFormElements(property, values) { + async _setValueMapForAllFormElements(property, values) { + if (!this.__readyForRegistration) { + await this.registrationReady; + } + if (values && typeof values === 'object') { Object.keys(values).forEach(name => { if (Array.isArray(this.formElements[name])) { diff --git a/packages/fieldset/test/lion-fieldset.test.js b/packages/fieldset/test/lion-fieldset.test.js index 1c6b82668..67b44d762 100644 --- a/packages/fieldset/test/lion-fieldset.test.js +++ b/packages/fieldset/test/lion-fieldset.test.js @@ -260,6 +260,36 @@ describe('', () => { expect(el.formElements.sub.formElements['hobbies[]'][1].disabled).to.be.true; }); + it('can set initial modelValue on creation', async () => { + const initialModelValue = { + lastName: 'Bar', + }; + const el = await fixture(html` + <${tag} .modelValue=${initialModelValue}> + <${childTag} name="lastName"> + + `); + + await el.registrationReady; + await el.updateComplete; + expect(el.modelValue).to.eql(initialModelValue); + }); + + it('can set initial serializedValue on creation', async () => { + const initialSerializedValue = { + lastName: 'Bar', + }; + const el = await fixture(html` + <${tag} .modelValue=${initialSerializedValue}> + <${childTag} name="lastName"> + + `); + + await el.registrationReady; + await el.updateComplete; + expect(el.modelValue).to.eql(initialSerializedValue); + }); + describe('validation', () => { it('validates on init', async () => { class IsCat extends Validator {