Skip to content

Commit 80c7f82

Browse files
author
Cyprian Muchoki
committed
Check existence of fieldOptions in validators
In some validator functions, we were checking the existence of min and max values in the field schema using !isNil(field.fieldOptions.min) and !isNil(field.fieldOptions.max). However, some fields might have very simple configuration which doesn't include fieldOptions object, meaning that this code will throw an error ```js TypeError: Cannot read property 'min' of undefined ``` which vue throws as something like ```js vue.esm.js:629 [Vue warn]: Error in event handler for "validate-fields": "TypeError: Cannot read property 'min' of undefined" ``` To guard against this, we need to first make sure that fieldOptions also exists before we try to check whether attributes in it are defined. This was already present in `number` validator, but was missing in `date`, `array` and `string`.
1 parent 229e332 commit 80c7f82

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

src/utils/validators.js

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -110,11 +110,11 @@ const validators = {
110110

111111
let err = [];
112112
if (isString(value)) {
113-
if (!isNil(field.fieldOptions.min) && value.length < field.fieldOptions.min) {
113+
if (!isNil(field.fieldOptions) && !isNil(field.fieldOptions.min) && value.length < field.fieldOptions.min) {
114114
err.push(msg(messages.textTooSmall, value.length, field.fieldOptions.min));
115115
}
116116

117-
if (!isNil(field.fieldOptions.max) && value.length > field.fieldOptions.max) {
117+
if (!isNil(field.fieldOptions) && !isNil(field.fieldOptions.max) && value.length > field.fieldOptions.max) {
118118
err.push(msg(messages.textTooBig, value.length, field.fieldOptions.max));
119119
}
120120
} else {
@@ -136,11 +136,11 @@ const validators = {
136136
}
137137

138138
if (!isNil(value)) {
139-
if (!isNil(field.fieldOptions.min) && value.length < field.fieldOptions.min) {
139+
if (!isNil(field.fieldOptions) && !isNil(field.fieldOptions.min) && value.length < field.fieldOptions.min) {
140140
return [msg(messages.selectMinItems, field.fieldOptions.min)];
141141
}
142142

143-
if (!isNil(field.fieldOptions.max) && value.length > field.fieldOptions.max) {
143+
if (!isNil(field.fieldOptions) && !isNil(field.fieldOptions.max) && value.length > field.fieldOptions.max) {
144144
return [msg(messages.selectMaxItems, field.fieldOptions.max)];
145145
}
146146
}
@@ -157,14 +157,14 @@ const validators = {
157157

158158
let err = [];
159159

160-
if (!isNil(field.fieldOptions.min)) {
160+
if (!isNil(field.fieldOptions) && !isNil(field.fieldOptions.min)) {
161161
let min = new Date(field.fieldOptions.min);
162162
if (m.valueOf() < min.valueOf()) {
163163
err.push(msg(messages.dateIsEarly, fecha.format(m), fecha.format(min)));
164164
}
165165
}
166166

167-
if (!isNil(field.fieldOptions.max)) {
167+
if (!isNil(field.fieldOptions) && !isNil(field.fieldOptions.max)) {
168168
let max = new Date(field.fieldOptions.max);
169169
if (m.valueOf() > max.valueOf()) {
170170
err.push(msg(messages.dateIsLate, fecha.format(m), fecha.format(max)));

0 commit comments

Comments
 (0)