/*! * vue-validator v3.0.0-alpha.1 * (c) 2016 kazuya kawaguchi * Released under the MIT License. */ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.VueValidator=e()}(this,function(){"use strict";function t(t,e){window.console&&(console.warn("[vue-validator] "+t),e&&console.warn(e.stack))}function e(t,e){return t===e||!(!u(t)||!u(e))&&JSON.stringify(t)===JSON.stringify(e)}function i(t){var e=t.className;return"object"==typeof e&&(e=e.baseVal||""),e}function n(t,e){D&&!/svg$/.test(t.namespaceURI)?t.className=e:t.setAttribute("class",e)}function s(t,e){if(t.classList)t.classList.add(e);else{var s=" "+i(t)+" ";s.indexOf(" "+e+" ")<0&&n(t,(s+e).trim())}}function r(t,e){if(t.classList)t.classList.remove(e);else{for(var s=" "+i(t)+" ",r=" "+e+" ";s.indexOf(r)>=0;)s=s.replace(r," ");n(t,s.trim())}t.className||t.removeAttribute("class")}function a(t,e,i){if(t){if(e=e.trim(),e.indexOf(" ")===-1)return void i(t,e);for(var n=e.split(/\s+/),s=0,r=n.length;s0);return a}}),i}function u(t){return null!==t&&"object"==typeof t}function d(t){return Array.isArray(t)?t.map(function(t){return{key:t,val:t}}):Object.keys(t).map(function(e){return{key:e,val:t[e]}})}function h(t){if(Array.isArray(t)){if(0!==t.length){for(var e=!0,i=0,n=t.length;i0:null!==t&&"object"==typeof t&&Object.keys(t).length>0)}function c(t,e){if("string"!=typeof e)return!1;var i=e.match(new RegExp("^/(.*?)/([gimy]*)$"));return!!i&&new RegExp(i[1],i[2]).test(t)}function v(t,e){return"string"==typeof t?y(e,10)&&t.length>=parseInt(e,10):!!Array.isArray(t)&&t.length>=parseInt(e,10)}function f(t,e){return"string"==typeof t?y(e,10)&&t.length<=parseInt(e,10):!!Array.isArray(t)&&t.length<=parseInt(e,10)}function p(t,e){return!isNaN(+t)&&!isNaN(+e)&&+t>=+e}function _(t,e){return!isNaN(+t)&&!isNaN(+e)&&+t<=+e}function y(t){return/^(-?[1-9]\d*|0)$/.test(t)}function g(t){var e;return e="string"==typeof t?[t]:Array.isArray(t)?t:Object.keys(t)}function m(t){var e={};return t.forEach(function(t){e[t]=void 0}),e}function b(t){var e={};return t.forEach(function(t){e[t]=""}),e}function E(t,e){return"boolean"==typeof e&&!e||!("string"!=typeof e||!e)&&e}function w(t){t[S]="DOM"}function V(t){var i=t.data&&t.data.directives||[],n=i.find(function(t){return"model"===t.name});return n&&void 0!==n.oldValue?e(n.value,n.oldValue):null}function M(t){for(var e=[],i=0,n=t.options.length;i0;)n[s]=arguments[s+1];var r=e[i];return r||(e[i]=t.apply(void 0,n))}}function I(t){var e=t._vnode;return t.multiple?new X(t):new Y(t,e)}function k(t){return(t.data&&t.data.directives||[]).find(function(t){return"model"===t.name})}function $(t){var e={},i=e.listeners=t.componentOptions?t.componentOptions.listeners:t.data&&t.data.on;return e.type="input"===t.tag&&"text"===(t.data&&t.data.attrs&&t.data.attrs.type)||t.tag&&t.tag.match(/vue-component/)?"input":"change",i&&(e.orgListeners=i[e.type]),e}function R(t){return t&&"function"==typeof t.then}function x(t,e,i){i.forEach(function(i){i&&i.componentOptions&&i.componentOptions.propsData&&"validity-control"===i.componentOptions.tag&&(i.componentOptions.propsData.validation={instance:t,name:e}),i.children&&x(t,e,i.children)})}function L(e,i){return void 0===i&&(i={}),ut?void t("already installed."):(U(e),K(e),j(e),N(e),void(ut=!0))}function j(t){t.mixin(B(t))}function N(t){var e=lt(t);Object.keys(e).forEach(function(i){t.component(i,e[i])})}var C="undefined"!=typeof window&&"[object Object]"!==Object.prototype.toString.call(window),A=C&&window.navigator.userAgent.toLowerCase(),D=A&&A.indexOf("msie 9.0")>0,S="__VUE_VALIDATOR_MODEL_NOTIFY_EVENT__",T={classes:{}},U=function(t){Object.defineProperty(t.config,"validator",{enumerable:!0,configurable:!0,get:function(){return T},set:function(t){T=t}})},G=Object.freeze({required:h,pattern:c,minlength:v,maxlength:f,min:p,max:_}),K=function(t){function e(e,i){return void 0===i?t.options.validators[e]:(t.options.validators[e]=i,void(null===i&&delete t.options.validators.id))}var i=t.util,n=i.extend,s=Object.create(null);n(s,G),t.options.validators=s;var r=t.config.optionMergeStrategies;r&&(r.validators=function(t,e){if(!e)return t;if(!t)return e;var i=Object.create(null);n(i,t);var s;for(s in e)i[s]=e[s];return i}),t.validator=e},W=function(t){var e=t.util,i=e.extend;return{data:function(){return{valid:!0,dirty:!1,touched:!1,modified:!1,results:{}}},computed:{invalid:function(){return!this.valid},pristine:function(){return!this.dirty},untouched:function(){return!this.touched},result:function(){var t={valid:this.valid,invalid:this.invalid,dirty:this.dirty,pristine:this.pristine,touched:this.touched,untouched:this.untouched,modified:this.modified},e=this.results;return this._validityKeys.forEach(function(i){if(t[i]=e[i],t[i].errors){var n=t.errors||[];t[i].errors.forEach(function(t){n.push(t)}),t.errors=n}}),t}},watch:{results:function t(e,i){var n=this._validityKeys,t=this.results;this.valid=this.checkResults(n,t,"valid",!0),this.dirty=this.checkResults(n,t,"dirty",!1),this.touched=this.checkResults(n,t,"touched",!1),this.modified=this.checkResults(n,t,"modified",!1)}},created:function(){this._validities=Object.create(null),this._validityWatchers=Object.create(null),this._validityKeys=[],this._committing=!1},destroyed:function(){var t=this;this._validityKeys.forEach(function(e){t._validityWatchers[e](),delete t._validityWatchers[e],delete t._validities[e]}),delete this._validityWatchers,delete this._validities,delete this._validityKeys},methods:{register:function(t,e){var i=this;this._validities[t]=e,this._validityKeys=Object.keys(this._validities),this.setResults(t,{}),this.withCommit(function(){i._validityWatchers[t]=e.$watch("result",function(e,n){i.setResults(t,e)},{deep:!0,immediate:!0})})},unregister:function(t){var e=this;this._validityWatchers[t](),delete this._validityWatchers[t],delete this._validities[t],this._validityKeys=Object.keys(this._validities),this.withCommit(function(){e.resetResults(t)})},isRegistered:function(t){return t in this._validities},getValidityKeys:function(){return this._validityKeys},checkResults:function(t,e,i,n){for(var s=n,r=0;r0;)e[i]=arguments[i+1];(n=this).$emit.apply(n,[t].concat(e));var n}function i(t,e){var i=this;(e?t.children||[]:[t]).forEach(function(t){i._wrapEvent(t)})}function n(t){var e=this,i={};if(!t.tag||!t.data)return i;var n=k(t);if(!n)return i;var s=$(t),r=s.type,o=s.orgListeners,l=s.listeners,u=Array.isArray(o)?o[0]:o,d=Array.isArray(o)?o[1]:null,h=this._modelIntegrationMode;u&&d?h=this._modelIntegrationMode="MODEL_AND_USER":u&&!d&&(h=this._modelIntegrationMode="MODEL");var c=function(i){return function(n){d&&(e._applyWithUserHandler=!0),void 0!==n&&n!==!0||u.apply(t.context,i)}},v=(n.modifiers||{}).validity,f=this;return l[r]=function(){var e=a(arguments,0);if("MODEL_AND_USER"===h){var i=e[0];if("DOM"===i[S])return delete i[S],void(d&&d.apply(t.context,e));if("COMPONENT"===i[S]){var n=i.value;return e[0]=n,void(d&&d.apply(t.context,e))}if(v){var s=f._applyer=c(e);e.push(s),d&&d.apply(t.context,e)}else d&&d.apply(t.context,e),u.apply(t.context,e)}else"MODEL"===h&&(v?f._applyer=c(e):u.apply(t.context,e))},i.dir=n,i}function s(t){"NONE"!==this._modelIntegrationMode&&this._applyer&&this._applyer(t)}var r=t.util,a=r.toArray;return{_fireEvent:e,_interceptEvents:i,_wrapEvent:n,pass:s}},et=function(t){function e(t){return this._elementable.getValue()}function i(){return this._elementable.checkModified()}function n(t){this.touched||(this.touched=!0,a(this.$el,this.classes.touched,s),a(this.$el,this.classes.untouched,r),this._fireEvent("touched"))}function o(){!this.dirty&&this.checkModified()&&(this.dirty=!0,a(this.$el,this.classes.dirty,s),a(this.$el,this.classes.pristine,r),this._fireEvent("dirty"))}function l(){var t=this.modified=this.checkModified();this._modified!==t&&(this._modified=t,a(this.$el,this.classes.modified,t?s:r),this._fireEvent("modified",t))}function u(t){this.willUpdateDirty(),this.willUpdateModified()}function d(t){this.willUpdateDirty(),this.willUpdateModified()}function h(){var t=this;this._unwatchValidationRawResults();for(var e=this._keysCached(this._uid.toString(),this.results),i=0;i