JSON Forms Vue Vuetify Renderers

JSON Forms - More Forms. Less Code

Complex Forms in the blink of an eye

JSON Forms eliminates the tedious task of writing fully-featured forms by hand by leveraging the capabilities of JSON, JSON Schema and Javascript.

Vue Vuetify Renderers

This is the JSON Forms Vue Vuetify renderers package which provides a Vuetify based renderer set for JSON Forms Vue. The renderers are in a preview state.

Quick start

Install JSON Forms Core, Vue 3 and Vue 3 Vuetify Renderers.

npm i --save @jsonforms/core @jsonforms/vue @jsonforms/vue-vuetify

Also add the packages to the transpile dependencies in the vite.config.js file:

// https://vitejs.dev/config/
export default defineConfig({
optimizeDeps: {
// Exclude vuetify since it has an issue with vite dev - TypeError: makeVExpansionPanelTextProps is not a function - the makeVExpansionPanelTextProps is used before it is defined
exclude: ['vuetify'],
},

// more config....
});

Use the json-forms component for each form you want to render and hand over the renderer set.

<script>
import { JsonForms } from '@jsonforms/vue';
import { markRaw } from 'vue';

const { extendedVuetifyRenderers } = await import('@jsonforms/vue-vuetify');

const renderers = markRaw([
...extendedVuetifyRenderers,
// here you can add custom renderers
]);

export default defineComponent({
name: 'app',
components: {
JsonForms,
},
data() {
return {
renderers: Object.freeze(renderers),
data,
schema,
uischema,
};
},
methods: {
onChange(event) {
this.data = event.data;
},
},
});
</script>

<template>
<json-forms
:data="data"
:schema="schema"
:uischema="uischema"
:renderers="renderers"
@change="onChange"
/>
</template>

<style>
@import '@jsonforms/vue-vuetify/lib/jsonforms-vue-vuetify.css';
</style>

In your vuetify creation specify the icons used

Material Design Icons (mdi)

import { mdi, aliases as mdiAliases } from 'vuetify/iconsets/mdi';
import { createVuetify } from 'vuetify';

import { mdiIconAliases } from '@jsonforms/vue-vuetify';
import '@mdi/font/css/materialdesignicons.css';

createVuetify({
icons: {
defaultSet: 'mdi',
sets: {
mdi,
},
aliases: { ...mdiAliases, ...mdiIconAliases };,
},
});

Font Awesome (fa)

import { fa, aliases as faAliases } from 'vuetify/iconsets/fa';
import { createVuetify } from 'vuetify';

import { faIconAliases } from '@jsonforms/vue-vuetify';
import '@fortawesome/fontawesome-free/css/all.css';

createVuetify({
icons: {
defaultSet: 'fa',
sets: {
fa,
},
aliases: { ...faAliases, ...faIconAliases };,
},
});

If note done yet, please install Vuetify for Vue.

For more information on how JSON Forms can be configured, please see the README of @jsonforms/vue.

License

The JSONForms project is licensed under the MIT License. See the LICENSE file for more information.