diff --git a/src/Components/DataTable/NormalTable.jsx b/src/Components/DataTable/NormalTable.jsx index aafab00..7f06f34 100644 --- a/src/Components/DataTable/NormalTable.jsx +++ b/src/Components/DataTable/NormalTable.jsx @@ -10,6 +10,7 @@ import { Skeleton, TableCaption, Checkbox, + Radio, } from "@chakra-ui/react"; import EmptySearchList from "../EmptySearchList"; import { TABLE_PAGINATION } from "../../Constants/Paginations"; @@ -24,6 +25,11 @@ const NormalTable = ({ showRadioButton, // Prop for showing the checkboxes selectedRadio, setSelectedRadio, // State for managing selected checkboxes + + handleCheckboxChange: radioChange, + + + radio }) => { const columnWidth = data && data[0] @@ -31,17 +37,17 @@ const NormalTable = ({ : "auto"; // Toggle checkbox selection for individual rows - const handleCheckboxChange = (value) => { - setSelectedRadio((prev) => { - if (prev.includes(value)) { - // Remove if already selected - return prev.filter((id) => id !== value); - } else { - // Add to selected - return [...prev, value]; - } - }); - }; + // const handleCheckboxChange = (value) => { + // setSelectedRadio((prev) => { + // if (prev.includes(value)) { + // // Remove if already selected + // return prev.filter((id) => id !== value); + // } else { + // // Add to selected + // return [...prev, value]; + // } + // }); + // }; // Handle "Check All" checkbox const handleCheckAllChange = () => { @@ -53,6 +59,26 @@ const NormalTable = ({ } }; + + + const handleCheckboxChange = (value) => { + if (radio) { + // If radio is true, select only one option + setSelectedRadio([value]); // Set the selected radio to this value only + } else { + // Handle multiple selection for checkboxes + setSelectedRadio((prev) => { + if (prev.includes(value)) { + // Remove if already selected + return prev.filter((id) => id !== value); + } else { + // Add to selected + return [...prev, value]; + } + }); + } + }; + return ( {data?.length === 0 ? ( @@ -64,7 +90,7 @@ const NormalTable = ({ - {showRadioButton && ( + {showRadioButton &&( - + />} )} {tableHeadRow.map((heading, index) => ( @@ -135,13 +161,19 @@ const NormalTable = ({ > {showRadioButton && ( - radioChange(item.id, item)} + />: handleCheckboxChange(item.id)} - /> + />} )} {tableHeadRow.map((heading, i) => ( diff --git a/src/Pages/Fawateer/CreateRequest.jsx b/src/Pages/Fawateer/CreateRequest.jsx new file mode 100644 index 0000000..42c6cf8 --- /dev/null +++ b/src/Pages/Fawateer/CreateRequest.jsx @@ -0,0 +1,216 @@ +import React, { useState } from "react"; +import { OPACITY_ON_LOAD } from "../../Layout/animations"; +import { Box, Button, HStack, Input, InputGroup, InputRightAddon, InputRightElement, Textarea, useDisclosure } from "@chakra-ui/react"; +import { + FormControl, + FormLabel, + FormErrorMessage, + FormHelperText, +} from "@chakra-ui/react"; +import { ArrowForwardIcon, Search2Icon } from "@chakra-ui/icons"; +import SelectInvestorModal from "./SelectInvestorModal"; +import { useForm } from "react-hook-form"; // Import useForm +import { yupResolver } from "@hookform/resolvers/yup"; // Import resolver for Yup +import * as Yup from "yup"; // Import Yup for validation + + + +// Validation schema using Yup +const validationSchema = Yup.object().shape({ + investorName: Yup.string().required("Investor name is required"), + clientId: Yup.string().required("Client ID is required"), + date: Yup.date().required("Date is required").max(new Date(), "Date cannot be in the future"), + amount: Yup.number().required("Amount is required").positive("Amount must be positive"), + supportFile: Yup.mixed().required("Support file is required"), + description: Yup.string().required("Description is required"), +}); + +const CreateRequest = () => { + const { isOpen, onOpen, onClose } = useDisclosure() + const [ selectedInvestor, setSelectorInvestor] = useState({}) + + // Initialize useForm with the resolver for Yup validation + const { register, handleSubmit, setValue, formState: { errors } } = useForm({ + resolver: yupResolver(validationSchema), + }); + + + // Handle form submission + const onSubmit = (data) => { + console.log(data); // Form data + }; + + return ( + + + {/* + + */} + + + + Investor name + + + + Search + + + {errors.investorName?.message} + + + + + + + + Client Id + + + +{errors.clientId?.message} + + + + {/* Date */} + + + Date + + + + {errors.date?.message} + + + + {/* Amount */} + + + Amount + + + + {errors.amount?.message} + + {/* Support file */} + + + Support file + + setValue("supportFile", e.target.files[0])} + /> + {errors.supportFile?.message} + + + {/* Description */} + + + Description + +