44 lines
928 B
Vue
44 lines
928 B
Vue
|
<template>
|
||
|
<component :is="component" :id :name class="w-full" />
|
||
|
</template>
|
||
|
|
||
|
<script>
|
||
|
import * as PrimeVue from 'primevue/primevue';
|
||
|
|
||
|
export default {
|
||
|
name: 'DynamicFormControl',
|
||
|
props: {
|
||
|
as: {
|
||
|
type: String,
|
||
|
default: 'InputText'
|
||
|
},
|
||
|
schema: null,
|
||
|
defaultValue: {
|
||
|
default: ''
|
||
|
}
|
||
|
},
|
||
|
inject: {
|
||
|
$fcDynamicForm: {
|
||
|
default: undefined
|
||
|
},
|
||
|
$fcDynamicFormField: {
|
||
|
default: undefined
|
||
|
}
|
||
|
},
|
||
|
created() {
|
||
|
this.$fcDynamicForm?.addField(this.name, this.schema, this.defaultValue);
|
||
|
},
|
||
|
computed: {
|
||
|
id() {
|
||
|
return this.$fcDynamicFormField?.$props.groupId;
|
||
|
},
|
||
|
name() {
|
||
|
return this.$fcDynamicFormField?.$props.name;
|
||
|
},
|
||
|
component() {
|
||
|
return PrimeVue[this.as] ?? this.as;
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
</script>
|