|
|
@@ -111,6 +111,21 @@ class ViewLayout extends React.PureComponent {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ onResize = (Layout, oldItem, newItem, placeholder, e, element) => {
|
|
|
+ const viewContentRef = this.viewContentRef;
|
|
|
+ let box = viewContentRef.getBoundingClientRect();
|
|
|
+ let bottomY = box.y + box.height;
|
|
|
+ if(bottomY - e.clientY <= 5) { // 鼠标接近容器底部时滚动条滚到底
|
|
|
+ window.clearTimeout(this.scrollToBottomKey);
|
|
|
+ this.scrollToBottomKey = window.setTimeout(this.scrollToBottom, 50);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ scrollToBottom = () => {
|
|
|
+ const viewContentRef = this.viewContentRef;
|
|
|
+ viewContentRef.scrollTo && viewContentRef.scrollTo(0, viewContentRef.scrollHeight - viewContentRef.clientHeight)
|
|
|
+ }
|
|
|
+
|
|
|
showPreviewBox = (item) => {
|
|
|
this.setState({
|
|
|
previewItem: item,
|
|
|
@@ -142,7 +157,7 @@ class ViewLayout extends React.PureComponent {
|
|
|
const { editMode, minLayoutHeight, layoutMargin } = dashboardDesigner;
|
|
|
const { visiblePreviewBox, previewItem } = this.state;
|
|
|
const children = dashboardDesigner.items.map((item) => this.createElement(item, false, !item.chartOption));
|
|
|
- return (<div className='dashboard-viewcontent'>
|
|
|
+ return (<div className='dashboard-viewcontent' ref={node => this.viewContentRef = node}>
|
|
|
<ReactGridLayout
|
|
|
width={ contentSize.width ? contentSize.width : lastContentSize.width }
|
|
|
autoSize={true}
|
|
|
@@ -153,6 +168,7 @@ class ViewLayout extends React.PureComponent {
|
|
|
isResizable={editMode && !editingKey}
|
|
|
draggableHandle='.mover'
|
|
|
onLayoutChange={this.onLayoutChange}
|
|
|
+ onResize={this.onResize}
|
|
|
verticalCompact={true}
|
|
|
compactType='vertical'
|
|
|
>
|