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, Space } 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 { useCollection, useCollectionContext } from '../../constate'; import { useTable } from '../table'; import { DragHandle } from '../../components/Sortable'; import { fieldsToFilterColumns } from '../calendar'; import { useTranslation } from 'react-i18next'; import { useCompile } from '../../hooks/useCompile'; export const DesignableBar = observer((props) => { const field = useField(); const { t } = useTranslation(); const { designable, schema, refresh, deepRemove } = useDesignable(); const [visible, setVisible] = useState(false); const { dragRef } = useContext(DraggableBlockContext); const { props: tableProps } = useTable(); const collectionName = field.componentProps?.collectionName || tableProps?.collectionName; const { collection, fields } = useCollection({ collectionName }); const compile = useCompile(); return (
{compile(collection?.title || collection?.name)}
{ e.stopPropagation(); }} className={cls('designable-bar-actions', { active: visible })} > { // setVisible(visible); // }} overlay={ {/* { field.readPretty = true; }} > 编辑表单配置 */} { const { defaultFilter } = await FormDialog( t('Set the data scope'), () => { return ( ); }, ).open({ initialValues: { defaultFilter: field?.componentProps?.defaultFilter || {}, }, }); schema['x-component-props']['defaultFilter'] = defaultFilter; field.componentProps.defaultFilter = defaultFilter; await updateSchema(schema); }} > {t('Set the data scope')} { Modal.confirm({ title: t('Delete block'), content: t('Are you sure you want to delete it?'), onOk: async () => { const removed = deepRemove(); // console.log({ removed }) const last = removed.pop(); await removeSchema(last); }, }); }} > {t('Delete')} } >
); });