0.4.3 • Published 5 years ago
vue-coe-validator v0.4.3
Install
yarn add vue-coe-validator
Include Plugin
import Vue from 'vue'
import { validator } from 'vue-coe-validator'
Vue.use(validator)
Include Mixin (required only on components that need validation)
import { formSetup } from 'vue-coe-validator'
mixins: [ formSetup ]
Pay attention:
Be careful not to create a state with the name: validations and messages.
These names are reserved for the library and overwriting them may compromise their behavior.
How to use
<template>
<section>
<form name="form1">
<c-input
name="input1"
:validation="$hasError('input1')"
v-model="form1.input1"
/>
<c-input
name="input2"
:validation="$hasError('input2')"
v-model="form1.input2"
/>
<c-input
name="input3"
:validation="$hasError('input3')"
v-model="form1.input3"
/>
</form>
<form name="form2">
<c-input
name="input1"
:validation="$hasError('input1', 'form2')"
v-model="form2.input1"
/>
</form>
</section>
</template>
<script>
import { formSetup } from 'vue-coe-validator'
export default {
mixins: [ formSetup ],
data () {
return {
form1: { input1: '', input2: '22' },
form2: { input1: '33' }
}
},
validation: {
form1: {
input1: {
required: true,
alphabetic: true
},
input2: {
required: true,
pattern: /^[A-Z0-9_'%=+!`#~$*?^{}&|-]+([.][A-Z0-9_'%=+!`#~$*?^{}&|-]+)*@[A-Z0-9-]+(\.[A-Z0-9-]+)+$/i
},
input3: {
required: true
}
},
form2: {
input1: {
required: true,
alpha: true
}
}
},
messages: {
form1: {
input1: {
required: 'não pode ser vazio!',
alphabetic: 'tá errado, é alphabetic!'
},
input2: {
required: 'preenche tudo!',
pattern: 'precisa ser e-mail!'
}
},
form2: {
input1: {
required: 'tá vazio, não pode!'
}
}
}
}
</script>
You can also define validations with directives
<c-input
name="name"
:validation="$hasError('name')"
v-validator="{ required: true }"
v-model="form1.name"
/>
Or programmatically, using $validator.add
methods: {
addField () {
// add new field
this.form1 = {
...this.form1,
coe: 'mané'
}
// create validation for new field
const validations = {
coe: { required: true }
}
// set validation for new field
this.$validator.add(validations, 'form1')
}
}
Rules
Name | required | About |
---|---|---|
form | true | set an name for the scope of the form |
input | true | name the input with the tag name and its respective form value |
Mixin methods
Name | Params | About |
---|---|---|
$hasError | (inputName[str], formName[str]) | returns a boolean |
*formName: required only when you have more than one form
Validator methods
Name | Params | About |
---|---|---|
add | (validations[obj], formName[str]) | set validation for new field |
touch | (inputName[str], formName[str]) | touches a field (isTouched = true) |
resetField | (formName[str]) | resets a field |
resetForm | (formName[str]) | resets a form |
validateField | (formName[str]) | touches a field and checks if it is valid |
validateForm | (formName[str]) | touch the form fields and check if it is valid |
isFormValid | (formName[str]) | promise that returns a boolean |
*formName: required only when you have more than one form
Customize validation messages globally
import { validator } from 'vue-coe-validator'
Vue.use(validator, {
messages: {
required: 'must be filled',
alpha: 'must be alpha'
}
})
Set validate on blur
import { validator } from 'vue-coe-validator'
Vue.use(validator, {
validateOnBlur: true // default is false
})
Validations
{
alphabetic: true
}
{
alpha: true
}
{
pattern: /^[A-Z0-9_'%=+!`#~$*?^{}&|-]+([.][A-Z0-9_'%=+!`#~$*?^{}&|-]+)*@[A-Z0-9-]+(\.[A-Z0-9-]+)+$/i
}
{
numeric: true
}
{
required: true
}
{
custom: [
(value) => value === '123',
(value) => typeof value === 'string'
]
}
{
customAsync: [
value => new Promise(resolve => setTimeout(() => {
resolve(value === 'viniazvd@gmail.com')
}, 2000)),
value => new Promise(resolve => setTimeout(() => {
resolve(typeof value === 'string')
}, 3000))
]
}
0.4.3
5 years ago
0.4.2
6 years ago
0.4.1
6 years ago
0.4.0
6 years ago
0.3.9
6 years ago
0.3.8
6 years ago
0.3.7
6 years ago
0.3.6
6 years ago
0.3.5
6 years ago
0.3.4
6 years ago
0.3.3
6 years ago
0.3.2
6 years ago
0.3.1
6 years ago
0.3.0
6 years ago
0.2.9
6 years ago
0.2.8
6 years ago
0.2.6
6 years ago
0.2.4
6 years ago
0.2.3
6 years ago
0.2.2
6 years ago
0.2.1
6 years ago
0.2.0
6 years ago
0.1.9
6 years ago
0.1.8
6 years ago
0.1.7
6 years ago
0.1.6
6 years ago
0.1.5
6 years ago
0.1.3
6 years ago
0.1.2
6 years ago
0.1.1
6 years ago
0.1.0
6 years ago