dk-plus
Version:
2 lines (1 loc) • 2.23 kB
JavaScript
;Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const i=require("vue"),P=require("./index3.js"),p=require("../../_tokens/component/index3.js"),S=require("../../_hooks/get-input-number/index.js");require("../../_icon/index.js");const z=i.defineComponent({name:"DkInputNumber",props:P.dkInputNumberProps,emits:["update:modelValue","change"],setup(u,{emit:m}){const I=i.shallowRef(),b={large:24,medium:20,small:16,mini:12},e=i.reactive({step:Number(u.step),min:u.min,max:u.max,size:u.size,iconSize:b[u.size],strict:u.strict,precision:Number(u.precision),readonly:u.readonly,placeholder:u.placeholder,position:u.position}),h=()=>!!e.position&&p.DK_INPUT_NUMBER_POSITION.includes(e.position)||typeof e.position=="string"?(e.iconSize-=2,"IconArrowBottom"):"IconReduce1",g=()=>!!e.position&&p.DK_INPUT_NUMBER_POSITION.includes(e.position)||typeof e.position=="string"?"IconArrowTop":"IconAdd1",N=n=>{const o=Number(n).toFixed(e.precision);return parseFloat(o)},a=i.ref(u.modelValue),s=i.ref(""),v=i.ref(u.disabled),r=i.ref(a.value<=e.min),c=i.ref(a.value>=e.max),x=()=>{if(e.readonly)return;const n=a.value-e.step;n<e.min?a.value=e.min:a.value=n},V=()=>{if(e.readonly)return;const n=a.value+e.step;n>e.max?a.value=e.max:a.value=n},_=n=>{const t=n.target,o=Number(t.value);if(e.strict){const y=Math.ceil(o/e.step)*e.step;a.value=y}else a.value=o};i.watch(()=>u.modelValue,n=>{let t=Number(n);a.value=t,s.value=n,e.precision>0&&(s.value=t.toFixed(e.precision))},{immediate:!0}),i.watch(()=>a.value,n=>{if(v.value)return;let t=n;r.value=t<=e.min,c.value=t>=e.max,r.value&&(t=e.min),c.value&&(t=e.max),e.precision&&(t=N(t)),m("update:modelValue",t),m("change",t)});const{classList:T,styleList:M}=S.getInputNumber(u);let d=i.ref(),l=i.ref();const w=(n,t)=>{t()(),l.value=setTimeout(()=>{l.value&&clearTimeout(l.value),d.value=setInterval(()=>{t()()},70)},700)},f=()=>{d.value&&clearInterval(d.value),l.value&&clearTimeout(l.value)};return{...e,reduce:x,plus:V,value:s,input:I,classList:T,styleList:M,plusDisabled:c,reduceDisabled:r,disabled:v,handleInputChange:_,handleMouseDown:w,handleMouseLeave:()=>{f()},handleMouseUp:()=>{f()},reduceIcon:h(),plusIcon:g()}}});exports.default=z;