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; +};