@form-create/vant
Version:
VantUI版本低代码表单|FormCreate 是一个可以通过 JSON 生成具有动态渲染、数据收集、验证和提交功能的低代码表单生成组件。支持6个UI框架,适配移动端,并且支持生成任何 Vue 组件。内置20种常用表单组件和自定义组件,再复杂的表单都可以轻松搞定。
55 lines (50 loc) • 1.57 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();
api.clearValidateState([rule.field]);
} else {
const validate = {
required: true,
validator(v) {
return !is.empty(v);
},
trigger: ['onChange', 'onSubmit'],
...val,
};
const title = rule.__fc__.refRule?.__$title?.value;
if (!validate.message) {
validate.message = api.t('required', {title}) || (title + (api.getLocale() === 'en' ? ' is required' : '不能为空'));
} else {
const match = validate.message.match(/^\{\{\s*\$t\.(.+)\s*\}\}$/);
if (match) {
validate.message = api.t(match[1], {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