UNPKG

1.19 kBJSXView Raw
1// Button group with an active state based on currently selected button
2
3var React = require("react");
4require("react/addons");
5var cx = React.addons.classSet;
6var PropTypes = React.PropTypes;
7
8var Button = require('./Button.jsx');
9
10var ButtonGroup = React.createClass({
11
12 propTypes: {
13 value: React.PropTypes.any.isRequired,
14 buttons: React.PropTypes.arrayOf(React.PropTypes.shape({
15 value: React.PropTypes.any.isRequired,
16 content: React.PropTypes.node,
17 title: React.PropTypes.string
18 })).isRequired,
19 onClick: React.PropTypes.func.isRequired,
20 className: React.PropTypes.string
21 },
22
23 _handleClick: function(e) {
24 var val = e.target.value;
25 this.props.onClick(val);
26 },
27
28 render: function() {
29 var buttons = this.props.buttons.map(function(button, i) {
30 return (
31 <Button
32 key={"" + i}
33 value={button.value}
34 active={this.props.value === button.value}
35 onClick={this._handleClick}
36 text={button.content || "" + button.value}
37 className="button-group-button"
38 />
39 );
40 }, this);
41 return (
42 <div className={["cb-button-group", this.props.className].join(" ")} >
43 {buttons}
44 </div>
45 )
46 }
47});
48
49module.exports = ButtonGroup;