UNPKG

@ywfe/materials-design

Version:
251 lines (246 loc) 6.63 kB
import { IProps } from '../../types'; import { hideProp } from '../../_utils'; import { BaseFormItemProps } from '../../_base'; import { layoutConfig, sizeConfig } from '../../_base/json-form-base-props'; export const formItemsProps: any = { name: 'items', title: { label: '表单项', tip: 'items | 表单项' }, display: 'accordion', virtual: true, setter: { componentName: 'ArraySetter', props: { itemSetter: { componentName: 'ObjectSetter', props: { descriptor: 'title', config: { items: BaseFormItemProps, }, }, initialValue: () => { const mockProps: any = {}; BaseFormItemProps.forEach((item) => { if (item.defaultValue) { if (typeof item.defaultValue === 'function') { mockProps[item.name] = item.defaultValue(); } else { mockProps[item.name] = item.defaultValue; } } }); return { component: 'Input', ...mockProps, }; }, }, }, }, }; const props: IProps[] = [ { // name: 'globalConfig', title: { label: '全局配置', tip: 'globalConfig | 全局配置' }, type: 'group', display: 'accordion', items: [ { name: 'ref', condition: hideProp, setter: (target: any) => { if (!target?.getValue()) { target?.setValue(`pro-form-${target?.id}`); } return 'StringSetter'; }, }, { name: 'editable', title: { label: '状态', tip: 'editable | 状态' }, setter: { componentName: 'RadioGroupSetter', props: { options: [ { title: '预览态', value: false, }, { title: '编辑态', value: true, }, ], }, }, defaultValue: true, }, { name: 'disabled', // virtual: true, title: { label: '禁用', tip: 'disabled | 禁用' }, setter: 'BoolSetter', defaultValue: false, }, sizeConfig, { name: 'layoutProps', title: { label: '表单布局', tip: 'layoutProps | 表单布局' }, setter: { componentName: 'ObjectSetter', props: { config: layoutConfig, }, initialValue: { labelCol: '6', wrapperCol: '10', }, }, }, // { // name: 'layoutProps.layout', // title: { // label: { // type: 'i18n', // zh_CN: '标签位置', // en_US: 'Label Align', // }, // tip: { // type: 'i18n', // zh_CN: '属性: labelAlign | 说明: 标签的位置\n@enumdesc 上, 左, 内', // en_US: 'prop: labelAlign | description: label align', // }, // }, // setter: { // componentName: 'RadioGroupSetter', // props: { // options: [ // { // title: '上', // value: 'top', // }, // { // title: '左', // value: 'left', // }, // ], // }, // }, // extraProps: { // setValue: (target, value) => { // if (value === 'top') { // target.getProps().setPropValue('layoutProps', { // layout: 'vertical', // labelCol: '6', // wrapperCol: '10', // }); // } else if (value === 'left') { // target.getProps().setPropValue('layoutProps', { // layout: 'horizontal', // labelCol: '6', // wrapperCol: '10', // }); // } // }, // }, // defaultValue: 'top', // }, // { // name: 'colon', // title: '是否展示冒号', // setter: 'BoolSetter', // }, ], }, { name: 'initialValues', title: { label: '表单默认值', tip: 'initialValues | 表单默认值', }, setter: { componentName: 'MixedSetter', props: { setters: ['JsonSetter', 'FunctionSetter'], }, }, }, { name: 'onSubmit', title: { label: '提交事件', tip: 'onSubmit | 提交事件' }, setter: { componentName: 'MixedSetter', props: { setters: [ { componentName: 'SchemaFunctionSetter', props: { title: 'getDataSource', async: true, properties: { input: { type: 'object', properties: { values: { type: 'object', }, }, required: ['values'], }, body: { type: 'array', items: [ { type: 'Function', properties: { template: 'RequestFunction', variable: 'requestRes', extraProps: { params: '{{values}}', }, }, }, { type: 'Function', properties: { template: 'HistoryPushFunction', extraProps: { url: '', params: '{{undefined}}', hash: '{{undefined}}', }, }, }, ], }, }, }, }, ], }, }, }, // { // name: 'getFormValues', // title: { // label: '动态获取表单数据', // tip: 'getFormValues | 动态获取表单数据', // }, // setter: 'FunctionSetter', // }, // { // name: '_getFormData', // title: { // label: '动态数据源', // tip: '_getFormData | 动态数据源', // }, // setter: { // componentName: 'MixedSetter', // props: { // setters: ['DatasourceSetter', 'ExpressionSetter'], // }, // }, // }, formItemsProps, ]; export default props;