@networkinternational/ni-card-management-sdk 2.0.0 → 2.1.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/README.md +49 -1
- package/android/build.gradle +0 -1
- package/android/gradle.properties +1 -1
- package/android/src/main/java/com/nicardmanagement/NiCardManagementModule.kt +17 -5
- package/lib/commonjs/NICardManagementComponents/CardDetailsComponent.js +11 -1
- package/lib/commonjs/NICardManagementComponents/CardDetailsComponent.js.map +1 -1
- package/lib/commonjs/NICardManagementComponents/ViewPinComponent.js +10 -5
- package/lib/commonjs/NICardManagementComponents/ViewPinComponent.js.map +1 -1
- package/lib/commonjs/components/CardDetails/CardHolderNameGroups.js +4 -5
- package/lib/commonjs/components/CardDetails/CardHolderNameGroups.js.map +1 -1
- package/lib/commonjs/components/CardDetails/CardNumberGroup.js +4 -5
- package/lib/commonjs/components/CardDetails/CardNumberGroup.js.map +1 -1
- package/lib/commonjs/components/FeedbackPopup/FeedbackPopup.js +106 -0
- package/lib/commonjs/components/FeedbackPopup/FeedbackPopup.js.map +1 -0
- package/lib/commonjs/config/localization.js +10 -0
- package/lib/commonjs/config/localization.js.map +1 -1
- package/lib/module/NICardManagementComponents/CardDetailsComponent.js +11 -1
- package/lib/module/NICardManagementComponents/CardDetailsComponent.js.map +1 -1
- package/lib/module/NICardManagementComponents/ViewPinComponent.js +10 -5
- package/lib/module/NICardManagementComponents/ViewPinComponent.js.map +1 -1
- package/lib/module/components/CardDetails/CardHolderNameGroups.js +4 -5
- package/lib/module/components/CardDetails/CardHolderNameGroups.js.map +1 -1
- package/lib/module/components/CardDetails/CardNumberGroup.js +4 -5
- package/lib/module/components/CardDetails/CardNumberGroup.js.map +1 -1
- package/lib/module/components/FeedbackPopup/FeedbackPopup.js +97 -0
- package/lib/module/components/FeedbackPopup/FeedbackPopup.js.map +1 -0
- package/lib/module/config/localization.js +10 -0
- package/lib/module/config/localization.js.map +1 -1
- package/lib/typescript/src/NICardManagementComponents/CardDetailsComponent.d.ts.map +1 -1
- package/lib/typescript/src/NICardManagementComponents/ViewPinComponent.d.ts.map +1 -1
- package/lib/typescript/src/components/CardDetails/CardHolderNameGroups.d.ts.map +1 -1
- package/lib/typescript/src/components/CardDetails/CardNumberGroup.d.ts.map +1 -1
- package/lib/typescript/src/components/FeedbackPopup/FeedbackPopup.d.ts +13 -0
- package/lib/typescript/src/components/FeedbackPopup/FeedbackPopup.d.ts.map +1 -0
- package/lib/typescript/src/config/localization.d.ts +10 -0
- package/lib/typescript/src/config/localization.d.ts.map +1 -1
- package/lib/typescript/src/utils/localization.d.ts +5 -0
- package/lib/typescript/src/utils/localization.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/NICardManagementComponents/CardDetailsComponent.tsx +11 -0
- package/src/NICardManagementComponents/ViewPinComponent.tsx +11 -7
- package/src/components/CardDetails/CardHolderNameGroups.tsx +4 -6
- package/src/components/CardDetails/CardNumberGroup.tsx +4 -6
- package/src/components/FeedbackPopup/FeedbackPopup.tsx +117 -0
- package/src/config/localization.ts +10 -0
|
@@ -3,12 +3,15 @@ import { NIPinTypeEnum, NIThemeEnum } from '../interfaces/NiInputInterfaces';
|
|
|
3
3
|
import { useViewPin } from '../hooks/useViewPin';
|
|
4
4
|
import PinState from '../components/PinState/PinState';
|
|
5
5
|
import ViewPin from '../components/ViewPin/ViewPin';
|
|
6
|
+
import { FeedbackPopup } from '../components/FeedbackPopup/FeedbackPopup';
|
|
7
|
+
import localLabels from '../utils/localization';
|
|
6
8
|
function ViewPinComponent({
|
|
7
9
|
input,
|
|
8
10
|
type: pinType,
|
|
9
11
|
callback
|
|
10
12
|
}) {
|
|
11
13
|
const theme = input?.displayAttributes?.theme || NIThemeEnum.light;
|
|
14
|
+
const language = input?.displayAttributes?.language || 'english';
|
|
12
15
|
const countdownTime = input?.timer;
|
|
13
16
|
const {
|
|
14
17
|
result: viewPinResult,
|
|
@@ -16,11 +19,6 @@ function ViewPinComponent({
|
|
|
16
19
|
isLoading: isViewPinLoading,
|
|
17
20
|
onViewPin
|
|
18
21
|
} = useViewPin();
|
|
19
|
-
(!!viewPinResult || !!viewPinError) && console.log('ViewPinView', {
|
|
20
|
-
viewPinResult,
|
|
21
|
-
viewPinError,
|
|
22
|
-
isViewPinLoading
|
|
23
|
-
});
|
|
24
22
|
useEffect(() => {
|
|
25
23
|
if (input) {
|
|
26
24
|
onViewPin(input, callback);
|
|
@@ -34,6 +32,13 @@ function ViewPinComponent({
|
|
|
34
32
|
}), /*#__PURE__*/React.createElement(PinState, {
|
|
35
33
|
isLoading: isViewPinLoading,
|
|
36
34
|
theme: theme
|
|
35
|
+
}), /*#__PURE__*/React.createElement(FeedbackPopup, {
|
|
36
|
+
error: viewPinError,
|
|
37
|
+
isLoading: isViewPinLoading,
|
|
38
|
+
isSuccess: !!viewPinResult,
|
|
39
|
+
language: language,
|
|
40
|
+
successMessage: localLabels(language).viewPinSuccess,
|
|
41
|
+
theme: theme
|
|
37
42
|
}));
|
|
38
43
|
}
|
|
39
44
|
export { ViewPinComponent, useViewPin };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","NIPinTypeEnum","NIThemeEnum","useViewPin","PinState","ViewPin","ViewPinComponent","input","type","pinType","callback","theme","displayAttributes","light","countdownTime","timer","result","viewPinResult","error","viewPinError","isLoading","isViewPinLoading","onViewPin","
|
|
1
|
+
{"version":3,"names":["React","useEffect","NIPinTypeEnum","NIThemeEnum","useViewPin","PinState","ViewPin","FeedbackPopup","localLabels","ViewPinComponent","input","type","pinType","callback","theme","displayAttributes","light","language","countdownTime","timer","result","viewPinResult","error","viewPinError","isLoading","isViewPinLoading","onViewPin","createElement","Fragment","dynamicFourToSix","isSuccess","successMessage","viewPinSuccess"],"sourceRoot":"../../../src","sources":["NICardManagementComponents/ViewPinComponent.tsx"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,SAAS,QAAQ,OAAO;AAExC,SAASC,aAAa,EAAEC,WAAW,QAAQ,iCAAiC;AAE5E,SAASC,UAAU,QAAQ,qBAAqB;AAChD,OAAOC,QAAQ,MAAM,iCAAiC;AACtD,OAAOC,OAAO,MAAM,+BAA+B;AACnD,SAASC,aAAa,QAAQ,2CAA2C;AACzE,OAAOC,WAAW,MAAM,uBAAuB;AAE/C,SAASC,gBAAgBA,CAAC;EACxBC,KAAK;EACLC,IAAI,EAAEC,OAAO;EACbC;AACkB,CAAC,EAAe;EAClC,MAAMC,KAAK,GAAGJ,KAAK,EAAEK,iBAAiB,EAAED,KAAK,IAAIX,WAAW,CAACa,KAAK;EAClE,MAAMC,QAAQ,GAAGP,KAAK,EAAEK,iBAAiB,EAAEE,QAAQ,IAAI,SAAS;EAChE,MAAMC,aAAa,GAAGR,KAAK,EAAES,KAAK;EAElC,MAAM;IACJC,MAAM,EAAEC,aAAa;IACrBC,KAAK,EAAEC,YAAY;IACnBC,SAAS,EAAEC,gBAAgB;IAC3BC;EACF,CAAC,GAAGtB,UAAU,CAAC,CAAC;EAEhBH,SAAS,CAAC,MAAM;IACd,IAAIS,KAAK,EAAE;MACTgB,SAAS,CAAChB,KAAK,EAAEG,QAAQ,CAAC;IAC5B;EACF,CAAC,EAAE,CAACH,KAAK,EAAEG,QAAQ,EAAEa,SAAS,CAAC,CAAC;EAEhC,oBACE1B,KAAA,CAAA2B,aAAA,CAAA3B,KAAA,CAAA4B,QAAA,qBACE5B,KAAA,CAAA2B,aAAA,CAACrB,OAAO;IACNI,KAAK,EAAEA,KAAM;IACbE,OAAO,EAAEA,OAAO,IAAIV,aAAa,CAAC2B,gBAAiB;IACnDT,MAAM,EAAEC,aAAa,IAAI,EAAG;IAC5BH,aAAa,EAAEA,aAAa,IAAI;EAAE,CACnC,CAAC,eACFlB,KAAA,CAAA2B,aAAA,CAACtB,QAAQ;IAACmB,SAAS,EAAEC,gBAAiB;IAACX,KAAK,EAAEA;EAAM,CAAE,CAAC,eACvDd,KAAA,CAAA2B,aAAA,CAACpB,aAAa;IACZe,KAAK,EAAEC,YAAa;IACpBC,SAAS,EAAEC,gBAAiB;IAC5BK,SAAS,EAAE,CAAC,CAACT,aAAc;IAC3BJ,QAAQ,EAAEA,QAAS;IACnBc,cAAc,EAAEvB,WAAW,CAACS,QAAQ,CAAC,CAACe,cAAe;IACrDlB,KAAK,EAAEA;EAAM,CACd,CACD,CAAC;AAEP;AAEA,SAASL,gBAAgB,EAAEL,UAAU"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { View, Text, TouchableOpacity, I18nManager } from 'react-native';
|
|
3
|
-
import
|
|
3
|
+
import Clipboard from '@react-native-clipboard/clipboard';
|
|
4
4
|
import { NIThemeEnum } from '../../interfaces/NiInputInterfaces';
|
|
5
5
|
import { styles } from './styles';
|
|
6
6
|
import { HEIGHT_CARD } from '../../config/configCard';
|
|
@@ -14,7 +14,6 @@ export function CardDetailsCardHolderNameGroups({
|
|
|
14
14
|
displayAttributes,
|
|
15
15
|
setTimeOut
|
|
16
16
|
}) {
|
|
17
|
-
const [data, setString] = useClipboard();
|
|
18
17
|
const maskedCardholderName = cardholderName.replace(/\b\w*/g, function (s) {
|
|
19
18
|
return s.replace(/(?<!^)./g, '*');
|
|
20
19
|
});
|
|
@@ -36,12 +35,12 @@ export function CardDetailsCardHolderNameGroups({
|
|
|
36
35
|
fontSize: textFont.size,
|
|
37
36
|
fontFamily: textFont.name
|
|
38
37
|
};
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
function handleOnPress() {
|
|
39
|
+
// Write directly so iOS does not request permission to read the pasteboard.
|
|
40
|
+
Clipboard.setString(cardholderName);
|
|
41
41
|
setIsVisibleCopiedButton(true);
|
|
42
42
|
setTimeOut();
|
|
43
43
|
}
|
|
44
|
-
!!data && console.log('clipboard', data);
|
|
45
44
|
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(View, {
|
|
46
45
|
style: [styles.containerHolderNameContentGroupTopAlignment, containerHolderNameContentGroupTopAlignmentStyle]
|
|
47
46
|
}, /*#__PURE__*/React.createElement(View, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","View","Text","TouchableOpacity","I18nManager","
|
|
1
|
+
{"version":3,"names":["React","View","Text","TouchableOpacity","I18nManager","Clipboard","NIThemeEnum","styles","HEIGHT_CARD","themeColors","PredeterminedIcon","CardDetailsCardHolderNameGroups","cardholderName","pinContentIndex","cardDetailsVisible","setIsVisibleCopiedButton","displayAttributes","setTimeOut","maskedCardholderName","replace","s","cardholderNameRendered","holderNameContentGroupTopAlignment","Math","round","cardAttributes","textPositioning","cardHolderNameGroupTopAlignment","containerHolderNameContentGroupTopAlignmentStyle","position","top","theme","light","textFonts","fonts","filter","item","label","textFont","length","font","name","size","contentStyleText","color","colorCard","dark","fontSize","fontFamily","handleOnPress","setString","createElement","Fragment","style","containerHolderNameContentGroupTopAlignment","copyRow","isRTL","flexDirection","textContent","onPress"],"sourceRoot":"../../../../src","sources":["components/CardDetails/CardHolderNameGroups.tsx"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { View, TouchableOpacity, Text, I18nManager } from 'react-native';
|
|
3
|
-
import
|
|
3
|
+
import Clipboard from '@react-native-clipboard/clipboard';
|
|
4
4
|
import { NIThemeEnum } from '../../interfaces/NiInputInterfaces';
|
|
5
5
|
import { styles } from './styles';
|
|
6
6
|
import { HEIGHT_CARD } from '../../config/configCard';
|
|
@@ -15,7 +15,6 @@ export function CardDetailsCardNumberGroup({
|
|
|
15
15
|
displayAttributes,
|
|
16
16
|
setTimeOut
|
|
17
17
|
}) {
|
|
18
|
-
const [data, setString] = useClipboard();
|
|
19
18
|
const clearPanRendered = clearPan.replace(/.{4}/g, '$& ');
|
|
20
19
|
const maskedPanRendered = maskedPan.replace(/[a-zA-Z0-9]+(?=....)/g, function (s) {
|
|
21
20
|
return '*'.repeat(s.length);
|
|
@@ -38,12 +37,12 @@ export function CardDetailsCardNumberGroup({
|
|
|
38
37
|
fontSize: textFont.size,
|
|
39
38
|
fontFamily: textFont.name
|
|
40
39
|
};
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
function handleOnPress() {
|
|
41
|
+
// Write directly so iOS does not request permission to read the pasteboard.
|
|
42
|
+
Clipboard.setString(clearPan);
|
|
43
43
|
setIsVisibleCopiedButton(true);
|
|
44
44
|
setTimeOut();
|
|
45
45
|
}
|
|
46
|
-
!!data && console.log('clipboard', data);
|
|
47
46
|
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(View, {
|
|
48
47
|
style: [styles.containerCardNumberContentGroupTopAlignment, containerCardNumberContentGroupTopAlignmentStyle]
|
|
49
48
|
}, /*#__PURE__*/React.createElement(View, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","View","TouchableOpacity","Text","I18nManager","
|
|
1
|
+
{"version":3,"names":["React","View","TouchableOpacity","Text","I18nManager","Clipboard","NIThemeEnum","styles","HEIGHT_CARD","themeColors","PredeterminedIcon","CardDetailsCardNumberGroup","clearPan","maskedPan","pinContentIndex","cardDetailsVisible","setIsVisibleCopiedButton","displayAttributes","setTimeOut","clearPanRendered","replace","maskedPanRendered","s","repeat","length","cardNumber","cardNumberGroupTopAlignment","Math","round","cardAttributes","textPositioning","containerCardNumberContentGroupTopAlignmentStyle","position","top","theme","light","textFonts","fonts","filter","item","label","textFont","font","name","size","contentStyleText","color","colorCard","dark","fontSize","fontFamily","handleOnPress","setString","createElement","Fragment","style","containerCardNumberContentGroupTopAlignment","copyRow","isRTL","flexDirection","textContent","onPress"],"sourceRoot":"../../../../src","sources":["components/CardDetails/CardNumberGroup.tsx"],"mappings":"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"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import React, { useEffect, useState } from 'react';
|
|
2
|
+
import { Modal, Pressable, StyleSheet, Text, View } from 'react-native';
|
|
3
|
+
import { themeColors } from '../../config/themeColors';
|
|
4
|
+
import localLabels from '../../utils/localization';
|
|
5
|
+
export function FeedbackPopup({
|
|
6
|
+
error,
|
|
7
|
+
isLoading,
|
|
8
|
+
isSuccess,
|
|
9
|
+
successMessage,
|
|
10
|
+
theme,
|
|
11
|
+
language
|
|
12
|
+
}) {
|
|
13
|
+
const [isVisible, setIsVisible] = useState(false);
|
|
14
|
+
const labels = localLabels(language);
|
|
15
|
+
const isError = !!error;
|
|
16
|
+
useEffect(() => {
|
|
17
|
+
if (isLoading) {
|
|
18
|
+
setIsVisible(false);
|
|
19
|
+
} else if (error || isSuccess) {
|
|
20
|
+
setIsVisible(true);
|
|
21
|
+
}
|
|
22
|
+
}, [error, isLoading, isSuccess]);
|
|
23
|
+
const colors = themeColors[theme];
|
|
24
|
+
return /*#__PURE__*/React.createElement(Modal, {
|
|
25
|
+
animationType: "fade",
|
|
26
|
+
onRequestClose: () => setIsVisible(false),
|
|
27
|
+
transparent: true,
|
|
28
|
+
visible: isVisible
|
|
29
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
30
|
+
style: styles.backdrop
|
|
31
|
+
}, /*#__PURE__*/React.createElement(View, {
|
|
32
|
+
accessibilityRole: "alert",
|
|
33
|
+
style: [styles.popup, {
|
|
34
|
+
backgroundColor: colors.background
|
|
35
|
+
}]
|
|
36
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
37
|
+
style: [styles.title, isError ? styles.error : styles.success]
|
|
38
|
+
}, isError ? labels.errorTitle : labels.successTitle), /*#__PURE__*/React.createElement(Text, {
|
|
39
|
+
style: [styles.message, {
|
|
40
|
+
color: colors.color
|
|
41
|
+
}]
|
|
42
|
+
}, error?.message || successMessage), /*#__PURE__*/React.createElement(Pressable, {
|
|
43
|
+
accessibilityRole: "button",
|
|
44
|
+
onPress: () => setIsVisible(false),
|
|
45
|
+
style: styles.button
|
|
46
|
+
}, /*#__PURE__*/React.createElement(Text, {
|
|
47
|
+
style: styles.buttonText
|
|
48
|
+
}, labels.ok)))));
|
|
49
|
+
}
|
|
50
|
+
const styles = StyleSheet.create({
|
|
51
|
+
backdrop: {
|
|
52
|
+
alignItems: 'center',
|
|
53
|
+
backgroundColor: 'rgba(0, 0, 0, 0.45)',
|
|
54
|
+
flex: 1,
|
|
55
|
+
justifyContent: 'center',
|
|
56
|
+
padding: 24
|
|
57
|
+
},
|
|
58
|
+
popup: {
|
|
59
|
+
borderRadius: 8,
|
|
60
|
+
maxWidth: 420,
|
|
61
|
+
padding: 24,
|
|
62
|
+
width: '100%'
|
|
63
|
+
},
|
|
64
|
+
title: {
|
|
65
|
+
fontSize: 20,
|
|
66
|
+
fontWeight: '600',
|
|
67
|
+
marginBottom: 12,
|
|
68
|
+
textAlign: 'center'
|
|
69
|
+
},
|
|
70
|
+
error: {
|
|
71
|
+
color: '#C62828'
|
|
72
|
+
},
|
|
73
|
+
success: {
|
|
74
|
+
color: '#2E7D32'
|
|
75
|
+
},
|
|
76
|
+
message: {
|
|
77
|
+
fontSize: 16,
|
|
78
|
+
lineHeight: 22,
|
|
79
|
+
marginBottom: 24,
|
|
80
|
+
textAlign: 'center'
|
|
81
|
+
},
|
|
82
|
+
button: {
|
|
83
|
+
alignItems: 'center',
|
|
84
|
+
alignSelf: 'center',
|
|
85
|
+
backgroundColor: '#202124',
|
|
86
|
+
borderRadius: 6,
|
|
87
|
+
minWidth: 96,
|
|
88
|
+
paddingHorizontal: 20,
|
|
89
|
+
paddingVertical: 12
|
|
90
|
+
},
|
|
91
|
+
buttonText: {
|
|
92
|
+
color: 'white',
|
|
93
|
+
fontSize: 16,
|
|
94
|
+
fontWeight: '600'
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
//# sourceMappingURL=FeedbackPopup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useEffect","useState","Modal","Pressable","StyleSheet","Text","View","themeColors","localLabels","FeedbackPopup","error","isLoading","isSuccess","successMessage","theme","language","isVisible","setIsVisible","labels","isError","colors","createElement","animationType","onRequestClose","transparent","visible","style","styles","backdrop","accessibilityRole","popup","backgroundColor","background","title","success","errorTitle","successTitle","message","color","onPress","button","buttonText","ok","create","alignItems","flex","justifyContent","padding","borderRadius","maxWidth","width","fontSize","fontWeight","marginBottom","textAlign","lineHeight","alignSelf","minWidth","paddingHorizontal","paddingVertical"],"sourceRoot":"../../../../src","sources":["components/FeedbackPopup/FeedbackPopup.tsx"],"mappings":"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"}
|
|
@@ -12,6 +12,11 @@ const english = {
|
|
|
12
12
|
setPinButtonLabel: 'Set PIN',
|
|
13
13
|
changePinButtonLabel: 'Change PIN',
|
|
14
14
|
copiedToClipboard: 'Copied to clipboard',
|
|
15
|
+
successTitle: 'Success',
|
|
16
|
+
errorTitle: 'Error',
|
|
17
|
+
ok: 'OK',
|
|
18
|
+
cardDetailsSuccess: 'Card details retrieved successfully.',
|
|
19
|
+
viewPinSuccess: 'PIN retrieved successfully.',
|
|
15
20
|
viewPinCountdownLabel: count => 'PIN will be hidden in ' + count + ' seconds',
|
|
16
21
|
show: 'Show',
|
|
17
22
|
hide: 'Hide'
|
|
@@ -30,6 +35,11 @@ const arabic = {
|
|
|
30
35
|
setPinButtonLabel: 'تعيين الرقم السري',
|
|
31
36
|
changePinButtonLabel: '\u200Eتغيير الرقم السري (PIN)',
|
|
32
37
|
copiedToClipboard: 'تم النسخ إلى الحافظة',
|
|
38
|
+
successTitle: 'تم بنجاح',
|
|
39
|
+
errorTitle: 'خطأ',
|
|
40
|
+
ok: 'حسنًا',
|
|
41
|
+
cardDetailsSuccess: 'تم استرداد تفاصيل البطاقة بنجاح.',
|
|
42
|
+
viewPinSuccess: 'تم استرداد الرقم السري بنجاح.',
|
|
33
43
|
viewPinCountdownLabel: count => '\u200Eثواني\u200E ' + count + '\u200E سيتم إخفاء الرقم السري للبطاقة خلال',
|
|
34
44
|
show: '\u200Eعرض',
|
|
35
45
|
hide: '\u200Eإخفاء'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["english","cardNumber","expiry","CVV","cardHolderName","enterNewCardPin","confirmCardPIN","wrongCardPin","enterCurrentCardPin","enterVerifyCardPin","verifyPinButtonLabel","setPinButtonLabel","changePinButtonLabel","copiedToClipboard","viewPinCountdownLabel","count","show","hide","arabic","localization"],"sourceRoot":"../../../src","sources":["config/localization.ts"],"mappings":"AAAA,MAAMA,OAAO,GAAG;EACdC,UAAU,EAAE,aAAa;EACzBC,MAAM,EAAE,QAAQ;EAChBC,GAAG,EAAE,KAAK;EACVC,cAAc,EAAE,MAAM;EACtBC,eAAe,EAAE,8CAA8C;EAC/DC,cAAc,EAAE,wBAAwB;EACxCC,YAAY,EAAE,mDAAmD;EACjEC,mBAAmB,EAAE,kDAAkD;EACvEC,kBAAkB,EAAE,+CAA+C;EACnEC,oBAAoB,EAAE,YAAY;EAClCC,iBAAiB,EAAE,SAAS;EAC5BC,oBAAoB,EAAE,YAAY;EAClCC,iBAAiB,EAAE,qBAAqB;EACxCC,qBAAqB,EAAGC,KAAa,IACnC,wBAAwB,GAAGA,KAAK,GAAG,UAAU;EAC/CC,IAAI,EAAE,MAAM;EACZC,IAAI,EAAE;AACR,CAAC;AAED,MAAMC,MAAM,GAAG;
|
|
1
|
+
{"version":3,"names":["english","cardNumber","expiry","CVV","cardHolderName","enterNewCardPin","confirmCardPIN","wrongCardPin","enterCurrentCardPin","enterVerifyCardPin","verifyPinButtonLabel","setPinButtonLabel","changePinButtonLabel","copiedToClipboard","successTitle","errorTitle","ok","cardDetailsSuccess","viewPinSuccess","viewPinCountdownLabel","count","show","hide","arabic","localization"],"sourceRoot":"../../../src","sources":["config/localization.ts"],"mappings":"AAAA,MAAMA,OAAO,GAAG;EACdC,UAAU,EAAE,aAAa;EACzBC,MAAM,EAAE,QAAQ;EAChBC,GAAG,EAAE,KAAK;EACVC,cAAc,EAAE,MAAM;EACtBC,eAAe,EAAE,8CAA8C;EAC/DC,cAAc,EAAE,wBAAwB;EACxCC,YAAY,EAAE,mDAAmD;EACjEC,mBAAmB,EAAE,kDAAkD;EACvEC,kBAAkB,EAAE,+CAA+C;EACnEC,oBAAoB,EAAE,YAAY;EAClCC,iBAAiB,EAAE,SAAS;EAC5BC,oBAAoB,EAAE,YAAY;EAClCC,iBAAiB,EAAE,qBAAqB;EACxCC,YAAY,EAAE,SAAS;EACvBC,UAAU,EAAE,OAAO;EACnBC,EAAE,EAAE,IAAI;EACRC,kBAAkB,EAAE,sCAAsC;EAC1DC,cAAc,EAAE,6BAA6B;EAC7CC,qBAAqB,EAAGC,KAAa,IACnC,wBAAwB,GAAGA,KAAK,GAAG,UAAU;EAC/CC,IAAI,EAAE,MAAM;EACZC,IAAI,EAAE;AACR,CAAC;AAED,MAAMC,MAAM,GAAG;EACbtB,UAAU,EAAE,aAAa;EACzBC,MAAM,EAAE,gBAAgB;EACxBC,GAAG,EAAE,mCAAmC;EACxCC,cAAc,EAAE,OAAO;EACvBC,eAAe,EAAE,6CAA6C;EAC9DC,cAAc,EAAE,gDAAgD;EAChEC,YAAY,EACV,sFAAsF;EACxFC,mBAAmB,EAAE,6CAA6C;EAClEC,kBAAkB,EAAE,mDAAmD;EACvEC,oBAAoB,EAAE,6BAA6B;EACnDC,iBAAiB,EAAE,mBAAmB;EACtCC,oBAAoB,EAAE,+BAA+B;EACrDC,iBAAiB,EAAE,sBAAsB;EACzCC,YAAY,EAAE,UAAU;EACxBC,UAAU,EAAE,KAAK;EACjBC,EAAE,EAAE,OAAO;EACXC,kBAAkB,EAAE,kCAAkC;EACtDC,cAAc,EAAE,+BAA+B;EAC/CC,qBAAqB,EAAGC,KAAa,IACnC,oBAAoB,GAAGA,KAAK,GAAG,4CAA4C;EAC7EC,IAAI,EAAE,WAAW;EACjBC,IAAI,EAAE;AACR,CAAC;AAED,OAAO,MAAME,YAAY,GAAG;EAC1BxB,OAAO,EAAEA,OAAO;EAChBuB,MAAM,EAAEA;AACV,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CardDetailsComponent.d.ts","sourceRoot":"","sources":["../../../../src/NICardManagementComponents/CardDetailsComponent.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAGzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAE/D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;
|
|
1
|
+
{"version":3,"file":"CardDetailsComponent.d.ts","sourceRoot":"","sources":["../../../../src/NICardManagementComponents/CardDetailsComponent.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAGzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAE/D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AAKzF,iBAAS,oBAAoB,CAAC,EAC5B,KAAK,EACL,QAAQ,GACT,EAAE,sBAAsB,GAAG,GAAG,CAAC,OAAO,CA6DtC;AAQD,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,KAAK,wBAAwB,GAC9B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewPinComponent.d.ts","sourceRoot":"","sources":["../../../../src/NICardManagementComponents/ViewPinComponent.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"ViewPinComponent.d.ts","sourceRoot":"","sources":["../../../../src/NICardManagementComponents/ViewPinComponent.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAMjD,iBAAS,gBAAgB,CAAC,EACxB,KAAK,EACL,IAAI,EAAE,OAAO,EACb,QAAQ,GACT,EAAE,kBAAkB,GAAG,GAAG,CAAC,OAAO,CAqClC;AAED,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CardHolderNameGroups.d.ts","sourceRoot":"","sources":["../../../../../src/components/CardDetails/CardHolderNameGroups.tsx"],"names":[],"mappings":"AAcA,OAAO,EAAE,KAAK,iCAAiC,EAAE,MAAM,+BAA+B,CAAC;AAMvF,wBAAgB,+BAA+B,CAAC,EAC9C,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,wBAAwB,EACxB,iBAAiB,EACjB,UAAU,GACX,EAAE,iCAAiC,GAAG,GAAG,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"CardHolderNameGroups.d.ts","sourceRoot":"","sources":["../../../../../src/components/CardDetails/CardHolderNameGroups.tsx"],"names":[],"mappings":"AAcA,OAAO,EAAE,KAAK,iCAAiC,EAAE,MAAM,+BAA+B,CAAC;AAMvF,wBAAgB,+BAA+B,CAAC,EAC9C,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,wBAAwB,EACxB,iBAAiB,EACjB,UAAU,GACX,EAAE,iCAAiC,GAAG,GAAG,CAAC,OAAO,CAuEjD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CardNumberGroup.d.ts","sourceRoot":"","sources":["../../../../../src/components/CardDetails/CardNumberGroup.tsx"],"names":[],"mappings":"AAcA,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAMlF,wBAAgB,0BAA0B,CAAC,EACzC,QAAQ,EACR,SAAS,EACT,eAAe,EACf,kBAAkB,EAClB,wBAAwB,EACxB,iBAAiB,EACjB,UAAU,GACX,EAAE,4BAA4B,GAAG,GAAG,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"CardNumberGroup.d.ts","sourceRoot":"","sources":["../../../../../src/components/CardDetails/CardNumberGroup.tsx"],"names":[],"mappings":"AAcA,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAMlF,wBAAgB,0BAA0B,CAAC,EACzC,QAAQ,EACR,SAAS,EACT,eAAe,EACf,kBAAkB,EAClB,wBAAwB,EACxB,iBAAiB,EACjB,UAAU,GACX,EAAE,4BAA4B,GAAG,GAAG,CAAC,OAAO,CAsE5C"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { themeType } from '../../interfaces/NiInputInterfaces';
|
|
2
|
+
import type { NIErrorResponse } from '../../interfaces/NiCardManagementInterfaces';
|
|
3
|
+
interface FeedbackPopupProps {
|
|
4
|
+
error?: NIErrorResponse | null;
|
|
5
|
+
isLoading: boolean;
|
|
6
|
+
isSuccess: boolean;
|
|
7
|
+
successMessage: string;
|
|
8
|
+
theme: themeType;
|
|
9
|
+
language: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function FeedbackPopup({ error, isLoading, isSuccess, successMessage, theme, language, }: FeedbackPopupProps): JSX.Element;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=FeedbackPopup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FeedbackPopup.d.ts","sourceRoot":"","sources":["../../../../../src/components/FeedbackPopup/FeedbackPopup.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAInF,UAAU,kBAAkB;IAC1B,KAAK,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IAC/B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,SAAS,EACT,SAAS,EACT,cAAc,EACd,KAAK,EACL,QAAQ,GACT,EAAE,kBAAkB,GAAG,GAAG,CAAC,OAAO,CA4ClC"}
|
|
@@ -13,6 +13,11 @@ export declare const localization: {
|
|
|
13
13
|
setPinButtonLabel: string;
|
|
14
14
|
changePinButtonLabel: string;
|
|
15
15
|
copiedToClipboard: string;
|
|
16
|
+
successTitle: string;
|
|
17
|
+
errorTitle: string;
|
|
18
|
+
ok: string;
|
|
19
|
+
cardDetailsSuccess: string;
|
|
20
|
+
viewPinSuccess: string;
|
|
16
21
|
viewPinCountdownLabel: (count: number) => string;
|
|
17
22
|
show: string;
|
|
18
23
|
hide: string;
|
|
@@ -31,6 +36,11 @@ export declare const localization: {
|
|
|
31
36
|
setPinButtonLabel: string;
|
|
32
37
|
changePinButtonLabel: string;
|
|
33
38
|
copiedToClipboard: string;
|
|
39
|
+
successTitle: string;
|
|
40
|
+
errorTitle: string;
|
|
41
|
+
ok: string;
|
|
42
|
+
cardDetailsSuccess: string;
|
|
43
|
+
viewPinSuccess: string;
|
|
34
44
|
viewPinCountdownLabel: (count: number) => string;
|
|
35
45
|
show: string;
|
|
36
46
|
hide: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"localization.d.ts","sourceRoot":"","sources":["../../../../src/config/localization.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"localization.d.ts","sourceRoot":"","sources":["../../../../src/config/localization.ts"],"names":[],"mappings":"AAmDA,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;uCAhCQ,MAAM;;;;;;;;;;;;;;;;;;;;;;;uCA0BN,MAAM;;;;CAStC,CAAC"}
|
|
@@ -12,6 +12,11 @@ declare function localLabels(language: string): {
|
|
|
12
12
|
setPinButtonLabel: string;
|
|
13
13
|
changePinButtonLabel: string;
|
|
14
14
|
copiedToClipboard: string;
|
|
15
|
+
successTitle: string;
|
|
16
|
+
errorTitle: string;
|
|
17
|
+
ok: string;
|
|
18
|
+
cardDetailsSuccess: string;
|
|
19
|
+
viewPinSuccess: string;
|
|
15
20
|
viewPinCountdownLabel: (count: number) => string;
|
|
16
21
|
show: string;
|
|
17
22
|
hide: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"localization.d.ts","sourceRoot":"","sources":["../../../../src/utils/localization.ts"],"names":[],"mappings":"AAGA,iBAAS,WAAW,CAAC,QAAQ,EAAE,MAAM
|
|
1
|
+
{"version":3,"file":"localization.d.ts","sourceRoot":"","sources":["../../../../src/utils/localization.ts"],"names":[],"mappings":"AAGA,iBAAS,WAAW,CAAC,QAAQ,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;EAIpC;AAED,eAAe,WAAW,CAAC"}
|
package/package.json
CHANGED
|
@@ -8,6 +8,8 @@ import { useGetCardDetails } from '../hooks/useGetCardDetails';
|
|
|
8
8
|
import { NIThemeEnum } from '../interfaces/NiInputInterfaces';
|
|
9
9
|
import type { NIGetCardSuccessResponse } from '../interfaces/NiCardManagementInterfaces';
|
|
10
10
|
import { themeColors } from '../config/themeColors';
|
|
11
|
+
import { FeedbackPopup } from '../components/FeedbackPopup/FeedbackPopup';
|
|
12
|
+
import localLabels from '../utils/localization';
|
|
11
13
|
|
|
12
14
|
function CardDetailsComponent({
|
|
13
15
|
input,
|
|
@@ -15,6 +17,7 @@ function CardDetailsComponent({
|
|
|
15
17
|
}: NICardDetailsComponent): JSX.Element {
|
|
16
18
|
const { displayAttributes } = input || {};
|
|
17
19
|
const theme = displayAttributes?.theme || NIThemeEnum.light;
|
|
20
|
+
const language = displayAttributes?.language || 'english';
|
|
18
21
|
const cardDetailsStyle: TextStyle = {
|
|
19
22
|
height: '100%',
|
|
20
23
|
width: '100%',
|
|
@@ -62,6 +65,14 @@ function CardDetailsComponent({
|
|
|
62
65
|
isCardDetails={true}
|
|
63
66
|
/>
|
|
64
67
|
</View>
|
|
68
|
+
<FeedbackPopup
|
|
69
|
+
error={getCardDetailsError}
|
|
70
|
+
isLoading={getCardDetailsIsLoading}
|
|
71
|
+
isSuccess={!!getCardDetailsResult}
|
|
72
|
+
language={language}
|
|
73
|
+
successMessage={localLabels(language).cardDetailsSuccess}
|
|
74
|
+
theme={theme}
|
|
75
|
+
/>
|
|
65
76
|
</View>
|
|
66
77
|
);
|
|
67
78
|
}
|
|
@@ -5,6 +5,8 @@ import { type NIViewPinComponent } from '../interfaces/NiInterfaces';
|
|
|
5
5
|
import { useViewPin } from '../hooks/useViewPin';
|
|
6
6
|
import PinState from '../components/PinState/PinState';
|
|
7
7
|
import ViewPin from '../components/ViewPin/ViewPin';
|
|
8
|
+
import { FeedbackPopup } from '../components/FeedbackPopup/FeedbackPopup';
|
|
9
|
+
import localLabels from '../utils/localization';
|
|
8
10
|
|
|
9
11
|
function ViewPinComponent({
|
|
10
12
|
input,
|
|
@@ -12,6 +14,7 @@ function ViewPinComponent({
|
|
|
12
14
|
callback,
|
|
13
15
|
}: NIViewPinComponent): JSX.Element {
|
|
14
16
|
const theme = input?.displayAttributes?.theme || NIThemeEnum.light;
|
|
17
|
+
const language = input?.displayAttributes?.language || 'english';
|
|
15
18
|
const countdownTime = input?.timer;
|
|
16
19
|
|
|
17
20
|
const {
|
|
@@ -21,13 +24,6 @@ function ViewPinComponent({
|
|
|
21
24
|
onViewPin,
|
|
22
25
|
} = useViewPin();
|
|
23
26
|
|
|
24
|
-
(!!viewPinResult || !!viewPinError) &&
|
|
25
|
-
console.log('ViewPinView', {
|
|
26
|
-
viewPinResult,
|
|
27
|
-
viewPinError,
|
|
28
|
-
isViewPinLoading,
|
|
29
|
-
});
|
|
30
|
-
|
|
31
27
|
useEffect(() => {
|
|
32
28
|
if (input) {
|
|
33
29
|
onViewPin(input, callback);
|
|
@@ -43,6 +39,14 @@ function ViewPinComponent({
|
|
|
43
39
|
countdownTime={countdownTime || 0}
|
|
44
40
|
/>
|
|
45
41
|
<PinState isLoading={isViewPinLoading} theme={theme} />
|
|
42
|
+
<FeedbackPopup
|
|
43
|
+
error={viewPinError}
|
|
44
|
+
isLoading={isViewPinLoading}
|
|
45
|
+
isSuccess={!!viewPinResult}
|
|
46
|
+
language={language}
|
|
47
|
+
successMessage={localLabels(language).viewPinSuccess}
|
|
48
|
+
theme={theme}
|
|
49
|
+
/>
|
|
46
50
|
</>
|
|
47
51
|
);
|
|
48
52
|
}
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
TouchableOpacity,
|
|
7
7
|
I18nManager,
|
|
8
8
|
} from 'react-native';
|
|
9
|
-
import
|
|
9
|
+
import Clipboard from '@react-native-clipboard/clipboard';
|
|
10
10
|
|
|
11
11
|
import {
|
|
12
12
|
type NIFontLabelPair,
|
|
@@ -26,8 +26,6 @@ export function CardDetailsCardHolderNameGroups({
|
|
|
26
26
|
displayAttributes,
|
|
27
27
|
setTimeOut,
|
|
28
28
|
}: NICardDetailsCardHolderNameGroups): JSX.Element {
|
|
29
|
-
const [data, setString] = useClipboard();
|
|
30
|
-
|
|
31
29
|
const maskedCardholderName = cardholderName.replace(
|
|
32
30
|
/\b\w*/g,
|
|
33
31
|
function (s: string) {
|
|
@@ -65,12 +63,12 @@ export function CardDetailsCardHolderNameGroups({
|
|
|
65
63
|
fontFamily: textFont.name,
|
|
66
64
|
};
|
|
67
65
|
|
|
68
|
-
|
|
69
|
-
|
|
66
|
+
function handleOnPress(): void {
|
|
67
|
+
// Write directly so iOS does not request permission to read the pasteboard.
|
|
68
|
+
Clipboard.setString(cardholderName);
|
|
70
69
|
setIsVisibleCopiedButton(true);
|
|
71
70
|
setTimeOut();
|
|
72
71
|
}
|
|
73
|
-
!!data && console.log('clipboard', data);
|
|
74
72
|
|
|
75
73
|
return (
|
|
76
74
|
<>
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
Text,
|
|
7
7
|
I18nManager,
|
|
8
8
|
} from 'react-native';
|
|
9
|
-
import
|
|
9
|
+
import Clipboard from '@react-native-clipboard/clipboard';
|
|
10
10
|
|
|
11
11
|
import {
|
|
12
12
|
type NIFontLabelPair,
|
|
@@ -27,8 +27,6 @@ export function CardDetailsCardNumberGroup({
|
|
|
27
27
|
displayAttributes,
|
|
28
28
|
setTimeOut,
|
|
29
29
|
}: NICardDetailsCardNumberGroup): JSX.Element {
|
|
30
|
-
const [data, setString] = useClipboard();
|
|
31
|
-
|
|
32
30
|
const clearPanRendered = clearPan.replace(/.{4}/g, '$& ');
|
|
33
31
|
const maskedPanRendered = maskedPan
|
|
34
32
|
.replace(/[a-zA-Z0-9]+(?=....)/g, function (s: string) {
|
|
@@ -65,12 +63,12 @@ export function CardDetailsCardNumberGroup({
|
|
|
65
63
|
fontFamily: textFont.name,
|
|
66
64
|
};
|
|
67
65
|
|
|
68
|
-
|
|
69
|
-
|
|
66
|
+
function handleOnPress(): void {
|
|
67
|
+
// Write directly so iOS does not request permission to read the pasteboard.
|
|
68
|
+
Clipboard.setString(clearPan);
|
|
70
69
|
setIsVisibleCopiedButton(true);
|
|
71
70
|
setTimeOut();
|
|
72
71
|
}
|
|
73
|
-
!!data && console.log('clipboard', data);
|
|
74
72
|
|
|
75
73
|
return (
|
|
76
74
|
<>
|