@ezform/mui
Version:
Material UI form components for use with EZForm React validation and form library
43 lines (42 loc) • 1.75 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);
};
import { useEffect, useState } from "react";
import { deepGet, deepSet } from "@ezform/core";
export var FieldList = function (props) {
var form = props.form, name = props.name, renderRow = props.renderRow, _a = props.extraRows, extraRows = _a === void 0 ? 0 : _a;
var _b = useState(null), length = _b[0], setLength = _b[1];
var arr = deepGet(form.getFields(), name);
useEffect(function () {
if (arr && length !== arr.length) {
setLength(arr === null || arr === void 0 ? void 0 : arr.length);
}
}, [JSON.stringify(arr)]);
var add = function () { return function () {
form.setFields(function (fields) {
var arr = deepGet(fields, name) || [];
arr.push({});
var newObj = __assign({}, fields);
deepSet(newObj, name, arr);
setLength(function (p) { return p + 1; });
return newObj;
});
}; };
var remove = function (i) { return function () {
form.setFields(function (fields) {
var arr = deepGet(fields, name) || [];
arr.splice(i, 1);
setLength(function (p) { return p - 1; });
return fields;
});
}; };
return Array(length + extraRows).fill(0).map(function (nil, index) { return renderRow({ add: add, remove: remove, index: index, total: length }); });
};