Scroll selected <LayerListItem/> into view

This commit is contained in:
orangemug
2020-04-04 15:41:35 +01:00
parent fcfc7ab874
commit fcad636f85
+18 -1
View File
@@ -42,13 +42,17 @@ class LayerListContainer extends React.Component {
onLayerSelect: () => {}, onLayerSelect: () => {},
} }
state = { constructor(props) {
super(props);
this.selectedItemRef = React.createRef();
this.state = {
collapsedGroups: {}, collapsedGroups: {},
areAllGroupsExpanded: false, areAllGroupsExpanded: false,
isOpen: { isOpen: {
add: false, add: false,
} }
} }
}
toggleModal(modalName) { toggleModal(modalName) {
this.setState({ this.setState({
@@ -161,6 +165,13 @@ class LayerListContainer extends React.Component {
return propsChanged; return propsChanged;
} }
componentDidUpdate () {
const selectedItemNode = this.selectedItemRef.current;
if (selectedItemNode && selectedItemNode.node) {
selectedItemNode.node.scrollIntoView();
}
}
render() { render() {
const listItems = [] const listItems = []
@@ -189,6 +200,11 @@ class LayerListContainer extends React.Component {
); );
}); });
const additionalProps = {};
if (idx === this.props.selectedLayerIndex) {
additionalProps.ref = this.selectedItemRef;
}
const listItem = <LayerListItem const listItem = <LayerListItem
className={classnames({ className={classnames({
'maputnik-layer-list-item-collapsed': layers.length > 1 && this.isCollapsed(groupPrefix, groupIdx) && idx !== this.props.selectedLayerIndex, 'maputnik-layer-list-item-collapsed': layers.length > 1 && this.isCollapsed(groupPrefix, groupIdx) && idx !== this.props.selectedLayerIndex,
@@ -205,6 +221,7 @@ class LayerListContainer extends React.Component {
onLayerDestroy={this.props.onLayerDestroy.bind(this)} onLayerDestroy={this.props.onLayerDestroy.bind(this)}
onLayerCopy={this.props.onLayerCopy.bind(this)} onLayerCopy={this.props.onLayerCopy.bind(this)}
onLayerVisibilityToggle={this.props.onLayerVisibilityToggle.bind(this)} onLayerVisibilityToggle={this.props.onLayerVisibilityToggle.bind(this)}
{...additionalProps}
/> />
listItems.push(listItem) listItems.push(listItem)
idx += 1 idx += 1