UNPKG

@bootstrap-styled/ra-ui

Version:
169 lines (131 loc) 7.27 kB
"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.SimpleFormIterator = void 0; var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = _interopRequireWildcard(require("react")); var _propTypes = _interopRequireDefault(require("prop-types")); var _compose = _interopRequireDefault(require("recompose/compose")); var _reactTransitionGroup = require("react-transition-group"); var _get = _interopRequireDefault(require("lodash/get")); var _FormHelperText = _interopRequireDefault(require("@material-ui/core/FormHelperText")); var _Ul = _interopRequireDefault(require("@bootstrap-styled/v4/lib/Ul")); var _Li = _interopRequireDefault(require("@bootstrap-styled/v4/lib/Li")); var _P = _interopRequireDefault(require("@bootstrap-styled/v4/lib/P")); var _Button = _interopRequireDefault(require("@bootstrap-styled/v4/lib/Button")); var _RemoveCircleOutline = _interopRequireDefault(require("@material-ui/icons/RemoveCircleOutline")); var _AddCircleOutline = _interopRequireDefault(require("@material-ui/icons/AddCircleOutline")); var _raCore = require("ra-core"); var _classnames = _interopRequireDefault(require("classnames")); var _FormInput = _interopRequireDefault(require("./FormInput")); var SimpleFormIterator = function (_Component) { (0, _inherits2.default)(SimpleFormIterator, _Component); function SimpleFormIterator(props) { var _this; (0, _classCallCheck2.default)(this, SimpleFormIterator); _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(SimpleFormIterator).call(this, props)); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "removeField", function (index) { return function () { var fields = _this.props.fields; _this.ids.splice(index, 1); fields.remove(index); }; }); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "disableRemoveField", function (record, disableRemove) { if (typeof disableRemove === 'boolean') { return disableRemove; } return disableRemove && disableRemove(record); }); (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "addField", function () { var fields = _this.props.fields; _this.ids.push(_this.nextId++); fields.push({}); }); _this.nextId = props.fields.length ? props.fields.length : props.defaultValue ? props.defaultValue.length : 0; _this.ids = _this.nextId > 0 ? Array.from(Array(_this.nextId).keys()) : []; return _this; } (0, _createClass2.default)(SimpleFormIterator, [{ key: "render", value: function render() { var _this2 = this; var _this$props = this.props, basePath = _this$props.basePath, className = _this$props.className, children = _this$props.children, fields = _this$props.fields, _this$props$meta = _this$props.meta, error = _this$props$meta.error, submitFailed = _this$props$meta.submitFailed, record = _this$props.record, resource = _this$props.resource, source = _this$props.source, translate = _this$props.translate, disableAdd = _this$props.disableAdd, disableRemove = _this$props.disableRemove; var records = (0, _get.default)(record, source); return fields ? _react.default.createElement(_Ul.default, { className: className }, submitFailed && error && _react.default.createElement(_FormHelperText.default, { error: true }, error), _react.default.createElement(_reactTransitionGroup.TransitionGroup, null, fields.map(function (member, index) { return _react.default.createElement(_reactTransitionGroup.CSSTransition, { key: _this2.ids[index], timeout: 500, classNames: "fade" }, _react.default.createElement(_Li.default, null, _react.default.createElement(_P.default, null, index + 1), _react.default.createElement("section", null, _react.Children.map(children, function (input, index2) { return (0, _react.isValidElement)(input) ? _react.default.createElement(_FormInput.default, { basePath: input.props.basePath || basePath, input: (0, _react.cloneElement)(input, { source: input.props.source ? "".concat(member, ".").concat(input.props.source) : member, index: input.props.source ? undefined : index2, label: input.props.label || input.props.source }), record: records && records[index] || {}, resource: resource }) : null; })), !_this2.disableRemoveField(records && records[index] || {}, disableRemove) && _react.default.createElement("span", null, _react.default.createElement(_Button.default, { className: (0, _classnames.default)('button-remove', "button-remove-".concat(source, "-").concat(index)), size: "small", onClick: _this2.removeField(index) }, _react.default.createElement(_RemoveCircleOutline.default, null), translate('ra.action.remove'))))); })), !disableAdd && _react.default.createElement(_Li.default, null, _react.default.createElement("span", null, _react.default.createElement(_Button.default, { className: (0, _classnames.default)('button-add', "button-add-".concat(source)), size: "small", onClick: this.addField }, _react.default.createElement(_AddCircleOutline.default, null), translate('ra.action.add'))))) : null; } }]); return SimpleFormIterator; }(_react.Component); exports.SimpleFormIterator = SimpleFormIterator; SimpleFormIterator.defaultProps = { disableAdd: false, disableRemove: false }; SimpleFormIterator.propTypes = { defaultValue: _propTypes.default.any, basePath: _propTypes.default.string, children: _propTypes.default.node, className: _propTypes.default.string, fields: _propTypes.default.object, meta: _propTypes.default.object, record: _propTypes.default.object, source: _propTypes.default.string, resource: _propTypes.default.string, translate: _propTypes.default.func, disableAdd: _propTypes.default.bool, disableRemove: _propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.bool]) }; var _default = (0, _compose.default)(_raCore.translate)(SimpleFormIterator); exports.default = _default;