fix(progress-indicator): accept 0 as a valid value (#2068)

* fix(progress-indicator): accept 0 as a valid value

* chore: added changeset
This commit is contained in:
Gio Adrian Fortuno 2023-09-04 19:02:34 +08:00 committed by GitHub
parent 2034a1b52e
commit b0a74f2831
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 24 additions and 2 deletions

View file

@ -0,0 +1,5 @@
---
'@lion/ui': patch
---
fix(progress-indicator): accept 0 as a valid value

View file

@ -150,7 +150,7 @@ export class LionProgressIndicator extends LocalizeMixin(LitElement) {
} }
} else { } else {
if (changedProperties.has('value')) { if (changedProperties.has('value')) {
if (!this.value || typeof this.value !== 'number') { if ((!this.value && this.value !== 0) || typeof this.value !== 'number') {
this.removeAttribute('value'); this.removeAttribute('value');
} else if (this.value < this.min) { } else if (this.value < this.min) {
this.value = this.min; this.value = this.min;

View file

@ -149,7 +149,9 @@ describe('lion-progress-indicator', () => {
const el = await fixture( const el = await fixture(
html`<lion-progress-indicator value="30"></lion-progress-indicator> `, html`<lion-progress-indicator value="30"></lion-progress-indicator> `,
); );
el.setAttribute('value', ''); // when the attribute is defined, lit set the property to Number(attributeValue)
// this means, setting the value to an empty string will be valid because Number('') is 0
el.setAttribute('value', 'invalid-value');
await el.updateComplete; await el.updateComplete;
expect(el.indeterminate).to.be.true; expect(el.indeterminate).to.be.true;
await el.updateComplete; await el.updateComplete;
@ -158,6 +160,21 @@ describe('lion-progress-indicator', () => {
expect(el.hasAttribute('aria-valuemax')).to.be.false; expect(el.hasAttribute('aria-valuemax')).to.be.false;
expect(el.getAttribute('aria-label')).to.equal('Loading'); expect(el.getAttribute('aria-label')).to.equal('Loading');
}); });
it('can update value to 0', async () => {
const el = await fixture(
html`<lion-progress-indicator value="0"></lion-progress-indicator> `,
);
await el.updateComplete;
expect(el.indeterminate).to.be.false;
});
// empty string will be converted to 0 by lit because value is declared as number
it('can update value to 0 if the set value is empty string', async () => {
const el = await fixture(html`<lion-progress-indicator value=""></lion-progress-indicator> `);
await el.updateComplete;
expect(el.indeterminate).to.be.false;
});
}); });
describe('Subclasers', () => { describe('Subclasers', () => {