@altiore/form
Version:
Form helper for building powerful forms
52 lines (51 loc) • 2.42 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.map = void 0;
var react_1 = __importStar(require("react"));
var field_array_context_1 = require("../../../../../../@common/field-array-context");
var types_1 = require("../../../../../../@common/types");
var Item = react_1.default.memo(function (_a) {
var add = _a.add, cb = _a.cb, fieldName = _a.fieldName, remove = _a.remove, name = _a.name, index = _a.index, itemKey = _a.itemKey;
var removeHandler = (0, react_1.useCallback)(function () {
remove(itemKey);
}, [itemKey, remove]);
var append = (0, react_1.useCallback)(function (initialValue) {
add(initialValue, itemKey, types_1.InsertPosition.AFTER);
}, [add, itemKey]);
var prepend = (0, react_1.useCallback)(function (initialValue) {
add(initialValue, itemKey, types_1.InsertPosition.BEFORE);
}, [add, fieldName, itemKey]);
return (react_1.default.createElement(field_array_context_1.FieldArrayContext.Provider, { key: name, value: { name: name } }, cb({
append: append,
itemKey: itemKey,
key: name,
prepend: prepend,
remove: removeHandler,
}, index)));
});
var map = function (add, remove, list, fieldName, callback) {
return list.map(function (itemKey, index) {
var name = fieldName + "." + itemKey;
return (react_1.default.createElement(Item, { key: name, add: add, cb: callback, remove: remove, name: name, fieldName: fieldName, index: index, itemKey: itemKey }));
});
};
exports.map = map;