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) • 2.52 kB
JavaScript
const e=require("vue"),t=require("./useAriaInvalid-DUOcHX79.js"),u=require("./useId-CVpYZavN.js"),r=require("./index-oce_peqj.js"),a=require("./keys-W3DrYQSP.js"),n=require("./useStateClass-BePLKIel.js"),l=require("./index-dElGDvFo.js"),o=()=>{};function i(t,u=200,r={}){return function(e,t){function u(...u){return new Promise(((r,a)=>{Promise.resolve(e((()=>t.apply(this,u)),{fn:t,thisArg:this,args:u})).then(r).catch(a)}))}return u.cancel=e.cancel,u}(function(t,u={}){let r,a,n=o;const l=e=>{clearTimeout(e),n(),n=o};let i;const s=o=>{const s=e.toValue(t),c=e.toValue(u.maxWait);return r&&l(r),s<=0||void 0!==c&&c<=0?(a&&(l(a),a=null),Promise.resolve(o())):new Promise(((e,t)=>{n=u.rejectOnCancel?t:e,i=o,c&&!a&&(a=setTimeout((()=>{r&&l(r),a=null,e(i())}),c)),r=setTimeout((()=>{a&&l(a),a=null,e(o())}),s)}))};return s.cancel=()=>{r&&l(r),a&&l(a),a=null},s}(u,r),t)}exports.normalizeInput=(e,t)=>{if(null===e)return;let u=e;if(t.number&&"string"==typeof u&&""!==u){const e=Number.parseFloat(u);u=Number.isNaN(e)?u:e}return u},exports.useFormInput=(o,s,c,v)=>{var d;const m=e.ref(0),f=u.useId((()=>o.id),"input"),p=l.useToNumber((()=>o.debounce??0),{nanToZero:!0}),g=l.useToNumber((()=>o.debounceMaxWait??NaN)),y=null==(d=e.inject(a.formGroupPluginKey,null))?void 0:d(f),b=e.computed((()=>void 0!==o.state?o.state:(null==y?void 0:y.state.value)??null)),I=t.useAriaInvalid((()=>o.ariaInvalid),b),N=n.useStateClass(b),h=i((e=>{c.value=e}),(()=>!0===v.lazy?0:p.value),{maxWait:()=>!0===v.lazy?NaN:g.value}),j=(e,t=!1,u=!1)=>{!0===v.lazy&&!1===t||(u?c.value=e:h(e))},{focused:x}=r.useFocus(s,{initialValue:o.autofocus}),q=(e,t,u=!1)=>void 0===o.formatter||o.lazyFormatter&&!u?e:o.formatter(e,t);e.onMounted((()=>{var e;s.value&&(s.value.value=(null==(e=c.value)?void 0:e.toString())??"")})),e.onActivated((()=>{e.nextTick((()=>{o.autofocus&&(x.value=!0)}))}));return{input:s,computedId:f,computedAriaInvalid:I,onInput:e=>{const{value:t}=e.target,u=q(t,e);if(e.defaultPrevented)return void e.preventDefault();j(u)},onChange:e=>{const{value:t}=e.target,u=q(t,e);if(e.defaultPrevented)return void e.preventDefault();const r=u;c.value!==r&&j(u,!0)},onBlur:e=>{if(!v.lazy&&!o.lazyFormatter&&!v.trim&&p.value<=0)return;const{value:t}=e.target,u=q(t,e,!0),r=v.trim?u.trim():u,a=r.length!==u.length;h.cancel(),c.value!==r&&j(u,!0,!0),v.trim&&a&&(m.value=m.value+1)},focus:()=>{o.disabled||(x.value=!0)},blur:()=>{o.disabled||(x.value=!1)},forceUpdateKey:m,stateClass:N}};
//# sourceMappingURL=useFormInput-ChuSfLPY.js.map
;