UNPKG

oneframe-react

Version:

Oneframe React ## Components, Hooks, Helper Functions & State Management

132 lines (131 loc) 4.62 kB
"use strict"; 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; };