UNPKG

variable-form-fields

Version:

Component for a form segment that requires a variable number of rows of custom fields. Uses react.

84 lines (70 loc) 2.48 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.VarRows = undefined; var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); var _varRow = require('./var-row'); var _varRow2 = _interopRequireDefault(_varRow); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function getClassNamesStrF(rowName, animateFirst, pendingRemovalRows, addedRows) { return function (row) { var classNamesArr = []; var pendingRemovalIndex = pendingRemovalRows.indexOf(row); var addedIndex = addedRows.indexOf(row); switch (true) { case pendingRemovalIndex !== -1: classNamesArr = ['-leave']; pendingRemovalRows.splice(pendingRemovalIndex, 1); break; case addedIndex !== -1 || animateFirst && row === 0: classNamesArr = ['-enter']; addedRows.splice(addedIndex, 1); break; default: break; } return [''].concat(classNamesArr).map(function (suffix) { return rowName + suffix; }).join(' '); }; } function renderInputs(props) { var getClassNameStr = getClassNamesStrF(props.name, props.animateFirst, props.pendingRemovalRows, props.addedRows); return props.data.map(function (inputState, row) { return _react2.default.createElement( 'div', { key: name + 'row' + row, className: getClassNameStr(row) }, _react2.default.createElement( _varRow2.default, { row: row, data: props.data, createFieldInputHandler: props.createFieldInputHandler, createRemoveRowHandler: props.createRemoveRowHandler }, props.children ) ); }); } var VarRows = exports.VarRows = function VarRows(props) { return _react2.default.createElement( 'div', null, ' ', renderInputs(props), ' ' ); }; VarRows.propTypes = { createFieldInputHandler: _propTypes2.default.func.isRequired, createRemoveRowHandler: _propTypes2.default.func.isRequired, children: _propTypes2.default.oneOfType([_propTypes2.default.element, _propTypes2.default.arrayOf(_propTypes2.default.element)]).isRequired, data: _propTypes2.default.arrayOf(_propTypes2.default.shape({})).isRequired, pendingRowRemoval: _propTypes2.default.arrayOf(_propTypes2.default.number).isRequired }; exports.default = VarRows;