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'>
    {{#each list:i}}
        <p>{{this}}</p>
    {{/each}}
    
    <div class='block'>
        {{#each list:i}}
            <p outro='pause'>{{this}}</p>
        {{/each}}
    </div>
</script>

CSS

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

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

JavaScript

Ractive.transitions.pause = function ( t ) {
    t.animateStyle({ color: 'red' }, { duration: 1 })
        .then( t.complete );
};

var ractive = new Ractive({
    el: 'main',
    template: '#template',
    data: { list: [ 'a', 'b', 'c', 'd' ] }
});

setTimeout( function () {
    ractive.set( 'list', [ 'a', 'b', 'c' ] ).then( function () {
        console.log( 'done' );
    });
    
    // This breaks everything - it prevents the transition
    // on the <p> elements inside from ever completing, and
    // in the process prevents other nodes from detaching
    ractive.el.querySelector( '.block' ).innerHTML = '';
}, 1000 );