You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
<template>
|
|
|
|
<v-flex :class="element.width">
|
|
|
|
<component v-bind:is="element.type" :values="values" :element="element" @input="changeValue" ></component>
|
|
|
|
</v-flex>
|
|
|
|
</template>
|
|
|
|
<script>
|
|
|
|
import Vue from 'vue'
|
|
|
|
|
|
|
|
const requireElement = require.context('./Elements', true, /\.vue$/);
|
|
|
|
requireElement.keys().forEach(fileName => {
|
|
|
|
// Replace ./ and .vue
|
|
|
|
const elementName = fileName.replace(/(\.\/|\.vue)/g, '')
|
|
|
|
Vue.component(elementName,
|
|
|
|
() => import(`./Elements/${elementName}.vue`)
|
|
|
|
)
|
|
|
|
});
|
|
|
|
|
|
|
|
export default {
|
|
|
|
props:{
|
|
|
|
element:{
|
|
|
|
type: Object,
|
|
|
|
required: true
|
|
|
|
},
|
|
|
|
values: {
|
|
|
|
required: false,
|
|
|
|
type: Object,
|
|
|
|
}
|
|
|
|
},
|
|
|
|
methods:{
|
|
|
|
changeValue() {
|
|
|
|
this.$emit('input', this.values)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
</script>
|