@evervault/evervault-react-native 1.3.0 → 1.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commonjs/components/Card/Card.js +15 -6
- package/dist/commonjs/components/Card/Card.js.map +1 -1
- package/dist/commonjs/components/useForm.js +5 -1
- package/dist/commonjs/components/useForm.js.map +1 -1
- package/dist/module/components/Card/Card.js +15 -6
- package/dist/module/components/Card/Card.js.map +1 -1
- package/dist/module/components/useForm.js +5 -1
- package/dist/module/components/useForm.js.map +1 -1
- package/dist/typescript/src/components/Card/Card.d.ts +1 -1
- package/dist/typescript/src/components/Card/Card.d.ts.map +1 -1
- package/dist/typescript/src/components/useForm.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/Card/Card.tsx +17 -8
- package/src/components/useForm.tsx +11 -1
|
@@ -27,18 +27,18 @@ function Card({
|
|
|
27
27
|
}) {
|
|
28
28
|
const [registeredFields, setRegisteredFields] = (0, _react.useState)(new Set());
|
|
29
29
|
const form = (0, _useForm.useForm)({
|
|
30
|
-
initialValues:
|
|
31
|
-
cvc: "",
|
|
32
|
-
expiry: "",
|
|
33
|
-
number: "",
|
|
34
|
-
name: ""
|
|
30
|
+
initialValues: {
|
|
31
|
+
cvc: initialValue?.cvc ?? "",
|
|
32
|
+
expiry: initialValue?.expiry ?? "",
|
|
33
|
+
number: initialValue?.number ?? "",
|
|
34
|
+
name: initialValue?.name ?? ""
|
|
35
35
|
},
|
|
36
36
|
validate: {
|
|
37
37
|
name: values => {
|
|
38
38
|
if (!registeredFields.has("name")) {
|
|
39
39
|
return undefined;
|
|
40
40
|
}
|
|
41
|
-
if (values.name.length === 0) {
|
|
41
|
+
if (values.name == null || values.name.length === 0) {
|
|
42
42
|
return "invalid";
|
|
43
43
|
}
|
|
44
44
|
return undefined;
|
|
@@ -47,6 +47,9 @@ function Card({
|
|
|
47
47
|
if (!registeredFields.has("number")) {
|
|
48
48
|
return undefined;
|
|
49
49
|
}
|
|
50
|
+
if (values.number == null) {
|
|
51
|
+
return "invalid";
|
|
52
|
+
}
|
|
50
53
|
const cardValidation = (0, _cardValidator.validateNumber)(values.number);
|
|
51
54
|
if (!cardValidation.isValid) {
|
|
52
55
|
return "invalid";
|
|
@@ -60,6 +63,9 @@ function Card({
|
|
|
60
63
|
if (!registeredFields.has("expiry")) {
|
|
61
64
|
return undefined;
|
|
62
65
|
}
|
|
66
|
+
if (values.expiry == null) {
|
|
67
|
+
return "invalid";
|
|
68
|
+
}
|
|
63
69
|
const expiryValidation = (0, _cardValidator.validateExpiry)(values.expiry);
|
|
64
70
|
if (!expiryValidation.isValid) {
|
|
65
71
|
return "invalid";
|
|
@@ -70,6 +76,9 @@ function Card({
|
|
|
70
76
|
if (!registeredFields.has("cvc")) {
|
|
71
77
|
return undefined;
|
|
72
78
|
}
|
|
79
|
+
if (values.cvc == null) {
|
|
80
|
+
return "invalid";
|
|
81
|
+
}
|
|
73
82
|
const cvcValidation = (0, _cardValidator.validateCVC)(values.cvc, values.number);
|
|
74
83
|
if (!cvcValidation.isValid) {
|
|
75
84
|
return "invalid";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_cardValidator","require","_react","_interopRequireWildcard","React","_useForm","_utilities","_CardNumber","_context","_sdk","_CardCVC","_CardHolder","_CardExpiry","_reactNative","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","Card","initialValue","config","children","onChange","style","registeredFields","setRegisteredFields","useState","Set","form","useForm","initialValues","cvc","expiry","number","name","validate","values","undefined","length","cardValidation","validateNumber","isValid","isAcceptedBrand","acceptedBrands","expiryValidation","validateExpiry","cvcValidation","validateCVC","formState","triggerChange","cardData","changePayload","encrypt","Array","from","createElement","CardContext","Provider","value","register","View","CardNamespace","exports","assign","Number","CardNumber","CVC","CardCVC","Holder","CardHolder","Expiry","CardExpiry"],"sourceRoot":"../../../../src","sources":["components/Card/Card.tsx"],"mappings":";;;;;;AAAA,IAAAA,cAAA,GAAAC,OAAA;AAKA,IAAAC,MAAA,GAAAC,uBAAA,CAAAF,OAAA;AAA+B,IAAAG,KAAA,GAAAF,MAAA;AAE/B,IAAAG,QAAA,GAAAJ,OAAA;AACA,IAAAK,UAAA,GAAAL,OAAA;AAEA,IAAAM,WAAA,GAAAN,OAAA;AACA,IAAAO,QAAA,GAAAP,OAAA;AACA,IAAAQ,IAAA,GAAAR,OAAA;AACA,IAAAS,QAAA,GAAAT,OAAA;AACA,IAAAU,WAAA,GAAAV,OAAA;AACA,IAAAW,WAAA,GAAAX,OAAA;AACA,IAAAY,YAAA,GAAAZ,OAAA;AAA0E,SAAAa,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAZ,wBAAAY,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAgB1E,SAASW,IAAIA,CAAC;EAAEC,YAAY;EAAEC,MAAM;EAAEC,QAAQ;EAAEC,QAAQ;EAAEC;AAAiB,CAAC,EAAE;EAC5E,MAAM,CAACC,gBAAgB,EAAEC,mBAAmB,CAAC,GAAG,IAAAC,eAAQ,EACtD,IAAIC,GAAG,CAAC,CACV,CAAC;EAED,MAAMC,IAAI,GAAG,IAAAC,gBAAO,EAAW;IAC7BC,aAAa,
|
|
1
|
+
{"version":3,"names":["_cardValidator","require","_react","_interopRequireWildcard","React","_useForm","_utilities","_CardNumber","_context","_sdk","_CardCVC","_CardHolder","_CardExpiry","_reactNative","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","Card","initialValue","config","children","onChange","style","registeredFields","setRegisteredFields","useState","Set","form","useForm","initialValues","cvc","expiry","number","name","validate","values","undefined","length","cardValidation","validateNumber","isValid","isAcceptedBrand","acceptedBrands","expiryValidation","validateExpiry","cvcValidation","validateCVC","formState","triggerChange","cardData","changePayload","encrypt","Array","from","createElement","CardContext","Provider","value","register","View","CardNamespace","exports","assign","Number","CardNumber","CVC","CardCVC","Holder","CardHolder","Expiry","CardExpiry"],"sourceRoot":"../../../../src","sources":["components/Card/Card.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -49,8 +49,12 @@ function useForm({
|
|
|
49
49
|
...p,
|
|
50
50
|
[field]: value
|
|
51
51
|
}));
|
|
52
|
+
const fieldsToValidate = Object.keys(errors ?? {});
|
|
53
|
+
if (field === "number" && errors?.["cvc"] == null && nextValues?.["cvc"]) {
|
|
54
|
+
fieldsToValidate.push("cvc");
|
|
55
|
+
}
|
|
52
56
|
const nextErrors = {};
|
|
53
|
-
|
|
57
|
+
fieldsToValidate.forEach(key => {
|
|
54
58
|
if (key === field) return;
|
|
55
59
|
const validator = validators.current?.[key];
|
|
56
60
|
if (!validator) return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","useForm","initialValues","validate","onChange","validators","useRef","triggerChange","values","setValues","useState","errors","setErrors","useEffect","current","setError","useCallback","field","error","prev","Object","keys","reduce","acc","key","setValue","value","nextValues","p","nextErrors","forEach","validator","isValid","useMemo","length","validateForm","hasErrors","shouldTriggerChange","some","prevError","nextError","validateField","register","name","handleBlur","handleChange","onBlur","form"],"sourceRoot":"../../../src","sources":["components/useForm.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAyBO,SAASC,OAAOA,CAAmB;EACxCC,aAAa;EACbC,QAAQ;EACRC;AACiB,CAAC,EAAoB;EACtC,MAAMC,UAAU,GAAG,IAAAC,aAAM,EAACH,QAAQ,CAAC;EACnC,MAAMI,aAAa,GAAG,IAAAD,aAAM,EAAC,KAAK,CAAC;EACnC,MAAM,CAACE,MAAM,EAAEC,SAAS,CAAC,GAAG,IAAAC,eAAQ,EAAIR,aAAa,CAAC;EACtD,MAAM,CAACS,MAAM,EAAEC,SAAS,CAAC,GAAG,IAAAF,eAAQ,EAClC,CAAC,CACH,CAAC;;EAED;EACA;EACA,IAAAG,gBAAS,EAAC,MAAM;IACdR,UAAU,CAACS,OAAO,GAAGX,QAAQ;EAC/B,CAAC,EAAE,CAACA,QAAQ,CAAC,CAAC;EAEd,MAAMY,QAAQ,GAAG,IAAAC,kBAAW,EAC1B,CAAoBC,KAAQ,EAAEC,KAAyB,KAAK;IAC1D,IAAI,CAACA,KAAK,EAAE;MACVN,SAAS,CAAEO,IAAI,IAAK;QAClB,IAAI,CAACA,IAAI,EAAE,OAAOA,IAAI;QACtB,OAAOC,MAAM,CAACC,IAAI,CAACF,IAAI,CAAC,CAACG,MAAM,CAAC,CAACC,GAAG,EAAEC,GAAG,KAAK;UAC5C,IAAIA,GAAG,KAAKP,KAAK,EAAE,OAAOM,GAAG;UAE7B,OAAO;YACL,GAAGA,GAAG;YACN,CAACC,GAAG,GAAGL,IAAI,GAAGK,GAAG;UACnB,CAAC;QACH,CAAC,EAAE,CAAC,CAAC,CAAC;MACR,CAAC,CAAC;MACF;IACF;IAEAZ,SAAS,CAAEO,IAAI,KAAM;MACnB,GAAGA,IAAI;MACP,CAACF,KAAK,GAAGC;IACX,CAAC,CAAC,CAAC;IAEHX,aAAa,CAACO,OAAO,GAAG,IAAI;EAC9B,CAAC,EACD,EACF,CAAC;EAED,MAAMW,QAAQ,GAAG,IAAAT,kBAAW,EAC1B,CAAoBC,KAAQ,EAAES,KAAW,KAAK;IAC5C,MAAMC,UAAU,GAAG;MAAE,GAAGnB,MAAM;MAAE,CAACS,KAAK,GAAGS;IAAM,CAAC;IAChDjB,SAAS,CAAEmB,CAAC,KAAM;MAAE,GAAGA,CAAC;MAAE,CAACX,KAAK,GAAGS;IAAM,CAAC,CAAC,CAAC;IAE5C,MAAMG,
|
|
1
|
+
{"version":3,"names":["_react","require","useForm","initialValues","validate","onChange","validators","useRef","triggerChange","values","setValues","useState","errors","setErrors","useEffect","current","setError","useCallback","field","error","prev","Object","keys","reduce","acc","key","setValue","value","nextValues","p","fieldsToValidate","push","nextErrors","forEach","validator","isValid","useMemo","length","validateForm","hasErrors","shouldTriggerChange","some","prevError","nextError","validateField","register","name","handleBlur","handleChange","onBlur","form"],"sourceRoot":"../../../src","sources":["components/useForm.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -19,18 +19,18 @@ function Card({
|
|
|
19
19
|
}) {
|
|
20
20
|
const [registeredFields, setRegisteredFields] = useState(new Set());
|
|
21
21
|
const form = useForm({
|
|
22
|
-
initialValues:
|
|
23
|
-
cvc: "",
|
|
24
|
-
expiry: "",
|
|
25
|
-
number: "",
|
|
26
|
-
name: ""
|
|
22
|
+
initialValues: {
|
|
23
|
+
cvc: initialValue?.cvc ?? "",
|
|
24
|
+
expiry: initialValue?.expiry ?? "",
|
|
25
|
+
number: initialValue?.number ?? "",
|
|
26
|
+
name: initialValue?.name ?? ""
|
|
27
27
|
},
|
|
28
28
|
validate: {
|
|
29
29
|
name: values => {
|
|
30
30
|
if (!registeredFields.has("name")) {
|
|
31
31
|
return undefined;
|
|
32
32
|
}
|
|
33
|
-
if (values.name.length === 0) {
|
|
33
|
+
if (values.name == null || values.name.length === 0) {
|
|
34
34
|
return "invalid";
|
|
35
35
|
}
|
|
36
36
|
return undefined;
|
|
@@ -39,6 +39,9 @@ function Card({
|
|
|
39
39
|
if (!registeredFields.has("number")) {
|
|
40
40
|
return undefined;
|
|
41
41
|
}
|
|
42
|
+
if (values.number == null) {
|
|
43
|
+
return "invalid";
|
|
44
|
+
}
|
|
42
45
|
const cardValidation = validateNumber(values.number);
|
|
43
46
|
if (!cardValidation.isValid) {
|
|
44
47
|
return "invalid";
|
|
@@ -52,6 +55,9 @@ function Card({
|
|
|
52
55
|
if (!registeredFields.has("expiry")) {
|
|
53
56
|
return undefined;
|
|
54
57
|
}
|
|
58
|
+
if (values.expiry == null) {
|
|
59
|
+
return "invalid";
|
|
60
|
+
}
|
|
55
61
|
const expiryValidation = validateExpiry(values.expiry);
|
|
56
62
|
if (!expiryValidation.isValid) {
|
|
57
63
|
return "invalid";
|
|
@@ -62,6 +68,9 @@ function Card({
|
|
|
62
68
|
if (!registeredFields.has("cvc")) {
|
|
63
69
|
return undefined;
|
|
64
70
|
}
|
|
71
|
+
if (values.cvc == null) {
|
|
72
|
+
return "invalid";
|
|
73
|
+
}
|
|
65
74
|
const cvcValidation = validateCVC(values.cvc, values.number);
|
|
66
75
|
if (!cvcValidation.isValid) {
|
|
67
76
|
return "invalid";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["validateNumber","validateCVC","validateExpiry","React","useState","useForm","changePayload","isAcceptedBrand","CardNumber","CardContext","encrypt","CardCVC","CardHolder","CardExpiry","View","Card","initialValue","config","children","onChange","style","registeredFields","setRegisteredFields","Set","form","initialValues","cvc","expiry","number","name","validate","values","has","undefined","length","cardValidation","isValid","acceptedBrands","expiryValidation","cvcValidation","formState","triggerChange","cardData","Array","from","createElement","Provider","value","register","CardNamespace","Object","assign","Number","CVC","Holder","Expiry"],"sourceRoot":"../../../../src","sources":["components/Card/Card.tsx"],"mappings":"AAAA,SACEA,cAAc,EACdC,WAAW,EACXC,cAAc,QACT,2BAA2B;AAClC,OAAO,KAAKC,KAAK,MAAM,OAAO;AAC9B,SAAoBC,QAAQ,QAAQ,OAAO;AAC3C,SAASC,OAAO,QAAQ,YAAY;AACpC,SAASC,aAAa,EAAEC,eAAe,
|
|
1
|
+
{"version":3,"names":["validateNumber","validateCVC","validateExpiry","React","useState","useForm","changePayload","isAcceptedBrand","CardNumber","CardContext","encrypt","CardCVC","CardHolder","CardExpiry","View","Card","initialValue","config","children","onChange","style","registeredFields","setRegisteredFields","Set","form","initialValues","cvc","expiry","number","name","validate","values","has","undefined","length","cardValidation","isValid","acceptedBrands","expiryValidation","cvcValidation","formState","triggerChange","cardData","Array","from","createElement","Provider","value","register","CardNamespace","Object","assign","Number","CVC","Holder","Expiry"],"sourceRoot":"../../../../src","sources":["components/Card/Card.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -43,8 +43,12 @@ export function useForm({
|
|
|
43
43
|
...p,
|
|
44
44
|
[field]: value
|
|
45
45
|
}));
|
|
46
|
+
const fieldsToValidate = Object.keys(errors ?? {});
|
|
47
|
+
if (field === "number" && errors?.["cvc"] == null && nextValues?.["cvc"]) {
|
|
48
|
+
fieldsToValidate.push("cvc");
|
|
49
|
+
}
|
|
46
50
|
const nextErrors = {};
|
|
47
|
-
|
|
51
|
+
fieldsToValidate.forEach(key => {
|
|
48
52
|
if (key === field) return;
|
|
49
53
|
const validator = validators.current?.[key];
|
|
50
54
|
if (!validator) return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useCallback","useEffect","useMemo","useRef","useState","useForm","initialValues","validate","onChange","validators","triggerChange","values","setValues","errors","setErrors","current","setError","field","error","prev","Object","keys","reduce","acc","key","setValue","value","nextValues","p","nextErrors","forEach","validator","isValid","length","validateForm","hasErrors","shouldTriggerChange","some","prevError","nextError","validateField","register","name","handleBlur","handleChange","onBlur","form"],"sourceRoot":"../../../src","sources":["components/useForm.tsx"],"mappings":"AAAA,SAASA,WAAW,EAAEC,SAAS,EAAEC,OAAO,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAyBzE,OAAO,SAASC,OAAOA,CAAmB;EACxCC,aAAa;EACbC,QAAQ;EACRC;AACiB,CAAC,EAAoB;EACtC,MAAMC,UAAU,GAAGN,MAAM,CAACI,QAAQ,CAAC;EACnC,MAAMG,aAAa,GAAGP,MAAM,CAAC,KAAK,CAAC;EACnC,MAAM,CAACQ,MAAM,EAAEC,SAAS,CAAC,GAAGR,QAAQ,CAAIE,aAAa,CAAC;EACtD,MAAM,CAACO,MAAM,EAAEC,SAAS,CAAC,GAAGV,QAAQ,CAClC,CAAC,CACH,CAAC;;EAED;EACA;EACAH,SAAS,CAAC,MAAM;IACdQ,UAAU,CAACM,OAAO,GAAGR,QAAQ;EAC/B,CAAC,EAAE,CAACA,QAAQ,CAAC,CAAC;EAEd,MAAMS,QAAQ,GAAGhB,WAAW,CAC1B,CAAoBiB,KAAQ,EAAEC,KAAyB,KAAK;IAC1D,IAAI,CAACA,KAAK,EAAE;MACVJ,SAAS,CAAEK,IAAI,IAAK;QAClB,IAAI,CAACA,IAAI,EAAE,OAAOA,IAAI;QACtB,OAAOC,MAAM,CAACC,IAAI,CAACF,IAAI,CAAC,CAACG,MAAM,CAAC,CAACC,GAAG,EAAEC,GAAG,KAAK;UAC5C,IAAIA,GAAG,KAAKP,KAAK,EAAE,OAAOM,GAAG;UAE7B,OAAO;YACL,GAAGA,GAAG;YACN,CAACC,GAAG,GAAGL,IAAI,GAAGK,GAAG;UACnB,CAAC;QACH,CAAC,EAAE,CAAC,CAAC,CAAC;MACR,CAAC,CAAC;MACF;IACF;IAEAV,SAAS,CAAEK,IAAI,KAAM;MACnB,GAAGA,IAAI;MACP,CAACF,KAAK,GAAGC;IACX,CAAC,CAAC,CAAC;IAEHR,aAAa,CAACK,OAAO,GAAG,IAAI;EAC9B,CAAC,EACD,EACF,CAAC;EAED,MAAMU,QAAQ,GAAGzB,WAAW,CAC1B,CAAoBiB,KAAQ,EAAES,KAAW,KAAK;IAC5C,MAAMC,UAAU,GAAG;MAAE,GAAGhB,MAAM;MAAE,CAACM,KAAK,GAAGS;IAAM,CAAC;IAChDd,SAAS,CAAEgB,CAAC,KAAM;MAAE,GAAGA,CAAC;MAAE,CAACX,KAAK,GAAGS;IAAM,CAAC,CAAC,CAAC;IAE5C,MAAMG,
|
|
1
|
+
{"version":3,"names":["useCallback","useEffect","useMemo","useRef","useState","useForm","initialValues","validate","onChange","validators","triggerChange","values","setValues","errors","setErrors","current","setError","field","error","prev","Object","keys","reduce","acc","key","setValue","value","nextValues","p","fieldsToValidate","push","nextErrors","forEach","validator","isValid","length","validateForm","hasErrors","shouldTriggerChange","some","prevError","nextError","validateField","register","name","handleBlur","handleChange","onBlur","form"],"sourceRoot":"../../../src","sources":["components/useForm.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -8,7 +8,7 @@ import { StyleProp, TextInputProps, TextStyle } from "react-native";
|
|
|
8
8
|
export interface BaseProps extends Omit<TextInputProps, "onChange" | "onChangeText" | "inputMode" | "autoComplete" | "value"> {
|
|
9
9
|
}
|
|
10
10
|
export interface CardProps {
|
|
11
|
-
initialValue?: CardForm
|
|
11
|
+
initialValue?: Partial<CardForm>;
|
|
12
12
|
config?: CardConfig;
|
|
13
13
|
children: ReactNode;
|
|
14
14
|
onChange?: (payload: CardPayload) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../../../../src/components/Card/Card.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAY,MAAM,OAAO,CAAC;AAG5C,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAa,WAAW,EAAE,MAAM,SAAS,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAQ,MAAM,cAAc,CAAC;AAE1E,MAAM,WAAW,SACf,SAAQ,IAAI,CACV,cAAc,EACd,UAAU,GAAG,cAAc,GAAG,WAAW,GAAG,cAAc,GAAG,OAAO,CACrE;CAAG;AAEN,MAAM,WAAW,SAAS;IACxB,YAAY,CAAC,EAAE,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../../../../src/components/Card/Card.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAY,MAAM,OAAO,CAAC;AAG5C,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAa,WAAW,EAAE,MAAM,SAAS,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAI1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAQ,MAAM,cAAc,CAAC;AAE1E,MAAM,WAAW,SACf,SAAQ,IAAI,CACV,cAAc,EACd,UAAU,GAAG,cAAc,GAAG,WAAW,GAAG,cAAc,GAAG,OAAO,CACrE;CAAG;AAEN,MAAM,WAAW,SAAS;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;IAC1C,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B;AAED,iBAAS,IAAI,CAAC,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,SAAS,qBAkG3E;AAED,QAAA,MAAM,aAAa;;;;;CAKjB,CAAC;AAEH,OAAO,EAAE,aAAa,IAAI,IAAI,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useForm.d.ts","sourceRoot":"","sources":["../../../../src/components/useForm.tsx"],"names":[],"mappings":";AAEA,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,MAAM,EAAE,CAAC,CAAC;IACV,QAAQ,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAC7D,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC;IAChD,QAAQ,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IAC3E,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,EAC1B,IAAI,EAAE,CAAC,KACJ;QACH,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;QAEhC,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;KAC9B,CAAC;CACH;AAED,UAAU,cAAc,CAAC,CAAC;IACxB,aAAa,EAAE,CAAC,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,MAAM,GAAG,SAAS,CAAC,CAAC;IAC7D,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;CAC/C;AAED,wBAAgB,OAAO,CAAC,CAAC,SAAS,MAAM,EAAE,EACxC,aAAa,EACb,QAAQ,EACR,QAAQ,GACT,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"useForm.d.ts","sourceRoot":"","sources":["../../../../src/components/useForm.tsx"],"names":[],"mappings":";AAEA,MAAM,WAAW,aAAa,CAAC,CAAC;IAC9B,MAAM,EAAE,CAAC,CAAC;IACV,QAAQ,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAC7D,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,CAAC;IAChD,QAAQ,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,CAAC;IAC3E,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,EAC1B,IAAI,EAAE,CAAC,KACJ;QACH,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;QAEhC,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;KAC9B,CAAC;CACH;AAED,UAAU,cAAc,CAAC,CAAC;IACxB,aAAa,EAAE,CAAC,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,MAAM,GAAG,SAAS,CAAC,CAAC;IAC7D,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;CAC/C;AAED,wBAAgB,OAAO,CAAC,CAAC,SAAS,MAAM,EAAE,EACxC,aAAa,EACb,QAAQ,EACR,QAAQ,GACT,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CA6JtC"}
|
package/package.json
CHANGED
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
import * as React from "react";
|
|
7
7
|
import { ReactNode, useState } from "react";
|
|
8
8
|
import { useForm } from "../useForm";
|
|
9
|
-
import { changePayload, isAcceptedBrand
|
|
9
|
+
import { changePayload, isAcceptedBrand } from "./utilities";
|
|
10
10
|
import type { CardForm, CardConfig, CardField, CardPayload } from "./types";
|
|
11
11
|
import { CardNumber } from "./CardNumber";
|
|
12
12
|
import { CardContext } from "./context";
|
|
@@ -23,7 +23,7 @@ export interface BaseProps
|
|
|
23
23
|
> {}
|
|
24
24
|
|
|
25
25
|
export interface CardProps {
|
|
26
|
-
initialValue?: CardForm
|
|
26
|
+
initialValue?: Partial<CardForm>;
|
|
27
27
|
config?: CardConfig;
|
|
28
28
|
children: ReactNode;
|
|
29
29
|
onChange?: (payload: CardPayload) => void;
|
|
@@ -36,11 +36,11 @@ function Card({ initialValue, config, children, onChange, style }: CardProps) {
|
|
|
36
36
|
);
|
|
37
37
|
|
|
38
38
|
const form = useForm<CardForm>({
|
|
39
|
-
initialValues:
|
|
40
|
-
cvc: "",
|
|
41
|
-
expiry: "",
|
|
42
|
-
number: "",
|
|
43
|
-
name: "",
|
|
39
|
+
initialValues: {
|
|
40
|
+
cvc: initialValue?.cvc ?? "",
|
|
41
|
+
expiry: initialValue?.expiry ?? "",
|
|
42
|
+
number: initialValue?.number ?? "",
|
|
43
|
+
name: initialValue?.name ?? "",
|
|
44
44
|
},
|
|
45
45
|
validate: {
|
|
46
46
|
name: (values) => {
|
|
@@ -48,7 +48,7 @@ function Card({ initialValue, config, children, onChange, style }: CardProps) {
|
|
|
48
48
|
return undefined;
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
if (values.name.length === 0) {
|
|
51
|
+
if (values.name == null || values.name.length === 0) {
|
|
52
52
|
return "invalid";
|
|
53
53
|
}
|
|
54
54
|
|
|
@@ -58,6 +58,9 @@ function Card({ initialValue, config, children, onChange, style }: CardProps) {
|
|
|
58
58
|
if (!registeredFields.has("number")) {
|
|
59
59
|
return undefined;
|
|
60
60
|
}
|
|
61
|
+
if (values.number == null) {
|
|
62
|
+
return "invalid";
|
|
63
|
+
}
|
|
61
64
|
const cardValidation = validateNumber(values.number);
|
|
62
65
|
if (!cardValidation.isValid) {
|
|
63
66
|
return "invalid";
|
|
@@ -73,6 +76,9 @@ function Card({ initialValue, config, children, onChange, style }: CardProps) {
|
|
|
73
76
|
if (!registeredFields.has("expiry")) {
|
|
74
77
|
return undefined;
|
|
75
78
|
}
|
|
79
|
+
if (values.expiry == null) {
|
|
80
|
+
return "invalid";
|
|
81
|
+
}
|
|
76
82
|
const expiryValidation = validateExpiry(values.expiry);
|
|
77
83
|
if (!expiryValidation.isValid) {
|
|
78
84
|
return "invalid";
|
|
@@ -84,6 +90,9 @@ function Card({ initialValue, config, children, onChange, style }: CardProps) {
|
|
|
84
90
|
if (!registeredFields.has("cvc")) {
|
|
85
91
|
return undefined;
|
|
86
92
|
}
|
|
93
|
+
if (values.cvc == null) {
|
|
94
|
+
return "invalid";
|
|
95
|
+
}
|
|
87
96
|
const cvcValidation = validateCVC(values.cvc, values.number);
|
|
88
97
|
if (!cvcValidation.isValid) {
|
|
89
98
|
return "invalid";
|
|
@@ -73,8 +73,18 @@ export function useForm<T extends object>({
|
|
|
73
73
|
const nextValues = { ...values, [field]: value };
|
|
74
74
|
setValues((p) => ({ ...p, [field]: value }));
|
|
75
75
|
|
|
76
|
+
const fieldsToValidate: string[] = Object.keys(errors ?? {});
|
|
77
|
+
if (
|
|
78
|
+
field === "number" &&
|
|
79
|
+
errors?.["cvc" as keyof T] == null &&
|
|
80
|
+
nextValues?.["cvc" as keyof T]
|
|
81
|
+
) {
|
|
82
|
+
fieldsToValidate.push("cvc");
|
|
83
|
+
}
|
|
84
|
+
|
|
76
85
|
const nextErrors: Partial<Record<keyof T, string>> = {};
|
|
77
|
-
|
|
86
|
+
|
|
87
|
+
fieldsToValidate.forEach((key) => {
|
|
78
88
|
if (key === field) return;
|
|
79
89
|
const validator = validators.current?.[key as keyof T];
|
|
80
90
|
if (!validator) return;
|