Skip to content

Commit 03b528b

Browse files
committed
add scroll to index
1 parent e2509ac commit 03b528b

File tree

4 files changed

+12
-3
lines changed

4 files changed

+12
-3
lines changed

index.d.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,8 @@ interface Selectors {
109109
deleteNodeFromTree: (nodes: Node[], nodeToDelete: FlattenedNode) => Node[],
110110
deleteNode: (node: FlattenedNode[]) => NodeAction,
111111
addNode: (node: FlattenedNode[]) => NodeAction,
112-
updateNode: (node: FlattenedNode, state: { [stateKey: string]: any }) => NodeAction
113-
}
112+
updateNode: (node: FlattenedNode, state: { [stateKey: string]: any }) => NodeAction,
113+
getFlattenedTree: (node: node[]) => FlattenedNode,
114+
getRowIndexFromId: (node: FlattenedNode, id: number) => number,}
114115

115116
export const selectors: Selectors;

src/Tree.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ export default class Tree extends React.Component {
3232
};
3333

3434
render() {
35-
const {nodes} = this.props;
35+
const {nodes, scrollToIndex} = this.props;
3636

3737
return (
3838
<AutoSizer>
@@ -45,6 +45,7 @@ export default class Tree extends React.Component {
4545
rowHeight={this._cache.rowHeight}
4646
rowRenderer={this.measureRowRenderer(nodes)}
4747
width={width}
48+
scrollToIndex={scrollToIndex}
4849
/>
4950
)}
5051
</AutoSizer>

src/TreeContainer.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ export default class TreeContainer extends React.Component {
4949
nodes={getFlattenedTree(this.props.nodes)}
5050
onChange={this.handleChange}
5151
NodeRenderer={this.props.children}
52+
scrollToIndex={this.props.scrollToIndex}
5253
/>
5354
);
5455
}
@@ -62,6 +63,7 @@ TreeContainer.propTypes = {
6263
onChange: PropTypes.func,
6364
children: PropTypes.func.isRequired,
6465
nodeMarginLeft: PropTypes.number,
66+
scrollToIndex: PropTypes.number,
6567
};
6668

6769
TreeContainer.defaultProps = {

src/selectors/nodes.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import omit from 'lodash.omit';
33

44
import {UPDATE_TYPE} from '../contants';
55

6+
export { getFlattenedTree } from './getFlattenedTree';
7+
68
export const getNodeRenderOptions = createSelector(
79
node => (node.state || {}).expanded,
810
node => (node.state || {}).favorite,
@@ -86,3 +88,6 @@ export const addNode = node => ({
8688
node,
8789
type: UPDATE_TYPE.ADD,
8890
});
91+
92+
export const getRowIndexFromId = (flattenedTree, id) =>
93+
flattenedTree.findIndex((item, index) => item.id === id);

0 commit comments

Comments
 (0)