This commit is contained in:
Kenneth Jannette
2024-01-19 15:08:55 -06:00
parent 372f7ed0ca
commit d64d6c0ff9
3 changed files with 69 additions and 13 deletions

View File

@@ -3,6 +3,17 @@ import Button from "../../pageElements/Button";
import Modal from "react-bootstrap/Modal"; import Modal from "react-bootstrap/Modal";
import TextInput from "../../pageElements/TextInput"; import TextInput from "../../pageElements/TextInput";
import { db } from "../../firebase"; import { db } from "../../firebase";
import { paymentfields } from "../../Constants/Fields/Signupfields";
import { splitEvery } from "../../Utils/Array";
import Col from "react-bootstrap/Col";
import Form from "react-bootstrap/Form";
import Row from "react-bootstrap/Row";
import {
getFormDataDefaults,
getValidatedFormData,
handleFormDataChange,
isFormDataHasErrors,
} from "../../Utils/Form";
const PaymentModal = ({ const PaymentModal = ({
onCancel, onCancel,
@@ -11,7 +22,37 @@ const PaymentModal = ({
modalText, modalText,
isBusy, isBusy,
setCardNumber, setCardNumber,
handleChangeInput,
}) => { }) => {
const fieldsChunkSize = 2;
const ModalForm = () => {
return splitEvery(
Object.keys(paymentfields).slice(0, -2),
fieldsChunkSize
).map((names, j) => (
<Row key={`row${j}`}>
{names.map((name, i) => (
<Col key={`${name}${i + fieldsChunkSize * j}`} className="mb-3">
<TextInput
name={name}
value={data[name].value}
onChange={(e) => handleChangeInput(e, name)}
error={data[name].error}
message={data[name].message}
label={
data[name].value.length === 0 ? signupfields[name].label : ""
}
type={signupfields[name].type}
values={signupfields[name].values}
disabled={isBusy}
/>
</Col>
))}
</Row>
));
};
return ( return (
<Modal show="true" onHide={onCancel} size="lg"> <Modal show="true" onHide={onCancel} size="lg">
<Modal.Header closeButton> <Modal.Header closeButton>
@@ -19,16 +60,9 @@ const PaymentModal = ({
</Modal.Header> </Modal.Header>
<Modal.Body> <Modal.Body>
<span>{modalText}</span> <span>{modalText}</span>
<div style={{ marginTop: "16px" }}> <Form className="signup-form">
<TextInput <ModalForm />
key={"captionTwo"} </Form>
name={"captionTwo"}
value={"issueText"}
message={"data.captionTwo.message"}
onChange={(e) => setCardNumber(e.target.value)}
label={"Card Number"}
/>
</div>
</Modal.Body> </Modal.Body>
<Modal.Footer> <Modal.Footer>
<Button <Button
@@ -49,3 +83,16 @@ const PaymentModal = ({
}; };
export default PaymentModal; export default PaymentModal;
/*
<div style={{ marginTop: "16px" }}>
<TextInput
key={"captionTwo"}
name={"captionTwo"}
value={"issueText"}
message={"data.captionTwo.message"}
onChange={(e) => setCardNumber(e.target.value)}
label={"Card Number"}
/>
</div>
*/

View File

@@ -32,15 +32,14 @@ const SignupPage = () => {
const [isBusy, setIsBusy] = useState(false); const [isBusy, setIsBusy] = useState(false);
const [data, setData] = useState(getFormDataDefaults(signupfields)); const [data, setData] = useState(getFormDataDefaults(signupfields));
const [showPaymentModal, setShowPaymentModal] = useState(false); const [showPaymentModal, setShowPaymentModal] = useState(false);
const handleChangeInput = (e, name) => { const handleChangeInput = (e, name) => {
const newData = handleFormDataChange(e, name, data, signupfields); const newData = handleFormDataChange(e, name, data, signupfields);
if (newData !== null) { if (newData !== null) {
setData(newData); setData(newData);
} }
}; };
const [cardNumber, setCardNumber] = useState("");
const [cardName, setCardName] = useState("");
const [cardSecNumber, setCardSecNumber] = useState("");
const validateData = () => { const validateData = () => {
const newData = getValidatedFormData(data, signupfields); const newData = getValidatedFormData(data, signupfields);
const hasErrors = isFormDataHasErrors(newData); const hasErrors = isFormDataHasErrors(newData);
@@ -48,6 +47,10 @@ const SignupPage = () => {
return hasErrors ? null : objectMap(({ value }) => value, newData); return hasErrors ? null : objectMap(({ value }) => value, newData);
}; };
const [cardNumber, setCardNumber] = useState("");
const [cardName, setCardName] = useState("");
const [cardSecNumber, setCardSecNumber] = useState("");
async function saveUserData(authId, dataValues) { async function saveUserData(authId, dataValues) {
const appUserId = uuidv4(); const appUserId = uuidv4();
const firmId = uuidv4(); const firmId = uuidv4();

View File

@@ -0,0 +1,6 @@
export const paymentfields = {
cardFirstName: { required: true, label: "First Name", maxLength: 45 },
cardLastName: { required: true, label: "Last Name", maxLength: 45 },
cardNumber: { required: true, label: "Firm", minLength: 2, maxLength: 45 },
cardSecNumber: { required: true, label: "Firm", minLength: 2, maxLength: 45 },
};