UNPKG

material-ui

Version:

Material Design UI components built with React

64 lines (52 loc) 1.59 kB
var React = require('react'), Paper = require('./paper.jsx'), Classable = require('./mixins/classable.js'); var RadioButton = React.createClass({ mixins: [Classable], propTypes: { label: React.PropTypes.string, name: React.PropTypes.string, onClick: React.PropTypes.func, value: React.PropTypes.string, defaultChecked: React.PropTypes.bool }, getDefaultProps: function(){ return { defaultChecked: false } }, getInitialState: function() { return { checked: this.props.defaultChecked } }, toggle: function() { var radioButton = this.refs.radioButton.getDOMNode(); this.setState({ checked: !this.state.checked }); radioButton.checked = !radioButton.checked; }, render: function() { var classes = this.getClasses('mui-radio-button'); return ( <div className={classes} onClick={this._onClick}> <div className="mui-radio-button-target"> <input ref="radioButton" type="radio" name={this.props.name} value={this.props.value} defaultChecked={this.props.defaultChecked} /> <div className="mui-radio-button-fill" /> </div> <span className="mui-radio-button-label">{this.props.label}</span> </div> ); }, _onClick: function(e) { var checkedState = this.state.checked; this.toggle(); if (this.props.onClick) this.props.onClick(e, !checkedState); } }); module.exports = RadioButton;