Skip to content

Commit 16f4788

Browse files
committed
fix(drawer): save selected state after refresh
1 parent dc7c35b commit 16f4788

File tree

2 files changed

+16
-13
lines changed

2 files changed

+16
-13
lines changed

examples/kendo-react-freemium/src/components/DrawerComponent.tsx

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import React from 'react';
22
import { Drawer, DrawerContent } from "@progress/kendo-react-layout";
33
import { 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

66
const 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

1717
const 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}

examples/kendo-react-freemium/src/pages/Projects.tsx

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import {
1010
GridCustomCellProps,
1111
GridFilterChangeEvent,
1212
GridItemChangeEvent,
13-
GridPageChangeEvent,
1413
GridSearchBox,
1514
GridToolbar,
1615
} from "@progress/kendo-react-grid";
@@ -21,22 +20,17 @@ import {
2120
homeIcon,
2221
plusIcon,
2322
printIcon,
24-
searchIcon,
2523
} from "@progress/kendo-svg-icons";
2624
import { SvgIcon } from "@progress/kendo-react-common";
27-
import { InputPrefix, TextBox } from "@progress/kendo-react-inputs";
2825
import { Badge } from "@progress/kendo-react-indicators";
2926
import {
30-
process,
3127
filterBy,
32-
CompositeFilterDescriptor,
3328
} from "@progress/kendo-data-query";
3429
import React from "react";
35-
import { priorities, projectManagers, projectsData } from "./data";
30+
import { projectsData } from "./data";
3631
import { CSVLink } from "react-csv";
3732
import {
3833
HeaderTdElement,
39-
PagerTargetEvent,
4034
} from "@progress/kendo-react-data-tools";
4135
import { DropDownList } from "@progress/kendo-react-dropdowns";
4236
import { useNavigate } from "react-router-dom";

0 commit comments

Comments
 (0)