vuejs-dynamic-forms
v1.1.2
Published
A simple Vue.js dynamic-forms component. Supports creating a dyanmic forms with a pretty design using Bootstrap classes
Downloads
8
Maintainers
Readme
Dynamic Forms
A Dynamic Forms Generator Vue component. Compatible with Vue 2.x
Demo
To view a demo online: https://bishoyromany.github.io/vuejs-dynamic-forms/demo
Install
npm i vuejs-dynamic-forms --save
import vueDynamicForms from 'vuejs-dynamic-forms';
export default {
// ...
components: {
vueDynamicForms
}
// ...
}
Or use directly from a CDN
<div id="app">
<vuejsDynamicForms></vuejsDynamicForms>
</div>
<script src="https://unpkg.com/vue"></script>
<script src="https://unpkg.com/vuejs-dynamic-forms"></script>
<script>
const app = new Vue({
el: '#app',
components: {
vuejsDynamicForms
}
})
</script>
Usage
<vueDynamicForms></vueDynamicForms>
Demo Source
<template>
<div id="Demo">
<h3 class="toggleMode" @click="toggleDarkMode">Toggle Dark Mode</h3>
<DynamicForms v-model="formData" :title="title" :form="form" :values="values" :theme="theme" :button="button" />
<h3 class="title">Form Result</h3>
<pre>
<code>{{formData}}</code>
</pre>
</div>
</template>
<script>
import DynamicForms from '../plugins/dynamicForms'
const state = {
date1: new Date()
}
export default {
name: 'demo',
components: {
DynamicForms
},
data () {
return {
title : 'My title with <strong>HTML</strong>',
form : [
{
name : 'Name',
placeholder : 'Please Write Your Name...',
class : 'form-control',
column : 'name',
type : 'text',
value : 'test',
},
{
name : 'Text Area',
placeholder : 'Please Write Your Name...',
class : 'form-control',
column : 'text',
type : 'textarea',
value : 'Text Area',
},
{
name : 'Editor',
class : 'form-control',
column : 'editor',
type : 'editor',
value : 'Text Area',
},
{
name : 'Tags',
class : 'form-control',
type : 'tag',
column : 'tags',
subColumn : 'tag',
autocomplete : ['text' , 'and data' , 1,2, 'and three' , 'etcutra'],
placeholder : 'Write your tags',
addOnlyFromAutocomplete : false,
},
{
name : 'Select One User',
items : [
{
name : 'User 1',
id : 1
},
{
name : 'User 2',
id : 2
}
],
show : 'name',
value : 'id',
type : 'selectbox',
column : 'user',
placeholder : 'Please Select Your Users'
},
{
name : 'Select Multiple Users',
items : [
{
name : 'User 1',
id : 1
},
{
name : 'User 2',
id : 2
},
{
name : 'User 3',
id : 3
}
],
show : 'name',
value : 'id',
column : 'users',
type : 'selectbox',
placeholder : 'Please Select Your Users',
multipleSelect : true,
closeOnSelect : false,
},
{
name : "Select Date",
column : 'date',
type : 'date',
placeholder : 'Select Date',
class : 'myClass',
},
{
name : "Select Color",
column : 'color',
type : 'color',
placeholder : 'Select color',
class : 'myClass',
}
],
values : {
name : 'This is my name',
text : 'This is my Text',
editor : '<p>This is my HTML Editor Data</p>',
tags : ['this are my default tags' , 'my subtags'],
},
button : {
title : 'My Button Content',
class : 'btn btn-success btn-block myOtherClasses',
},
formData : {},
theme : 'light',
}
},
methods : {
toggleDarkMode(){
this.theme = this.theme == 'light' ? 'dark' : 'light';
}
}
}
</script>
<style lang="scss" scoped>
#Demo{
max-width: 700px;
margin : 50px auto;
pre{
margin-top : 20px;
background-color : #DDD;
border-radius : 10px;
border : 1px solid #CCC;
color : #333;
padding : 10px;
}
.title{
text-align: center;
margin-top : 20px;
}
.toggleMode{
margin-bottom : 30px;
text-align : center;
cursor : pointer;
}
}
</style>
form prop if passed should be a Array values prop if passed should be object
<script>
var state = {
form: [
{
name : 'The Label Name',
type : 'The input type [text,date,color,selectbox,textarea,checkbox,editor]',
class : 'the input field class',
column : 'the object name where data should be stored',
items : 'a list of items for select box',
show : 'show column for select box',
value : 'the data should be stored from select box'
}
],
values : {
columnName : 'value here',
}
}
</script>
<vueDynamicForms :form="state.form" :values="values"></vueDynamicForms>
You Can Use v-model
<vueDynamicForms v-model="data"></vueDynamicForms>
Emits events
<vueDynamicForms @save="doSomethingInParentComponentFunction">
Available props
| Prop | Type | Default | Description | |-------------------------------|-----------------|-------------|------------------------------------------| | form | Array | Sample Form | The Form Elements | | values | Object |Inputs Values| The Form Inputes Values | | title | String | | The Form Title | | button | Object | | {title,class} of the submit button | | theme | String | dark | Form Theme light/dark |
Events
These events are emitted on actions in the datepicker
| Event | Output | Description | |-------------------|------------|--------------------------------------| | save | Form Data | Form Submited | | update | Form Edited| Form Updated |