JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://unpkg.com/[email protected]"></script>
<script src="https://unpkg.com/[email protected]"></script>
<script src="https://unpkg.com/vue@latest/dist/vue.js"></script>
<div id="wrapper">
<wrapped-input v-model="inputValue"></wrapped-input>
<pre>value: {{ inputValue }}</pre>
</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
new Vue({
el: '#wrapper',
data: {
inputValue: '',
},
components: {
wrappedInput: {
props: { value: {} },
template: `<input type="text" v-bind="$props" @input="$emit('input', $event.target.value)" placeholder="search"/>)
`
},
}
})