import React, { useContext, useEffect, useState } from "react"; import { OPACITY_ON_LOAD } from "../../../Layout/animations"; import { Box, Divider, FormControl, FormLabel, Heading, Input, Select, Textarea, Button, Text, Image, Tabs, TabList, Tab, TabPanel, TabPanels, Tooltip, Switch, useDisclosure, } from "@chakra-ui/react"; import { useForm, Controller } from "react-hook-form"; import { yupResolver } from "@hookform/resolvers/yup"; import * as yup from "yup"; import { AddIcon, CloseIcon, DeleteIcon, EditIcon, ViewIcon, WarningTwoIcon, } from "@chakra-ui/icons"; import { TiWarning } from "react-icons/ti"; import GlobalStateContext from "../../../Contexts/GlobalStateContext"; import { useNavigate } from "react-router-dom"; import FormField from "../../../Components/FormField"; import { v4 as uuidv4 } from "uuid"; import AddIOCharges from "../AddIOCharges"; import FormInputMain from "../../../Components/FormInputMain"; import DataTable from "../../../Components/DataTable/DataTable"; import { debounce } from "../../Master/Sponser/AddSponser"; import CustomAlertDialog from "../../../Components/CustomAlertDialog"; import { formatDate } from "../../../Components/Functions/UTCConvertor"; import IODetails from "./IODetails"; import KeyMerits from "./KeyMerits"; import IOArtifacts from "./IOArtifacts"; import Investors from "./Investors"; import IOCashDetails from "./IOCashDetails"; import IONAVDetails from "./IONAVDetails"; import Distribution from "./Destribution"; import InvestmentDocuments from "../InvestmentDocuments"; import InvestmentDocument from "./InvestmentDocument"; const schema = yup.object().shape({ ioName: yup.string().required("Arabic name is required"), ioNameArabic: yup.string().required("Investment Object name is required"), discription: yup.string().required("Sponser name is required"), discriptionArabic: yup.string().required("Arabic name is required"), typeName: yup.string().required("Investment Object name is required"), typeNameArabic: yup.string().required("Sponser name is required"), sponserName: yup.string().required("Arabic name is required"), sponserNameArabic: yup .string() .required("Investment Object name is required"), holdingPeriod: yup.string().required("Sponser name is required"), ioStartus: yup.string().required("Investment Object name is required"), ioStartusArabic: yup.string().required("Sponser name is required"), goalAmount: yup.string().required("Arabic name is required"), closingDate: yup.string().required("Investment Object name is required"), minInvestment: yup.string().required("Sponser name is required"), maxInvestment: yup.string().required("Arabic name is required"), expectedReturn: yup.string().required("Investment Object name is required"), originalValue: yup.string().required("Sponser name is required"), keyname: yup.string().required("Arabic name is required"), keyNameArabic: yup.string().required("Investment Object name is required"), keyDescription: yup.string().required("Sponser name is required"), keyDescriptionArabic: yup.string().required("Sponser name is required"), docType: yup.string().required("Sponser name is required"), destributedAmount: yup .number() .required("Distributed Amount is required") .positive("Must be a positive number"), year: yup.string().required("Year is required"), tenure: yup .number() .required("Tenure is required") .positive("Must be a positive number"), annualReturn: yup .number() .required("Annual Return is required") .positive("Must be a positive number"), miniInvest: yup .number() .required("Minimum Invest is required") .positive("Must be a positive number"), quaterly: yup.string().required("Quaterly is required"), targetClose: yup.date().required("Target close date is required"), annualyield: yup .number() .required("Annual Yield is required") .positive("Must be a positive number"), iconUpload: yup.mixed().required("Profile image is required"), bannerImages: yup.mixed().required("Profile image is required"), otherImage: yup.mixed().required("Profile image is required"), docAttach: yup.mixed().required("Profile image is required"), videos: yup.mixed().required("Profile image is required"), }); const startYear = 2024; const endYear = 2124; const years = Array.from( { length: endYear - startYear + 1 }, (_, i) => startYear + i ).map((year) => ({ value: year, label: year })); const CreateIO = () => { const { control, handleSubmit, reset, watch, setValue, formState: { errors }, } = useForm({ resolver: yupResolver(schema), }); const initialTabsState = [ { label: "IO Details", content: , isDisabled: false, }, { label: "Investment documents", content: , isDisabled: true, }, { label: "Key merits", content: , isDisabled: false, }, { label: "IO artifacts", content: , isDisabled: false, }, { label: "Investors", content: , isDisabled: true, }, { label: "IO Cash Details", content: , isDisabled: false, }, { label: "IO NAV Details", content: , isDisabled: false, }, ]; const [tabs, setTabs] = useState(initialTabsState); const [activeIndex, setActiveIndex] = useState(0); const enableNextTab = (index) => { setTabs((prevTabs) => { const newTabs = [...prevTabs]; if (index < newTabs.length - 1) { newTabs[index + 1].isDisabled = false; setActiveIndex(index + 1); // Switch to the next tab } return newTabs; }); }; useEffect(() => { const timer = setTimeout(() => { setIsLoading(false); }, 1500); return () => clearTimeout(timer); }, []); const onSubmit = (data) => { data.preventDefault(); enableNextTab(0); }; return ( setActiveIndex(index)} mt={2} > {tabs.map(({ label, isDisabled }, index) => ( {label} ))} {tabs.map((tab, index) => ( {tab.content} ))} ); }; export default CreateIO;