Skip to content

mthemark/vue-form-builder

 
 

Repository files navigation

vue-form-builder

npm version GitHub license img HitCount img

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

Big Announcement

Preview v2.0.0

Here: https://vue-form-builder.herokuapp.com/

Announcement

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.

New Plan - v2.0.0

  • 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 version

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

Technologies/Libraries using

  • 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.

Form Builder Structure

  • Template: is where you can config/create/edit your own form. template_config

  • GUI: is where the form will be built by your configuration. gui_config

For more information please visit this Repo's wiki, thanks :D!

How to install?

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!

How to implement?

Import into your project

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.

Usage

<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.

V-Model for Form Builder Template

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

V-Model for Form Builder GUI

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,
        ...
    },
    ...
}

APIs

Please visit this Repo's Wiki.

Release notes

  • 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.

Supporting the project

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.

Buy Me A Coffee

Copyright © 2018 by Seth Phat aka Phat Tran Minh!

About

Vue form builder with drag & drop

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Vue 75.1%
  • JavaScript 24.5%
  • Other 0.4%