Fixing value sync

This commit is contained in:
sairaj mote 2024-02-08 03:44:10 +05:30
parent 997d355b02
commit 353e68563e
2 changed files with 8 additions and 7 deletions

View File

@ -1,5 +1,5 @@
const smChips = document.createElement('template'); const smChips = document.createElement('template');
smChips.innerHTML = ` smChips.innerHTML = /*html*/`
<style> <style>
*{ *{
padding: 0; padding: 0;
@ -239,8 +239,8 @@ customElements.define('sm-chips', class extends HTMLElement {
threshold: 1, threshold: 1,
}); });
this.chipsWrapper.addEventListener('option-clicked', e => { this.chipsWrapper.addEventListener('option-clicked', e => {
if (this._value !== e.target.value) { if (this._value !== e.detail.value) {
this.setSelectedOption(e.target.value); this.setSelectedOption(e.detail.value);
this.fireEvent(); this.fireEvent();
} }
}); });
@ -284,7 +284,7 @@ customElements.define('sm-chips', class extends HTMLElement {
}); });
const smChip = document.createElement('template'); const smChip = document.createElement('template');
smChip.innerHTML = ` smChip.innerHTML = /*html*/`
<style> <style>
*{ *{
padding: 0; padding: 0;
@ -327,7 +327,7 @@ customElements.define('sm-chip', class extends HTMLElement {
this.attachShadow({ this.attachShadow({
mode: 'open' mode: 'open'
}).append(smChip.content.cloneNode(true)); }).append(smChip.content.cloneNode(true));
this._value = undefined; this._value = this.getAttribute('value');
this.radioButton = this.shadowRoot.querySelector('input'); this.radioButton = this.shadowRoot.querySelector('input');
this.fireEvent = this.fireEvent.bind(this); this.fireEvent = this.fireEvent.bind(this);
@ -358,7 +358,6 @@ customElements.define('sm-chip', class extends HTMLElement {
connectedCallback() { connectedCallback() {
this.setAttribute('role', 'option'); this.setAttribute('role', 'option');
this.setAttribute('tabindex', '0'); this.setAttribute('tabindex', '0');
this._value = this.getAttribute('value');
this.addEventListener('click', this.fireEvent); this.addEventListener('click', this.fireEvent);
this.addEventListener('keydown', this.handleKeyDown); this.addEventListener('keydown', this.handleKeyDown);
} }
@ -370,6 +369,8 @@ customElements.define('sm-chip', class extends HTMLElement {
} else { } else {
this.removeAttribute('aria-selected'); this.removeAttribute('aria-selected');
} }
} else if (name === 'value') {
this._value = newValue;
} }
} }
disconnectedCallback() { disconnectedCallback() {

File diff suppressed because one or more lines are too long