Zubair React Form Builder help you to build forms with drag and drop you can also inject your own component.
npm i zubair-react-form-builder
import { FormContainer, ToolBox } from 'zubair-react-form-builder';
- custom : Array
- onSave(form) : Function
- updateForm(callback) : Function
- updateOnMount : Boolean
- debug : Boolean
- loader: Boolean // set save button on loading state
// Note OnSave Props also turn on Save Button on <FormContainer />
- custom : Array
You can pass custom components to the form builder
const myCustoms = [
{
container : < ContainerComponent/>,
preview : < PreviewComponent/>,
toolbox : {
title : 'Component',
icon : 'fa fa-user',
name : 'CUSTOM_COM'
},
states : {
toolType: 'CUSTOM_COM',
num1 : 1,
num2 : 2
}
}
]
class App extends React.Component {
render(){
/* Simply pass myCustoms to */
<div className="app"/>
<div className="row"/>
<div className="col-8"/>
<FormContainer
debug={true} // turn on debuging mode
updateOnMount={true} // update on mount
updateForm={this.updateForm}
onSave={this.save}
custom={ myCustoms } />
</div>
<div className="col-8"/>
< ToolBox custom={ myCustoms } />
</div>
</div/>
</div/>
}
save(form){
// you will receive form
console.log(form);
}
updateForm(callback){
// fetch form and set it to callback
let form = axios.......
callback(form)
}
}
-
this.props.changeState(state, this.props.index)
-
this.props.removeField(index)
// on change state
changeValue(stateFor, value){
switch (stateFor){
case "TITLE" :
this.setState( { title : value } )
break;
default:
return;
};
setTimeout(() => {
return this.props.changeState(this.state, this.props.index);
}, 0)
}
this.changeValue('TITLE', e.target.value)} />
// on remove field
this.props.removeField(this.props.index)}>x

