11/** @jsx jsx */
2- import React , { useState } from 'react'
2+ import React , { useState , useRef , useEffect } from 'react'
33import { Global } from '@emotion/core'
44import { jsx , Box } from 'theme-ui'
5- import { useMenus } from 'docz'
5+ import { useMenus , useCurrentDoc } from 'docz'
66
77import * as styles from './styles'
88import { NavSearch } from '../NavSearch'
@@ -12,11 +12,16 @@ import { NavGroup } from '../NavGroup'
1212export const Sidebar = React . forwardRef ( ( props , ref ) => {
1313 const [ query , setQuery ] = useState ( '' )
1414 const menus = useMenus ( { query } )
15-
15+ const currentDoc = useCurrentDoc ( )
16+ const currentDocRef = useRef ( )
1617 const handleChange = ev => {
1718 setQuery ( ev . target . value )
1819 }
19-
20+ useEffect ( ( ) => {
21+ if ( ref . current && currentDocRef . current ) {
22+ ref . current . scrollTo ( 0 , currentDocRef . current . offsetTop )
23+ }
24+ } , [ ] )
2025 return (
2126 < >
2227 < Box onClick = { props . onClick } sx = { styles . overlay ( props ) } >
@@ -30,7 +35,15 @@ export const Sidebar = React.forwardRef((props, ref) => {
3035 />
3136 { menus &&
3237 menus . map ( menu => {
33- if ( ! menu . route ) return < NavGroup key = { menu . id } item = { menu } />
38+ if ( ! menu . route )
39+ return < NavGroup key = { menu . id } item = { menu } sidebarRef = { ref } />
40+ if ( menu . route === currentDoc . route ) {
41+ return (
42+ < NavLink key = { menu . id } item = { menu } ref = { currentDocRef } >
43+ { menu . name }
44+ </ NavLink >
45+ )
46+ }
3447 return (
3548 < NavLink key = { menu . id } item = { menu } >
3649 { menu . name }
0 commit comments