bootstrap-vue-next
Version:
Seamless integration of Vue 3, Bootstrap 5, and TypeScript for modern, type-safe UI development
3 lines (2 loc) • 1.87 kB
JavaScript
;const e=require("vue"),u=require("./useAriaInvalid-RW8qx3Wq.js"),t=require("./useId-owZCNodL.js"),a=require("./index-C8tYBJvG.js"),r=require("./keys-D59bcWpQ.js"),l=require("./debounce-YOp405Mx.js"),n=require("./useStateClass-B3zxUwpk.js"),s=require("./index-CbGpN2AJ.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=(i,o,v,d)=>{const c=e.ref(0),m=t.useId(()=>i.id,"input"),f=s.useToNumber(()=>i.debounce??0,{nanToZero:!0}),p=s.useToNumber(()=>i.debounceMaxWait??Number.NaN),b=e.inject(r.formGroupKey,null)?.(m),N=e.computed(()=>void 0!==i.state?i.state:b?.state.value??null),y=u.useAriaInvalid(()=>i.ariaInvalid,N),I=n.useStateClass(N),g=l.useDebounceFn(e=>{v.value=e},()=>!0===d.lazy?0:f.value,{maxWait:()=>!0===d.lazy?Number.NaN:p.value}),j=(e,u=!1,t=!1)=>{!0===d.lazy&&!1===u||(t?v.value=e:g(e))},{focused:q}=a.useFocus(o,{initialValue:i.autofocus}),x=(e,u,t=!1)=>void 0===i.formatter||i.lazyFormatter&&!t?e:i.formatter(e,u);e.onMounted(()=>{o.value&&(o.value.value=v.value?.toString()??"")}),e.onActivated(()=>{e.nextTick(()=>{i.autofocus&&(q.value=!0)})});return{input:o,computedId:m,computedAriaInvalid:y,onInput:e=>{const{value:u}=e.target,t=x(u,e);if(e.defaultPrevented)return void e.preventDefault();j(t)},onChange:e=>{const{value:u}=e.target,t=x(u,e);if(e.defaultPrevented)return void e.preventDefault();const a=t;v.value!==a&&j(t,!0)},onBlur:e=>{if(!d.lazy&&!i.lazyFormatter&&!d.trim&&f.value<=0)return;const{value:u}=e.target,t=x(u,e,!0),a=d.trim?t.trim():t,r=a.length!==t.length;g.cancel(),v.value!==a&&j(t,!0,!0),d.trim&&r&&(c.value=c.value+1)},focus:()=>{i.disabled||(q.value=!0)},blur:()=>{i.disabled||(q.value=!1)},forceUpdateKey:c,stateClass:I}};
//# sourceMappingURL=useFormInput-BlTlIYKV.js.map