A simple form-builder with drag & drop to help you deal your own form. Less code in development and your site will be more generic, configurable.
Advantages:
- Less code in development
- Wide range of APIs
- Easily to maintain, update later
- Easily to config your form (drag & drop, control settings)
- Extensibility (Extend-able): Help you to import your own Control
- Validation & Custom Control Validation Supported.
- ...
Fully documentation in this Repo's Wiki. Check it out!
Give this repo a ⭐ (star) if you actually like this and will use it for your development/production :D! Thank you!
The library is built & ready for production but if you meet any bugs or issues, feel free to open!
Demo Online: http://vue-form-builder.sethphat.com
Demo Project: https://github.com/sethsandaru/demo-vue-form-builder
Here: https://vue-form-builder.herokuapp.com/
Hey guys, seem likes I have ignored the project for nearly 1 year. Still a lot of problems left to make the form become better, like:
- The library itself is too highly depended from many libraries. This cost us a lot (including the final bundle size, too heavy)
- Multilingual - One of the must-have feature.
- Better approaches in the library, implement most of the good features from Vue, less depend on JQuery,...
- Extendable (yes it extendable, but still, not perfect enough)
- ...
I got a plan to build a new version which is v2.0.0, to rebuild the library and make it better.
You can send me an email to: vue-form-builder@sethphat.com
, I would love to receive your feedback, ideas for the next version of Vue Form Builder. Together for the better.
- A new structural for the Vue-Form-Builder. New codebase, new everything new.
- Still Vue, Still 2.5+
- Less dependencies
- Style Injection - not only Bootstrap, you can use any CSS Framework as you want, even your own CSS Styling.
- More controls:
- Date Range (Start date - End date)
- File Upload (Interact with RestAPI)
- ... (your ideas here)
- ...
Current latest version of the Vue Form Builder: 1.4.1-rc1.
Updated/Features:
- Update dependencies that got security problem.
- Placeholder for Sortable (drag n' drop section, row, control to order)
- Update some CSS, JS
- Javascript
- VueJS 2.x
- Webpack
- JQuery/JQuery UI
- Bootstrap 4
- ...
Note: From the version 1.2.0 to above, I don't import bootstrap 4 stylesheet into the bundle, you should include your own bootstrap 4 stylesheet in order to get both of GUI & Template working normally.
For more information please visit this Repo's wiki, thanks :D!
Run this command to install:
npm i v-form-builder --save
NPMJS: https://www.npmjs.com/package/v-form-builder
Notes:
- For the best experience, please install the latest version!
- Please don't install the old version below v1.1.1. Thank you!
1/ Import as global component
import FormBuilder from 'v-form-builder';
Vue.component('FormBuilder', FormBuilder);
2/ Import as single component
import FormBuilder from 'v-form-builder';
export default {
components: {FormBuilder}
...
}
Note: you should have your own Bootstrap 4 stylesheet imported inside your project in order to use the Form Builder normally.
<template>
<div>
// form builder template
<form-builder type="template"></form-builder>
// form builder gui
<form-builder type="gui" :form="yourConfigFormObject"></form-builder>
</div>
</template>
Binding options:
- type (String):
- Form Config (Template): template
- Form GUI: gui
- form (Object) - for Form GUI Only, where you passing the configuration data and the Form Builder will build the form by your configuration data.
You can use v-model in Form Builder Template, it'll return to you the form configuration data that you're configurated (object) and also render the old configuration and let you edit/update that configuration.
<template>
<div>
<form-builder type="template" v-model="formData"></form-builder>
</div>
</template>
The form config data would look like this:
{
sections: [...],
layout: "...",
_uniqueId: "..."
}
Ideally, you need to convert that Object to JSON string and then save it in your database :D
You can use V-Model to get/set values from your built form.
<template>
<div>
<form-builder type="gui" :form="formData" v-model="formValues"></form-builder>
</div>
</template>
The form values data would look like this:
{
section_key: {
control_name_1: "data",
control_name_2: 123,
...
},
...
}
Please visit this Repo's Wiki.
- Version 1.4.0:
- Refactored, the code is more easy to view & read.
- Able to extend a custom control.
- Fix some minor bugs.
- Version 1.3.0:
- Milestone 3 released.
- Able to validate the form.
- Able to styling the label (bold, italic, underline).
- Able to set control label position for Section (horizontal or vertical)
- Fix some bugs
- Constraints for some Hooks
- APIs for Validate
- Version 1.2.1:
- Fix some minor bugs.
- Version 1.2.0:
- Hooks are available now for both Template & GUI.
- More options for controls, like:
- Select: Ajax data source (URL)
- Date Picker: date format
- Time Picker: time format
- Update control:
- Number Control to work properly with the decimal places.
- Time Picker: change to another time picker with a better APIs + options.
- Fix a problem that make the Date Picker icon didn't show.
- Stop import Bootstrap 4 CSS into the bundle.
- Version 1.1.1:
- First Release of Vue Form Builder
- Able to config form & render form by config data.
- Get/set value for both GUI & Template.
If you really like this project & want to contribute a little for the development. You can buy me a coffee. Thank you very much for your supporting <3.
Copyright © 2018 by Seth Phat aka Phat Tran Minh!