UNPKG

1.26 kBJSXView Raw
1/*
2 * <Toggle
3 * className=string
4 * label=required string
5 * onToggle=func
6 * toggled=bool
7 * >
8 */
9
10var React = require("react");
11require("react/addons");
12var PropTypes = React.PropTypes;
13
14var Toggle = React.createClass({
15
16 mixins: [ React.addons.PureRenderMixin ],
17
18 propTypes: {
19 className: PropTypes.string,
20 label: PropTypes.string.isRequired,
21 onToggle: PropTypes.func,
22 toggled: PropTypes.bool
23 },
24
25 getDefaultProps: function() {
26 return {
27 toggled: false
28 };
29 },
30
31 getInitialState: function() {
32 return {
33 toggled: this.props.toggled ||
34 false
35 };
36 },
37
38 handleClick: function() {
39 this.setState({ toggled: !this.state.toggled }, function() {
40 if (this.props.onToggle) {
41 this.props.onToggle(this.state.toggled);
42 }
43 });
44 },
45
46 render: function() {
47 var toggleClass = this.state.toggled ? 'toggled' : '';
48 return (
49 <div className={["cb-toggle", toggleClass, this.props.className].join(" ")} onClick={this.handleClick}>
50 <div className="cb-toggle-container"></div>
51 <div className="cb-toggle-switch"></div>
52 <input
53 checked={this.state.toggled}
54 readOnly={true}
55 type="checkbox"
56 name={this.props.name}
57 />
58 <label>{this.props.label}</label>
59 </div>
60 );
61 }
62});
63
64module.exports = Toggle;