@bootstrap-styled/ra-ui
Version:
UI components for react-admin
205 lines (183 loc) • 7.35 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = exports.ReferenceInput = exports.ReferenceInputView = 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 allowEmpty = _ref.allowEmpty,
basePath = _ref.basePath,
choices = _ref.choices,
className = _ref.className,
component = _ref.component,
crudGetMatching = _ref.crudGetMatching,
crudGetOne = _ref.crudGetOne,
defaultValue = _ref.defaultValue,
filter = _ref.filter,
filterToQuery = _ref.filterToQuery,
formClassName = _ref.formClassName,
initializeForm = _ref.initializeForm,
input = _ref.input,
isRequired = _ref.isRequired,
label = _ref.label,
locale = _ref.locale,
meta = _ref.meta,
onChange = _ref.onChange,
optionValue = _ref.optionValue,
optionText = _ref.optionText,
perPage = _ref.perPage,
record = _ref.record,
reference = _ref.reference,
referenceSource = _ref.referenceSource,
resource = _ref.resource,
setFilter = _ref.setFilter,
setPagination = _ref.setPagination,
setSort = _ref.setSort,
sort = _ref.sort,
source = _ref.source,
textAlign = _ref.textAlign,
translate = _ref.translate,
translateChoice = _ref.translateChoice,
validation = _ref.validation,
rest = (0, _objectWithoutProperties2.default)(_ref, ["allowEmpty", "basePath", "choices", "className", "component", "crudGetMatching", "crudGetOne", "defaultValue", "filter", "filterToQuery", "formClassName", "initializeForm", "input", "isRequired", "label", "locale", "meta", "onChange", "optionValue", "optionText", "perPage", "record", "reference", "referenceSource", "resource", "setFilter", "setPagination", "setSort", "sort", "source", "textAlign", "translate", "translateChoice", "validation"]);
return rest;
};
var ReferenceInputView = function ReferenceInputView(_ref2) {
var allowEmpty = _ref2.allowEmpty,
basePath = _ref2.basePath,
children = _ref2.children,
choices = _ref2.choices,
className = _ref2.className,
error = _ref2.error,
input = _ref2.input,
isRequired = _ref2.isRequired,
isLoading = _ref2.isLoading,
label = _ref2.label,
meta = _ref2.meta,
onChange = _ref2.onChange,
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", "isRequired", "isLoading", "label", "meta", "onChange", "resource", "setFilter", "setPagination", "setSort", "source", "translate", "warning"]);
if (isLoading) {
return _react.default.createElement(_Labeled.default, {
label: label,
source: source,
resource: resource,
className: className,
isRequired: isRequired
}, _react.default.createElement(_LinearProgress.default, null));
}
if (error) {
return _react.default.createElement(_ReferenceError.default, {
label: label,
error: error
});
}
return _react.default.cloneElement(children, (0, _objectSpread2.default)({
allowEmpty: allowEmpty,
className: className,
input: input,
isRequired: isRequired,
label: label,
resource: resource,
meta: (0, _objectSpread2.default)({}, meta, {
helperText: warning || false
}),
source: source,
choices: choices,
basePath: basePath,
onChange: onChange,
setFilter: setFilter,
setPagination: setPagination,
setSort: setSort,
translateChoice: false
}, sanitizeRestProps(rest)));
};
exports.ReferenceInputView = ReferenceInputView;
ReferenceInputView.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,
input: _propTypes.default.object.isRequired,
isLoading: _propTypes.default.bool,
label: _propTypes.default.string,
meta: _propTypes.default.object,
onChange: _propTypes.default.func,
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 ReferenceInput = function ReferenceInput(_ref3) {
var children = _ref3.children,
props = (0, _objectWithoutProperties2.default)(_ref3, ["children"]);
if (_react.default.Children.count(children) !== 1) {
throw new Error('<ReferenceInput> only accepts a single child');
}
return _react.default.createElement(_raCore.ReferenceInputController, props, function (controllerProps) {
return _react.default.createElement(ReferenceInputView, (0, _extends2.default)({}, props, (0, _objectSpread2.default)({
children: children
}, controllerProps)));
});
};
exports.ReferenceInput = ReferenceInput;
ReferenceInput.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,
onChange: _propTypes.default.func,
perPage: _propTypes.default.number,
record: _propTypes.default.object,
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
};
ReferenceInput.defaultProps = {
allowEmpty: false,
filter: {},
filterToQuery: function filterToQuery(searchText) {
return {
q: searchText
};
},
perPage: 25,
sort: {
field: 'id',
order: 'DESC'
}
};
var EnhancedReferenceInput = (0, _compose.default)(_raCore.addField, _raCore.translate)(ReferenceInput);
var _default = EnhancedReferenceInput;
exports.default = _default;