react-form-package
Version:
A declarative form component with inbuilt validation and state management
117 lines (89 loc) • 2.77 kB
JavaScript
;
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;