Skip to content

Commit 5231f43

Browse files
committed
fix: respect validate on model update config closes #4451, closes #4467
1 parent 2845e95 commit 5231f43

File tree

4 files changed

+13
-7
lines changed

4 files changed

+13
-7
lines changed

.changeset/spicy-pigs-serve.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'vee-validate': patch
3+
---
4+
5+
fix: respect validate on model update configuration closes #4451, closes #4467

packages/vee-validate/src/Field.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ const FieldImpl = /** #__PURE__ */ defineComponent({
145145
checkedValue: ctx.attrs.value,
146146
uncheckedValue,
147147
label,
148-
validateOnValueUpdate: false,
148+
validateOnValueUpdate: props.validateOnModelUpdate,
149149
keepValueOnUnmount: keepValue,
150150
syncVModel: true,
151151
});

packages/vee-validate/src/useField.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ function _useField<TValue = unknown>(
155155
const errorMessage = computed(() => errors.value[0]);
156156

157157
if (syncVModel) {
158-
useVModel({ value, prop: syncVModel, handleChange });
158+
useVModel({ value, prop: syncVModel, handleChange, validateOnModelUpdate: !!opts?.validateOnValueUpdate });
159159
}
160160

161161
/**
@@ -554,9 +554,10 @@ interface ModelOpts<TValue> {
554554
prop: string | boolean;
555555
value: Ref<TValue>;
556556
handleChange: FieldContext['handleChange'];
557+
validateOnModelUpdate: boolean;
557558
}
558559

559-
function useVModel<TValue = unknown>({ prop, value, handleChange }: ModelOpts<TValue>) {
560+
function useVModel<TValue = unknown>({ prop, value, handleChange, validateOnModelUpdate }: ModelOpts<TValue>) {
560561
const vm = getCurrentInstance();
561562
/* istanbul ignore next */
562563
if (!vm || !prop) {
@@ -594,7 +595,7 @@ function useVModel<TValue = unknown>({ prop, value, handleChange }: ModelOpts<TV
594595
return;
595596
}
596597

597-
handleChange(newValue);
598+
handleChange(newValue, validateOnModelUpdate);
598599
},
599600
);
600601
}

packages/vee-validate/tests/Form.spec.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1274,9 +1274,9 @@ describe('<Form />', () => {
12741274
},
12751275
template: `
12761276
<VForm :validation-schema="schema" v-slot="{ errors, values }">
1277-
<Field v-model="drinks" name="drink" type="checkbox" value="" /> Coffee
1278-
<Field v-model="drinks" name="drink" type="checkbox" value="Tea" /> Tea
1279-
<Field v-model="drinks" name="drink" type="checkbox" value="Coke" /> Coke
1277+
<Field v-model="drinks" name="drink" type="checkbox" value="" validateOnModelUpdate /> Coffee
1278+
<Field v-model="drinks" name="drink" type="checkbox" value="Tea" validateOnModelUpdate /> Tea
1279+
<Field v-model="drinks" name="drink" type="checkbox" value="Coke" validateOnModelUpdate /> Coke
12801280
12811281
<span id="err">{{ errors.drink }}</span>
12821282
<span id="values">{{ values.drink && values.drink.toString() }}</span>

0 commit comments

Comments
 (0)