diff --git a/src/components/AppLayout.jsx b/src/components/AppLayout.jsx
index 8ea4cae5..99b669ea 100644
--- a/src/components/AppLayout.jsx
+++ b/src/components/AppLayout.jsx
@@ -26,9 +26,7 @@ class AppLayout extends React.Component {
return
{this.props.toolbar}
-
- {this.props.layerList}
-
+ {this.props.layerList}
diff --git a/src/components/layers/LayerList.jsx b/src/components/layers/LayerList.jsx
index e856482a..f7bf9ef6 100644
--- a/src/components/layers/LayerList.jsx
+++ b/src/components/layers/LayerList.jsx
@@ -45,6 +45,7 @@ class LayerListContainer extends React.Component {
constructor(props) {
super(props);
this.selectedItemRef = React.createRef();
+ this.scrollContainerRef = React.createRef();
this.state = {
collapsedGroups: {},
areAllGroupsExpanded: false,
@@ -169,7 +170,19 @@ class LayerListContainer extends React.Component {
if (prevProps.selectedLayerIndex !== this.props.selectedLayerIndex) {
const selectedItemNode = this.selectedItemRef.current;
if (selectedItemNode && selectedItemNode.node) {
- selectedItemNode.node.scrollIntoView();
+ const target = selectedItemNode.node;
+ const options = {
+ root: this.scrollContainerRef.current,
+ threshold: 1.0
+ }
+ const observer = new IntersectionObserver(entries => {
+ observer.unobserve(target);
+ if (entries.length > 0 && entries[0].intersectionRatio < 1) {
+ target.scrollIntoView();
+ }
+ }, options);
+
+ observer.observe(target);
}
}
}
@@ -238,7 +251,7 @@ class LayerListContainer extends React.Component {
})
})
- return