@bootstrap-styled/ra-ui
Version:
UI components for react-admin
138 lines (115 loc) • 5.07 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.ReferenceFieldView = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _react = _interopRequireWildcard(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _classnames = _interopRequireDefault(require("classnames"));
var _raCore = require("ra-core");
var _LinearProgress = _interopRequireDefault(require("../layout/LinearProgress"));
var _Link = _interopRequireDefault(require("../Link"));
var _sanitizeRestProps = _interopRequireDefault(require("./sanitizeRestProps"));
var stopPropagation = function stopPropagation(e) {
return e.stopPropagation();
};
var ReferenceFieldView = function ReferenceFieldView(_ref) {
var allowEmpty = _ref.allowEmpty,
basePath = _ref.basePath,
children = _ref.children,
className = _ref.className,
isLoading = _ref.isLoading,
record = _ref.record,
reference = _ref.reference,
referenceRecord = _ref.referenceRecord,
resource = _ref.resource,
resourceLinkPath = _ref.resourceLinkPath,
source = _ref.source,
_ref$translateChoice = _ref.translateChoice,
translateChoice = _ref$translateChoice === void 0 ? false : _ref$translateChoice,
rest = (0, _objectWithoutProperties2.default)(_ref, ["allowEmpty", "basePath", "children", "className", "isLoading", "record", "reference", "referenceRecord", "resource", "resourceLinkPath", "source", "translateChoice"]);
if (isLoading) {
return _react.default.createElement(_LinearProgress.default, null);
}
if (resourceLinkPath) {
return _react.default.createElement(_Link.default, {
to: resourceLinkPath,
className: className,
onClick: stopPropagation
}, _react.default.cloneElement(_react.Children.only(children), (0, _objectSpread2.default)({
className: (0, _classnames.default)(children.props.className),
record: referenceRecord,
resource: reference,
allowEmpty: allowEmpty,
basePath: basePath,
translateChoice: translateChoice
}, (0, _sanitizeRestProps.default)(rest))));
}
return _react.default.cloneElement(_react.Children.only(children), (0, _objectSpread2.default)({
record: referenceRecord,
resource: reference,
allowEmpty: allowEmpty,
basePath: basePath,
translateChoice: translateChoice
}, (0, _sanitizeRestProps.default)(rest)));
};
exports.ReferenceFieldView = ReferenceFieldView;
ReferenceFieldView.propTypes = {
allowEmpty: _propTypes.default.bool,
basePath: _propTypes.default.string,
children: _propTypes.default.element,
className: _propTypes.default.string,
isLoading: _propTypes.default.bool,
record: _propTypes.default.object,
reference: _propTypes.default.string,
referenceRecord: _propTypes.default.object,
resource: _propTypes.default.string,
resourceLinkPath: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.bool]),
source: _propTypes.default.string,
translateChoice: _propTypes.default.bool
};
var ReferenceField = function ReferenceField(_ref2) {
var children = _ref2.children,
props = (0, _objectWithoutProperties2.default)(_ref2, ["children"]);
if (_react.default.Children.count(children) !== 1) {
throw new Error('<ReferenceField> only accepts a single child');
}
return _react.default.createElement(_raCore.ReferenceFieldController, props, function (controllerProps) {
return _react.default.createElement(ReferenceFieldView, (0, _extends2.default)({}, props, (0, _objectSpread2.default)({
children: children
}, controllerProps)));
});
};
ReferenceField.propTypes = {
addLabel: _propTypes.default.bool,
allowEmpty: _propTypes.default.bool,
basePath: _propTypes.default.string,
children: _propTypes.default.element.isRequired,
className: _propTypes.default.string,
cellClassName: _propTypes.default.string,
headerClassName: _propTypes.default.string,
label: _propTypes.default.string,
record: _propTypes.default.object,
reference: _propTypes.default.string.isRequired,
resource: _propTypes.default.string,
sortBy: _propTypes.default.string,
source: _propTypes.default.string.isRequired,
translateChoice: _propTypes.default.func,
linkType: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.bool])
};
ReferenceField.defaultProps = {
allowEmpty: false,
linkType: 'edit',
record: {}
};
var EnhancedReferenceField = ReferenceField;
EnhancedReferenceField.defaultProps = {
addLabel: true
};
var _default = EnhancedReferenceField;
exports.default = _default;