diff --git a/dist/maska.js b/dist/maska.js index 57f02bb..47420dd 100644 --- a/dist/maska.js +++ b/dist/maska.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("Maska",[],t):"object"==typeof exports?exports.Maska=t():e.Maska=t()}(window,(function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){"use strict";function r(e,t,n){var r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3];return o(t).length>1?function(e){var t=o(e).sort((function(e,t){return e.length-t.length}));return function(e,n,r){for(var o=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],u=0;ui.length))return a(e,i,r,o)}return""}}(t)(e,t,n,r):a(e,t,n,r)}function o(e){try{return JSON.parse(e)}catch(t){return[e]}}function a(e,t,n){for(var r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],o=0,a=0,i="",c="";o1&&void 0!==arguments[1]?arguments[1]:{};if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),!t)throw new Error("Maska: no element for mask");if(n.tokens)for(var r in n.tokens)n.tokens[r]=f({},n.tokens[r]),n.tokens[r].pattern&&s(n.tokens[r].pattern)&&(n.tokens[r].pattern=new RegExp(n.tokens[r].pattern));this._opts={mask:n.mask,tokens:f({},i,{},n.tokens)},this._el=s(t)?document.querySelectorAll(t):t.length?t:[t],this.init()}var t,n,o;return t=e,(n=[{key:"init",value:function(){for(var e=this,t=0;t3&&void 0!==arguments[3])||arguments[3];return o(t).length>1?function(e){var t=o(e).sort((function(e,t){return e.length-t.length}));return function(e,n,r){for(var o=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],u=0;ui.length))return a(e,i,r,o)}return""}}(t)(e,t,n,r):a(e,t,n,r)}function o(e){try{return JSON.parse(e)}catch(t){return[e]}}function a(e,t,n){for(var r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],o=0,a=0,i="",s="";o1&&void 0!==arguments[1]?arguments[1]:{};if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),!t)throw new Error("Maska: no element for mask");if(n.tokens)for(var r in n.tokens)n.tokens[r]=f({},n.tokens[r]),n.tokens[r].pattern&&c(n.tokens[r].pattern)&&(n.tokens[r].pattern=new RegExp(n.tokens[r].pattern));this._opts={mask:n.mask,tokens:f({},i,{},n.tokens)},this._el=c(t)?document.querySelectorAll(t):t.length?t:[t],this.init()}var t,n,o;return t=e,(n=[{key:"init",value:function(){for(var e=this,t=0;t

v-maska="['+1 (###) ##-##-##', '+1 (###) ###-##-##']"

+
+ +
+ +
+

v-maska="dateMask" — reactive mask by `dateMask` computed property

+
@@ -118,7 +125,14 @@ el: '#vue-form', data: { phone: '19992345678', + dotFormat: false, color: null + }, + + computed: { + dateMask: function() { + return this.dotFormat ? '##.##.####' : '##/##/####' + } } }); diff --git a/src/directive.js b/src/directive.js index 7325822..a68a7ec 100644 --- a/src/directive.js +++ b/src/directive.js @@ -15,15 +15,11 @@ function getOpts (mask) { } function needUpdate (mask) { - if (isString(mask.value) && isString(mask.oldValue) && mask.value === mask.oldValue) { - return false - } - - if (mask.value && mask.oldValue && mask.value.mask === mask.oldValue.mask) { - return false - } - - return true + return !( + (isString(mask.value) && mask.value === mask.oldValue) || + (Array.isArray(mask.value) && JSON.stringify(mask.value) === JSON.stringify(mask.oldValue)) || + (mask.value && mask.value.mask && mask.oldValue && mask.oldValue.mask && mask.value.mask === mask.oldValue.mask) + ) } export default function directive (el, mask) { diff --git a/src/maska.js b/src/maska.js index 0a1ecf8..8d86358 100644 --- a/src/maska.js +++ b/src/maska.js @@ -27,7 +27,7 @@ export default class Maska { init () { for (let i = 0; i < this._el.length; i++) { const el = findInputElement(this._el[i]) - if (!el.dataset.mask && this._opts.mask) { + if ((!el.dataset.mask && this._opts.mask) || el.dataset.mask !== this._opts.mask) { el.dataset.mask = this._opts.mask } this.updateValue(el)