oneframe-react
Version:
Oneframe React ## Components, Hooks, Helper Functions & State Management
132 lines (131 loc) • 4.62 kB
JavaScript
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
result["default"] = mod;
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
const validator = __importStar(require("validator"));
const lodash_1 = require("lodash");
/**
* Validate function
*
* @static
* @param {*} validateSpecs
* @param {*} value
* @param {string} errorText
* @returns {*} Return the Message array
*/
exports.default = (validateSpecs, value, errorText) => {
let stringValue = '';
if (value === null)
value = '';
if (typeof value === 'string') {
stringValue = value;
}
else if (typeof value === 'boolean') {
if (value) {
stringValue = 'true';
}
else {
stringValue = '';
}
}
else {
stringValue = String(value);
}
const coreValue = value;
let messages = [];
if (validateSpecs.length && !errorText) {
validateSpecs.forEach((item) => {
switch (item.required) {
case 'required':
if (validator.isEmpty(stringValue)) {
messages.push(item.message);
}
break;
case 'email':
if (!validator.isEmail(stringValue)) {
messages.push(item.message);
}
break;
case 'creditcard':
if (!validator.isCreditCard(stringValue)) {
messages.push(item.message);
}
break;
case 'number':
if (!validator.isNumeric(stringValue)) {
messages.push(item.message);
}
break;
case 'custom':
if (item.hasOwnProperty('validate') && lodash_1.isFunction(item.validate)) {
if (!item.validate(value)) {
messages.push(item.message);
}
}
break;
case 'maxSelect':
if (item.value && lodash_1.isArray(coreValue)) {
if (coreValue.length > item.value) {
messages.push(item.message);
}
}
break;
case 'minSelect':
if (item.value && lodash_1.isArray(coreValue)) {
if (coreValue.length < item.value) {
messages.push(item.message);
}
}
break;
case 'max':
if (item.value && lodash_1.isNumber(Number(stringValue))) {
if (value > item.value) {
messages.push(item.message);
}
}
break;
case 'min':
if (item.value && lodash_1.isNumber(Number(stringValue))) {
if (value < item.value) {
messages.push(item.message);
}
}
break;
case 'maxLength':
if (item.value && lodash_1.isString(String(stringValue))) {
if (stringValue.length > item.value) {
messages.push(item.message);
}
}
break;
case 'minLength':
if (item.value && lodash_1.isString(String(stringValue))) {
if (stringValue.length < item.value) {
messages.push(item.message);
}
}
break;
case 'pattern':
if (item.regex) {
const p = new RegExp(item.regex);
const t = p.test(stringValue);
if (!t) {
messages.push(item.message);
}
}
break;
default:
messages = [];
}
});
}
else {
errorText && messages.push(errorText);
}
return messages;
};
;