ng2-validators
Version:
An implementation of angular validators for Angular 2
1 lines • 16.2 kB
JavaScript
!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports,require("google-libphonenumber"),require("@angular/core"),require("@angular/forms")):"function"==typeof define&&define.amd?define(["exports","google-libphonenumber","@angular/core","@angular/forms"],r):r((e.ng2=e.ng2||{},e.ng2.validators=e.ng2.validators||{}),e.google.libphonenumber,e.ng.core,e.ng.forms)}(this,function(e,r,t,n){"use strict";var i=function(){function e(){}return e.isNotPresent=function(e){var r=e.value;return void 0===r||null===r||""===r},e}(),a=function(){function e(){}return e.repeatCharacterRegexRule=function(e){return function(r){if(!i.isNotPresent(r)){var t=e-1,n="([^\\x00-\\x1F])\\1{"+t+"}";return""!==r.value&&new RegExp(n).test(r.value)?{repeatCharacterRegexRule:{repeatCount:e}}:void 0}}},e.allowedCharacterRule=function(e){return function(r){if(!i.isNotPresent(r)){for(var t=r.value,n=!0,a=[],o=0,u=t;o<u.length;o++){var s=u[o];e.indexOf(s)===-1&&(n=!1,a.indexOf(s)===-1&&a.push(s))}return n?void 0:{allowedCharacterRule:{invalidChars:a,allowedChars:e}}}}},e.alphabeticalCharacterRule=function(e){return function(r){if(!i.isNotPresent(r)){var t=r.value;if(0!==t.length){var n=t.replace(/[^A-Za-z]+/g,"");return n.length<e?{alphabeticalCharacterRule:{required:e,actual:n.length}}:void 0}}}},e.digitCharacterRule=function(e){return function(r){if(!i.isNotPresent(r)){var t=r.value;if(0!==t.length){var n=t.replace(/[^0-9\.]+/g,"");return n.length<e?{digitCharacterRule:{required:e,actual:n.length}}:void 0}}}},e.lowercaseCharacterRule=function(e){return function(r){if(!i.isNotPresent(r)){var t=r.value;if(0!==t.length){var n=t.replace(/[^a-z]+/g,"");return n.length<e?{lowercaseCharacterRule:{required:e,actual:n.length}}:void 0}}}},e.uppercaseCharacterRule=function(e){return function(r){if(!i.isNotPresent(r)){var t=r.value;if(0!==t.length){var n=t.replace(/[^A-Z]+/g,"");return n.length<e?{uppercaseCharacterRule:{required:e,actual:n.length}}:void 0}}}},e.specialCharacterRule=function(e){return function(r){if(!i.isNotPresent(r)){var t=r.value;if(0!==t.length){var n=t.replace(/[\w\s]+/g,"");return n.length<e?{specialCharacterRule:{required:e,actual:n.length}}:void 0}}}},e.mismatchedPasswords=function(e,r){return function(t){if(t.get(e?e:"newPassword").value!==t.get(r?r:"confirmPassword").value)return t.get(r?r:"confirmPassword").setErrors({mismatchedPasswords:!0}),{mismatchedPasswords:!0}}},e}(),o=function(){function e(){}return e.simple=function(e){if(!i.isNotPresent(e)){if(!new RegExp("^.+@.+\\..+$").test(e.value))return{simpleEmailRule:!0}}},e.normal=function(e){if(!i.isNotPresent(e)){if(!/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test(e.value))return{normalEmailRule:!0}}},e}(),u=function(){function e(){}return e.noWhitespace=function(e){if(!i.isNotPresent(e)){return new RegExp("\\s").test(e.value)?{noWhitespaceRequired:!0}:void 0}},e.noEmptyString=function(e){if(!i.isNotPresent(e))return 0===e.value.trim().length?{noEmptyString:!0}:void 0},e.isNumber=function(e){if(!i.isNotPresent(e))return isNaN(e.value)?{numberRequired:!0}:void 0},e.isInRange=function(e,r){return function(t){if(!i.isNotPresent(t))return isNaN(t.value)?{numberRequired:!0}:+t.value<e?{rangeValueToSmall:{requiredMinValue:e,requiredMaxValue:r,actual:t.value}}:+t.value>r?{rangeValueToBig:{requiredMinValue:e,requiredMaxValue:r,actual:t.value}}:void 0}},e.minLength=function(e){return function(r){if(!i.isNotPresent(r)){var t=r.value;if(!(t.length>=e))return{minLength:{requiredMinLength:e,actualLength:t.length}}}}},e.maxLength=function(e){return function(r){if(!i.isNotPresent(r)){var t=r.value;if(!(e>=t.length))return{maxLength:{requiredMaxLength:e,actualLength:t.length}}}}},e.min=function(e){return function(r){if(!i.isNotPresent(r)){var t=r.value;if(isNaN(r.value))return{numberRequired:!0};if(!(+t>=e))return{min:{required:e,actual:r.value}}}}},e.max=function(e){return function(r){if(!i.isNotPresent(r)){var t=r.value;if(isNaN(r.value))return{numberRequired:!0};if(!(e>=+t))return{max:{required:e,actual:r.value}}}}},e}(),s="^(?:4[0-9]{12})(?:[0-9]{3})?$",c="^(?:(?:5[0678]\\d\\d|6304|6390|67\\d\\d)\\d{8,15})$",l="^(?:(?:2131|1800|35\\d{3})\\d{11})$",d="^(?:5[1-5][0-9]{2}|222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}$",f=function(){function e(){}return e.isCreditCard=function(e){if(!i.isNotPresent(e)&&!new RegExp("^(?:3[47][0-9]{13})$|"+s+"|"+c+"|"+l+"|^(?:6(?:011|5[0-9]{2})(?:[0-9]{12}))$|"+d+"|^(?:3(?:0[0-5]|[68][0-9])[0-9]{11})$").test(e.value))return{creditcard:!0}},e.americanExpress=function(e){if(!i.isNotPresent(e)&&!new RegExp("^(?:3[47][0-9]{13})$").test(e.value))return{americanExpress:!0}},e.dinersclub=function(e){if(!i.isNotPresent(e)&&!new RegExp("^(?:3(?:0[0-5]|[68][0-9])[0-9]{11})$").test(e.value))return{dinersclub:!0}},e.discover=function(e){if(!i.isNotPresent(e)&&!new RegExp("^(?:6(?:011|5[0-9]{2})(?:[0-9]{12}))$").test(e.value))return{discover:!0}},e.jcb=function(e){if(!i.isNotPresent(e)&&!new RegExp(l).test(e.value))return{jcb:!0}},e.maestro=function(e){if(!i.isNotPresent(e)&&!new RegExp(c).test(e.value))return{maestro:!0}},e.mastercard=function(e){if(!i.isNotPresent(e)&&!new RegExp(d).test(e.value))return{mastercard:!0}},e.visa=function(e){if(!i.isNotPresent(e)&&!new RegExp(s).test(e.value))return{visa:!0}},e}(),p={UN001:"001",AD:"AD",AE:"AE",AF:"AF",AG:"AG",AI:"AI",AL:"AL",AM:"AM",AN:"AN",AO:"AO",AQ:"AQ",AR:"AR",AS:"AS",AT:"AT",AU:"AU",AW:"AW",AX:"AX",AZ:"AZ",BA:"BA",BB:"BB",BD:"BD",BE:"BE",BF:"BF",BG:"BG",BH:"BH",BI:"BI",BJ:"BJ",BL:"BL",BM:"BM",BN:"BN",BO:"BO",BR:"BR",BS:"BS",BT:"BT",BV:"BV",BW:"BW",BY:"BY",BZ:"BZ",CA:"CA",CC:"CC",CD:"CD",CF:"CF",CG:"CG",CH:"CH",CI:"CI",CK:"CK",CL:"CL",CM:"CM",CN:"CN",CO:"CO",CR:"CR",CU:"CU",CV:"CV",CX:"CX",CY:"CY",CZ:"CZ",DE:"DE",DJ:"DJ",DK:"DK",DM:"DM",DO:"DO",DZ:"DZ",EC:"EC",EE:"EE",EG:"EG",EH:"EH",ER:"ER",ES:"ES",ET:"ET",FI:"FI",FJ:"FJ",FK:"FK",FM:"FM",FO:"FO",FR:"FR",GA:"GA",GB:"GB",GD:"GD",GE:"GE",GF:"GF",GG:"GG",GH:"GH",GI:"GI",GL:"GL",GM:"GM",GN:"GN",GP:"GP",GQ:"GQ",GR:"GR",GS:"GS",GT:"GT",GU:"GU",GW:"GW",GY:"GY",HK:"HK",HM:"HM",HN:"HN",HR:"HR",HT:"HT",HU:"HU",ID:"ID",IE:"IE",IL:"IL",IM:"IM",IN:"IN",IO:"IO",IQ:"IQ",IR:"IR",IS:"IS",IT:"IT",JE:"JE",JM:"JM",JO:"JO",JP:"JP",KE:"KE",KG:"KG",KH:"KH",KI:"KI",KM:"KM",KN:"KN",KP:"KP",KR:"KR",KW:"KW",KY:"KY",KZ:"KZ",LA:"LA",LB:"LB",LC:"LC",LI:"LI",LK:"LK",LR:"LR",LS:"LS",LT:"LT",LU:"LU",LV:"LV",LY:"LY",MA:"MA",MC:"MC",MD:"MD",ME:"ME",MF:"MF",MG:"MG",MH:"MH",MK:"MK",ML:"ML",MM:"MM",MN:"MN",MO:"MO",MP:"MP",MQ:"MQ",MR:"MR",MS:"MS",MT:"MT",MU:"MU",MV:"MV",MW:"MW",MX:"MX",MY:"MY",MZ:"MZ",NA:"NA",NC:"NC",NE:"NE",NF:"NF",NG:"NG",NI:"NI",NL:"NL",NO:"NO",NP:"NP",NR:"NR",NU:"NU",NZ:"NZ",OM:"OM",PA:"PA",PE:"PE",PF:"PF",PG:"PG",PH:"PH",PK:"PK",PL:"PL",PM:"PM",PN:"PN",PR:"PR",PS:"PS",PT:"PT",PW:"PW",PY:"PY",QA:"QA",RE:"RE",RO:"RO",RS:"RS",RU:"RU",RW:"RW",SA:"SA",SB:"SB",SC:"SC",SD:"SD",SE:"SE",SG:"SG",SH:"SH",SI:"SI",SJ:"SJ",SK:"SK",SL:"SL",SM:"SM",SN:"SN",SO:"SO",SR:"SR",ST:"ST",SV:"SV",SY:"SY",SZ:"SZ",TC:"TC",TD:"TD",TF:"TF",TG:"TG",TH:"TH",TJ:"TJ",TK:"TK",TL:"TL",TM:"TM",TN:"TN",TO:"TO",TR:"TR",TT:"TT",TV:"TV",TW:"TW",TZ:"TZ",UA:"UA",UG:"UG",UM:"UM",US:"US",UY:"UY",UZ:"UZ",VA:"VA",VC:"VC",VE:"VE",VG:"VG",VI:"VI",VN:"VN",VU:"VU",WF:"WF",WS:"WS",YE:"YE",YT:"YT",ZA:"ZA",ZM:"ZM",ZW:"ZW",ZZ:"ZZ"},h=function(){function e(){}return e.checkRegionCode=function(e){return!(void 0===p[e])},e.isValidRegionCode=function(r){if(!i.isNotPresent(r))return e.checkRegionCode(r.value)?void 0:{noValidRegionCode:!0}},e.isPhoneNumber=function(t){return function(n){if(!i.isNotPresent(n)){if(!e.checkRegionCode(t))return{noValidRegionCode:!0};var a=r.PhoneNumberUtil.getInstance(),o={noPhoneNumber:!0};try{var u=a.parse(n.value,t);a.isValidNumber(u)&&(o=void 0)}catch(e){o={noPhoneNumber:!0}}return o}}},e.isPossibleNumberWithReason=function(t){return function(n){if(!i.isNotPresent(n)){if(!e.checkRegionCode(t))return{noValidRegionCode:!0};var a=r.PhoneNumberUtil.getInstance(),o={noPhoneNumber:!0};try{var u=a.parse(n.value,t);switch(a.isPossibleNumberWithReason(u)){case r.PhoneNumberUtil.ValidationResult.IS_POSSIBLE:o=void 0;break;case r.PhoneNumberUtil.ValidationResult.TOO_LONG:o={phoneNumberTooLong:!0};break;case r.PhoneNumberUtil.ValidationResult.TOO_SHORT:o={phoneNumberTooShort:!0};break;case r.PhoneNumberUtil.ValidationResult.INVALID_COUNTRY_CODE:o={phoneNumberInvalidCountryCode:!0};break;default:o={noPhoneNumber:!0}}}catch(e){o={noPhoneNumber:!0}}return o}}},e}(),v=function(){function e(){this.repeatCharacter=4,this.alphabeticalCharacter=1,this.digitCharacter=1,this.lowercaseCharacter=1,this.uppercaseCharacter=1}return e.prototype.ngOnInit=function(){this.repeatCharacterValidator=a.repeatCharacterRegexRule(this.repeatCharacter),this.alphabeticalCharacterValidator=a.alphabeticalCharacterRule(this.alphabeticalCharacter),this.digitCharacterValidator=a.digitCharacterRule(this.digitCharacter),this.lowercaseCharacterValidator=a.lowercaseCharacterRule(this.lowercaseCharacter),this.uppercaseCharacterValidator=a.uppercaseCharacterRule(this.uppercaseCharacter)},e.prototype.validate=function(e){return n.Validators.compose([this.repeatCharacterValidator,this.digitCharacterValidator,this.alphabeticalCharacterValidator,this.lowercaseCharacterValidator,this.uppercaseCharacterValidator])(e)},e}();v.decorators=[{type:t.Directive,args:[{selector:"[password][formControlName],[password][formControl],[password][ngModel]",providers:[{provide:n.NG_VALIDATORS,useExisting:t.forwardRef(function(){return v}),multi:!0}]}]}],v.ctorParameters=function(){return[]},v.propDecorators={repeatCharacter:[{type:t.Input}],alphabeticalCharacter:[{type:t.Input}],digitCharacter:[{type:t.Input}],lowercaseCharacter:[{type:t.Input}],uppercaseCharacter:[{type:t.Input}]};var m=function(){function e(){this.email="normal"}return e.prototype.ngOnInit=function(){switch(this.email){case"simple":this.validator=o.simple;break;case"normal":this.validator=o.normal;break;default:this.validator=o.normal}},e.prototype.validate=function(e){return this.validator(e)},e}();m.decorators=[{type:t.Directive,args:[{selector:"[email][formControlName],[email][formControl],[email][ngModel]",providers:[{provide:n.NG_VALIDATORS,useExisting:t.forwardRef(function(){return m}),multi:!0}]}]}],m.ctorParameters=function(){return[]},m.propDecorators={email:[{type:t.Input}]};var C=function(){function e(){}return e.prototype.ngOnInit=function(){this.validator=u.noWhitespace},e.prototype.validate=function(e){return this.validator(e)},e}();C.decorators=[{type:t.Directive,args:[{selector:"[noWhitespace][formControlName],[noWhitespace][formControl],[noWhitespace][ngModel]",providers:[{provide:n.NG_VALIDATORS,useExisting:t.forwardRef(function(){return C}),multi:!0}]}]}],C.ctorParameters=function(){return[]};var g=function(){function e(){}return e.prototype.ngOnInit=function(){this.validator=u.noEmptyString},e.prototype.validate=function(e){return this.validator(e)},e}();g.decorators=[{type:t.Directive,args:[{selector:"[noEmptyString][formControlName],[noEmptyString][formControl],[noEmptyString][ngModel]",providers:[{provide:n.NG_VALIDATORS,useExisting:t.forwardRef(function(){return g}),multi:!0}]}]}],g.ctorParameters=function(){return[]};var N=function(){function e(){}return e.prototype.ngOnInit=function(){this.validator=u.isNumber},e.prototype.validate=function(e){return this.validator(e)},e}();N.decorators=[{type:t.Directive,args:[{selector:"[isNumber][formControlName],[isNumber][formControl],[isNumber][ngModel]",providers:[{provide:n.NG_VALIDATORS,useExisting:t.forwardRef(function(){return N}),multi:!0}]}]}],N.ctorParameters=function(){return[]};var R=function(){function e(){}return e.prototype.ngOnInit=function(){this.validator=u.isInRange(this.minValue,this.maxValue)},e.prototype.validate=function(e){return this.validator(e)},e}();R.decorators=[{type:t.Directive,args:[{selector:"[isInRange][formControlName],[isInRange][formControl],[isInRange][ngModel]",providers:[{provide:n.NG_VALIDATORS,useExisting:t.forwardRef(function(){return R}),multi:!0}]}]}],R.ctorParameters=function(){return[]},R.propDecorators={minValue:[{type:t.Input}],maxValue:[{type:t.Input}]};var P=function(){function e(){}return e.prototype.ngOnInit=function(){this.validator=u.max(this.max)},e.prototype.validate=function(e){return this.validator(e)},e}();P.decorators=[{type:t.Directive,args:[{selector:"[max][formControlName],[max][formControl],[max][ngModel]",providers:[{provide:n.NG_VALIDATORS,useExisting:t.forwardRef(function(){return P}),multi:!0}]}]}],P.ctorParameters=function(){return[]},P.propDecorators={max:[{type:t.Input}]};var M=function(){function e(){}return e.prototype.ngOnInit=function(){this.validator=u.min(this.min)},e.prototype.validate=function(e){return this.validator(e)},e}();M.decorators=[{type:t.Directive,args:[{selector:"[min][formControlName],[min][formControl],[min][ngModel]",providers:[{provide:n.NG_VALIDATORS,useExisting:t.forwardRef(function(){return M}),multi:!0}]}]}],M.ctorParameters=function(){return[]},M.propDecorators={min:[{type:t.Input}]};var A=function(){function e(){this.creditCard="all"}return e.prototype.ngOnInit=function(){switch(this.creditCard){case"all":this.validator=f.isCreditCard;break;case"americanExpress":this.validator=f.americanExpress;break;case"dinersclub":this.validator=f.dinersclub;break;case"discover":this.validator=f.discover;break;case"jcb":this.validator=f.jcb;break;case"maestro":this.validator=f.maestro;break;case"mastercard":this.validator=f.mastercard;break;case"visa":this.validator=f.visa;break;default:this.validator=f.isCreditCard}},e.prototype.validate=function(e){return this.validator(e)},e}();A.decorators=[{type:t.Directive,args:[{selector:"[creditCard][formControlName],[creditCard][formControl],[creditCard][ngModel]",providers:[{provide:n.NG_VALIDATORS,useExisting:t.forwardRef(function(){return A}),multi:!0}]}]}],A.ctorParameters=function(){return[]},A.propDecorators={creditCard:[{type:t.Input}]};var I=function(){function e(){this.possiblePhone="US"}return e.prototype.ngOnInit=function(){this.validator=h.isPossibleNumberWithReason(this.possiblePhone)},e.prototype.validate=function(e){return this.validator(e)},e}();I.decorators=[{type:t.Directive,args:[{selector:"[possiblePhone][formControlName],[possiblePhone][formControl],[possiblePhone][ngModel]",providers:[{provide:n.NG_VALIDATORS,useExisting:t.forwardRef(function(){return I}),multi:!0}]}]}],I.ctorParameters=function(){return[]},I.propDecorators={possiblePhone:[{type:t.Input}]};var S=function(){function e(){this.phone="US"}return e.prototype.ngOnInit=function(){this.validator=h.isPhoneNumber(this.phone)},e.prototype.validate=function(e){return this.validator(e)},e}();S.decorators=[{type:t.Directive,args:[{selector:"[phone][formControlName],[phone][formControl],[phone][ngModel]",providers:[{provide:n.NG_VALIDATORS,useExisting:t.forwardRef(function(){return S}),multi:!0}]}]}],S.ctorParameters=function(){return[]},S.propDecorators={phone:[{type:t.Input}]};var V=function(){function e(){}return e.prototype.ngOnInit=function(){this.validator=h.isValidRegionCode},e.prototype.validate=function(e){return this.validator(e)},e}();V.decorators=[{type:t.Directive,args:[{selector:"[countryCode][formControlName],[countryCode][formControl],[countryCode][ngModel]",providers:[{provide:n.NG_VALIDATORS,useExisting:t.forwardRef(function(){return V}),multi:!0}]}]}],V.ctorParameters=function(){return[]};var E=function(){function e(){}return e}();E.decorators=[{type:t.NgModule,args:[{declarations:[A,m,v,R,N,P,M,C,S,I,g,V],exports:[A,m,v,R,N,P,M,C,S,I,g,V]}]}],E.ctorParameters=function(){return[]},e.PasswordValidators=a,e.EmailValidators=o,e.UniversalValidators=u,e.CreditCardValidators=f,e.PhoneValidators=h,e.PasswordValidatorDirective=v,e.EmailValidatorDirective=m,e.IsInRangeValidatorDirective=R,e.IsNumberValidatorDirective=N,e.MaxValidatorDirective=P,e.MinValidatorDirective=M,e.WhiteSpaceValidatorDirective=C,e.EmptyStringValidatorDirective=g,e.CreditCardValidatorDirective=A,e.PhoneValidatorDirective=S,e.CountryCodeValidatorDirective=V,e.PossiblePhoneValidatorDirective=I,e.ValidatorsModule=E,Object.defineProperty(e,"__esModule",{value:!0})});