Vue
HTML
<script src="https://cdn.jsdelivr.net/npm/vue@2.7.8/dist/vue.js"></script>
<div id="app">
<div v-for="(item, index) in options">
<label :for="'l' + item.name">{{ item.name }}</label>
<input @click="selected = item.id" type="radio" :id="'l' + item.name" name="internalFinish" v-model="item.selected" :value="true">
<div v-if="selected == item.id">
<p>Accordion Open</p>
</div>
</div>
</div>
CSS
body {
background: #20262E;
padding: 20px;
font-family: Helvetica;
}
#app {
background: #fff;
border-radius: 4px;
padding: 20px;
transition: all 0.2s;
}
li {
margin: 8px 0;
}
h2 {
font-weight: bold;
margin-bottom: 15px;
}
del {
color: rgba(0, 0, 0, 0.3);
}
Vue
new Vue({
el: "#app",
data: {
options : [
{
name : 'Plasterboard with Skim Finish',
range : false,
selected : false,
selectedValue : 0,
id: 1
},
{
name : 'Plasterboard on Dabs',
range : { min : 0, max : 100},
selected : false,
selectedValue : 0,
id: 2
},
{
name : 'Plaster Finish',
range : { min : 60, max : 100},
selected : false,
selectedValue : 0,
id: 3
},
],
selected: 0
}
})