UNPKG

@form-create/tdesign

Version:

TDesign版本低代码表单|FormCreate 是一个可以通过 JSON 生成具有动态渲染、数据收集、验证和提交功能的低代码表单生成组件。支持6个UI框架,适配移动端,并且支持生成任何 Vue 组件。内置20种常用表单组件和自定义组件,再复杂的表单都可以轻松搞定。

64 lines (58 loc) 1.83 kB
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 = { trigger: 'change', validator(v) { updateMessage(); return !is.empty(v); }, ...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 {asyncValidator: val}; } else if (!is.Object(val)) { return {}; } else { return val; } } export default required