ng2-validation-manager
Version:
ng2-validation-manager is validation library for Angular 2 based on Laravel Validation method.
287 lines • 12.4 kB
JavaScript
;
var __extends = (this && this.__extends) || (function () {
var extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var forms_1 = require("@angular/forms");
var Validators = (function (_super) {
__extends(Validators, _super);
function Validators() {
return _super !== null && _super.apply(this, arguments) || this;
}
Validators.alpha = function (control) {
if (isPresent(Validators.required(control)))
return null;
var v = control.value;
return /^[A-Za-z]+$/.test(v) ? null : { 'alpha': true };
};
Validators.alphaSpace = function (control) {
if (isPresent(Validators.required(control)))
return null;
var v = control.value;
return /^[A-Za-z ]+$/.test(v) ? null : { 'alphaSpace': true };
};
Validators.alphaNum = function (control) {
if (isPresent(Validators.required(control)))
return null;
var v = control.value;
return /^[A-Za-z0-9]+$/.test(v) ? null : { 'alphaNum': true };
};
Validators.alphaNumSpace = function (control) {
if (isPresent(Validators.required(control)))
return null;
var v = control.value;
return /^[A-Za-z0-9 ]+$/.test(v) ? null : { 'alphaNumSpace': true };
};
Validators.requiredWith = function (field) {
return function (control) {
if (!control['_parent'])
return null;
var controlRequired = control['_parent'].controls[field];
return controlRequired.value ? null : { 'requiredWith': true };
};
};
Validators.requiredWithout = function (field) {
return function (control) {
if (!control['_parent'])
return null;
var controlRequired = control['_parent'].controls[field];
return controlRequired.value ? { 'requiredWithout': true } : null;
};
};
Validators.rangeLength = function (rangeLength) {
return function (control) {
if (isPresent(Validators.required(control)))
return null;
var v = control.value;
return v.length >= rangeLength[0] && v.length <= rangeLength[1] ? null : { 'rangeLength': true };
};
};
Validators.count = function (len) {
return function (control) {
if (isPresent(Validators.required(control)))
return null;
var v = control.value;
return v.length == len ? null : { 'count': true };
};
};
Validators.min = function (min) {
return function (control) {
if (isPresent(Validators.required(control)))
return null;
var v = control.value;
return v >= parseFloat(min) ? null : { 'min': true };
};
};
Validators.max = function (max) {
return function (control) {
if (isPresent(Validators.required(control)))
return null;
var v = control.value;
return v <= parseFloat(max) ? null : { 'max': true };
};
};
Validators.range = function (range) {
return function (control) {
if (isPresent(Validators.required(control)))
return null;
var v = control.value;
return v >= range[0] && v <= range[1] ? null : { 'range': true };
};
};
Validators.digits = function (control) {
if (isPresent(Validators.required(control)))
return null;
var v = control.value;
return /^\d+$/.test(v) ? null : { 'digits': true };
};
Validators.number = function (control) {
if (isPresent(Validators.required(control)))
return null;
var v = control.value;
return /^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(v) ? null : { 'number': true };
};
Validators.url = function (control) {
if (isPresent(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 };
};
Validators.email = function (control) {
if (isPresent(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 };
};
Validators.date = function (control) {
if (isPresent(Validators.required(control)))
return null;
var v = control.value;
return !/Invalid|NaN/.test(new Date(v).toString()) ? null : { 'date': true };
};
Validators.minDate = function (minDate) {
if (!isDate(minDate))
throw Error('minDate value must be a formatted date');
return function (control) {
if (isPresent(Validators.required(control)))
return null;
var d = new Date(control.value);
if (!isDate(d))
return { minDate: true };
return d >= new Date(minDate) ? null : { minDate: true };
};
};
Validators.maxDate = function (maxDate) {
if (!isDate(maxDate))
throw Error('maxDate value must be a formatted date');
return function (control) {
if (isPresent(Validators.required(control)))
return null;
var d = new Date(control.value);
if (!isDate(d))
return { maxDate: true };
return d <= new Date(maxDate) ? null : { maxDate: true };
};
};
Validators.dateISO = function (control) {
if (isPresent(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 };
};
Validators.creditCard = function (control) {
if (isPresent(Validators.required(control)))
return null;
var v = control.value;
var sanitized = v.replace(/[^0-9]+/g, '');
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 };
};
Validators.json = function (control) {
if (isPresent(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 };
};
Validators.base64 = function (control) {
if (isPresent(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 };
};
Validators.phone = function (locale) {
var phones = {
'zh-CN': /^(\+?0?86\-?)?((13\d|14[57]|15[^4,\D]|17[678]|18\d)\d{8}|170[059]\d{7})$/,
'zh-TW': /^(\+?886\-?|0)?9\d{8}$/,
'en-ZA': /^(\+?27|0)\d{9}$/,
'en-AU': /^(\+?61|0)4\d{8}$/,
'en-HK': /^(\+?852\-?)?[569]\d{3}\-?\d{4}$/,
'fr-FR': /^(\+?33|0)[67]\d{8}$/,
'de-DE': /^(\+?49|0)[1-9]\d{10}$/,
'pt-PT': /^(\+351)?9[1236]\d{7}$/,
'el-GR': /^(\+?30)?(69\d{8})$/,
'en-GB': /^(\+?44|0)7\d{9}$/,
'en-US': /^(\+?1)?[2-9]\d{2}[2-9](?!11)\d{6}$/,
'en-ZM': /^(\+26)?09[567]\d{7}$/,
'ru-RU': /^(\+?7|8)?9\d{9}$/,
'nb-NO': /^(\+?47)?[49]\d{7}$/,
'nn-NO': /^(\+?47)?[49]\d{7}$/,
'vi-VN': /^(0|\+?84)?((1(2([0-9])|6([2-9])|88|99))|(9((?!5)[0-9])))([0-9]{7})$/,
'en-NZ': /^(\+?64|0)2\d{7,9}$/,
'hu-HU': /^(?:\+?(?:36|\(36\)))[ -\/]?(?:(?:(?:(?!1|20|21|30|31|70|90)[2-9][0-9])[ -\/]?\d{3}[ -\/]?\d{3})|(?:(?:1|20|21|30|31|70|90)[ -\/]?\d{3}[ -\/]?\d{2}[ -\/]?\d{2}))$/,
'nl-NL': /^(^\+[0-9]{2}|^\+[0-9]{2}\(0\)|^\(\+[0-9]{2}\)\(0\)|^00[0-9]{2}|^0)([0-9]{9}$|[0-9\-\s]{10}$)$/
};
return function (control) {
if (isPresent(Validators.required(control)))
return null;
var v = control.value;
var pattern = phones[locale] || phones['en-US'];
return (new RegExp(pattern)).test(v) ? null : { 'phone': true };
};
};
Validators.uuid = function (version) {
var uuid = {
'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
};
return function (control) {
if (isPresent(Validators.required(control)))
return null;
var v = control.value;
var pattern = uuid[version] || uuid.all;
return (new RegExp(pattern)).test(v) ? null : { 'uuid': true };
};
};
Validators.equal = function (val) {
return function (control) {
if (isPresent(Validators.required(control)))
return null;
var v = control.value;
return val === v ? null : { equal: true };
};
};
Validators.equalTo = function (equalControlName) {
return function (control) {
if (!control['_parent'])
return null;
if (!control['_parent'].controls[equalControlName])
throw new TypeError('Form Control ' + equalControlName + ' does not exists.');
var controlMatch = control['_parent'].controls[equalControlName];
return controlMatch.value == control.value ? null : { 'equalTo': true };
};
};
return Validators;
}(forms_1.Validators));
exports.Validators = Validators;
function isPresent(obj) {
return obj !== undefined && obj !== null;
}
exports.isPresent = isPresent;
function isDate(obj) {
return !/Invalid|NaN/.test(new Date(obj).toString());
}
exports.isDate = isDate;
//# sourceMappingURL=validators.js.map