vuelidate-property-decorators
TypeScript icon, indicating that this package has built-in type declarations

1.0.28 • Public • Published

vuelidate property decorators

This library provides a thin wrapper of vuelidate library to simplify its usage with vue-class-component or vue-property-decorator.

Installation

yarn add vuelidate-property-decorators

Usage

Set up vuelidate library as described in (https://vuelidate.netlify.com/#sub-installation).

Then on your component:

Validating single field

To set per-field validation, use the @Validate decorator:

 
import {Validate} from 'vuelidate-property-decorators';
import {required} from 'vuelidate/lib/validators'
 
@Component({})
export default class AddressForm extends Vue {
 
    @Validate({required})
    firstName = '';
 
    @Validate({required})
    lastName = '';
 
}
 

Template (pug in this case) looks the same way as in pure vuelidate:

.form-group
    q-input(v-model="$v.firstName.$model")
    .error(v-if="!$v.firstName.required") Field is required
 
.form-group
    q-input(v-model="$v.lastName.$model")
    .error(v-if="!$v.lastName.required") Field is required

Setting validation for all fields at once

To set the validation for all fields at once, use @Validations decorator:

 
import {Validations} from 'vuelidate-property-decorators';
import {required} from 'vuelidate/lib/validators'
 
@Component({})
export default class AddressForm extends Vue {
 
    firstName = '';
    lastName = '';
 
    @Validations()
    validations = {
        firstName: {required},
        lastName: {required}
    }
 
}
 

Dynamic validations

Both the argument of @Validate(...) and the value of @Validations() can be a function that is called (reactively) with this set to the component instance.

Example:

 
import {Validate, Validations} from 'vuelidate-property-decorators';
import {required} from 'vuelidate/lib/validators'
 
@Component({})
export default class AddressForm extends Vue {
 
    firstName = '';
    lastName = '';
 
    isRequired = false;
 
    @Validations()
    validations() {
        if (this.isRequired) {
            return {
                firstName: {required},
                lastName: {required}
            }
        }
        return {}
    }
    
    @Validate(() => {
        if (this.isRequired) {
            return {required}
        }
        return {}
    })
    test = '';
}
 

Package Sidebar

Install

npm i vuelidate-property-decorators

Weekly Downloads

4,645

Version

1.0.28

License

MIT

Unpacked Size

8.88 kB

Total Files

7

Last publish

Collaborators

  • mesemus