redux-form-manager
Version:
Redux form manager
181 lines (175 loc) • 5.24 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var isEmail = function isEmail(value) {
// if (value === '') return true;
return (/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i.test(value)
);
};
var isThaiMobile = function isThaiMobile(value) {
// if (value === '') return true;
return (/^(\+)?(66|0)(-|\s)?\d{2}(-|\s)?\d{3}(-|\s)?\d{4}$/.test(value)
);
};
var isThaiPhone = function isThaiPhone(value) {
// if (value === '') return true;
return (/^(\+)?(66|0)(-|\s)?\d{2}(-|\s)?\d{3}(-|\s)?\d{3}$/.test(value)
);
};
var isThaiID = function isThaiID(value) {
// if (value === '') return true;
if (value.length !== 13) return false;
var j = 13;
var temp = [];
var temp2 = 0;
for (var i = 0; i <= 11; i += 1) {
temp[i] = Number(value[i]) * j;
temp2 += temp[i];
j -= 1;
}
var mod = temp2 % 11;
var ans = 11 - mod;
var answer = ans % 10;
var www = Number(value[12]);
if (www === answer) {
return true;
}
return false;
};
var isThaiFullname = function isThaiFullname(value) {
return (/^\w+(\s)\w+$/.test(value)
);
};
var isEqualLength = function isEqualLength(value, equalLength) {
if (value === null || value === undefined) {
return false;
}
return value.length === equalLength;
};
var moreThanMaxLength = function moreThanMaxLength(value, maxLength) {
if (value === null || value === undefined) {
return false;
}
return value.length > maxLength;
};
var lessThanMinLength = function lessThanMinLength(value, minLength) {
if (value === null || value === undefined) {
return false;
}
return value.length < minLength;
};
var isAlphabet = function isAlphabet(value) {
return (/[a-zA-Zก-๙]/.test(value)
);
};
function isNumber(value) {
var _value = Number(value);
var re = /^-?\d+(\.\d+)?$/;
return re.test(_value);
}
var isCorrectBracket = function isCorrectBracket(value) {
var regex = /^.+\(.+\)/;
if (/[()]/.test(value)) {
return regex.test(value);
}
return true;
};
var isStartWithSpacing = function isStartWithSpacing(value) {
var regex = /^\s/;
return regex.test(value);
};
var isContainDoubleSpacing = function isContainDoubleSpacing(value) {
var regex = /\s{2,}/;
return regex.test(value);
};
var isEndWithSpacing = function isEndWithSpacing(value) {
var regex = /\s$/;
return regex.test(value);
};
var isContainSpecialChar = function isContainSpecialChar(value) {
var regex = /[!@#$%&฿"'<>*+~`_?{}()|^\\/]/;
return regex.test(value);
};
var validateRules = function validateRules(value, rules) {
var errorMessage = '';
for (var ruleKey in rules) {
var rule = rules[ruleKey]; // rule could be string or object
switch (ruleKey) {
case 'required':
case 'require':
errorMessage = value === '' || value === {} || value === undefined ? rule : '';
break;
case 'email':
if (!isEmail(value)) errorMessage = rule;
break;
case 'thaiMobile':
if (!isThaiMobile(value)) errorMessage = rule;
break;
case 'thaiPhone':
if (!isThaiPhone(value)) errorMessage = rule;
break;
case 'thaiId':
if (!isThaiID(value)) errorMessage = rule;
break;
case 'thaiFullname':
if (!isThaiFullname(value)) errorMessage = rule;
break;
case 'equalLength':
if (!rule.length) {
console.error('isEqualLength error. Please send length key');
break;
}
if (!isEqualLength(value, rule.length)) errorMessage = rule.message;
break;
case 'maxLength':
if (!rule.maxLength) {
console.error('maxLength error. Please send maxLength key');
break;
}
if (moreThanMaxLength(value, rule.maxLength)) errorMessage = rule.message;
break;
case 'minLength':
if (!rule.minLength) {
console.error('minLength error. Please send minLength key');
break;
}
if (lessThanMinLength(value, rule.minLength)) errorMessage = rule.message;
break;
case 'alphabet':
if (!isAlphabet(value)) errorMessage = rule;
break;
case 'number':
if (!isNumber(value)) errorMessage = rule;
break;
case 'correctBracket':
if (!isCorrectBracket(value)) errorMessage = rule;
break;
case 'notStartWithSpacing':
if (isStartWithSpacing(value)) errorMessage = rule;
break;
case 'notContainDoubleSpacing':
if (isContainDoubleSpacing(value)) errorMessage = rule;
break;
case 'notEndWithSpacing':
if (isEndWithSpacing(value)) errorMessage = rule;
break;
case 'notContainSpecialChar':
if (isContainSpecialChar(value)) errorMessage = rule;
break;
case 'customValidate':
for (var i = 0; i < rules.customValidate.length; i++) {
if (value !== '' && !rules.customValidate[i].valid(value)) {
errorMessage = rules.customValidate[i].message;
break;
}
}
break;
default:
errorMessage = '';
break;
}
}
return errorMessage;
};
exports.default = validateRules;