JSFiddle - React, Tailwind, and code Playground

by Joshua Koudys

HTML

<script src="http://fb.me/react-with-addons-0.12.0.js"></script>
<script src="http://fb.me/JSXTransformer-0.12.0.js"></script>
<script src="http://fb.me/react-js-fiddle-integration.js"></script>

JavaScript 1.7

var Hello = React.createClass({
    mixins: [React.addons.LinkedStateMixin],
    getInitialState: function () {
        return {
            checkboxes: {
                available: false,
                forSale: false,
                bogo: false
            }
        };
    },
    saveStuff: function() {
        console.log(JSON.stringify(this.state));
    },
    render: function () {
        return <div> Hello <ManyCheckBoxes valueLink={this.linkState('checkboxes')} /><Availability valueLink={this.linkState('checkboxes')} /><p><a onClick={this.saveStuff}>Save</a></p></div>;
    }
});

var ManyCheckBoxes = React.createClass({
    mixins: [React.addons.LinkedStateMixin],

    handleCheck: function(propname) {
        var checkboxes = this.props.valueLink.value;
        var valueLink = this.props.valueLink;

        return {
            value: checkboxes[propname],
            requestChange: function (value) {
                checkboxes[propname] = value;
                valueLink.requestChange(checkboxes);
            }
         };
    },
        
    render: function() {
        var valueLink = this.props.valueLink;
        return (
            <fieldset>
                <ul>
                    <li>
                        <label><input type="checkbox" checkedLink={this.handleCheck('available')} /> Available</label>
                    </li>
                    <li>
                        <label><input type="checkbox" checkedLink={this.handleCheck('forSale')} /> For Sale</label>
                    </li>
                    <li>
                        <label><input type="checkbox" checkedLink={this.handleCheck('bogo')} /> Buy one, get one free</label>
                    </li>
                </ul>
            </fieldset>
        );
    }
});

var Availability = React.createClass({
    mixins: [React.addons.LinkedStateMixin],
    render: function() {
        var valueLink = this.props.valueLink;
        var message = valueLink.value.available ? <p>It's...