react-select
Version:
A Select control built with and for ReactJS
59 lines (49 loc) • 1.59 kB
JavaScript
;
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var _classnames = require('classnames');
var _classnames2 = _interopRequireDefault(_classnames);
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
function menuRenderer(_ref) {
var focusedOption = _ref.focusedOption;
var instancePrefix = _ref.instancePrefix;
var labelKey = _ref.labelKey;
var onFocus = _ref.onFocus;
var onSelect = _ref.onSelect;
var optionClassName = _ref.optionClassName;
var optionComponent = _ref.optionComponent;
var optionRenderer = _ref.optionRenderer;
var options = _ref.options;
var valueArray = _ref.valueArray;
var valueKey = _ref.valueKey;
var Option = optionComponent;
return options.map(function (option, i) {
var isSelected = valueArray && valueArray.indexOf(option) > -1;
var isFocused = option === focusedOption;
var optionRef = isFocused ? 'focused' : null;
var optionClass = (0, _classnames2['default'])(optionClassName, {
'Select-option': true,
'is-selected': isSelected,
'is-focused': isFocused,
'is-disabled': option.disabled
});
return _react2['default'].createElement(
Option,
{
className: optionClass,
instancePrefix: instancePrefix,
isDisabled: option.disabled,
isFocused: isFocused,
isSelected: isSelected,
key: 'option-' + i + '-' + option[valueKey],
onFocus: onFocus,
onSelect: onSelect,
option: option,
optionIndex: i,
ref: optionRef
},
optionRenderer(option, i)
);
});
}
module.exports = menuRenderer;