From 6b5ac30f32eaf58400f9cd20a9df92bf30fc34ba Mon Sep 17 00:00:00 2001 From: hamid zarghami Date: Tue, 21 Jul 2026 12:29:11 +0330 Subject: [PATCH] split tasks and user --- src/config/SideBarSubMenu.ts | 3 +- src/helpers/permissions.ts | 2 +- src/shared/SideBar.tsx | 28 +++++++++--- src/shared/components/TaskManagerSubMenu.tsx | 45 ++++++++++++++++++++ src/shared/components/UsersSubMenu.tsx | 16 ------- 5 files changed, 71 insertions(+), 23 deletions(-) create mode 100644 src/shared/components/TaskManagerSubMenu.tsx diff --git a/src/config/SideBarSubMenu.ts b/src/config/SideBarSubMenu.ts index b35bd20..0b7200a 100644 --- a/src/config/SideBarSubMenu.ts +++ b/src/config/SideBarSubMenu.ts @@ -3,6 +3,7 @@ export const SideBarItemHasSubMenu = [ "customers", "representatives", "users", + "taskmanager", "content", "financial", "support", @@ -44,7 +45,7 @@ export const getSubMenuNameFromPath = (pathname: string): string => { } if (pathname.startsWith("/workspace") || pathname.startsWith("/project") || pathname.startsWith("/taskmanager")) { - return "users"; + return "taskmanager"; } const segment = pathname.split("/")[1] ?? ""; diff --git a/src/helpers/permissions.ts b/src/helpers/permissions.ts index a51905b..7986afe 100644 --- a/src/helpers/permissions.ts +++ b/src/helpers/permissions.ts @@ -159,7 +159,7 @@ export const CONTENT_PERMISSION_RESOURCES = ["blogs", "learnings", "advertisemen export const FINANCIAL_PERMISSION_RESOURCES = ["payments", "invoices", "transactions", "discounts", "bank_accounts"] as const; export const SUPPORT_PERMISSION_RESOURCES = ["support_plan", "tickets"] as const; export const TASK_MANAGER_PERMISSION_RESOURCES = ["workspace", "project", "task", "task_phase"] as const; -export const USERS_SIDEBAR_PERMISSION_RESOURCES = ["admins", ...TASK_MANAGER_PERMISSION_RESOURCES] as const; +export const USERS_SIDEBAR_PERMISSION_RESOURCES = ["admins"] as const; export const PRODUCT_PERMISSION_RESOURCES = ["dmenu", "dkala", "dpage", "dmail"] as const; type PermissionEntry = { name: string }; diff --git a/src/shared/SideBar.tsx b/src/shared/SideBar.tsx index 52cf0f2..e7ff639 100644 --- a/src/shared/SideBar.tsx +++ b/src/shared/SideBar.tsx @@ -9,6 +9,7 @@ import { Profile, Profile2User, Setting2, + TickSquare, UserOctagon, UserTick, } from "iconsax-react"; @@ -40,6 +41,7 @@ import ProductsSubMenu from "./components/ProductsSubMenu"; import ResellerSubMenu from "./components/ResellerSubMenu"; import ServicesSubMenu from "./components/ServicesSubMenu"; import SupportSubMenu from "./components/SupportSubMenu"; +import TaskManagerSubMenu from "./components/TaskManagerSubMenu"; import UsersSubMenu from "./components/UsersSubMenu"; import SideBarItem from "./SideBarItem"; import { useSharedStore } from "./store/sharedStore"; @@ -57,6 +59,7 @@ const SideBar: FC = () => { const permissions = adminPermissions?.data?.permissions; const hasProductPermission = hasAnyPermission(permissions, PRODUCT_PERMISSION_RESOURCES); + const hasTaskManagerPermission = hasAnyPermission(permissions, TASK_MANAGER_PERMISSION_RESOURCES); const productsDefaultLink = (() => { const permissionNames = permissions?.map((p: { name: string }) => p.name) ?? []; @@ -67,11 +70,7 @@ const SideBar: FC = () => { return Pages.dashboard; })(); - const usersDefaultLink = (() => { - if (hasPermission(permissions, "admins")) return Pages.users.list; - if (hasAnyPermission(permissions, TASK_MANAGER_PERMISSION_RESOURCES)) return Pages.taskmanager.workspaceList; - return Pages.users.list; - })(); + const usersDefaultLink = Pages.users.list; useEffect(() => { const groupName = getSubMenuNameFromPath(location.pathname); @@ -210,6 +209,23 @@ const SideBar: FC = () => { activeNames={USERS_SIDEBAR_PERMISSION_RESOURCES} /> + {hasTaskManagerPermission && ( + + } + title={t("sidebar.taskmanager")} + isActive={isGroupActive("taskmanager")} + link={Pages.taskmanager.workspaceList} + name="taskmanager" + activeNames={TASK_MANAGER_PERMISSION_RESOURCES} + /> + )} + { ) : subMenuName === "users" ? ( + ) : subMenuName === "taskmanager" ? ( + ) : subMenuName === "content" ? ( ) : subMenuName === "financial" ? ( diff --git a/src/shared/components/TaskManagerSubMenu.tsx b/src/shared/components/TaskManagerSubMenu.tsx new file mode 100644 index 0000000..2db4a64 --- /dev/null +++ b/src/shared/components/TaskManagerSubMenu.tsx @@ -0,0 +1,45 @@ +import { TickSquare } from "iconsax-react"; +import { FC } from "react"; +import { useTranslation } from "react-i18next"; +import { useLocation } from "react-router-dom"; +import { Pages } from "../../config/Pages"; +import { TASK_MANAGER_PERMISSION_RESOURCES } from "../../helpers/permissions"; +import SubMenuItem from "./SubMenuItem"; + +const TaskManagerSubMenu: FC = () => { + const location = useLocation(); + const { t } = useTranslation("global"); + + 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); + + return ( +
+
+ +
{t("sidebar.taskmanager")}
+
+ +
+ +
+
+ ); +}; + +export default TaskManagerSubMenu; diff --git a/src/shared/components/UsersSubMenu.tsx b/src/shared/components/UsersSubMenu.tsx index cc2294a..05eddab 100644 --- a/src/shared/components/UsersSubMenu.tsx +++ b/src/shared/components/UsersSubMenu.tsx @@ -3,7 +3,6 @@ import { FC } from "react"; import { useTranslation } from "react-i18next"; import { useLocation } from "react-router-dom"; import { Pages } from "../../config/Pages"; -import { TASK_MANAGER_PERMISSION_RESOURCES } from "../../helpers/permissions"; import SubMenuItem from "./SubMenuItem"; const UsersSubMenu: FC = () => { @@ -12,15 +11,6 @@ const UsersSubMenu: FC = () => { const isActive = (name: string) => 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); - return (
@@ -51,12 +41,6 @@ const UsersSubMenu: FC = () => { link={Pages.users.groupList} activeName="admins" /> -
);