material-ui form generated from json
npm install --save material-jsonschema-form
import * as React from 'react';
import Form from 'material-jsonschema-form';
class Example extends React.Component {
constructor(props) {
super(props);
this.state = {
formJson: {
formName: 'test',
forms: [
{
title: 'A registration form1',
description: 'A simple form example1.',
properties: [
{ name: 'projectId', component: 'text', label: 'Team Name' },
{ name: 'appName', component: 'text', label: 'Application Name' }
]
},
{
title: 'A registration form2',
description: 'A simple form example2.',
properties: [
{ name: 'teamName', component: 'text', label: 'Team Name' },
{ name: 'division', component: 'text', label: 'Division' },
{
name: 'pay',
component: 'select',
label: 'Pay Method',
elements: [{ label: 'label1', value: 'value1' }, { label: 'label2', value: 'value2' }]
}
]
},
{
title: 'A table form',
description: 'A simple form example2.',
isCard: false,
properties: [
{
title: 'table 1',
name: 'testTable',
component: 'table',
rows: [
{
name: 'sel3',
label: 'Dummy Select',
component: 'select',
elements: [{ label: 'label1', value: 'value1' }, { label: 'label2', value: 'value2' }]
},
{ name: 'title1', component: 'text', label: 'Team 1' },
{ name: 'title2', component: 'text', label: 'Team 2' }
]
},
{
title: 'table 2',
name: 'testTable2',
component: 'table',
rows: [
{
name: 'projNam',
label: 'select',
component: 'select',
elements: [{ label: 'label1', value: 'value1' }, { label: 'label2', value: 'value2' }]
},
{ name: 'title3', component: 'text', label: 'Title 1' },
{ name: 'title4', component: 'text', label: 'Title 2' }
]
}
]
}
]
}
};
}
onSubmit = values => {
window.alert(JSON.stringify(values, null, 2));
};
render() {
return <Form schema={this.state.formJson} onSubmit={this.onSubmit} initialValues={{}}/>;
}
}
Inside the project folder, you can run some built-in commands:
Runs the library in development mode. Open http://localhost:3000 to view it in the browser.
Runs the test watcher in an interactive mode.
Builds the library for production to the build
folder.
It correctly bundles React in production mode and optimizes the build for the best performance.
- Basic Implementation
- Validations
- Auto suggest
- File uploads
- Custom styles
MIT © nadunindunil