@bootstrap-styled/ra-ui
Version:
UI components for react-admin
169 lines (131 loc) • 7.27 kB
JavaScript
"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;