1 |
|
2 |
|
3 | var React = require("react");
|
4 | require("react/addons");
|
5 | var cx = React.addons.classSet;
|
6 | var PropTypes = React.PropTypes;
|
7 |
|
8 | var Button = require('./Button.jsx');
|
9 |
|
10 | var 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 |
|
49 | module.exports = ButtonGroup;
|