import { observer } from '@formily/react';
import { ArrayTable, Input, SchemaComponent, SchemaComponentProvider, SchemaInitializer } from '@nocobase/client';
import React from 'react';
const useTableColumnInitializerFields = () => {
const fields = [
{
key: 'field1',
title: 'Field1',
component: ColumnInitializer,
},
{
key: 'field2',
title: 'Field2',
component: 'ColumnInitializer',
},
];
return fields;
};
export const InitializerButton = observer((props: any) => {
return (
schema}
insertPosition={'beforeEnd'}
items={[
{
title: 'Display fields',
children: useTableColumnInitializerFields(),
},
]}
>
Configure columns
);
});
export const ColumnInitializer = (props) => {
const { title, insert } = props;
return (
{
insert({
type: 'void',
title: 'Name',
'x-component': 'ArrayTable.Column',
properties: {
name: {
type: 'string',
'x-component': 'Input',
'x-read-pretty': true,
},
},
});
}}
>
{title}
);
};
const schema = {
type: 'object',
properties: {
input: {
type: 'array',
default: [
{ id: 1, name: 'Name1' },
{ id: 2, name: 'Name2' },
{ id: 3, name: 'Name3' },
],
'x-component': 'ArrayTable',
'x-initializer': 'InitializerButton',
'x-component-props': {
rowKey: 'id',
},
properties: {
column1: {
type: 'void',
title: 'Name',
'x-component': 'ArrayTable.Column',
properties: {
name: {
type: 'string',
'x-component': 'Input',
'x-read-pretty': true,
},
},
},
},
},
},
};
export default function App() {
return (
);
}