UNPKG

@bootstrap-styled/ra-ui

Version:
108 lines (89 loc) 3.61 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.ArrayField = void 0; var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread")); var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties")); 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 _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _react = require("react"); var _propTypes = _interopRequireDefault(require("prop-types")); var _get = _interopRequireDefault(require("lodash/get")); var _pure = _interopRequireDefault(require("recompose/pure")); var initialState = { data: {}, ids: [] }; var ArrayField = function (_Component) { (0, _inherits2.default)(ArrayField, _Component); function ArrayField(props) { var _this; (0, _classCallCheck2.default)(this, ArrayField); _this = (0, _possibleConstructorReturn2.default)(this, (0, _getPrototypeOf2.default)(ArrayField).call(this, props)); _this.state = props.record ? _this.getDataAndIds(props.record, props.source) : initialState; return _this; } (0, _createClass2.default)(ArrayField, [{ key: "componentWillReceiveProps", value: function componentWillReceiveProps(nextProps, prevProps) { if (nextProps.record !== prevProps.record) { this.setState(this.getDataAndIds(nextProps.record, nextProps.source)); } } }, { key: "getDataAndIds", value: function getDataAndIds(record, source) { var list = (0, _get.default)(record, source); return list ? { data: list.reduce(function (prev, item) { prev[JSON.stringify(item)] = item; return prev; }, {}), ids: list.map(JSON.stringify) } : initialState; } }, { key: "render", value: function render() { var _this$props = this.props, addLabel = _this$props.addLabel, basePath = _this$props.basePath, children = _this$props.children, record = _this$props.record, source = _this$props.source, rest = (0, _objectWithoutProperties2.default)(_this$props, ["addLabel", "basePath", "children", "record", "source"]); var _this$state = this.state, ids = _this$state.ids, data = _this$state.data; return (0, _react.cloneElement)(_react.Children.only(children), (0, _objectSpread2.default)({ ids: ids, data: data, isLoading: false, basePath: basePath, currentSort: {} }, rest)); } }]); return ArrayField; }(_react.Component); exports.ArrayField = ArrayField; ArrayField.propTypes = { addLabel: _propTypes.default.bool, basePath: _propTypes.default.string, children: _propTypes.default.element.isRequired, record: _propTypes.default.object, resource: _propTypes.default.string, sortBy: _propTypes.default.string, source: _propTypes.default.string }; var EnhancedArrayField = (0, _pure.default)(ArrayField); EnhancedArrayField.defaultProps = { addLabel: true }; var _default = EnhancedArrayField; exports.default = _default;