|
1 |
| -import React, { useState, useRef } from 'react'; |
2 |
| -import CForm from './components/form'; |
3 |
| -import Card from './components/card'; |
| 1 | +import React, { useState, useRef } from "react"; |
| 2 | +import CForm from "./components/form"; |
| 3 | +import Card from "./components/card"; |
4 | 4 |
|
5 |
| -const defaultCardNo = '#### #### #### ####'; |
6 |
| -const defaultCardHolderName = 'FULL NAME'; |
7 |
| -const defaultCardMonth = ''; |
8 |
| -const defaultCardYear = ''; |
9 |
| -const defaultCardCvv = ''; |
| 5 | +const defaultCardNo = "#### #### #### ####"; |
| 6 | +const defaultCardHolderName = "FULL NAME"; |
| 7 | +const defaultCardMonth = ""; |
| 8 | +const defaultCardYear = ""; |
| 9 | +const defaultCardCvv = ""; |
10 | 10 |
|
11 | 11 | const MainScreen = () => {
|
12 |
| - const initialState = { |
13 |
| - cardNumber: defaultCardNo, |
14 |
| - cardHolder: defaultCardHolderName, |
15 |
| - cardMonth: defaultCardMonth, |
16 |
| - cardYear: defaultCardYear, |
17 |
| - cardCvv: defaultCardCvv, |
18 |
| - isCardFlipped: false, |
19 |
| - currentFocusedElm: null |
20 |
| - }; |
21 |
| - const [state, setState] = useState(initialState); |
| 12 | + const initialState = { |
| 13 | + cardNumber: defaultCardNo, |
| 14 | + cardHolder: defaultCardHolderName, |
| 15 | + cardMonth: defaultCardMonth, |
| 16 | + cardYear: defaultCardYear, |
| 17 | + cardCvv: defaultCardCvv, |
| 18 | + isCardFlipped: false, |
| 19 | + currentFocusedElm: null |
| 20 | + }; |
| 21 | + const [state, setState] = useState(initialState); |
22 | 22 |
|
23 |
| - const updateStateValue = ({ name, value }) => { |
24 |
| - setState({ |
25 |
| - ...state, |
26 |
| - [name]: value || initialState[name] |
27 |
| - }); |
28 |
| - }; |
| 23 | + const updateStateValue = ({ name, value }) => { |
| 24 | + setState({ |
| 25 | + ...state, |
| 26 | + [name]: value || initialState[name] |
| 27 | + }); |
| 28 | + }; |
29 | 29 |
|
30 |
| - const { |
31 |
| - cardNumber, |
32 |
| - cardHolder, |
33 |
| - cardMonth, |
34 |
| - cardYear, |
35 |
| - cardCvv, |
36 |
| - isCardFlipped |
37 |
| - } = state; |
38 |
| - let { currentFocusedElm } = state; |
| 30 | + const { |
| 31 | + cardNumber, |
| 32 | + cardHolder, |
| 33 | + cardMonth, |
| 34 | + cardYear, |
| 35 | + cardCvv, |
| 36 | + isCardFlipped |
| 37 | + } = state; |
| 38 | + let { currentFocusedElm } = state; |
39 | 39 |
|
40 |
| - // References for the Form Inputs |
41 |
| - let formFieldsRefObj = { |
42 |
| - cardNumber: useRef(), |
43 |
| - cardHolder: useRef(), |
44 |
| - cardDate: useRef(), |
45 |
| - cardCvv: useRef() |
46 |
| - }; |
| 40 | + // References for the Form Inputs |
| 41 | + let formFieldsRefObj = { |
| 42 | + cardNumber: useRef(), |
| 43 | + cardHolder: useRef(), |
| 44 | + cardDate: useRef(), |
| 45 | + cardCvv: useRef() |
| 46 | + }; |
47 | 47 |
|
48 |
| - let onCardElementClick = key => { |
49 |
| - focusFormFieldByKey(key); |
50 |
| - }; |
| 48 | + let onCardElementClick = key => { |
| 49 | + focusFormFieldByKey(key); |
| 50 | + }; |
51 | 51 |
|
52 |
| - let focusFormFieldByKey = key => { |
53 |
| - formFieldsRefObj[key].current.focus(); |
54 |
| - }; |
| 52 | + let focusFormFieldByKey = key => { |
| 53 | + formFieldsRefObj[key].current.focus(); |
| 54 | + }; |
55 | 55 |
|
56 |
| - // This are the references for the Card DIV elements |
57 |
| - let cardElementsRef = { |
58 |
| - cardNumber: null, |
59 |
| - cardHolder: null, |
60 |
| - cardDate: null |
61 |
| - }; |
| 56 | + // This are the references for the Card DIV elements |
| 57 | + let cardElementsRef = { |
| 58 | + cardNumber: null, |
| 59 | + cardHolder: null, |
| 60 | + cardDate: null |
| 61 | + }; |
62 | 62 |
|
63 |
| - let onCardFormInputFocus = (_event, inputName) => { |
64 |
| - setState({ |
65 |
| - ...state, |
66 |
| - currentFocusedElm: cardElementsRef[inputName] |
67 |
| - }); |
68 |
| - }; |
| 63 | + let onCardFormInputFocus = (_event, inputName) => { |
| 64 | + setState({ |
| 65 | + ...state, |
| 66 | + currentFocusedElm: cardElementsRef[inputName] |
| 67 | + }); |
| 68 | + }; |
69 | 69 |
|
70 |
| - let onCardInputBlur = event => { |
71 |
| - setState({ |
72 |
| - ...state, |
73 |
| - currentFocusedElm: null |
74 |
| - }); |
75 |
| - }; |
| 70 | + let onCardInputBlur = event => { |
| 71 | + setState({ |
| 72 | + ...state, |
| 73 | + currentFocusedElm: null |
| 74 | + }); |
| 75 | + }; |
76 | 76 |
|
77 |
| - return ( |
78 |
| - <div className="wrapper"> |
79 |
| - <CForm |
80 |
| - onUpdateStateValue={updateStateValue} |
81 |
| - cardNumberRef={formFieldsRefObj.cardNumber} |
82 |
| - cardHolderRef={formFieldsRefObj.cardHolder} |
83 |
| - cardDateRef={formFieldsRefObj.cardDate} |
84 |
| - onCardInputFocus={onCardFormInputFocus} |
85 |
| - onCardInputBlur={onCardInputBlur} |
86 |
| - > |
87 |
| - <Card |
88 |
| - cardNumber={cardNumber} |
89 |
| - cardHolder={cardHolder} |
90 |
| - cardMonth={cardMonth} |
91 |
| - cardYear={cardYear} |
92 |
| - cardCvv={cardCvv} |
93 |
| - isCardFlipped={isCardFlipped} |
94 |
| - currentFocusedElm={currentFocusedElm} |
95 |
| - onCardElementClick={onCardElementClick} |
96 |
| - cardNumberRef={node => |
97 |
| - (cardElementsRef['cardNumber'] = node) |
98 |
| - } |
99 |
| - cardHolderRef={node => |
100 |
| - (cardElementsRef['cardHolder'] = node) |
101 |
| - } |
102 |
| - cardDateRef={node => (cardElementsRef['cardDate'] = node)} |
103 |
| - ></Card> |
104 |
| - </CForm> |
105 |
| - </div> |
106 |
| - ); |
| 77 | + return ( |
| 78 | + <div className="wrapper"> |
| 79 | + <CForm |
| 80 | + onUpdateStateValue={updateStateValue} |
| 81 | + cardNumberRef={formFieldsRefObj.cardNumber} |
| 82 | + cardHolderRef={formFieldsRefObj.cardHolder} |
| 83 | + cardDateRef={formFieldsRefObj.cardDate} |
| 84 | + onCardInputFocus={onCardFormInputFocus} |
| 85 | + onCardInputBlur={onCardInputBlur} |
| 86 | + > |
| 87 | + <Card |
| 88 | + cardNumber={cardNumber} |
| 89 | + cardHolder={cardHolder} |
| 90 | + cardMonth={cardMonth} |
| 91 | + cardYear={cardYear} |
| 92 | + cardCvv={cardCvv} |
| 93 | + isCardFlipped={isCardFlipped} |
| 94 | + currentFocusedElm={currentFocusedElm} |
| 95 | + onCardElementClick={onCardElementClick} |
| 96 | + cardNumberRef={node => |
| 97 | + (cardElementsRef["cardNumber"] = node) |
| 98 | + } |
| 99 | + cardHolderRef={node => |
| 100 | + (cardElementsRef["cardHolder"] = node) |
| 101 | + } |
| 102 | + cardDateRef={node => (cardElementsRef["cardDate"] = node)} |
| 103 | + ></Card> |
| 104 | + </CForm> |
| 105 | + </div> |
| 106 | + ); |
107 | 107 | };
|
108 | 108 |
|
109 | 109 | export default MainScreen;
|
0 commit comments