Hi,
My goal is to build a form generator. I cannot detect a value change on an “enum” type field. It works for other types of fields. Here is a piece of code:
<template>
<json-forms
:data="data"
:renderers="renderers"
:schema="schema"
:uischema="uischema"
@change="onChange"
/>
</template>
<script lang="ts">
import { defineComponent, toRaw } from "vue";
import { JsonForms, type JsonFormsChangeEvent } from "@jsonforms/vue";
import { defaultStyles, mergeStyles, vuetifyRenderers } from "@jsonforms/vue-vuetify";
// const myStyles = mergeStyles(defaultStyles, { control: { label: "mylabel" } });
const renderers = [
...vuetifyRenderers,
];
const schema = {
"type" : "object",
"properties": {
"formbuilder": {
"type": "array",
"title": "Ajouter un champ",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"field": {
"type": "string",
"enum": ['string', 'textarea', 'date', 'checkbox', 'select']
},
"required": {
"type": "boolean"
},
}
}
}
}
};
const uischema = {
"type": "VerticalLayout",
"elements": [
{
"type": "Control",
"scope": "#/properties/formbuilder",
"options": {
"showSortButtons" : true,
"elementLabelProp": "name",
"detail": {
"type": "HorizontalLayout",
"elements": [
{
"type": "Control",
"scope": "#/properties/name"
},
{
"type": "Control",
"scope": "#/properties/field"
},
{
"type": "Control",
"scope": "#/properties/required"
}
]
}
}
}
]
};
export default defineComponent({
name: "App",
components: {
JsonForms,
},
data() {
return {
// freeze renderers for performance gains
renderers: Object.freeze(renderers),
data: {},
schema,
uischema,
};
},
methods: {
onChange(event: JsonFormsChangeEvent) {
this.data = event.data;
console.log(toRaw(this.data));
},
},
});
</script>
Thank you in advance for the time you will take regarding my problem