@evervault/evervault-react-native 1.2.2 → 1.3.0
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/utilities.js +6 -0
- package/dist/commonjs/components/Card/utilities.js.map +1 -1
- package/dist/commonjs/components/useForm.js +17 -6
- package/dist/commonjs/components/useForm.js.map +1 -1
- package/dist/module/components/Card/utilities.js +6 -0
- package/dist/module/components/Card/utilities.js.map +1 -1
- package/dist/module/components/useForm.js +17 -6
- package/dist/module/components/useForm.js.map +1 -1
- package/dist/typescript/src/components/Card/utilities.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/utilities.ts +8 -0
- package/src/components/useForm.tsx +14 -9
|
@@ -22,6 +22,12 @@ async function changePayload(encrypt, form, fields) {
|
|
|
22
22
|
lastFour,
|
|
23
23
|
isValid: isValidCardNumber
|
|
24
24
|
} = (0, _cardValidator.validateNumber)(number);
|
|
25
|
+
if (brand !== "american-express" && cvc?.length === 4) {
|
|
26
|
+
form.setValues(prev => ({
|
|
27
|
+
...prev,
|
|
28
|
+
cvc: cvc.slice(0, 3)
|
|
29
|
+
}));
|
|
30
|
+
}
|
|
25
31
|
return {
|
|
26
32
|
card: {
|
|
27
33
|
name,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_cardValidator","require","changePayload","encrypt","form","fields","name","number","rawNumber","expiry","cvc","values","includes","replace","brand","localBrands","bin","lastFour","isValid","isValidCardNumber","validateNumber","card","encryptedNumber","formatExpiry","encryptedCVC","isComplete","errors","Object","keys","
|
|
1
|
+
{"version":3,"names":["_cardValidator","require","changePayload","encrypt","form","fields","name","number","rawNumber","expiry","cvc","values","includes","replace","brand","localBrands","bin","lastFour","isValid","isValidCardNumber","validateNumber","length","setValues","prev","slice","card","encryptedNumber","formatExpiry","encryptedCVC","isComplete","errors","Object","keys","cardValidation","expiryValidation","validateExpiry","cvcValidation","validateCVC","isAcceptedBrand","acceptedBrands","cardNumberValidationResult","isBrandAccepted","isLocalBrandAccepted","some","localBrand","parsedExpiry","month","year","cardNumber"],"sourceRoot":"../../../../src","sources":["components/Card/utilities.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -41,15 +41,26 @@ function useForm({
|
|
|
41
41
|
triggerChange.current = true;
|
|
42
42
|
}, []);
|
|
43
43
|
const setValue = (0, _react.useCallback)((field, value) => {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
44
|
+
const nextValues = {
|
|
45
|
+
...values,
|
|
46
|
+
[field]: value
|
|
47
|
+
};
|
|
48
|
+
setValues(p => ({
|
|
49
|
+
...p,
|
|
49
50
|
[field]: value
|
|
50
51
|
}));
|
|
52
|
+
const nextErrors = {};
|
|
53
|
+
Object.keys(errors ?? {}).forEach(key => {
|
|
54
|
+
if (key === field) return;
|
|
55
|
+
const validator = validators.current?.[key];
|
|
56
|
+
if (!validator) return;
|
|
57
|
+
const error = validator(nextValues);
|
|
58
|
+
if (!error) return;
|
|
59
|
+
nextErrors[key] = error;
|
|
60
|
+
});
|
|
61
|
+
setErrors(nextErrors);
|
|
51
62
|
triggerChange.current = true;
|
|
52
|
-
}, [
|
|
63
|
+
}, [values, errors]);
|
|
53
64
|
const isValid = (0, _react.useMemo)(() => Object.keys(errors ?? {}).length === 0, [errors]);
|
|
54
65
|
const validateForm = (0, _react.useCallback)(() => {
|
|
55
66
|
const nextErrors = Object.keys(values).reduce((acc, key) => {
|
|
@@ -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","
|
|
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":"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","ignoreList":[]}
|
|
@@ -14,6 +14,12 @@ export async function changePayload(encrypt, form, fields) {
|
|
|
14
14
|
lastFour,
|
|
15
15
|
isValid: isValidCardNumber
|
|
16
16
|
} = validateNumber(number);
|
|
17
|
+
if (brand !== "american-express" && cvc?.length === 4) {
|
|
18
|
+
form.setValues(prev => ({
|
|
19
|
+
...prev,
|
|
20
|
+
cvc: cvc.slice(0, 3)
|
|
21
|
+
}));
|
|
22
|
+
}
|
|
17
23
|
return {
|
|
18
24
|
card: {
|
|
19
25
|
name,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["validateNumber","validateExpiry","validateCVC","changePayload","encrypt","form","fields","name","number","rawNumber","expiry","cvc","values","includes","replace","brand","localBrands","bin","lastFour","isValid","isValidCardNumber","card","encryptedNumber","formatExpiry","encryptedCVC","isComplete","errors","Object","keys","
|
|
1
|
+
{"version":3,"names":["validateNumber","validateExpiry","validateCVC","changePayload","encrypt","form","fields","name","number","rawNumber","expiry","cvc","values","includes","replace","brand","localBrands","bin","lastFour","isValid","isValidCardNumber","length","setValues","prev","slice","card","encryptedNumber","formatExpiry","encryptedCVC","isComplete","errors","Object","keys","cardValidation","expiryValidation","cvcValidation","isAcceptedBrand","acceptedBrands","cardNumberValidationResult","isBrandAccepted","isLocalBrandAccepted","some","localBrand","parsedExpiry","month","year","cardNumber"],"sourceRoot":"../../../../src","sources":["components/Card/utilities.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -35,15 +35,26 @@ export function useForm({
|
|
|
35
35
|
triggerChange.current = true;
|
|
36
36
|
}, []);
|
|
37
37
|
const setValue = useCallback((field, value) => {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
38
|
+
const nextValues = {
|
|
39
|
+
...values,
|
|
40
|
+
[field]: value
|
|
41
|
+
};
|
|
42
|
+
setValues(p => ({
|
|
43
|
+
...p,
|
|
43
44
|
[field]: value
|
|
44
45
|
}));
|
|
46
|
+
const nextErrors = {};
|
|
47
|
+
Object.keys(errors ?? {}).forEach(key => {
|
|
48
|
+
if (key === field) return;
|
|
49
|
+
const validator = validators.current?.[key];
|
|
50
|
+
if (!validator) return;
|
|
51
|
+
const error = validator(nextValues);
|
|
52
|
+
if (!error) return;
|
|
53
|
+
nextErrors[key] = error;
|
|
54
|
+
});
|
|
55
|
+
setErrors(nextErrors);
|
|
45
56
|
triggerChange.current = true;
|
|
46
|
-
}, [
|
|
57
|
+
}, [values, errors]);
|
|
47
58
|
const isValid = useMemo(() => Object.keys(errors ?? {}).length === 0, [errors]);
|
|
48
59
|
const validateForm = useCallback(() => {
|
|
49
60
|
const nextErrors = Object.keys(values).reduce((acc, key) => {
|
|
@@ -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","
|
|
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":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../../../../src/components/Card/utilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,0BAA0B,EAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,wBAAsB,aAAa,CACjC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,EAC3C,IAAI,EAAE,aAAa,CAAC,QAAQ,CAAC,EAC7B,MAAM,EAAE,SAAS,EAAE,GAClB,OAAO,CAAC,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../../../../src/components/Card/utilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,0BAA0B,EAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,wBAAsB,aAAa,CACjC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,EAC3C,IAAI,EAAE,aAAa,CAAC,QAAQ,CAAC,EAC7B,MAAM,EAAE,SAAS,EAAE,GAClB,OAAO,CAAC,WAAW,CAAC,CAmCtB;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,aAAa,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,WAqB5E;AAED,wBAAgB,eAAe,CAC7B,cAAc,EAAE,aAAa,EAAE,GAAG,SAAS,EAC3C,0BAA0B,EAAE,0BAA0B,GACrD,OAAO,CAUT"}
|
|
@@ -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,CAmJtC"}
|
package/package.json
CHANGED
|
@@ -23,6 +23,14 @@ export async function changePayload(
|
|
|
23
23
|
lastFour,
|
|
24
24
|
isValid: isValidCardNumber,
|
|
25
25
|
} = validateNumber(number);
|
|
26
|
+
|
|
27
|
+
if (brand !== "american-express" && cvc?.length === 4) {
|
|
28
|
+
form.setValues((prev) => ({
|
|
29
|
+
...prev,
|
|
30
|
+
cvc: cvc.slice(0, 3),
|
|
31
|
+
}))
|
|
32
|
+
}
|
|
33
|
+
|
|
26
34
|
return {
|
|
27
35
|
card: {
|
|
28
36
|
name,
|
|
@@ -70,18 +70,23 @@ export function useForm<T extends object>({
|
|
|
70
70
|
|
|
71
71
|
const setValue = useCallback(
|
|
72
72
|
<K extends keyof T>(field: K, value: T[K]) => {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
[
|
|
80
|
-
|
|
73
|
+
const nextValues = { ...values, [field]: value };
|
|
74
|
+
setValues((p) => ({ ...p, [field]: value }));
|
|
75
|
+
|
|
76
|
+
const nextErrors: Partial<Record<keyof T, string>> = {};
|
|
77
|
+
Object.keys(errors ?? {}).forEach((key) => {
|
|
78
|
+
if (key === field) return;
|
|
79
|
+
const validator = validators.current?.[key as keyof T];
|
|
80
|
+
if (!validator) return;
|
|
81
|
+
const error = validator(nextValues);
|
|
82
|
+
if (!error) return;
|
|
83
|
+
nextErrors[key as keyof T] = error;
|
|
84
|
+
});
|
|
85
|
+
setErrors(nextErrors);
|
|
81
86
|
|
|
82
87
|
triggerChange.current = true;
|
|
83
88
|
},
|
|
84
|
-
[
|
|
89
|
+
[values, errors]
|
|
85
90
|
);
|
|
86
91
|
|
|
87
92
|
const isValid = useMemo(
|