From fcad636f851dadfe32a8fe9f3b9f7a08714f5865 Mon Sep 17 00:00:00 2001 From: orangemug Date: Sat, 4 Apr 2020 15:41:35 +0100 Subject: [PATCH 1/2] Scroll selected into view --- src/components/layers/LayerList.jsx | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/src/components/layers/LayerList.jsx b/src/components/layers/LayerList.jsx index 8d60bb4d..a15bc547 100644 --- a/src/components/layers/LayerList.jsx +++ b/src/components/layers/LayerList.jsx @@ -42,11 +42,15 @@ class LayerListContainer extends React.Component { onLayerSelect: () => {}, } - state = { - collapsedGroups: {}, - areAllGroupsExpanded: false, - isOpen: { - add: false, + constructor(props) { + super(props); + this.selectedItemRef = React.createRef(); + this.state = { + collapsedGroups: {}, + areAllGroupsExpanded: false, + isOpen: { + add: false, + } } } @@ -161,6 +165,13 @@ class LayerListContainer extends React.Component { return propsChanged; } + componentDidUpdate () { + const selectedItemNode = this.selectedItemRef.current; + if (selectedItemNode && selectedItemNode.node) { + selectedItemNode.node.scrollIntoView(); + } + } + render() { const listItems = [] @@ -189,6 +200,11 @@ class LayerListContainer extends React.Component { ); }); + const additionalProps = {}; + if (idx === this.props.selectedLayerIndex) { + additionalProps.ref = this.selectedItemRef; + } + const listItem = 1 && this.isCollapsed(groupPrefix, groupIdx) && idx !== this.props.selectedLayerIndex, @@ -205,6 +221,7 @@ class LayerListContainer extends React.Component { onLayerDestroy={this.props.onLayerDestroy.bind(this)} onLayerCopy={this.props.onLayerCopy.bind(this)} onLayerVisibilityToggle={this.props.onLayerVisibilityToggle.bind(this)} + {...additionalProps} /> listItems.push(listItem) idx += 1 From c9e360d67503cfc8e8eb59fa2067da746bae63c1 Mon Sep 17 00:00:00 2001 From: orangemug Date: Mon, 6 Apr 2020 08:47:13 +0100 Subject: [PATCH 2/2] Fix layer selection via --- src/components/map/MapboxGlMap.jsx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/components/map/MapboxGlMap.jsx b/src/components/map/MapboxGlMap.jsx index 3b04702c..02ddc8d5 100644 --- a/src/components/map/MapboxGlMap.jsx +++ b/src/components/map/MapboxGlMap.jsx @@ -170,7 +170,7 @@ export default class MapboxGlMap extends React.Component { if(this.props.inspectModeEnabled) { return renderPopup(, tmpNode); } else { - return renderPopup(, tmpNode); + return renderPopup(, tmpNode); } } }) @@ -208,6 +208,11 @@ export default class MapboxGlMap extends React.Component { map.on("zoomend", mapViewChange); } + onLayerSelectById = (id) => { + const index = this.props.mapStyle.layers.findIndex(layer => layer.id === id); + this.props.onLayerSelect(index); + } + render() { if(IS_SUPPORTED) { return