diff --git a/packages/core/client/src/modules/fields/component/Select/selectComponentFieldSettings.tsx b/packages/core/client/src/modules/fields/component/Select/selectComponentFieldSettings.tsx
index 4204ffad10..41357ea3c4 100644
--- a/packages/core/client/src/modules/fields/component/Select/selectComponentFieldSettings.tsx
+++ b/packages/core/client/src/modules/fields/component/Select/selectComponentFieldSettings.tsx
@@ -192,6 +192,9 @@ const quickCreate: any = {
title: "{{t('Add new')}}",
// 'x-designer': 'Action.Designer',
'x-toolbar': 'ActionSchemaToolbar',
+ 'x-toolbar-props': {
+ draggable: false,
+ },
'x-settings': 'actionSettings:addNew',
'x-component': 'Action',
'x-decorator': 'ACLActionProvider',
diff --git a/packages/core/client/src/schema-component/antd/association-field/AssociationSelect.tsx b/packages/core/client/src/schema-component/antd/association-field/AssociationSelect.tsx
index 15b92f5e4c..42bdb76639 100644
--- a/packages/core/client/src/schema-component/antd/association-field/AssociationSelect.tsx
+++ b/packages/core/client/src/schema-component/antd/association-field/AssociationSelect.tsx
@@ -14,9 +14,15 @@ import { uid } from '@formily/shared';
import { Space, message } from 'antd';
import { isFunction } from 'mathjs';
import { isEqual } from 'lodash';
-import React, { useEffect, useState } from 'react';
+import React, { useEffect, useState, useContext } from 'react';
import { useTranslation } from 'react-i18next';
-import { ClearCollectionFieldContext, RecordProvider, useAPIClient, useCollectionRecordData } from '../../../';
+import {
+ ClearCollectionFieldContext,
+ RecordProvider,
+ useAPIClient,
+ useCollectionRecordData,
+ SchemaComponentContext,
+} from '../../../';
import { isVariable } from '../../../variables/utils/isVariable';
import { getInnermostKeyAndValue } from '../../common/utils/uitls';
import { RemoteSelect, RemoteSelectProps } from '../remote-select';
@@ -69,6 +75,8 @@ const InternalAssociationSelect = observer(
const api = useAPIClient();
const resource = api.resource(collectionField.target);
const recordData = useCollectionRecordData();
+ const schemaComponentCtxValue = useContext(SchemaComponentContext);
+
useEffect(() => {
const initValue = isVariable(field.value) ? undefined : field.value;
const value = Array.isArray(initValue) ? initValue.filter(Boolean) : initValue;
@@ -149,19 +157,21 @@ const InternalAssociationSelect = observer(
>
{addMode === 'modalAdd' && (
-
- {/* 快捷添加按钮添加的添加的是一个普通的 form 区块(非关系区块),不应该与任何字段有关联,所以在这里把字段相关的上下文给清除掉 */}
-
- {
- return s['x-component'] === 'Action';
- }}
- />
-
-
+
+
+ {/* 快捷添加按钮添加的添加的是一个普通的 form 区块(非关系区块),不应该与任何字段有关联,所以在这里把字段相关的上下文给清除掉 */}
+
+ {
+ return s['x-component'] === 'Action';
+ }}
+ />
+
+
+
)}
diff --git a/packages/core/client/src/schema-settings/GeneralSchemaDesigner.tsx b/packages/core/client/src/schema-settings/GeneralSchemaDesigner.tsx
index 4997edc141..9d7161049f 100644
--- a/packages/core/client/src/schema-settings/GeneralSchemaDesigner.tsx
+++ b/packages/core/client/src/schema-settings/GeneralSchemaDesigner.tsx
@@ -12,7 +12,7 @@ import { css } from '@emotion/css';
import { useField, useFieldSchema } from '@formily/react';
import { Space } from 'antd';
import classNames from 'classnames';
-import React, { FC, useEffect, useMemo, useRef } from 'react';
+import React, { FC, useEffect, useMemo, useRef, useContext } from 'react';
import { useTranslation } from 'react-i18next';
import { SchemaInitializer, SchemaSettings, SchemaToolbarProvider, useSchemaInitializerRender } from '../application';
import { useSchemaSettingsRender } from '../application/schema-settings/hooks/useSchemaSettingsRender';
@@ -22,6 +22,7 @@ import { DragHandler, useCompile, useDesignable, useGridContext, useGridRowConte
import { gridRowColWrap } from '../schema-initializer/utils';
import { SchemaSettingsDropdown } from './SchemaSettings';
import { useGetAriaLabelOfDesigner } from './hooks/useGetAriaLabelOfDesigner';
+import { SchemaComponentContext } from '../';
import { useStyles } from './styles';
const titleCss = css`
@@ -217,8 +218,9 @@ const InternalSchemaToolbar: FC = (props) => {
...(fieldSchema?.['x-toolbar-props'] || {}),
} as SchemaToolbarProps;
const { designable } = useDesignable();
+ const { draggable: draggableCtx } = useContext(SchemaComponentContext);
const compile = useCompile();
- const { styles } = useStyles();
+ const { styles }: any = useStyles();
const { t } = useTranslation();
const { getAriaLabel } = useGetAriaLabelOfDesigner();
const dm = useDataSourceManager();
@@ -257,13 +259,13 @@ const InternalSchemaToolbar: FC = (props) => {
}, [getAriaLabel, rowCtx?.cols?.length]);
const dragElement = useMemo(() => {
- if (draggable === false) return null;
+ if (draggable === false || draggableCtx === false) return null;
return (
);
- }, [draggable, getAriaLabel]);
+ }, [draggable, getAriaLabel, draggableCtx]);
const initializerElement = useMemo(() => {
if (initializer === false) return null;