From d1612f913156e5252d21d1c2454b94507b0fca8d Mon Sep 17 00:00:00 2001 From: jaanvi Date: Tue, 4 Mar 2025 16:42:58 +0530 Subject: [PATCH 1/6] vehicle list created and some bugs solved --- public/model-s-exterior-front-view.webp | Bin 0 -> 8618 bytes src/components/Header/index.tsx | 23 ++- src/components/MenuContent/index.tsx | 5 + src/components/OptionsMenu/index.tsx | 21 ++- src/components/SideMenu/index.tsx | 10 +- src/pages/Auth/Login/index.tsx | 21 ++- src/pages/VehicleList/index.tsx | 227 ++++++++++++++++++++++++ src/pages/Vehicles/index.tsx | 102 ----------- src/redux/reducers.ts | 3 + src/redux/slices/VehicleSlice.ts | 135 ++++++++++++++ src/redux/slices/userSlice.ts | 9 - src/router.tsx | 12 +- 12 files changed, 429 insertions(+), 139 deletions(-) create mode 100644 public/model-s-exterior-front-view.webp create mode 100644 src/pages/VehicleList/index.tsx delete mode 100644 src/pages/Vehicles/index.tsx create mode 100644 src/redux/slices/VehicleSlice.ts diff --git a/public/model-s-exterior-front-view.webp b/public/model-s-exterior-front-view.webp new file mode 100644 index 0000000000000000000000000000000000000000..3af1533c06a602e2884c1193f2902e383f7e17d6 GIT binary patch literal 8618 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 literal 0 HcmV?d00001 diff --git a/src/components/Header/index.tsx b/src/components/Header/index.tsx index 4c3f027..aaa4691 100644 --- a/src/components/Header/index.tsx +++ b/src/components/Header/index.tsx @@ -8,15 +8,28 @@ import SearchIcon from "@mui/icons-material/Search"; import Divider from "@mui/material/Divider"; import MenuButton from "../MenuButton"; import ArrowDropDownIcon from "@mui/icons-material/ArrowDropDown"; -import ColorModeIconDropdown from "../../shared-theme/ColorModeIconDropdown"; import NotificationsRoundedIcon from "@mui/icons-material/NotificationsRounded"; +import SideMenu from "../SideMenu"; +import { useDispatch, useSelector } from "react-redux"; +import { AppDispatch, RootState } from "../../redux/store/store"; +import { fetchAdminProfile } from "../../redux/slices/profileSlice"; +import OptionsMenu from "../OptionsMenu"; export default function Header() { const [showNotifications, setShowNotifications] = React.useState(false); const toggleNotifications = () => { setShowNotifications((prev) => !prev); }; + const [open, setOpen] = React.useState(true); + const dispatch = useDispatch(); + const { user } = useSelector( + (state: RootState) => state?.profileReducer + ); + + React.useEffect(() => { + dispatch(fetchAdminProfile()); + }, [dispatch]); return ( - Momah + {user?.name || "No Admin"} - {/* Dropdown Icon */} - {/* */} diff --git a/src/components/MenuContent/index.tsx b/src/components/MenuContent/index.tsx index 794a33b..e23f179 100644 --- a/src/components/MenuContent/index.tsx +++ b/src/components/MenuContent/index.tsx @@ -47,6 +47,11 @@ export default function MenuContent({ hidden }: PropType) { icon: , url: "/panel/role-list", }, + userRole === "admin" && { + text: "Vehicles", + icon: , + url: "/panel/vehicle-list", + }, ]; const filteredMenuItems = baseMenuItems.filter(Boolean); diff --git a/src/components/OptionsMenu/index.tsx b/src/components/OptionsMenu/index.tsx index 1778e11..8ed491b 100644 --- a/src/components/OptionsMenu/index.tsx +++ b/src/components/OptionsMenu/index.tsx @@ -13,6 +13,7 @@ import MenuButton from "../MenuButton"; import { Avatar } from "@mui/material"; import { useNavigate } from "react-router-dom"; import Logout from "../LogOutFunction/LogOutFunction"; +import { ArrowDropDownIcon } from "@mui/x-date-pickers"; const MenuItem = styled(MuiMenuItem)({ margin: "2px 0", @@ -46,7 +47,7 @@ export default function OptionsMenu({ avatar }: { avatar?: boolean }) { onClick={handleClick} sx={{ borderColor: "transparent" }} > - {avatar ? ( + {/* {avatar ? ( ) : ( - )} + )} */} + Profile - My account + {/* My account Add another account - Settings - + Settings */} + {/* */} - {/* //Eknoor singh and jaanvi - //date:- 13-Feb-2025 - //Implemented logout functionality which was static previously */} - { e.stopPropagation(); setLogoutModal(true); }} + sx={{color:"red"}} > Logout @@ -109,9 +108,9 @@ export default function OptionsMenu({ avatar }: { avatar?: boolean }) { logoutModal={logoutModal} /> - + {/* - + */} diff --git a/src/components/SideMenu/index.tsx b/src/components/SideMenu/index.tsx index 0ff8e9e..357a0b8 100644 --- a/src/components/SideMenu/index.tsx +++ b/src/components/SideMenu/index.tsx @@ -29,10 +29,6 @@ const Drawer = styled(MuiDrawer)({ export default function SideMenu() { const [open, setOpen] = React.useState(true); - //Eknoor singh - //date:- 12-Feb-2025 - //Dispatch is called with user from Authstate Interface - const dispatch = useDispatch(); const { user } = useSelector((state: RootState) => state?.profileReducer); @@ -74,7 +70,7 @@ export default function SideMenu() {