Skip to content
This repository was archived by the owner on Mar 13, 2025. It is now read-only.

fix: issues #458

Merged
merged 1 commit into from
Aug 11, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/routes/CreateNewTeam/components/EditRoleForm/index.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ function EditRoleForm({ onChange, role }) {
)}
</td>
<td>
<Field name="hoursPerWeek" initialValue={"40"}>
<Field name="hoursPerWeek" initialValue={role.hoursPerWeek}>
{(props) => (
<Select
name={props.input.name}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ const PaymentForm = ({ calculatedAmount }) => {
const [dropdownValue, setDropdownValue] = useState("");
const [processing, setProcessing] = useState(false);
const [requestLoading, setRequestLoading] = useState(false);
const [errors, setErrors] = useState({});
const [errors, setErrors] = useState({card: true, cardExpire: true, cardCvc: true});
const [clicked, setClicked] = useState(true);
const stripe = useStripe();
const elements = useElements();
Expand Down Expand Up @@ -85,6 +85,12 @@ const PaymentForm = ({ calculatedAmount }) => {
...temp,
});
};
const handleStripeElementError = (fieldName, error) => {
errors[fieldName] = error ? true: false
setErrors({
...errors,
});
}
const handleInputValue = (e) => {
const { name, value } = e.target;
setFormValues({
Expand Down Expand Up @@ -139,17 +145,22 @@ const PaymentForm = ({ calculatedAmount }) => {
})
.catch((err) => {
toastr.error("Error calculating amount", err.message);
})
.finally(() => {
setClicked(true);
});
}
};

const formIsValid = (fieldValues = formValues) => {
// check card valid
const cardValid = !errors['card'] && !errors['cardExpire'] && !errors['cvc']
const dropdown = dropdownValue === "" ? false : true;
const isValid =
fieldValues.email &&
fieldValues.name &&
fieldValues.zipcode &&
dropdown &&
dropdown && cardValid
Object.values(errors).every((x) => x === "");

return isValid;
Expand All @@ -170,12 +181,14 @@ const PaymentForm = ({ calculatedAmount }) => {
Card Information
</Typography>
</Box>
<StripeElement element={CardNumberElement} icon="card" />
<StripeElement onErrorChange={handleStripeElementError} element={CardNumberElement} name="card" icon="card" />
<div styleName="horizontal">
<StripeElement element={CardExpiryElement} width="150px" />
<StripeElement onErrorChange={handleStripeElementError} element={CardExpiryElement} name=""width="150px" name='cardExpire' />
<StripeElement
className={classes.cvc}
name="cvc"
element={CardCvcElement}
onErrorChange={handleStripeElementError}
icon="cvc"
width="112px"
/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,14 @@ import TextField from "@material-ui/core/TextField";
import Box from "@material-ui/core/Box";
import StripeInput from "./StripeInput";

function StripeElement({ element, icon, width }) {
function StripeElement({ onErrorChange, element, icon, width, name }) {
const [errorMessage, setErrorMessage] = React.useState(null);
function handleElementChange({ error, elementType }) {
function handleElementChange({empty, complete, error, elementType }) {
if (!complete || error || empty) {
onErrorChange(name, true)
}else {
onErrorChange(name, false)
}
if (error) {
if (elementType === "cardNumber") {
setErrorMessage("Credit card incomplete");
Expand All @@ -24,7 +29,6 @@ function StripeElement({ element, icon, width }) {
variant="outlined"
error={hasError}
helperText={hasError ? errorMessage || "Invalid" : ""}
onBlur={handleElementChange}
onChange={handleElementChange}
size="small"
style={{ width }}
Expand Down
7 changes: 5 additions & 2 deletions src/routes/CreateNewTeam/pages/CreateTaasPayment/index.jsx
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import React, { useState, useEffect, useCallback } from "react";
import _ from "lodash";
import { useSelector } from "react-redux";
import { Elements } from "@stripe/react-stripe-js";
import { loadStripe } from "@stripe/stripe-js";
Expand All @@ -19,7 +20,7 @@ const CreateTassPayment = () => {
const [calculatedAmount, setCalculatedAmount] = useState(0);
const [error, setError] = useState(false);
const [value, setValue] = useState([]);
const { addedRoles } = useSelector((state) => state.searchedRoles);
const { addedRoles, teamObject } = useSelector((state) => state.searchedRoles );

useEffect(() => {
const temp = [];
Expand All @@ -30,10 +31,12 @@ const CreateTassPayment = () => {
imageUrl,
name,
rates: [rates],
} = role;
const {
numberOfResources = 1,
durationWeeks = 4,
hoursPerWeek,
} = role;
} = _.find(teamObject.positions, p => p.roleSearchRequestId === role.searchId) || {}
let rate;

if (hoursPerWeek) {
Expand Down