@@ -10,23 +10,45 @@ class IndexRoute extends React.Component {
10
10
render ( ) {
11
11
const { edges } = this . props . data . allMarkdownRemark
12
12
13
+ const groupedByAlphabet = { } ;
14
+
15
+ edges . map ( ( item , index ) => {
16
+ const firstLetter = item . node . frontmatter . title . charAt ( 0 ) ;
17
+
18
+ if ( groupedByAlphabet [ firstLetter ] == undefined ) {
19
+ groupedByAlphabet [ firstLetter ] = [ ] ;
20
+ }
10000
code>
21
+
22
+ groupedByAlphabet [ firstLetter ] . push ( item ) ;
23
+ } ) ;
24
+
25
+ const allLetters = Object . keys ( groupedByAlphabet ) ;
26
+
13
27
return (
14
28
< div className = "glossary article" >
15
29
< Helmet title = { `Glossary | ${ GatsbyConfig . siteMetadata . title } ` } />
16
30
< div className = "sidebar" >
17
31
< div className = "sidebar__wrapper" >
18
32
< div className = "sidebar__body" >
19
- < ul className = "sidebar__items sidebar__items--active" >
20
- { edges . map ( ( item , index ) => {
21
- return (
22
- < li className = "sidebar__item" >
23
- < a href = { `#${ slugify ( item . node . frontmatter . path ) } ` } >
24
- { item . node . frontmatter . title }
25
- </ a >
26
- </ li >
27
- )
28
- } ) }
29
- </ ul >
33
+ { allLetters . map ( ( letter , index ) => {
34
+ return (
35
+ < div className = "sidebar__section" key = { index } >
36
+ < h3 className = "sidebar__title sidebar__title--active" >
37
+ { letter }
38
+ </ h3 >
39
+ < ul className = "sidebar__items sidebar__items--active" >
40
+ { groupedByAlphabet [ letter ] . map ( ( item , index ) => {
41
+ return (
42
+ < li className = "sidebar__item" key = { index } >
43
+ < a href = { `#${ slugify ( item . node . frontmatter . path ) } ` } >
44
+ { item . node . frontmatter . title }
45
+ </ a >
46
+ </ li >
47
+ )
48
+ } ) }
49
+ </ ul >
50
+ </ div >
51
+ ) } ) }
30
52
</ div >
31
53
</ div >
32
54
</ div >
@@ -66,7 +88,6 @@ export const pageQuery = graphql`
66
88
frontmatter {
67
89
path
68
90
title
69
- date
70
91
}
71
92
}
72
93
}
0 commit comments