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.
willaengine/resources/js/Global/components/FormLoader/Wrapper.vue

77 lines
1.5 KiB

5 years ago
<template>
5 years ago
<div class="row">
5 years ago
<element-factory
5 years ago
v-for="element in elements"
5 years ago
:element="element"
5 years ago
:values="formValues"
5 years ago
:key="element.id"
5 years ago
@input="changeValue"
5 years ago
></element-factory>
</div>
5 years ago
</template>
<script>
5 years ago
import Factory from "./FactoryPattern";
5 years ago
export default {
5 years ago
components: {
"element-factory": Factory
},
props: {
5 years ago
elements: {
5 years ago
required: true,
default: {},
5 years ago
},
5 years ago
value:{
required: false,
default:() => ({}),
type: Object
5 years ago
}
5 years ago
},
methods: {
setDefaultValue(elements, values = {}) {
for (const key in elements) {
if (elements.hasOwnProperty(key)) {
5 years ago
if (elements[key].type == "we-form") {
values[
elements[key].slug
] = this.setDefaultValue(elements[key].children);
5 years ago
} else {
5 years ago
values[elements[key].slug] = "";
5 years ago
}
}
5 years ago
}
return values;
5 years ago
},
changeValue() {
this.$emit('input', this.formValues);
5 years ago
}
5 years ago
},
computed: {
formValues:{
get() {
5 years ago
if (!this.value || Object.keys(this.value).length == 0) {
5 years ago
return this.setDefaultValue(this.elements);
}
5 years ago
return this.value;
5 years ago
},
5 years ago
set(value) {
this.$emit('input', value);
5 years ago
}
}
},
5 years ago
// created() {
// var vm = this;
// setInterval(function() {
// console.log('setInterval-values', vm.values);
// console.log('setInterval-formValues', vm.formValues);
// },3000);
// },
// watch: {
// values(v) {
// console.log('v',v);
// },
// formValues(v) {
// console.log('fv',v);
// }
// },
5 years ago
};
5 years ago
</script>