React Base Fiddle (JSX)

Starting point for creating JSFiddles with React. This uses React with Addons.

by tara5

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.13.1/JSXTransformer.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/0.13.1/react-with-addons.js"></script>
<script src="https://facebook.github.io/react/js/jsfiddle-integration.js"></script>
<div id="container">
    <!-- This element's contents will be replaced with your component. -->
</div>

CSS

input.dialogInput {
      display: block;
      padding: 5px;
      margin: 10px;
}

button.button {
    margin-left: 10px;
}

.button2 {
    margin-top: 20px;
}

JavaScript 1.7

var Input = React.createClass({
    getInitialState: function() {
        return {value: ''};
    },
    _onChange: function(event) {
       this.setState({value: event.target.value});
       this.props.callback(this, event.target.value);
    },
    render: function() {
        return <input placeholder={this.props.placeholder} className={this.props.className} onChange={this._onChange}/>;
    }
});

var Button = React.createClass({
    _onClick: function(){
        this.props.callback && this.props.callback(this);
    },
    render: function() {
        return <button className={this.props.className} onClick={this._onClick}>{this.props.title}</button>;
    }
});

var Dialog = React.createClass({
    _onButtonClick: function(button) {
        console.log(arguments);
    },
    _onInputChange: function(input, value) {
        console.log(arguments);
    },
    render: function() {
        var self = this;
        return <div>
            {this.props.inputs.map(function(input) {
                return <Input className={input.className} callback={self._onInputChange} placeholder={input.placeholder}/>
            })}
            {this.props.buttons.map(function(button) {
                return <Button className={button.className} callback={self._onButtonClick} title={button.title}/>
            })}
        </div>;
    }
});
 
 var options = {
    buttons: [
        {
            title: "Login",
            action: "login",
            className: "button"
        },
        {
            title: "Cancel",
            action: "cancel",
            className: "button"
        }
    ],
    inputs: [
        {placeholder: "Login",  className: "dialogInput"}, 
        {placeholder: "Password",  className: "dialogInput"}
    ],
    container: document.getElementById('container')
}

var Wrapper = React.createClass({
    getInitialState: function(){
        return {hideDialog: false}
    },
    hideDialog: function(){
        this.setState({hideDialog:...