@bootstrap-styled/ra-ui
Version:
UI components for react-admin
83 lines (70 loc) • 3.11 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = exports.SelectField = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _get = _interopRequireDefault(require("lodash/get"));
var _pure = _interopRequireDefault(require("recompose/pure"));
var _compose = _interopRequireDefault(require("recompose/compose"));
var _raCore = require("ra-core");
var _sanitizeRestProps = _interopRequireDefault(require("./sanitizeRestProps"));
var SelectField = function SelectField(_ref) {
var className = _ref.className,
source = _ref.source,
record = _ref.record,
choices = _ref.choices,
optionValue = _ref.optionValue,
optionText = _ref.optionText,
translate = _ref.translate,
translateChoice = _ref.translateChoice,
rest = (0, _objectWithoutProperties2.default)(_ref, ["className", "source", "record", "choices", "optionValue", "optionText", "translate", "translateChoice"]);
var value = (0, _get.default)(record, source);
var choice = choices.find(function (c) {
return c[optionValue] === value;
});
if (!choice) return null;
var choiceName = _react.default.isValidElement(optionText) ? _react.default.cloneElement(optionText, {
record: choice
}) : typeof optionText === 'function' ? optionText(choice) : choice[optionText];
return _react.default.createElement("span", (0, _extends2.default)({
className: className
}, (0, _sanitizeRestProps.default)(rest)), translateChoice ? translate(choiceName, {
_: choiceName
}) : choiceName);
};
exports.SelectField = SelectField;
SelectField.propTypes = {
addLabel: _propTypes.default.bool,
basePath: _propTypes.default.string,
className: _propTypes.default.string,
cellClassName: _propTypes.default.string,
headerClassName: _propTypes.default.string,
choices: _propTypes.default.arrayOf(_propTypes.default.object),
label: _propTypes.default.string,
optionText: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.func, _propTypes.default.element]).isRequired,
optionValue: _propTypes.default.string.isRequired,
resource: _propTypes.default.string,
record: _propTypes.default.object,
sortBy: _propTypes.default.string,
source: _propTypes.default.string.isRequired,
translate: _propTypes.default.func.isRequired,
translateChoice: _propTypes.default.bool.isRequired
};
SelectField.defaultProps = {
record: {},
optionText: 'name',
optionValue: 'id',
translateChoice: true
};
var enhance = (0, _compose.default)(_pure.default, _raCore.translate);
var EnhancedSelectField = enhance(SelectField);
EnhancedSelectField.defaultProps = {
addLabel: true
};
var _default = EnhancedSelectField;
exports.default = _default;