Vuelidate example

by WILLIAM CORREA

HTML

<script src="https://unpkg.com/vuelidate/dist/vuelidate.min.js"></script>
<script src="https://unpkg.com/vuelidate/dist/validators.min.js"></script>
<div id="app">
  <input v-model="$v.text.$model" :class="status($v.text)">

  <pre>{{ $v }}</pre>
</div>

CSS

input {
  border: 1px solid silver;
  border-radius: 4px;
  background: white;
  padding: 5px 10px;
}

.dirty {
  border-color: #5A5;
  background: #EFE;
}

.dirty:focus {
  outline-color: #8E8;
}

.error {
  border-color: red;
  background: #FDD;
}

.error:focus {
  outline-color: #F99;
}

Babel + JSX

Vue.use(window.vuelidate.default)
const { required, minLength, email } = window.validators

new Vue({
	el: "#app",
  data: {
  	text: ''
  },
  validations: {
  	text: {
    	required,
      email,
      minLength: minLength(5)
    }
  },
  methods: {
  	status(validation) {
    	return {
      	error: validation.$error,
        dirty: validation.$dirty
      }
    }
  }
})