update sidebar for task manager
deploy to danak / build_and_deploy (push) Has been cancelled

This commit is contained in:
hamid zarghami
2026-07-15 09:13:46 +03:30
parent f654ec61ef
commit 59048e9b5f
4 changed files with 24 additions and 134 deletions
-1
View File
@@ -8,5 +8,4 @@ export const SideBarItemHasSubMenu = [
"blog", "blog",
"support", "support",
"accessLogs", "accessLogs",
"taskmanager",
]; ];
+1 -1
View File
@@ -91,7 +91,7 @@
"reseller": "نماینده", "reseller": "نماینده",
"resellers": "نمایندگان", "resellers": "نمایندگان",
"withdraw": "درخواست های برداشت", "withdraw": "درخواست های برداشت",
"taskmanager": "مدیریت تسک ها" "taskmanager": "مدیریت تسک"
}, },
"reseller": { "reseller": {
"list": "لیست نمایندکان", "list": "لیست نمایندکان",
+23 -74
View File
@@ -1,6 +1,5 @@
import { import {
Activity, Activity,
Add,
ArrowDown2, ArrowDown2,
BagTick, BagTick,
Building, Building,
@@ -52,7 +51,6 @@ import LearningSubMenu from "./components/LearningSubMenu";
import ReceiptSubMenu from "./components/ReceiptSubMenu"; import ReceiptSubMenu from "./components/ReceiptSubMenu";
import ServicesSubMenu from "./components/ServicesSubMenu"; import ServicesSubMenu from "./components/ServicesSubMenu";
import SupportSubMenu from "./components/SupportSubMenu"; import SupportSubMenu from "./components/SupportSubMenu";
import TaskManagerSubMenu from "./components/TaskManagerSubMenu";
import TicketSubMenu from "./components/TicketSubMenu"; import TicketSubMenu from "./components/TicketSubMenu";
import UsersSubMenu from "./components/UsersSubMenu"; import UsersSubMenu from "./components/UsersSubMenu";
import SideBarItem from "./SideBarItem"; import SideBarItem from "./SideBarItem";
@@ -67,24 +65,23 @@ const SideBar: FC = () => {
return location.pathname.includes(name); return location.pathname.includes(name);
}; };
const isTaskManagerActive =
location.pathname.startsWith(Pages.taskmanager.workspace) ||
location.pathname === Pages.taskmanager.workspaceList ||
location.pathname.startsWith(Pages.taskmanager.updateWorkspace) ||
location.pathname === Pages.taskmanager.createWorkspace ||
location.pathname === Pages.taskmanager.createProject ||
location.pathname.startsWith(Pages.taskmanager.updateProject) ||
location.pathname.startsWith(Pages.taskmanager.projectList);
const [openMenu, setOpenMenu] = useState<string[]>(["menu"]); const [openMenu, setOpenMenu] = useState<string[]>(["menu"]);
useEffect(() => { useEffect(() => {
const split = location.pathname.split("/"); const split = location.pathname.split("/");
const isTaskManagerRoute =
location.pathname.startsWith(Pages.taskmanager.workspace) ||
location.pathname === Pages.taskmanager.workspaceList ||
location.pathname.startsWith(Pages.taskmanager.updateWorkspace) ||
location.pathname === Pages.taskmanager.createWorkspace ||
location.pathname === Pages.taskmanager.createProject ||
location.pathname === Pages.taskmanager.projectList;
if (SideBarItemHasSubMenu.includes(split[1])) { if (SideBarItemHasSubMenu.includes(split[1])) {
setSubMenuName(split[1]); setSubMenuName(split[1]);
setSubtMenu(true); setSubtMenu(true);
} else if (isTaskManagerRoute) {
setSubMenuName("taskmanager");
setSubtMenu(true);
} else { } else {
setSubMenuName(""); setSubMenuName("");
setSubtMenu(false); setSubtMenu(false);
@@ -454,68 +451,22 @@ const SideBar: FC = () => {
activeName="criticisms" activeName="criticisms"
/> />
</div> </div>
</div>
{ <div className="text-xs text-[#8C90A3]">
<div <SideBarItem
onClick={() => handleOpenMenu("taskmanager")} icon={
className={clx("mt-10 px-12 text-header text-sm font-normal cursor-pointer", hasSubMenu && "px-2 text-center", !hasSubMenu && "flex gap-2 items-center")} <Task
> variant={isTaskManagerActive ? "Bold" : "Outline"}
{t("sidebar.taskmanager")} color={isTaskManagerActive ? "black" : "#8C90A3"}
size={iconSizeSideBar}
<div className={clx("transition-all", !openMenu.includes("taskmanager") && "rotate-180", hasSubMenu && "hidden")}> />
<ArrowDown2 }
size={18} title={t("sidebar.taskmanager")}
color="#c3c7dd" isActive={isTaskManagerActive}
/> link={Pages.taskmanager.workspaceList}
</div> activeName=""
/>
</div> </div>
}
<div className={clx("text-xs text-[#8C90A3]", !openMenu.includes("taskmanager") && "hidden")}>
<SideBarItem
icon={
<Task
variant={location.pathname === Pages.taskmanager.workspaceList ? "Bold" : "Outline"}
color={location.pathname === Pages.taskmanager.workspaceList ? "black" : "#8C90A3"}
size={iconSizeSideBar}
/>
}
title={t("submenu.taskmanager_workspace_list")}
isActive={location.pathname === Pages.taskmanager.workspaceList}
link={Pages.taskmanager.workspaceList}
name="taskmanager"
activeName=""
/>
<SideBarItem
icon={
<Add
variant={location.pathname === Pages.taskmanager.createWorkspace ? "Bold" : "Outline"}
color={location.pathname === Pages.taskmanager.createWorkspace ? "black" : "#8C90A3"}
size={iconSizeSideBar}
/>
}
title={t("submenu.taskmanager_create_workspace")}
isActive={location.pathname === Pages.taskmanager.createWorkspace}
link={Pages.taskmanager.createWorkspace}
name="taskmanager"
activeName=""
/>
<SideBarItem
icon={
<Add
variant={location.pathname === Pages.taskmanager.createProject ? "Bold" : "Outline"}
color={location.pathname === Pages.taskmanager.createProject ? "black" : "#8C90A3"}
size={iconSizeSideBar}
/>
}
title={t("submenu.taskmanager_create_project")}
isActive={location.pathname === Pages.taskmanager.createProject}
link={Pages.taskmanager.createProject}
name="taskmanager"
activeName=""
/>
</div> </div>
{profile?.data?.user?.roles?.some((role: { name: string }) => role.name === "super_admin") && ( {profile?.data?.user?.roles?.some((role: { name: string }) => role.name === "super_admin") && (
@@ -991,8 +942,6 @@ const SideBar: FC = () => {
<SupportSubMenu /> <SupportSubMenu />
) : subMenuName === "accessLogs" ? ( ) : subMenuName === "accessLogs" ? (
<AccessLogsSubMenu /> <AccessLogsSubMenu />
) : subMenuName === "taskmanager" ? (
<TaskManagerSubMenu />
) : null} ) : null}
</div> </div>
)} )}
@@ -1,58 +0,0 @@
import { Task } from "iconsax-react";
import { FC } from "react";
import { useTranslation } from "react-i18next";
import { useLocation } from "react-router-dom";
import { Pages } from "../../config/Pages";
import SubMenuItem from "./SubMenuItem";
const TaskManagerSubMenu: FC = () => {
const { t } = useTranslation("global");
const location = useLocation();
const isWorkspaceListActive = location.pathname === Pages.taskmanager.workspaceList;
const isKanbanActive =
location.pathname.startsWith(Pages.taskmanager.workspace) &&
!isWorkspaceListActive;
const isCreateWorkspaceActive = location.pathname === Pages.taskmanager.createWorkspace;
const isProjectListActive = location.pathname === Pages.taskmanager.projectList;
const isCreateProjectActive = location.pathname === Pages.taskmanager.createProject;
return (
<div className="py-12">
<div className="flex gap-3 items-center border-b pb-10 px-6">
<Task size={24} color="#000" variant="Bold" />
<div className="text-xs">{t("sidebar.taskmanager")}</div>
</div>
<div className="flex flex-col mt-10 gap-4">
<SubMenuItem
title={t("submenu.taskmanager_workspace_list")}
isActive={isWorkspaceListActive}
link={Pages.taskmanager.workspaceList}
/>
<SubMenuItem
title={t("submenu.taskmanager_workspace")}
isActive={isKanbanActive}
link={Pages.taskmanager.workspace + "dpage"}
/>
<SubMenuItem
title={t("submenu.taskmanager_create_workspace")}
isActive={isCreateWorkspaceActive}
link={Pages.taskmanager.createWorkspace}
/>
<SubMenuItem
title={t("submenu.taskmanager_project_list")}
isActive={isProjectListActive}
link={Pages.taskmanager.projectList}
/>
<SubMenuItem
title={t("submenu.taskmanager_create_project")}
isActive={isCreateProjectActive}
link={Pages.taskmanager.createProject}
/>
</div>
</div>
);
};
export default TaskManagerSubMenu;