UNPKG

@form-create/vant

Version:

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

55 lines (50 loc) 1.57 kB
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