The Fusebit Monaco jsonforms package enables you to easily integrate a monaco code editor to react with jsonforms.
npm i @fusebit/monaco-jsonforms
In raw HTML:
<script src="https://cdn.fusebit.io/fusebit/js/fusebit-form/latest/jsonforms-core.js"></script>
<script src="https://cdn.fusebit.io/fusebit/js/fusebit-form/latest/jsonforms-react.js"></script>
<script src="https://cdn.fusebit.io/fusebit/js/fusebit-form/latest/jsonforms-material.js"></script>
<script src="https://unpkg.com/@fusebit/monaco-jsonforms@latest/dist/cjs/index.js"></script>
...
<JSONFormsReact.JsonForms
renderers={[
...JSONFormsMaterial.materialRenderers,
MonacoJSONForms.MonacoEditorControl,
]}
...
/>
Use it in JSONForms as a custom render by importing the controls and adding them to your JSONForms renderers
import { JsonForms } from '@jsonforms/react';
import { MonacoEditorControl } from '@fusebit/monaco-jsonforms';
return <JsonForms {...props} cells={materialCells} renderers={[...materialRenderers, MonacoEditorControl]} />;
For schema.json
:
{
"type": "object",
"properties": {
"mappingCode": {
"type": "string",
"title": "Transformation JavaScript function",
"isExpandable": false,
"language": "javascript"
}
}
}
Notes:
the isExpandable
flag allows for the editor to vertically expand to fit the code supplied.
the language
flag allows for the editor to change it's language. If it's undefined, it will default to javascript.
For uischema.json
:
{
"type": "CodeBlock",
"scope": "#/properties/mappingCode",
"label": "Customer Transform"
}
npm install && npm run-script build