dmail section sidebar
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
VITE_TOKEN_NAME = 'admin_token'
|
VITE_TOKEN_NAME = 'admin_token'
|
||||||
VITE_REFRESH_TOKEN_NAME = 'admin_refresh_token'
|
VITE_REFRESH_TOKEN_NAME = 'admin_refresh_token'
|
||||||
VITE_BASE_URL = 'https://api.danakcorp.com'
|
# VITE_BASE_URL = 'https://api.danakcorp.com'
|
||||||
# VITE_BASE_URL = 'http://10.86.60.88:3500'
|
VITE_BASE_URL = 'http://172.27.254.88:3500'
|
||||||
@@ -4,6 +4,9 @@ export const Pages = {
|
|||||||
register: "/auth/register",
|
register: "/auth/register",
|
||||||
forgotPassword: "/auth/forgot",
|
forgotPassword: "/auth/forgot",
|
||||||
},
|
},
|
||||||
|
dmail: {
|
||||||
|
list: "/dmail/domain/list",
|
||||||
|
},
|
||||||
dashboard: "/dashboard",
|
dashboard: "/dashboard",
|
||||||
services: {
|
services: {
|
||||||
mine: "/services",
|
mine: "/services",
|
||||||
|
|||||||
+6
-1
@@ -83,7 +83,12 @@
|
|||||||
"shops": "فروشگاه ها",
|
"shops": "فروشگاه ها",
|
||||||
"sms_count": "تعداد پیامک",
|
"sms_count": "تعداد پیامک",
|
||||||
"subscriptions": "اشتراک ها",
|
"subscriptions": "اشتراک ها",
|
||||||
"financial": "مالی"
|
"financial": "مالی",
|
||||||
|
"dmail": "دی میل",
|
||||||
|
"domain": "دامنه"
|
||||||
|
},
|
||||||
|
"dmail": {
|
||||||
|
"domain": "لیست دامنه ها"
|
||||||
},
|
},
|
||||||
"slider": {
|
"slider": {
|
||||||
"new_slider": "اسلایدر جدید",
|
"new_slider": "اسلایدر جدید",
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
import { type FC } from 'react'
|
||||||
|
|
||||||
|
const Domains: FC = () => {
|
||||||
|
return (
|
||||||
|
<div>Domains</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Domains
|
||||||
@@ -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,
|
||||||
|
});
|
||||||
|
};
|
||||||
@@ -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;
|
||||||
|
};
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
export type ActiveDomainType = {
|
||||||
|
isActive: boolean;
|
||||||
|
id: string;
|
||||||
|
};
|
||||||
+37
-1
@@ -2,7 +2,7 @@ import { FC, useEffect, useState } from 'react'
|
|||||||
import LogoImage from '../assets/images/logo.svg'
|
import LogoImage from '../assets/images/logo.svg'
|
||||||
import LogoSmall from '../assets/images/logo-small.svg'
|
import LogoSmall from '../assets/images/logo-small.svg'
|
||||||
import { useTranslation } from 'react-i18next'
|
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 SideBarItem from './SideBarItem'
|
||||||
import { useLocation } from 'react-router-dom'
|
import { useLocation } from 'react-router-dom'
|
||||||
import { Pages } from '../config/Pages'
|
import { Pages } from '../config/Pages'
|
||||||
@@ -533,6 +533,42 @@ const SideBar: FC = () => {
|
|||||||
</div>
|
</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='flex-1 flex flex-col justify-end mt-14'>
|
||||||
<div className='text-xs text-[#8C90A3]'>
|
<div className='text-xs text-[#8C90A3]'>
|
||||||
|
|||||||
Reference in New Issue
Block a user