JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://unpkg.com/marked@0.3.6"></script>
<script src="https://unpkg.com/lodash@4.16.0"></script>
<script src="https://unpkg.com/vue@latest/dist/vue.js"></script>
<div id="app">
<task-list></task-list>
</div>
CSS
html, body, #editor {
margin: 0;
height: 100%;
font-family: 'Helvetica Neue', Arial, sans-serif;
color: #333;
}
textarea, #editor div {
display: inline-block;
width: 49%;
height: 100%;
vertical-align: top;
box-sizing: border-box;
padding: 0 20px;
}
textarea {
border: none;
border-right: 1px solid #ccc;
resize: none;
outline: none;
background-color: #f6f6f6;
font-size: 14px;
font-family: 'Monaco', courier, monospace;
padding: 20px;
}
code {
color: #f66;
}
JavaScript
Vue.component('task-edit', { template: '<p><input v-model="task"></p>'});
Vue.component('task',{
template: '<div class="row"><div class="col-md-8 col-md-offset-2"><slot></slot><button v-on:click="$emit(\'edit\')">Edit</button></div></div>'});
Vue.component('task-list', { template: '<div class="container"><task v-for="(task, index) in tasks" :is="current" v-on:edit="edit">{{ task.name }}</task></div>',
data(){
return {
tasks: [
{ name: 'Foo' },
{ name: 'Bar' }
],
current: 'task'
}
},
}
);
const app = new Vue({
el: '#app',
});