import { ISchema, useField, useFieldSchema, useForm } from '@formily/react'; import React from 'react'; import { useCollectionManager } from '../../../collection-manager'; import { GeneralSchemaDesigner, SchemaSettings } from '../../../schema-settings'; import { useCompile, useDesignable } from '../../hooks'; import { useActionContext } from '../action'; const useLabelFields = (collectionName?: any) => { if (!collectionName) { return []; } const compile = useCompile(); const { getCollectionFields } = useCollectionManager(); const targetFields = getCollectionFields(collectionName); return targetFields ?.filter?.((field) => !field?.target && field.type !== 'boolean') ?.map?.((field) => { return { value: field.name, label: compile(field?.uiSchema?.title || field.name), }; }); }; export const TableColumnDesigner = (props) => { const { uiSchema, fieldSchema, collectionField } = props; const field = useField(); const columnSchema = useFieldSchema(); const { dn } = useDesignable(); const initialValue = { title: columnSchema?.title, }; const options = useLabelFields(collectionField?.target); return ( {collectionField?.target && ( { const fieldNames = { ...fieldSchema['x-component-props']['fieldNames'], label, }; fieldSchema['x-component-props']['fieldNames'] = fieldNames; field.query(`.*.${fieldSchema.name}`).take((f) => { f.componentProps.fieldNames = fieldNames; }); dn.emit('patch', { schema: { 'x-uid': fieldSchema['x-uid'], 'x-component-props': { fieldNames, }, }, }); dn.refresh(); }} /> )} ); };