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.55 kB
JavaScript
;const e=require("vue"),u=require("./useAriaInvalid-DUOcHX79.js"),t=require("./useId-C1J_udPo.js"),a=require("./index-CnY1um_J.js"),r=require("./index-BInTFWT4.js");exports.normalizeInput=(e,u)=>{if(null===e)return;let t=e;if(u.trim&&(t=t.toString().trim()),u.number&&"string"==typeof t&&""!==t){const e=Number.parseFloat(t);t=Number.isNaN(e)?t:e}return t},exports.useFormInput=(n,i,l)=>{const o=e.ref(null),s=t.useId((()=>n.id),"input"),v=r.useToNumber((()=>n.debounce??0)),d=r.useToNumber((()=>n.debounceMaxWait??NaN)),c=r.useDebounceFn((e=>{i.value=e}),(()=>!0===l.lazy?0:v.value),{maxWait:()=>!0===l.lazy?NaN:d.value}),f=(e,u=!1)=>{!0===l.lazy&&!1===u||c(e)},{focused:m}=a.useFocus(o,{initialValue:n.autofocus}),p=(e,u,t=!1)=>void 0===n.formatter||n.lazyFormatter&&!t?e:n.formatter(e,u);e.onMounted((()=>{var e;o.value&&(o.value.value=(null==(e=i.value)?void 0:e.toString())??"")})),e.onActivated((()=>{e.nextTick((()=>{n.autofocus&&(m.value=!0)}))}));const b=u.useAriaInvalid((()=>n.ariaInvalid),(()=>n.state));return{input:o,computedId:s,computedAriaInvalid:b,onInput:e=>{const{value:u}=e.target,t=p(u,e);if(e.defaultPrevented)return void e.preventDefault();f(t)},onChange:e=>{const{value:u}=e.target,t=p(u,e);if(e.defaultPrevented)return void e.preventDefault();const a=t;i.value!==a&&f(t,!0)},onBlur:e=>{if(!l.lazy&&!n.lazyFormatter)return;const{value:u}=e.target,t=p(u,e,!0),a=t;i.value!==a&&f(t,!0)},focus:()=>{n.disabled||(m.value=!0)},blur:()=>{n.disabled||(m.value=!1)}}};
//# sourceMappingURL=useFormInput-sQu0MMr4.js.map