react-sm-select
Version:
React Multi/Single Select Component
80 lines (66 loc) • 2.25 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Value = undefined;
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _consts = require('../../consts');
var _Counter = require('./Counter');
var _DefValue = require('./DefValue');
var _DefTag = require('./DefTag');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var Value = exports.Value = function Value(_ref) {
var mode = _ref.mode,
options = _ref.options,
value = _ref.value,
_ref$Value = _ref.Value,
Value = _ref$Value === undefined ? _DefValue.DefValue : _ref$Value,
_ref$Tag = _ref.Tag,
Tag = _ref$Tag === undefined ? _DefTag.DefTag : _ref$Tag,
valuePlaceholder = _ref.valuePlaceholder,
allSelectedLabel = _ref.allSelectedLabel,
counterLabel = _ref.counterLabel,
onRemove = _ref.onRemove,
removableTag = _ref.removableTag;
var isMode = function isMode(expected) {
return mode === expected;
};
if (Value === _DefValue.DefValue && !isMode(_consts.MODE.TAGS) && !isMode(_consts.MODE.COUNTER) && value.length === options.length) return _react2.default.createElement(
'span',
null,
allSelectedLabel
);
if (!value.length) return _react2.default.createElement(
'span',
{ className: 'Header__valuePlaceholder' },
valuePlaceholder
);
if (isMode(_consts.MODE.TAGS)) {
var labels = value.map(function (val) {
return options.find(function (opt) {
return opt.value === val;
}).label;
});
return _react2.default.createElement(
'div',
{ className: 'Header__tags' },
labels.map(function (label, index) {
return _react2.default.createElement(Tag, {
key: index,
label: label,
index: index,
onTagRemove: onRemove,
removableTag: removableTag
});
})
);
}
if (isMode(_consts.MODE.COUNTER)) return _react2.default.createElement(_Counter.Counter, {
value: value,
options: options,
counterLabel: counterLabel,
valuePlaceholder: valuePlaceholder
});
return _react2.default.createElement(Value, { options: options, value: value });
};