UNPKG

react-form-package

Version:

A declarative form component with inbuilt validation and state management

117 lines (89 loc) 2.77 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.checkFormInput = void 0; var _inputIs = _interopRequireDefault(require("input-is")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } var checkFormInput = function checkFormInput(rules, value, data) { var validateArray = []; var text = rules.type === 'text' || rules.type === 'textarea'; var password = rules.type === 'password'; var number = rules.type === 'number'; var date = rules.type === 'date'; if (!rules.required && !value) { return true; } if (!data) { return false; } if (rules.sameAs && data[rules.sameAs]) { validateArray.push(value === data[rules.sameAs].value); } else if (rules.sameAs && !data[rules.sameAs]) { validateArray.push(false); } if (rules.validate) { validateArray.push(rules.validate(value)); } switch (rules.type) { case 'date': validateArray.push(_inputIs["default"].date(value, 'YYYY-MM-DD')); break; case 'datetime-local': validateArray.push(_inputIs["default"].datetime(value, 'YYYY-MM-DD')); break; case 'email': validateArray.push(_inputIs["default"].email(value)); break; case 'number': validateArray.push(_inputIs["default"].number(value)); break; case 'radio': case 'select': validateArray.push(_inputIs["default"].filled(value)); break; case 'tel': validateArray.push(_inputIs["default"].phonenumber(value)); break; case 'time': validateArray.push(_inputIs["default"].time(value)); break; case 'url': validateArray.push(_inputIs["default"].url(value)); break; default: break; } if ((text || password) && rules.min) { validateArray.push(_inputIs["default"].min(value, rules.min)); } if ((text || password) && rules.max) { validateArray.push(_inputIs["default"].max(value, rules.max)); } if (number && rules.min) { validateArray.push(value >= rules.min); } if (number && rules.max) { validateArray.push(value <= rules.max); } if (date && rules.min) { validateArray.push(new Date(value) >= new Date(rules.min)); } if (date && rules.max) { validateArray.push(new Date(value) <= new Date(rules.max)); } if (rules.required && rules.type === 'checkbox') { validateArray.push(value); } if (rules.required && rules.type !== 'checkbox') { validateArray.push(_inputIs["default"].filled(value)); } if (rules.match) { validateArray.push(_inputIs["default"].valid(value, rules.match)); } var valid = validateArray.every(function (val) { return val; }); return valid; }; exports.checkFormInput = checkFormInput;