@bootstrap-styled/ra-ui
Version:
UI components for react-admin
202 lines (180 loc) • 7.29 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = exports.ReferenceArrayInput = exports.ReferenceArrayInputView = 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 = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _compose = _interopRequireDefault(require("recompose/compose"));
var _raCore = require("ra-core");
var _LinearProgress = _interopRequireDefault(require("../layout/LinearProgress"));
var _Labeled = _interopRequireDefault(require("./Labeled"));
var _ReferenceError = _interopRequireDefault(require("./ReferenceError"));
var sanitizeRestProps = function sanitizeRestProps(_ref) {
var alwaysOn = _ref.alwaysOn,
basePath = _ref.basePath,
component = _ref.component,
crudGetMany = _ref.crudGetMany,
crudGetMatching = _ref.crudGetMatching,
defaultValue = _ref.defaultValue,
filterToQuery = _ref.filterToQuery,
formClassName = _ref.formClassName,
initializeForm = _ref.initializeForm,
input = _ref.input,
isRequired = _ref.isRequired,
label = _ref.label,
locale = _ref.locale,
meta = _ref.meta,
optionText = _ref.optionText,
optionValue = _ref.optionValue,
perPage = _ref.perPage,
record = _ref.record,
referenceSource = _ref.referenceSource,
resource = _ref.resource,
allowEmpty = _ref.allowEmpty,
source = _ref.source,
textAlign = _ref.textAlign,
translate = _ref.translate,
translateChoice = _ref.translateChoice,
rest = (0, _objectWithoutProperties2.default)(_ref, ["alwaysOn", "basePath", "component", "crudGetMany", "crudGetMatching", "defaultValue", "filterToQuery", "formClassName", "initializeForm", "input", "isRequired", "label", "locale", "meta", "optionText", "optionValue", "perPage", "record", "referenceSource", "resource", "allowEmpty", "source", "textAlign", "translate", "translateChoice"]);
return rest;
};
var ReferenceArrayInputView = function ReferenceArrayInputView(_ref2) {
var allowEmpty = _ref2.allowEmpty,
basePath = _ref2.basePath,
children = _ref2.children,
choices = _ref2.choices,
className = _ref2.className,
error = _ref2.error,
input = _ref2.input,
isLoading = _ref2.isLoading,
isRequired = _ref2.isRequired,
label = _ref2.label,
meta = _ref2.meta,
onChange = _ref2.onChange,
options = _ref2.options,
resource = _ref2.resource,
setFilter = _ref2.setFilter,
setPagination = _ref2.setPagination,
setSort = _ref2.setSort,
source = _ref2.source,
translate = _ref2.translate,
warning = _ref2.warning,
rest = (0, _objectWithoutProperties2.default)(_ref2, ["allowEmpty", "basePath", "children", "choices", "className", "error", "input", "isLoading", "isRequired", "label", "meta", "onChange", "options", "resource", "setFilter", "setPagination", "setSort", "source", "translate", "warning"]);
var translatedLabel = translate(label || "resources.".concat(resource, ".fields.").concat(source), {
_: label
});
if (isLoading) {
return _react.default.createElement(_Labeled.default, {
label: translatedLabel,
source: source,
resource: resource,
className: className,
isRequired: isRequired
}, _react.default.createElement(_LinearProgress.default, null));
}
if (error) {
return _react.default.createElement(_ReferenceError.default, {
label: translatedLabel,
error: error
});
}
return _react.default.cloneElement(children, (0, _objectSpread2.default)({
allowEmpty: allowEmpty,
basePath: basePath,
choices: choices,
className: className,
error: error,
input: input,
isRequired: isRequired,
label: translatedLabel,
meta: (0, _objectSpread2.default)({}, meta, {
helperText: warning || false
}),
onChange: onChange,
options: options,
resource: resource,
setFilter: setFilter,
setPagination: setPagination,
setSort: setSort,
source: source,
translateChoice: false,
limitChoicesToValue: true
}, sanitizeRestProps(rest)));
};
exports.ReferenceArrayInputView = ReferenceArrayInputView;
ReferenceArrayInputView.propTypes = {
allowEmpty: _propTypes.default.bool,
basePath: _propTypes.default.string,
children: _propTypes.default.element,
choices: _propTypes.default.array,
className: _propTypes.default.string,
error: _propTypes.default.string,
isLoading: _propTypes.default.bool,
input: _propTypes.default.object.isRequired,
label: _propTypes.default.string,
meta: _propTypes.default.object,
onChange: _propTypes.default.func,
options: _propTypes.default.object,
resource: _propTypes.default.string.isRequired,
setFilter: _propTypes.default.func,
setPagination: _propTypes.default.func,
setSort: _propTypes.default.func,
source: _propTypes.default.string,
translate: _propTypes.default.func.isRequired,
warning: _propTypes.default.string
};
var ReferenceArrayInput = function ReferenceArrayInput(_ref3) {
var children = _ref3.children,
props = (0, _objectWithoutProperties2.default)(_ref3, ["children"]);
if (_react.default.Children.count(children) !== 1) {
throw new Error('<ReferenceArrayInput> only accepts a single child (like <Datagrid>)');
}
return _react.default.createElement(_raCore.ReferenceArrayInputController, props, function (controllerProps) {
return _react.default.createElement(ReferenceArrayInputView, (0, _extends2.default)({}, props, (0, _objectSpread2.default)({
children: children
}, controllerProps)));
});
};
exports.ReferenceArrayInput = ReferenceArrayInput;
ReferenceArrayInput.propTypes = {
allowEmpty: _propTypes.default.bool.isRequired,
basePath: _propTypes.default.string,
children: _propTypes.default.element.isRequired,
className: _propTypes.default.string,
filter: _propTypes.default.object,
filterToQuery: _propTypes.default.func.isRequired,
input: _propTypes.default.object.isRequired,
label: _propTypes.default.string,
meta: _propTypes.default.object,
perPage: _propTypes.default.number,
reference: _propTypes.default.string.isRequired,
resource: _propTypes.default.string.isRequired,
sort: _propTypes.default.shape({
field: _propTypes.default.string,
order: _propTypes.default.oneOf(['ASC', 'DESC'])
}),
source: _propTypes.default.string,
translate: _propTypes.default.func.isRequired
};
ReferenceArrayInput.defaultProps = {
allowEmpty: false,
filter: {},
filterToQuery: function filterToQuery(searchText) {
return {
q: searchText
};
},
perPage: 25,
sort: {
field: 'id',
order: 'DESC'
}
};
var EnhancedReferenceArrayInput = (0, _compose.default)(_raCore.addField, _raCore.translate)(ReferenceArrayInput);
var _default = EnhancedReferenceArrayInput;
exports.default = _default;