diff --git a/packages/core/client/src/schema-component/antd/action/Action.tsx b/packages/core/client/src/schema-component/antd/action/Action.tsx
index 7f459eab5..015db3a8a 100644
--- a/packages/core/client/src/schema-component/antd/action/Action.tsx
+++ b/packages/core/client/src/schema-component/antd/action/Action.tsx
@@ -128,7 +128,7 @@ export const Action: ComposedAction = observer(
>
{popover && }
{!popover && renderButton()}
- {!popover &&
e.stopPropagation()}>{props.children}
}
+ {!popover && props.children}
{element}
,
);
diff --git a/packages/core/client/src/schema-component/antd/table-v2/Table.tsx b/packages/core/client/src/schema-component/antd/table-v2/Table.tsx
index cf221352f..4b3f77707 100644
--- a/packages/core/client/src/schema-component/antd/table-v2/Table.tsx
+++ b/packages/core/client/src/schema-component/antd/table-v2/Table.tsx
@@ -22,7 +22,7 @@ import {
import { useACLFieldWhitelist } from '../../../acl/ACLProvider';
import { useToken } from '../__builtins__';
import { ColumnFieldProvider } from './components/ColumnFieldProvider';
-import { extractIndex, isCollectionFieldComponent, isColumnComponent } from './utils';
+import { extractIndex, isCollectionFieldComponent, isColumnComponent, isPortalInBody } from './utils';
const useArrayField = (props) => {
const field = useField();
@@ -239,7 +239,12 @@ export const Table: any = observer(
if (onClickRow) {
onRow = (record) => {
return {
- onClick: () => onClickRow(record, setSelectedRow, selectedRow),
+ onClick: (e) => {
+ if (isPortalInBody(e.target)) {
+ return;
+ }
+ onClickRow(record, setSelectedRow, selectedRow);
+ },
};
};
highlightRow = css`
@@ -323,9 +328,9 @@ export const Table: any = observer(
.nb-read-pretty-input-number {
text-align: right;
}
- .ant-color-picker-trigger{
- position:absolute;
- top:50%;
+ .ant-color-picker-trigger {
+ position: absolute;
+ top: 50%;
transform: translateY(-50%);
}
`,
diff --git a/packages/core/client/src/schema-component/antd/table-v2/utils.ts b/packages/core/client/src/schema-component/antd/table-v2/utils.ts
index d0153bf4a..e34e540fc 100644
--- a/packages/core/client/src/schema-component/antd/table-v2/utils.ts
+++ b/packages/core/client/src/schema-component/antd/table-v2/utils.ts
@@ -17,3 +17,17 @@ export function extractIndex(str) {
});
return numbers.join('.');
}
+
+/**
+ * 判断一个 DOM 对象是否是由 createPortal 挂在到了 body 上
+ * @param domNode DOM 对象
+ */
+export const isPortalInBody = (dom: HTMLElement) => {
+ while (dom) {
+ if (dom.id === 'root') {
+ return false;
+ }
+ dom = dom.parentNode as HTMLElement;
+ }
+ return true;
+};