react-formal
Version:
Classy HTML form management for React
39 lines (38 loc) • 1.52 kB
JavaScript
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
import PropTypes from 'prop-types';
import React from 'react';
import useFieldArray from './useFieldArray';
/**
* `<FieldArray>`, unlike `<Field>`, does not render any component, and
* is essentially a render prop version of [`useFieldArray`](/api/useFieldArray), accepting all
* the same options.
*
* @memberof Form
*/
function FieldArray(_ref) {
let {
children
} = _ref,
props = _objectWithoutPropertiesLoose(_ref, ["children"]);
const [values, arrayHelpers, meta] = useFieldArray(props);
return /*#__PURE__*/React.createElement(React.Fragment, null, children(values, arrayHelpers, meta));
}
FieldArray.displayName = 'FieldArray';
// @ts-ignore
FieldArray.propTypes = {
name: PropTypes.string.isRequired,
/**
* The similar signature as providing a function to `<Field>` but with an
* additional `arrayHelpers` object passed to the render function:
*
* ```tsx static
* <Form.FieldArray>
* {(values, arrayHelpers, meta) => ... }
* </Form.FieldArray>
* ```
*
* @type {(value: T, arrayHelpers: FieldArrayHelpers, meta; FieldMeta) => ReactNode}
*/
children: PropTypes.oneOfType([PropTypes.func, PropTypes.element])
};
export default FieldArray;