diff --git a/src/renderers/CRUD.tsx b/src/renderers/CRUD.tsx index 453021a5..16ce9a6e 100644 --- a/src/renderers/CRUD.tsx +++ b/src/renderers/CRUD.tsx @@ -1576,6 +1576,7 @@ export default class CRUD extends React.Component { classnames: cx, keepItemSelectionOnPageChange, onAction, + popOverContainer, ...rest } = this.props; @@ -1642,6 +1643,7 @@ export default class CRUD extends React.Component { query: store.query, orderBy: store.query.orderBy, orderDir: store.query.orderDir, + popOverContainer, onAction: this.handleAction, onSave: this.handleSave, onSaveOrder: this.handleSaveOrder, diff --git a/src/renderers/Drawer.tsx b/src/renderers/Drawer.tsx index bf1c7387..2696b395 100644 --- a/src/renderers/Drawer.tsx +++ b/src/renderers/Drawer.tsx @@ -4,7 +4,7 @@ import {Renderer, RendererProps} from '../factory'; import {SchemaNode, Schema, Action} from '../types'; import {default as DrawerContainer} from '../components/Drawer'; import findLast from 'lodash/findLast'; -import {guid, isVisible} from '../utils/helper'; +import {guid, isVisible, autobind} from '../utils/helper'; import {reaction} from 'mobx'; import {findDOMNode} from 'react-dom'; import {IModalStore, ModalStore} from '../store/modal'; @@ -252,6 +252,11 @@ export default class Drawer extends React.Component { store.reset(); } + @autobind + getPopOverContainer() { + return findDOMNode(this); + } + renderBody(body: SchemaNode, key?: any): React.ReactNode { let {render, store} = this.props; @@ -264,7 +269,8 @@ export default class Drawer extends React.Component { key, disabled: store.loading, onAction: this.handleAction, - onFinished: this.handleChildFinished + onFinished: this.handleChildFinished, + popOverContainer: this.getPopOverContainer }; if (schema.type === 'form') { diff --git a/src/renderers/Table.tsx b/src/renderers/Table.tsx index 51e98ed5..0fd9de75 100644 --- a/src/renderers/Table.tsx +++ b/src/renderers/Table.tsx @@ -96,6 +96,7 @@ export interface TableProps extends RendererProps { hideCheckToggler?: boolean; rowClassName?: string; rowClassNameExpr?: string; + popOverContainer?: any; } export default class Table extends React.Component { @@ -129,7 +130,8 @@ export default class Table extends React.Component { 'valueField', 'saveImmediately', 'rowClassName', - 'rowClassNameExpr' + 'rowClassNameExpr', + 'popOverContainer' ]; static defaultProps: Partial = { className: '', @@ -1175,7 +1177,8 @@ export default class Table extends React.Component { env, classPrefix: ns, classnames: cx, - checkOnItemClick + checkOnItemClick, + popOverContainer } = this.props; if (column.name && item.rowSpans[column.name] === 0) { @@ -1253,7 +1256,7 @@ export default class Table extends React.Component { btnDisabled: store.dragging, data: item.locals, value: column.name ? resolveVariable(column.name, item.data) : undefined, - popOverContainer: this.getPopOverContainer, + popOverContainer: popOverContainer || this.getPopOverContainer, rowSpan: item.rowSpans[column.name as string], quickEditFormRef: this.subFormRef, prefix,