dmail section sidebar

This commit is contained in:
hamid zarghami
2026-04-09 12:57:20 +03:30
parent 331b575908
commit 3539d3adec
8 changed files with 88 additions and 4 deletions
+2 -2
View File
@@ -1,4 +1,4 @@
VITE_TOKEN_NAME = 'admin_token'
VITE_REFRESH_TOKEN_NAME = 'admin_refresh_token'
VITE_BASE_URL = 'https://api.danakcorp.com'
# VITE_BASE_URL = 'http://10.86.60.88:3500'
# VITE_BASE_URL = 'https://api.danakcorp.com'
VITE_BASE_URL = 'http://172.27.254.88:3500'
+3
View File
@@ -4,6 +4,9 @@ export const Pages = {
register: "/auth/register",
forgotPassword: "/auth/forgot",
},
dmail: {
list: "/dmail/domain/list",
},
dashboard: "/dashboard",
services: {
mine: "/services",
+6 -1
View File
@@ -83,7 +83,12 @@
"shops": "فروشگاه ها",
"sms_count": "تعداد پیامک",
"subscriptions": "اشتراک ها",
"financial": "مالی"
"financial": "مالی",
"dmail": "دی میل",
"domain": "دامنه"
},
"dmail": {
"domain": "لیست دامنه ها"
},
"slider": {
"new_slider": "اسلایدر جدید",
+9
View File
@@ -0,0 +1,9 @@
import { type FC } from 'react'
const Domains: FC = () => {
return (
<div>Domains</div>
)
}
export default Domains
+15
View File
@@ -0,0 +1,15 @@
import { useMutation, useQuery } from "@tanstack/react-query";
import * as api from "../service/DmailService";
export const useGetDomains = () => {
return useQuery({
queryKey: ["dmail-domains"],
queryFn: api.getDomains,
});
};
export const useActiveDomain = () => {
return useMutation({
mutationFn: api.activeDomain,
});
};
+12
View File
@@ -0,0 +1,12 @@
import axios from "../../../config/axios";
import { ActiveDomainType } from "../types/Types";
export const getDomains = async () => {
const { data } = await axios.get(`/dmail`);
return data;
};
export const activeDomain = async (params: ActiveDomainType) => {
const { data } = await axios.patch(`/dmail/${params.id}/active`, params);
return data;
};
+4
View File
@@ -0,0 +1,4 @@
export type ActiveDomainType = {
isActive: boolean;
id: string;
};
+37 -1
View File
@@ -2,7 +2,7 @@ import { FC, useEffect, useState } from 'react'
import LogoImage from '../assets/images/logo.svg'
import LogoSmall from '../assets/images/logo-small.svg'
import { useTranslation } from 'react-i18next'
import { Card, Code, CodeCircle, DocumentLike, DocumentText, Element3, Gallery, Headphone, Home2, Logout, Messages3, Money3, NotificationStatus, People, Profile, Receipt21, Setting2, SmsTracking, Teacher, TicketDiscount, UserSquare, Activity, Icon, Category, Warning2, Building, Sms, Chart21, ArrowDown2 } from 'iconsax-react'
import { Card, Code, CodeCircle, DocumentLike, DocumentText, Element3, Gallery, Headphone, Home2, Logout, Messages3, Money3, NotificationStatus, People, Profile, Receipt21, Setting2, SmsTracking, Teacher, TicketDiscount, UserSquare, Activity, Icon, Category, Warning2, Building, Sms, Chart21, ArrowDown2, Global } from 'iconsax-react'
import SideBarItem from './SideBarItem'
import { useLocation } from 'react-router-dom'
import { Pages } from '../config/Pages'
@@ -533,6 +533,42 @@ const SideBar: FC = () => {
</div>
</>
}
{
adminPermissions?.data?.permissions?.some((permission: { name: string }) => permission.name === 'dmail') &&
<>
<div onClick={() => handleOpenMenu('dmail')} 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'
)}>
{t('sidebar.dmail')}
<div className={clx(
'transition-all',
!openMenu.includes('dmail') && 'rotate-180',
hasSubMenu && 'hidden'
)}>
<ArrowDown2 size={18} color='#c3c7dd' />
</div>
</div>
<div className={clx(
'flex-1 flex flex-col justify-end',
!openMenu.includes('dmail') && 'hidden'
)}>
<div className='text-xs text-[#8C90A3]'>
<SideBarItem
icon={<Global variant={isActive('dmail/domain/list') ? 'Bold' : 'Outline'} color={isActive('dmail/domain/list') ? 'black' : '#8C90A3'} size={iconSizeSideBar} />}
title={t('sidebar.domain')}
isActive={isActive('dmail/domain/list')}
link={Pages.dmail.list}
activeName='dmail'
/>
</div>
</div>
</>
}
<div className='flex-1 flex flex-col justify-end mt-14'>
<div className='text-xs text-[#8C90A3]'>