@form-create/tdesign
Version:
tdesign动态表单|form-create is a form generation component that can generate dynamic rendering, data collection, verification and submission functions through JSON. Supports 5 UI frameworks, and supports the generation of any Vue components. Built-in 20 kinds
48 lines (43 loc) • 1.22 kB
JavaScript
import is from '@form-create/utils/lib/type';
const required = {
name: 'required',
load(inject, rule, api) {
const val = parseVal(inject.getValue());
if (val.required === false) {
inject.clearProp();
} else {
const validate = {
trigger: 'change',
validator(v) {
return !is.empty(v);
},
...val,
};
if (!validate.message) {
let title = rule.title || '';
validate.message = ((typeof title === 'object' ? title.title : title) || '') + '不能为空';
}
inject.getProp().validate = [validate];
}
api.sync(rule);
},
watch(...args) {
required.load(...args);
}
}
function parseVal(val) {
if (is.Boolean(val)) {
return {required: val}
} else if (is.String(val)) {
return {message: val};
} else if (is.Undef(val)) {
return {required: false};
} else if (is.Function(val)) {
return {asyncValidator: val};
} else if (!is.Object(val)) {
return {};
} else {
return val;
}
}
export default required