mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-04-06 03:57:59 +08:00
feat(Form): rule message can be empty (#6536)
This commit is contained in:
parent
42768fe577
commit
4b786cdba3
@ -74,6 +74,7 @@ export default createComponent({
|
|||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
focused: false,
|
focused: false,
|
||||||
|
validateFailed: false,
|
||||||
validateMessage: '',
|
validateMessage: '',
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
@ -117,7 +118,7 @@ export default createComponent({
|
|||||||
if (this.error !== null) {
|
if (this.error !== null) {
|
||||||
return this.error;
|
return this.error;
|
||||||
}
|
}
|
||||||
if (this.vanForm && this.vanForm.showError && this.validateMessage) {
|
if (this.vanForm && this.vanForm.showError && this.validateFailed) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -208,7 +209,7 @@ export default createComponent({
|
|||||||
return rules.reduce(
|
return rules.reduce(
|
||||||
(promise, rule) =>
|
(promise, rule) =>
|
||||||
promise.then(() => {
|
promise.then(() => {
|
||||||
if (this.validateMessage) {
|
if (this.validateFailed) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -219,6 +220,7 @@ export default createComponent({
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!this.runSyncRule(value, rule)) {
|
if (!this.runSyncRule(value, rule)) {
|
||||||
|
this.validateFailed = true;
|
||||||
this.validateMessage = this.getRuleMessage(value, rule);
|
this.validateMessage = this.getRuleMessage(value, rule);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -226,6 +228,7 @@ export default createComponent({
|
|||||||
if (rule.validator) {
|
if (rule.validator) {
|
||||||
return this.runValidator(value, rule).then((result) => {
|
return this.runValidator(value, rule).then((result) => {
|
||||||
if (result === false) {
|
if (result === false) {
|
||||||
|
this.validateFailed = true;
|
||||||
this.validateMessage = this.getRuleMessage(value, rule);
|
this.validateMessage = this.getRuleMessage(value, rule);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -242,7 +245,7 @@ export default createComponent({
|
|||||||
}
|
}
|
||||||
|
|
||||||
this.runRules(rules).then(() => {
|
this.runRules(rules).then(() => {
|
||||||
if (this.validateMessage) {
|
if (this.validateFailed) {
|
||||||
resolve({
|
resolve({
|
||||||
name: this.name,
|
name: this.name,
|
||||||
message: this.validateMessage,
|
message: this.validateMessage,
|
||||||
@ -271,6 +274,7 @@ export default createComponent({
|
|||||||
|
|
||||||
resetValidation() {
|
resetValidation() {
|
||||||
if (this.validateMessage) {
|
if (this.validateMessage) {
|
||||||
|
this.validateFailed = false;
|
||||||
this.validateMessage = '';
|
this.validateMessage = '';
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -38,3 +38,30 @@ test('failed event', async () => {
|
|||||||
values: { A: '', B: '' },
|
values: { A: '', B: '' },
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('failed event when rule message is empty', async () => {
|
||||||
|
const onFailed = jest.fn();
|
||||||
|
const wrapper = mountForm({
|
||||||
|
template: `
|
||||||
|
<van-form ref="form" @failed="onFailed">
|
||||||
|
<van-field name="A" :rules="rulesA" value="" />
|
||||||
|
<van-button native-type="submit" />
|
||||||
|
</van-form>
|
||||||
|
`,
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
rulesA: [{ required: true }],
|
||||||
|
};
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
onFailed,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
await submitForm(wrapper);
|
||||||
|
|
||||||
|
expect(onFailed).toHaveBeenCalledWith({
|
||||||
|
errors: [{ name: 'A' }],
|
||||||
|
values: { A: '' },
|
||||||
|
});
|
||||||
|
});
|
||||||
|
Loading…
x
Reference in New Issue
Block a user