var BS, Icon, MultiSelect, React, classnames;
React = require('react');
BS = require('react-bootstrap');
classnames = require('classnames');
Icon = require('./icon');
MultiSelect = React.createClass({displayName: "MultiSelect",
propTypes: {
title: React.PropTypes.string.isRequired,
className: React.PropTypes.string,
selections: React.PropTypes.arrayOf(React.PropTypes.shape({
id: React.PropTypes.string,
title: React.PropTypes.string,
selected: React.PropTypes.bool
})).isRequired,
onSelect: React.PropTypes.func
},
onSelect: function(selection) {
var base;
return typeof (base = this.props).onSelect === "function" ? base.onSelect(_.findWhere(this.props.selections, {
id: selection
})) : void 0;
},
renderMenuSelection: function(selection) {
return React.createElement(BS.MenuItem, {
"key": selection.id,
"eventKey": selection.id
}, React.createElement(Icon, {
"type": (selection.selected ? 'check-square-o' : 'square-o')
}), selection.title);
},
render: function() {
var classNames, selection;
classNames = classnames('multi-select', this.props.className);
return React.createElement(BS.DropdownButton, {
"navItem": this.props.navItem,
"className": classNames,
"onSelect": this.onSelect,
"title": this.props.title
}, (function() {
var i, len, ref, results;
ref = this.props.selections;
results = [];
for (i = 0, len = ref.length; i < len; i++) {
selection = ref[i];
results.push(this.renderMenuSelection(selection));
}
return results;
}).call(this));
}
});
module.exports = MultiSelect;
|