diff --git a/packages/fieldset/src/LionFieldset.js b/packages/fieldset/src/LionFieldset.js index 1f0395cf0..413b8aa6e 100644 --- a/packages/fieldset/src/LionFieldset.js +++ b/packages/fieldset/src/LionFieldset.js @@ -210,7 +210,7 @@ export class LionFieldset extends FormRegistrarMixin( serializedValues[name] = this.__serializeElements(element); } else { const serializedValue = this.__serializeElement(element); - if (serializedValue) { + if (serializedValue || serializedValue === 0) { serializedValues[name] = serializedValue; } } @@ -357,7 +357,7 @@ export class LionFieldset extends FormRegistrarMixin( const serializedValues = []; elements.forEach(element => { const serializedValue = this.__serializeElement(element); - if (serializedValue) { + if (serializedValue || serializedValue === 0) { serializedValues.push(serializedValue); } }); diff --git a/packages/fieldset/test/lion-fieldset.test.js b/packages/fieldset/test/lion-fieldset.test.js index 67b44d762..a23604288 100644 --- a/packages/fieldset/test/lion-fieldset.test.js +++ b/packages/fieldset/test/lion-fieldset.test.js @@ -596,6 +596,23 @@ describe('', () => { }); }); + it('0 is a valid value to be serialized', async () => { + const fieldset = await fixture(html` + <${tag}> + <${childTag} name="price"> + `); + await nextFrame(); + fieldset.formElements.price.modelValue = 0; + expect(fieldset.serializeGroup()).to.deep.equal({ price: 0 }); + }); + + it('__serializeElements serializes 0 as a valid value', async () => { + const fieldset = await fixture(html`<${tag}>`); + await nextFrame(); + const elements = [{ serializedValue: 0 }]; + expect(fieldset.__serializeElements(elements)).to.deep.equal([0]); + }); + it('form elements which are not disabled', async () => { const fieldset = await fixture(html`<${tag}>${inputSlots}`); await nextFrame();