-
Notifications
You must be signed in to change notification settings - Fork 75
/
index.jsx
39 lines (34 loc) · 830 Bytes
/
index.jsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
'use strict';
let React = require('react');
let p = React.PropTypes;
function radio(name, selectedValue, onChange) {
return React.createClass({
render: function() {
return (
<input
{...this.props}
type="radio"
name={name}
checked={this.props.value === selectedValue}
onChange={onChange.bind(null, this.props.value)} />
);
}
});
}
let RadioGroup = React.createClass({
propTypes: {
name: p.string,
selectedValue: p.oneOfType([p.string, p.number]),
onChange: p.func,
children: p.func,
},
render: function() {
let {name, selectedValue, onChange, children} = this.props;
return (
<div>
{children && children(radio(name, selectedValue, onChange))}
</div>
);
}
});
module.exports = RadioGroup;