Skip to content

Commit

Permalink
Custom component now needs to emit vf:addFocusListeners to have focus…
Browse files Browse the repository at this point in the history
…in focusout listeners applied
  • Loading branch information
fergaldoyle committed May 1, 2018
1 parent 878ae61 commit 6eb547d
Show file tree
Hide file tree
Showing 5 changed files with 34 additions and 16 deletions.
15 changes: 9 additions & 6 deletions dist/vue-form.js
Original file line number Diff line number Diff line change
Expand Up @@ -1172,12 +1172,15 @@ var vueFormValidator = {
vm.$on('focus', function () {
fieldstate._setFocused(true);
});
el.addEventListener('focusout', function () {
fieldstate._setFocused(false);
}, false);
el.addEventListener('focusin', function () {
fieldstate._setFocused(true);
}, false);

vm.$once('vf:addFocusListeners', function () {
el.addEventListener('focusout', function () {
fieldstate._setFocused(false);
}, false);
el.addEventListener('focusin', function () {
fieldstate._setFocused(true);
}, false);
});

vm.$on('vf:validate', function (data) {
if (!vm._vfValidationData_) {
Expand Down
2 changes: 1 addition & 1 deletion dist/vue-form.min.js

Large diffs are not rendered by default.

16 changes: 14 additions & 2 deletions example/component.html
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@
};

var dynamicField = {
template: '<div><input v-if="isNumber" class="form-control" type="number" :min="field.min" :max="field.max" v-model="input" /></div>',
template: '<div><input ref="input" v-if="isNumber" class="form-control" type="number" :min="field.min" :max="field.max" v-model="input" /></div>',
props: {
field: Object,
value: null
Expand Down Expand Up @@ -145,6 +145,18 @@
this.input = this.value;
},
mounted: function () {
var vm = this;

this.$refs.input.addEventListener('focus', function() {
vm.$emit('focus');
}, false);
this.$refs.input.addEventListener('blur', function() {
vm.$emit('blur');
}, false);

// or listen for bubbled focusin / focusout events
//this.$emit('vf:addFocusListener');

// watch a local data property / computed
// which holds validation data / attributes
this.$watch('validationData', function (v) {
Expand Down Expand Up @@ -193,4 +205,4 @@

</body>

</html>
</html>
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "vue-form",
"version": "4.8.1",
"version": "4.9.0",
"description": "Form validation for Vue.js",
"main": "dist/vue-form.js",
"scripts": {
Expand Down
15 changes: 9 additions & 6 deletions src/directives/vue-form-validator.js
Original file line number Diff line number Diff line change
Expand Up @@ -99,12 +99,15 @@ export default {
vm.$on('focus', () => {
fieldstate._setFocused(true);
});
el.addEventListener('focusout', () => {
fieldstate._setFocused(false);
}, false);
el.addEventListener('focusin', () => {
fieldstate._setFocused(true);
}, false);

vm.$once('vf:addFocusListeners', () => {
el.addEventListener('focusout', () => {
fieldstate._setFocused(false);
}, false);
el.addEventListener('focusin', () => {
fieldstate._setFocused(true);
}, false);
});

vm.$on('vf:validate', data => {
if(!vm._vfValidationData_) {
Expand Down

0 comments on commit 6eb547d

Please sign in to comment.