UNPKG

@chenfengyuan/vue-number-input

Version:
2 lines 6.86 kB
/*! vue-number-input v2.0.1 | (c) 2018-present Chen Fengyuan | MIT */ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t(require("vue")):"function"==typeof define&&define.amd?define(["vue"],t):(e="undefined"!=typeof globalThis?globalThis:e||self).VueNumberInput=t(e.Vue)}(this,(function(e){"use strict";const t=Number.isNaN||window.isNaN,n=/^-?(?:\d+|\d+\.\d+|\.\d+)(?:[eE][-+]?\d+)?$/,u=/\.\d*(?:0|9){10}\d*$/,a=(e,t=1e11)=>u.test(String(e))?Math.round(e*t)/t:e;var i=e.defineComponent({name:"VueNumberInput",props:{attrs:{type:Object,default:void 0},center:Boolean,controls:Boolean,disabled:Boolean,inputtable:{type:Boolean,default:!0},inline:Boolean,max:{type:Number,default:1/0},min:{type:Number,default:-1/0},name:{type:String,default:void 0},placeholder:{type:String,default:void 0},readonly:Boolean,rounded:Boolean,size:{type:String,default:void 0},step:{type:Number,default:1},modelValue:{type:Number,default:NaN}},emits:["update:modelValue"],data:()=>({value:NaN}),computed:{increasable(){return t(this.value)||this.value<this.max},decreasable(){return t(this.value)||this.value>this.min}},watch:{modelValue:{immediate:!0,handler(e,n){t(e)&&void 0===n||e===this.value||this.setValue(e)}}},methods:{isNaN:t,change(e){this.setValue(e.target.value)},paste(e){const t=e.clipboardData||window.clipboardData;t&&!n.test(t.getData("text"))&&e.preventDefault()},decrease(){if(this.decreasable){let{value:e}=this;t(e)&&(e=0),this.setValue(a(e-this.step))}},increase(){if(this.increasable){let{value:e}=this;t(e)&&(e=0),this.setValue(a(e+this.step))}},setValue(e){const n=this.value;let u="number"!=typeof e?parseFloat(e):e;t(u)||(this.min<=this.max&&(u=Math.min(this.max,Math.max(this.min,u))),this.rounded&&(u=Math.round(u))),this.value=u,u===n&&(this.$refs.input.value=String(u)),this.$emit("update:modelValue",u,n)}}});const r=["disabled"],d=["name","value","min","max","step","readonly","disabled","placeholder"],o=["disabled"];return function(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var u=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css","top"===n&&u.firstChild?u.insertBefore(a,u.firstChild):u.appendChild(a),a.styleSheet?a.styleSheet.cssText=e:a.appendChild(document.createTextNode(e))}}('.vue-number-input[data-v-188efc8c]{display:block;font-size:0;max-width:100%;overflow:hidden;position:relative}.vue-number-input__button[data-v-188efc8c]{background-color:#fff;border:0;border-radius:.25rem;bottom:1px;position:absolute;top:1px;width:2.5rem;z-index:1}.vue-number-input__button[data-v-188efc8c]:focus{outline:none}.vue-number-input__button[data-v-188efc8c]:hover:after,.vue-number-input__button[data-v-188efc8c]:hover:before{background-color:#0074d9}.vue-number-input__button[data-v-188efc8c]:disabled{opacity:.65}.vue-number-input__button[data-v-188efc8c]:disabled:after,.vue-number-input__button[data-v-188efc8c]:disabled:before{background-color:#ddd}.vue-number-input__button[data-v-188efc8c]:after,.vue-number-input__button[data-v-188efc8c]:before{background-color:#111;content:"";left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);transition:background-color .15s}.vue-number-input__button[data-v-188efc8c]:before{height:1px;width:50%}.vue-number-input__button[data-v-188efc8c]:after{height:50%;width:1px}.vue-number-input__button--minus[data-v-188efc8c]{border-bottom-right-radius:0;border-right:1px solid #ddd;border-top-right-radius:0;left:1px}.vue-number-input__button--minus[data-v-188efc8c]:after{visibility:hidden}.vue-number-input__button--plus[data-v-188efc8c]{border-bottom-left-radius:0;border-left:1px solid #ddd;border-top-left-radius:0;right:1px}.vue-number-input__input[data-v-188efc8c]{-moz-appearance:textfield;background-color:#fff;border:1px solid #ddd;border-radius:.25rem;display:block;font-size:1rem;line-height:1.5;max-width:100%;min-height:1.5rem;min-width:3rem;padding:.4375rem .875rem;transition:border-color .15s;width:100%}.vue-number-input__input[data-v-188efc8c]::-webkit-inner-spin-button,.vue-number-input__input[data-v-188efc8c]::-webkit-outer-spin-button{-webkit-appearance:none}.vue-number-input__input[data-v-188efc8c]:focus{border-color:#0074d9;outline:none}.vue-number-input__input[data-v-188efc8c]:disabled,.vue-number-input__input[readonly][data-v-188efc8c]{background-color:#f8f8f8}.vue-number-input--inline[data-v-188efc8c]{display:inline-block}.vue-number-input--inline>input[data-v-188efc8c]{display:inline-block;width:12.5rem}.vue-number-input--center>input[data-v-188efc8c]{text-align:center}.vue-number-input--controls>input[data-v-188efc8c]{padding-left:3.375rem;padding-right:3.375rem}.vue-number-input--small>input[data-v-188efc8c]{border-radius:.1875rem;font-size:.875rem;padding:.25rem .5rem}.vue-number-input--small.vue-number-input--inline>input[data-v-188efc8c]{width:10rem}.vue-number-input--small.vue-number-input--controls>button[data-v-188efc8c]{width:2rem}.vue-number-input--small.vue-number-input--controls>input[data-v-188efc8c]{padding-left:2.5rem;padding-right:2.5rem}.vue-number-input--large>input[data-v-188efc8c]{border-radius:.3125rem;font-size:1.25rem;padding:.5rem 1rem}.vue-number-input--large.vue-number-input--inline>input[data-v-188efc8c]{width:15rem}.vue-number-input--large.vue-number-input--controls>button[data-v-188efc8c]{width:3rem}.vue-number-input--large.vue-number-input--controls>input[data-v-188efc8c]{padding-left:4rem;padding-right:4rem}'),i.render=function(t,n,u,a,i,l){return e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["vue-number-input",{"vue-number-input--inline":t.inline,"vue-number-input--center":t.center,"vue-number-input--controls":t.controls,[`vue-number-input--${t.size}`]:t.size}])},[t.controls?(e.openBlock(),e.createElementBlock("button",{key:0,class:"vue-number-input__button vue-number-input__button--minus",type:"button",tabindex:"-1",disabled:t.disabled||t.readonly||!t.decreasable,onClick:n[0]||(n[0]=(...e)=>t.decrease&&t.decrease(...e))},null,8,r)):e.createCommentVNode("v-if",!0),e.createElementVNode("input",e.mergeProps({ref:"input",class:"vue-number-input__input"},t.attrs,{type:"number",name:t.name,value:isNaN(t.value)?"":t.value,min:t.min,max:t.max,step:t.step,readonly:t.readonly||!t.inputtable,disabled:t.disabled||!t.decreasable&&!t.increasable,placeholder:t.placeholder,autocomplete:"off",onChange:n[1]||(n[1]=(...e)=>t.change&&t.change(...e)),onPaste:n[2]||(n[2]=(...e)=>t.paste&&t.paste(...e))}),null,16,d),t.controls?(e.openBlock(),e.createElementBlock("button",{key:1,class:"vue-number-input__button vue-number-input__button--plus",type:"button",tabindex:"-1",disabled:t.disabled||t.readonly||!t.increasable,onClick:n[3]||(n[3]=(...e)=>t.increase&&t.increase(...e))},null,8,o)):e.createCommentVNode("v-if",!0)],2)},i.__scopeId="data-v-188efc8c",i}));