Compare commits
22 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 40b5e92047 | |||
| bc867ee8aa | |||
| 7c430d03bd | |||
| 9125990d70 | |||
| e64728e127 | |||
| d82b454caf | |||
| db423a3f1e | |||
| 4376938217 | |||
| 0411ab82f0 | |||
| c7d5d5533c | |||
| 3f7c673087 | |||
| da389c937e | |||
| c71d901556 | |||
| 804f76100a | |||
| 64f6e55fb6 | |||
| 16119dc332 | |||
| ae08f392ca | |||
| b646f020a5 | |||
| 31b411dcab | |||
| 48d66d263e | |||
| 2a6900f6a9 | |||
| 8b3e1e8923 |
@@ -75,4 +75,23 @@ export const AmountTo2DP = (
|
|||||||
|
|
||||||
// return formattedNumber;
|
// return formattedNumber;
|
||||||
return formattedNumber;
|
return formattedNumber;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// FUNCTION TO RETURN CURRENCY SYMBOL
|
||||||
|
export const currencySymbol = (
|
||||||
|
currencyName = "naira",
|
||||||
|
amount = "00",
|
||||||
|
) => {
|
||||||
|
// Cureency Array
|
||||||
|
let currencyArray = [
|
||||||
|
{currencyName:'naira', symbol:'₦'},
|
||||||
|
{currencyName:'usd', symbol:'$'},
|
||||||
|
]
|
||||||
|
|
||||||
|
const matchedCurrency = currencyArray.filter(item => item.currencyName.toLocaleLowerCase() == currencyName.toLocaleLowerCase())
|
||||||
|
const amountTo2DP = AmountTo2DP(amount)
|
||||||
|
// return formattedNumber;
|
||||||
|
return matchedCurrency.length ? <><span>{matchedCurrency[0].symbol}</span><span>{amountTo2DP}</span></> : <><span>$</span><span>{amountTo2DP}</span></>;
|
||||||
};
|
};
|
||||||
@@ -7,7 +7,8 @@ import PaginatedList from '../../components/Pagination/PaginatedList';
|
|||||||
|
|
||||||
import LoadingSpinner from '../Spinners/LoadingSpinner';
|
import LoadingSpinner from '../Spinners/LoadingSpinner';
|
||||||
|
|
||||||
import { AmountTo2DP } from '../Helpers/PriceFormatter';
|
import { currencySymbol } from '../Helpers/PriceFormatter';
|
||||||
|
import {NewDateTimeFormatter} from '../../lib/NewDateTimeFormatter'
|
||||||
|
|
||||||
function JobsCompleted() {
|
function JobsCompleted() {
|
||||||
|
|
||||||
@@ -47,7 +48,7 @@ function JobsCompleted() {
|
|||||||
}, [])
|
}, [])
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className='p-4 flex flex-col justify-between min-h-[500px]'>
|
<div className='py-4 flex flex-col justify-between min-h-[500px]'>
|
||||||
{jobHistory?.loading ?
|
{jobHistory?.loading ?
|
||||||
<LoadingSpinner size='16' color='sky-blue' height='h-[500px]' />
|
<LoadingSpinner size='16' color='sky-blue' height='h-[500px]' />
|
||||||
: jobHistory?.data?.length ?
|
: jobHistory?.data?.length ?
|
||||||
@@ -71,12 +72,11 @@ function JobsCompleted() {
|
|||||||
<div className='flex flex-col'>
|
<div className='flex flex-col'>
|
||||||
<h1 className='text-lg font-bold line-clamp-1'>{item?.title}</h1>
|
<h1 className='text-lg font-bold line-clamp-1'>{item?.title}</h1>
|
||||||
<p className='text-sm line-clamp-2'>{item?.description}</p>
|
<p className='text-sm line-clamp-2'>{item?.description}</p>
|
||||||
|
<p className='text-sm line-clamp-2'>{NewDateTimeFormatter(item?.delivery_date)}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td className="p-4 text-right">{AmountTo2DP(item?.price*0.01)} {item?.currency}</td>
|
<td className="p-4 flex text-right justify-end items-center">{currencySymbol(item?.currency_code, item?.price*0.01)}</td>
|
||||||
{/* <td className="p-4">{date}</td>
|
|
||||||
<td className="p-4">{item?.contract}</td> */}
|
|
||||||
</tr>
|
</tr>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import PaginatedList from '../../components/Pagination/PaginatedList';
|
|||||||
|
|
||||||
import LoadingSpinner from '../Spinners/LoadingSpinner';
|
import LoadingSpinner from '../Spinners/LoadingSpinner';
|
||||||
|
|
||||||
import { AmountTo2DP } from '../Helpers/PriceFormatter';
|
import { currencySymbol } from '../Helpers/PriceFormatter';
|
||||||
|
|
||||||
|
|
||||||
export const RewardsTable = memo(() => {
|
export const RewardsTable = memo(() => {
|
||||||
@@ -47,7 +47,7 @@ export const RewardsTable = memo(() => {
|
|||||||
}, [])
|
}, [])
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className='p-4 flex flex-col justify-between min-h-[500px]'>
|
<div className='py-4 flex flex-col justify-between min-h-[500px] w-full overflow-x-auto'>
|
||||||
{familyRewardHistory.loading ?
|
{familyRewardHistory.loading ?
|
||||||
<LoadingSpinner size='16' color='sky-blue' height='h-[500px]' />
|
<LoadingSpinner size='16' color='sky-blue' height='h-[500px]' />
|
||||||
: familyRewardHistory.data.length ?
|
: familyRewardHistory.data.length ?
|
||||||
@@ -55,9 +55,9 @@ export const RewardsTable = memo(() => {
|
|||||||
<thead className='w-full'>
|
<thead className='w-full'>
|
||||||
<tr className='text-slate-600 dark:text-white'>
|
<tr className='text-slate-600 dark:text-white'>
|
||||||
<th className="p-4"></th>
|
<th className="p-4"></th>
|
||||||
<th className="p-4 text-right">Amount</th>
|
<th className="p-4 text-center">Amount</th>
|
||||||
<th className="p-4">Date</th>
|
<th className="p-4 text-center">Date</th>
|
||||||
<th className="p-4">Confirmation</th>
|
<th className="p-4 text-center">Confirmation</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
@@ -65,18 +65,18 @@ export const RewardsTable = memo(() => {
|
|||||||
let date = new Date(item.added).toLocaleDateString()
|
let date = new Date(item.added).toLocaleDateString()
|
||||||
return (
|
return (
|
||||||
<tr key={index} className='dark:text-white dark:bg-dark-white border-y dark:border-[#5356fb29] hover:bg-gray-50 dark:hover:bg-gray-50 dark:hover:text-black transition-all duration-300'>
|
<tr key={index} className='dark:text-white dark:bg-dark-white border-y dark:border-[#5356fb29] hover:bg-gray-50 dark:hover:bg-gray-50 dark:hover:text-black transition-all duration-300'>
|
||||||
<td className="p-4">
|
<td className="p-4 min-w-[300px]">
|
||||||
<div className='flex items-center gap-2'>
|
<div className='flex w-full items-center gap-2'>
|
||||||
<img src={item.icon} className='min-w-[60px] max-w-[60px] min-h-[60px] max-h-[60px] rounded-full bg-slate-500' alt='Reward Logo' />
|
<img src={item.icon} className='min-w-[60px] max-w-[60px] min-h-[60px] max-h-[60px] rounded-full bg-slate-500' alt='Reward Logo' />
|
||||||
<div className='flex flex-col'>
|
<div className='flex flex-col w-full'>
|
||||||
<h1 className='text-lg font-bold'>Reward to {item.rec_firstname} {item.rec_lastname}</h1>
|
<h1 className='text-lg font-bold'>Reward to {item.rec_firstname} {item.rec_lastname}</h1>
|
||||||
<p className='text-sm'>{item.description}</p>
|
<p className='text-sm'>{item.description}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td className="p-4 text-right">{AmountTo2DP(item.amount*0.01)} {item.currency}</td>
|
<td className="p-4 text-right flex-nowrap">{currencySymbol(item.currency, item.amount*0.01)}</td>
|
||||||
<td className="p-4">{date}</td>
|
<td className="p-4 text-center">{date}</td>
|
||||||
<td className="p-4">{item.confirmation}</td>
|
<td className="p-4 text-center">{item.confirmation}</td>
|
||||||
</tr>
|
</tr>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -127,7 +127,7 @@ export default function History() {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="w-[1px] bg-[#E3E4FE] dark:bg-[#a7a9b533] mr-10"></div>
|
<div className="w-[1px] bg-[#E3E4FE] dark:bg-[#a7a9b533] mr-10"></div>
|
||||||
<div className="flex-1 overflow-y-auto min-h-[520px]">
|
<div className="w-full overflow-y-auto min-h-[520px]">
|
||||||
<>
|
<>
|
||||||
{/* PURCHASE SECTION */}
|
{/* PURCHASE SECTION */}
|
||||||
{selectedTab == 'purchases' &&
|
{selectedTab == 'purchases' &&
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ export default function HomeActivities({ className }) {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
className={`update-table w-full p-8 bg-white dark:bg-dark-white overflow-hidden rounded-2xl relative min-h-[520px] ${
|
className={`update-table w-full bg-white dark:bg-dark-white overflow-hidden rounded-2xl relative min-h-[520px] ${
|
||||||
className || ""
|
className || ""
|
||||||
}`}
|
}`}
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -19,8 +19,7 @@ export default function ActiveJobMessage({ activeJobMesList }) {
|
|||||||
// }
|
// }
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className='flex flex-col justify-between'>
|
<div className="w-full h-full max-h-[343px] overflow-y-auto">
|
||||||
<div className="w-full h-full min-h-[250px] max-h-[300px] overflow-y-auto">
|
|
||||||
<table className="wallet-activity w-full table-auto border-collapse text-left">
|
<table className="wallet-activity w-full table-auto border-collapse text-left">
|
||||||
<thead className='border-b-2'>
|
<thead className='border-b-2'>
|
||||||
<tr className='text-slate-600'>
|
<tr className='text-slate-600'>
|
||||||
@@ -71,9 +70,10 @@ export default function ActiveJobMessage({ activeJobMesList }) {
|
|||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* PAGINATION BUTTON */}
|
// <div className='flex flex-col justify-between'>
|
||||||
{/* <PaginatedList onClick={handlePagination} prev={currentPage == 0 ? true : false} next={currentPage+Number(process.env.REACT_APP_ITEM_PER_PAGE) >= activeJobMesList?.data?.length ? true : false} data={activeJobMesList?.data} start={indexOfFirstItem} stop={indexOfLastItem} /> */}
|
// PAGINATION BUTTON
|
||||||
{/* END OF PAGINATION BUTTON */}
|
// <PaginatedList onClick={handlePagination} prev={currentPage == 0 ? true : false} next={currentPage+Number(process.env.REACT_APP_ITEM_PER_PAGE) >= activeJobMesList?.data?.length ? true : false} data={activeJobMesList?.data} start={indexOfFirstItem} stop={indexOfLastItem} />
|
||||||
</div>
|
// END OF PAGINATION BUTTON
|
||||||
|
// </div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ import IndexJobActions from "./JobActions/IndexJobActions";
|
|||||||
import usersService from "../../services/UsersService";
|
import usersService from "../../services/UsersService";
|
||||||
import { PriceFormatter } from "../Helpers/PriceFormatter";
|
import { PriceFormatter } from "../Helpers/PriceFormatter";
|
||||||
import { SocketValues } from "../Contexts/SocketIOContext";
|
import { SocketValues } from "../Contexts/SocketIOContext";
|
||||||
import TabButton from "../customTabs/TabButton";
|
import ManageJobTab from "../customTabs/ManageJobTab";
|
||||||
import AttachFile from "../attachmentCom/AttachFile";
|
import AttachFile from "../attachmentCom/AttachFile";
|
||||||
|
|
||||||
import JobDetailPopout from "./JobDetailPopout";
|
import JobDetailPopout from "./JobDetailPopout";
|
||||||
@@ -390,8 +390,8 @@ function ActiveJobs(props) {
|
|||||||
{/* end of job details */}
|
{/* end of job details */}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="my-4 py-[20px] bg-white dark:bg-black px-4 rounded-2xl shadow-md lg:flex justify-between items-start space-y-4 lg:space-x-4 lg:space-y-0">
|
<div className="my-4 py-[20px] bg-white dark:bg-black px-4 rounded-2xl shadow-md grid grid-cols-1 lg:grid-cols-2 gap-3">
|
||||||
<div className="w-full lg:w-1/2 mb-4 border-b pb-4 lg:pb-0 lg:mb-0 lg:border-b-0">
|
<div className="w-full mb-4 border-b pb-4 lg:pb-0 lg:mb-0 lg:border-b-0">
|
||||||
<div className="">
|
<div className="">
|
||||||
<h1 className="text-lg font-bold text-dark-gray dark:text-white tracking-wide">
|
<h1 className="text-lg font-bold text-dark-gray dark:text-white tracking-wide">
|
||||||
Actions
|
Actions
|
||||||
@@ -408,7 +408,7 @@ function ActiveJobs(props) {
|
|||||||
{/* switch button */}
|
{/* switch button */}
|
||||||
<div className="grid grid-cols-2">
|
<div className="grid grid-cols-2">
|
||||||
{tabs.map((item) => (
|
{tabs.map((item) => (
|
||||||
<TabButton
|
<ManageJobTab
|
||||||
key={item}
|
key={item}
|
||||||
item={item}
|
item={item}
|
||||||
selectedTab={selectedTab}
|
selectedTab={selectedTab}
|
||||||
@@ -545,14 +545,16 @@ function ActiveJobs(props) {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
{/* MESSAGE SECTION */}
|
{/* MESSAGE SECTION */}
|
||||||
<div className="w-full lg:w-1/2">
|
<div className="w-full flex flex-col">
|
||||||
<div className="mb-4">
|
{props.details &&
|
||||||
<AttachFile
|
<div className="mb-4">
|
||||||
data={props.details}
|
<AttachFile
|
||||||
showOnData={true}
|
data={props.details}
|
||||||
fontSize={'text-lg'}
|
showOnData={true}
|
||||||
/>
|
fontSize={'text-lg'}
|
||||||
</div>
|
/>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
<div className="flex justify-between items-center gap-5">
|
<div className="flex justify-between items-center gap-5">
|
||||||
<p className="w-full text-lg font-bold text-dark-gray dark:text-white tracking-wide flex items-center gap-2 justify-between">
|
<p className="w-full text-lg font-bold text-dark-gray dark:text-white tracking-wide flex items-center gap-2 justify-between">
|
||||||
<span>Message</span>
|
<span>Message</span>
|
||||||
@@ -671,37 +673,46 @@ const PopModal = ({
|
|||||||
</svg>
|
</svg>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div className="job-action-modal-body w-full px-10 py-8 gap-4">
|
<div className="job-action-modal-body w-full px-10 py-2 gap-4">
|
||||||
<div className="w-full flex flex-col items-center">
|
<div className="w-full">
|
||||||
{activeJobMesList.loading ? (
|
{activeJobMesList.loading ? (
|
||||||
<LoadingSpinner size="16" color="sky-blue" />
|
<LoadingSpinner size="16" color="sky-blue" />
|
||||||
) : (
|
) : (
|
||||||
<div className="message-table h-[500px] overflow-y-auto">
|
<div className="message-table h-[500px] overflow-y-auto">
|
||||||
<table className="wallet-activity w-full table-auto border-collapse text-left">
|
<table className="wallet-activity w-full table-auto border-collapse text-left">
|
||||||
<thead className="border-b-2">
|
{/* <thead className="border-b-0">
|
||||||
<tr className="text-slate-600">
|
<tr className="text-slate-600">
|
||||||
<th className="p-2"></th>
|
<th className="p-0"></th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead> */}
|
||||||
{activeJobMesList?.data?.length ? (
|
{activeJobMesList?.data?.length ? (
|
||||||
<tbody>
|
<tbody>
|
||||||
{activeJobMesList?.data?.map((item, index) => (
|
{activeJobMesList?.data?.map((item, index) => {
|
||||||
|
let imageLink = `${activeJobMesList?.image}${localStorage.getItem('session_token')}/contracts/${item.msg_uid}`
|
||||||
|
|
||||||
|
return (
|
||||||
<tr key={index} className="text-slate-500">
|
<tr key={index} className="text-slate-500">
|
||||||
<td>
|
<td>
|
||||||
<div className="msg_box">
|
<div className={`msg_box ${item.who}`}>
|
||||||
<div className="msg_header">
|
<div className="msg_header">
|
||||||
{item.msg_date} {item.msg_firstname}
|
{item.msg_date} {item.msg_firstname}
|
||||||
</div>
|
</div>
|
||||||
<span
|
{/* <span
|
||||||
className="p-2"
|
className="p-2"
|
||||||
dangerouslySetInnerHTML={{
|
dangerouslySetInnerHTML={{
|
||||||
__html: item.message,
|
__html: item.message,
|
||||||
}}
|
}}
|
||||||
></span>
|
></span> */}
|
||||||
|
{item.msg_type == 'FILE' ?
|
||||||
|
<a href={imageLink} target="_blank" className="p-2" dangerouslySetInnerHTML={{__html: item.message}}></a>
|
||||||
|
:
|
||||||
|
<span className="p-2" dangerouslySetInnerHTML={{__html: item.message}}></span>
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
))}
|
)
|
||||||
|
})}
|
||||||
</tbody>
|
</tbody>
|
||||||
) : activeJobMesList.error ? (
|
) : activeJobMesList.error ? (
|
||||||
<tbody>
|
<tbody>
|
||||||
|
|||||||
@@ -6,11 +6,13 @@ import LoadingSpinner from '../../Spinners/LoadingSpinner'
|
|||||||
|
|
||||||
import usersService from '../../../services/UsersService'
|
import usersService from '../../../services/UsersService'
|
||||||
|
|
||||||
|
import {NewDateTimeFormatter }from '../../../lib/NewDateTimeFormatter'
|
||||||
|
|
||||||
function CurrentTaskAction({jobDetails}) {
|
function CurrentTaskAction({jobDetails}) {
|
||||||
|
|
||||||
const currTime = new Date().getTime() / (1000*60*60)
|
const currTime = new Date().getTime() / (1000*60*60)
|
||||||
const minDueTime = new Date(jobDetails?.minimum_due).getTime() / (1000*60*60)
|
const minDueTime = new Date(jobDetails?.minimum_due).getTime() / (1000*60*60)
|
||||||
const canSendForReview = jobDetails.strict_timeline ? currTime >= minDueTime : true // calculation to determine when send for review button will be active
|
const canSendForReview = Number(jobDetails.strict_timeline) ? currTime >= minDueTime : true // calculation to determine when send for review button will be active
|
||||||
|
|
||||||
const apiCall = new usersService()
|
const apiCall = new usersService()
|
||||||
const navigate = useNavigate()
|
const navigate = useNavigate()
|
||||||
@@ -69,7 +71,7 @@ function CurrentTaskAction({jobDetails}) {
|
|||||||
<div className="h-full w-full text-sm text-left text-gray-500">
|
<div className="h-full w-full text-sm text-left text-gray-500">
|
||||||
{jobDetails.job_type == 'MEDIA' ?
|
{jobDetails.job_type == 'MEDIA' ?
|
||||||
<div className="h-full flex justify-center items-center">
|
<div className="h-full flex justify-center items-center">
|
||||||
<button onClick={popUpHandler} type="button" className="btn-gradient h-full text-white p-1 lg:p-2 border-4 border-slate-300 text-lg lg:text-xl font-medium rounded-2xl">
|
<button onClick={popUpHandler} type="button" className="btn-gradient h-full text-white px-5 py-2 border-4 border-slate-300 text-lg lg:text-xl font-medium rounded-2xl">
|
||||||
I have completed this task
|
I have completed this task
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
@@ -82,7 +84,7 @@ function CurrentTaskAction({jobDetails}) {
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="flex justify-center items-center">
|
<div className="flex justify-center items-center">
|
||||||
<button onClick={popUpHandler} type="button" className="custom-btn btn-gradient text-white">
|
<button onClick={popUpHandler} type="button" className="custom-btn btn-gradient px-5 py-2 text-white">
|
||||||
Send for Review
|
Send for Review
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
@@ -124,7 +126,18 @@ function CurrentTaskAction({jobDetails}) {
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div className="job-action-modal-body w-full px-10 py-8 gap-4">
|
<div className="job-action-modal-body w-full px-10 py-8 gap-4">
|
||||||
<div className="w-full flex flex-col gap-8 items-center">
|
<div className="w-full flex flex-col min-h-[150px] gap-8 items-center">
|
||||||
|
{!canSendForReview ?
|
||||||
|
<>
|
||||||
|
<h1
|
||||||
|
// className='font-bold text-base tracking-wide text-dark-gray dark:text-white'
|
||||||
|
className='font-bold text-xl tracking-wide text-red-500 text-center'
|
||||||
|
>
|
||||||
|
This task can be marked completed after {NewDateTimeFormatter(jobDetails?.minimum_due)}
|
||||||
|
</h1>
|
||||||
|
|
||||||
|
</>
|
||||||
|
:
|
||||||
<>
|
<>
|
||||||
<div className="flex justify-center items-center gap-2">
|
<div className="flex justify-center items-center gap-2">
|
||||||
<input
|
<input
|
||||||
@@ -132,7 +145,6 @@ function CurrentTaskAction({jobDetails}) {
|
|||||||
checked={checked}
|
checked={checked}
|
||||||
onChange={()=>{setChecked(prev => !prev)}}
|
onChange={()=>{setChecked(prev => !prev)}}
|
||||||
className='w-6 h-6 text-sky-blue bg-gray-100 focus:ring-sky-blue'
|
className='w-6 h-6 text-sky-blue bg-gray-100 focus:ring-sky-blue'
|
||||||
disabled={!canSendForReview}
|
|
||||||
/>
|
/>
|
||||||
<p className='font-bold text-base tracking-wide text-dark-gray dark:text-white'>If you have completed this task</p>
|
<p className='font-bold text-base tracking-wide text-dark-gray dark:text-white'>If you have completed this task</p>
|
||||||
</div>
|
</div>
|
||||||
@@ -163,18 +175,8 @@ function CurrentTaskAction({jobDetails}) {
|
|||||||
}
|
}
|
||||||
{/* END OF FOR SUCCESS/ERROR DISPLAY SECTION*/}
|
{/* END OF FOR SUCCESS/ERROR DISPLAY SECTION*/}
|
||||||
|
|
||||||
{!canSendForReview &&
|
|
||||||
<>
|
|
||||||
<h1
|
|
||||||
// className='font-bold text-base tracking-wide text-dark-gray dark:text-white'
|
|
||||||
className='font-bold text-xl tracking-wide text-red-500 text-center'
|
|
||||||
>
|
|
||||||
This task requires you use about 80% of the time allocated
|
|
||||||
</h1>
|
|
||||||
|
|
||||||
</>
|
|
||||||
}
|
|
||||||
</>
|
</>
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{/* cancel btn */}
|
{/* cancel btn */}
|
||||||
|
|||||||
@@ -121,7 +121,7 @@ function PastDueJobAction({jobDetails}) {
|
|||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
onClick={popUpHandler}
|
onClick={popUpHandler}
|
||||||
className="custom-btn btn-gradient text-base text-white"
|
className="custom-btn btn-gradient px-5 py-2 text-base text-white"
|
||||||
>
|
>
|
||||||
Cancel or Extend Timeline
|
Cancel or Extend Timeline
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -129,7 +129,7 @@ function PastDueTaskAction({jobDetails}) {
|
|||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
onClick={popUpHandler}
|
onClick={popUpHandler}
|
||||||
className="custom-btn btn-gradient text-base text-white"
|
className="custom-btn btn-gradient px-5 py-2 text-base text-white"
|
||||||
>
|
>
|
||||||
Request Extension
|
Request Extension
|
||||||
</button>
|
</button>
|
||||||
|
|||||||
@@ -36,7 +36,21 @@ export default function JobDetailPopout({action, situation, jobDetail}) {
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div className="modal-body-wrapper">
|
<div className="modal-body-wrapper">
|
||||||
<p className='w-full text-left text-sm md:text-lg lg:text-xl text-slate-900 dark:text-white'>{jobDetail}</p>
|
{/* <p className='w-full text-left text-sm md:text-lg lg:text-xl text-slate-900 dark:text-white'>{jobDetail}</p> */}
|
||||||
|
{/* <div
|
||||||
|
className='w-full text-left text-sm md:text-lg lg:text-xl text-slate-900 dark:text-white'
|
||||||
|
dangerouslySetInnerHTML={{__html: jobDetail}}
|
||||||
|
>
|
||||||
|
</div> */}
|
||||||
|
<textarea
|
||||||
|
id="Job Delivery Details"
|
||||||
|
readOnly
|
||||||
|
// rows="5"
|
||||||
|
className={`w-full h-full overflow-y-auto text-left text-sm md:text-lg lg:text-xl text-slate-900 dark:text-white`}
|
||||||
|
style={{ resize: "none" }}
|
||||||
|
name="job_detail"
|
||||||
|
value={jobDetail}
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div className="modal-footer-wrapper justify-end">
|
<div className="modal-footer-wrapper justify-end">
|
||||||
<button
|
<button
|
||||||
|
|||||||
@@ -3,6 +3,8 @@ import React, {useState} from 'react'
|
|||||||
import PaginatedList from '../../Pagination/PaginatedList';
|
import PaginatedList from '../../Pagination/PaginatedList';
|
||||||
import { handlePagingFunc } from '../../Pagination/HandlePagination';
|
import { handlePagingFunc } from '../../Pagination/HandlePagination';
|
||||||
|
|
||||||
|
import { currencySymbol } from '../../Helpers/PriceFormatter';
|
||||||
|
|
||||||
function PurchasesTable({purchase}) {
|
function PurchasesTable({purchase}) {
|
||||||
|
|
||||||
const [currentPage, setCurrentPage] = useState(0);
|
const [currentPage, setCurrentPage] = useState(0);
|
||||||
@@ -15,7 +17,7 @@ function PurchasesTable({purchase}) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className='p-4 flex flex-col justify-between min-h-[500px]'>
|
<div className='py-4 flex flex-col justify-between min-h-[500px]'>
|
||||||
{purchase.data.length ?
|
{purchase.data.length ?
|
||||||
<table className="wallet-activity w-full table-auto border-collapse text-left">
|
<table className="wallet-activity w-full table-auto border-collapse text-left">
|
||||||
<thead className='w-full'>
|
<thead className='w-full'>
|
||||||
@@ -31,8 +33,8 @@ function PurchasesTable({purchase}) {
|
|||||||
<td className="p-4">{item.added_date}<br />
|
<td className="p-4">{item.added_date}<br />
|
||||||
<b>{item.confirmation} </b>
|
<b>{item.confirmation} </b>
|
||||||
</td>
|
</td>
|
||||||
<td className="p-4 text-right">{item.amount}</td>
|
<td className="p-4 text-right">{currencySymbol(item.currency, item.amount)}</td>
|
||||||
<td className="p-4 text-right">{item.fee}</td>
|
<td className="p-4 text-right">{currencySymbol(item.currency, item.fee)}</td>
|
||||||
</tr>
|
</tr>
|
||||||
))}
|
))}
|
||||||
</tbody>
|
</tbody>
|
||||||
|
|||||||
@@ -3,6 +3,8 @@ import React, { useState } from "react";
|
|||||||
import PaginatedList from "../../Pagination/PaginatedList";
|
import PaginatedList from "../../Pagination/PaginatedList";
|
||||||
import { handlePagingFunc } from "../../Pagination/HandlePagination";
|
import { handlePagingFunc } from "../../Pagination/HandlePagination";
|
||||||
|
|
||||||
|
import { currencySymbol } from '../../Helpers/PriceFormatter';
|
||||||
|
|
||||||
function RecentActivityTable({ payment }) {
|
function RecentActivityTable({ payment }) {
|
||||||
const [currentPage, setCurrentPage] = useState(0);
|
const [currentPage, setCurrentPage] = useState(0);
|
||||||
const indexOfFirstItem = Number(currentPage);
|
const indexOfFirstItem = Number(currentPage);
|
||||||
@@ -18,7 +20,7 @@ function RecentActivityTable({ payment }) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="p-4 flex flex-col justify-between min-h-[500px]">
|
<div className="py-4 flex flex-col justify-between min-h-[500px]">
|
||||||
{payment?.data?.length > 0 ?
|
{payment?.data?.length > 0 ?
|
||||||
<table className="wallet-activity w-full table-auto border-collapse text-left">
|
<table className="wallet-activity w-full table-auto border-collapse text-left">
|
||||||
<thead className="w-full">
|
<thead className="w-full">
|
||||||
@@ -38,9 +40,9 @@ function RecentActivityTable({ payment }) {
|
|||||||
dangerouslySetInnerHTML={{ __html: item.recipient }}
|
dangerouslySetInnerHTML={{ __html: item.recipient }}
|
||||||
></td>
|
></td>
|
||||||
<td className="p-4 text-right">
|
<td className="p-4 text-right">
|
||||||
{item.amount}
|
{currencySymbol(item.currency, item.amount)}
|
||||||
<br />
|
<br />
|
||||||
{item.fee}
|
{currencySymbol(item.currency, item.fee)}
|
||||||
</td>
|
</td>
|
||||||
<td className="p-4">{item.status}</td>
|
<td className="p-4">{item.status}</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|||||||
@@ -73,18 +73,22 @@ export default function WalletItemCard({ walletItem, payment, countries }) {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<p className="text-lg text-white tracking-wide flex justify-center items-center gap-8">
|
{walletItem.escrow > 0 ?
|
||||||
HOLDINGS :{" "}
|
<p className="text-lg text-white tracking-wide flex justify-center items-center gap-8">
|
||||||
<span className="xxs:scale-100 lg:scale-100 xl:scale-125">
|
HOLDINGS :{" "}
|
||||||
{PriceFormatter(
|
<span className="xxs:scale-100 lg:scale-100 xl:scale-125">
|
||||||
walletItem.escrow * 0.01,
|
{PriceFormatter(
|
||||||
walletItem.code,
|
walletItem.escrow * 0.01,
|
||||||
undefined,
|
walletItem.code,
|
||||||
"text-[1.5rem]"
|
undefined,
|
||||||
)}
|
"text-[1.5rem]"
|
||||||
</span>
|
)}
|
||||||
</p>
|
</span>
|
||||||
|
</p>
|
||||||
|
:
|
||||||
|
null
|
||||||
|
}
|
||||||
|
|
||||||
<div className="w-full h-[1px] bg-white"></div>
|
<div className="w-full h-[1px] bg-white"></div>
|
||||||
|
|
||||||
|
|||||||
@@ -413,7 +413,7 @@ export default function Header({ logoutModalHandler, sidebarHandler }) {
|
|||||||
</div>
|
</div>
|
||||||
</Link>
|
</Link>
|
||||||
</li>
|
</li>
|
||||||
{userDetails && userDetails?.account_type !== "FAMILY" && (
|
{(userDetails && userDetails?.account_type !== "FAMILY" && Number(process.env.REACT_APP_SHOW_USER_PAGE) == 1) && (
|
||||||
<li className="content-item my-2 hover:bg-slate-100 transition duration-500 rounded-lg">
|
<li className="content-item my-2 hover:bg-slate-100 transition duration-500 rounded-lg">
|
||||||
<Link to="/yourpage" className="notifications">
|
<Link to="/yourpage" className="notifications">
|
||||||
<div className="name">
|
<div className="name">
|
||||||
|
|||||||
@@ -457,7 +457,7 @@ export default function MediaHeader({ logoutModalHandler, sidebarHandler, backpa
|
|||||||
</div>
|
</div>
|
||||||
</Link>
|
</Link>
|
||||||
</li>
|
</li>
|
||||||
{userDetails && userDetails?.account_type !== "FAMILY" && (
|
{(userDetails && userDetails?.account_type !== "FAMILY" && Number(process.env.REACT_APP_SHOW_USER_PAGE) == 1) && (
|
||||||
<li className="content-item my-2 hover:bg-slate-100 transition duration-500 rounded-lg">
|
<li className="content-item my-2 hover:bg-slate-100 transition duration-500 rounded-lg">
|
||||||
<Link to="/yourpage" className="notifications">
|
<Link to="/yourpage" className="notifications">
|
||||||
<div className="name">
|
<div className="name">
|
||||||
|
|||||||
@@ -92,7 +92,7 @@ export default function MobileSidebar({
|
|||||||
{/* Using mini component reduces the bulk amount of html */}
|
{/* Using mini component reduces the bulk amount of html */}
|
||||||
<ListItem
|
<ListItem
|
||||||
title={
|
title={
|
||||||
userDetails?.account_type == "FULL" ? "Dashboard" : "Home"
|
userDetails?.account_type == "FULL" ? "Home" : "Home"
|
||||||
}
|
}
|
||||||
route="/"
|
route="/"
|
||||||
sidebar={sidebar}
|
sidebar={sidebar}
|
||||||
|
|||||||
@@ -112,7 +112,7 @@ export default function Sidebar({
|
|||||||
<ul className="flex flex-col space-y-6">
|
<ul className="flex flex-col space-y-6">
|
||||||
{/* Using mini component reduces the bulk amount of html */}
|
{/* Using mini component reduces the bulk amount of html */}
|
||||||
<ListItem
|
<ListItem
|
||||||
title={userDetails?.account_type == "FULL" ? "Dashboard" : "Home"}
|
title={userDetails?.account_type == "FULL" ? "Home" : "Home"}
|
||||||
route="/"
|
route="/"
|
||||||
sidebar={sidebar}
|
sidebar={sidebar}
|
||||||
iconName="new-dashboard"
|
iconName="new-dashboard"
|
||||||
|
|||||||
@@ -2,9 +2,10 @@ import ProductCardStyleTwo from "../../Cards/ProductCardStyleTwo";
|
|||||||
import DataIteration from "../../Helpers/DataIteration";
|
import DataIteration from "../../Helpers/DataIteration";
|
||||||
import SearchCom from "../../Helpers/SearchCom";
|
import SearchCom from "../../Helpers/SearchCom";
|
||||||
import ResourceBlogCard from "../../Cards/ResourceBlogCard";
|
import ResourceBlogCard from "../../Cards/ResourceBlogCard";
|
||||||
|
import NewPaginatedList from '../../../components/Pagination/NewPaginatedList'
|
||||||
|
|
||||||
export default function BlogTab({ className, blogdata }) {
|
export default function BlogTab({ className, blogdata }) {
|
||||||
console.log("Blog data here>> ", blogdata);
|
// console.log("Blog data here>> ", blogdata);
|
||||||
// debugger;
|
// debugger;
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
@@ -15,33 +16,9 @@ export default function BlogTab({ className, blogdata }) {
|
|||||||
<div className="sm:w-1/2 w-full sm:pr-20 pr-0 mb-5 sm:mb-0">
|
<div className="sm:w-1/2 w-full sm:pr-20 pr-0 mb-5 sm:mb-0">
|
||||||
<SearchCom placeholder='Search Blog Items...' />
|
<SearchCom placeholder='Search Blog Items...' />
|
||||||
</div>
|
</div>
|
||||||
{/* filer-dropdown */}
|
|
||||||
<div className="flex-1 flex sm:justify-end">
|
|
||||||
{/* <div className="flex space-x-1 items-center">*/}
|
|
||||||
{/*<span className="text-18 text-thin-light-gray">*/}
|
|
||||||
{/* Recently Received*/}
|
|
||||||
{/*</span>*/}
|
|
||||||
{/* <span>*/}
|
|
||||||
{/* <svg*/}
|
|
||||||
{/* width="20"*/}
|
|
||||||
{/* height="10"*/}
|
|
||||||
{/* viewBox="0 0 13 6"*/}
|
|
||||||
{/* fill="none"*/}
|
|
||||||
{/* xmlns="http://www.w3.org/2000/svg"*/}
|
|
||||||
{/* >*/}
|
|
||||||
{/* <path*/}
|
|
||||||
{/* opacity="0.7"*/}
|
|
||||||
{/* d="M12.4124 0.247421C12.3327 0.169022 12.2379 0.106794 12.1335 0.0643287C12.0291 0.0218632 11.917 0 11.8039 0C11.6908 0 11.5787 0.0218632 11.4743 0.0643287C11.3699 0.106794 11.2751 0.169022 11.1954 0.247421L7.27012 4.07837C7.19045 4.15677 7.09566 4.219 6.99122 4.26146C6.88678 4.30393 6.77476 4.32579 6.66162 4.32579C6.54848 4.32579 6.43646 4.30393 6.33202 4.26146C6.22758 4.219 6.13279 4.15677 6.05312 4.07837L2.12785 0.247421C2.04818 0.169022 1.95338 0.106794 1.84895 0.0643287C1.74451 0.0218632 1.63249 0 1.51935 0C1.40621 0 1.29419 0.0218632 1.18975 0.0643287C1.08531 0.106794 0.990517 0.169022 0.910844 0.247421C0.751218 0.404141 0.661621 0.616141 0.661621 0.837119C0.661621 1.0581 0.751218 1.2701 0.910844 1.42682L4.84468 5.26613C5.32677 5.73605 5.98027 6 6.66162 6C7.34297 6 7.99647 5.73605 8.47856 5.26613L12.4124 1.42682C12.572 1.2701 12.6616 1.0581 12.6616 0.837119C12.6616 0.616141 12.572 0.404141 12.4124 0.247421Z"*/}
|
|
||||||
{/* fill="#374557"*/}
|
|
||||||
{/* fillOpacity="0.6"*/}
|
|
||||||
{/* />*/}
|
|
||||||
{/* </svg>*/}
|
|
||||||
{/*</span>*/}
|
|
||||||
{/* </div>*/}
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div className="content-section w-full-width">
|
{/* <div className="content-section w-full-width">
|
||||||
<div className="grid lg:grid-cols-3 sm:grid-cols-2 grid-cols-1 gap-[30px]">
|
<div className="grid lg:grid-cols-3 sm:grid-cols-2 grid-cols-1 gap-[30px]">
|
||||||
<DataIteration
|
<DataIteration
|
||||||
datas={blogdata?.blogdata}
|
datas={blogdata?.blogdata}
|
||||||
@@ -57,7 +34,42 @@ export default function BlogTab({ className, blogdata }) {
|
|||||||
)}
|
)}
|
||||||
</DataIteration>
|
</DataIteration>
|
||||||
</div>
|
</div>
|
||||||
|
</div> */}
|
||||||
|
|
||||||
|
{blogdata?.blogdata?.length ?
|
||||||
|
<NewPaginatedList
|
||||||
|
data={blogdata?.blogdata}
|
||||||
|
itemsPerPage={9}
|
||||||
|
filterItem=''
|
||||||
|
tableTitle=''
|
||||||
|
>
|
||||||
|
{
|
||||||
|
({data})=>(
|
||||||
|
<div className="filter-navigate-content w-full min-h-[600px]">
|
||||||
|
<div
|
||||||
|
className={"grid lg:grid-cols-3 sm:grid-cols-2 gap-[30px]"}
|
||||||
|
>
|
||||||
|
{
|
||||||
|
data.map((datum, index) => (
|
||||||
|
<div key={index}>
|
||||||
|
<ResourceBlogCard
|
||||||
|
key={index}
|
||||||
|
datas={datum}
|
||||||
|
bg={blogdata.image_url}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
))
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
</NewPaginatedList>
|
||||||
|
:
|
||||||
|
<div className="w-full h-[40rem] bg-white dark:bg-dark-white flex justify-center items-center">
|
||||||
|
No Blog Found!
|
||||||
</div>
|
</div>
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</>
|
</>
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
import React, { useState } from "react";
|
import React, { useState } from "react";
|
||||||
import Icons from "../../Helpers/Icons";
|
import Icons from "../../Helpers/Icons";
|
||||||
import PasswordSvg from "../PasswordSvg";
|
// import PasswordSvg from "../PasswordSvg";
|
||||||
import LoadingSpinner from "../../Spinners/LoadingSpinner";
|
import LoadingSpinner from "../../Spinners/LoadingSpinner";
|
||||||
import usersService from "../../../services/UsersService";
|
import usersService from "../../../services/UsersService";
|
||||||
import { useNavigate } from "react-router-dom";
|
import { useNavigate } from "react-router-dom";
|
||||||
@@ -113,14 +113,19 @@ export default function ChangePasswordTab() {
|
|||||||
}
|
}
|
||||||
return (
|
return (
|
||||||
<div className="changePasswordTab w-full">
|
<div className="changePasswordTab w-full">
|
||||||
<div className="w-full flex xxl:flex-row flex-col-reverse space-x-5 xxl:items-start">
|
<div className="w-full">
|
||||||
<div className="flex-1 mb-10">
|
<div className="content-heading w-full mb-8">
|
||||||
|
<h1 className="text-2xl font-extrabold text-black dark:text-white antialiased">
|
||||||
|
Reset Password
|
||||||
|
</h1>
|
||||||
|
</div>
|
||||||
|
<div className="w-full md:w-[calc(100%-100px)] md:ml-auto pb-10">
|
||||||
<div className="input-field mb-6">
|
<div className="input-field mb-6">
|
||||||
<label
|
<label
|
||||||
className="input-label text-dark-gray dark:text-white text-xl font-bold block mb-2.5"
|
className="input-label text-dark-gray dark:text-white text-xl font-bold block mb-2.5"
|
||||||
htmlFor="old_password"
|
htmlFor="old_password"
|
||||||
>
|
>
|
||||||
Old Password <span className="text-[10px] text-red-500 italic px-2">{(inputEmpty && !inputs.old_pwd) && 'required'}</span>
|
Current Password <span className="text-[10px] text-red-500 italic px-2">{(inputEmpty && !inputs.old_pwd) && 'required'}</span>
|
||||||
</label>
|
</label>
|
||||||
<div className="input-wrapper border border-light-purple dark:border-[#5356fb29] w-full rounded-[50px] h-[58px] overflow-hidden relative ">
|
<div className="input-wrapper border border-light-purple dark:border-[#5356fb29] w-full rounded-[50px] h-[58px] overflow-hidden relative ">
|
||||||
<div className="absolute left-6 bottom-[17px] z-10">
|
<div className="absolute left-6 bottom-[17px] z-10">
|
||||||
@@ -202,7 +207,7 @@ export default function ChangePasswordTab() {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className="flex justify-center space-x-4 items-center">
|
<div className="flex w-full md:w-[calc(100%-128px)] md:ml-auto justify-between gap-4 items-center">
|
||||||
<button
|
<button
|
||||||
type="button"
|
type="button"
|
||||||
className="text-light-red text-18 tracking-wide border-b dark:border-[#5356fb29] border-light-red"
|
className="text-light-red text-18 tracking-wide border-b dark:border-[#5356fb29] border-light-red"
|
||||||
@@ -246,9 +251,9 @@ export default function ChangePasswordTab() {
|
|||||||
))}
|
))}
|
||||||
{/* End of error or success display */}
|
{/* End of error or success display */}
|
||||||
</div>
|
</div>
|
||||||
<div className="w-[440px] sm:flex hidden justify-end">
|
{/* <div className="w-[440px] sm:flex hidden justify-end">
|
||||||
<PasswordSvg />
|
<PasswordSvg />
|
||||||
</div>
|
</div> */}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -0,0 +1,43 @@
|
|||||||
|
import React from "react";
|
||||||
|
import Icons from "../../Helpers/Icons";
|
||||||
|
|
||||||
|
export default function Preferences() {
|
||||||
|
return (
|
||||||
|
<div className="login-activity-tab w-full">
|
||||||
|
<div className="relative w-full overflow-x-auto sm:rounded-lg">
|
||||||
|
<table className="w-full text-sm text-left text-gray-500 dark:text-gray-400">
|
||||||
|
{/* <thead>
|
||||||
|
<tr className="text-base text-thin-light-gray border-b dark:border-[#5356fb29] default-border-b ">
|
||||||
|
<td className="py-4 text-center">Channel</td>
|
||||||
|
<td className="py-4 text-center">Date</td>
|
||||||
|
<td className="py-4 text-center">Location</td>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr className="bg-white dark:bg-dark-white border-b dark:border-[#5356fb29] hover:bg-gray-50">
|
||||||
|
<td className="text-center py-4">
|
||||||
|
<div className="flex items-center justify-center">
|
||||||
|
<span className="text-base text-dark-gray dark:text-white font-medium whitespace-nowrap px-2">
|
||||||
|
Desktop
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<td className="text-center py-4">
|
||||||
|
<div className="flex space-x-1 items-center justify-center">
|
||||||
|
<span className="text-base text-dark-gray dark:text-white font-medium whitespace-nowrap px-2">
|
||||||
|
10-10-2035
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
<td className="text-center py-4">
|
||||||
|
<span className="text-base text-dark-gray dark:text-white whitespace-nowrap px-2">
|
||||||
|
10.0.0.1000
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody> */}
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -80,7 +80,7 @@ export default function RecipientAccountTab({
|
|||||||
})
|
})
|
||||||
) : (
|
) : (
|
||||||
<h1 className="font-bold text-xl text-dark-gray dark:text-white whitespace-nowrap">
|
<h1 className="font-bold text-xl text-dark-gray dark:text-white whitespace-nowrap">
|
||||||
No Cards Found
|
No Recipient on this account yet.
|
||||||
</h1>
|
</h1>
|
||||||
)}
|
)}
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import PersonalInfoTab from "./PersonalInfoTab";
|
|||||||
import PrivacyPolicyTab from "./PrivacyPolicyTab";
|
import PrivacyPolicyTab from "./PrivacyPolicyTab";
|
||||||
import RecentActivitiesTab from "./RecentActivitiesTab";
|
import RecentActivitiesTab from "./RecentActivitiesTab";
|
||||||
import TermsConditionTab from "./TermsConditionTab";
|
import TermsConditionTab from "./TermsConditionTab";
|
||||||
|
import Preferences from './Preferences'
|
||||||
|
|
||||||
export {
|
export {
|
||||||
ChangePasswordTab,
|
ChangePasswordTab,
|
||||||
@@ -18,4 +19,5 @@ export {
|
|||||||
PrivacyPolicyTab,
|
PrivacyPolicyTab,
|
||||||
RecentActivitiesTab,
|
RecentActivitiesTab,
|
||||||
TermsConditionTab,
|
TermsConditionTab,
|
||||||
|
Preferences
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import {
|
|||||||
PrivacyPolicyTab,
|
PrivacyPolicyTab,
|
||||||
RecentActivitiesTab,
|
RecentActivitiesTab,
|
||||||
TermsConditionTab,
|
TermsConditionTab,
|
||||||
|
Preferences,
|
||||||
} from "./Tabs";
|
} from "./Tabs";
|
||||||
import RecipientAccountTab from "./Tabs/RecipientAccountTab";
|
import RecipientAccountTab from "./Tabs/RecipientAccountTab";
|
||||||
|
|
||||||
@@ -91,8 +92,8 @@ export default function Settings({ faq }) {
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 5,
|
id: 5,
|
||||||
name: "login_activity",
|
name: "preferences",
|
||||||
title: "Login Activity",
|
title: "Preferences",
|
||||||
iconName: "login-activity",
|
iconName: "login-activity",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -166,7 +167,7 @@ export default function Settings({ faq }) {
|
|||||||
<NotificationSettingTab />
|
<NotificationSettingTab />
|
||||||
</div>
|
</div>
|
||||||
),
|
),
|
||||||
login_activity: <LoginActivityTab />,
|
preferences: <Preferences />,
|
||||||
recent_activities: <RecentActivitiesTab />,
|
recent_activities: <RecentActivitiesTab />,
|
||||||
password: <ChangePasswordTab />,
|
password: <ChangePasswordTab />,
|
||||||
faq: <FaqTab datas={faq} />,
|
faq: <FaqTab datas={faq} />,
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
import React from 'react'
|
||||||
|
import Icons from '../Helpers/Icons'
|
||||||
|
|
||||||
|
export default function ManageJobTab({ item='', iconName='', selectedTab='', setSelectedTab=()=>{} }) {
|
||||||
|
return (
|
||||||
|
<button
|
||||||
|
className={`flex lg:space-x-4 space-x-2 hover:text-purple transition-all duration-300 ease-in-out items-center cursor-pointer mb-2 mr-6 lg:mr-0 float-left lg:float-none overflow-hidden ${
|
||||||
|
selectedTab === item ? "text-purple" : " text-thin-light-gray"
|
||||||
|
}`}
|
||||||
|
value={item}
|
||||||
|
name={item}
|
||||||
|
onClick={() => setSelectedTab(item)}
|
||||||
|
>
|
||||||
|
<div>
|
||||||
|
<Icons name={iconName} />
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<p className="text-18 tracking-wide">{item[0]?.toUpperCase() + item?.slice(1)}</p>
|
||||||
|
</div>
|
||||||
|
</button>
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
@@ -5,6 +5,7 @@ import usersService from "../../services/UsersService";
|
|||||||
import ModalCom from "../Helpers/ModalCom";
|
import ModalCom from "../Helpers/ModalCom";
|
||||||
import LoadingSpinner from "../Spinners/LoadingSpinner";
|
import LoadingSpinner from "../Spinners/LoadingSpinner";
|
||||||
import Detail from "./popoutcomponent/Detail";
|
import Detail from "./popoutcomponent/Detail";
|
||||||
|
import {PriceFormatter} from '../Helpers/PriceFormatter'
|
||||||
|
|
||||||
import { useDispatch } from "react-redux";
|
import { useDispatch } from "react-redux";
|
||||||
import { NewDateTimeFormatter } from "../../lib/NewDateTimeFormatter";
|
import { NewDateTimeFormatter } from "../../lib/NewDateTimeFormatter";
|
||||||
|
|||||||
+1
-1
@@ -53,7 +53,7 @@
|
|||||||
.job-action {
|
.job-action {
|
||||||
background-color: #4687ba;
|
background-color: #4687ba;
|
||||||
border-radius: 15px;
|
border-radius: 15px;
|
||||||
padding: 3px;
|
padding: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.msg_box {
|
.msg_box {
|
||||||
|
|||||||
@@ -126,7 +126,7 @@ class usersService {
|
|||||||
member_id: localStorage.getItem("member_id"),
|
member_id: localStorage.getItem("member_id"),
|
||||||
sessionid: localStorage.getItem("session_token"),
|
sessionid: localStorage.getItem("session_token"),
|
||||||
};
|
};
|
||||||
return this.postAuxEnd("/getwallets", postData);
|
return this.postAuxEnd("/wallets", postData);
|
||||||
}
|
}
|
||||||
getApiGate() {
|
getApiGate() {
|
||||||
// localStorage.setItem("session_token", ``);
|
// localStorage.setItem("session_token", ``);
|
||||||
|
|||||||
Reference in New Issue
Block a user