@olapat/react-useform
Version:
react hook useform controller
108 lines (107 loc) • 4.21 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.checkErr = exports.getRequiredMsg = void 0;
var jsx_runtime_1 = require("react/jsx-runtime");
var react_1 = require("react");
var getRequiredMsg = function (label, local) {
if (local === void 0) { local = 'th'; }
var locals = {
en: 'Please input ',
th: 'โปรดระบุ '
};
return locals[local] + label;
};
exports.getRequiredMsg = getRequiredMsg;
var useCheckValidate = function () {
return (0, react_1.useCallback)(function (values, rules) {
var errors = {};
for (var field in rules) {
if (Object.hasOwnProperty.call(rules, field)) {
var fieldRules = rules[field];
var errMsg = (0, exports.checkErr)(fieldRules, values[field], field, values);
if (errMsg)
errors[field] = errMsg;
}
}
return errors;
}, []);
};
var checkErr = function (fieldRules, value, fieldName, values) {
var errMsg;
for (var rule in fieldRules) {
var valueRule = fieldRules[rule];
if (typeof valueRule === 'undefined' || !valueRule)
continue;
if (Object.hasOwnProperty.call(fieldRules, rule)) {
switch (rule) {
case 'required':
if (!CheckEmpty(value))
errMsg = typeof valueRule === 'string' ? valueRule : "Please input ".concat(fieldName);
break;
case 'isAllowed':
if (Array.isArray(valueRule)) {
for (var _i = 0, valueRule_1 = valueRule; _i < valueRule_1.length; _i++) {
var item = valueRule_1[_i];
if (typeof (item === null || item === void 0 ? void 0 : item.func) === 'function' && !item.func(value, values)) {
errMsg = item.msg || "Please input ".concat(fieldName, " to be correct");
break;
}
}
}
else {
if (typeof (valueRule === null || valueRule === void 0 ? void 0 : valueRule.func) === 'function' && !valueRule.func(value, values))
errMsg = valueRule.msg || "Please input ".concat(fieldName, " to be correct");
}
break;
case 'isAllowedAll': {
var errMsgs = [];
for (var _a = 0, valueRule_2 = valueRule; _a < valueRule_2.length; _a++) {
var item = valueRule_2[_a];
if (typeof (item === null || item === void 0 ? void 0 : item.func) === 'function' && !item.func(value, values)) {
errMsgs.push(item.msg);
}
}
if (errMsgs.length) {
errMsg = ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: errMsgs.map(function (item, index) { return ((0, jsx_runtime_1.jsxs)(react_1.Fragment, { children: [index !== 0 && (0, jsx_runtime_1.jsx)("br", {}), item] }, index)); }) }));
}
else {
errMsg = undefined;
}
break;
}
default:
break;
}
if (errMsg)
break;
}
}
return errMsg;
};
exports.checkErr = checkErr;
var CheckEmpty = function (value) {
if ((value || value === 0) && typeof value === 'number') {
return true;
}
else if (value && typeof value === 'string' && value.trim() !== '') {
return true;
}
else if (Array.isArray(value)) {
if (value === null || value === void 0 ? void 0 : value.length) {
return true;
}
else {
return false;
}
}
else if (value && typeof value !== 'string') {
return true;
}
else if (value) {
return true;
}
else {
return false;
}
};
exports.default = useCheckValidate;