import React, { useContext, useMemo, useRef, useState } from 'react'; import { createForm } from '@formily/core'; import { SchemaOptionsContext, Schema, useFieldSchema, observer, SchemaExpressionScopeContext, FormProvider, ISchema, useField, useForm, RecursionField, } from '@formily/react'; import { useSchemaPath, SchemaField, useDesignable, removeSchema, updateSchema, } from '../'; import get from 'lodash/get'; import { Button, Dropdown, Menu, Modal, Select, Space, Switch } from 'antd'; import { MenuOutlined, DragOutlined } from '@ant-design/icons'; import cls from 'classnames'; import { FormDialog, FormLayout } from '@formily/antd'; import './style.less'; import AddNew from '../add-new'; import { DraggableBlockContext } from '../../components/drag-and-drop'; import { isGridRowOrCol } from '../grid'; import constate from 'constate'; import { useEffect } from 'react'; import { uid } from '@formily/shared'; import { getSchemaPath } from '../../components/schema-renderer'; import { RandomNameContext } from '.'; import { useCollectionContext, useCollectionsContext, useDisplayedMapContext, } from '../../constate'; import SwitchMenuItem from '../../components/SwitchMenuItem'; import { DragHandle } from '../../components/Sortable'; import { set } from 'lodash'; export const FieldDesignableBar = observer((props) => { const field = useField(); const { schema, deepRemove, refresh } = useDesignable(); const [visible, setVisible] = useState(false); const { dragRef } = useContext(DraggableBlockContext); const randomName = useContext(RandomNameContext); const displayed = useDisplayedMapContext(); const fieldName = schema['x-component-props']?.['fieldName']; const { getField } = useCollectionContext(); const { getFieldsByCollection } = useCollectionsContext(); const collectionField = getField(fieldName); console.log({ collectionField }); const realField = field .query(field.address.concat(randomName, fieldName)) .take(); return (
{ e.stopPropagation(); }} className={cls('designable-bar-actions', { active: visible })} > { setVisible(visible); }} overlay={ { const values = await FormDialog('自定义字段名称', () => { return ( ); }).open({ initialValues: { fieldName: collectionField?.uiSchema?.title, title: schema['title'], }, }); const title = values.title || null; field .query(field.address.concat(randomName, fieldName)) .take((f) => { f.title = title || collectionField?.uiSchema?.title; }); schema['title'] = title; await updateSchema({ key: schema['key'], title, }); }} > 自定义字段名称 {collectionField?.interface === 'linkTo' && (
标签字段{' '}