bootstrap-vue-next
Version:
BootstrapVueNext is an early and lovely component library for Vue 3 & Nuxt 3 based on Bootstrap 5 and Typescript.
3 lines (2 loc) • 1.71 kB
JavaScript
;const e=require("vue"),u=require("./useAriaInvalid-DUOcHX79.js"),t=require("./useId-BOa4n5pr.js"),r=require("./index-CSe17yC0.js"),a=require("./keys-C2BcfuxJ.js"),n=require("./index-BqHkgtNq.js");exports.normalizeInput=(e,u)=>{if(null===e)return;let t=e;if(u.number&&"string"==typeof t&&""!==t){const e=Number.parseFloat(t);t=Number.isNaN(e)?t:e}return t},exports.useFormInput=(l,i,o,s)=>{var v;const d=e.ref(0),c=t.useId((()=>l.id),"input"),f=n.useToNumber((()=>l.debounce??0)),m=n.useToNumber((()=>l.debounceMaxWait??NaN));null==(v=e.inject(a.formGroupPluginKey,null))||v(c);const p=n.useDebounceFn((e=>{o.value=e}),(()=>!0===s.lazy?0:f.value),{maxWait:()=>!0===s.lazy?NaN:m.value}),b=(e,u=!1)=>{!0===s.lazy&&!1===u||p(e)},{focused:y}=r.useFocus(i,{initialValue:l.autofocus}),I=(e,u,t=!1)=>void 0===l.formatter||l.lazyFormatter&&!t?e:l.formatter(e,u);e.onMounted((()=>{var e;i.value&&(i.value.value=(null==(e=o.value)?void 0:e.toString())??"")})),e.onActivated((()=>{e.nextTick((()=>{l.autofocus&&(y.value=!0)}))}));const N=u.useAriaInvalid((()=>l.ariaInvalid),(()=>l.state));return{input:i,computedId:c,computedAriaInvalid:N,onInput:e=>{const{value:u}=e.target,t=I(u,e);if(e.defaultPrevented)return void e.preventDefault();b(t)},onChange:e=>{const{value:u}=e.target,t=I(u,e);if(e.defaultPrevented)return void e.preventDefault();const r=t;o.value!==r&&b(t,!0)},onBlur:e=>{if(!s.lazy&&!l.lazyFormatter&&!s.trim)return;const{value:u}=e.target,t=I(u,e,!0),r=s.trim?t.trim():t,a=r.length!==t.length;o.value!==r&&b(t,!0),s.trim&&a&&(d.value=d.value+1)},focus:()=>{l.disabled||(y.value=!0)},blur:()=>{l.disabled||(y.value=!1)},forceUpdateKey:d}};
//# sourceMappingURL=useFormInput-BPLeApz_.js.map