Coder Social home page Coder Social logo

vue.js-dynamic-form-component's Introduction

Vue.js Dynamic Form Component

A Vue.js component for generating forms from a json map

On going project for personal and professional use, feel free to clone and improve it!

Demo

Usage

Import the component then use it passing the form map as a prop:

<dynamic-form :form="form"></dynamic-form>

Form Structure Sample

For now the form.json maps to input type text, submit, search, password, checkbox and radio. With the latest two able to be grouped.

[

    {"type": "text", "id": "text",  "value": "A text input", "label": "A text input"},

    {"type": "password", "id": "password", "value": "mypass", "label": "password"},

    {"type": "submit", "id": "submit", "value": "button", "label": ""},

    {"type": "search", "id": "search", "value": "A search input", "label": "A search input"},

    {"type": "checkbox", "id": "checkbox",  "value": "checkbox", "label": "A single checkbox"},

    {"type": "radio", "id": "radio",  "value": "radio", "label": "A single radio"},

    {
        "type": "select", "id": "select", "value":"", "label": "Dropdown",

        "label": "Dorpdown",

        "options": [

            {"name": "Option 1", "value": "Value1"},
            {"name": "Option 2", "value": "Value2"},
            {"name": "Option 3", "value": "Value3"}

        ]
    },

    {
        "type": "group",

        "elements": [

            { "type": "radio", "id": "radioA", "name": "radioGroup", "value": "radioA", "label": "Radio A"},
            { "type": "radio", "id": "radioB", "name": "radioGroup", "value": "radioB", "label": "Radio B"},
            { "type": "radio", "id": "radioC", "name": "radioGroup", "value": "radioC", "label": "Radio C"}

        ]
    },

    {
        "type": "group",

        "elements": [

            { "type": "checkbox", "id": "checkboxA", "name": "checkboxGroup", "value": "checkboxA", "label": "Checkbox A"},
            { "type": "checkbox", "id": "checkboxB", "name": "checkboxGroup", "value": "checkboxB", "label": "Checkbox B"},
            { "type": "checkbox", "id": "checkboxC", "name": "checkboxGroup", "value": "checkboxC", "label": "Checkbox C"}

        ]
    }
]

TODO

  • Add hints and/or validation messages
  • Add submit callback option (?)
  • Style it (?)

vue.js-dynamic-form-component's People

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.