Use version 2.x.x
Use version 1.x.x
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.
});