ng2-validation
Version:
1,170 lines (1,112 loc) • 38.2 kB
JavaScript
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/forms'), require('libphonenumber-js')) :
typeof define === 'function' && define.amd ? define(['exports', '@angular/core', '@angular/forms', 'libphonenumber-js'], factory) :
(factory((global.ng = global.ng || {}, global.ng.validation = global.ng.validation || {}),global.ng.core,global.ng.forms,global.libphonenumberJs));
}(this, (function (exports,_angular_core,_angular_forms,libphonenumberJs) { 'use strict';
function __decorate(decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
}
function __metadata(k, v) {
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
}
var BASE64_VALIDATOR = {
provide: _angular_forms.NG_VALIDATORS,
useExisting: _angular_core.forwardRef(function () { return Base64Validator$$1; }),
multi: true
};
var Base64Validator$$1 = (function () {
function Base64Validator$$1() {
}
Base64Validator$$1.prototype.validate = function (c) {
return base64(c);
};
return Base64Validator$$1;
}());
Base64Validator$$1 = __decorate([
_angular_core.Directive({
selector: '[base64][formControlName],[base64][formControl],[base64][ngModel]',
providers: [BASE64_VALIDATOR]
})
], Base64Validator$$1);
function isPresent(obj) {
return obj !== undefined && obj !== null;
}
function isDate(obj) {
return !/Invalid|NaN/.test(new Date(obj).toString());
}
var base64 = function (control) {
if (isPresent(_angular_forms.Validators.required(control)))
return null;
var v = control.value;
return /^(?:[A-Z0-9+\/]{4})*(?:[A-Z0-9+\/]{2}==|[A-Z0-9+\/]{3}=|[A-Z0-9+\/]{4})$/i.test(v) ? null : { 'base64': true };
};
var CREDIT_CARD_VALIDATOR = {
provide: _angular_forms.NG_VALIDATORS,
useExisting: _angular_core.forwardRef(function () { return CreditCardValidator$$1; }),
multi: true
};
var CreditCardValidator$$1 = (function () {
function CreditCardValidator$$1() {
}
CreditCardValidator$$1.prototype.validate = function (c) {
return creditCard(c);
};
return CreditCardValidator$$1;
}());
CreditCardValidator$$1 = __decorate([
_angular_core.Directive({
selector: '[creditCard][formControlName],[creditCard][formControl],[creditCard][ngModel]',
providers: [CREDIT_CARD_VALIDATOR]
})
], CreditCardValidator$$1);
var creditCard = function (control) {
if (isPresent(_angular_forms.Validators.required(control)))
return null;
var v = control.value;
var sanitized = v.replace(/[^0-9]+/g, '');
// problem with chrome
if (!(/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/.test(sanitized))) {
return { creditCard: true };
}
var sum = 0;
var digit;
var tmpNum;
var shouldDouble;
for (var i = sanitized.length - 1; i >= 0; i--) {
digit = sanitized.substring(i, (i + 1));
tmpNum = parseInt(digit, 10);
if (shouldDouble) {
tmpNum *= 2;
if (tmpNum >= 10) {
sum += ((tmpNum % 10) + 1);
}
else {
sum += tmpNum;
}
}
else {
sum += tmpNum;
}
shouldDouble = !shouldDouble;
}
if (Boolean((sum % 10) === 0 ? sanitized : false)) {
return null;
}
return { creditCard: true };
};
var DATE_VALIDATOR = {
provide: _angular_forms.NG_VALIDATORS,
useExisting: _angular_core.forwardRef(function () { return DateValidator$$1; }),
multi: true
};
var DateValidator$$1 = (function () {
function DateValidator$$1() {
}
DateValidator$$1.prototype.validate = function (c) {
return date(c);
};
return DateValidator$$1;
}());
DateValidator$$1 = __decorate([
_angular_core.Directive({
selector: '[date][formControlName],[date][formControl],[date][ngModel]',
providers: [DATE_VALIDATOR]
})
], DateValidator$$1);
var date = function (control) {
if (isPresent(_angular_forms.Validators.required(control)))
return null;
var v = control.value;
return isDate(v) ? null : { date: true };
};
var DATE_ISO_VALIDATOR = {
provide: _angular_forms.NG_VALIDATORS,
useExisting: _angular_core.forwardRef(function () { return DateISOValidator$$1; }),
multi: true
};
var DateISOValidator$$1 = (function () {
function DateISOValidator$$1() {
}
DateISOValidator$$1.prototype.validate = function (c) {
return dateISO(c);
};
return DateISOValidator$$1;
}());
DateISOValidator$$1 = __decorate([
_angular_core.Directive({
selector: '[dateISO][formControlName],[dateISO][formControl],[dateISO][ngModel]',
providers: [DATE_ISO_VALIDATOR]
})
], DateISOValidator$$1);
var dateISO = function (control) {
if (isPresent(_angular_forms.Validators.required(control)))
return null;
var v = control.value;
return /^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(v) ? null : { dateISO: true };
};
var DIGITS_VALIDATOR = {
provide: _angular_forms.NG_VALIDATORS,
useExisting: _angular_core.forwardRef(function () { return DigitsValidator$$1; }),
multi: true
};
var DigitsValidator$$1 = (function () {
function DigitsValidator$$1() {
}
DigitsValidator$$1.prototype.validate = function (c) {
return digits(c);
};
return DigitsValidator$$1;
}());
DigitsValidator$$1 = __decorate([
_angular_core.Directive({
selector: '[digits][formControlName],[digits][formControl],[digits][ngModel]',
providers: [DIGITS_VALIDATOR]
})
], DigitsValidator$$1);
var digits = function (control) {
if (isPresent(_angular_forms.Validators.required(control)))
return null;
var v = control.value;
return /^\d+$/.test(v) ? null : { digits: true };
};
var EMAIL_VALIDATOR = {
provide: _angular_forms.NG_VALIDATORS,
useExisting: _angular_core.forwardRef(function () { return EmailValidator$$1; }),
multi: true
};
var EmailValidator$$1 = (function () {
function EmailValidator$$1() {
}
EmailValidator$$1.prototype.validate = function (c) {
return email(c);
};
return EmailValidator$$1;
}());
EmailValidator$$1 = __decorate([
_angular_core.Directive({
selector: '[email][formControlName],[email][formControl],[email][ngModel]',
providers: [EMAIL_VALIDATOR]
})
], EmailValidator$$1);
var email = function (control) {
if (isPresent(_angular_forms.Validators.required(control)))
return null;
var v = control.value;
return /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(v) ? null : { 'email': true };
};
var EQUAL_VALIDATOR = {
provide: _angular_forms.NG_VALIDATORS,
useExisting: _angular_core.forwardRef(function () { return EqualValidator$$1; }),
multi: true
};
var EqualValidator$$1 = (function () {
function EqualValidator$$1() {
}
EqualValidator$$1.prototype.ngOnInit = function () {
this.validator = equal(this.equal);
};
EqualValidator$$1.prototype.ngOnChanges = function (changes) {
for (var key in changes) {
if (key === 'equal') {
this.validator = equal(changes[key].currentValue);
if (this.onChange)
this.onChange();
}
}
};
EqualValidator$$1.prototype.validate = function (c) {
return this.validator(c);
};
EqualValidator$$1.prototype.registerOnValidatorChange = function (fn) {
this.onChange = fn;
};
return EqualValidator$$1;
}());
__decorate([
_angular_core.Input(),
__metadata("design:type", Object)
], EqualValidator$$1.prototype, "equal", void 0);
EqualValidator$$1 = __decorate([
_angular_core.Directive({
selector: '[equal][formControlName],[equal][formControl],[equal][ngModel]',
providers: [EQUAL_VALIDATOR]
})
], EqualValidator$$1);
var equal = function (val) {
return function (control) {
if (isPresent(_angular_forms.Validators.required(control)))
return null;
var v = control.value;
return val === v ? null : { equal: true };
};
};
var EQUAL_TO_VALIDATOR = {
provide: _angular_forms.NG_VALIDATORS,
useExisting: _angular_core.forwardRef(function () { return EqualToValidator$$1; }),
multi: true
};
var EqualToValidator$$1 = (function () {
function EqualToValidator$$1() {
}
EqualToValidator$$1.prototype.ngOnInit = function () {
this.validator = equalTo(this.equalTo);
};
EqualToValidator$$1.prototype.validate = function (c) {
return this.validator(c);
};
return EqualToValidator$$1;
}());
__decorate([
_angular_core.Input(),
__metadata("design:type", typeof (_a = typeof _angular_forms.FormControl !== "undefined" && _angular_forms.FormControl) === "function" && _a || Object)
], EqualToValidator$$1.prototype, "equalTo", void 0);
EqualToValidator$$1 = __decorate([
_angular_core.Directive({
selector: '[equalTo][formControlName],[equalTo][formControl],[equalTo][ngModel]',
providers: [EQUAL_TO_VALIDATOR]
})
], EqualToValidator$$1);
var _a;
var equalTo = function (equalControl) {
var subscribe = false;
return function (control) {
if (!subscribe) {
subscribe = true;
equalControl.valueChanges.subscribe(function () {
control.updateValueAndValidity();
});
}
var v = control.value;
return equalControl.value === v ? null : { equalTo: true };
};
};
var GREATER_THAN_VALIDATOR = {
provide: _angular_forms.NG_VALIDATORS,
useExisting: _angular_core.forwardRef(function () { return GreaterThanValidator$$1; }),
multi: true
};
var GreaterThanValidator$$1 = (function () {
function GreaterThanValidator$$1() {
}
GreaterThanValidator$$1.prototype.ngOnInit = function () {
this.validator = gt(this.gt);
};
GreaterThanValidator$$1.prototype.ngOnChanges = function (changes) {
for (var key in changes) {
if (key === 'gt') {
this.validator = gt(changes[key].currentValue);
if (this.onChange)
this.onChange();
}
}
};
GreaterThanValidator$$1.prototype.validate = function (c) {
return this.validator(c);
};
GreaterThanValidator$$1.prototype.registerOnValidatorChange = function (fn) {
this.onChange = fn;
};
return GreaterThanValidator$$1;
}());
__decorate([
_angular_core.Input(),
__metadata("design:type", Number)
], GreaterThanValidator$$1.prototype, "gt", void 0);
GreaterThanValidator$$1 = __decorate([
_angular_core.Directive({
selector: '[gt][formControlName],[gt][formControl],[gt][ngModel]',
providers: [GREATER_THAN_VALIDATOR]
})
], GreaterThanValidator$$1);
var gt = function (gt) {
return function (control) {
if (!isPresent(gt))
return null;
if (isPresent(_angular_forms.Validators.required(control)))
return null;
var v = +control.value;
return v > +gt ? null : { gt: true };
};
};
var GREATER_THAN_EQUAL_VALIDATOR = {
provide: _angular_forms.NG_VALIDATORS,
useExisting: _angular_core.forwardRef(function () { return GreaterThanEqualValidator$$1; }),
multi: true
};
var GreaterThanEqualValidator$$1 = (function () {
function GreaterThanEqualValidator$$1() {
}
GreaterThanEqualValidator$$1.prototype.ngOnInit = function () {
this.validator = gte(this.gte);
};
GreaterThanEqualValidator$$1.prototype.ngOnChanges = function (changes) {
for (var key in changes) {
if (key === 'gte') {
this.validator = gte(changes[key].currentValue);
if (this.onChange)
this.onChange();
}
}
};
GreaterThanEqualValidator$$1.prototype.validate = function (c) {
return this.validator(c);
};
GreaterThanEqualValidator$$1.prototype.registerOnValidatorChange = function (fn) {
this.onChange = fn;
};
return GreaterThanEqualValidator$$1;
}());
__decorate([
_angular_core.Input(),
__metadata("design:type", Number)
], GreaterThanEqualValidator$$1.prototype, "gte", void 0);
GreaterThanEqualValidator$$1 = __decorate([
_angular_core.Directive({
selector: '[gte][formControlName],[gte][formControl],[gte][ngModel]',
providers: [GREATER_THAN_EQUAL_VALIDATOR]
})
], GreaterThanEqualValidator$$1);
var gte = function (gte) {
return function (control) {
if (!isPresent(gte))
return null;
if (isPresent(_angular_forms.Validators.required(control)))
return null;
var v = +control.value;
return v >= +gte ? null : { gte: true };
};
};
var JSON_VALIDATOR = {
provide: _angular_forms.NG_VALIDATORS,
useExisting: _angular_core.forwardRef(function () { return JSONValidator$$1; }),
multi: true
};
var JSONValidator$$1 = (function () {
function JSONValidator$$1() {
}
JSONValidator$$1.prototype.validate = function (c) {
return json(c);
};
return JSONValidator$$1;
}());
JSONValidator$$1 = __decorate([
_angular_core.Directive({
selector: '[json][formControlName],[json][formControl],[json][ngModel]',
providers: [JSON_VALIDATOR]
})
], JSONValidator$$1);
var json = function (control) {
if (isPresent(_angular_forms.Validators.required(control)))
return null;
var v = control.value;
try {
var obj = JSON.parse(v);
if (Boolean(obj) && typeof obj === 'object') {
return null;
}
}
catch (e) {
}
return { json: true };
};
var LESS_THAN_VALIDATOR = {
provide: _angular_forms.NG_VALIDATORS,
useExisting: _angular_core.forwardRef(function () { return LessThanValidator$$1; }),
multi: true
};
var LessThanValidator$$1 = (function () {
function LessThanValidator$$1() {
}
LessThanValidator$$1.prototype.ngOnInit = function () {
this.validator = lt(this.lt);
};
LessThanValidator$$1.prototype.ngOnChanges = function (changes) {
for (var key in changes) {
if (key === 'lt') {
this.validator = lt(changes[key].currentValue);
if (this.onChange)
this.onChange();
}
}
};
LessThanValidator$$1.prototype.validate = function (c) {
return this.validator(c);
};
LessThanValidator$$1.prototype.registerOnValidatorChange = function (fn) {
this.onChange = fn;
};
return LessThanValidator$$1;
}());
__decorate([
_angular_core.Input(),
__metadata("design:type", Number)
], LessThanValidator$$1.prototype, "lt", void 0);
LessThanValidator$$1 = __decorate([
_angular_core.Directive({
selector: '[lt][formControlName],[lt][formControl],[lt][ngModel]',
providers: [LESS_THAN_VALIDATOR]
})
], LessThanValidator$$1);
var lt = function (lt) {
return function (control) {
if (!isPresent(lt))
return null;
if (isPresent(_angular_forms.Validators.required(control)))
return null;
var v = +control.value;
return v < +lt ? null : { lt: true };
};
};
var LESS_THAN_EQUAL_VALIDATOR = {
provide: _angular_forms.NG_VALIDATORS,
useExisting: _angular_core.forwardRef(function () { return LessThanEqualValidator$$1; }),
multi: true
};
var LessThanEqualValidator$$1 = (function () {
function LessThanEqualValidator$$1() {
}
LessThanEqualValidator$$1.prototype.ngOnInit = function () {
this.validator = lte(this.lte);
};
LessThanEqualValidator$$1.prototype.ngOnChanges = function (changes) {
for (var key in changes) {
if (key === 'lte') {
this.validator = lte(changes[key].currentValue);
if (this.onChange)
this.onChange();
}
}
};
LessThanEqualValidator$$1.prototype.validate = function (c) {
return this.validator(c);
};
LessThanEqualValidator$$1.prototype.registerOnValidatorChange = function (fn) {
this.onChange = fn;
};
return LessThanEqualValidator$$1;
}());
__decorate([
_angular_core.Input(),
__metadata("design:type", Number)
], LessThanEqualValidator$$1.prototype, "lte", void 0);
LessThanEqualValidator$$1 = __decorate([
_angular_core.Directive({
selector: '[lte][formControlName],[lte][formControl],[lte][ngModel]',
providers: [LESS_THAN_EQUAL_VALIDATOR]
})
], LessThanEqualValidator$$1);
var lte = function (lte) {
return function (control) {
if (!isPresent(lte))
return null;
if (isPresent(_angular_forms.Validators.required(control)))
return null;
var v = +control.value;
return v <= +lte ? null : { lte: true };
};
};
var MAX_VALIDATOR = {
provide: _angular_forms.NG_VALIDATORS,
useExisting: _angular_core.forwardRef(function () { return MaxValidator$$1; }),
multi: true
};
var MaxValidator$$1 = (function () {
function MaxValidator$$1() {
}
MaxValidator$$1.prototype.ngOnInit = function () {
this.validator = max(this.max);
};
MaxValidator$$1.prototype.ngOnChanges = function (changes) {
for (var key in changes) {
if (key === 'max') {
this.validator = max(changes[key].currentValue);
if (this.onChange)
this.onChange();
}
}
};
MaxValidator$$1.prototype.validate = function (c) {
return this.validator(c);
};
MaxValidator$$1.prototype.registerOnValidatorChange = function (fn) {
this.onChange = fn;
};
return MaxValidator$$1;
}());
__decorate([
_angular_core.Input(),
__metadata("design:type", Number)
], MaxValidator$$1.prototype, "max", void 0);
MaxValidator$$1 = __decorate([
_angular_core.Directive({
selector: '[max][formControlName],[max][formControl],[max][ngModel]',
providers: [MAX_VALIDATOR]
})
], MaxValidator$$1);
var max = function (max) {
return function (control) {
if (!isPresent(max))
return null;
if (isPresent(_angular_forms.Validators.required(control)))
return null;
var v = +control.value;
return v <= +max ? null : { actualValue: v, requiredValue: +max, max: true };
};
};
var MAX_DATE_VALIDATOR = {
provide: _angular_forms.NG_VALIDATORS,
useExisting: _angular_core.forwardRef(function () { return MaxDateValidator$$1; }),
multi: true
};
var MaxDateValidator$$1 = (function () {
function MaxDateValidator$$1() {
}
MaxDateValidator$$1.prototype.ngOnInit = function () {
this.validator = maxDate(this.maxDate);
};
MaxDateValidator$$1.prototype.ngOnChanges = function (changes) {
for (var key in changes) {
if (key === 'maxDate') {
this.validator = maxDate(changes[key].currentValue);
if (this.onChange)
this.onChange();
}
}
};
MaxDateValidator$$1.prototype.validate = function (c) {
return this.validator(c);
};
MaxDateValidator$$1.prototype.registerOnValidatorChange = function (fn) {
this.onChange = fn;
};
return MaxDateValidator$$1;
}());
__decorate([
_angular_core.Input(),
__metadata("design:type", Object)
], MaxDateValidator$$1.prototype, "maxDate", void 0);
MaxDateValidator$$1 = __decorate([
_angular_core.Directive({
selector: '[maxDate][formControlName],[maxDate][formControl],[maxDate][ngModel]',
providers: [MAX_DATE_VALIDATOR]
})
], MaxDateValidator$$1);
var maxDate = function (maxDate) {
if (!isDate(maxDate) && !(maxDate instanceof Function)) {
throw Error('maxDate value must be or return a formatted date');
}
return function (control) {
if (isPresent(_angular_forms.Validators.required(control)))
return null;
var d = new Date(control.value);
if (!isDate(d))
return { maxDate: true };
if (maxDate instanceof Function)
maxDate = maxDate();
return d <= new Date(maxDate) ? null : { maxDate: true };
};
};
var MIN_VALIDATOR = {
provide: _angular_forms.NG_VALIDATORS,
useExisting: _angular_core.forwardRef(function () { return MinValidator$$1; }),
multi: true
};
var MinValidator$$1 = (function () {
function MinValidator$$1() {
}
MinValidator$$1.prototype.ngOnInit = function () {
this.validator = min(this.min);
};
MinValidator$$1.prototype.ngOnChanges = function (changes) {
for (var key in changes) {
if (key === 'min') {
this.validator = min(changes[key].currentValue);
if (this.onChange)
this.onChange();
}
}
};
MinValidator$$1.prototype.validate = function (c) {
return this.validator(c);
};
MinValidator$$1.prototype.registerOnValidatorChange = function (fn) {
this.onChange = fn;
};
return MinValidator$$1;
}());
__decorate([
_angular_core.Input(),
__metadata("design:type", Number)
], MinValidator$$1.prototype, "min", void 0);
MinValidator$$1 = __decorate([
_angular_core.Directive({
selector: '[min][formControlName],[min][formControl],[min][ngModel]',
providers: [MIN_VALIDATOR]
})
], MinValidator$$1);
var min = function (min) {
return function (control) {
if (!isPresent(min))
return null;
if (isPresent(_angular_forms.Validators.required(control)))
return null;
var v = +control.value;
return v >= +min ? null : { actualValue: v, requiredValue: +min, min: true };
};
};
var MIN_DATE_VALIDATOR = {
provide: _angular_forms.NG_VALIDATORS,
useExisting: _angular_core.forwardRef(function () { return MinDateValidator$$1; }),
multi: true
};
var MinDateValidator$$1 = (function () {
function MinDateValidator$$1() {
}
MinDateValidator$$1.prototype.ngOnInit = function () {
this.validator = minDate(this.minDate);
};
MinDateValidator$$1.prototype.ngOnChanges = function (changes) {
for (var key in changes) {
if (key === 'minDate') {
this.validator = minDate(changes[key].currentValue);
if (this.onChange)
this.onChange();
}
}
};
MinDateValidator$$1.prototype.validate = function (c) {
return this.validator(c);
};
MinDateValidator$$1.prototype.registerOnValidatorChange = function (fn) {
this.onChange = fn;
};
return MinDateValidator$$1;
}());
__decorate([
_angular_core.Input(),
__metadata("design:type", Object)
], MinDateValidator$$1.prototype, "minDate", void 0);
MinDateValidator$$1 = __decorate([
_angular_core.Directive({
selector: '[minDate][formControlName],[minDate][formControl],[minDate][ngModel]',
providers: [MIN_DATE_VALIDATOR]
})
], MinDateValidator$$1);
var minDate = function (minDate) {
if (!isDate(minDate) && !(minDate instanceof Function)) {
throw Error('minDate value must be or return a formatted date');
}
return function (control) {
if (isPresent(_angular_forms.Validators.required(control)))
return null;
var d = new Date(control.value);
if (!isDate(d))
return { minDate: true };
if (minDate instanceof Function)
minDate = minDate();
return d >= new Date(minDate) ? null : { minDate: true };
};
};
var NOT_EQUAL_VALIDATOR = {
provide: _angular_forms.NG_VALIDATORS,
useExisting: _angular_core.forwardRef(function () { return NotEqualValidator$$1; }),
multi: true
};
var NotEqualValidator$$1 = (function () {
function NotEqualValidator$$1() {
}
NotEqualValidator$$1.prototype.ngOnInit = function () {
this.validator = notEqual(this.notEqual);
};
NotEqualValidator$$1.prototype.ngOnChanges = function (changes) {
for (var key in changes) {
if (key === 'notEqual') {
this.validator = notEqual(changes[key].currentValue);
if (this.onChange)
this.onChange();
}
}
};
NotEqualValidator$$1.prototype.validate = function (c) {
return this.validator(c);
};
NotEqualValidator$$1.prototype.registerOnValidatorChange = function (fn) {
this.onChange = fn;
};
return NotEqualValidator$$1;
}());
__decorate([
_angular_core.Input(),
__metadata("design:type", Object)
], NotEqualValidator$$1.prototype, "notEqual", void 0);
NotEqualValidator$$1 = __decorate([
_angular_core.Directive({
selector: '[notEqual][formControlName],[notEqual][formControl],[notEqual][ngModel]',
providers: [NOT_EQUAL_VALIDATOR]
})
], NotEqualValidator$$1);
var notEqual = function (val) {
return function (control) {
if (isPresent(_angular_forms.Validators.required(control)))
return null;
var v = control.value;
return val !== v ? null : { notEqual: true };
};
};
var NOT_EQUAL_TO_VALIDATOR = {
provide: _angular_forms.NG_VALIDATORS,
useExisting: _angular_core.forwardRef(function () { return NotEqualToValidator$$1; }),
multi: true
};
var NotEqualToValidator$$1 = (function () {
function NotEqualToValidator$$1() {
}
NotEqualToValidator$$1.prototype.ngOnInit = function () {
this.validator = notEqualTo(this.notEqualTo);
};
NotEqualToValidator$$1.prototype.validate = function (c) {
return this.validator(c);
};
return NotEqualToValidator$$1;
}());
__decorate([
_angular_core.Input(),
__metadata("design:type", typeof (_a$1 = typeof _angular_forms.FormControl !== "undefined" && _angular_forms.FormControl) === "function" && _a$1 || Object)
], NotEqualToValidator$$1.prototype, "notEqualTo", void 0);
NotEqualToValidator$$1 = __decorate([
_angular_core.Directive({
selector: '[notEqualTo][formControlName],[notEqualTo][formControl],[notEqualTo][ngModel]',
providers: [NOT_EQUAL_TO_VALIDATOR]
})
], NotEqualToValidator$$1);
var _a$1;
var notEqualTo = function (notEqualControl) {
var subscribe = false;
return function (control) {
if (!subscribe) {
subscribe = true;
notEqualControl.valueChanges.subscribe(function () {
control.updateValueAndValidity();
});
}
var v = control.value;
return notEqualControl.value !== v ? null : { notEqualTo: true };
};
};
var NUMBER_VALIDATOR = {
provide: _angular_forms.NG_VALIDATORS,
useExisting: _angular_core.forwardRef(function () { return NumberValidator$$1; }),
multi: true
};
var NumberValidator$$1 = (function () {
function NumberValidator$$1() {
}
NumberValidator$$1.prototype.validate = function (c) {
return number(c);
};
return NumberValidator$$1;
}());
NumberValidator$$1 = __decorate([
_angular_core.Directive({
selector: '[number][formControlName],[number][formControl],[number][ngModel]',
providers: [NUMBER_VALIDATOR]
})
], NumberValidator$$1);
var number = function (control) {
if (isPresent(_angular_forms.Validators.required(control)))
return null;
var v = control.value;
return /^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(v) ? null : { 'number': true };
};
var PHONE_VALIDATOR = {
provide: _angular_forms.NG_VALIDATORS,
useExisting: _angular_core.forwardRef(function () { return PhoneValidator$$1; }),
multi: true
};
var PhoneValidator$$1 = (function () {
function PhoneValidator$$1() {
}
PhoneValidator$$1.prototype.ngOnInit = function () {
this.validator = phone(this.phone);
};
PhoneValidator$$1.prototype.ngOnChanges = function (changes) {
for (var key in changes) {
if (key === 'phone') {
this.validator = phone(changes[key].currentValue);
if (this.onChange)
this.onChange();
}
}
};
PhoneValidator$$1.prototype.validate = function (c) {
return this.validator(c);
};
PhoneValidator$$1.prototype.registerOnValidatorChange = function (fn) {
this.onChange = fn;
};
return PhoneValidator$$1;
}());
__decorate([
_angular_core.Input(),
__metadata("design:type", String)
], PhoneValidator$$1.prototype, "phone", void 0);
PhoneValidator$$1 = __decorate([
_angular_core.Directive({
selector: '[phone][formControlName],[phone][formControl],[phone][ngModel]',
providers: [PHONE_VALIDATOR]
})
], PhoneValidator$$1);
var phone = function (country) {
return function (control) {
if (isPresent(_angular_forms.Validators.required(control)))
return null;
var v = control.value;
return libphonenumberJs.isValidNumber({ phone: v, country: country }) ? null : { phone: true };
};
};
var RANGE_VALIDATOR = {
provide: _angular_forms.NG_VALIDATORS,
useExisting: _angular_core.forwardRef(function () { return RangeValidator$$1; }),
multi: true
};
var RangeValidator$$1 = (function () {
function RangeValidator$$1() {
}
RangeValidator$$1.prototype.ngOnInit = function () {
this.validator = range(this.range);
};
RangeValidator$$1.prototype.ngOnChanges = function (changes) {
for (var key in changes) {
if (key === 'range') {
this.validator = range(changes[key].currentValue);
if (this.onChange)
this.onChange();
}
}
};
RangeValidator$$1.prototype.validate = function (c) {
return this.validator(c);
};
RangeValidator$$1.prototype.registerOnValidatorChange = function (fn) {
this.onChange = fn;
};
return RangeValidator$$1;
}());
__decorate([
_angular_core.Input(),
__metadata("design:type", Array)
], RangeValidator$$1.prototype, "range", void 0);
RangeValidator$$1 = __decorate([
_angular_core.Directive({
selector: '[range][formControlName],[range][formControl],[range][ngModel]',
providers: [RANGE_VALIDATOR]
})
], RangeValidator$$1);
var range = function (range) {
return function (control) {
if (!isPresent(range))
return null;
if (isPresent(_angular_forms.Validators.required(control)))
return null;
var v = +control.value;
return v >= range[0] && v <= range[1] ? null : { actualValue: v, requiredValue: range, range: true };
};
};
var RANGE_LENGTH_VALIDATOR = {
provide: _angular_forms.NG_VALIDATORS,
useExisting: _angular_core.forwardRef(function () { return RangeLengthValidator$$1; }),
multi: true
};
var RangeLengthValidator$$1 = (function () {
function RangeLengthValidator$$1() {
}
RangeLengthValidator$$1.prototype.ngOnInit = function () {
this.validator = rangeLength(this.rangeLength);
};
RangeLengthValidator$$1.prototype.ngOnChanges = function (changes) {
for (var key in changes) {
if (key === 'rangeLength') {
this.validator = rangeLength(changes[key].currentValue);
if (this.onChange)
this.onChange();
}
}
};
RangeLengthValidator$$1.prototype.validate = function (c) {
return this.validator(c);
};
RangeLengthValidator$$1.prototype.registerOnValidatorChange = function (fn) {
this.onChange = fn;
};
return RangeLengthValidator$$1;
}());
__decorate([
_angular_core.Input(),
__metadata("design:type", Array)
], RangeLengthValidator$$1.prototype, "rangeLength", void 0);
RangeLengthValidator$$1 = __decorate([
_angular_core.Directive({
selector: '[rangeLength][formControlName],[rangeLength][formControl],[rangeLength][ngModel]',
providers: [RANGE_LENGTH_VALIDATOR]
})
], RangeLengthValidator$$1);
var rangeLength = function (rangeLength) {
return function (control) {
if (!isPresent(rangeLength))
return null;
if (isPresent(_angular_forms.Validators.required(control)))
return null;
var v = control.value;
return v.length >= rangeLength[0] && v.length <= rangeLength[1] ? null : { rangeLength: true };
};
};
var URL_VALIDATOR = {
provide: _angular_forms.NG_VALIDATORS,
useExisting: _angular_core.forwardRef(function () { return UrlValidator$$1; }),
multi: true
};
var UrlValidator$$1 = (function () {
function UrlValidator$$1() {
}
UrlValidator$$1.prototype.validate = function (c) {
return url(c);
};
return UrlValidator$$1;
}());
UrlValidator$$1 = __decorate([
_angular_core.Directive({
selector: '[url][formControlName],[url][formControl],[url][ngModel]',
providers: [URL_VALIDATOR]
})
], UrlValidator$$1);
var url = function (control) {
if (isPresent(_angular_forms.Validators.required(control)))
return null;
var v = control.value;
return /^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[/?#]\S*)?$/i.test(v) ? null : { 'url': true };
};
var UUID_VALIDATOR = {
provide: _angular_forms.NG_VALIDATORS,
useExisting: _angular_core.forwardRef(function () { return UUIDValidator$$1; }),
multi: true
};
var UUIDValidator$$1 = (function () {
function UUIDValidator$$1() {
}
UUIDValidator$$1.prototype.ngOnInit = function () {
this.validator = uuid(this.uuid);
};
UUIDValidator$$1.prototype.ngOnChanges = function (changes) {
for (var key in changes) {
if (key === 'uuid') {
this.validator = uuid(changes[key].currentValue);
if (this.onChange)
this.onChange();
}
}
};
UUIDValidator$$1.prototype.validate = function (c) {
return this.validator(c);
};
UUIDValidator$$1.prototype.registerOnValidatorChange = function (fn) {
this.onChange = fn;
};
return UUIDValidator$$1;
}());
__decorate([
_angular_core.Input(),
__metadata("design:type", Object)
], UUIDValidator$$1.prototype, "uuid", void 0);
UUIDValidator$$1 = __decorate([
_angular_core.Directive({
selector: '[uuid][formControlName],[uuid][formControl],[uuid][ngModel]',
providers: [UUID_VALIDATOR]
})
], UUIDValidator$$1);
var uuids = {
'3': /^[0-9A-F]{8}-[0-9A-F]{4}-3[0-9A-F]{3}-[0-9A-F]{4}-[0-9A-F]{12}$/i,
'4': /^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,
'5': /^[0-9A-F]{8}-[0-9A-F]{4}-5[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i,
'all': /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i
};
var uuid = function (version) {
return function (control) {
if (isPresent(_angular_forms.Validators.required(control)))
return null;
var v = control.value;
var pattern = uuids[version] || uuids.all;
return (new RegExp(pattern)).test(v) ? null : { uuid: true };
};
};
var CustomValidators = {
base64: base64,
creditCard: creditCard,
date: date,
dateISO: dateISO,
digits: digits,
email: email,
equal: equal,
equalTo: equalTo,
gt: gt,
gte: gte,
json: json,
lt: lt,
lte: lte,
max: max,
maxDate: maxDate,
min: min,
minDate: minDate,
notEqual: notEqual,
notEqualTo: notEqualTo,
number: number,
phone: phone,
range: range,
rangeLength: rangeLength,
url: url,
uuid: uuid
};
var CUSTOM_FORM_DIRECTIVES = [
Base64Validator$$1,
CreditCardValidator$$1,
DateValidator$$1,
DateISOValidator$$1,
DigitsValidator$$1,
EmailValidator$$1,
EqualValidator$$1,
EqualToValidator$$1,
GreaterThanValidator$$1,
GreaterThanEqualValidator$$1,
JSONValidator$$1,
LessThanValidator$$1,
LessThanEqualValidator$$1,
MaxValidator$$1,
MaxDateValidator$$1,
MinValidator$$1,
MinDateValidator$$1,
NotEqualValidator$$1,
NotEqualToValidator$$1,
NumberValidator$$1,
PhoneValidator$$1,
RangeValidator$$1,
RangeLengthValidator$$1,
UrlValidator$$1,
UUIDValidator$$1
];
exports.CustomFormsModule = (function () {
function CustomFormsModule() {
}
return CustomFormsModule;
}());
exports.CustomFormsModule = __decorate([
_angular_core.NgModule({
declarations: [CUSTOM_FORM_DIRECTIVES],
exports: [CUSTOM_FORM_DIRECTIVES]
})
], exports.CustomFormsModule);
exports.CustomValidators = CustomValidators;
Object.defineProperty(exports, '__esModule', { value: true });
})));
//# sourceMappingURL=ng2-validation.umd.js.map