diff --git a/bower.json b/bower.json index ad285f1..8c65c8c 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "angular-validation-ghiscoding", - "version": "1.5.7", + "version": "1.5.9", "author": "Ghislain B.", "description": "Angular-Validation Directive and Service (ghiscoding)", "main": [ diff --git a/changelog.txt b/changelog.txt index 6257022..ac7a41a 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,5 +1,6 @@ Angular-Validation change logs +1.5.9 (2016-10-14) Updated main entry at package.json to work with WebPack, issue #128 1.5.7 (2016-10-03) Add Dutch and Romanian #134 1.5.6 (2016-09-24) Dates validator now checks for leap year & full date calendar, fix #130 1.5.5 (2016-09-01) If translation isn't loading & working correctly, it should throw an error. diff --git a/dist/angular-validation.min.js b/dist/angular-validation.min.js index c2d773b..0e5faaa 100644 --- a/dist/angular-validation.min.js +++ b/dist/angular-validation.min.js @@ -2,9 +2,9 @@ * Angular-Validation Directive and Service (ghiscoding) * http://github.com/ghiscoding/angular-validation * @author: Ghislain B. - * @version: 1.5.7 + * @version: 1.5.9 * @license: MIT - * @build: Mon Oct 03 2016 20:51:48 GMT-0400 (Eastern Daylight Time) + * @build: Mon Oct 14 2016 20:51:48 GMT-0400 (Eastern Daylight Time) */ angular.module("ghiscoding.validation",["pascalprecht.translate"]).directive("validation",["$q","$timeout","ValidationCommon",function(a,e,i){return{restrict:"A",require:"ngModel",link:function(n,t,r,l){function o(i,r){var o=a.defer(),d=!1,m="undefined"!=typeof r?r:$.typingLimit,s=$.getFormElementByName(l.$name);if(Array.isArray(i)){if(O=[],h="",m=0,i.length>0)return"function"==typeof s.ctrl.$setTouched&&s.ctrl.$setTouched(),u(i,typeof i);m=0}return i&&i.badInput?c():($.validate(i,!1),$.isFieldRequired()||F||""!==i&&null!==i&&"undefined"!=typeof i?(s&&(s.isValidationCancelled=!1),(i||$.isFieldRequired()||F)&&l.$setValidity("validation",!1),"SELECT"===t.prop("tagName").toUpperCase()?(d=$.validate(i,!0),l.$setValidity("validation",d),o.resolve({isFieldValid:d,formElmObj:s,value:i}),o.promise):("undefined"!=typeof i&&(0===r?(d=$.validate(i,!0),n.$evalAsync(l.$setValidity("validation",d)),o.resolve({isFieldValid:d,formElmObj:s,value:i}),e.cancel(b)):($.updateErrorMsg(""),e.cancel(b),b=e(function(){d=$.validate(i,!0),n.$evalAsync(l.$setValidity("validation",d)),o.resolve({isFieldValid:d,formElmObj:s,value:i})},m))),o.promise)):(f(),o.resolve({isFieldValid:!0,formElmObj:s,value:i}),o.promise))}function d(a,e,i){var n=o(a,0);n&&"function"==typeof n.then&&(O.push(n),parseInt(e)===i-1&&O.forEach(function(a){a.then(function(a){switch(w){case"all":a.isFieldValid===!1&&a.formElmObj.translatePromise.then(function(e){h.length>0&&g.displayOnlyLastErrorMsg?h="["+a.value+"] :: "+(a.formElmObj.validator&&a.formElmObj.validator.params?String.format(e,a.formElmObj.validator.params):e):h+=" ["+a.value+"] :: "+(a.formElmObj.validator&&a.formElmObj.validator.params?String.format(e,a.formElmObj.validator.params):e),$.updateErrorMsg(h,{isValid:!1}),$.addToValidationSummary(a.formElmObj,h)});break;case"one":default:a.isFieldValid===!0&&(l.$setValidity("validation",!0),f())}})}))}function m(a){var e=$.getFormElementByName(l.$name),i="undefined"!=typeof l.$modelValue?l.$modelValue:a.target.value;if(e.isValidationCancelled)l.$setValidity("validation",!0);else{var n=o(i,0);A&&$.runValidationCallbackOnPromise(n,A)}}function u(a,e){var i=a.length;if("string"===e)for(var n in a)d(a[n],n,i);else if("object"===e)for(var n in a)if(a.hasOwnProperty(n)){var t=a[n];for(var r in t)if(t.hasOwnProperty(r)){if(C&&r!==C)continue;d(t[r],n,i)}}}function s(){f(),$.removeFromValidationSummary(j);var a=$.arrayFindObject(E,"elmName",l.$name);if(a&&"function"==typeof a.watcherHandler){a.watcherHandler();E.shift()}}function f(){var a=$.getFormElementByName(l.$name);a&&(a.isValidationCancelled=!0),e.cancel(b),$.updateErrorMsg(""),l.$setValidity("validation",!0),V()}function v(){return n.$watch(function(){var a=l.$modelValue;if(y())return{badInput:!0};if(C&&Array.isArray(a)&&0===a.length&&Object.keys(a).length>0){var e=[],i={};return i[C]=a[C],e.push(i),e}return a},function(a,e){if(a&&a.badInput)return V(),c();var i=o(a);A&&$.runValidationCallbackOnPromise(i,A)},!0)}function c(){e.cancel(b);var a=$.getFormElementByName(l.$name);$.updateErrorMsg("INVALID_KEY_CHAR",{isValid:!1,translate:!0}),$.addToValidationSummary(a,"INVALID_KEY_CHAR",!0)}function y(){return!!t.prop("validity")&&t.prop("validity").badInput===!0}function p(){var a=l.$modelValue||"";Array.isArray(a)||l.$setValidity("validation",$.validate(a,!1));var e=$.getFormElementByName(l.$name);e&&(e.isValidationCancelled=!1),V(),t.bind("blur",m)}function V(){"function"==typeof m&&t.unbind("blur",m)}var b,$=new i(n,t,r,l),h="",O=[],E=[],g=$.getGlobalOptions(),j=r.name,A=r.hasOwnProperty("validationCallback")?r.validationCallback:null,F=r.hasOwnProperty("validateOnEmpty")?$.parseBool(r.validateOnEmpty):!!g.validateOnEmpty,w=r.hasOwnProperty("validArrayRequireHowMany")?r.validArrayRequireHowMany:"one",C=r.hasOwnProperty("validationArrayObjprop")?r.validationArrayObjprop:null;E.push({elmName:j,watcherHandler:v()}),r.$observe("disabled",function(a){a?(f(),$.removeFromValidationSummary(j)):p()}),t.on("$destroy",function(){s()}),n.$watch(function(){return t.attr("validation")},function(a){if("undefined"==typeof a||""===a)s();else{$.defineValidation(),p();var e=$.arrayFindObject(E,"elmName",l.$name);e||E.push({elmName:j,watcherHandler:v()})}}),t.bind("blur",m),n.$on("angularValidation.revalidate",function(a,e){if(e==l.$name){l.revalidateCalled=!0;var i=l.$modelValue;if(t.isValidationCancelled)l.$setValidity("validation",!0);else{var n=o(i);A&&$.runValidationCallbackOnPromise(n,A)}}})}}}]); angular.module("ghiscoding.validation").factory("ValidationCommon",["$rootScope","$timeout","$translate","ValidationRules",function(e,t,a,r){function i(e,t,r){if("undefined"!=typeof e&&null!=e){var i=e.ctrl&&e.ctrl.$name?e.ctrl.$name:e.attrs&&e.attrs.name?e.attrs.name:e.elm.attr("name"),n=E(i,e),o=w(z,"field",i);if(o>=0&&""===t)z.splice(o,1);else if(""!==t){r&&(t=a.instant(t));var s=e.attrs&&e.friendlyName?a.instant(e.friendlyName):"",l={field:i,friendlyName:s,message:t,formName:n?n.$name:null};o>=0?z[o]=l:z.push(l)}if(e.scope.$validationSummary=z,n&&(n.$validationSummary=V(z,"formName",n.$name)),_&&_.controllerAs&&(_.controllerAs.$validationSummary=z,n&&n.$name)){var d=n.$name.indexOf(".")>=0?n.$name.split(".")[1]:n.$name,u=_.controllerAs[d]?_.controllerAs[d]:e.elm.controller()[d];u&&(u.$validationSummary=V(z,"formName",n.$name))}return z}}function n(){var e=this,t={};e.validators=[],e=S(e);var a=e.validatorAttrs.rules||e.validatorAttrs.validation;if(a.indexOf("pattern=/")>=0){var i=a.match(/pattern=(\/(?:(?!:alt).)*\/[igm]*)(:alt=(.*))?/);if(!i||i.length<3)throw'Regex validator within the validation needs to be define with an opening "/" and a closing "/", please review your validator.';var n=i[1],o=i[2]?i[2].replace(/\|(.*)/,""):"",s=n.match(new RegExp("^/(.*?)/([gimy]*)$")),l=new RegExp(s[1],s[2]);t={altMsg:o,message:o.replace(/:alt=/,""),pattern:l},a=a.replace("pattern="+n,"pattern")}else if(a.indexOf("regex:")>=0){var i=a.match("regex:(.*?):regex");if(i.length<2)throw'Regex validator within the validation needs to be define with an opening "regex:" and a closing ":regex", please review your validator.';var d=i[1].split(":=");t={message:d[0],pattern:d[1]},a=a.replace(i[0],"regex:")}var u=a.split("|");if(u){e.bFieldRequired=a.indexOf("required")>=0;for(var p=0,m=u.length;p=0,g=[];f?(g=u[p].substring(0,c-1).split(":"),g.push(u[p].substring(c))):g=u[p].split(":"),e.validators[p]=r.getElementValidators({altText:f===!0?2===g.length?g[1]:g[2]:"",customRegEx:t,rule:g[0],ruleParams:f&&2===g.length?null:g[1]})}}return e}function o(e){return A(B,"fieldName",e)}function s(e){return e?V(B,"formName",e):B}function l(){return _}function d(e,t,a,r){this.scope=e,this.elm=t,this.ctrl=r,this.validatorAttrs=a,$(t,a,r,e),this.defineValidation()}function u(){var e=this;return e.bFieldRequired}function p(e,t){var a={};for(var r in e)a[r]=e[r];for(var r in t)a[r]=t[r];return a}function m(e){var t=w(B,"fieldName",e);t>=0&&B.splice(t,1)}function c(e,t){var a=this,r=E(e,a),i=t||z,n=w(i,"field",e);if(n>=0&&i.splice(n,1),n=w(z,"field",e),n>=0&&z.splice(n,1),a.scope.$validationSummary=z,r&&(r.$validationSummary=V(z,"formName",r.$name)),_&&_.controllerAs&&(_.controllerAs.$validationSummary=z,r)){var o=r.$name.indexOf(".")>=0?r.$name.split(".")[1]:r.$name;_.controllerAs[o]&&(_.controllerAs[o].$validationSummary=V(z,"formName",r.$name))}return z}function f(e,t){var a;if(/\({1}.*\){1}/gi.test(t))a=e.scope.$eval(t);else{var r=x(e.scope,t,".");"function"==typeof r&&(a=r())}return a}function g(e,t){var a=this;"function"==typeof e.then&&e.then(function(){f(a,t)})}function v(e){_.displayOnlyLastErrorMsg=e}function y(e){var t=this;return _=p(_,e),t}function h(e,t){var r=this;t&&t.obj&&(r=t.obj,r.validatorAttrs=t.obj.attrs);var i=t&&t.elm?t.elm:r.elm,n=i&&i.attr("name")?i.attr("name"):null;if("undefined"==typeof n||null===n){var o=i?i.attr("ng-model"):"unknown";throw'Angular-Validation Service requires you to have a (name="") attribute on the element to validate... Your element is: ng-model="'+o+'"'}var s=t&&t.translate?a.instant(e):e;s=s.trim();var l=n.replace(/[|&;$%@"<>()+,\[\]\{\}]/g,"").replace(/\./g,"-"),d=null;if(r.validatorAttrs&&r.validatorAttrs.hasOwnProperty("validationErrorTo")){var u=r.validatorAttrs.validationErrorTo.charAt(0),p="."===u||"#"===u?r.validatorAttrs.validationErrorTo:"#"+r.validatorAttrs.validationErrorTo;d=angular.element(document.querySelector(p))}d&&0!==d.length||(d=angular.element(document.querySelector(".validation-"+l)));var m=!(!t||!t.isSubmitted)&&t.isSubmitted;!_.hideErrorUnderInputs&&t&&!t.isValid&&(m||r.ctrl.$dirty||r.ctrl.$touched||r.ctrl.revalidateCalled)?d.length>0?d.html(s):i.after('
'+s+"
"):d.html("")}function b(e,t){var r,n=this,s=!0,l=!0,d=0,u={message:""};"undefined"==typeof e&&(e="");for(var p=n.ctrl&&n.ctrl.$name?n.ctrl.$name:n.attrs&&n.attrs.name?n.attrs.name:n.elm.attr("name"),m=o(p),c=n.validatorAttrs.rules||n.validatorAttrs.validation,f=0,g=n.validators.length;f0&&(o=i.altText.replace("alt=",""));var d=a(o);e.translatePromise=d,e.validator=i,d.then(function(a){u.message.length>0&&_.displayOnlyLastErrorMsg?u.message=s+(i&&i.params?String.format(a,i.params):a):u.message+=s+(i&&i.params?String.format(a,i.params):a),O(n,e,u.message,l,t)})["catch"](function(a){if(!(i.altText&&i.altText.length>0))throw String.format("Could not translate: '{0}'. Please check your Angular-Translate $translateProvider configuration.",a);u.message.length>0&&_.displayOnlyLastErrorMsg?u.message=s+o:u.message+=s+o,O(n,e,u.message,l,t)})}(m,s,r)),s&&d++,n.validRequireHowMany==d&&s){l=!0;break}}return s&&(i(n,""),n.updateErrorMsg("",{isValid:s})),m&&(m.isValid=l,l&&(m.message="")),l}function $(e,t,r,i){var n=t.name?t.name:e.attr("name"),o=E(n,{scope:i}),s=t&&t.friendlyName?a.instant(t.friendlyName):"",l={fieldName:n,friendlyName:s,elm:e,attrs:t,ctrl:r,scope:i,isValid:!1,message:"",formName:o?o.$name:null},d=w(B,"fieldName",e.attr("name"));return d>=0?B[d]=l:B.push(l),B}function O(e,t,a,r,n){a=a.trim(),t&&t.isValidationCancelled===!0&&(a=""),(_.preValidateValidationSummary||"undefined"==typeof _.preValidateValidationSummary||n)&&i(t,a),(e.validatorAttrs.preValidateFormElements||_.preValidateFormElements)&&(t&&"function"==typeof e.ctrl.$setTouched&&t.ctrl.$setTouched(),e.ctrl.$dirty===!1&&h(a,{isSubmitted:!0,isValid:r,obj:t})),n&&t&&!t.isValid?e.updateErrorMsg(a,{isValid:r,obj:t}):t&&t.isValid&&i(t,"")}function S(e){return e.typingLimit=I,e.validatorAttrs.hasOwnProperty("debounce")?e.typingLimit=parseInt(e.validatorAttrs.debounce,10):e.validatorAttrs.hasOwnProperty("typingLimit")?e.typingLimit=parseInt(e.validatorAttrs.typingLimit,10):_&&_.hasOwnProperty("debounce")&&(e.typingLimit=parseInt(_.debounce,10)),e.validRequireHowMany=e.validatorAttrs.hasOwnProperty("validRequireHowMany")?e.validatorAttrs.validRequireHowMany:_.validRequireHowMany,K=e.validatorAttrs.hasOwnProperty("validateOnEmpty")?N(e.validatorAttrs.validateOnEmpty):_.validateOnEmpty,e}function A(e,t,a){if(e)for(var r=0;r=0?x(t.scope,o,"."):t.scope[o]))return"undefined"==typeof a.$name&&(a.$name=o),a}if(n){var o=n?n.getAttribute("name"):null;if(o){var s={$name:o,specialNote:"Created by Angular-Validation for Isolated Scope usage"};if(_&&_.controllerAs&&o.indexOf(".")>=0){var l=o.split(".");return t.scope[l[0]][l[1]]=s}return t.scope[o]=s}}return null}function R(e){return!isNaN(parseFloat(e))&&isFinite(e)}function x(e,t,a){for(var r=a?t.split(a):t,i=0,n=r.length;i8?e.substring(9).split(":"):null;break;case"UK":case"EURO":case"EURO_SHORT":case"EURO-SHORT":case"EUROPE":a=e.substring(0,8),r=e.substring(2,3),i=q(a,r),l=i[0],s=i[1],o=parseInt(i[2])<50?"20"+i[2]:"19"+i[2],n=e.length>8?e.substring(9).split(":"):null;break;case"US_LONG":case"US-LONG":a=e.substring(0,10),r=e.substring(2,3),i=q(a,r),s=i[0],l=i[1],o=i[2],n=e.length>8?e.substring(9).split(":"):null;break;case"US":case"US_SHORT":case"US-SHORT":a=e.substring(0,8),r=e.substring(2,3),i=q(a,r),s=i[0],l=i[1],o=parseInt(i[2])<50?"20"+i[2]:"19"+i[2],n=e.length>8?e.substring(9).split(":"):null;break;case"ISO":default:a=e.substring(0,10),r=e.substring(4,5),i=q(a,r),o=i[0],s=i[1],l=i[2],n=e.length>10?e.substring(11).split(":"):null}var d=n&&3===n.length?n[0]:0,u=n&&3===n.length?n[1]:0,p=n&&3===n.length?n[2]:0;return new Date(o,s-1,l,d,u,p)}function q(e,t){var a=[];switch(t){case"/":a=e.split("/");break;case".":a=e.split(".");break;case"-":default:a=e.split("-")}return a}function F(e,t,a){var r=!1;switch(e){case"<":r=t":r=t>a;break;case">=":r=t>=a;break;case"!=":case"<>":r=t!=a;break;case"!==":r=t!==a;break;case"=":case"==":r=t==a;break;case"===":r=t===a;break;default:r=!1}return r}function k(){return this.replace(/^\s+|\s+$/g,"")}function L(){var e=Array.isArray(arguments[0])?arguments[0]:arguments;return this.replace(/{(\d+)}/g,function(t,a){return"undefined"!=typeof e[a]?e[a]:t})}function M(e){var t=Array.isArray(arguments[1])?arguments[1]:Array.prototype.slice.call(arguments,1);return e.replace(/{(\d+)}/g,function(e,a){return"undefined"!=typeof t[a]?t[a]:e})}function C(e,t,a){var r=!0,i=r=!1;if(e instanceof Date)i=!0;else{var n=new RegExp(t.pattern,t.patternFlag);i=!((!t.pattern||"/\\S+/"===t.pattern.toString()||a&&"required"===t.pattern)&&null===e)&&n.test(e)}if(i){var o=t.dateType,s=e instanceof Date?e:T(e,o).getTime();if(2==t.params.length){var l=T(t.params[0],o).getTime(),d=T(t.params[1],o).getTime(),u=F(t.condition[0],s,l),p=F(t.condition[1],s,d);r=u&&p}else{var m=T(t.params[0],o).getTime();r=F(t.condition,s,m)}}return r}function U(e,t){var a=!0;if(2==t.params.length){var r=F(t.condition[0],parseFloat(e),parseFloat(t.params[0])),i=F(t.condition[1],parseFloat(e),parseFloat(t.params[1]));a=r&&i}else a=F(t.condition,parseFloat(e),parseFloat(t.params[0]));return a}function P(e,a,r,i,n,o){var s=!0,l="Custom Javascript Validation requires an error message defined as 'alt=' in your validator or defined in your custom javascript function as { isValid: bool, message: 'your error' }",d="Custom Javascript Validation requires a declared function (in your Controller), please review your code.";if(e||K){var u=a.params[0],p=f(r,u);if("boolean"==typeof p)s=!!p;else{if("object"!=typeof p)throw d;s=!!p.isValid}if(s===!1?(i.isValid=!1,t(function(){var e=o.message+" ";if(p.message&&(e+=p.message||a.altText)," "===e&&a.altText&&(e+=a.altText)," "===e)throw l;O(r,i,e,!1,n)})):s===!0&&(i.isValid=!0,O(r,i,"",!0,n)),"undefined"==typeof p)throw d}return s}function j(e,t,r,i){var n=!0,s=t.params[0],l=r.scope.$eval(s),d=angular.element(document.querySelector('[name="'+s+'"]')),u=t,p=r.ctrl,m=o(r.ctrl.$name);return n=F(t.condition,e,l)&&!!e,d&&d.attr("friendly-name")?t.params[1]=d.attr("friendly-name"):t.params.length>1&&(t.params[1]=t.params[1]),r.scope.$watch(s,function(e,t){var n=F(u.condition,p.$viewValue,e);if(e!==t){if(n)O(r,m,"",!0,!0);else{m.isValid=!1;var o=u.message;u.altText&&u.altText.length>0&&(o=u.altText.replace("alt=","")),a(o).then(function(e){var t=_.errorMessageSeparator||" ";i.message=t+(u&&u.params?String.format(e,u.params):e),O(r,m,i.message,n,!0)})}p.$setValidity("validation",n)}},!0),n}function G(e,t,a,r,i,n){var o=!0,s="Remote Javascript Validation requires an error message defined as 'alt=' in your validator or defined in your custom remote function as { isValid: bool, message: 'your error' }",l="Remote Validation requires a declared function (in your Controller) which also needs to return a Promise, please review your code.";if(e&&i||K){a.ctrl.$processing=!0;var d=t.params[0],u=f(a,d);if(J.length>1)for(;J.length>0;){var p=J.pop();"function"==typeof p.abort&&p.abort()}if(J.push(u),!u||"function"!=typeof u.then)throw l;a.ctrl.$setValidity("remote",!1),function(e){u.then(function(t){t=t.data||t,J.pop(),a.ctrl.$processing=!1;var d=n.message+" ";if("boolean"==typeof t)o=!!t;else{if("object"!=typeof t)throw l;o=!!t.isValid}if(o===!1){if(r.isValid=!1,d+=t.message||e," "===d)throw s;O(a,r,d,!1,i)}else o===!0&&(r.isValid=!0,a.ctrl.$setValidity("remote",!0),O(a,r,"",!0,i))})}(t.altText)}return o}function H(e,t,a,r){var i=!0,n=r.attrs?r.attrs.ngDisabled:r.validatorAttrs.ngDisabled;if(r.elm.prop("disabled")||r.scope.$eval(n))i=!0;else if("string"==typeof e&&""===e&&r.elm.prop("type")&&"NUMBER"===r.elm.prop("type").toUpperCase())i=!1;else{var o=new RegExp(t.pattern,t.patternFlag);i=!((!t.pattern||"/\\S+/"===t.pattern.toString()||a&&"required"===t.pattern)&&null===e)&&o.test(e)}return i}function D(e,t){return R(t)?{condition:e.conditionNum,message:e.messageNum,params:e.params,type:"conditionalNumber"}:{pattern:e.patternLength,message:e.messageLength,params:e.params,type:"regex"}}var I=1e3,B=[],_={resetGlobalOptionsOnRouteChange:!0},J=[],z=[],K=!1;e.$on("$routeChangeStart",function(e,t,a){_.resetGlobalOptionsOnRouteChange&&(_={displayOnlyLastErrorMsg:!1,errorMessageSeparator:" ",hideErrorUnderInputs:!1,preValidateFormElements:!1,preValidateValidationSummary:!0,isolatedScope:null,scope:null,validateOnEmpty:!1,validRequireHowMany:"all",resetGlobalOptionsOnRouteChange:!0},B=[],z=[])});var Y=function(e,t,a,r){this.bFieldRequired=!1,this.validators=[],this.typingLimit=I,this.scope=e,this.elm=t,this.ctrl=r,this.validatorAttrs=a,this.validateOnEmpty=!1,this.validRequireHowMany="all",e&&e.$validationOptions&&(_=e.$validationOptions),e&&(_.isolatedScope||_.scope)&&(this.scope=_.isolatedScope||_.scope,_=p(e.$validationOptions,_)),"undefined"==typeof _.resetGlobalOptionsOnRouteChange&&(_.resetGlobalOptionsOnRouteChange=!0),this.elm&&this.validatorAttrs&&this.ctrl&&this.scope&&($(this.elm,this.validatorAttrs,this.ctrl,this.scope),this.defineValidation())};return Y.prototype.addToValidationSummary=i,Y.prototype.arrayFindObject=A,Y.prototype.defineValidation=n,Y.prototype.getFormElementByName=o,Y.prototype.getFormElements=s,Y.prototype.getGlobalOptions=l,Y.prototype.isFieldRequired=u,Y.prototype.initialize=d,Y.prototype.mergeObjects=p,Y.prototype.parseBool=N,Y.prototype.removeFromValidationSummary=c,Y.prototype.removeFromFormElementObjectList=m,Y.prototype.runValidationCallbackOnPromise=g,Y.prototype.setDisplayOnlyLastErrorMsg=v,Y.prototype.setGlobalOptions=y,Y.prototype.updateErrorMsg=h,Y.prototype.validate=b,String.prototype.trim=k,String.prototype.format=L,String.format=M,Y}]); diff --git a/package.json b/package.json index d42d95b..d06342e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "angular-validation-ghiscoding", - "version": "1.5.7", + "version": "1.5.9", "author": "Ghislain B.", "description": "Angular-Validation Directive and Service (ghiscoding)", "main": "dist/angular-validation.min", diff --git a/readme.md b/readme.md index eebaf13..b18af44 100644 --- a/readme.md +++ b/readme.md @@ -1,5 +1,5 @@ #Angular Validation (Directive / Service) -`Version: 1.5.7` +`Version: 1.5.9` ### Forms Validation with Angular made easy! ##### (Concept comes from the amazing Laravel)