UNPKG

@ezform/mui

Version:

Material UI form components for use with EZForm React validation and form library

43 lines (42 loc) 1.75 kB
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 }); }); };