fix: form trigger
parent
050867348e
commit
8907a9990c
|
@ -1 +1 @@
|
||||||
Subproject commit 75cbe79669f7ce5dfe6c1a02d9dd4e2443840c08
|
Subproject commit a71e2eac4c9b38092fc8edd2282bdd91170fa04b
|
|
@ -31,6 +31,7 @@ export const FormProps = {
|
||||||
onFinish: PropTypes.func,
|
onFinish: PropTypes.func,
|
||||||
onFinishFailed: PropTypes.func,
|
onFinishFailed: PropTypes.func,
|
||||||
name: PropTypes.name,
|
name: PropTypes.name,
|
||||||
|
validateTrigger: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),
|
||||||
};
|
};
|
||||||
|
|
||||||
export const ValidationRule = {
|
export const ValidationRule = {
|
||||||
|
|
|
@ -84,6 +84,7 @@ export const FormItemProps = {
|
||||||
required: PropTypes.bool,
|
required: PropTypes.bool,
|
||||||
validateFirst: PropTypes.bool,
|
validateFirst: PropTypes.bool,
|
||||||
validateStatus: PropTypes.oneOf(['', 'success', 'warning', 'error', 'validating']),
|
validateStatus: PropTypes.oneOf(['', 'success', 'warning', 'error', 'validating']),
|
||||||
|
validateTrigger: PropTypes.oneOfType([PropTypes.string, PropTypes.array]),
|
||||||
};
|
};
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
@ -113,7 +114,6 @@ export default {
|
||||||
errors: [],
|
errors: [],
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
|
|
||||||
computed: {
|
computed: {
|
||||||
fieldName() {
|
fieldName() {
|
||||||
return this.name || this.prop;
|
return this.name || this.prop;
|
||||||
|
@ -153,6 +153,14 @@ export default {
|
||||||
}
|
}
|
||||||
return isRequired || this.required;
|
return isRequired || this.required;
|
||||||
},
|
},
|
||||||
|
mergedValidateTrigger() {
|
||||||
|
let validateTrigger =
|
||||||
|
this.validateTrigger !== undefined
|
||||||
|
? this.validateTrigger
|
||||||
|
: this.FormContext.validateTrigger;
|
||||||
|
validateTrigger = validateTrigger === undefined ? 'change' : validateTrigger;
|
||||||
|
return toArray(validateTrigger);
|
||||||
|
},
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
validateStatus(val) {
|
validateStatus(val) {
|
||||||
|
@ -189,10 +197,10 @@ export default {
|
||||||
if (triggerName) {
|
if (triggerName) {
|
||||||
filteredRules = filteredRules.filter(rule => {
|
filteredRules = filteredRules.filter(rule => {
|
||||||
const { trigger } = rule;
|
const { trigger } = rule;
|
||||||
if (!trigger) {
|
if (!trigger && !this.mergedValidateTrigger.length) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
const triggerList = toArray(trigger);
|
const triggerList = toArray(trigger || this.mergedValidateTrigger);
|
||||||
return triggerList.includes(triggerName);
|
return triggerList.includes(triggerName);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -226,7 +234,9 @@ export default {
|
||||||
let formRules = this.FormContext.rules;
|
let formRules = this.FormContext.rules;
|
||||||
const selfRules = this.rules;
|
const selfRules = this.rules;
|
||||||
const requiredRule =
|
const requiredRule =
|
||||||
this.required !== undefined ? { required: !!this.required, trigger: 'change' } : [];
|
this.required !== undefined
|
||||||
|
? { required: !!this.required, trigger: this.mergedValidateTrigger }
|
||||||
|
: [];
|
||||||
const prop = getPropByPath(formRules, this.namePath);
|
const prop = getPropByPath(formRules, this.namePath);
|
||||||
formRules = formRules ? prop.o[prop.k] || prop.v : [];
|
formRules = formRules ? prop.o[prop.k] || prop.v : [];
|
||||||
const rules = [].concat(selfRules || formRules || []);
|
const rules = [].concat(selfRules || formRules || []);
|
||||||
|
@ -236,19 +246,6 @@ export default {
|
||||||
return rules.concat(requiredRule);
|
return rules.concat(requiredRule);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
getFilteredRule(trigger) {
|
|
||||||
const rules = this.getRules();
|
|
||||||
return rules
|
|
||||||
.filter(rule => {
|
|
||||||
if (!rule.trigger || trigger === '') return true;
|
|
||||||
if (Array.isArray(rule.trigger)) {
|
|
||||||
return rule.trigger.indexOf(trigger) > -1;
|
|
||||||
} else {
|
|
||||||
return rule.trigger === trigger;
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.map(rule => ({ ...rule }));
|
|
||||||
},
|
|
||||||
onFieldBlur() {
|
onFieldBlur() {
|
||||||
this.validateRules({ triggerName: 'blur' });
|
this.validateRules({ triggerName: 'blur' });
|
||||||
},
|
},
|
||||||
|
|
|
@ -98,8 +98,8 @@ const Mentions = {
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
handleChange(val) {
|
handleChange(val) {
|
||||||
this.$emit('change', val);
|
|
||||||
this.$emit('update:value', val);
|
this.$emit('update:value', val);
|
||||||
|
this.$emit('change', val);
|
||||||
},
|
},
|
||||||
getNotFoundContent(renderEmpty) {
|
getNotFoundContent(renderEmpty) {
|
||||||
const notFoundContent = getComponent(this, 'notFoundContent');
|
const notFoundContent = getComponent(this, 'notFoundContent');
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script>
|
<script>
|
||||||
import demo from '../antdv-demo/docs/transfer/demo/basic';
|
import demo from '../antdv-demo/docs/mentions/demo/form';
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
demo,
|
demo,
|
||||||
|
|
Loading…
Reference in New Issue