1.1.0 • Published 1 month ago

@7span/vue-form v1.1.0

Weekly downloads
13
License
-
Repository
-
Last release
1 month ago

vue-form

Generates dynamic forms from JSON.

Vue 3

Use version 2.x.x

Vue 2

Use version 1.x.x

🚧 This is Work in progress. Not recommended to use in production.

📦 Installation

npm install @7span/vue-form

✨ Usage

<v-form ref="vForm" v-model="values" :config="form.config" :fields="form.fields"></v-form>

⚙️ Props

1. config

Config defines how to process the form. Configuration options are as below

OptionDefaultPossible ValuesWhat is does
defaults{}Default configuration for the fields.
endpointnullValid URLAn endpoint to process data for CRUD

2. fields

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.

OptionDefaultPossible ValuesWhat is does
interfaceinputinput,choice,select,file,textareaRenders input elements. choice will render either radio or checkbox. Know more.
typetexttext,email,radio,checkbox etc.Based on input, the type can be diffrent. I.e. the input can have email,text,url etc.
labelCamel cased value of keyStringThe label of the field
placeholdernullStringThe placeholder. Will be added where supported.
valuenullString, ArrayThe default value to set whilte rendering form. If repeater is set, provide an array of values.
hidefalseBooleanIf the field is hidden.
choices[]ArrayOptions for radio,checkbox & select. Know more.
messagesnullObjectKnow more.
design{}ObjectKnow more.
repeaternullObjectIf allow to add multiple values to field. Know more.
beforenullStringValue to prepend in Field Group
afternullStringValue to append in Field Group
fieldsnullObjectIf interface is set to group, you can provide fields under this which follows same structure as fields prop. This is recursive.

interfaces

List of possible interfaces to add into field configuration.

NameTypesDesc
inputtext,email,url,any valid input type
choiceradio, checkbox
selectNA
fileNA
textareaNA
groupNAYou can group fields under one with this. This will recursively create form fields.

choices

Choices is an array of objects with below keys.

OptionDefaultPossible ValuesWhat it does
labelnullStringThe display text.
valuenullString ,NumberThe value.

messages

The object contains diffrent messages to show for validation and helper text.

OptionDefaultPossible ValuesWhat it does
descnullStringA helper message to show below field.
invalidnullStringA warning message to show when field validation fails.
validnullStringA success message to show when field validation is truthy.

design

OptionDefaultPossible ValuesWhat it does
col12Number from 1-12How many cols to occupy in grid.
gridNumberWhen rendering field choices in radio/checkbox, how many items should be displayed in single row

repeater

OptionDefaultPossible ValuesWhat it does
maxnullNumberMaximum values to allowed to add.
minnullNumberMinimum values required.

🏁 Events

1. change

The change event exposes following values as an object.

keyTypeWhat it contains
changedArrayAn array of changed values. It will only contain multiple values if the fields are grouped. Know more
valuesObjectAll the values in current state.
valuesObjObjectAll the values with metadata in current state.

changed

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.

🕳 Slots

  • 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

⚔️ Methods

1. setValue

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.
});

2. setConfig

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.
});
1.1.0

1 month ago

2.0.1

7 months ago

2.0.0

7 months ago

1.0.5

1 year ago

1.0.4

2 years ago

1.0.3

2 years ago

1.0.2

2 years ago

1.0.0-beta.1

2 years ago

0.1.0-beta.12

4 years ago

0.1.0-beta.11

4 years ago

0.1.0-beta.10

5 years ago

0.1.0-beta.9

5 years ago

0.1.0-beta.8

5 years ago

0.1.0-beta.7

5 years ago

0.1.0-beta.6

5 years ago

0.1.0-beta.5

5 years ago

0.1.0-beta.3

5 years ago

0.1.0-beta.2

5 years ago

0.1.0-beta.1

5 years ago

0.1.0-beta.0

5 years ago