123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214 |
- import { ISchema } from '@formily/json-schema'
- import { ReactionsSetter, DataSourceSetter, ValidatorSetter } from '@designable/formily-setters'
- import { FormItemSwitcher } from '../../common/FormItemSwitcher'
- import { AllSchemas } from '../../schemas'
- export const createComponentSchema = (component: ISchema, decorator: ISchema) => {
- return {
- 'component-group': component && {
- type: 'void',
- 'x-component': 'CollapseItem',
- 'x-reactions': {
- fulfill: {
- state: {
- visible: '{{!!$form.values["x-component"]}}'
- }
- }
- },
- properties: {
- 'x-component-props': component
- }
- },
- 'decorator-group': decorator && {
- type: 'void',
- 'x-component': 'CollapseItem',
- 'x-component-props': { defaultExpand: false },
- 'x-reactions': {
- fulfill: {
- state: {
- visible: '{{!!$form.values["x-decorator"]}}'
- }
- }
- },
- properties: {
- 'x-decorator-props': decorator
- }
- }
- // 'component-style-group': {
- // type: 'void',
- // 'x-component': 'CollapseItem',
- // 'x-component-props': { defaultExpand: false },
- // 'x-reactions': {
- // fulfill: {
- // state: {
- // visible: '{{!!$form.values["x-component"]}}'
- // }
- // }
- // },
- // properties: {
- // 'x-component-props.style': AllSchemas.CSSStyle
- // }
- // },
- // 'decorator-style-group': {
- // type: 'void',
- // 'x-component': 'CollapseItem',
- // 'x-component-props': { defaultExpand: false },
- // 'x-reactions': {
- // fulfill: {
- // state: {
- // visible: '{{!!$form.values["x-decorator"]}}'
- // }
- // }
- // },
- // properties: {
- // 'x-decorator-props.style': AllSchemas.CSSStyle
- // }
- // }
- }
- }
- export const createFieldSchema = (
- component?: ISchema,
- decorator: ISchema = AllSchemas.FormItem
- ): ISchema => {
- return {
- type: 'object',
- properties: {
- 'field-group': {
- type: 'void',
- 'x-component': 'CollapseItem',
- properties: {
- // name: {
- // type: 'string',
- // 'x-decorator': 'FormItem',
- // 'x-component': 'Input'
- // },
- title: {
- type: 'string',
- 'x-decorator': 'FormItem',
- 'x-component': 'Input'
- },
- description: {
- type: 'string',
- 'x-decorator': 'FormItem',
- 'x-component': 'Input.TextArea'
- },
- 'x-display': {
- type: 'string',
- enum: ['visible', 'hidden', 'none', ''],
- 'x-decorator': 'FormItem',
- 'x-component': 'Select',
- 'x-component-props': {
- defaultValue: 'visible'
- }
- },
- 'x-pattern': {
- type: 'string',
- enum: ['editable', 'disabled', 'readOnly', 'readPretty', ''],
- 'x-decorator': 'FormItem',
- 'x-component': 'Select',
- 'x-component-props': {
- defaultValue: 'editable'
- }
- },
- default: {
- 'x-decorator': 'FormItem',
- 'x-component': 'ValueInput'
- },
- enum: {
- 'x-decorator': 'FormItem',
- 'x-component': DataSourceSetter
- },
- 'x-reactions': {
- 'x-decorator': 'FormItem',
- 'x-component': ReactionsSetter
- },
- 'x-validator': {
- type: 'array',
- 'x-component': ValidatorSetter
- },
- required: {
- type: 'boolean',
- 'x-decorator': 'FormItem',
- 'x-component': 'Switch'
- }
- }
- },
- ...createComponentSchema(component, decorator)
- }
- }
- }
- export const createVoidFieldSchema = (
- component?: ISchema,
- decorator: ISchema = AllSchemas.FormItem
- ) => {
- return {
- type: 'object',
- properties: {
- 'field-group': {
- type: 'void',
- 'x-component': 'CollapseItem',
- properties: {
- name: {
- type: 'string',
- 'x-decorator': 'FormItem',
- 'x-component': 'Input'
- },
- title: {
- type: 'string',
- 'x-decorator': 'FormItem',
- 'x-component': 'Input',
- 'x-reactions': {
- fulfill: {
- state: {
- hidden: '{{$form.values["x-decorator"] !== "FormItem"}}'
- }
- }
- }
- },
- description: {
- type: 'string',
- 'x-decorator': 'FormItem',
- 'x-component': 'Input.TextArea',
- 'x-reactions': {
- fulfill: {
- state: {
- hidden: '{{$form.values["x-decorator"] !== "FormItem"}}'
- }
- }
- }
- },
- 'x-display': {
- type: 'string',
- enum: ['visible', 'hidden', 'none', ''],
- 'x-decorator': 'FormItem',
- 'x-component': 'Select',
- 'x-component-props': {
- defaultValue: 'visible'
- }
- },
- 'x-pattern': {
- type: 'string',
- enum: ['editable', 'disabled', 'readOnly', 'readPretty', ''],
- 'x-decorator': 'FormItem',
- 'x-component': 'Select',
- 'x-component-props': {
- defaultValue: 'editable'
- }
- },
- 'x-reactions': {
- 'x-decorator': 'FormItem',
- 'x-component': ReactionsSetter
- },
- 'x-decorator': {
- type: 'string',
- 'x-decorator': 'FormItem',
- 'x-component': FormItemSwitcher
- }
- }
- },
- ...createComponentSchema(component, decorator)
- }
- }
- }
|