From ab5de303a15b6ce8f83d2748703d55b232d2a73a Mon Sep 17 00:00:00 2001 From: Ryan Cooley Date: Fri, 20 Aug 2021 13:35:46 -0700 Subject: [PATCH 1/3] Only update validation if element is not readonly --- src/components/mixins/validation.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/components/mixins/validation.js b/src/components/mixins/validation.js index 28dc1ca4..2a64dc45 100644 --- a/src/components/mixins/validation.js +++ b/src/components/mixins/validation.js @@ -8,6 +8,15 @@ export default { 'validationField', 'validationMessages' ], + computed: { + isReadOnly() { + if (this.readonly || this.disabled || this.$attrs.readonly || this.$attrs.disabled) { + return true; + } else { + return false; + } + } + }, data() { return { validator: null @@ -53,7 +62,7 @@ export default { globalObject.validatorLanguageSet = true; }, updateValidation() { - if (this.validation) { + if (this.validation && !this.isReadOnly) { let fieldName = this.validationField ? this.validationField : this.name; let data = this.validationData ? this.validationData : {[fieldName]: this.value} let validationRules = ''; From e46aa38c21c3a253ccf3fcf2118222eb4ec728cc Mon Sep 17 00:00:00 2001 From: Ryan Cooley Date: Fri, 20 Aug 2021 13:36:25 -0700 Subject: [PATCH 2/3] Update validation on disabled/readonly prop change --- src/components/mixins/validation.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/components/mixins/validation.js b/src/components/mixins/validation.js index 2a64dc45..bbc1cc11 100644 --- a/src/components/mixins/validation.js +++ b/src/components/mixins/validation.js @@ -38,6 +38,12 @@ export default { label() { this.updateValidation() }, + readonly() { + this.updateValidation(); + }, + disabled() { + this.updateValidation(); + }, validationData: { handler: function() { this.updateValidation() From 513dd05a37e6c05d044c96905bc9339bbd4877bb Mon Sep 17 00:00:00 2001 From: Ryan Cooley Date: Fri, 20 Aug 2021 13:37:26 -0700 Subject: [PATCH 3/3] Update validation on disabled/readonly attr change --- src/components/mixins/validation.js | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/components/mixins/validation.js b/src/components/mixins/validation.js index bbc1cc11..eb7da994 100644 --- a/src/components/mixins/validation.js +++ b/src/components/mixins/validation.js @@ -24,7 +24,8 @@ export default { }, mounted() { this.setValidatorLanguage(); - this.updateValidation() + this.updateValidation(); + this.observeElementMutations(); }, watch: { // Triggered whenever the v-model is updated @@ -52,6 +53,20 @@ export default { } }, methods: { + observeElementMutations() { + new MutationObserver(this.handleMutations).observe(this.$el, { + attributes: true, + attributeFilter: ['readonly', 'disabled'], + subtree: true + }); + }, + handleMutations(mutations) { + mutations.forEach(mutation => { + if (mutation.type == "attributes") { + this.updateValidation() + } + }); + }, setValidatorLanguage() { let globalObject = typeof window === 'undefined' ? global : window;