@form-create/vant
Version:
Vant 版本(移动端)低代码表单 | FormCreate 是一个可以通过 JSON 生成具有动态渲染、数据收集、验证和提交功能的低代码表单生成组件。
64 lines (59 loc) • 1.87 kB
JavaScript
import is from '@form-create/utils/lib/type';
const required = {
name: 'required',
load(inject, rule, api) {
const val = parseVal(inject.getValue());
let _title = undefined;
if (val.required === false) {
inject.clearProp();
api.clearValidateState([rule.field]);
} else {
const validate = {
required: true,
validator(v) {
updateMessage();
return !is.empty(v);
},
trigger: ['onChange', 'onSubmit'],
...val,
};
const updateMessage = () => {
const title = rule.__fc__.refRule.__$title?.value;
if (_title === title) {
return;
}
_title = title;
if (!val.message) {
validate.message = api.t('required', {title}) || (title + (api.getLocale() === 'en' ? ' is required' : '不能为空'));
} else {
const match = val.message.match(/^\{\{\s*\$t\.(.+)\s*\}\}$/);
if (match) {
validate.message = api.t(match[1], {title});
}
}
}
updateMessage();
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