11import React from 'react' ;
22import { Drawer , DrawerContent } from "@progress/kendo-react-layout" ;
33import { folderIcon , homeIcon , listUnorderedSquareIcon , userOutlineIcon } from '@progress/kendo-svg-icons' ;
4- import { To , useNavigate } from 'react-router-dom' ;
4+ import { To , useLocation , useNavigate } from 'react-router-dom' ;
55
66const drawerItems = [
7- { text : "Home" , svgIcon : homeIcon , route : '' , selected : true , className : "rounded-md [.k-selected]:!bg-primary/8 [.k-selected]:!text-primary" } ,
7+ { text : "Home" , svgIcon : homeIcon , route : '/ ' , selected : true , className : "rounded-md [.k-selected]:!bg-primary/8 [.k-selected]:!text-primary" } ,
88 { text : "Projects" , svgIcon : folderIcon , route : '/projects' , className : "rounded-md [.k-selected]:!bg-primary/8 [.k-selected]:!text-primary" } ,
99 { text : "Tasks" , svgIcon : listUnorderedSquareIcon , route : '/tasks' , className : "rounded-md [.k-selected]:!bg-primary/8 [.k-selected]:!text-primary" } ,
1010 { text : "Team Management" , svgIcon : userOutlineIcon , route : '/team-management' , className : "rounded-md [.k-selected]:!bg-primary/8 [.k-selected]:!text-primary" }
@@ -16,20 +16,29 @@ interface DrawerComponentProps {
1616
1717const DrawerComponent : React . FC < DrawerComponentProps > = ( { children } ) => {
1818 const navigate = useNavigate ( ) ;
19- const [ selected , setSelected ] = React . useState ( drawerItems . findIndex ( x => x . selected === true ) ) ;
19+ const location = useLocation ( ) ;
2020
2121 const onSelect = ( e : { itemTarget : { props : { route : To ; } ; } ; itemIndex : React . SetStateAction < number > ; } ) => {
2222 navigate ( e . itemTarget . props . route ) ;
23- setSelected ( e . itemIndex ) ;
2423 } ;
24+
25+ const setSelectedItem = ( pathName : string ) => {
26+ let currentPath = drawerItems . find ( ( item ) => item . route === pathName ) ;
27+ if ( currentPath && currentPath . text ) {
28+ return currentPath . text ;
29+ }
30+ } ;
31+
32+ const selected = setSelectedItem ( location . pathname ) ;
33+
2534 return (
2635 < Drawer
2736 expanded = { true }
2837 mode = "push"
2938 drawerClassName = "!flex-none !sticky !bg-surface-alt !px-2 !py-10 !w-16 md:!w-60 [&_.k-drawer-wrapper]:!w-12 md:[&_.k-drawer-wrapper]:!w-56 !top-[70px] !h-[calc(100vh_-_70px)]"
30- items = { drawerItems . map ( ( item , index ) => ( {
39+ items = { drawerItems . map ( item => ( {
3140 ...item ,
32- selected : index === selected
41+ selected : item . text === selected ,
3342 } ) ) }
3443 onSelect = { onSelect }
3544 width = { 223 }
0 commit comments