diff --git a/src/Routers.jsx b/src/Routers.jsx
index 45d669c..4354c41 100644
--- a/src/Routers.jsx
+++ b/src/Routers.jsx
@@ -34,6 +34,7 @@ import VerifyLinkPages from "./views/VerifyLinkPages";
import MyActiveJobsPage from "./views/MyActiveJobsPage";
import FamilyAccPage from "./views/FamilyAccPage";
import StartJob from "./components/MyJobs/StartJob";
+import AddJobPage from "./views/AddJobPage";
export default function Routers() {
return (
@@ -76,6 +77,7 @@ export default function Routers() {
} />
} />
} />
+ } />
} />
} />
} />
diff --git a/src/components/AddJob/AddJob.jsx b/src/components/AddJob/AddJob.jsx
new file mode 100644
index 0000000..270036b
--- /dev/null
+++ b/src/components/AddJob/AddJob.jsx
@@ -0,0 +1,340 @@
+import React, {useState, useEffect} from 'react'
+import { Link, useNavigate } from 'react-router-dom';
+import InputCom from '../Helpers/Inputs/InputCom';
+import LoadingSpinner from '../Spinners/LoadingSpinner';
+import usersService from '../../services/UsersService';
+
+import { Form, Formik } from "formik";
+import * as Yup from "yup";
+
+const validationSchema = Yup.object().shape({
+ country: Yup.string()
+ .min(1, "Minimum 3 characters")
+ .max(25, "Maximum 25 characters")
+ .required("Country is required"),
+ price: Yup.number()
+ .typeError("you must specify a number")
+ .min(1, "Price must be greater than 0")
+ .required("Price is required"),
+ title: Yup.string()
+ .min(3, "Minimum 3 characters")
+ .max(100, "Maximum 25 characters")
+ .required("Title is required"),
+ description: Yup.string()
+ .min(3, "Minimum 3 characters")
+ .max(250, "Maximum 250 characters")
+ .required("Description is required"),
+ job_detail: Yup.string()
+ .min(3, "Minimum 3 characters")
+ .max(250, "Maximum 250 characters")
+ .required("Details is required"),
+ timeline_days: Yup.number()
+ .typeError("you must specify a number")
+ .min(1, "Price must be greater than 0")
+ .required("Price is required"),
+ });
+
+ let initialValues = { // initial values for formik
+ country: '',
+ price: '',
+ title: '',
+ description: '',
+ job_detail: '',
+ timeline_days: ''
+}
+
+function AddJob() {
+ const ApiCall = new usersService()
+ const navigate = useNavigate()
+
+ let [pageLoading, setPageLoading] = useState(true) // State used for knowing when the page is mounting
+
+ let [country, setCountry] = useState({loading: false, status: false, data:[]}) // To Hold the array of country getUserCountry returns
+
+ let [requestStatus, setRequestStatus] = useState({loading: false, status: false, message:''}) // Holds state when submit button is pressed
+
+ // FUNCTION TO GET COUNTRY
+ const getUserCountry = () =>{
+ setCountry(prev => ({...prev, loading:true}))
+ ApiCall.getSignupCountryData().then(res => {
+ if(res.data.internal_return < 1){
+ setCountry({loading: false, status: true, data:[]})
+ return
+ }
+ setCountry({loading: false, status: true, data:res.data.signup_country})
+ }).catch(err => {
+ setCountry({loading: false, status: false, data:[]})
+ })
+ }
+
+ // FUNCTION TO HANDLE ADD JOB FORM
+ const handleAddJob = (values, helpers) => {
+ console.log(values)
+ setRequestStatus({loading: true, status: false, message:''})
+ ApiCall.jobManagerCreateJob(values).then(res => {
+ if(res.data.internal_return < 1){
+ setRequestStatus({loading: false, status: false, message:'Could not complete your request at the moment'})
+ return
+ }
+ setRequestStatus({loading: false, status: true, message:'Job Added Successfully'})
+ setTimeout(()=>{
+ navigate('/myjobs', {replace: true})
+ },1000)
+
+ }).catch(err => {
+ setRequestStatus({loading: false, status: false, message:'Opps! soemthing went wrong. Try Again'})
+ })
+ }
+
+ useEffect(()=>{
+ setPageLoading(false)
+ getUserCountry()
+ },[])
+
+ return pageLoading.loading ? (
+
+ ) : (
+
+
+ {(props) => {
+ return (
+
+ );
+ }}
+
+
+ )
+}
+
+export default AddJob
\ No newline at end of file
diff --git a/src/components/FamilyAcc/FamilyTable.jsx b/src/components/FamilyAcc/FamilyTable.jsx
index 943e665..3ff903d 100644
--- a/src/components/FamilyAcc/FamilyTable.jsx
+++ b/src/components/FamilyAcc/FamilyTable.jsx
@@ -1,76 +1,89 @@
import React, { useState } from "react";
import dataImage1 from "../../assets/images/data-table-user-1.png";
-export default function FamilyTable({ className, familyList }) {
+export default function FamilyTable({ className, familyList, loader }) {
const filterCategories = ["All Categories", "Explore", "Featured"];
console.log(familyList)
const [selectedCategory, setCategory] = useState(filterCategories[0]);
return (
-
-
+
+
- | Name |
- Last Login |
- No of Tasks |
- |
+ Name |
+ Last Login |
+ No of Tasks |
+ Status |
- {familyList?.length > process.env.REACT_APP_ZERO_STATE &&
- familyList?.map(({firstname, lastname, age,added}, idx) => (
-
-
-
-
- 
-
-
-
- {`${firstname} ${lastname} (${age})`}
-
-
- Added {` ${added}`}
-
-
-
- |
-
-
-
- 10-10-2019
-
-
- |
-
-
-
- 100
-
-
- |
-
-
- |
diff --git a/src/components/FamilyAcc/index.jsx b/src/components/FamilyAcc/index.jsx
index 5cfa8bb..e1bd622 100644
--- a/src/components/FamilyAcc/index.jsx
+++ b/src/components/FamilyAcc/index.jsx
@@ -11,6 +11,8 @@ export default function FamilyAcc() {
const [familyList, setFamilyList] = useState([]);
const [isOpen, setIsOpen] = useState(false);
const [loader, setLoader] = useState(false);
+ const [popUp, setPopUp] = useState(false);
+ const [listReload, setListReload] = useState(false);
const [msgErr, setMsgErr] = useState("");
const [formData, setFormData] = useState({
first_name: "",
@@ -19,6 +21,15 @@ export default function FamilyAcc() {
const apiCall = useMemo(() => new SiteService(), []);
+ // This is to make sure it's called once and used everywhere
+ let memberId = localStorage.getItem("member_id");
+ let uid = localStorage.getItem("uid");
+ let sessionId = localStorage.getItem("session_token");
+
+ const popUpHandler = () => {
+ setPopUp(!popUp);
+ };
+
// tab handler
const filterHandler = (value) => {
setValue(value);
@@ -50,9 +61,9 @@ export default function FamilyAcc() {
try {
if (first_name !== "" && last_name !== "") {
let reqData = {
- member_id: localStorage.getItem("member_id"),
- uid: localStorage.getItem("uid"),
- session_id: localStorage.getItem("session_token"),
+ member_id: memberId,
+ uid: uid,
+ session_id: sessionId,
firstname: first_name,
lastname: last_name,
age: selectedAge,
@@ -62,6 +73,7 @@ export default function FamilyAcc() {
const { data } = res;
if (data?.internal_return > 0 && data?.status == "OK") {
setLoader(false);
+ setListReload((prev) => !prev);
setIsOpen(false);
} else {
setLoader(false);
@@ -79,35 +91,42 @@ export default function FamilyAcc() {
setTimeout(() => {
setMsgErr(null);
}, Number(process.env.REACT_APP_LOGIN_ERROR_TIMEOUT));
+ setFormData({
+ first_name: "",
+ last_name: "",
+ });
}
};
- useEffect(() => {
- // member listing
- const memberList = async () => {
- try {
- let reqData = {
- member_id: localStorage.getItem("member_id"),
- uid: localStorage.getItem("uid"),
- sessionid: localStorage.getItem("session_token"),
- limit: 20,
- offset: 0,
- action: 22010,
- };
+ // member listing
+ const memberList = useCallback(async () => {
+ setLoader(true);
+ try {
+ let reqData = {
+ member_id: memberId,
+ uid: uid,
+ session_id: sessionId,
+ limit: 20,
+ offset: 0,
+ action: 22010,
+ };
- let res = await apiCall.familyListings(reqData);
- const { data } = res;
- if (data?.internal_return >= 0 && data?.status == "OK") {
- let { result_list } = data;
- setFamilyList(result_list);
- } else return;
- } catch (error) {
- throw new Error(error);
- }
- };
+ let res = await apiCall.familyListings(reqData);
+ const { data } = res;
+ if (data?.internal_return >= 0 && data?.status == "OK") {
+ let { result_list } = data;
+ setFamilyList(result_list);
+ setLoader(false);
+ } else return;
+ } catch (error) {
+ setLoader(false);
+ throw new Error(error);
+ }
+ }, [apiCall, memberId, sessionId, uid]);
+
+ useEffect(() => {
memberList();
- }, []);
- console.log(familyList);
+ }, [listReload, memberList]);
return (
@@ -130,6 +149,7 @@ export default function FamilyAcc() {
title="Add members"
isOpen={isOpen}
setIsOpen={setIsOpen}
+ modalHandler={popUpHandler}
>
-
+
diff --git a/src/components/Helpers/CustomPopUp/index.jsx b/src/components/Helpers/CustomPopUp/index.jsx
index 24215ec..4653979 100644
--- a/src/components/Helpers/CustomPopUp/index.jsx
+++ b/src/components/Helpers/CustomPopUp/index.jsx
@@ -1,7 +1,14 @@
-import React, { useState } from "react";
-
-const CustomPopUp = ({ name, btn_class, title, children, isOpen, setIsOpen }) => {
+import React, { useEffect } from "react";
+const CustomPopUp = ({
+ name,
+ btn_class,
+ title,
+ children,
+ isOpen,
+ setIsOpen,
+ modalHandler,
+}) => {
const handleOpen = () => {
setIsOpen(true);
};
@@ -10,6 +17,15 @@ const CustomPopUp = ({ name, btn_class, title, children, isOpen, setIsOpen }) =>
setIsOpen(false);
};
+ useEffect(() => {
+ if (modalHandler) {
+ document.body.style.overflowY = "hidden";
+ }
+ return () => {
+ document.body.style.overflowY = "unset";
+ };
+ });
+
return (
@@ -17,15 +33,26 @@ const CustomPopUp = ({ name, btn_class, title, children, isOpen, setIsOpen }) =>
{isOpen && (
-
-
-
-
-
-
+
+
+
+
+
+ {title && (
+
+ {title}
+
+ )}
+
+
+
+
+
+ {children && children}
+
- {title &&
{title}
}
- {children}
)}
diff --git a/src/components/Helpers/Inputs/InputCom/index.jsx b/src/components/Helpers/Inputs/InputCom/index.jsx
index eec3eb3..f39da7b 100644
--- a/src/components/Helpers/Inputs/InputCom/index.jsx
+++ b/src/components/Helpers/Inputs/InputCom/index.jsx
@@ -19,6 +19,8 @@ export default function InputCom({
onClick,
disable,
blurHandler,
+ spanTag,
+ inputBg
}) {
const inputRef = useRef(null);
// Entry Validation
@@ -138,8 +140,9 @@ export default function InputCom({
)}
{forgotPassword && (
@@ -158,7 +161,7 @@ export default function InputCom({
placeholder={placeholder}
value={value}
onChange={inputHandler}
- className={`input-field placeholder:text-base text-dark-gray dark:text-white w-full h-full bg-[#FAFAFA] dark:bg-[#11131F] focus:ring-0 focus:outline-none ${fieldClass}`}
+ className={`input-field placeholder:text-base text-dark-gray dark:text-white w-full h-full ${inputBg ? inputBg: 'bg-[#FAFAFA]'} dark:bg-[#11131F] focus:ring-0 focus:outline-none ${fieldClass}`}
type={type}
id={name}
name={name}
diff --git a/src/components/Helpers/ModalCom.jsx b/src/components/Helpers/ModalCom.jsx
index 60e241d..6773ec7 100644
--- a/src/components/Helpers/ModalCom.jsx
+++ b/src/components/Helpers/ModalCom.jsx
@@ -1,6 +1,6 @@
import React, { useEffect } from "react";
-export default function ModalCom({ action, children, situation }) {
+export default function ModalCom({ action, children, situation, isOpen }) {
useEffect(() => {
if (situation) {
document.body.style.overflowY = "hidden";
@@ -13,7 +13,7 @@ export default function ModalCom({ action, children, situation }) {
return (
diff --git a/src/components/History/HistoryTable.jsx b/src/components/History/HistoryTable.jsx
index 3d545b7..efde971 100644
--- a/src/components/History/HistoryTable.jsx
+++ b/src/components/History/HistoryTable.jsx
@@ -44,9 +44,9 @@ export default function HistoryTable({ className }) {
{data.length &&
-
+
-
+
| All Product |
Value |
USD |
@@ -69,7 +69,7 @@ export default function HistoryTable({ className }) {
/>
-
+
Mullican Computer Joy
@@ -122,7 +122,7 @@ export default function HistoryTable({ className }) {
/>
-
+
7473 ETH
@@ -155,23 +155,23 @@ export default function HistoryTable({ className }) {
/>
-
+
6392.99$
-
+
-24.75 (11.5%)
|
-
+
343
|
-
+
2 Hours 1 min 30s
|
@@ -198,7 +198,7 @@ export default function HistoryTable({ className }) {
/>
-
+
Mullican Computer Joy
@@ -251,7 +251,7 @@ export default function HistoryTable({ className }) {
/>
-
+
7473 ETH
@@ -284,23 +284,23 @@ export default function HistoryTable({ className }) {
/>
-
+
6392.99$
-
+
-24.75 (11.5%)
|
-
+
343
|
-
+
2 Hours 1 min 30s
|
@@ -327,7 +327,7 @@ export default function HistoryTable({ className }) {
/>
-
+
Mullican Computer Joy
@@ -380,7 +380,7 @@ export default function HistoryTable({ className }) {
/>
-
+
7473 ETH
@@ -413,7 +413,7 @@ export default function HistoryTable({ className }) {
/>
-
+
6392.99$
@@ -424,12 +424,12 @@ export default function HistoryTable({ className }) {
-
+
343
|
-
+
2 Hours 1 min 30s
|
@@ -444,1025 +444,6 @@ export default function HistoryTable({ className }) {
))
)}
-
- {/* {selectedCategory === "All Categories" ? (
- <>
-
-
-
-
- 
-
-
-
- Mullican Computer Joy
-
-
- Owned by Xoeyam
-
-
-
- |
-
-
-
-
-
-
- 7473 ETH
-
-
- |
-
-
-
-
-
-
- 6392.99$
-
-
- |
-
-
- -24.75 (11.5%)
-
- |
-
-
- 343
-
- |
-
-
- 2 Hours 1 min 30s
-
- |
-
-
- Active
-
- |
-
-
-
-
-
- 
-
-
-
- Mullican Computer Joy
-
-
- Owned by Xoeyam
-
-
-
- |
-
-
-
-
-
-
- 7473 ETH
-
-
- |
-
-
-
-
-
-
- 6392.99$
-
-
- |
-
-
- -24.75 (11.5%)
-
- |
-
-
- 343
-
- |
-
-
- 2 Hours 1 min 30s
-
- |
-
-
- Complated
-
- |
-
-
-
-
-
- 
-
-
-
- Mullican Computer Joy
-
-
- Owned by Xoeyam
-
-
-
- |
-
-
-
-
-
-
- 7473 ETH
-
-
- |
-
-
-
-
-
-
- 6392.99$
-
-
- |
-
-
- -24.75 (11.5%)
-
- |
-
-
- 343
-
- |
-
-
- 2 Hours 1 min 30s
-
- |
-
-
- Active
-
- |
-
-
-
-
-
- 
-
-
-
- Mullican Computer Joy
-
-
- Owned by Xoeyam
-
-
-
- |
-
-
-
-
-
-
- 7473 ETH
-
-
- |
-
-
-
-
-
-
- 6392.99$
-
-
- |
-
-
- -24.75 (11.5%)
-
- |
-
-
- 343
-
- |
-
-
- 2 Hours 1 min 30s
-
- |
-
-
- Complated
-
- |
-
- >
- ) : selectedCategory === "Explore" ? (
- <>
-
-
-
-
- 
-
-
-
- Mullican Computer Joy
-
-
- Owned by Xoeyam
-
-
-
- |
-
-
-
-
-
-
- 7473 ETH
-
-
- |
-
-
-
-
-
-
- 6392.99$
-
-
- |
-
-
- -24.75 (11.5%)
-
- |
-
-
- 343
-
- |
-
-
- 2 Hours 1 min 30s
-
- |
-
-
- Active
-
- |
-
-
-
-
-
- 
-
-
-
- Mullican Computer Joy
-
-
- Owned by Xoeyam
-
-
-
- |
-
-
-
-
-
-
- 7473 ETH
-
-
- |
-
-
-
-
-
-
- 6392.99$
-
-
- |
-
-
- -24.75 (11.5%)
-
- |
-
-
- 343
-
- |
-
-
- 2 Hours 1 min 30s
-
- |
-
-
- Complated
-
- |
-
- >
- ) : (
- <>
-
-
-
-
- 
-
-
-
- Mullican Computer Joy
-
-
- Owned by Xoeyam
-
-
-
- |
-
-
-
-
-
-
- 7473 ETH
-
-
- |
-
-
-
-
-
-
- 6392.99$
-
-
- |
-
-
- -24.75 (11.5%)
-
- |
-
-
- 343
-
- |
-
-
- 2 Hours 1 min 30s
-
- |
-
-
- Active
-
- |
-
-
-
-
-
- 
-
-
-
- Mullican Computer Joy
-
-
- Owned by Xoeyam
-
-
-
- |
-
-
-
-
-
-
- 7473 ETH
-
-
- |
-
-
-
-
-
-
- 6392.99$
-
-
- |
-
-
- -24.75 (11.5%)
-
- |
-
-
- 343
-
- |
-
-
- 2 Hours 1 min 30s
-
- |
-
-
- Complated
-
- |
-
- >
- )} */}
diff --git a/src/components/MyActiveJobs/MyActiveJobTable.jsx b/src/components/MyActiveJobs/MyActiveJobTable.jsx
index c8e20f0..dbae9da 100644
--- a/src/components/MyActiveJobs/MyActiveJobTable.jsx
+++ b/src/components/MyActiveJobs/MyActiveJobTable.jsx
@@ -34,7 +34,7 @@ export default function MyActiveJobTable({MyJobList, className }) {
- {/**/}
+ {/*
*/}
{/* | All Product | */}
{/* . | */}
{/*
*/}
@@ -55,7 +55,7 @@ export default function MyActiveJobTable({MyJobList, className }) {
/>
-
+
{value.title}
@@ -101,9 +101,12 @@ export default function MyActiveJobTable({MyJobList, className }) {
{/* END OF PAGINATION BUTTON */}
}
+
+ {/* Active Job Popout */}
{jobPopout.show &&
{setJobPopout({show:false, data:{}})}} situation={jobPopout.show} />
}
+ {/* End of Active Job Popout */}
);
}
diff --git a/src/components/MyJobs/MyJobTable.jsx b/src/components/MyJobs/MyJobTable.jsx
index bd28b23..0198c4a 100644
--- a/src/components/MyJobs/MyJobTable.jsx
+++ b/src/components/MyJobs/MyJobTable.jsx
@@ -4,6 +4,7 @@ import dataImage2 from "../../assets/images/data-table-user-2.png";
import dataImage3 from "../../assets/images/data-table-user-3.png";
import dataImage4 from "../../assets/images/data-table-user-4.png";
import SelectBox from "../Helpers/SelectBox";
+import JobListPopout from "../jobPopout/JobListPopout";
import PaginatedList from "../Pagination/PaginatedList";
import { handlePagingFunc } from "../Pagination/HandlePagination";
@@ -12,6 +13,8 @@ export default function MyJobTable({MyJobList, className }) {
const filterCategories = ["All Categories", "Explore", "Featured"];
const [selectedCategory, setCategory] = useState(filterCategories[0]);
+ let [jobPopout,setJobPopout] = useState({show:false, data:{}}) // STATE TO HOLD THE VALUE OF THE ALERT DETAILS AND DETERMINE WHEN TO SHOW
+
const [currentPage, setCurrentPage] = useState(0);
const indexOfFirstItem = Number(currentPage);
const indexOfLastItem = Number(indexOfFirstItem)+Number(process.env.REACT_APP_ITEM_PER_PAGE);
@@ -30,7 +33,7 @@ export default function MyJobTable({MyJobList, className }) {
-
+ All Jobs
{MyJobList && MyJobList?.result_list &&
-
+
-
- | All Product |
+
+ | . |
. |
@@ -55,8 +58,9 @@ export default function MyJobTable({MyJobList, className }) {
MyJobList.result_list.length > 0 &&
currentJobList.map((value, index) => (
-
-
+
+
+
-
+
{value.title}
@@ -77,17 +81,23 @@ export default function MyJobTable({MyJobList, className }) {
Duration: {value.timeline_days} day(s)
+
+ [Delete] |
+ Edit
+
|
-
+ |
{setJobPopout({show:true, data:value})}}
+ onClick={()=>{setJobPopout({show:true, data:value})}}
className="w-20 h-11 flex justify-center items-center btn-gradient text-base rounded-full text-white"
>
- View
+ Manage
|
|
@@ -112,6 +122,12 @@ export default function MyJobTable({MyJobList, className }) {
{/* END OF PAGINATION BUTTON */}
}
+
+ {/* Job List Popout */}
+ {jobPopout.show &&
+ {setJobPopout({show:false, data:{}})}} situation={jobPopout.show} />
+ }
+ {/* End of Job List Popout */}
);
}
diff --git a/src/components/MyJobs/index.jsx b/src/components/MyJobs/index.jsx
index 6d4e29f..a370474 100644
--- a/src/components/MyJobs/index.jsx
+++ b/src/components/MyJobs/index.jsx
@@ -18,13 +18,16 @@ export default function MyJobs(props) {
{/* heading */}
-
-
- My Jobs
-
+
+
+ My Jobs
+
+
+ Add Job
+
diff --git a/src/components/MyWallet/Balance.jsx b/src/components/MyWallet/Balance.jsx
index cb55f92..9568024 100644
--- a/src/components/MyWallet/Balance.jsx
+++ b/src/components/MyWallet/Balance.jsx
@@ -40,7 +40,10 @@ function Balance({wallet, coupon}) {
- Transfer
+ {
+ item.action_type != 'AC_AD_FD_ONLY' ?
+ Transfer:''
+ }
Top Up
diff --git a/src/components/Partials/MobileSideBar.jsx b/src/components/Partials/MobileSideBar.jsx
index 52c9ec2..ff17901 100644
--- a/src/components/Partials/MobileSideBar.jsx
+++ b/src/components/Partials/MobileSideBar.jsx
@@ -174,6 +174,8 @@ export default function MobileSidebar({ sidebar, action, logoutModalHandler }) {
:
+ jobLists?.result_list?.length ?
+ (
My Jobs
@@ -222,6 +224,32 @@ export default function MobileSidebar({ sidebar, action, logoutModalHandler }) {
+ )
+ :
+ (
+
+
+
My Jobs
+
+
+
+ -
+
+
+
+
+
+ My Jobs
+
+
+
+
+
+
+ )
}
{/* signout area */}
diff --git a/src/components/Partials/Sidebar.jsx b/src/components/Partials/Sidebar.jsx
index e229d36..0d396b7 100644
--- a/src/components/Partials/Sidebar.jsx
+++ b/src/components/Partials/Sidebar.jsx
@@ -249,115 +249,150 @@ export default function Sidebar({ sidebar, action, logoutModalHandler }) {
:
-
-
-
My Jobs
-
-
-
- -
- (navData.isActive ? "active" : ""),
- sidebar ? "justify-start space-x-3.5" : "justify-center")
- }`}
- >
-
-
-
-
- List
-
-
-
- -
- (navData.isActive ? "active" : ""),
- sidebar ? "justify-start space-x-3.5" : "justify-center")
- }`}
- >
-
-
-
-
- Pending
-
-
-
- -
- (navData.isActive ? "active" : ""),
- sidebar ? "justify-start space-x-3.5" : "justify-center")
- }`}
- >
-
-
-
-
- Active
-
-
-
- {/*- */}
- {/* (navData.isActive ? "active" : ""),*/}
- {/* sidebar ? "justify-start space-x-3.5" : "justify-center")*/}
- {/* }`}*/}
- {/* >*/}
- {/* */}
- {/* */}
- {/* */}
- {/* */}
- {/* My Profile*/}
- {/* */}
- {/* */}
- {/*
*/}
- {/*- */}
- {/* (navData.isActive ? "active" : ""),*/}
- {/* sidebar ? "justify-start space-x-3.5" : "justify-center")*/}
- {/* }`}*/}
- {/* >*/}
- {/* */}
- {/* */}
- {/* */}
- {/* */}
- {/* Settings*/}
- {/* */}
- {/* */}
- {/*
*/}
-
-
-
+ jobLists?.result_list?.length ?
+ (
+
+
+
My Jobs
+
+
+
+ -
+ (navData.isActive ? "active" : ""),
+ sidebar ? "justify-start space-x-3.5" : "justify-center")
+ }`}
+ >
+
+
+
+
+ List
+
+
+
+ -
+ (navData.isActive ? "active" : ""),
+ sidebar ? "justify-start space-x-3.5" : "justify-center")
+ }`}
+ >
+
+
+
+
+ Pending
+
+
+
+ -
+ (navData.isActive ? "active" : ""),
+ sidebar ? "justify-start space-x-3.5" : "justify-center")
+ }`}
+ >
+
+
+
+
+ Active
+
+
+
+ {/*- */}
+ {/* (navData.isActive ? "active" : ""),*/}
+ {/* sidebar ? "justify-start space-x-3.5" : "justify-center")*/}
+ {/* }`}*/}
+ {/* >*/}
+ {/* */}
+ {/* */}
+ {/* */}
+ {/* */}
+ {/* My Profile*/}
+ {/* */}
+ {/* */}
+ {/*
*/}
+ {/*- */}
+ {/* (navData.isActive ? "active" : ""),*/}
+ {/* sidebar ? "justify-start space-x-3.5" : "justify-center")*/}
+ {/* }`}*/}
+ {/* >*/}
+ {/* */}
+ {/* */}
+ {/* */}
+ {/* */}
+ {/* Settings*/}
+ {/* */}
+ {/* */}
+ {/*
*/}
+
+
+
+ )
+ :
+ (
+
+
+
My Jobs
+
+
+
+ -
+ (navData.isActive ? "active" : ""),
+ sidebar ? "justify-start space-x-3.5" : "justify-center")
+ }`}
+ >
+
+
+
+
+ Add Job
+
+
+
+
+
+
+ )
}
diff --git a/src/components/jobPopout/ActiveJobsPopout.jsx b/src/components/jobPopout/ActiveJobsPopout.jsx
index 5117b70..21ea57b 100644
--- a/src/components/jobPopout/ActiveJobsPopout.jsx
+++ b/src/components/jobPopout/ActiveJobsPopout.jsx
@@ -37,7 +37,7 @@ function ActiveJobsPopout({details, onClose, situation}) {
-
+
Opportunity to make some money by introducing 10 of our recent stories from our
@@ -121,7 +121,9 @@ function ActiveJobsPopout({details, onClose, situation}) {
Cancel Offer
-
+
+
+ {/* close button */}
Close
+ {/* end of close button */}
)
diff --git a/src/components/jobPopout/JobListPopout.jsx b/src/components/jobPopout/JobListPopout.jsx
new file mode 100644
index 0000000..4686368
--- /dev/null
+++ b/src/components/jobPopout/JobListPopout.jsx
@@ -0,0 +1,177 @@
+import React, { useState } from 'react'
+import Detail from './popoutcomponent/Detail'
+import ModalCom from '../Helpers/ModalCom'
+import InputCom from '../Helpers/Inputs/InputCom/index'
+
+
+function JobListPopout({details, onClose, situation}) {
+ let [inputs, setInputs] = useState({
+ public: '',
+ individual: '',
+ group: '',
+ })
+
+ const handleInputChange = ({target:{name, value}}) => {
+ setInputs(prev => ({...prev, [name]:value}))
+ }
+
+ return (
+
+
+
+
+ {details.title}
+
+
+
+
+
+
+
+ {/*
{details.title}
*/}
+
+ {/* INPUT SECTION */}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {/* ACTION SECTION */}
+
+
+ {/* Offer this job to public input */}
+
+
+
+ {/* btn */}
+
+ Show Task to Public
+
+
+
+ {/* Offer this job to individual input */}
+
+
+
+ {/* btn */}
+
+ Send Offer to Individual
+
+
+
+ {/* Offer this job to your group input */}
+
+
+
+ {/* btn */}
+
+ Send Order to Group
+
+
+
+ {/* END OF ACTION SECTION */}
+
+
+ {/* close button */}
+ {/*
+
+ Close
+
+
*/}
+ {/* end of close button */}
+
+
+ )
+}
+
+export default JobListPopout
\ No newline at end of file
diff --git a/src/components/jobPopout/popoutcomponent/Detail.jsx b/src/components/jobPopout/popoutcomponent/Detail.jsx
index c154986..4c4e3df 100644
--- a/src/components/jobPopout/popoutcomponent/Detail.jsx
+++ b/src/components/jobPopout/popoutcomponent/Detail.jsx
@@ -1,6 +1,6 @@
import React from 'react'
-function Detail({label, value, bg}) {
+function Detail({label, value, bg,}) {
return (
<>
diff --git a/src/index.css b/src/index.css
index b717d6d..d9f4c5d 100644
--- a/src/index.css
+++ b/src/index.css
@@ -468,6 +468,12 @@ input[type="number"] {
overflow: hidden;
}
+.job-items{
+ .job-sub-menu{
+ background-color: yellow;
+ }
+}
+
.content-item .inner-list-items {
top: 0;
right: -100%;
@@ -732,4 +738,24 @@ TODO: Responsive ===========================
/* For IE10 */
.content-wrapper select::-ms-expand {
display: none;
+}
+
+/* Update table scrollbar */
+.update-table::-webkit-scrollbar-track, .update-table > *::-webkit-scrollbar-track{
+ -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.1);
+ background-color: transparent;
+ border-radius: 10px;
+}
+
+.update-table::-webkit-scrollbar, .update-table > *::-webkit-scrollbar {
+ width: 10px;
+ background-color: transparent;
+}
+
+.update-table::-webkit-scrollbar-thumb, .update-table > *::-webkit-scrollbar-thumb {
+ border-radius: 10px;
+ border-top-right-radius: 50px;
+ border-bottom-right-radius: 50px;
+ background-color: #fff;
+ background: linear-gradient(134.38deg, #f539f8 0%, #c342f9 43.55%, #5356fb 104.51%);
}
\ No newline at end of file
diff --git a/src/services/UsersService.js b/src/services/UsersService.js
index 60bd7fb..424e8c3 100644
--- a/src/services/UsersService.js
+++ b/src/services/UsersService.js
@@ -426,6 +426,18 @@ class usersService {
return this.postAuxEnd("/jobmanageragree", postData);
}
+ // END POINT TO TO CREATE A JOB
+ jobManagerCreateJob(reqData) {
+ var postData = {
+ uid: localStorage.getItem("uid"),
+ member_id: localStorage.getItem("member_id"),
+ sessionid: localStorage.getItem("session_token"),
+ action: 13010,
+ ...reqData
+ };
+ return this.postAuxEnd("/jobmanagercreatejob", postData);
+ }
+
verifyEmail(code) {
const reqData = {
verify_link: code,
diff --git a/src/views/AddJobPage.jsx b/src/views/AddJobPage.jsx
new file mode 100644
index 0000000..8cd8845
--- /dev/null
+++ b/src/views/AddJobPage.jsx
@@ -0,0 +1,14 @@
+import React from 'react'
+import AddJob from '../components/AddJob/AddJob'
+import Layout from '../components/Partials/Layout'
+
+
+function AddJobPage() {
+ return (
+
+
+
+ )
+}
+
+export default AddJobPage
\ No newline at end of file