2 lines
6.6 KiB
JavaScript
2 lines
6.6 KiB
JavaScript
import{ac as Q,aQ as b,X as y,b as de,d as ce,aS as me,_ as pe,a as ee,aK as fe,u as be,z as ve,D as Ne,k as h,C as A,F as Ee,I as Ve,aX as he,c as $,o as v,N as Y,e as j,ab as z,g as a,aP as P,n as K,r as F,p as T,m as C,A as ye,bD as Ie,L as q,bB as ge,bE as we,aD as _e,a7 as G,M as Se,w as Ae}from"./index-UPLxqIys.js";import{E as Pe}from"./vnode-ij9-6KPE.js";import{u as Fe,d as J,t as Te}from"./index-B5f2hswV.js";import{U as N,I as D,C as ne}from"./event-BB_Ol6Sd.js";import{b as Ce,a as De,d as Me}from"./index-CqrevvuG.js";const ke=100,Be=600,Z={beforeMount(l,E){const i=E.value,{interval:r=ke,delay:I=Be}=Q(i)?{}:i;let d,m;const u=()=>Q(i)?i():i.handler(),p=()=>{m&&(clearTimeout(m),m=void 0),d&&(clearInterval(d),d=void 0)};l.addEventListener("mousedown",g=>{g.button===0&&(p(),u(),document.addEventListener("mouseup",()=>p(),{once:!0}),m=setTimeout(()=>{d=setInterval(()=>{u()},r)},I))})}},xe=de({id:{type:String,default:void 0},step:{type:Number,default:1},stepStrictly:Boolean,max:{type:Number,default:Number.MAX_SAFE_INTEGER},min:{type:Number,default:Number.MIN_SAFE_INTEGER},modelValue:{type:[Number,null]},readonly:Boolean,disabled:Boolean,size:me,controls:{type:Boolean,default:!0},controlsPosition:{type:String,default:"",values:["","right"]},valueOnClear:{type:[String,Number,null],validator:l=>l===null||b(l)||["min","max"].includes(l),default:null},name:String,placeholder:String,precision:{type:Number,validator:l=>l>=0&&l===Number.parseInt(`${l}`,10)},validateEvent:{type:Boolean,default:!0},...Fe(["ariaLabel"]),inputmode:{type:ce(String),default:void 0}}),Le={[ne]:(l,E)=>E!==l,blur:l=>l instanceof FocusEvent,focus:l=>l instanceof FocusEvent,[D]:l=>b(l)||y(l),[N]:l=>b(l)||y(l)},Re=ee({name:"ElInputNumber"}),$e=ee({...Re,props:xe,emits:Le,setup(l,{expose:E,emit:i}){const r=l,{t:I}=fe(),d=be("input-number"),m=ve(),u=Ne({currentValue:r.modelValue,userInput:null}),{formItem:p}=Ce(),g=h(()=>b(r.modelValue)&&r.modelValue<=r.min),O=h(()=>b(r.modelValue)&&r.modelValue>=r.max),te=h(()=>{const e=X(r.step);return A(r.precision)?Math.max(X(r.modelValue),e):(e>r.precision,r.precision)}),M=h(()=>r.controls&&r.controlsPosition==="right"),U=De(),V=Me(),k=h(()=>{if(u.userInput!==null)return u.userInput;let e=u.currentValue;if(y(e))return"";if(b(e)){if(Number.isNaN(e))return"";A(r.precision)||(e=e.toFixed(r.precision))}return e}),B=(e,n)=>{if(A(n)&&(n=te.value),n===0)return Math.round(e);let t=String(e);const s=t.indexOf(".");if(s===-1||!t.replace(".","").split("")[s+n])return e;const _=t.length;return t.charAt(_-1)==="5"&&(t=`${t.slice(0,Math.max(0,_-1))}6`),Number.parseFloat(Number(t).toFixed(n))},X=e=>{if(y(e))return 0;const n=e.toString(),t=n.indexOf(".");let s=0;return t!==-1&&(s=n.length-t-1),s},W=(e,n=1)=>b(e)?e>=Number.MAX_SAFE_INTEGER&&n===1||e<=Number.MIN_SAFE_INTEGER&&n===-1?e:B(e+r.step*n):u.currentValue,x=()=>{if(r.readonly||V.value||O.value)return;const e=Number(k.value)||0,n=W(e);w(n),i(D,u.currentValue),R()},L=()=>{if(r.readonly||V.value||g.value)return;const e=Number(k.value)||0,n=W(e,-1);w(n),i(D,u.currentValue),R()},H=(e,n)=>{const{max:t,min:s,step:o,precision:f,stepStrictly:_,valueOnClear:S}=r;t<s&&Te("InputNumber","min should not be greater than max.");let c=Number(e);if(y(e)||Number.isNaN(c))return null;if(e===""){if(S===null)return null;c=Se(S)?{min:s,max:t}[S]:S}return _&&(c=B(Math.round(c/o)*o,f),c!==e&&n&&i(N,c)),A(f)||(c=B(c,f)),(c>t||c<s)&&(c=c>t?t:s,n&&i(N,c)),c},w=(e,n=!0)=>{var t;const s=u.currentValue,o=H(e);if(!n){i(N,o);return}s===o&&e||(u.userInput=null,i(N,o),s!==o&&i(ne,o,s),r.validateEvent&&((t=p?.validate)==null||t.call(p,"change").catch(f=>J())),u.currentValue=o)},ae=e=>{u.userInput=e;const n=e===""?null:Number(e);i(D,n),w(n,!1)},re=e=>{const n=e!==""?Number(e):"";(b(n)&&!Number.isNaN(n)||e==="")&&w(n),R(),u.userInput=null},ue=()=>{var e,n;(n=(e=m.value)==null?void 0:e.focus)==null||n.call(e)},le=()=>{var e,n;(n=(e=m.value)==null?void 0:e.blur)==null||n.call(e)},se=e=>{i("focus",e)},oe=e=>{var n,t;u.userInput=null,u.currentValue===null&&((n=m.value)!=null&&n.input)&&(m.value.input.value=""),i("blur",e),r.validateEvent&&((t=p?.validate)==null||t.call(p,"blur").catch(s=>J()))},R=()=>{u.currentValue!==r.modelValue&&(u.currentValue=r.modelValue)},ie=e=>{document.activeElement===e.target&&e.preventDefault()};return Ee(()=>r.modelValue,(e,n)=>{const t=H(e,!0);u.userInput===null&&t!==n&&(u.currentValue=t)},{immediate:!0}),Ve(()=>{var e;const{min:n,max:t,modelValue:s}=r,o=(e=m.value)==null?void 0:e.input;if(o.setAttribute("role","spinbutton"),Number.isFinite(t)?o.setAttribute("aria-valuemax",String(t)):o.removeAttribute("aria-valuemax"),Number.isFinite(n)?o.setAttribute("aria-valuemin",String(n)):o.removeAttribute("aria-valuemin"),o.setAttribute("aria-valuenow",u.currentValue||u.currentValue===0?String(u.currentValue):""),o.setAttribute("aria-disabled",String(V.value)),!b(s)&&s!=null){let f=Number(s);Number.isNaN(f)&&(f=null),i(N,f)}o.addEventListener("wheel",ie,{passive:!1})}),he(()=>{var e,n;const t=(e=m.value)==null?void 0:e.input;t?.setAttribute("aria-valuenow",`${(n=u.currentValue)!=null?n:""}`)}),E({focus:ue,blur:le}),(e,n)=>(v(),$("div",{class:K([a(d).b(),a(d).m(a(U)),a(d).is("disabled",a(V)),a(d).is("without-controls",!e.controls),a(d).is("controls-right",a(M))]),onDragstart:G(()=>{},["prevent"])},[e.controls?Y((v(),$("span",{key:0,role:"button","aria-label":a(I)("el.inputNumber.decrease"),class:K([a(d).e("decrease"),a(d).is("disabled",a(g))]),onKeydown:P(L,["enter"])},[F(e.$slots,"decrease-icon",{},()=>[z(a(q),null,{default:T(()=>[a(M)?(v(),C(a(ye),{key:0})):(v(),C(a(Ie),{key:1}))]),_:1})])],42,["aria-label","onKeydown"])),[[a(Z),L]]):j("v-if",!0),e.controls?Y((v(),$("span",{key:1,role:"button","aria-label":a(I)("el.inputNumber.increase"),class:K([a(d).e("increase"),a(d).is("disabled",a(O))]),onKeydown:P(x,["enter"])},[F(e.$slots,"increase-icon",{},()=>[z(a(q),null,{default:T(()=>[a(M)?(v(),C(a(ge),{key:0})):(v(),C(a(we),{key:1}))]),_:1})])],42,["aria-label","onKeydown"])),[[a(Z),x]]):j("v-if",!0),z(a(Pe),{id:e.id,ref_key:"input",ref:m,type:"number",step:e.step,"model-value":a(k),placeholder:e.placeholder,readonly:e.readonly,disabled:a(V),size:a(U),max:e.max,min:e.min,name:e.name,"aria-label":e.ariaLabel,"validate-event":!1,inputmode:e.inputmode,onKeydown:[P(G(x,["prevent"]),["up"]),P(G(L,["prevent"]),["down"])],onBlur:oe,onFocus:se,onInput:ae,onChange:re},_e({_:2},[e.$slots.prefix?{name:"prefix",fn:T(()=>[F(e.$slots,"prefix")])}:void 0,e.$slots.suffix?{name:"suffix",fn:T(()=>[F(e.$slots,"suffix")])}:void 0]),1032,["id","step","model-value","placeholder","readonly","disabled","size","max","min","name","aria-label","inputmode","onKeydown"])],42,["onDragstart"]))}});var ze=pe($e,[["__file","input-number.vue"]]);const We=Ae(ze);export{We as E,Z as v};
|