176 lines
6.4 KiB
TypeScript
176 lines
6.4 KiB
TypeScript
import { Switch } from 'antd';
|
|
import React from 'react';
|
|
import { SchemaInitializer } from '../../SchemaInitializer';
|
|
import { useCurrentSchema } from '../utils';
|
|
|
|
export const LinkToFieldInitializer = (props) => {
|
|
const { item, insert } = props;
|
|
const { exists, remove } = useCurrentSchema(
|
|
item.schema['x-collection-field'],
|
|
'x-collection-field',
|
|
item.find,
|
|
item.remove,
|
|
);
|
|
const targetKey = item.field.targetKey || 'id';
|
|
return (
|
|
<SchemaInitializer.Item
|
|
onClick={() => {
|
|
console.log(item, exists);
|
|
if (exists) {
|
|
return remove();
|
|
}
|
|
insert({
|
|
...item.schema,
|
|
// default: [
|
|
// { id: 1, name: 'name1' },
|
|
// { id: 2, name: 'name2' },
|
|
// ],
|
|
// 'x-decorator': 'FormItem',
|
|
'x-component': 'CollectionField',
|
|
'x-component-props': {
|
|
mode: 'tags',
|
|
fieldNames: {
|
|
label: targetKey,
|
|
value: targetKey,
|
|
},
|
|
},
|
|
properties: {
|
|
options: {
|
|
'x-component': 'RecordPicker.Options',
|
|
type: 'void',
|
|
title: 'Drawer Title',
|
|
properties: {
|
|
block: {
|
|
type: 'void',
|
|
'x-collection': 'collections',
|
|
'x-decorator': 'ResourceActionProvider',
|
|
'x-decorator-props': {
|
|
collection: item.field.target,
|
|
request: {
|
|
resource: item.field.target,
|
|
action: 'list',
|
|
params: {
|
|
pageSize: 20,
|
|
filter: {},
|
|
// sort: ['sort'],
|
|
appends: [],
|
|
},
|
|
},
|
|
},
|
|
'x-designer': 'Table.Void.Designer',
|
|
'x-component': 'CardItem',
|
|
properties: {
|
|
// actions: {
|
|
// type: 'void',
|
|
// 'x-initializer': 'TableActionInitializers',
|
|
// 'x-component': 'ActionBar',
|
|
// 'x-component-props': {
|
|
// style: {
|
|
// marginBottom: 16,
|
|
// },
|
|
// },
|
|
// properties: {},
|
|
// },
|
|
table: {
|
|
// type: 'void',
|
|
'x-component': 'Table.RowSelection',
|
|
'x-component-props': {
|
|
rowKey: targetKey,
|
|
objectValue: true,
|
|
rowSelection: {
|
|
type: 'checkbox',
|
|
},
|
|
useDataSource: '{{ cm.useDataSourceFromRAC }}',
|
|
},
|
|
'x-initializer': 'TableColumnInitializers',
|
|
properties: {
|
|
// actions: {
|
|
// type: 'void',
|
|
// title: '{{ t("Actions") }}',
|
|
// 'x-decorator': 'Table.Column.ActionBar',
|
|
// 'x-component': 'Table.Column',
|
|
// 'x-designer': 'Table.RowActionDesigner',
|
|
// 'x-initializer': 'TableRecordActionInitializers',
|
|
// properties: {
|
|
// actions: {
|
|
// type: 'void',
|
|
// 'x-decorator': 'DndContext',
|
|
// 'x-component': 'Space',
|
|
// 'x-component-props': {
|
|
// split: '|',
|
|
// },
|
|
// properties: {},
|
|
// },
|
|
// },
|
|
// },
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
item: {
|
|
'x-component': 'RecordPicker.SelectedItem',
|
|
properties: {
|
|
drawer1: {
|
|
'x-component': 'Action.Drawer',
|
|
type: 'void',
|
|
title: 'Drawer Title',
|
|
properties: {
|
|
details: {
|
|
type: 'void',
|
|
'x-collection': 'collections',
|
|
'x-decorator': 'ResourceActionProvider',
|
|
'x-decorator-props': {
|
|
collection: item.field.target,
|
|
request: {
|
|
resource: item.field.target,
|
|
action: 'get',
|
|
params: {},
|
|
},
|
|
},
|
|
'x-designer': 'Form.Designer',
|
|
'x-component': 'CardItem',
|
|
properties: {
|
|
form: {
|
|
type: 'void',
|
|
'x-decorator': 'Form',
|
|
'x-decorator-props': {},
|
|
properties: {
|
|
actions: {
|
|
type: 'void',
|
|
'x-initializer': 'FormActionInitializers',
|
|
'x-component': 'ActionBar',
|
|
'x-component-props': {
|
|
layout: 'one-column',
|
|
style: {
|
|
marginBottom: 16,
|
|
},
|
|
},
|
|
properties: {},
|
|
},
|
|
grid: {
|
|
type: 'void',
|
|
'x-component': 'Grid',
|
|
'x-initializer': 'GridFormItemInitializers',
|
|
properties: {},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
});
|
|
}}
|
|
>
|
|
<div style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between' }}>
|
|
{item.title} <Switch style={{ marginLeft: 20 }} size={'small'} checked={exists} />
|
|
</div>
|
|
</SchemaInitializer.Item>
|
|
);
|
|
};
|