vue-form-generator example

https://github.com/icebob/vue-form-generator

HTML

<script src="https://unpkg.com/[email protected]"></script>
<link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/vfg.css">
<script src="https://unpkg.com/[email protected]/dist/vue.min.js"></script>
<div id="app">

  <floatingsidebox
      :model="model"
      :schema="schema"
      :form-options="formOptions"
      title="Demo of vue-form-generator"
      
  ></floatingsidebox>

  <floatingsidebox
      :model="model"
      :schema="schema"
      :form-options="formOptions"
      title="Yay - a second component"
      
  ></floatingsidebox>
</div>

CSS

html {
	font-family: Tahoma;
	font-size: 14px;
}

body {
	font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
	font-size: 14px;
	line-height: 1.42857143;
	color: #333;
}

h1 {
	text-align: center;
	font-size: 36px;
	margin-top: 20px;
	margin-bottom: 10px;
	font-weight: 500;
}

fieldset {
	border: 0;
}

.floating-sidebox {
	margin-bottom: 20px;
	background-color: #fff;
	border: 1px solid transparent;
	border-radius: 4px;
	-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
	box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
	border-color: #ddd;
}

.sidebox-header {
	color: #333;
	background-color: #f5f5f5;
	border-color: #ddd;

	padding: 10px 15px;
	border-bottom: 1px solid transparent;
	border-top-left-radius: 3px;
	border-top-right-radius: 3px;        
}

.sidebox-content {
	padding: 15px;
}				
.sidebox-center {
}

.floating-sidebox-close {
}
.floating-sidebox-overlay {
}

JavaScript

Vue.component('floatingsidebox', {

	template: `
  	<div class="component-wrap">
      <div class="floating-sidebox">
      <div class="sidebox-header">
        <div class="sidebox-center">
          <h1 class="text-center">{{ title }}</h1>
        </div>
      </div>
      <div class="sidebox-content">
        <div class="sidebox-center">
          <!-- This is the actual content. Above container code is common for all forms. -->
          <vue-form-generator :schema="schema" :model="model" :options="formOptions"></vue-form-generator>
        </div>
      </div>
      <div class="floating-sidebox-close" @click="cancel"></div>
    </div>
    <div class="floating-sidebox-overlay"></div>
  </div>
  `,
  
  props: ['model', 'schema', 'formOptions', 'title'],
  
  methods: {
     cancel: function () {
       
     },
  },
    
  components: {
    "vue-form-generator": VueFormGenerator.component
  }

});


var vm = new Vue({
    el: "#app",
    
    data: {
        model: {
            id: 1,
            name: "John Doe",
            email: "[email protected]",
            status: true
        },
        schema: {
            fields: [{
                type: "input",
								inputType: "text",
                label: "Name",
                model: "name",
                readonly: false,
                featured: true,
                required: true,
                disabled: false,
                placeholder: "User's name",
                validator: VueFormGenerator.validators.string
            }, {
                type: "input",
								inputType: "email",
                label: "E-mail",
                model: "email",
                placeholder: "User's e-mail address",
                validator: VueFormGenerator.validators.email
            }, {
               type: "switch",
                label: "Status",
                model: "status",
                multi: true,
                readonly: false,
                featured: false,
                disabled:...