@altiore/form
Version:
Form helper for building powerful forms
76 lines (75 loc) • 2.79 kB
JavaScript
;
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.createFieldArray = void 0;
var react_1 = __importDefault(require("react"));
var field_array_context_1 = require("../@common/field-array-context");
var form_context_1 = require("../@common/form-context");
var named_field_array_1 = __importDefault(require("./named-field-array"));
/**
* Создает массив полей
*
* @component
*
* @param component
*
* @typedef createFieldArray
* @return {Array} возвращает массив полей
*
*
* @example
*
* import React from 'react';
* import {createFieldArray} from './';
*
* const FieldArray = createFieldArray(({list}) => {
* return (
* <div>
* {list.map(({key, remove, append, prepend}) => {
* return (
* <div key={key}>
* <div style={{display: 'flex'}}>
* <Field label={''} name="ingredient" validate={[minLength(3)]} />
* <ArrayTags name="tags" />
* <button onClick={remove} type="button">
* -
* </button>
* <button onClick={append} type="button">
* after
* </button>
* <button onClick={prepend} type="button">
* before
* </button>
* </div>
* </div>
* );
* })}
* <button onClick={list.add} type="button">
* Добавить ингредиент
* </button>
* </div>
* );
* });
*/
var createFieldArray = function (component) {
return function (_a) {
var defaultValue = _a.defaultValue, name = _a.name, validate = _a.validate, props = __rest(_a, ["defaultValue", "name", "validate"]);
return (react_1.default.createElement(form_context_1.FormContext.Consumer, null, function (formState) { return (react_1.default.createElement(field_array_context_1.FieldArrayContext.Consumer, null, function (fieldArrayState) {
return (react_1.default.createElement(named_field_array_1.default, { fieldArrayState: fieldArrayState, formState: formState, defaultValue: defaultValue, validate: validate, name: name, component: component, componentProps: props }));
})); }));
};
};
exports.createFieldArray = createFieldArray;