diff --git a/src/components/layout/index.js b/src/components/layout/index.js index 1bd918c..fa1ddb6 100644 --- a/src/components/layout/index.js +++ b/src/components/layout/index.js @@ -1,4 +1,4 @@ -import React, { Fragment, useState, useEffect } from 'react' +import React, { Fragment, useState, useEffect, useRef } from 'react' import { Transition } from 'react-transition-group' import Logo from 'components/logo' import Nav from 'components/nav' @@ -11,20 +11,36 @@ import { duration, overlayStyles, sideSheetStyles } from './transitions' import * as S from './styles' const Layout = () => { - const [kerbs, setKerbs] = useState([ + const allKerbs = useRef([]) + const [kerbs, setKerbs] = useState([]) + const [navItems, setNavItems] = useState([ { id: '__DASHBOARD__', meta: { title: 'dashboard' } } ]) - const [activeItem, setActiveItem] = useState(kerbs[0].id) + const [activeItem, setActiveItem] = useState(navItems[0].id) const [openSideSheet, setOpenSideSheet] = useState(false) const toggleSideSheet = () => { setOpenSideSheet(!openSideSheet) } + const handleNavbarItemClick = itemId => { + setActiveItem(itemId) + setKerbs( + itemId === '__DASHBOARD__' + ? allKerbs.current + : allKerbs.current.filter(kerb => kerb.id === itemId) + ) + + if (openSideSheet) { + setOpenSideSheet(false) + } + } + useEffect(() => { const loadKerbs = async () => { - const allKerbs = await getKerbs() - setKerbs(kerbs.concat(allKerbs)) + allKerbs.current = await getKerbs() + setKerbs(allKerbs.current) + setNavItems(navItems.concat(allKerbs.current)) } loadKerbs() @@ -34,7 +50,11 @@ const Layout = () => { project name that's big -