Skip to content

Instantly share code, notes, and snippets.

@jesse-spevack
Created January 28, 2017 20:48
Show Gist options
  • Save jesse-spevack/3fd7388af9730990b922386bd2f01618 to your computer and use it in GitHub Desktop.
Save jesse-spevack/3fd7388af9730990b922386bd2f01618 to your computer and use it in GitHub Desktop.
import React, { Component, PropTypes } from 'react';
const TOGGLE_BUTTON_SELECTOR = "toggle-button"
const TOGGLE_LABEL_SELECTOR = "toggle-label"
const DEFAULT_LABEL_TEXT = "Label Text"
const DEFAULT_BUTTON_LEFT_TEXT = "Button Left"
const DEFAULT_BUTTON_RIGHT_TEXT = "Button Right"
class ToggleButton extends Component {
constructor(props) {
super(props);
this.state = { toggleOn: this.props.toggleOn ? this.props.toggleOn : false }
this.handleClick = () => this._handleClick();
}
_handleClick() {
this.setState({ toggleOn: !this.state.toggleOn })
}
render () {
const buttonText = this.props.buttonText
return (
<div onClick={this.handleClick} disabled={this.props.disabled}>
<label className={TOGGLE_LABEL_SELECTOR}>{ this.props.labelText || DEFAULT_LABEL_TEXT }</label>
<button className={TOGGLE_BUTTON_SELECTOR + "-left"}>{ buttonText ? buttonText.left : DEFAULT_BUTTON_LEFT_TEXT }</button>
<button className={TOGGLE_BUTTON_SELECTOR + "-right"}>{ buttonText ? buttonText.right : DEFAULT_BUTTON_RIGHT_TEXT }</button>
</div>
);
}
}
ToggleButton.PropTypes = {
labelText: PropTypes.string,
buttonText: PropTypes.object,
toggleOn: PropTypes.bool,
disabled: PropTypes.bool
};
export default ToggleButton;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment