v-money3 3.18.0 → 3.20.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -1
- package/dist/v-money3.es.js +1 -1
- package/dist/v-money3.umd.js +1 -1
- package/package.json +17 -10
package/README.md
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|

|
|
2
|
+
[](http://www.typescriptlang.org/)
|
|
2
3
|
|
|
3
4
|
# Money Mask for Vue 3
|
|
4
5
|
|
|
@@ -260,7 +261,7 @@ A console warn with more information will be shown!
|
|
|
260
261
|
Use it directly in the browser!
|
|
261
262
|
|
|
262
263
|
```html
|
|
263
|
-
<script src="https://unpkg.com/v-money3@3.
|
|
264
|
+
<script src="https://unpkg.com/v-money3@3.20.1/dist/v-money3.umd.js"></script>
|
|
264
265
|
```
|
|
265
266
|
|
|
266
267
|
Take a look at issue [#15](https://github.com/jonathanpmartins/v-money3/issues/15#issuecomment-830988807) and also this [codesandbox](https://codesandbox.io/s/mystifying-paper-bpfyn?file=/index.html) working example.
|
package/dist/v-money3.es.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{defineComponent as e,reactive as t,watch as o,computed as n,resolveDirective as i,withDirectives as r,openBlock as s,createElementBlock as l,mergeProps as a}from"vue";const u=["+","-"],d=["decimal","thousands","prefix","suffix"];class c{static between(e,t,o){return Math.max(e,Math.min(t,o))}static fixed(e){return c.between(0,e,1e3)}static numbersToCurrency(e,t){return e=e.padStart(t+1,"0"),0===t?e:`${e.slice(0,-t)}.${e.slice(-t)}`}static toStr(e){return e?e.toString():""}static onlyNumbers(e){return c.toStr(e).replace(/\D+/g,"")||"0"}static addThousandSeparator(e,t){return e.replace(/(\d)(?=(?:\d{3})+\b)/gm,`$1${t}`)}static joinIntegerAndDecimal(e,t,o){return t?e+o+t:e}static validateRestrictedInput(e,t){return u.includes(e)?(console.warn(`v-money3 "${t}" property don't accept "${e}" as a value.`),!1):!/\d/g.test(e)||(console.warn(`v-money3 "${t}" property don't accept "${e}" (any number) as a value.`),!1)}static validateRestrictedOptions(e){for(const t of d){if(!c.validateRestrictedInput(e[t],t))return!1}return!0}static filterRestrictedCharactersFromRestrictedOptions(e){for(const t of d)for(const o of u)e[t]=e[t].replaceAll(o,"");return e}static filterNumbersFromRestrictedOptions(e){for(const t of d)e[t]=e[t].replace(/\d+/g,"");return e}static filterOptRestrictions(e){return e=c.filterRestrictedCharactersFromRestrictedOptions(e),e=c.filterNumbersFromRestrictedOptions(e)}static guessFloatPrecision(e){return e.length-(e.indexOf(".")+1)}static removeLeadingZeros(e){return e.replace(/^(-?)0+(?!\.)(.+)/,"$1$2")}static isValidInteger(e){return/^-?[\d]+$/g.test(e)}static isValidFloat(e){return/^-?[\d]+(\.[\d]+)$/g.test(e)}static replaceAt(e,t,o){return t>e.length-1?e:e.substring(0,t)+o+e.substring(t+1)}static round(e,t){const o=t-c.guessFloatPrecision(e);if(o>=0)return e;let n=e.slice(0,o);const i=e.slice(o);if("."===n.charAt(n.length-1)&&(n=n.slice(0,-1)),parseInt(i.charAt(0),10)>=5){for(let e=n.length-1;e>=0;e-=1){const t=n.charAt(e);if("."!==t&&"-"!==t){const o=parseInt(t,10)+1;if(o<10)return c.replaceAt(n,e,o);n=c.replaceAt(n,e,"0")}}return`1${n}`}return n}static setCursor(e,t){const o=()=>{e.setSelectionRange(t,t)};e===document.activeElement&&(o(),setTimeout(o,1))}static event(e){const t=document.createEvent("Event");return t.initEvent(e,!0,!0),t}}var m={debug:!1,masked:!1,prefix:"",suffix:"",thousands:",",decimal:".",precision:2,disableNegative:!1,disabled:!1,min:null,max:null,allowBlank:!1,minimumNumberOfCharacters:0,modelModifiers:{number:!1},shouldRound:!0};class g extends c{constructor(e){super(),this.setNumber(e)}getNumber(){return this.number}getDecimalPrecision(){return this.decimal}setNumber(e){if(this.decimal=0,"bigint"==typeof e)this.number=e;else if("number"==typeof e)this.setupString(e.toString());else{if("string"!=typeof e)throw new Error(`BigNumber has received and invalid typeof: ${typeof e}. Only bigint, number and string are permitted.`);this.setupString(e)}}setupString(e){if(e=this.constructor.removeLeadingZeros(e),this.constructor.isValidInteger(e))this.number=BigInt(e);else{if(!this.constructor.isValidFloat(e))throw new Error(`BigNumber has received and invalid format for the constructor: ${e}`);this.decimal=this.constructor.guessFloatPrecision(e),this.number=BigInt(e.replace(".",""))}}toFixed(e=0,t=!0){let o=this.toString();const n=e-this.getDecimalPrecision();return n>0?(o.includes(".")||(o+="."),o.padEnd(o.length+n,"0")):n<0?t?this.constructor.round(o,e):o.slice(0,n):o}toString(){let e=this.number.toString();if(this.decimal){let t=!1;return"-"===e.charAt(0)&&(e=e.substring(1),t=!0),e=e.padStart(e.length+this.decimal,"0"),e=`${e.slice(0,-this.decimal)}.${e.slice(-this.decimal)}`,e=this.constructor.removeLeadingZeros(e),(t?"-":"")+e}return e}lessThan(e){const t=this.adjustComparisonNumbers(e);return t[0]<t[1]}biggerThan(e){const t=this.adjustComparisonNumbers(e);return t[0]>t[1]}isEqual(e){const t=this.adjustComparisonNumbers(e);return t[0]===t[1]}adjustComparisonNumbers(e){"BigNumber"!==e.constructor.name&&(e=new g(e));const t=this.getDecimalPrecision()-e.getDecimalPrecision();let o,n;return t>0?(o=this.getNumber(),n=e.getNumber()*10n**BigInt(t)):t<0?(o=this.getNumber()*10n**BigInt(-1*t),n=e.getNumber()):(o=this.getNumber(),n=e.getNumber()),[o,n]}}function p(e,t=m,o){t.debug&&console.log("utils format() - caller",o),t.debug&&console.log("utils format() - input1",e),null==e?e="":"number"==typeof e?e=t.shouldRound?e.toFixed(c.fixed(t.precision)):e.toFixed(c.fixed(t.precision)+1).slice(0,-1):t.modelModifiers&&t.modelModifiers.number&&c.isValidInteger(e)&&(e=Number(e).toFixed(c.fixed(t.precision))),t.debug&&console.log("utils format() - input2",e);const n=t.disableNegative?"":e.indexOf("-")>=0?"-":"";let i=e.replace(t.prefix,"").replace(t.suffix,"");t.debug&&console.log("utils format() - filtered",i),!t.precision&&"."!==t.thousands&&g.isValidFloat(i)&&(i=g.round(i,0),t.debug&&console.log("utils format() - !opt.precision && isValidFloat()",i));const r=c.onlyNumbers(i);t.debug&&console.log("utils format() - numbers",r),t.debug&&console.log("utils format() - numbersToCurrency",n+c.numbersToCurrency(r,t.precision));const s=new g(n+c.numbersToCurrency(r,t.precision));t.debug&&console.log("utils format() - bigNumber1",s.toString()),t.max&&s.biggerThan(t.max)&&s.setNumber(t.max),t.min&&s.lessThan(t.min)&&s.setNumber(t.min);const l=s.toFixed(c.fixed(t.precision),t.shouldRound);if(t.debug&&console.log("utils format() - bigNumber2",s.toFixed(c.fixed(t.precision))),/^0(\.0+)?$/g.test(l)&&t.allowBlank)return"";const a=l.split("."),u=2===a.length?a[1].length:0;a[0]=a[0].padStart(t.minimumNumberOfCharacters-u,"0");let d=a[0];const p=a[1];d=c.addThousandSeparator(d,t.thousands);const f=t.prefix+c.joinIntegerAndDecimal(d,p,t.decimal)+t.suffix;return t.debug&&console.log("utils format() - output",f),f}function f(e,t=m,o){t.debug&&console.log("utils unformat() - caller",o),t.debug&&console.log("utils unformat() - input",e);const n=t.disableNegative?"":e.indexOf("-")>=0?"-":"",i=e.replace(t.prefix,"").replace(t.suffix,"");t.debug&&console.log("utils unformat() - filtered",i);const r=c.onlyNumbers(i);t.debug&&console.log("utils unformat() - numbers",r);const s=new g(n+c.numbersToCurrency(r,t.precision));t.debug&&console.log("utils unformat() - bigNumber1",r.toString()),t.max&&s.biggerThan(t.max)&&s.setNumber(t.max),t.min&&s.lessThan(t.min)&&s.setNumber(t.min);let l=s.toFixed(c.fixed(t.precision),t.shouldRound);return t.modelModifiers&&t.modelModifiers.number&&(l=parseFloat(l)),t.debug&&console.log("utils unformat() - output",l),l}let b=null;const h=(e,t)=>{if(b.debug&&console.log("directive setValue() - caller",t),!c.validateRestrictedOptions(b))return void(b.debug&&console.log("directive setValue() - validateRestrictedOptions() return false. Stopping here...",e.value));let o=e.value.length-e.selectionEnd;e.value=p(e.value,b,t),o=Math.max(o,b.suffix.length),o=e.value.length-o,o=Math.max(o,b.prefix.length),c.setCursor(e,o),e.dispatchEvent(c.event("change"))};var v={mounted(e,t){if(t.value){if(b=c.filterOptRestrictions({...m,...t.value}),b.debug&&console.log("directive mounted() - opt",b),"INPUT"!==e.tagName.toLocaleUpperCase()){const t=e.getElementsByTagName("input");1!==t.length||(e=t[0])}e.onkeydown=t=>{const o="Backspace"===t.code||"Delete"===t.code,n=e.value.length-e.selectionEnd==0;if(b.debug&&console.log("directive onkeydown() - el.value",e.value),b.debug&&console.log("directive onkeydown() - backspacePressed",o),b.debug&&console.log("directive onkeydown() - isAtEndPosition",n),b.allowBlank&&o&&n&&0===f(e.value,b)&&(b.debug&&console.log('directive onkeydown() - set el.value = ""',e.value),e.value="",e.dispatchEvent(c.event("change"))),b.debug&&console.log("directive onkeydown() - e.key",t.key),"+"===t.key){b.debug&&console.log("directive onkeydown() - unformat el.value",e.value);const t=f(e.value,b);t<0&&(e.value=-1*t)}},e.oninput=()=>{b.debug&&console.log("directive oninput()",e.value),/^[1-9]$/.test(e.value)&&(e.value=c.numbersToCurrency(e.value,c.fixed(b.precision)),b.debug&&console.log("directive oninput() - is 1-9",e.value)),h(e,"directive oninput")},b.debug&&console.log("directive mounted() - el.value",e.value),h(e,"directive mounted")}},updated(e,t){t.value&&(b=c.filterOptRestrictions({...m,...t.value}),b.debug&&console.log("directive updated() - el.value",e.value),b.debug&&console.log("directive updated() - opt",b),h(e,"directive updated"))},beforeUnmount(e){e.onkeydown=null,e.oninput=null,e.onfocus=null}};const y=e({inheritAttrs:!1,name:"Money3",props:{debug:{required:!1,type:Boolean,default:!1},id:{required:!1,type:[Number,String],default:0},modelValue:{required:!1,type:[Number,String,void 0,null],default:null},modelModifiers:{required:!1,type:Object,default:()=>({number:!1})},masked:{type:Boolean,default:!1},precision:{type:Number,default:()=>m.precision},decimal:{type:String,default:()=>m.decimal,validator:e=>c.validateRestrictedInput(e,"decimal")},thousands:{type:String,default:()=>m.thousands,validator:e=>c.validateRestrictedInput(e,"thousands")},prefix:{type:String,default:()=>m.prefix,validator:e=>c.validateRestrictedInput(e,"prefix")},suffix:{type:String,default:()=>m.suffix,validator:e=>c.validateRestrictedInput(e,"suffix")},disableNegative:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},max:{type:[String,Number],default:()=>m.max},min:{type:[String,Number],default:()=>m.min},allowBlank:{type:Boolean,default:()=>m.allowBlank},minimumNumberOfCharacters:{type:Number,default:()=>m.minimumNumberOfCharacters},shouldRound:{type:Boolean,default:!0}},directives:{money3:v},setup(e,{emit:i,attrs:r}){e.debug&&console.log("component setup()",e);const s=e.modelModifiers&&e.modelModifiers.number?e.shouldRound?Number(e.modelValue).toFixed(c.fixed(e.precision)):Number(e.modelValue).toFixed(c.fixed(e.precision)+1).slice(0,-1):e.modelValue,l=t({formattedValue:p(s,e,"component setup")});e.debug&&console.log("component setup() - data.formattedValue",l.formattedValue),o((()=>e.modelValue),(t=>{e.debug&&console.log("component watch() -> val",t);const o=p(t,c.filterOptRestrictions({...e}),"component watch");o!==l.formattedValue&&(e.debug&&console.log("component watch() changed -> formatted",o),l.formattedValue=o)}));let a=null;const u=n((()=>{const e={...r};return delete e["onUpdate:modelValue"],e}));return{data:l,listeners:u,change:function(t){e.debug&&console.log("component change() -> evt.target.value",t.target.value);const o=e.masked&&!e.modelModifiers.number?t.target.value:f(t.target.value,c.filterOptRestrictions({...e}),"component change");o!==a&&(a=o,e.debug&&console.log("component change() -> update:model-value",o),i("update:model-value",o))}}}}),x=["id","value","disabled"];y.render=function(e,t,o,n,u,d){const c=i("money3");return r((s(),l("input",a({type:"tel",id:e.id,value:e.data.formattedValue,disabled:e.disabled,onChange:t[0]||(t[0]=(...t)=>e.change&&e.change(...t))},e.listeners,{class:"v-money3"}),null,16,x)),[[c,{precision:e.precision,decimal:e.decimal,thousands:e.thousands,prefix:e.prefix,suffix:e.suffix,disableNegative:e.disableNegative,min:e.min,max:e.max,allowBlank:e.allowBlank,minimumNumberOfCharacters:e.minimumNumberOfCharacters,debug:e.debug,modelModifiers:e.modelModifiers}]])};const N={install:e=>{e.component("money3",y),e.directive("money3",v)}};export{y as Money,y as Money3,y as Money3Component,v as Money3Directive,v as VMoney,v as VMoney3,N as default,p as format,f as unformat};
|
|
1
|
+
var e=Object.defineProperty,t=(t,n,i)=>(((t,n,i)=>{n in t?e(t,n,{enumerable:!0,configurable:!0,writable:!0,value:i}):t[n]=i})(t,"symbol"!=typeof n?n+"":n,i),i);import{defineComponent as n,getCurrentInstance as i,toRefs as r,ref as u,watch as o,useAttrs as a,computed as l,resolveDirective as s,withDirectives as d,openBlock as c,createElementBlock as m,mergeProps as f,unref as p}from"vue";var v={debug:!1,masked:!1,prefix:"",suffix:"",thousands:",",decimal:".",precision:2,disableNegative:!1,disabled:!1,min:null,max:null,allowBlank:!1,minimumNumberOfCharacters:0,modelModifiers:{number:!1},shouldRound:!0};const g=["+","-"],b=["decimal","thousands","prefix","suffix"];function h(e){return Math.max(0,Math.min(e,1e3))}function y(e,t){return e=e.padStart(t+1,"0"),0===t?e:`${e.slice(0,-t)}.${e.slice(-t)}`}function x(e){return(e=e?e.toString():"").replace(/\D+/g,"")||"0"}function N(e,t){return g.includes(e)?(console.warn(`v-money3 "${t}" property don't accept "${e}" as a value.`),!1):!/\d/g.test(e)||(console.warn(`v-money3 "${t}" property don't accept "${e}" (any number) as a value.`),!1)}function w(e){for(const t of b){e[t]=e[t].replace(/\d+/g,"");for(const n of g)e[t]=e[t].replaceAll(n,"")}return e}function k(e){return e.length-(e.indexOf(".")+1)}function S(e){return e.replace(/^(-?)0+(?!\.)(.+)/,"$1$2")}function B(e){return/^-?[\d]+$/g.test(e)}function M(e){return/^-?[\d]+(\.[\d]+)$/g.test(e)}function $(e,t,n){return t>e.length-1?e:e.substring(0,t)+n+e.substring(t+1)}function C(e,t){const n=t-k(e);if(n>=0)return e;let i=e.slice(0,n);const r=e.slice(n);if("."===i.charAt(i.length-1)&&(i=i.slice(0,-1)),parseInt(r.charAt(0),10)>=5){for(let e=i.length-1;e>=0;e-=1){const t=i.charAt(e);if("."!==t&&"-"!==t){const n=parseInt(t,10)+1;if(n<10)return $(i,e,n);i=$(i,e,"0")}}return`1${i}`}return i}function F(e){return new Event(e,{bubbles:!0,cancelable:!1})}function O({debug:e=!1},...t){e&&console.log(...t)}class T{constructor(e){t(this,"number",0n),t(this,"decimal",0),this.setNumber(e)}getNumber(){return this.number}getDecimalPrecision(){return this.decimal}setNumber(e){this.decimal=0,"bigint"==typeof e?this.number=e:"number"==typeof e?this.setupString(e.toString()):this.setupString(e)}toFixed(e=0,t=!0){let n=this.toString();const i=e-this.getDecimalPrecision();return i>0?(n.includes(".")||(n+="."),n.padEnd(n.length+i,"0")):i<0?t?C(n,e):n.slice(0,i):n}toString(){let e=this.number.toString();if(this.decimal){let t=!1;return"-"===e.charAt(0)&&(e=e.substring(1),t=!0),e=e.padStart(e.length+this.decimal,"0"),e=`${e.slice(0,-this.decimal)}.${e.slice(-this.decimal)}`,e=S(e),(t?"-":"")+e}return e}lessThan(e){const[t,n]=this.adjustComparisonNumbers(e);return t<n}biggerThan(e){const[t,n]=this.adjustComparisonNumbers(e);return t>n}isEqual(e){const[t,n]=this.adjustComparisonNumbers(e);return t===n}setupString(e){if(B(e=S(e)))this.number=BigInt(e);else{if(!M(e))throw new Error(`BigNumber has received and invalid format for the constructor: ${e}`);this.decimal=k(e),this.number=BigInt(e.replace(".",""))}}adjustComparisonNumbers(e){let t;t="BigNumber"!==e.constructor.name?new T(e):e;const n=this.getDecimalPrecision()-t.getDecimalPrecision();let i=this.getNumber(),r=t.getNumber();return n>0?r=t.getNumber()*10n**BigInt(n):n<0&&(i=this.getNumber()*10n**BigInt(-1*n)),[i,r]}}function E(e,t=v,n=""){O(t,"utils format() - caller",n),O(t,"utils format() - input1",e),null==e?e="":"number"==typeof e?e=t.shouldRound?e.toFixed(h(t.precision)):e.toFixed(h(t.precision)+1).slice(0,-1):t.modelModifiers&&t.modelModifiers.number&&B(e)&&(e=Number(e).toFixed(h(t.precision))),O(t,"utils format() - input2",e);const i=t.disableNegative?"":e.indexOf("-")>=0?"-":"";let r=e.replace(t.prefix,"").replace(t.suffix,"");O(t,"utils format() - filtered",r),!t.precision&&"."!==t.thousands&&M(r)&&(r=C(r,0),O(t,"utils format() - !opt.precision && isValidFloat()",r));const u=x(r);O(t,"utils format() - numbers",u),O(t,"utils format() - numbersToCurrency",i+y(u,t.precision));const o=new T(i+y(u,t.precision));O(t,"utils format() - bigNumber1",o.toString()),t.max&&o.biggerThan(t.max)&&o.setNumber(t.max),t.min&&o.lessThan(t.min)&&o.setNumber(t.min);const a=o.toFixed(h(t.precision),t.shouldRound);if(O(t,"utils format() - bigNumber2",o.toFixed(h(t.precision))),/^0(\.0+)?$/g.test(a)&&t.allowBlank)return"";let[l,s]=a.split(".");const d=void 0!==s?s.length:0;l=l.padStart(t.minimumNumberOfCharacters-d,"0"),l=function(e,t){return e.replace(/(\d)(?=(?:\d{3})+\b)/gm,`$1${t}`)}(l,t.thousands);const c=t.prefix+function(e,t,n){return t?e+n+t:e}(l,s,t.decimal)+t.suffix;return O(t,"utils format() - output",c),c}function R(e,t=v,n=""){O(t,"utils unformat() - caller",n),O(t,"utils unformat() - input",e);const i=t.disableNegative?"":e.indexOf("-")>=0?"-":"",r=e.replace(t.prefix,"").replace(t.suffix,"");O(t,"utils unformat() - filtered",r);const u=x(r);O(t,"utils unformat() - numbers",u);const o=new T(i+y(u,t.precision));O(t,"utils unformat() - bigNumber1",u.toString()),t.max&&o.biggerThan(t.max)&&o.setNumber(t.max),t.min&&o.lessThan(t.min)&&o.setNumber(t.min);let a=o.toFixed(h(t.precision),t.shouldRound);return t.modelModifiers&&t.modelModifiers.number&&(a=parseFloat(a)),O(t,"utils unformat() - output",a),a}const V=(e,t,n)=>{if(O(t,"directive setValue() - caller",n),!function(e){for(const t of b)if(!N(e[t],t))return!1;return!0}(t))return void O(t,"directive setValue() - validateRestrictedOptions() return false. Stopping here...",e.value);let i=e.value.length-(e.selectionEnd||0);e.value=E(e.value,t,n),i=Math.max(i,t.suffix.length),i=e.value.length-i,i=Math.max(i,t.prefix.length),function(e,t){const n=()=>{e.setSelectionRange(t,t)};e===document.activeElement&&(n(),setTimeout(n,1))}(e,i),e.dispatchEvent(F("change"))},P=(e,t)=>{const n=e.currentTarget,i="Backspace"===e.code||"Delete"===e.code,r=n.value.length-(n.selectionEnd||0)==0;if(O(t,"directive onkeydown() - el.value",n.value),O(t,"directive onkeydown() - backspacePressed",i),O(t,"directive onkeydown() - isAtEndPosition",r),t.allowBlank&&i&&r&&0===R(n.value,t,"directive onkeydown allowBlank")&&(O(t,'directive onkeydown() - set el.value = ""',n.value),n.value="",n.dispatchEvent(F("change"))),O(t,"directive onkeydown() - e.key",e.key),"+"===e.key){O(t,"directive onkeydown() - unformat el.value",n.value);let e=R(n.value,t,"directive onkeydown +");"string"==typeof e&&(e=parseFloat(e)),e<0&&(n.value=String(-1*e))}},A=(e,t)=>{const n=e.currentTarget;O(t,"directive oninput()",n.value),/^[1-9]$/.test(n.value)&&(n.value=y(n.value,h(t.precision)),O(t,"directive oninput() - is 1-9",n.value)),V(n,t,"directive oninput")};var I={mounted(e,t){if(!t.value)return;const n=w({...v,...t.value});if(O(n,"directive mounted() - opt",n),"INPUT"!==e.tagName.toLocaleUpperCase()){const t=e.getElementsByTagName("input");1!==t.length||(e=t[0])}e.onkeydown=e=>{P(e,n)},e.oninput=e=>{A(e,n)},O(n,"directive mounted() - el.value",e.value),V(e,n,"directive mounted")},updated(e,t){if(!t.value)return;const n=w({...v,...t.value});e.onkeydown=e=>{P(e,n)},e.oninput=e=>{A(e,n)},O(n,"directive updated() - el.value",e.value),O(n,"directive updated() - opt",n),V(e,n,"directive updated")},beforeUnmount(e){e.onkeydown=null,e.oninput=null,e.onfocus=null}};const j=["id","value","disabled"];const D=n({...{inheritAttrs:!1,name:"Money3",directives:{money3:I}},props:{debug:{required:!1,type:Boolean,default:!1},id:{required:!1,type:[Number,String],default:()=>{const e=i();return e?e.uid:null}},modelValue:{required:!0,type:[Number,String]},modelModifiers:{required:!1,type:Object,default:()=>({number:!1})},masked:{type:Boolean,default:!1},precision:{type:Number,default:()=>v.precision},decimal:{type:String,default:()=>v.decimal,validator:e=>N(e,"decimal")},thousands:{type:String,default:()=>v.thousands,validator:e=>N(e,"thousands")},prefix:{type:String,default:()=>v.prefix,validator:e=>N(e,"prefix")},suffix:{type:String,default:()=>v.suffix,validator:e=>N(e,"suffix")},disableNegative:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},max:{type:[Number,String],default:()=>v.max},min:{type:[Number,String],default:()=>v.min},allowBlank:{type:Boolean,default:()=>v.allowBlank},minimumNumberOfCharacters:{type:Number,default:()=>v.minimumNumberOfCharacters},shouldRound:{type:Boolean,default:()=>v.shouldRound}},emits:["update:model-value"],setup:function(e,{emit:t}){const n=e,{modelValue:i,modelModifiers:v,masked:g,precision:b,shouldRound:y}=r(n);O(n,"component setup()",n);let x=i.value;v.value&&v.value.number&&(x=y.value?Number(i.value).toFixed(h(b.value)):Number(i.value).toFixed(h(b.value)+1).slice(0,-1));const N=u(E(x,n,"component setup"));O(n,"component setup() - data.formattedValue",N.value),o(i,(function(e){O(n,"component watch() -> value",e);const t=E(e,w({...n}),"component watch");t!==N.value&&(O(n,"component watch() changed -> formatted",t),N.value=t)}));let k=null;function S(e){let i;O(n,"component change() -> evt.target.value",e.target.value),i=g.value&&!v.value.number?e.target.value:R(e.target.value,w({...n}),"component change"),i!==k&&(k=i,O(n,"component change() -> update:model-value",i),t("update:model-value",i))}const B=a(),M=l((()=>{const e={...B};return delete e["onUpdate:modelValue"],e}));return(e,t)=>{const i=s("money3");return d((c(),m("input",f({id:n.id},p(M),{type:"tel",class:"v-money3",value:N.value,disabled:n.disabled,onChange:S}),null,16,j)),[[i,{precision:p(b),decimal:n.decimal,thousands:n.thousands,prefix:n.prefix,suffix:n.suffix,disableNegative:n.disableNegative,min:n.min,max:n.max,allowBlank:n.allowBlank,minimumNumberOfCharacters:n.minimumNumberOfCharacters,debug:n.debug,modelModifiers:p(v),shouldRound:p(y)}]])}}});var q={install(e){e.component("money3",D),e.directive("money3",I)}};export{T as BigNumber,D as Money,D as Money3,D as Money3Component,I as Money3Directive,I as VMoney,I as VMoney3,q as default,E as format,R as unformat};
|
package/dist/v-money3.umd.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("vue")):"function"==typeof define&&define.amd?define(["exports","vue"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["v-money3"]={},e.Vue)}(this,(function(e,t){"use strict";const o=["+","-"],n=["decimal","thousands","prefix","suffix"];class i{static between(e,t,o){return Math.max(e,Math.min(t,o))}static fixed(e){return i.between(0,e,1e3)}static numbersToCurrency(e,t){return e=e.padStart(t+1,"0"),0===t?e:`${e.slice(0,-t)}.${e.slice(-t)}`}static toStr(e){return e?e.toString():""}static onlyNumbers(e){return i.toStr(e).replace(/\D+/g,"")||"0"}static addThousandSeparator(e,t){return e.replace(/(\d)(?=(?:\d{3})+\b)/gm,`$1${t}`)}static joinIntegerAndDecimal(e,t,o){return t?e+o+t:e}static validateRestrictedInput(e,t){return o.includes(e)?(console.warn(`v-money3 "${t}" property don't accept "${e}" as a value.`),!1):!/\d/g.test(e)||(console.warn(`v-money3 "${t}" property don't accept "${e}" (any number) as a value.`),!1)}static validateRestrictedOptions(e){for(const t of n){if(!i.validateRestrictedInput(e[t],t))return!1}return!0}static filterRestrictedCharactersFromRestrictedOptions(e){for(const t of n)for(const n of o)e[t]=e[t].replaceAll(n,"");return e}static filterNumbersFromRestrictedOptions(e){for(const t of n)e[t]=e[t].replace(/\d+/g,"");return e}static filterOptRestrictions(e){return e=i.filterRestrictedCharactersFromRestrictedOptions(e),e=i.filterNumbersFromRestrictedOptions(e)}static guessFloatPrecision(e){return e.length-(e.indexOf(".")+1)}static removeLeadingZeros(e){return e.replace(/^(-?)0+(?!\.)(.+)/,"$1$2")}static isValidInteger(e){return/^-?[\d]+$/g.test(e)}static isValidFloat(e){return/^-?[\d]+(\.[\d]+)$/g.test(e)}static replaceAt(e,t,o){return t>e.length-1?e:e.substring(0,t)+o+e.substring(t+1)}static round(e,t){const o=t-i.guessFloatPrecision(e);if(o>=0)return e;let n=e.slice(0,o);const r=e.slice(o);if("."===n.charAt(n.length-1)&&(n=n.slice(0,-1)),parseInt(r.charAt(0),10)>=5){for(let e=n.length-1;e>=0;e-=1){const t=n.charAt(e);if("."!==t&&"-"!==t){const o=parseInt(t,10)+1;if(o<10)return i.replaceAt(n,e,o);n=i.replaceAt(n,e,"0")}}return`1${n}`}return n}static setCursor(e,t){const o=()=>{e.setSelectionRange(t,t)};e===document.activeElement&&(o(),setTimeout(o,1))}static event(e){const t=document.createEvent("Event");return t.initEvent(e,!0,!0),t}}var r={debug:!1,masked:!1,prefix:"",suffix:"",thousands:",",decimal:".",precision:2,disableNegative:!1,disabled:!1,min:null,max:null,allowBlank:!1,minimumNumberOfCharacters:0,modelModifiers:{number:!1},shouldRound:!0};class s extends i{constructor(e){super(),this.setNumber(e)}getNumber(){return this.number}getDecimalPrecision(){return this.decimal}setNumber(e){if(this.decimal=0,"bigint"==typeof e)this.number=e;else if("number"==typeof e)this.setupString(e.toString());else{if("string"!=typeof e)throw new Error(`BigNumber has received and invalid typeof: ${typeof e}. Only bigint, number and string are permitted.`);this.setupString(e)}}setupString(e){if(e=this.constructor.removeLeadingZeros(e),this.constructor.isValidInteger(e))this.number=BigInt(e);else{if(!this.constructor.isValidFloat(e))throw new Error(`BigNumber has received and invalid format for the constructor: ${e}`);this.decimal=this.constructor.guessFloatPrecision(e),this.number=BigInt(e.replace(".",""))}}toFixed(e=0,t=!0){let o=this.toString();const n=e-this.getDecimalPrecision();return n>0?(o.includes(".")||(o+="."),o.padEnd(o.length+n,"0")):n<0?t?this.constructor.round(o,e):o.slice(0,n):o}toString(){let e=this.number.toString();if(this.decimal){let t=!1;return"-"===e.charAt(0)&&(e=e.substring(1),t=!0),e=e.padStart(e.length+this.decimal,"0"),e=`${e.slice(0,-this.decimal)}.${e.slice(-this.decimal)}`,e=this.constructor.removeLeadingZeros(e),(t?"-":"")+e}return e}lessThan(e){const t=this.adjustComparisonNumbers(e);return t[0]<t[1]}biggerThan(e){const t=this.adjustComparisonNumbers(e);return t[0]>t[1]}isEqual(e){const t=this.adjustComparisonNumbers(e);return t[0]===t[1]}adjustComparisonNumbers(e){"BigNumber"!==e.constructor.name&&(e=new s(e));const t=this.getDecimalPrecision()-e.getDecimalPrecision();let o,n;return t>0?(o=this.getNumber(),n=e.getNumber()*10n**BigInt(t)):t<0?(o=this.getNumber()*10n**BigInt(-1*t),n=e.getNumber()):(o=this.getNumber(),n=e.getNumber()),[o,n]}}function l(e,t=r,o){t.debug&&console.log("utils format() - caller",o),t.debug&&console.log("utils format() - input1",e),null==e?e="":"number"==typeof e?e=t.shouldRound?e.toFixed(i.fixed(t.precision)):e.toFixed(i.fixed(t.precision)+1).slice(0,-1):t.modelModifiers&&t.modelModifiers.number&&i.isValidInteger(e)&&(e=Number(e).toFixed(i.fixed(t.precision))),t.debug&&console.log("utils format() - input2",e);const n=t.disableNegative?"":e.indexOf("-")>=0?"-":"";let l=e.replace(t.prefix,"").replace(t.suffix,"");t.debug&&console.log("utils format() - filtered",l),!t.precision&&"."!==t.thousands&&s.isValidFloat(l)&&(l=s.round(l,0),t.debug&&console.log("utils format() - !opt.precision && isValidFloat()",l));const a=i.onlyNumbers(l);t.debug&&console.log("utils format() - numbers",a),t.debug&&console.log("utils format() - numbersToCurrency",n+i.numbersToCurrency(a,t.precision));const u=new s(n+i.numbersToCurrency(a,t.precision));t.debug&&console.log("utils format() - bigNumber1",u.toString()),t.max&&u.biggerThan(t.max)&&u.setNumber(t.max),t.min&&u.lessThan(t.min)&&u.setNumber(t.min);const d=u.toFixed(i.fixed(t.precision),t.shouldRound);if(t.debug&&console.log("utils format() - bigNumber2",u.toFixed(i.fixed(t.precision))),/^0(\.0+)?$/g.test(d)&&t.allowBlank)return"";const c=d.split("."),m=2===c.length?c[1].length:0;c[0]=c[0].padStart(t.minimumNumberOfCharacters-m,"0");let g=c[0];const f=c[1];g=i.addThousandSeparator(g,t.thousands);const p=t.prefix+i.joinIntegerAndDecimal(g,f,t.decimal)+t.suffix;return t.debug&&console.log("utils format() - output",p),p}function a(e,t=r,o){t.debug&&console.log("utils unformat() - caller",o),t.debug&&console.log("utils unformat() - input",e);const n=t.disableNegative?"":e.indexOf("-")>=0?"-":"",l=e.replace(t.prefix,"").replace(t.suffix,"");t.debug&&console.log("utils unformat() - filtered",l);const a=i.onlyNumbers(l);t.debug&&console.log("utils unformat() - numbers",a);const u=new s(n+i.numbersToCurrency(a,t.precision));t.debug&&console.log("utils unformat() - bigNumber1",a.toString()),t.max&&u.biggerThan(t.max)&&u.setNumber(t.max),t.min&&u.lessThan(t.min)&&u.setNumber(t.min);let d=u.toFixed(i.fixed(t.precision),t.shouldRound);return t.modelModifiers&&t.modelModifiers.number&&(d=parseFloat(d)),t.debug&&console.log("utils unformat() - output",d),d}let u=null;const d=(e,t)=>{if(u.debug&&console.log("directive setValue() - caller",t),!i.validateRestrictedOptions(u))return void(u.debug&&console.log("directive setValue() - validateRestrictedOptions() return false. Stopping here...",e.value));let o=e.value.length-e.selectionEnd;e.value=l(e.value,u,t),o=Math.max(o,u.suffix.length),o=e.value.length-o,o=Math.max(o,u.prefix.length),i.setCursor(e,o),e.dispatchEvent(i.event("change"))};var c={mounted(e,t){if(t.value){if(u=i.filterOptRestrictions({...r,...t.value}),u.debug&&console.log("directive mounted() - opt",u),"INPUT"!==e.tagName.toLocaleUpperCase()){const t=e.getElementsByTagName("input");1!==t.length||(e=t[0])}e.onkeydown=t=>{const o="Backspace"===t.code||"Delete"===t.code,n=e.value.length-e.selectionEnd==0;if(u.debug&&console.log("directive onkeydown() - el.value",e.value),u.debug&&console.log("directive onkeydown() - backspacePressed",o),u.debug&&console.log("directive onkeydown() - isAtEndPosition",n),u.allowBlank&&o&&n&&0===a(e.value,u)&&(u.debug&&console.log('directive onkeydown() - set el.value = ""',e.value),e.value="",e.dispatchEvent(i.event("change"))),u.debug&&console.log("directive onkeydown() - e.key",t.key),"+"===t.key){u.debug&&console.log("directive onkeydown() - unformat el.value",e.value);const t=a(e.value,u);t<0&&(e.value=-1*t)}},e.oninput=()=>{u.debug&&console.log("directive oninput()",e.value),/^[1-9]$/.test(e.value)&&(e.value=i.numbersToCurrency(e.value,i.fixed(u.precision)),u.debug&&console.log("directive oninput() - is 1-9",e.value)),d(e,"directive oninput")},u.debug&&console.log("directive mounted() - el.value",e.value),d(e,"directive mounted")}},updated(e,t){t.value&&(u=i.filterOptRestrictions({...r,...t.value}),u.debug&&console.log("directive updated() - el.value",e.value),u.debug&&console.log("directive updated() - opt",u),d(e,"directive updated"))},beforeUnmount(e){e.onkeydown=null,e.oninput=null,e.onfocus=null}};const m=t.defineComponent({inheritAttrs:!1,name:"Money3",props:{debug:{required:!1,type:Boolean,default:!1},id:{required:!1,type:[Number,String],default:0},modelValue:{required:!1,type:[Number,String,void 0,null],default:null},modelModifiers:{required:!1,type:Object,default:()=>({number:!1})},masked:{type:Boolean,default:!1},precision:{type:Number,default:()=>r.precision},decimal:{type:String,default:()=>r.decimal,validator:e=>i.validateRestrictedInput(e,"decimal")},thousands:{type:String,default:()=>r.thousands,validator:e=>i.validateRestrictedInput(e,"thousands")},prefix:{type:String,default:()=>r.prefix,validator:e=>i.validateRestrictedInput(e,"prefix")},suffix:{type:String,default:()=>r.suffix,validator:e=>i.validateRestrictedInput(e,"suffix")},disableNegative:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},max:{type:[String,Number],default:()=>r.max},min:{type:[String,Number],default:()=>r.min},allowBlank:{type:Boolean,default:()=>r.allowBlank},minimumNumberOfCharacters:{type:Number,default:()=>r.minimumNumberOfCharacters},shouldRound:{type:Boolean,default:!0}},directives:{money3:c},setup(e,{emit:o,attrs:n}){e.debug&&console.log("component setup()",e);const r=e.modelModifiers&&e.modelModifiers.number?e.shouldRound?Number(e.modelValue).toFixed(i.fixed(e.precision)):Number(e.modelValue).toFixed(i.fixed(e.precision)+1).slice(0,-1):e.modelValue,s=t.reactive({formattedValue:l(r,e,"component setup")});e.debug&&console.log("component setup() - data.formattedValue",s.formattedValue),t.watch((()=>e.modelValue),(t=>{e.debug&&console.log("component watch() -> val",t);const o=l(t,i.filterOptRestrictions({...e}),"component watch");o!==s.formattedValue&&(e.debug&&console.log("component watch() changed -> formatted",o),s.formattedValue=o)}));let u=null;const d=t.computed((()=>{const e={...n};return delete e["onUpdate:modelValue"],e}));return{data:s,listeners:d,change:function(t){e.debug&&console.log("component change() -> evt.target.value",t.target.value);const n=e.masked&&!e.modelModifiers.number?t.target.value:a(t.target.value,i.filterOptRestrictions({...e}),"component change");n!==u&&(u=n,e.debug&&console.log("component change() -> update:model-value",n),o("update:model-value",n))}}}}),g=["id","value","disabled"];m.render=function(e,o,n,i,r,s){const l=t.resolveDirective("money3");return t.withDirectives((t.openBlock(),t.createElementBlock("input",t.mergeProps({type:"tel",id:e.id,value:e.data.formattedValue,disabled:e.disabled,onChange:o[0]||(o[0]=(...t)=>e.change&&e.change(...t))},e.listeners,{class:"v-money3"}),null,16,g)),[[l,{precision:e.precision,decimal:e.decimal,thousands:e.thousands,prefix:e.prefix,suffix:e.suffix,disableNegative:e.disableNegative,min:e.min,max:e.max,allowBlank:e.allowBlank,minimumNumberOfCharacters:e.minimumNumberOfCharacters,debug:e.debug,modelModifiers:e.modelModifiers}]])};const f={install:e=>{e.component("money3",m),e.directive("money3",c)}};e.Money=m,e.Money3=m,e.Money3Component=m,e.Money3Directive=c,e.VMoney=c,e.VMoney3=c,e.default=f,e.format=l,e.unformat=a,Object.defineProperty(e,"__esModule",{value:!0}),e[Symbol.toStringTag]="Module"}));
|
|
1
|
+
var __defProp=Object.defineProperty,__defNormalProp=(e,t,n)=>t in e?__defProp(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,__publicField=(e,t,n)=>(__defNormalProp(e,"symbol"!=typeof t?t+"":t,n),n);!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("vue")):"function"==typeof define&&define.amd?define(["exports","vue"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["v-money3"]={},e.Vue)}(this,(function(e,t){"use strict";var n={debug:!1,masked:!1,prefix:"",suffix:"",thousands:",",decimal:".",precision:2,disableNegative:!1,disabled:!1,min:null,max:null,allowBlank:!1,minimumNumberOfCharacters:0,modelModifiers:{number:!1},shouldRound:!0};const i=["+","-"],r=["decimal","thousands","prefix","suffix"];function o(e){return Math.max(0,Math.min(e,1e3))}function u(e,t){return e=e.padStart(t+1,"0"),0===t?e:`${e.slice(0,-t)}.${e.slice(-t)}`}function a(e){return(e=e?e.toString():"").replace(/\D+/g,"")||"0"}function l(e,t){return i.includes(e)?(console.warn(`v-money3 "${t}" property don't accept "${e}" as a value.`),!1):!/\d/g.test(e)||(console.warn(`v-money3 "${t}" property don't accept "${e}" (any number) as a value.`),!1)}function s(e){for(const t of r){e[t]=e[t].replace(/\d+/g,"");for(const n of i)e[t]=e[t].replaceAll(n,"")}return e}function d(e){return e.length-(e.indexOf(".")+1)}function c(e){return e.replace(/^(-?)0+(?!\.)(.+)/,"$1$2")}function m(e){return/^-?[\d]+$/g.test(e)}function f(e){return/^-?[\d]+(\.[\d]+)$/g.test(e)}function p(e,t,n){return t>e.length-1?e:e.substring(0,t)+n+e.substring(t+1)}function v(e,t){const n=t-d(e);if(n>=0)return e;let i=e.slice(0,n);const r=e.slice(n);if("."===i.charAt(i.length-1)&&(i=i.slice(0,-1)),parseInt(r.charAt(0),10)>=5){for(let e=i.length-1;e>=0;e-=1){const t=i.charAt(e);if("."!==t&&"-"!==t){const n=parseInt(t,10)+1;if(n<10)return p(i,e,n);i=p(i,e,"0")}}return`1${i}`}return i}function g(e){return new Event(e,{bubbles:!0,cancelable:!1})}function b({debug:e=!1},...t){e&&console.log(...t)}class h{constructor(e){__publicField(this,"number",0n),__publicField(this,"decimal",0),this.setNumber(e)}getNumber(){return this.number}getDecimalPrecision(){return this.decimal}setNumber(e){this.decimal=0,"bigint"==typeof e?this.number=e:"number"==typeof e?this.setupString(e.toString()):this.setupString(e)}toFixed(e=0,t=!0){let n=this.toString();const i=e-this.getDecimalPrecision();return i>0?(n.includes(".")||(n+="."),n.padEnd(n.length+i,"0")):i<0?t?v(n,e):n.slice(0,i):n}toString(){let e=this.number.toString();if(this.decimal){let t=!1;return"-"===e.charAt(0)&&(e=e.substring(1),t=!0),e=e.padStart(e.length+this.decimal,"0"),e=`${e.slice(0,-this.decimal)}.${e.slice(-this.decimal)}`,e=c(e),(t?"-":"")+e}return e}lessThan(e){const[t,n]=this.adjustComparisonNumbers(e);return t<n}biggerThan(e){const[t,n]=this.adjustComparisonNumbers(e);return t>n}isEqual(e){const[t,n]=this.adjustComparisonNumbers(e);return t===n}setupString(e){if(m(e=c(e)))this.number=BigInt(e);else{if(!f(e))throw new Error(`BigNumber has received and invalid format for the constructor: ${e}`);this.decimal=d(e),this.number=BigInt(e.replace(".",""))}}adjustComparisonNumbers(e){let t;t="BigNumber"!==e.constructor.name?new h(e):e;const n=this.getDecimalPrecision()-t.getDecimalPrecision();let i=this.getNumber(),r=t.getNumber();return n>0?r=t.getNumber()*10n**BigInt(n):n<0&&(i=this.getNumber()*10n**BigInt(-1*n)),[i,r]}}function y(e,t=n,i=""){b(t,"utils format() - caller",i),b(t,"utils format() - input1",e),null==e?e="":"number"==typeof e?e=t.shouldRound?e.toFixed(o(t.precision)):e.toFixed(o(t.precision)+1).slice(0,-1):t.modelModifiers&&t.modelModifiers.number&&m(e)&&(e=Number(e).toFixed(o(t.precision))),b(t,"utils format() - input2",e);const r=t.disableNegative?"":e.indexOf("-")>=0?"-":"";let l=e.replace(t.prefix,"").replace(t.suffix,"");b(t,"utils format() - filtered",l),!t.precision&&"."!==t.thousands&&f(l)&&(l=v(l,0),b(t,"utils format() - !opt.precision && isValidFloat()",l));const s=a(l);b(t,"utils format() - numbers",s),b(t,"utils format() - numbersToCurrency",r+u(s,t.precision));const d=new h(r+u(s,t.precision));b(t,"utils format() - bigNumber1",d.toString()),t.max&&d.biggerThan(t.max)&&d.setNumber(t.max),t.min&&d.lessThan(t.min)&&d.setNumber(t.min);const c=d.toFixed(o(t.precision),t.shouldRound);if(b(t,"utils format() - bigNumber2",d.toFixed(o(t.precision))),/^0(\.0+)?$/g.test(c)&&t.allowBlank)return"";let[p,g]=c.split(".");const y=void 0!==g?g.length:0;p=p.padStart(t.minimumNumberOfCharacters-y,"0"),p=function(e,t){return e.replace(/(\d)(?=(?:\d{3})+\b)/gm,`$1${t}`)}(p,t.thousands);const x=t.prefix+function(e,t,n){return t?e+n+t:e}(p,g,t.decimal)+t.suffix;return b(t,"utils format() - output",x),x}function x(e,t=n,i=""){b(t,"utils unformat() - caller",i),b(t,"utils unformat() - input",e);const r=t.disableNegative?"":e.indexOf("-")>=0?"-":"",l=e.replace(t.prefix,"").replace(t.suffix,"");b(t,"utils unformat() - filtered",l);const s=a(l);b(t,"utils unformat() - numbers",s);const d=new h(r+u(s,t.precision));b(t,"utils unformat() - bigNumber1",s.toString()),t.max&&d.biggerThan(t.max)&&d.setNumber(t.max),t.min&&d.lessThan(t.min)&&d.setNumber(t.min);let c=d.toFixed(o(t.precision),t.shouldRound);return t.modelModifiers&&t.modelModifiers.number&&(c=parseFloat(c)),b(t,"utils unformat() - output",c),c}const N=(e,t,n)=>{if(b(t,"directive setValue() - caller",n),!function(e){for(const t of r)if(!l(e[t],t))return!1;return!0}(t))return void b(t,"directive setValue() - validateRestrictedOptions() return false. Stopping here...",e.value);let i=e.value.length-(e.selectionEnd||0);e.value=y(e.value,t,n),i=Math.max(i,t.suffix.length),i=e.value.length-i,i=Math.max(i,t.prefix.length),function(e,t){const n=()=>{e.setSelectionRange(t,t)};e===document.activeElement&&(n(),setTimeout(n,1))}(e,i),e.dispatchEvent(g("change"))},w=(e,t)=>{const n=e.currentTarget,i="Backspace"===e.code||"Delete"===e.code,r=n.value.length-(n.selectionEnd||0)==0;if(b(t,"directive onkeydown() - el.value",n.value),b(t,"directive onkeydown() - backspacePressed",i),b(t,"directive onkeydown() - isAtEndPosition",r),t.allowBlank&&i&&r&&0===x(n.value,t,"directive onkeydown allowBlank")&&(b(t,'directive onkeydown() - set el.value = ""',n.value),n.value="",n.dispatchEvent(g("change"))),b(t,"directive onkeydown() - e.key",e.key),"+"===e.key){b(t,"directive onkeydown() - unformat el.value",n.value);let e=x(n.value,t,"directive onkeydown +");"string"==typeof e&&(e=parseFloat(e)),e<0&&(n.value=String(-1*e))}},k=(e,t)=>{const n=e.currentTarget;b(t,"directive oninput()",n.value),/^[1-9]$/.test(n.value)&&(n.value=u(n.value,o(t.precision)),b(t,"directive oninput() - is 1-9",n.value)),N(n,t,"directive oninput")};var S={mounted(e,t){if(!t.value)return;const i=s({...n,...t.value});if(b(i,"directive mounted() - opt",i),"INPUT"!==e.tagName.toLocaleUpperCase()){const t=e.getElementsByTagName("input");1!==t.length||(e=t[0])}e.onkeydown=e=>{w(e,i)},e.oninput=e=>{k(e,i)},b(i,"directive mounted() - el.value",e.value),N(e,i,"directive mounted")},updated(e,t){if(!t.value)return;const i=s({...n,...t.value});e.onkeydown=e=>{w(e,i)},e.oninput=e=>{k(e,i)},b(i,"directive updated() - el.value",e.value),b(i,"directive updated() - opt",i),N(e,i,"directive updated")},beforeUnmount(e){e.onkeydown=null,e.oninput=null,e.onfocus=null}};const B=["id","value","disabled"];const M={inheritAttrs:!1,name:"Money3",directives:{money3:S}},$=t.defineComponent({...M,props:{debug:{required:!1,type:Boolean,default:!1},id:{required:!1,type:[Number,String],default:()=>{const e=t.getCurrentInstance();return e?e.uid:null}},modelValue:{required:!0,type:[Number,String]},modelModifiers:{required:!1,type:Object,default:()=>({number:!1})},masked:{type:Boolean,default:!1},precision:{type:Number,default:()=>n.precision},decimal:{type:String,default:()=>n.decimal,validator:e=>l(e,"decimal")},thousands:{type:String,default:()=>n.thousands,validator:e=>l(e,"thousands")},prefix:{type:String,default:()=>n.prefix,validator:e=>l(e,"prefix")},suffix:{type:String,default:()=>n.suffix,validator:e=>l(e,"suffix")},disableNegative:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},max:{type:[Number,String],default:()=>n.max},min:{type:[Number,String],default:()=>n.min},allowBlank:{type:Boolean,default:()=>n.allowBlank},minimumNumberOfCharacters:{type:Number,default:()=>n.minimumNumberOfCharacters},shouldRound:{type:Boolean,default:()=>n.shouldRound}},emits:["update:model-value"],setup:function(e,{emit:n}){const i=e,{modelValue:r,modelModifiers:u,masked:a,precision:l,shouldRound:d}=t.toRefs(i);b(i,"component setup()",i);let c=r.value;u.value&&u.value.number&&(c=d.value?Number(r.value).toFixed(o(l.value)):Number(r.value).toFixed(o(l.value)+1).slice(0,-1));const m=t.ref(y(c,i,"component setup"));b(i,"component setup() - data.formattedValue",m.value),t.watch(r,(function(e){b(i,"component watch() -> value",e);const t=y(e,s({...i}),"component watch");t!==m.value&&(b(i,"component watch() changed -> formatted",t),m.value=t)}));let f=null;function p(e){let t;b(i,"component change() -> evt.target.value",e.target.value),t=a.value&&!u.value.number?e.target.value:x(e.target.value,s({...i}),"component change"),t!==f&&(f=t,b(i,"component change() -> update:model-value",t),n("update:model-value",t))}const v=t.useAttrs(),g=t.computed((()=>{const e={...v};return delete e["onUpdate:modelValue"],e}));return(e,n)=>{const r=t.resolveDirective("money3");return t.withDirectives((t.openBlock(),t.createElementBlock("input",t.mergeProps({id:i.id},t.unref(g),{type:"tel",class:"v-money3",value:m.value,disabled:i.disabled,onChange:p}),null,16,B)),[[r,{precision:t.unref(l),decimal:i.decimal,thousands:i.thousands,prefix:i.prefix,suffix:i.suffix,disableNegative:i.disableNegative,min:i.min,max:i.max,allowBlank:i.allowBlank,minimumNumberOfCharacters:i.minimumNumberOfCharacters,debug:i.debug,modelModifiers:t.unref(u),shouldRound:t.unref(d)}]])}}});var C={install(e){e.component("money3",$),e.directive("money3",S)}};e.BigNumber=h,e.Money=$,e.Money3=$,e.Money3Component=$,e.Money3Directive=S,e.VMoney=S,e.VMoney3=S,e.default=C,e.format=y,e.unformat=x,Object.defineProperty(e,"__esModule",{value:!0}),e[Symbol.toStringTag]="Module"}));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "v-money3",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.20.1",
|
|
4
4
|
"description": "Vue3 currency input/directive mask",
|
|
5
5
|
"main": "./dist/v-money3.umd.js",
|
|
6
6
|
"module": "./dist/v-money3.es.js",
|
|
@@ -11,11 +11,12 @@
|
|
|
11
11
|
}
|
|
12
12
|
},
|
|
13
13
|
"scripts": {
|
|
14
|
-
"lint": "./node_modules/node/bin/node ./node_modules/eslint/bin/eslint.js --ext .
|
|
14
|
+
"lint": "./node_modules/node/bin/node ./node_modules/eslint/bin/eslint.js --ext .ts,.vue ./src",
|
|
15
15
|
"serve": "./node_modules/node/bin/node ./node_modules/vite/bin/vite.js --host=localhost --port=3000 --open --force",
|
|
16
16
|
"build": "./node_modules/node/bin/node ./node_modules/vite/bin/vite.js build",
|
|
17
17
|
"test": "./node_modules/node/bin/node ./node_modules/jest/bin/jest.js",
|
|
18
18
|
"lock": "npm i --package-lock-only",
|
|
19
|
+
"pack": "npm run build; npm pack;",
|
|
19
20
|
"prepublish": "npm run build"
|
|
20
21
|
},
|
|
21
22
|
"files": [
|
|
@@ -44,21 +45,27 @@
|
|
|
44
45
|
},
|
|
45
46
|
"devDependencies": {
|
|
46
47
|
"@babel/plugin-transform-runtime": "^7.15.0",
|
|
47
|
-
"@babel/preset-env": "^7.15.
|
|
48
|
-
"@
|
|
49
|
-
"@
|
|
50
|
-
"@
|
|
48
|
+
"@babel/preset-env": "^7.15.6",
|
|
49
|
+
"@types/jest": "27.0.2",
|
|
50
|
+
"@types/jest-environment-puppeteer": "4.4.1",
|
|
51
|
+
"@types/puppeteer": "5.4.4",
|
|
52
|
+
"@typescript-eslint/eslint-plugin": "^4.31.2",
|
|
53
|
+
"@typescript-eslint/parser": "^4.31.2",
|
|
54
|
+
"@vitejs/plugin-vue": "^1.9.2",
|
|
55
|
+
"@vue/compiler-sfc": "^3.2.19",
|
|
56
|
+
"@vue/test-utils": "^2.0.0-rc.15",
|
|
51
57
|
"babel-jest": "^26.6.3",
|
|
52
58
|
"eslint": "^7.32.0",
|
|
53
59
|
"eslint-config-airbnb-base": "^14.2.1",
|
|
60
|
+
"eslint-config-airbnb-typescript": "^14.0.0",
|
|
54
61
|
"eslint-plugin-import": "^2.24.2",
|
|
55
|
-
"eslint-plugin-vue": "^7.
|
|
62
|
+
"eslint-plugin-vue": "^7.18.0",
|
|
56
63
|
"jest": "^26.6.3",
|
|
57
64
|
"jest-puppeteer": "^5.0.4",
|
|
58
|
-
"node": "^16.
|
|
65
|
+
"node": "^16.9.1",
|
|
59
66
|
"ts-jest": "^26.5.6",
|
|
60
|
-
"vite": "^2.5.
|
|
61
|
-
"vue": "^3.2.
|
|
67
|
+
"vite": "^2.5.10",
|
|
68
|
+
"vue": "^3.2.19",
|
|
62
69
|
"vue-jest": "^5.0.0-alpha.10"
|
|
63
70
|
}
|
|
64
71
|
}
|