@ywfe/materials-design
Version:
YwDesign for lowcode
251 lines (246 loc) • 6.63 kB
text/typescript
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;