@olapat/react-useform
Version:
react hook useform controller
37 lines (36 loc) • 1.8 kB
JavaScript
;
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var useForm_1 = __importDefault(require("../useForm/useForm"));
var useList_1 = __importDefault(require("./useList"));
var useCheckValidate_1 = __importDefault(require("../useForm/useCheckValidate"));
var react_1 = require("react");
var useFormList = function (config, configList) {
var form = (0, useForm_1.default)(config);
var listCtl = (0, useList_1.default)(configList);
var checkValidate = (0, useCheckValidate_1.default)();
var onChange = (0, react_1.useCallback)(function (ix, name, value, rules) {
var _a;
var arrayList = listCtl.values.map(function (_, i) { return i; });
var prevItem = listCtl.values[arrayList[ix]];
var values = __assign(__assign({}, prevItem.values), (_a = {}, _a[name] = value, _a));
var _rules = rules || prevItem.rules;
var newItem = __assign(__assign({}, prevItem), { values: values, rules: _rules, errors: form.submitted ? checkValidate(values, _rules) : {} });
listCtl.changeListItem(ix, newItem);
}, [listCtl, form.submitted, checkValidate]);
return __assign(__assign({}, form), { listCtl: __assign(__assign({}, listCtl), { onChange: onChange }) });
};
exports.default = useFormList;