JSFiddle - React, Tailwind, and code Playground
by vikikamath
HTML
<div id = 'main'></div>
<script type="text/ractive" id="init">
<div>Getting started</div>
</script>
<script type="text/ractive" id="single">
This is showing component created at {{now}}
</script>
<script type="text/ractive" id="root">
{{#tabs}}
<input type='radio' name='{{selection}}' value='{{.}}'>{{.}}
{{/tabs}}
<br>
<div>
{{>dynamicPartial}}
<button on-click="addOne">Add A component</button>
</div>
</script>
JavaScript
var mapper = {
Acomponent: Ractive.extend({
template: '#single'
})
};
var r = new Ractive({
el: '#main',
template: '#root',
partials: {
dynamicPartial: function() {
return "<" + this.get('selection') +">"
}
},
components: {
init: Ractive.extend({
template: '#init'
}),
dynamic: function() {
return this.components[this.get('selection')];
}
},
data: function() {
return {
'selected': 'init',
'selection': 'init',
'tabs': ['init']
};
},
oninit: function() {
this.observe('selection', function(){
this.reset();
}, { init: false});
this.on('addOne', function(){
var now = ''+ Date.now();
this.components[now] = new mapper['Acomponent']({
data: {
now: now
}
});
this.push('tabs', now);
}.bind(this));
}
})