JSFiddle - React, Tailwind, and code Playground

by rich_harris

HTML

<script src="http://cdn.ractivejs.org/edge/ractive.js"></script>
<main></main>

<script id='template' type='text/ractive'>
    {{#if foo}}
        <p>foo is true</p>
    {{/if}}
    
    {{#if bar}}
        <widget/>
    {{/if}}
</script>

CSS

body {
    font-family: 'Helvetica Neue', arial, sans-serif;
    font-weight: 200;
    color: #353535;
}

h1, h2, h3, h4, h5, h6 {
    font-weight: 200;
}

.error {
    color: #d00;
    font-family: monospace;
}

JavaScript

Ractive.components.widget = Ractive.extend({
    template: '<p>and so is bar</p>'
});

var ractive = new Ractive({
    el: 'main',
    template: '#template',
    oninit: function () {
        // we can observe specific values...
        this.observe( 'foo', function ( foo ) {
            if ( foo ) {
                this.find( 'p' ).style.color = 'red';
            }
        }, { defer: true }); // `defer: true` means 'wait until after the DOM is updated'
        
        
        // ...or we can listen for child 'render' events
        this.on( 'widget.render', function () {
            this.findComponent( 'widget' ).find( 'p' ).style.color = 'blue';
        });
    }
});

setTimeout( function () {
    ractive.set( 'foo', true );
}, 1000 );

setTimeout( function () {
    ractive.set( 'bar', true );
}, 2000 );