shradmin
Version:
A frontend Framework for building admin application, using antd and mirrorjs.
60 lines (45 loc) • 1.84 kB
JavaScript
'use strict';
exports.__esModule = true;
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _get = require('lodash/get');
var _get2 = _interopRequireDefault(_get);
var _isFunction = require('lodash/isFunction');
var _isFunction2 = _interopRequireDefault(_isFunction);
var _propTypes = require('prop-types');
var _propTypes2 = _interopRequireDefault(_propTypes);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var SelectField = function SelectField(_ref) {
var source = _ref.source,
_ref$record = _ref.record,
record = _ref$record === undefined ? {} : _ref$record,
elStyle = _ref.elStyle,
choices = _ref.choices,
optionValue = _ref.optionValue,
optionText = _ref.optionText;
var value = (0, _get2.default)(record, source);
var choice = choices.find(function (item) {
return item[optionValue] === value;
});
if (!choice) return null;
var choiceName = _react2.default.isValidElement(optionText) ? _react2.default.cloneElement(optionText, { record: choice }) : (0, _isFunction2.default)(optionText) ? optionText(choice) : choice[optionText];
return _react2.default.createElement(
'span',
{ style: elStyle },
choiceName
);
};
SelectField.PropTypes = {
source: _propTypes2.default.string.isRequired,
elStyle: _propTypes2.default.object,
record: _propTypes2.default.object,
choices: _propTypes2.default.arrayOf(_propTypes2.default.object),
optionText: _propTypes2.default.oneOfType([_propTypes2.default.string, _propTypes2.default.func, _propTypes2.default.element]).isRequired,
optionValue: _propTypes2.default.string.isRequired
};
SelectField.defaultProps = {
optionText: 'name',
optionValue: 'id'
};
exports.default = SelectField;
module.exports = exports['default'];