UNPKG

@olapat/react-useform

Version:
108 lines (107 loc) 4.21 kB
"use strict"; 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;