Vue Mixin util to help create data entry component
$ npm install vue-dataform-mixin
- Create a component that will contains the HTML form (will call this a form component)
- Import
vue-dataform-mixinand register it in themixinssection - Apply
onSave,onCancel,onDeletemethods to the form component - Add additional data and methods to the form component as necessary
- Register the form component to main Vue instance
- Pass following data via props (these props are defined in
vue-dataform-mixin)data-- the data objectkeys-- the properties inside the data object that you want to map into form componentvalidate-callback-- the validation callback function defined in main Vue instance to be called by form component before the data are saved or updateddelete-button-- set totrueif you want to show a delete button
-
Required:
true -
Expect:
Array -
Usage:
Array of property names to be mapped to
inputobject inside the data form.[ 'prop_a', 'prop_b', 'prop_c' ]If the property has nested object, use the following format:
[ 'prop_a', 'prop_b', { name: 'prop_c', value: ['prop_c_1', 'prop_c_2'] } ]The nested object can also contain nested object as well.
-
Expect:
Object -
Default:
{} -
Usage:
The data which its value will be used to populate in the data form. This data will not be modified until the changes have been committed (saved) by the user.
-
Expect:
String -
Default:
'' -
Usage:
Name of the callback to be called for the data validation. If no callback is defined, the validation will always return
true(which is considered as passed)
-
Expect:
Boolean -
Default:
false -
Usage:
Whether to display the
deletebutton or not?Note: You need to make sure that the delete button will be conditionally displayed in your template and the its click event is bound to
onDelete()method.
-
Default:
null -
Description:
This is where the values in the
dataprop will be copied to and used inside data form.Note: Only the values of property given in the
keysprop will be copied, the rests are ignored.
-
Default:
null -
Description:
If it is not
null, it will contain all the validation errors of the fileds not passing validation.Note: Normally, this property can be set via
dataform:set-errorsevent, which will internally callsetErrors()method.
-
Default:
false -
Description:
Its value will be automatically set by
setData()method. If the pass-in data is null, it will be set totrueto indicate a new data. Otherwise, its value will be set tofalse.
-
Default:
dataform: -
Description:
The prefix string that should be applied to all event emitted by the data form.
In order for the data form to work, you will need to correctly bind these methods to the corresponding buttons.
-
Usage:
<template> ... <button @click="onSave">Save</button> ... </template>
-
Description:
When triggered, it will do the following, in order:
- Check if the data in the form has been modified (e.g. different from the original values). If not, the
dataform:no-changedevent will be dispatched and exit. - Call the
beforeValidatehook. - Call the validation callback (if defined). If the validation fails, then exit.
- Call the
afterValidatehook. - Copy all the changes from
inputto a new object to be passed during dispatching. - Call the
transformhook with the modified data. - Dispatch the
dataform:storedordataform:updatedevent depending on the valid ofisNewand passing the modified data.
- Check if the data in the form has been modified (e.g. different from the original values). If not, the
-
Usage:
<template> ... <button @click="onCancel">Cancel</button> ... </template>
-
Description:
When triggered, it will dispatch the
dataform:cancelledevent, then exit.
-
Usage:
<template> ... <button @click="onDelete">Delete</button> ... </template>
-
Description:
When triggered, it will dispatch the
dataform:request-deleteevent, then exit.
-
Argument:
{Object} data -
Description:
This method will copy the values of the provided
keysprop in the givendatato theinputobject. It will also set the value ofisNewproperty depending on the content of the given argument.This method will call
beforeSetDatahook before it starts setting (copying) data to internalinputvariable and it will callafterSetDatahook just before it exits the method. See Hooks section below.Note: This method is called when
dataform:set-dataevent was received. You should usedataform:set-dataevent when possible.
-
Returns:
boolean -
Description:
Return
trueif the data in the data form has been modified to be different than the original value. Otherwise, returnfalse.
-
Argument:
{String} name (optional) -
Returns:
boolean -
Description:
Check if there is any error from validation when called without an argument.
Or, check if there is any error for the given field.
-
Argument:
{String} name -
Returns:
{Array}-- array of error messages of the given fieldnameor empty array if there is no error -
Description:
Get the array of validation error message(s) for the given field.
-
Argument:
{Array} errors -
Description:
Set the internal
errorsproperty to the given object.Note: This method is called when
dataform:set-errorsevent was received. You should usedataform:set-errorsevent when possible.
-
Description:
Set the internal
errorsproperty tonull.
-
Description:
Set all input inside data form to empty string
''.
-
Argument:
none -
Description:
This hook allows you to do something before
setDatabegins to do anything -
Usage: You can define this method in your main component that uses this mixin.
-
Argument:
none -
Description:
This hook allows you to do something after
setDatahas been finished. For example, you may need to call a method to calculate some values right after the data has been set toinputvariable. -
Usage:
You can define this method in your main component that uses this mixin.
-
Argument:
none -
Description:
This hook will be called before the validation callback is invoked.
-
Usage:
You can define this method in your main component that uses this mixin.
-
Argument:
none -
Description:
This hook will be called right after the validation has been called
-
Usage:
You can define this method in your main component that uses this mixin.
-
Argument:
{Object}data -
Description:
This hook allows you to further transform the pass-in data before it is dispatching to the parent instance.
-
Usage:
You can define this method in your main component that uses this mixin.
Note: You must always return the data back to the caller
-
Arguments:
{String} value{KeyboardEvent} event
-
Usage:
<template> ... <input type="text" v-model="input.price" id="inputPrice" @keypress="numericInputFilter(input.price, $event)"> ... </template>
-
Description:
Filter the input to accept only numeric digits, decimal, and minus sign.
-
Argument:
{Object} data -
Type: Listening
-
Description:
You can use this event to set the data to be used in the form.
-
Type: Listening
-
Description:
Use this event to clear all the input value in the data form.
-
Argument:
{Array} errors -
Type: Listening
-
Description:
Use this event to send the validation errors to the data form component.
-
Type: Listening
-
Description:
Use this event to clear all the errors by setting
errorsobject tonull.
# install dependencies
npm install
# serve with hot reload at localhost:8080
npm run dev
# build for production with minification
npm run build
# run unit tests
npm run unit
# run all tests
npm testvue-dataform-mixin is open-sourced software licensed under the MIT license.