Generates dynamic forms from JSON.
Use version 2.x.x
Use version 1.x.x
🚧 This is Work in progress. Not recommended to use in production.
npm install @7span/vue-form
<v-form ref="vForm" v-model="values" :config="form.config" :fields="form.fields"></v-form>
Config defines how to process the form. Configuration options are as below
Option | Default | Possible Values | What is does |
---|---|---|---|
defaults | {} | Default configuration for the fields. | |
endpoint | null | Valid URL | An endpoint to process data for CRUD |
An array containing configuration object of the fields of form. The key
of the object will be added as name
of field. Each object can have below options.
Option | Default | Possible Values | What is does |
---|---|---|---|
interface | input | input,choice,select,file,textarea | Renders input elements. choice will render either radio or checkbox . Know more. |
type | text | text,email,radio,checkbox etc. | Based on input , the type can be diffrent. I.e. the input can have email ,text ,url etc. |
label | Camel cased value of key |
String | The label of the field |
placeholder | null |
String | The placeholder. Will be added where supported. |
value | null |
String, Array | The default value to set whilte rendering form. If repeater is set, provide an array of values. |
hide | false |
Boolean | If the field is hidden. |
choices | [] |
Array | Options for radio ,checkbox & select . Know more. |
messages | null |
Object | Know more. |
design | {} |
Object | Know more. |
repeater | null |
Object | If allow to add multiple values to field. Know more. |
before | null |
String | Value to prepend in Field Group |
after | null |
String | Value to append in Field Group |
fields | null |
Object | If interface is set to group , you can provide fields under this which follows same structure as fields prop. This is recursive. |
List of possible interfaces to add into field configuration.
Name | Types | Desc |
---|---|---|
input | text,email,url,[any valid input type] | |
choice | radio, checkbox | |
select | NA | |
file | NA | |
textarea | NA | |
group | NA | You can group fields under one with this. This will recursively create form fields. |
Choices is an array of objects with below keys.
Option | Default | Possible Values | What it does |
---|---|---|---|
label | null |
String |
The display text. |
value | null |
String ,Number |
The value. |
The object contains diffrent messages to show for validation and helper text.
Option | Default | Possible Values | What it does |
---|---|---|---|
desc | null |
String |
A helper message to show below field. |
invalid | null |
String |
A warning message to show when field validation fails. |
valid | null |
String |
A success message to show when field validation is truthy. |
Option | Default | Possible Values | What it does |
---|---|---|---|
col | 12 | Number from 1-12 |
How many cols to occupy in grid. |
grid | Number |
When rendering field choices in radio/checkbox, how many items should be displayed in single row |
Option | Default | Possible Values | What it does |
---|---|---|---|
max | null | Number |
Maximum values to allowed to add. |
min | null | Number |
Minimum values required. |
The change event exposes following values as an object.
key | Type | What it contains |
---|---|---|
changed | Array | An array of changed values. It will only contain multiple values if the fields are grouped. Know more |
values | Object | All the values in current state. |
valuesObj | Object | All the values with metadata in current state. |
The changed
object contains following keys.
- action : What action taken which triggered the change event.
Possible values are:
- input: When the field value is updated.
- child-input: In a case of grouped fields, if the child value is updated, the parent action will be this.
- repeater-add: When a new repeater field is added.
- repeater-remove: When a new repeater field is removed.
- field: Name of the field.
- value: Value of the field.
- valueObj: Value of the field with metadata.
- index: If the field is repeater one, the index of affected repeater item.
- form--start
- form--end
- field--before--{field-name}
- field--before--{field-name}--{index}
- field--after--{field-name}
- field--after--{field-name}--{index}
- field--start--{field-name}
- field--start--{field-name}--${index}
- field--end--{field-name}
- field--end--{field-name}--${index}
- repeater--add
- repeater--remove
You can set the value directly from your component by calling this function.
this.$refs.vForm.setValue({
field: "e_company",
value: "7Span Tech",
index: 1 // Required only if you want to set value at specific index in repeater fields.
});
You can modify the config from your component by calling this function.
this.$refs.vForm.setConfig({
field: "e_company",
key:"after", // The configuration key as provided in fields
value: "#", // The value of the configuration.
index: 1 // Required only if you want to set value at specific index in repeater fields.
});