UNPKG

@jsxtools/aui

Version:

A baseline UI as Mixins, Custom Elements, React Components, etc.

1 lines 1.46 kB
import{InternalsMixin}from"./internals.js";import{ClickMixin}from"./click.js";var FormAssociatedMixin=(Element)=>class extends ClickMixin(InternalsMixin(Element)){static formAssociated=!0;static observedAttributes=["disabled","required",...super.observedAttributes||[]];#disabled;#required;get disabled(){return this.#disabled??this.hasAttribute("disabled")}set disabled(flag){this.internals.ariaDisabled=String(this.#disabled=Boolean(flag))}get required(){return this.#required??this.hasAttribute("required")}set required(flag){this.internals.ariaRequired=String(this.#required=Boolean(flag))}set name(name){this.setAttribute("name",name)}get name(){return this.getAttribute("name")??""}get defaultValue(){return this.getAttribute("value")??""}set defaultValue(value){this.setAttribute("value",value)}get form(){return this.internals.form}get validity(){return this.internals.validity}get validationMessage(){return this.internals.validationMessage}get willValidate(){return this.internals.willValidate}checkValidity(){return this.validity.valid}setCustomValidity(message){const customError=Boolean(message);this.internals.setValidity({customError},message)}reportValidity(){return this.internals.reportValidity()}attributeChangedCallback(name,oldValue,newValue){if(name==="disabled")this.disabled=newValue!==null;else if(name==="required")this.required=newValue!==null;super.attributeChangedCallback?.(name,oldValue,newValue)}};export{FormAssociatedMixin}