UNPKG

1.15 kBJSXView Raw
1var React = require("react");
2var PropTypes = React.PropTypes;
3var PureRenderMixin = React.addons.PureRenderMixin;
4
5var Dropdown = React.createClass({
6
7 propTypes: {
8 options: PropTypes.arrayOf(PropTypes.shape({
9 value: PropTypes.any.isRequired,
10 content: PropTypes.node
11 })).isRequired,
12 onChange: PropTypes.func.isRequired,
13 className: PropTypes.string
14 },
15
16 _handleSelect: function(e) {
17 var val = e.target.value;
18 this.props.onChange(val);
19 },
20
21 render: function() {
22 var dropdownOptions = this.props.options.map(function(option, i) {
23 return <DropdownOption
24 value={option.value}
25 content={option.content}
26 key={i}
27 />;
28 });
29 return (
30 <div
31 className={["cb-dropdown", this.props.className].join(" ")}
32 >
33 <select
34 className="cb-dropdown-select"
35 onChange={this._handleSelect}
36 key={this.props.id}
37 value={this.props.value}
38 >
39 {dropdownOptions}
40 </select>
41 </div>
42 )
43 }
44});
45
46var DropdownOption = React.createClass({
47
48 mixins: [ PureRenderMixin ],
49
50 render: function() {
51 return <option value={this.props.value}>{this.props.content}</option>;
52 }
53});
54
55module.exports = Dropdown;
56
\No newline at end of file