diff --git a/package.json b/package.json index 28595f7..4b335b9 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,6 @@ "browser": "src/BetterSelect.js", "type": "module", "license": "MIT", - "version": "1.4.2", + "version": "1.5.0", "url": "https://darkwiiplayer.github.io/BetterSelect/" } diff --git a/src/BetterSelect.js b/src/BetterSelect.js index 0150ae9..c117185 100644 --- a/src/BetterSelect.js +++ b/src/BetterSelect.js @@ -64,7 +64,7 @@ export class BetterSelect extends HTMLElement { #internals = this.attachInternals() static formAssociated = true - static observedAttributes = Object.freeze(["placeholder", "search-placeholder"]) + static observedAttributes = Object.freeze(["placeholder", "search-placeholder", "required"]) static styleSheet = css` :host { @@ -235,6 +235,8 @@ export class BetterSelect extends HTMLElement { event.stopPropagation() } }) + + this.setValidity() } /** @@ -365,7 +367,7 @@ export class BetterSelect extends HTMLElement { /** @param {HTMLElement} option */ setOption(option) { - this.setValue(option.dataset.value, option.innerText) + return this.setValue(option.dataset.value, option.innerText) } /** @@ -377,6 +379,8 @@ export class BetterSelect extends HTMLElement { this.dispatchEvent(new Event("change", {bubbles: true})); this.#internals.setFormValue(value, state) this.text.innerText = state + + this.setValidity() } get value() { return this.#value.value } @@ -396,7 +400,7 @@ export class BetterSelect extends HTMLElement { this.list.replaceChildren() for (const option of this.options) { this.list.append(f`