@@ -23,6 +23,7 @@ const convertToTree = (data) => {
23
23
24
24
const constructTree = ( list ) => {
25
25
let tree = [ ]
26
+ let dir = [ ]
26
27
list . forEach ( item => {
27
28
if ( item . parents === [ ] || item . parents === null ) tree . push ( item )
28
29
else {
@@ -31,18 +32,20 @@ const constructTree = (list) => {
31
32
if ( subtree
32
33
. filter ( node => node . title === item . parents [ i ] && node . children )
33
34
. length === 0 ) {
34
- subtree . push ( {
35
+ const newNode = {
35
36
key : "tree/" + item . parents [ i ] ,
36
37
title : item . parents [ i ] ,
37
38
children : [ ]
38
- } )
39
+ }
40
+ subtree . push ( newNode )
41
+ dir . push ( newNode )
39
42
}
40
43
subtree = subtree . find ( node => node . title === item . parents [ i ] && node . children ) . children
41
44
}
42
45
subtree . push ( item )
43
46
}
44
47
} )
45
- return tree
48
+ return [ tree , dir ]
46
49
}
47
50
48
51
class SidebarContent extends Component {
@@ -51,6 +54,7 @@ class SidebarContent extends Component {
51
54
}
52
55
53
56
render ( ) {
57
+ const { expandedKeys } = this . props . sidebar
54
58
return (
55
59
< StaticQuery
56
60
query = { graphql `
@@ -72,7 +76,7 @@ class SidebarContent extends Component {
72
76
}
73
77
` }
74
78
render = { data => {
75
- const tree = convertToTree ( data )
79
+ const [ tree , dir ] = convertToTree ( data )
76
80
const loop = data => data . map ( ( item ) => {
77
81
if ( item . children ) {
78
82
return (
@@ -87,11 +91,17 @@ class SidebarContent extends Component {
87
91
</ Menu . Item >
88
92
)
89
93
} )
94
+ const selectedKeys = data . allMarkdownRemark . edges
95
+ . filter ( item => window . location . pathname === item . node . fields . slug ||
96
+ window . location . pathname + '/' === item . node . fields . slug )
97
+ . length > 0 ? [ expandedKeys ] : [ ]
98
+ const defaultOpenKeys = dir . map ( item => item . key )
90
99
return (
91
100
< div >
92
101
< Menu
93
102
mode = "inline"
94
- defaultOpenKeys = { tree . map ( node => node . key ) }
103
+ defaultOpenKeys = { defaultOpenKeys }
104
+ selectedKeys = { selectedKeys }
95
105
>
96
106
{ loop ( tree ) }
97
107
</ Menu >
0 commit comments