@form-create/arco-design
Version:
arco-design动态表单|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 k
48 lines (43 loc) • 1.24 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 = {
required: true,
validator(v, call) {
is.empty(v) && call(validate.message);
},
...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 {validator: val};
} else if (!is.Object(val)) {
return {};
} else {
return val;
}
}
export default required