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

Commit 5aae139

Browse files
authored
Merge pull request #458 from yoution/yoution-issues
fix: issues #451, #453, #454, #455
2 parents 41710bc + 099140a commit 5aae139

File tree

4 files changed

+30
-10
lines changed

4 files changed

+30
-10
lines changed

src/routes/CreateNewTeam/components/EditRoleForm/index.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ function EditRoleForm({ onChange, role }) {
155155
)}
156156
</td>
157157
<td>
158-
<Field name="hoursPerWeek" initialValue={"40"}>
158+
<Field name="hoursPerWeek" initialValue={role.hoursPerWeek}>
159159
{(props) => (
160160
<Select
161161
name={props.input.name}

src/routes/CreateNewTeam/pages/CreateTaasPayment/PaymentForm/index.jsx

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ const PaymentForm = ({ calculatedAmount }) => {
5151
const [dropdownValue, setDropdownValue] = useState("");
5252
const [processing, setProcessing] = useState(false);
5353
const [requestLoading, setRequestLoading] = useState(false);
54-
const [errors, setErrors] = useState({});
54+
const [errors, setErrors] = useState({card: true, cardExpire: true, cardCvc: true});
5555
const [clicked, setClicked] = useState(true);
5656
const stripe = useStripe();
5757
const elements = useElements();
@@ -85,6 +85,12 @@ const PaymentForm = ({ calculatedAmount }) => {
8585
...temp,
8686
});
8787
};
88+
const handleStripeElementError = (fieldName, error) => {
89+
errors[fieldName] = error ? true: false
90+
setErrors({
91+
...errors,
92+
});
93+
}
8894
const handleInputValue = (e) => {
8995
const { name, value } = e.target;
9096
setFormValues({
@@ -139,17 +145,22 @@ const PaymentForm = ({ calculatedAmount }) => {
139145
})
140146
.catch((err) => {
141147
toastr.error("Error calculating amount", err.message);
148+
})
149+
.finally(() => {
150+
setClicked(true);
142151
});
143152
}
144153
};
145154

146155
const formIsValid = (fieldValues = formValues) => {
156+
// check card valid
157+
const cardValid = !errors['card'] && !errors['cardExpire'] && !errors['cvc']
147158
const dropdown = dropdownValue === "" ? false : true;
148159
const isValid =
149160
fieldValues.email &&
150161
fieldValues.name &&
151162
fieldValues.zipcode &&
152-
dropdown &&
163+
dropdown && cardValid
153164
Object.values(errors).every((x) => x === "");
154165

155166
return isValid;
@@ -170,12 +181,14 @@ const PaymentForm = ({ calculatedAmount }) => {
170181
Card Information
171182
</Typography>
172183
</Box>
173-
<StripeElement element={CardNumberElement} icon="card" />
184+
<StripeElement onErrorChange={handleStripeElementError} element={CardNumberElement} name="card" icon="card" />
174185
<div styleName="horizontal">
175-
<StripeElement element={CardExpiryElement} width="150px" />
186+
<StripeElement onErrorChange={handleStripeElementError} element={CardExpiryElement} name=""width="150px" name='cardExpire' />
176187
<StripeElement
177188
className={classes.cvc}
189+
name="cvc"
178190
element={CardCvcElement}
191+
onErrorChange={handleStripeElementError}
179192
icon="cvc"
180193
width="112px"
181194
/>

src/routes/CreateNewTeam/pages/CreateTaasPayment/StripeElement/index.jsx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,14 @@ import TextField from "@material-ui/core/TextField";
33
import Box from "@material-ui/core/Box";
44
import StripeInput from "./StripeInput";
55

6-
function StripeElement({ element, icon, width }) {
6+
function StripeElement({ onErrorChange, element, icon, width, name }) {
77
const [errorMessage, setErrorMessage] = React.useState(null);
8-
function handleElementChange({ error, elementType }) {
8+
function handleElementChange({empty, complete, error, elementType }) {
9+
if (!complete || error || empty) {
10+
onErrorChange(name, true)
11+
}else {
12+
onErrorChange(name, false)
13+
}
914
if (error) {
1015
if (elementType === "cardNumber") {
1116
setErrorMessage("Credit card incomplete");
@@ -24,7 +29,6 @@ function StripeElement({ element, icon, width }) {
2429
variant="outlined"
2530
error={hasError}
2631
helperText={hasError ? errorMessage || "Invalid" : ""}
27-
onBlur={handleElementChange}
2832
onChange={handleElementChange}
2933
size="small"
3034
style={{ width }}

src/routes/CreateNewTeam/pages/CreateTaasPayment/index.jsx

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import React, { useState, useEffect, useCallback } from "react";
2+
import _ from "lodash";
23
import { useSelector } from "react-redux";
34
import { Elements } from "@stripe/react-stripe-js";
45
import { loadStripe } from "@stripe/stripe-js";
@@ -19,7 +20,7 @@ const CreateTassPayment = () => {
1920
const [calculatedAmount, setCalculatedAmount] = useState(0);
2021
const [error, setError] = useState(false);
2122
const [value, setValue] = useState([]);
22-
const { addedRoles } = useSelector((state) => state.searchedRoles);
23+
const { addedRoles, teamObject } = useSelector((state) => state.searchedRoles );
2324

2425
useEffect(() => {
2526
const temp = [];
@@ -30,10 +31,12 @@ const CreateTassPayment = () => {
3031
imageUrl,
3132
name,
3233
rates: [rates],
34+
} = role;
35+
const {
3336
numberOfResources = 1,
3437
durationWeeks = 4,
3538
hoursPerWeek,
36-
} = role;
39+
} = _.find(teamObject.positions, p => p.roleSearchRequestId === role.searchId) || {}
3740
let rate;
3841

3942
if (hoursPerWeek) {

0 commit comments

Comments
 (0)