diff --git a/src/Components/CutomBreadcrumb.jsx b/src/Components/CutomBreadcrumb.jsx new file mode 100644 index 0000000..d11c711 --- /dev/null +++ b/src/Components/CutomBreadcrumb.jsx @@ -0,0 +1,104 @@ +import React from "react"; +import { + Box, + Breadcrumb, + BreadcrumbItem, + BreadcrumbLink, + Text, + Button, +} from "@chakra-ui/react"; +import { Link, useLocation } from "react-router-dom"; +import { nav } from "../Routes/Nav"; + +const CustomBreadcrumb = () => { + const { pathname } = useLocation(); + + // Remove leading slash and split path into parts + const pathParts = pathname.replace(/^\//, "").split("/"); + + // Find the current menu item based on the provided path + const findMenuItem = (path) => { + let menuItem = null; + nav.forEach((menu) => { + if (menu.submenu) { + menu.submenu.forEach((item) => { + if (item.path === path) { + menuItem = item; + } + }); + } + }); + return menuItem; + }; + + // Generate breadcrumb items based on the current path + const generateBreadcrumbs = (pathParts) => { + const breadcrumbs = []; + let currentPath = ""; + pathParts.forEach((part, index) => { + currentPath += `/${part}`; + const menuItem = findMenuItem(currentPath); + if (menuItem) { + breadcrumbs.push({ path: currentPath, title: menuItem.title }); + } else { + // For nested paths without direct match, create a custom breadcrumb title + const customTitle = part.replace(/-/g, " ").replace(/\b\w/g, (c) => c.toUpperCase()); + breadcrumbs.push({ path: currentPath, title: customTitle }); + } + }); + return breadcrumbs; + }; + + const breadcrumbs = generateBreadcrumbs(pathParts); + console.log(breadcrumbs); + + return ( + + {" "} + {breadcrumbs.map((item, index) => ( + + + + / + + + + + ))} + + ); +}; + +export default CustomBreadcrumb; diff --git a/src/Components/Loaders/FullscreenLoaders.jsx b/src/Components/Loaders/FullscreenLoaders.jsx index 3d6dfd6..b5fe61a 100644 --- a/src/Components/Loaders/FullscreenLoaders.jsx +++ b/src/Components/Loaders/FullscreenLoaders.jsx @@ -8,9 +8,9 @@ const FullscreenLoaders = () => { justifyContent={"center"} alignItems={"center"} w={"100%"} - h={"90%"} + h={"70vh"} > - + ); }; diff --git a/src/Components/NavBreadCrumbs.jsx b/src/Components/NavBreadCrumbs.jsx new file mode 100644 index 0000000..490c4d5 --- /dev/null +++ b/src/Components/NavBreadCrumbs.jsx @@ -0,0 +1,40 @@ +import React from "react"; +import { Link } from "react-router-dom"; // Adjust this based on your routing setup +import CustomBreadcrumb from "./CutomBreadcrumb"; + +const NavBreadcrumbs = ({ nav }) => { + // Function to recursively flatten submenu items and add parent titles + const flattenNav = (items, parentTitle = "") => { + let breadcrumbs = []; + items.forEach((item) => { + if (item.submenu) { + // Add parent title if present + breadcrumbs.push({ + label: parentTitle ? `${parentTitle} / ${item.title}` : item.title, + link: null, // Adjust link as per your routing setup + }); + // Recursively flatten submenu items + breadcrumbs = [ + ...breadcrumbs, + ...flattenNav(item.submenu, `${parentTitle} / ${item.title}`), + ]; + } else { + // If no submenu, add current item as breadcrumb + breadcrumbs.push({ + label: parentTitle ? `${parentTitle} / ${item.title}` : item.title, + link: item.path, // Adjust link as per your routing setup + }); + } + }); + return breadcrumbs; + }; + + // Flatten nav array into breadcrumbs + const flattenedNav = flattenNav(nav); + + console.log(nav); + + return ; +}; + +export default NavBreadcrumbs; diff --git a/src/Layout/DefaultLayout.jsx b/src/Layout/DefaultLayout.jsx index b501cc0..02523fe 100644 --- a/src/Layout/DefaultLayout.jsx +++ b/src/Layout/DefaultLayout.jsx @@ -49,6 +49,7 @@ import { Image, Alert, AlertIcon, + Breadcrumb, } from "@chakra-ui/react"; import GlobalStateContext from "../Contexts/GlobalStateContext"; import Cookies from "js-cookie"; // Import the Cookies library @@ -68,6 +69,8 @@ import { GrManual } from "react-icons/gr"; import { LuContact } from "react-icons/lu"; import shield from "../assets/shield.png"; import SplashScreen from "../Pages/SplashScreen"; +import CutomBreadcrumb from "../Components/CutomBreadcrumb"; +import CustomBreadcrumb from "../Components/CutomBreadcrumb"; const DashboardLayout = ({ isOnline }) => { const navigate = useNavigate(); @@ -120,8 +123,6 @@ const DashboardLayout = ({ isOnline }) => { navigate("/login"); }; - console.log(); - // // Function to get the title based on the route const getTitle = () => { switch (true) { @@ -623,10 +624,11 @@ const DashboardLayout = ({ isOnline }) => { )}
{/*
@@ -639,6 +641,8 @@ const DashboardLayout = ({ isOnline }) => { icon title={getTitle()} /> + +
diff --git a/src/Pages/IO_Management/CreateIO/IODetails.jsx b/src/Pages/IO_Management/CreateIO/IODetails.jsx index 9e54f81..4514ea9 100644 --- a/src/Pages/IO_Management/CreateIO/IODetails.jsx +++ b/src/Pages/IO_Management/CreateIO/IODetails.jsx @@ -97,12 +97,7 @@ const schema = yup.object().shape({ .min(new Date(), "Closing date cannot be in the past"), ioStatus: yup - .string() - .required("Investment Object status is required") - .oneOf( - ["open", "pending", "closed"], - "Investment Object status must be one of 'open', 'pending', or 'closed'" - ), + .string(), }); const IODetails = ({ enableNextTab, index, isLoading, setIsLoading }) => { @@ -153,6 +148,8 @@ const IODetails = ({ enableNextTab, index, isLoading, setIsLoading }) => { resolver: yupResolver(schema), }); + console.log(errors); + useEffect(() => { const found = IODetails?.find( (item) => item?.id.toString() === id?.toString() @@ -515,8 +512,10 @@ const IODetails = ({ enableNextTab, index, isLoading, setIsLoading }) => { return enableNextTab(index); } const id = generateUniqueId(); - setValue("id", id) - const updatedData = { ...data, id }; + const status = "Draft" + // setValue("id", id) + console.log(data); + const updatedData = { ...data, id, ioStatus : status }; console.log(data); // Add the updated data to the IODetails array diff --git a/src/Pages/IO_Management/ViewIO/HeaderModal/AmountInvested.jsx b/src/Pages/IO_Management/ViewIO/HeaderModal/AmountInvested.jsx index 15a1674..1d385b8 100644 --- a/src/Pages/IO_Management/ViewIO/HeaderModal/AmountInvested.jsx +++ b/src/Pages/IO_Management/ViewIO/HeaderModal/AmountInvested.jsx @@ -43,19 +43,32 @@ const AmountInvested = ({ isOpen, onClose }) => { size="sm" rounded={'sm'} textAlign={'end'} + readOnly + value={"$ 100000"} focusBorderColor="forestGreen.300" fontSize={"sm"} placeholder="$00.00" /> + + Amount to invest + + + - Comments + IO Cash -