Skip to content

Commit 8907a99

Browse files
committed
fix: form trigger
1 parent 0508673 commit 8907a99

File tree

5 files changed

+18
-20
lines changed

5 files changed

+18
-20
lines changed

antdv-demo

components/form/Form.jsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ export const FormProps = {
3131
onFinish: PropTypes.func,
3232
onFinishFailed: PropTypes.func,
3333
name: PropTypes.name,
34+
validateTrigger: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),
3435
};
3536

3637
export const ValidationRule = {

components/form/FormItem.jsx

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ export const FormItemProps = {
8484
required: PropTypes.bool,
8585
validateFirst: PropTypes.bool,
8686
validateStatus: PropTypes.oneOf(['', 'success', 'warning', 'error', 'validating']),
87+
validateTrigger: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),
8788
};
8889

8990
export default {
@@ -113,7 +114,6 @@ export default {
113114
errors: [],
114115
};
115116
},
116-
117117
computed: {
118118
fieldName() {
119119
return this.name || this.prop;
@@ -153,6 +153,14 @@ export default {
153153
}
154154
return isRequired || this.required;
155155
},
156+
mergedValidateTrigger() {
157+
let validateTrigger =
158+
this.validateTrigger !== undefined
159+
? this.validateTrigger
160+
: this.FormContext.validateTrigger;
161+
validateTrigger = validateTrigger === undefined ? 'change' : validateTrigger;
162+
return toArray(validateTrigger);
163+
},
156164
},
157165
watch: {
158166
validateStatus(val) {
@@ -189,10 +197,10 @@ export default {
189197
if (triggerName) {
190198
filteredRules = filteredRules.filter(rule => {
191199
const { trigger } = rule;
192-
if (!trigger) {
200+
if (!trigger && !this.mergedValidateTrigger.length) {
193201
return true;
194202
}
195-
const triggerList = toArray(trigger);
203+
const triggerList = toArray(trigger || this.mergedValidateTrigger);
196204
return triggerList.includes(triggerName);
197205
});
198206
}
@@ -226,7 +234,9 @@ export default {
226234
let formRules = this.FormContext.rules;
227235
const selfRules = this.rules;
228236
const requiredRule =
229-
this.required !== undefined ? { required: !!this.required, trigger: 'change' } : [];
237+
this.required !== undefined
238+
? { required: !!this.required, trigger: this.mergedValidateTrigger }
239+
: [];
230240
const prop = getPropByPath(formRules, this.namePath);
231241
formRules = formRules ? prop.o[prop.k] || prop.v : [];
232242
const rules = [].concat(selfRules || formRules || []);
@@ -236,19 +246,6 @@ export default {
236246
return rules.concat(requiredRule);
237247
}
238248
},
239-
getFilteredRule(trigger) {
240-
const rules = this.getRules();
241-
return rules
242-
.filter(rule => {
243-
if (!rule.trigger || trigger === '') return true;
244-
if (Array.isArray(rule.trigger)) {
245-
return rule.trigger.indexOf(trigger) > -1;
246-
} else {
247-
return rule.trigger === trigger;
248-
}
249-
})
250-
.map(rule => ({ ...rule }));
251-
},
252249
onFieldBlur() {
253250
this.validateRules({ triggerName: 'blur' });
254251
},

components/mentions/index.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,8 @@ const Mentions = {
9898
});
9999
},
100100
handleChange(val) {
101-
this.$emit('change', val);
102101
this.$emit('update:value', val);
102+
this.$emit('change', val);
103103
},
104104
getNotFoundContent(renderEmpty) {
105105
const notFoundContent = getComponent(this, 'notFoundContent');

examples/App.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
</div>
55
</template>
66
<script>
7-
import demo from '../antdv-demo/docs/transfer/demo/basic';
7+
import demo from '../antdv-demo/docs/mentions/demo/form';
88
export default {
99
components: {
1010
demo,

0 commit comments

Comments
 (0)