diff --git a/src/components/FamilyAcc/FamilyTable.jsx b/src/components/FamilyAcc/FamilyTable.jsx index 274aabf..b908a73 100644 --- a/src/components/FamilyAcc/FamilyTable.jsx +++ b/src/components/FamilyAcc/FamilyTable.jsx @@ -8,6 +8,12 @@ import familyImage from "../../assets/images/no-family-side.png"; import { formatDateString } from "../../lib"; import localImgLoad from "../../lib/localImgLoad"; +/** + * Renders a list of family members that can be managed. + * It has its current maximum members at 8 and it comes with pagination and loading spinner functionality. + + * @returns {JSX.Element} - The rendered component. + */ export default function FamilyTable({ className, familyList, @@ -15,8 +21,8 @@ export default function FamilyTable({ popUpHandler, }) { const navigate = useNavigate(); - const [currentPage, setCurrentPage] = useState(0); + const itemsPerPage = Number(process.env.REACT_APP_ITEM_PER_PAGE); const indexOfFirstItem = Number(currentPage); const indexOfLastItem = Number(indexOfFirstItem) + Number(process.env.REACT_APP_ITEM_PER_PAGE); @@ -25,13 +31,94 @@ export default function FamilyTable({ indexOfLastItem ); + const handleManageClick = (familyMember) => { + navigate("/manage-family", { state: familyMember }); + }; + const handlePagination = (e) => { handlePagingFunc(e, setCurrentPage); }; + /** + * Renders a table row for a family member. + * @returns {JSX.Element} - The table row component. + */ + const FamilyRow = ({ + firstname, + lastname, + age, + added, + last_login, + task_count, + family_uid, + banner, + }) => { + // Check for valid dates + const addedDate = added ? added.split(" ")[0] : "N/A"; + const loginDate = last_login ? formatDateString(last_login) : "N/A"; + + return ( + + +
+
+ {`Avatar +
+
+

+ {`${firstname} ${lastname} (${age})`} +

+ + Added: {addedDate} + + + Last Login:{" "} + {loginDate} + +
+
+ + +
+ + {task_count} + +
+ + + + + + ); + }; + return (
@@ -40,129 +127,51 @@ export default function FamilyTable({
- ) : familyList?.length > 0 ? ( - - - - - {/* */} - - - - - - {currentFamilyList?.map((props, idx) => { - let { - firstname, - lastname, - age, - added, - last_login, - task_count, - family_uid, - banner, - } = props; - let addedDate = added?.split(" ")[0]; - let LoginDate = - last_login === "" - ? "never logged in" - : formatDateString(last_login); - return ( - - - {/* */} - - - - ); - })} - -
NameLast LoginNo of Tasks
-
-
- data -
-
-

- {`${firstname} ${lastname} (${age})`} -

- - Added:{" "} - - {addedDate} - - - - Last Login:{" "} - - {LoginDate} - - -
-
-
-
- - {LoginDate} - -
-
-
- - {task_count} - -
-
- -
) : ( -
-
-

- Add your family, assign tasks, and get the whole team engaged. -

- -
-
- Add Family -
-
+ <> + {familyList?.length > 0 ? ( + + + + + + + + + + {currentFamilyList?.map((familyMember) => { + return ; + })} + +
NameNo of Tasks
+ ) : ( +
+
+

+ Add your family, assign tasks, and get the whole team + engaged. +

+ +
+
+ Add Family +
+
+ )} + )}
{/* PAGINATION BUTTON */} = - familyList?.length - ? true - : false - } + prev={currentPage == 0} + next={currentPage + itemsPerPage >= familyList.length} data={familyList} start={indexOfFirstItem} stop={indexOfLastItem} diff --git a/src/components/FamilyAcc/index.jsx b/src/components/FamilyAcc/index.jsx index 0c3cee1..390648e 100644 --- a/src/components/FamilyAcc/index.jsx +++ b/src/components/FamilyAcc/index.jsx @@ -5,12 +5,12 @@ import React, { useMemo, useState, } from "react"; -import InputCom from "../Helpers/Inputs/InputCom"; -import Layout from "../Partials/Layout"; -import FamilyTable from "./FamilyTable"; import SiteService from "../../services/SiteService"; +import InputCom from "../Helpers/Inputs/InputCom"; import ModalCom from "../Helpers/ModalCom"; +import Layout from "../Partials/Layout"; import LoadingSpinner from "../Spinners/LoadingSpinner"; +import FamilyTable from "./FamilyTable"; export default function FamilyAcc() { const [selectTab, setValue] = useState("today"); @@ -129,6 +129,8 @@ export default function FamilyAcc() { }; }, [listReload, memberList]); + console.log("Family List ====>", familyList.length); + return ( {/**/} @@ -143,13 +145,16 @@ export default function FamilyAcc() { > Family Accounts - + {(familyList.length < + process.env.REACT_APP_MAX_FAMILY_MEMBERS && !loader) && ( + + )}
diff --git a/src/components/Home/FamilyDash.jsx b/src/components/Home/FamilyDash.jsx index 7911eb9..dc52bea 100644 --- a/src/components/Home/FamilyDash.jsx +++ b/src/components/Home/FamilyDash.jsx @@ -1,12 +1,9 @@ import React from "react"; -import datas from "../../data/product_data.json"; -import TopSellerTopBuyerSliderSection from "./TopSellerTopBuyerSliderSection"; -import CommonHead from "../UserHeader/CommonHead"; -import FamilyActiveLSlde from "./FamilyActiveLSlde"; import ParentWaiting from "../MyPendingJobs/ParentWaiting"; import MyOffersFamilyTable from "../MyTasks/MyOffersFamilyTable"; +import FamilyActiveLSlde from "./FamilyActiveLSlde"; -export default function FamilyDash({familyOffers, MyActiveJobList}) { +export default function FamilyDash({ familyOffers, MyActiveJobList }) { console.log("PROPS IN FAMILY DASH->", familyOffers); const trending = MyActiveJobList; @@ -14,13 +11,13 @@ export default function FamilyDash({familyOffers, MyActiveJobList}) {
{/* */} - {familyOffers && familyOffers.length > 0 && - - } - {trending && trending.length > 0 && - - } - + {familyOffers && familyOffers.length > 0 && ( + + )} + {trending && trending.length > 0 && ( + + )} + {/**/}
diff --git a/src/components/MyTasks/MyOffersFamilyTable.jsx b/src/components/MyTasks/MyOffersFamilyTable.jsx index e161133..1395dc2 100644 --- a/src/components/MyTasks/MyOffersFamilyTable.jsx +++ b/src/components/MyTasks/MyOffersFamilyTable.jsx @@ -38,8 +38,7 @@ export default function MyOffersFamilyTable({ className, familyOffers }) { }, ], }; - - console.log("YES WE SEE OFFERS", familyOffers); + // console.log("YES WE SEE OFFERS", familyOffers); const trendingSlider = useRef(null); const prevHandler = () => { diff --git a/src/components/MyWallet/WalletBox.jsx b/src/components/MyWallet/WalletBox.jsx index 5ebb9bc..02db619 100644 --- a/src/components/MyWallet/WalletBox.jsx +++ b/src/components/MyWallet/WalletBox.jsx @@ -10,7 +10,7 @@ export default function WalletBox({ wallet, payment }) { return (
-
+
{loading ? (
diff --git a/src/components/MyWallet/WalletItemCard.jsx b/src/components/MyWallet/WalletItemCard.jsx index ba2860d..95e5df9 100644 --- a/src/components/MyWallet/WalletItemCard.jsx +++ b/src/components/MyWallet/WalletItemCard.jsx @@ -12,7 +12,7 @@ import WalletAction from "./WalletAction"; */ export default function WalletItemCard({ walletItem, payment }) { const { userDetails } = useSelector((state) => state.userDetails); - const accountType = userDetails?.account_type === 'FAMILY'; + const accountType = userDetails?.account_type === "FAMILY"; const dispatch = useDispatch(); const [creditPopup, setCreditPopup] = useState({ show: false, data: {} }); @@ -32,12 +32,12 @@ export default function WalletItemCard({ walletItem, payment }) { */ const closePopUp = () => { setCreditPopup({ show: false, data: {} }); - dispatch(tableReload({ type: 'WALLETTABLE' })); + dispatch(tableReload({ type: "WALLETTABLE" })); }; const image = walletItem.code ? `${walletItem.code.toLowerCase()}.svg` - : 'default.png'; + : "default.png"; return ( <> @@ -48,7 +48,7 @@ export default function WalletItemCard({ walletItem, payment }) { }} >
-
+
-

+

Current Balance

@@ -65,7 +65,7 @@ export default function WalletItemCard({ walletItem, payment }) { walletItem.amount * 0.01, walletItem.code, undefined, - 'text-[2rem]' + "text-[2rem]" )}

@@ -73,13 +73,13 @@ export default function WalletItemCard({ walletItem, payment }) {

- HOLDINGS :{' '} + HOLDINGS :{" "} {PriceFormatter( walletItem.escrow * 0.01, walletItem.code, undefined, - 'text-[2rem]' + "text-[2rem]" )}

diff --git a/src/components/Partials/Layout.jsx b/src/components/Partials/Layout.jsx index 04b702c..0f72419 100644 --- a/src/components/Partials/Layout.jsx +++ b/src/components/Partials/Layout.jsx @@ -55,59 +55,29 @@ export default function Layout({ children }) { return ( <>
-
+
{/* sidebar */} -