UNPKG

redux-form-manager

Version:
181 lines (175 loc) 5.24 kB
'use strict'; 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;