@sanctum-key/react-native-sdk 1.0.22 → 1.0.24
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/build/package.json +1 -1
- package/build/src/components/KYCElements/CountrySelectionTemplate.d.ts.map +1 -1
- package/build/src/components/KYCElements/CountrySelectionTemplate.js +131 -26
- package/build/src/components/KYCElements/CountrySelectionTemplate.js.map +1 -1
- package/build/src/components/KYCElements/IDCardCapture.d.ts.map +1 -1
- package/build/src/components/KYCElements/IDCardCapture.js +12 -1
- package/build/src/components/KYCElements/IDCardCapture.js.map +1 -1
- package/build/src/config/region_mapping.js +14 -14
- package/build/src/config/region_mapping.js.map +1 -1
- package/build/src/modules/api/CardAuthentification.d.ts.map +1 -1
- package/build/src/modules/api/CardAuthentification.js +10 -2
- package/build/src/modules/api/CardAuthentification.js.map +1 -1
- package/package.json +1 -1
- package/src/components/KYCElements/CountrySelectionTemplate.tsx +161 -29
- package/src/components/KYCElements/IDCardCapture.tsx +13 -1
- package/src/config/region_mapping.ts +14 -14
- package/src/modules/api/CardAuthentification.ts +16 -5
package/build/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CountrySelectionTemplate.d.ts","sourceRoot":"","sources":["../../../../src/components/KYCElements/CountrySelectionTemplate.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAE5D,OAAO,EAAE,iBAAiB,EAAyC,OAAO,EAAgB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"CountrySelectionTemplate.d.ts","sourceRoot":"","sources":["../../../../src/components/KYCElements/CountrySelectionTemplate.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAE5D,OAAO,EAAE,iBAAiB,EAAyC,OAAO,EAAgB,MAAM,uBAAuB,CAAC;AAOxH,UAAU,6BAA6B;IACrC,SAAS,EAAE,iBAAiB,CAAC;IAC7B,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,GAAG;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACrF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAuCD,eAAO,MAAM,wBAAwB,EAAE,KAAK,CAAC,EAAE,CAAC,6BAA6B,CAkf5E,CAAC"}
|
|
@@ -1,11 +1,35 @@
|
|
|
1
1
|
import React, { useState, useMemo, useEffect } from 'react';
|
|
2
|
-
import { View, Text, TouchableOpacity, StyleSheet, ScrollView } from 'react-native';
|
|
2
|
+
import { View, Text, TouchableOpacity, StyleSheet, ScrollView, TextInput } from 'react-native';
|
|
3
3
|
import { countryMapping } from '../../config/region_mapping';
|
|
4
4
|
import { useTemplateKYCFlowContext } from '../../hooks/useTemplateKYCFlow';
|
|
5
5
|
import { Button } from '../ui/Button';
|
|
6
6
|
import { countryData } from '../../config/countriesData';
|
|
7
|
-
|
|
8
|
-
const
|
|
7
|
+
import REGION_MAPPING from '../../config/region_mapping.json';
|
|
8
|
+
const ISO_TO_COUNTRY_NAME = { 'KE': 'Kenya', 'CM': 'Cameroon', 'NG': 'Nigeria', 'CA': 'Canada', 'FR': 'France', 'GH': 'Ghana', 'ZA': 'South Africa', 'GB': 'Britain', 'CI': 'Ivory Coast', 'SN': 'Senegal', 'TG': 'Togo', 'ML': 'Mali' };
|
|
9
|
+
const jsonDocMap = {
|
|
10
|
+
'nationalId': 'identity_card',
|
|
11
|
+
'national_id': 'identity_card',
|
|
12
|
+
'passport': 'passport',
|
|
13
|
+
'driversLicense': 'drivers_licence',
|
|
14
|
+
'drivers_licence': 'drivers_licence',
|
|
15
|
+
'residencePermit': 'permanent_residence',
|
|
16
|
+
'healthInsuranceCard': 'health_insurance_card'
|
|
17
|
+
};
|
|
18
|
+
const SUB_REGION_CODES = {
|
|
19
|
+
"Alberta": "AB",
|
|
20
|
+
"British Columbia": "BC",
|
|
21
|
+
"Manitoba": "MB",
|
|
22
|
+
"New Brunswick": "NB",
|
|
23
|
+
"Newfoundland and Labrador": "NL",
|
|
24
|
+
"Northwest Territories": "NT",
|
|
25
|
+
"Nova Scotia": "NS",
|
|
26
|
+
"Nunavut": "NU",
|
|
27
|
+
"Ontario": "ON",
|
|
28
|
+
"Prince Edward Island": "PE",
|
|
29
|
+
"Quebec": "QC",
|
|
30
|
+
"Saskatchewan": "SK",
|
|
31
|
+
"Yukon": "YT"
|
|
32
|
+
};
|
|
9
33
|
export const CountrySelectionTemplate = ({ component, value, onValueChange, error, language = 'en', }) => {
|
|
10
34
|
const config = component.config;
|
|
11
35
|
const { actions, state } = useTemplateKYCFlowContext();
|
|
@@ -26,6 +50,8 @@ export const CountrySelectionTemplate = ({ component, value, onValueChange, erro
|
|
|
26
50
|
const [selectedCountryCode, setSelectedCountryCode] = useState(value?.code || null);
|
|
27
51
|
const [selectedDocumentType, setSelectedDocumentType] = useState(value?.documentType || null);
|
|
28
52
|
const [selectedRegion, setSelectedRegion] = useState(value?.region || null);
|
|
53
|
+
// 🚨 Search state property
|
|
54
|
+
const [searchQuery, setSearchQuery] = useState('');
|
|
29
55
|
useEffect(() => {
|
|
30
56
|
if (value?.code && value?.documentType) {
|
|
31
57
|
setSelectedCountryCode(value.code);
|
|
@@ -35,10 +61,20 @@ export const CountrySelectionTemplate = ({ component, value, onValueChange, erro
|
|
|
35
61
|
setCurrentStep('region');
|
|
36
62
|
}
|
|
37
63
|
else {
|
|
38
|
-
// Check config regions OR enforce Canadian provinces for non-passports
|
|
39
64
|
let regionsCheck = idCardConfig?.regionsByCountry?.[value.code]?.[value.documentType] || [];
|
|
40
|
-
if (regionsCheck.length === 0
|
|
41
|
-
|
|
65
|
+
if (regionsCheck.length === 0) {
|
|
66
|
+
const rawCountryName = ISO_TO_COUNTRY_NAME[value.code] || value.code;
|
|
67
|
+
const searchDocType = jsonDocMap[value.documentType] || value.documentType;
|
|
68
|
+
const baseMapping = REGION_MAPPING.regionMapping || REGION_MAPPING;
|
|
69
|
+
let countryMapping = baseMapping[rawCountryName];
|
|
70
|
+
if (!countryMapping) {
|
|
71
|
+
const foundKey = Object.keys(baseMapping).find(k => k.toLowerCase() === rawCountryName.toLowerCase());
|
|
72
|
+
if (foundKey)
|
|
73
|
+
countryMapping = baseMapping[foundKey];
|
|
74
|
+
}
|
|
75
|
+
if (countryMapping && countryMapping[searchDocType]) {
|
|
76
|
+
regionsCheck = Object.keys(countryMapping[searchDocType]).filter(k => k !== 'root');
|
|
77
|
+
}
|
|
42
78
|
}
|
|
43
79
|
if (Array.isArray(regionsCheck) && regionsCheck.length > 0) {
|
|
44
80
|
setCurrentStep('region');
|
|
@@ -60,29 +96,88 @@ export const CountrySelectionTemplate = ({ component, value, onValueChange, erro
|
|
|
60
96
|
actions.updateComponentData(component.id, value);
|
|
61
97
|
}
|
|
62
98
|
}, []);
|
|
99
|
+
// 🚨 THE FIX: Pull ALL countries from configuration + cross-reference any extra ones found in region_mapping.json
|
|
63
100
|
const availableCountries = useMemo(() => {
|
|
64
|
-
const
|
|
65
|
-
|
|
101
|
+
const baseMapping = REGION_MAPPING.regionMapping || REGION_MAPPING;
|
|
102
|
+
const jsonCountries = Object.keys(baseMapping);
|
|
103
|
+
const explicitlyAllowed = idCardConfig?.selectedCountries || config.allowed_countries || [];
|
|
104
|
+
// Combine explicit configs with the entire country dictionary database
|
|
105
|
+
const combinedCodes = new Set([
|
|
106
|
+
...explicitlyAllowed,
|
|
107
|
+
...Object.keys(countryData).filter(code => {
|
|
108
|
+
const fullCountryName = ISO_TO_COUNTRY_NAME[code];
|
|
109
|
+
return jsonCountries.some(jc => jc.toLowerCase() === code.toLowerCase() || (fullCountryName && jc.toLowerCase() === fullCountryName.toLowerCase()));
|
|
110
|
+
})
|
|
111
|
+
]);
|
|
112
|
+
return Array.from(combinedCodes)
|
|
66
113
|
.filter((code) => countryData[code])
|
|
67
114
|
.map((code) => ({ code, ...countryData[code] }))
|
|
68
115
|
.sort((a, b) => a.name.localeCompare(b.name));
|
|
69
116
|
}, [idCardConfig?.selectedCountries, config.allowed_countries]);
|
|
117
|
+
// 🚨 Filter countries list in real-time based on the search query input
|
|
118
|
+
const filteredCountries = useMemo(() => {
|
|
119
|
+
if (!searchQuery.trim())
|
|
120
|
+
return availableCountries;
|
|
121
|
+
const cleanQuery = searchQuery.toLowerCase().trim();
|
|
122
|
+
return availableCountries.filter(country => country.name.toLowerCase().includes(cleanQuery) ||
|
|
123
|
+
country.name_en.toLowerCase().includes(cleanQuery) ||
|
|
124
|
+
country.code.toLowerCase().includes(cleanQuery));
|
|
125
|
+
}, [searchQuery, availableCountries]);
|
|
70
126
|
const availableDocumentTypes = useMemo(() => {
|
|
71
|
-
if (!selectedCountryCode
|
|
127
|
+
if (!selectedCountryCode)
|
|
72
128
|
return [];
|
|
73
|
-
|
|
129
|
+
// Check if custom layout configuration explicitly defined items for it
|
|
130
|
+
if (idCardConfig?.documentTypesByCountry?.[selectedCountryCode]) {
|
|
131
|
+
return idCardConfig.documentTypesByCountry[selectedCountryCode];
|
|
132
|
+
}
|
|
133
|
+
// Default Fallback: Query mapping matrix dynamically
|
|
134
|
+
const rawCountryName = ISO_TO_COUNTRY_NAME[selectedCountryCode] || selectedCountryCode;
|
|
135
|
+
const baseMapping = REGION_MAPPING.regionMapping || REGION_MAPPING;
|
|
136
|
+
let countryMapping = baseMapping[rawCountryName];
|
|
137
|
+
if (!countryMapping) {
|
|
138
|
+
const foundKey = Object.keys(baseMapping).find(k => k.toLowerCase() === rawCountryName.toLowerCase());
|
|
139
|
+
if (foundKey)
|
|
140
|
+
countryMapping = baseMapping[foundKey];
|
|
141
|
+
}
|
|
142
|
+
if (countryMapping) {
|
|
143
|
+
const inverseDocMap = {
|
|
144
|
+
'identity_card': 'nationalId',
|
|
145
|
+
'passport': 'passport',
|
|
146
|
+
'drivers_licence': 'driversLicense',
|
|
147
|
+
'permanent_residence': 'residencePermit',
|
|
148
|
+
'health_insurance_card': 'healthInsuranceCard'
|
|
149
|
+
};
|
|
150
|
+
return Object.keys(countryMapping).map(key => inverseDocMap[key] || key);
|
|
151
|
+
}
|
|
152
|
+
return ['nationalId', 'passport', 'driversLicense'];
|
|
74
153
|
}, [selectedCountryCode, idCardConfig?.documentTypesByCountry]);
|
|
75
154
|
const availableRegions = useMemo(() => {
|
|
76
155
|
if (!selectedCountryCode || !selectedDocumentType)
|
|
77
156
|
return [];
|
|
78
|
-
let
|
|
157
|
+
let rawRegions = [];
|
|
79
158
|
if (idCardConfig?.regionsByCountry?.[selectedCountryCode]?.[selectedDocumentType]) {
|
|
80
|
-
|
|
159
|
+
rawRegions = idCardConfig.regionsByCountry[selectedCountryCode][selectedDocumentType];
|
|
81
160
|
}
|
|
82
|
-
if (
|
|
83
|
-
|
|
161
|
+
if (rawRegions.length === 0) {
|
|
162
|
+
const rawCountryName = ISO_TO_COUNTRY_NAME[selectedCountryCode] || selectedCountryCode;
|
|
163
|
+
const searchDocType = jsonDocMap[selectedDocumentType] || selectedDocumentType;
|
|
164
|
+
const baseMapping = REGION_MAPPING.regionMapping || REGION_MAPPING;
|
|
165
|
+
let countryMapping = baseMapping[rawCountryName];
|
|
166
|
+
if (!countryMapping) {
|
|
167
|
+
const foundKey = Object.keys(baseMapping).find(k => k.toLowerCase() === rawCountryName.toLowerCase());
|
|
168
|
+
if (foundKey)
|
|
169
|
+
countryMapping = baseMapping[foundKey];
|
|
170
|
+
}
|
|
171
|
+
if (countryMapping && countryMapping[searchDocType]) {
|
|
172
|
+
rawRegions = Object.keys(countryMapping[searchDocType]).filter(k => k !== 'root');
|
|
173
|
+
}
|
|
84
174
|
}
|
|
85
|
-
|
|
175
|
+
if (!Array.isArray(rawRegions))
|
|
176
|
+
return [];
|
|
177
|
+
return rawRegions.sort((a, b) => a.localeCompare(b)).map(region => ({
|
|
178
|
+
label: region,
|
|
179
|
+
value: SUB_REGION_CODES[region] || region
|
|
180
|
+
}));
|
|
86
181
|
}, [selectedCountryCode, selectedDocumentType, idCardConfig?.regionsByCountry]);
|
|
87
182
|
const needsRegion = useMemo(() => {
|
|
88
183
|
return availableRegions.length > 0;
|
|
@@ -99,8 +194,8 @@ export const CountrySelectionTemplate = ({ component, value, onValueChange, erro
|
|
|
99
194
|
setSelectedDocumentType(docType);
|
|
100
195
|
setSelectedRegion(null);
|
|
101
196
|
};
|
|
102
|
-
const handleRegionSelect = (
|
|
103
|
-
setSelectedRegion(
|
|
197
|
+
const handleRegionSelect = (regionValue) => {
|
|
198
|
+
setSelectedRegion(regionValue);
|
|
104
199
|
};
|
|
105
200
|
const finalizeSelection = (countryCode, docType, region) => {
|
|
106
201
|
const country = countryData[countryCode];
|
|
@@ -128,6 +223,7 @@ export const CountrySelectionTemplate = ({ component, value, onValueChange, erro
|
|
|
128
223
|
setCurrentStep('country');
|
|
129
224
|
setSelectedDocumentType(null);
|
|
130
225
|
setSelectedRegion(null);
|
|
226
|
+
setSearchQuery(''); // Reset search when backing up
|
|
131
227
|
}
|
|
132
228
|
else if (currentStep === 'country') {
|
|
133
229
|
actions.previousComponent();
|
|
@@ -155,8 +251,11 @@ export const CountrySelectionTemplate = ({ component, value, onValueChange, erro
|
|
|
155
251
|
};
|
|
156
252
|
const renderCountrySelection = () => {
|
|
157
253
|
return (<>
|
|
254
|
+
{/* 🔍 Dynamic Search Bar Component */}
|
|
255
|
+
<TextInput style={styles.searchBar} placeholder={state.currentLanguage === "en" ? "🔍 Search country..." : "🔍 Rechercher un pays..."} placeholderTextColor="#94A3B8" value={searchQuery} onChangeText={setSearchQuery} autoCorrect={false}/>
|
|
256
|
+
|
|
158
257
|
<ScrollView style={styles.listContainer} showsVerticalScrollIndicator={false}>
|
|
159
|
-
{
|
|
258
|
+
{filteredCountries.map((country) => (<TouchableOpacity key={country.code} style={[
|
|
160
259
|
styles.option,
|
|
161
260
|
selectedCountryCode === country.code && styles.selectedOption
|
|
162
261
|
]} onPress={() => handleCountrySelect(country.code)}>
|
|
@@ -177,6 +276,10 @@ export const CountrySelectionTemplate = ({ component, value, onValueChange, erro
|
|
|
177
276
|
<Text style={styles.checkmarkText}>✓</Text>
|
|
178
277
|
</View>)}
|
|
179
278
|
</TouchableOpacity>))}
|
|
279
|
+
|
|
280
|
+
{filteredCountries.length === 0 && (<Text style={styles.emptyText}>
|
|
281
|
+
{state.currentLanguage === "en" ? "No matching countries found." : "Aucun pays trouvé."}
|
|
282
|
+
</Text>)}
|
|
180
283
|
</ScrollView>
|
|
181
284
|
</>);
|
|
182
285
|
};
|
|
@@ -227,21 +330,21 @@ export const CountrySelectionTemplate = ({ component, value, onValueChange, erro
|
|
|
227
330
|
const renderRegionSelection = () => {
|
|
228
331
|
return (<>
|
|
229
332
|
<ScrollView style={styles.listContainer} showsVerticalScrollIndicator={false}>
|
|
230
|
-
{availableRegions.map((
|
|
231
|
-
const regionLabel = typeof region === 'string' ? region : String(region);
|
|
333
|
+
{availableRegions.map((regionObj, index) => {
|
|
232
334
|
return (<TouchableOpacity key={index} style={[
|
|
233
335
|
styles.option,
|
|
234
|
-
selectedRegion ===
|
|
235
|
-
]} onPress={() => handleRegionSelect(
|
|
336
|
+
selectedRegion === regionObj.value && styles.selectedOption
|
|
337
|
+
]} onPress={() => handleRegionSelect(regionObj.value)}>
|
|
236
338
|
<View style={styles.optionContent}>
|
|
237
339
|
<Text style={[
|
|
238
340
|
styles.optionName,
|
|
239
|
-
selectedRegion ===
|
|
341
|
+
selectedRegion === regionObj.value && styles.selectedOptionName
|
|
240
342
|
]}>
|
|
241
|
-
{
|
|
343
|
+
{regionObj.label}
|
|
242
344
|
</Text>
|
|
345
|
+
{regionObj.value !== regionObj.label && (<Text style={styles.optionCode}>{regionObj.value}</Text>)}
|
|
243
346
|
</View>
|
|
244
|
-
{selectedRegion ===
|
|
347
|
+
{selectedRegion === regionObj.value && (<View style={[
|
|
245
348
|
styles.checkmark,
|
|
246
349
|
{ backgroundColor: component.ui.themeColor || '#2DBD60' }
|
|
247
350
|
]}>
|
|
@@ -332,7 +435,8 @@ const styles = StyleSheet.create({
|
|
|
332
435
|
progressText: { fontSize: 14, color: '#666', fontWeight: '500' },
|
|
333
436
|
title: { fontSize: 24, fontWeight: 'bold', color: '#333', marginBottom: 8, textAlign: 'center' },
|
|
334
437
|
description: { fontSize: 16, color: '#666', textAlign: 'center', marginBottom: 24, lineHeight: 22 },
|
|
335
|
-
|
|
438
|
+
searchBar: { height: 52, backgroundColor: '#F1F5F9', borderRadius: 12, paddingHorizontal: 16, fontSize: 16, color: '#1E293B', marginBottom: 16, borderWidth: 1, borderColor: '#CBD5E1', fontWeight: '500' },
|
|
439
|
+
listContainer: { maxHeight: 360, marginBottom: 24 },
|
|
336
440
|
option: { flexDirection: 'row', alignItems: 'center', padding: 16, backgroundColor: '#F8F9FA', borderRadius: 12, marginBottom: 12, borderWidth: 2, borderColor: '#E9ECEF', minHeight: 64 },
|
|
337
441
|
selectedOption: { borderColor: '#2DBD60', backgroundColor: '#F0F9F0' },
|
|
338
442
|
flag: { fontSize: 32, marginRight: 16 },
|
|
@@ -346,5 +450,6 @@ const styles = StyleSheet.create({
|
|
|
346
450
|
infoText: { fontSize: 14, color: '#666', lineHeight: 20 },
|
|
347
451
|
buttonContainer: { flexDirection: 'row', marginTop: 24, gap: 12 },
|
|
348
452
|
errorText: { color: '#dc2626', fontSize: 14, marginTop: 8, textAlign: 'center' },
|
|
453
|
+
emptyText: { textAlign: 'center', color: '#64748B', fontSize: 16, marginTop: 24, fontWeight: '500' }
|
|
349
454
|
});
|
|
350
455
|
//# sourceMappingURL=CountrySelectionTemplate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CountrySelectionTemplate.js","sourceRoot":"","sources":["../../../../src/components/KYCElements/CountrySelectionTemplate.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useState, useMemo, useEffect } from 'react';\nimport { View, Text, TouchableOpacity, StyleSheet, ScrollView } from 'react-native';\nimport { TemplateComponent, CountrySelectionConfig, LocalizedText, Country, IDCardConfig } from '../../types/KYC.types';\nimport { countryMapping } from '../../config/region_mapping';\nimport { useTemplateKYCFlowContext } from '../../hooks/useTemplateKYCFlow';\nimport { Button } from '../ui/Button';\nimport { countryData } from '../../config/countriesData';\n\ninterface CountrySelectionTemplateProps {\n component: TemplateComponent;\n value?: any;\n onValueChange: (value: Country & { documentType?: string; region?: string }) => void;\n error?: string;\n language?: string;\n}\n\ntype SelectionStep = 'country' | 'documentType' | 'region';\n\ntype ExtendedIDCardConfig = IDCardConfig & {\n selectedCountries?: string[];\n documentTypesByCountry?: Record<string, string[]>;\n regionsByCountry?: Record<string, Record<string, string[]>>;\n instructionsByDocumentType?: Record<string, LocalizedText>;\n};\n\n// Standard ISO 3166-2:CA codes for Canadian provinces and territories\nconst CANADIAN_PROVINCES = ['AB', 'BC', 'MB', 'NB', 'NL', 'NT', 'NS', 'NU', 'ON', 'PE', 'QC', 'SK', 'YT'];\n\nexport const CountrySelectionTemplate: React.FC<CountrySelectionTemplateProps> = ({\n component,\n value,\n onValueChange,\n error,\n language = 'en',\n}) => {\n const config = component.config as CountrySelectionConfig;\n const { actions, state } = useTemplateKYCFlowContext();\n\n const idCardComponent = useMemo(() => {\n return state.template.components.find(c => c.type === 'id_card');\n }, [state.template.components]);\n\n const idCardConfig = useMemo(() => {\n return idCardComponent?.config as ExtendedIDCardConfig | undefined;\n }, [idCardComponent]);\n\n const [currentStep, setCurrentStep] = useState<SelectionStep>(() => {\n if (value?.code && value?.documentType) {\n if (value.region) return 'region';\n return 'documentType';\n }\n return 'country';\n });\n\n const [selectedCountryCode, setSelectedCountryCode] = useState<string | null>(value?.code || null);\n const [selectedDocumentType, setSelectedDocumentType] = useState<string | null>(value?.documentType || null);\n const [selectedRegion, setSelectedRegion] = useState<string | null>(value?.region || null);\n\n useEffect(() => {\n if (value?.code && value?.documentType) {\n setSelectedCountryCode(value.code);\n setSelectedDocumentType(value.documentType);\n setSelectedRegion(value.region || null);\n \n if (value.region) {\n setCurrentStep('region');\n } else {\n // Check config regions OR enforce Canadian provinces for non-passports\n let regionsCheck = idCardConfig?.regionsByCountry?.[value.code]?.[value.documentType] || [];\n if (regionsCheck.length === 0 && value.code === 'CA' && value.documentType !== 'passport') {\n regionsCheck = CANADIAN_PROVINCES;\n }\n\n if (Array.isArray(regionsCheck) && regionsCheck.length > 0) {\n setCurrentStep('region');\n } else {\n setCurrentStep('documentType');\n }\n }\n } else {\n setSelectedCountryCode(null);\n setSelectedDocumentType(null);\n setSelectedRegion(null);\n setCurrentStep('country');\n }\n }, [value?.code, value?.documentType, value?.region, idCardConfig]);\n\n useEffect(() => {\n if (error) {\n actions.updateComponentData(component.id, value);\n }\n }, []);\n\n const availableCountries = useMemo(() => {\n const countries = idCardConfig?.selectedCountries || config.allowed_countries || Object.keys(countryData);\n return countries\n .filter((code: string) => countryData[code])\n .map((code: string) => ({ code, ...countryData[code] }))\n .sort((a: Country & { code?: string }, b: Country & { code?: string }) => a.name.localeCompare(b.name));\n }, [idCardConfig?.selectedCountries, config.allowed_countries]);\n\n const availableDocumentTypes = useMemo(() => {\n if (!selectedCountryCode || !idCardConfig?.documentTypesByCountry) return [];\n return idCardConfig.documentTypesByCountry[selectedCountryCode] || [];\n }, [selectedCountryCode, idCardConfig?.documentTypesByCountry]);\n\n const availableRegions = useMemo(() => {\n if (!selectedCountryCode || !selectedDocumentType) return [];\n \n let regions: string[] = [];\n if (idCardConfig?.regionsByCountry?.[selectedCountryCode]?.[selectedDocumentType]) {\n regions = idCardConfig.regionsByCountry[selectedCountryCode][selectedDocumentType];\n }\n\n \n if (regions.length === 0 && selectedCountryCode === 'CA' && selectedDocumentType !== 'passport') {\n regions = CANADIAN_PROVINCES;\n }\n\n return Array.isArray(regions) ? regions : [];\n }, [selectedCountryCode, selectedDocumentType, idCardConfig?.regionsByCountry]);\n\n const needsRegion = useMemo(() => {\n return availableRegions.length > 0;\n }, [availableRegions]);\n\n const getLocalizedText = (text: LocalizedText): string => {\n return text[state.currentLanguage] || text.en || '';\n };\n\n const handleCountrySelect = (countryCode: string) => {\n setSelectedCountryCode(countryCode);\n setSelectedDocumentType(null);\n setSelectedRegion(null);\n };\n\n const handleDocumentTypeSelect = (docType: string) => {\n setSelectedDocumentType(docType);\n setSelectedRegion(null);\n };\n\n const handleRegionSelect = (region: string) => {\n setSelectedRegion(region);\n };\n\n const finalizeSelection = (countryCode: string, docType: string, region: string | null) => {\n const country = countryData[countryCode];\n if (!country) return;\n\n const mapping = countryMapping[countryCode as keyof typeof countryMapping];\n const countryObj: Country & { documentType?: string; region?: string } = {\n code: countryCode,\n ...country,\n regionMapping: mapping,\n documentType: docType,\n region: region || undefined,\n };\n\n onValueChange(countryObj);\n\n setTimeout(() => {\n actions.nextComponent(countryObj);\n }, 100);\n };\n\n const handleBack = () => {\n if (currentStep === 'region') {\n setCurrentStep('documentType');\n setSelectedRegion(null);\n } else if (currentStep === 'documentType') {\n setCurrentStep('country');\n setSelectedDocumentType(null);\n setSelectedRegion(null);\n } else if (currentStep === 'country') {\n actions.previousComponent();\n }\n };\n\n const handleNext = () => {\n if (currentStep === 'country' && selectedCountryCode) {\n setCurrentStep('documentType');\n } else if (currentStep === 'documentType' && selectedDocumentType) {\n if (needsRegion) {\n setCurrentStep('region');\n } else {\n if (selectedCountryCode) {\n finalizeSelection(selectedCountryCode, selectedDocumentType, null);\n }\n }\n } else if (currentStep === 'region' && selectedRegion) {\n if (selectedCountryCode && selectedDocumentType) {\n finalizeSelection(selectedCountryCode, selectedDocumentType, selectedRegion);\n }\n }\n };\n\n const renderCountrySelection = () => {\n return (\n <>\n <ScrollView style={styles.listContainer} showsVerticalScrollIndicator={false}>\n {availableCountries.map((country: Country & { code?: string }) => (\n <TouchableOpacity\n key={country.code}\n style={[\n styles.option,\n selectedCountryCode === country.code && styles.selectedOption\n ]}\n onPress={() => handleCountrySelect(country.code!)}\n >\n <Text style={styles.flag}>{country.flag}</Text>\n <View style={styles.optionContent}>\n <Text style={[\n styles.optionName,\n selectedCountryCode === country.code && styles.selectedOptionName\n ]}>\n {state.currentLanguage === \"en\" ? country.name_en : country.name}\n </Text>\n <Text style={styles.optionCode}>{country.code}</Text>\n </View>\n {selectedCountryCode === country.code && (\n <View style={[\n styles.checkmark,\n { backgroundColor: component.ui.themeColor as string || '#2DBD60' }\n ]}>\n <Text style={styles.checkmarkText}>✓</Text>\n </View>\n )}\n </TouchableOpacity>\n ))}\n </ScrollView>\n </>\n );\n };\n\n const renderDocumentTypeSelection = () => {\n const instructions = selectedDocumentType && idCardConfig?.instructionsByDocumentType?.[selectedDocumentType]\n ? getLocalizedText(idCardConfig.instructionsByDocumentType[selectedDocumentType])\n : null;\n\n const documentTypeLabels: Record<string, { en: string; fr: string; icon?: string }> = {\n 'nationalId': { en: 'National ID', fr: 'Carte nationale d\\'identité', icon: '🏛️' },\n 'passport': { en: 'Passport', fr: 'Passeport', icon: '📘' },\n 'driversLicense': { en: 'Driver\\'s License', fr: 'Permis de conduire', icon: '🚗' },\n 'residencePermit': { en: 'Residence Permit', fr: 'Permis de séjour', icon: '🏠' },\n 'healthInsuranceCard': { en: 'Health Insurance Card', fr: 'Carte d\\'assurance maladie', icon: '🗳️' },\n };\n\n return (\n <>\n {instructions && (\n <View style={styles.infoBox}>\n <Text style={styles.infoText}>{instructions}</Text>\n </View>\n )}\n <ScrollView style={styles.listContainer} showsVerticalScrollIndicator={false}>\n {availableDocumentTypes.map((docType: string) => {\n const label = documentTypeLabels[docType];\n const displayName = label ? (state.currentLanguage === \"en\" ? label.en : label.fr) : docType;\n const icon = label?.icon || '📄';\n\n return (\n <TouchableOpacity\n key={docType}\n style={[\n styles.option,\n selectedDocumentType === docType && styles.selectedOption\n ]}\n onPress={() => handleDocumentTypeSelect(docType)}\n >\n <Text style={styles.flag}>{icon}</Text>\n <View style={styles.optionContent}>\n <Text style={[\n styles.optionName,\n selectedDocumentType === docType && styles.selectedOptionName\n ]}>\n {displayName}\n </Text>\n </View>\n {selectedDocumentType === docType && (\n <View style={[\n styles.checkmark,\n { backgroundColor: component.ui.themeColor as string || '#2DBD60' }\n ]}>\n <Text style={styles.checkmarkText}>✓</Text>\n </View>\n )}\n </TouchableOpacity>\n );\n })}\n </ScrollView>\n </>\n );\n };\n\n const renderRegionSelection = () => {\n return (\n <>\n <ScrollView style={styles.listContainer} showsVerticalScrollIndicator={false}>\n {availableRegions.map((region: string, index: number) => {\n const regionLabel = typeof region === 'string' ? region : String(region);\n return (\n <TouchableOpacity\n key={index}\n style={[\n styles.option,\n selectedRegion === regionLabel && styles.selectedOption\n ]}\n onPress={() => handleRegionSelect(regionLabel)}\n >\n <View style={styles.optionContent}>\n <Text style={[\n styles.optionName,\n selectedRegion === regionLabel && styles.selectedOptionName\n ]}>\n {regionLabel}\n </Text>\n </View>\n {selectedRegion === regionLabel && (\n <View style={[\n styles.checkmark,\n { backgroundColor: component.ui.themeColor as string || '#2DBD60' }\n ]}>\n <Text style={styles.checkmarkText}>✓</Text>\n </View>\n )}\n </TouchableOpacity>\n );\n })}\n </ScrollView>\n </>\n );\n };\n\n const getStepTitle = (): string => {\n switch (currentStep) {\n case 'country':\n return getLocalizedText(component.labels as LocalizedText);\n case 'documentType':\n return state.currentLanguage === \"en\" ? \"Select Document Type\" : \"Sélectionnez le type de document\";\n case 'region':\n return state.currentLanguage === \"en\" ? \"Select Province/State\" : \"Sélectionnez la province/l'état\";\n default:\n return '';\n }\n };\n\n const getStepDescription = (): string => {\n switch (currentStep) {\n case 'country':\n return getLocalizedText(component.instructions as LocalizedText);\n case 'documentType':\n return state.currentLanguage === \"en\"\n ? \"Choose the type of document you want to use\"\n : \"Choisissez le type de document que vous souhaitez utiliser\";\n case 'region':\n return state.currentLanguage === \"en\"\n ? \"Select the issuing province or territory\"\n : \"Sélectionnez la province ou le territoire de délivrance\";\n default:\n return '';\n }\n };\n\n const getProgressStep = (): number => {\n if (currentStep === 'country') return 1;\n if (currentStep === 'documentType') return 2;\n return 3;\n };\n\n const getTotalSteps = (): number => {\n return needsRegion ? 3 : 2;\n };\n\n const canGoNext = (): boolean => {\n if (currentStep === 'country') return selectedCountryCode !== null;\n if (currentStep === 'documentType') return selectedDocumentType !== null;\n if (currentStep === 'region') return selectedRegion !== null;\n return false;\n };\n\n return (\n <View style={styles.root}>\n <View style={styles.container}>\n <View style={styles.progressContainer}>\n <Text style={styles.progressText}>\n {state.currentLanguage === \"en\"\n ? `Step ${getProgressStep()} of ${getTotalSteps()}`\n : `Étape ${getProgressStep()} sur ${getTotalSteps()}`}\n </Text>\n </View>\n\n <Text style={styles.title}>{getStepTitle()}</Text>\n <Text style={styles.description}>{getStepDescription()}</Text>\n\n {currentStep === 'country' && renderCountrySelection()}\n {currentStep === 'documentType' && renderDocumentTypeSelection()}\n {currentStep === 'region' && renderRegionSelection()}\n\n <View style={styles.buttonContainer}>\n <Button\n title={state.currentLanguage === \"en\" ? \"Back\" : \"Retour\"}\n onPress={handleBack}\n variant={currentStep === 'country' ? \"secondary\" : \"outline\"}\n size=\"large\"\n style={{ flex: 1, marginRight: 8 }}\n />\n <Button\n title={state.currentLanguage === \"en\" ? \"Next\" : \"Suivant\"}\n onPress={handleNext}\n variant=\"primary\"\n size=\"large\"\n style={{ flex: 1 }}\n disabled={!canGoNext()}\n />\n </View>\n\n {error && (\n <Text style={styles.errorText}>{error}</Text>\n )}\n </View>\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n root: { flex: 1, maxWidth: 760, width: '100%' },\n container: { backgroundColor: 'white', margin: 10, borderRadius: 10, paddingVertical: 16, paddingHorizontal: 16, shadowColor: '#000', shadowOffset: { width: 0, height: 2 }, shadowOpacity: 0.35, shadowRadius: 4.84, elevation: 10 },\n progressContainer: { marginBottom: 16, alignItems: 'center' },\n progressText: { fontSize: 14, color: '#666', fontWeight: '500' },\n title: { fontSize: 24, fontWeight: 'bold', color: '#333', marginBottom: 8, textAlign: 'center' },\n description: { fontSize: 16, color: '#666', textAlign: 'center', marginBottom: 24, lineHeight: 22 },\n listContainer: { maxHeight: 400, marginBottom: 24 },\n option: { flexDirection: 'row', alignItems: 'center', padding: 16, backgroundColor: '#F8F9FA', borderRadius: 12, marginBottom: 12, borderWidth: 2, borderColor: '#E9ECEF', minHeight: 64 },\n selectedOption: { borderColor: '#2DBD60', backgroundColor: '#F0F9F0' },\n flag: { fontSize: 32, marginRight: 16 },\n optionContent: { flex: 1 },\n optionName: { fontSize: 18, fontWeight: '600', color: '#333' },\n selectedOptionName: { color: '#2DBD60' },\n optionCode: { fontSize: 14, color: '#666', marginTop: 4, fontWeight: '500' },\n checkmark: { width: 24, height: 24, borderRadius: 12, justifyContent: 'center', alignItems: 'center' },\n checkmarkText: { color: 'white', fontSize: 16, fontWeight: 'bold' },\n infoBox: { backgroundColor: '#F9FAFB', padding: 12, borderRadius: 12, marginBottom: 16 },\n infoText: { fontSize: 14, color: '#666', lineHeight: 20 },\n buttonContainer: { flexDirection: 'row', marginTop: 24, gap: 12 },\n errorText: { color: '#dc2626', fontSize: 14, marginTop: 8, textAlign: 'center' },\n});"]}
|
|
1
|
+
{"version":3,"file":"CountrySelectionTemplate.js","sourceRoot":"","sources":["../../../../src/components/KYCElements/CountrySelectionTemplate.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useState, useMemo, useEffect } from 'react';\nimport { View, Text, TouchableOpacity, StyleSheet, ScrollView, TextInput } from 'react-native';\nimport { TemplateComponent, CountrySelectionConfig, LocalizedText, Country, IDCardConfig } from '../../types/KYC.types';\nimport { countryMapping } from '../../config/region_mapping';\nimport { useTemplateKYCFlowContext } from '../../hooks/useTemplateKYCFlow';\nimport { Button } from '../ui/Button';\nimport { countryData } from '../../config/countriesData';\nimport REGION_MAPPING from '../../config/region_mapping.json';\n\ninterface CountrySelectionTemplateProps {\n component: TemplateComponent;\n value?: any;\n onValueChange: (value: Country & { documentType?: string; region?: string }) => void;\n error?: string;\n language?: string;\n}\n\ntype SelectionStep = 'country' | 'documentType' | 'region';\n\ntype ExtendedIDCardConfig = IDCardConfig & {\n selectedCountries?: string[];\n documentTypesByCountry?: Record<string, string[]>;\n regionsByCountry?: Record<string, Record<string, string[]>>;\n instructionsByDocumentType?: Record<string, LocalizedText>;\n};\n\nconst ISO_TO_COUNTRY_NAME: Record<string, string> = { 'KE': 'Kenya', 'CM': 'Cameroon', 'NG': 'Nigeria', 'CA': 'Canada', 'FR': 'France', 'GH': 'Ghana', 'ZA': 'South Africa', 'GB': 'Britain', 'CI': 'Ivory Coast', 'SN': 'Senegal', 'TG': 'Togo', 'ML': 'Mali' };\n\nconst jsonDocMap: Record<string, string> = {\n 'nationalId': 'identity_card',\n 'national_id': 'identity_card',\n 'passport': 'passport',\n 'driversLicense': 'drivers_licence',\n 'drivers_licence': 'drivers_licence',\n 'residencePermit': 'permanent_residence',\n 'healthInsuranceCard': 'health_insurance_card'\n};\n\nconst SUB_REGION_CODES: Record<string, string> = {\n \"Alberta\": \"AB\",\n \"British Columbia\": \"BC\",\n \"Manitoba\": \"MB\",\n \"New Brunswick\": \"NB\",\n \"Newfoundland and Labrador\": \"NL\",\n \"Northwest Territories\": \"NT\",\n \"Nova Scotia\": \"NS\",\n \"Nunavut\": \"NU\",\n \"Ontario\": \"ON\",\n \"Prince Edward Island\": \"PE\",\n \"Quebec\": \"QC\",\n \"Saskatchewan\": \"SK\",\n \"Yukon\": \"YT\"\n};\n\nexport const CountrySelectionTemplate: React.FC<CountrySelectionTemplateProps> = ({\n component,\n value,\n onValueChange,\n error,\n language = 'en',\n}) => {\n const config = component.config as CountrySelectionConfig;\n const { actions, state } = useTemplateKYCFlowContext();\n\n const idCardComponent = useMemo(() => {\n return state.template.components.find(c => c.type === 'id_card');\n }, [state.template.components]);\n\n const idCardConfig = useMemo(() => {\n return idCardComponent?.config as ExtendedIDCardConfig | undefined;\n }, [idCardComponent]);\n\n const [currentStep, setCurrentStep] = useState<SelectionStep>(() => {\n if (value?.code && value?.documentType) {\n if (value.region) return 'region';\n return 'documentType';\n }\n return 'country';\n });\n\n const [selectedCountryCode, setSelectedCountryCode] = useState<string | null>(value?.code || null);\n const [selectedDocumentType, setSelectedDocumentType] = useState<string | null>(value?.documentType || null);\n const [selectedRegion, setSelectedRegion] = useState<string | null>(value?.region || null);\n \n // 🚨 Search state property\n const [searchQuery, setSearchQuery] = useState('');\n\n useEffect(() => {\n if (value?.code && value?.documentType) {\n setSelectedCountryCode(value.code);\n setSelectedDocumentType(value.documentType);\n setSelectedRegion(value.region || null);\n\n if (value.region) {\n setCurrentStep('region');\n } else {\n let regionsCheck = idCardConfig?.regionsByCountry?.[value.code]?.[value.documentType] || [];\n \n if (regionsCheck.length === 0) {\n const rawCountryName = ISO_TO_COUNTRY_NAME[value.code] || value.code;\n const searchDocType = jsonDocMap[value.documentType] || value.documentType;\n const baseMapping = (REGION_MAPPING as any).regionMapping || REGION_MAPPING;\n \n let countryMapping = baseMapping[rawCountryName];\n if (!countryMapping) {\n const foundKey = Object.keys(baseMapping).find(k => k.toLowerCase() === rawCountryName.toLowerCase());\n if (foundKey) countryMapping = baseMapping[foundKey];\n }\n\n if (countryMapping && countryMapping[searchDocType]) {\n regionsCheck = Object.keys(countryMapping[searchDocType]).filter(k => k !== 'root');\n }\n }\n\n if (Array.isArray(regionsCheck) && regionsCheck.length > 0) {\n setCurrentStep('region');\n } else {\n setCurrentStep('documentType');\n }\n }\n } else {\n setSelectedCountryCode(null);\n setSelectedDocumentType(null);\n setSelectedRegion(null);\n setCurrentStep('country');\n }\n }, [value?.code, value?.documentType, value?.region, idCardConfig]);\n\n useEffect(() => {\n if (error) {\n actions.updateComponentData(component.id, value);\n }\n }, []);\n\n // 🚨 THE FIX: Pull ALL countries from configuration + cross-reference any extra ones found in region_mapping.json\n const availableCountries = useMemo(() => {\n const baseMapping = (REGION_MAPPING as any).regionMapping || REGION_MAPPING;\n const jsonCountries = Object.keys(baseMapping);\n\n const explicitlyAllowed = idCardConfig?.selectedCountries || config.allowed_countries || [];\n \n // Combine explicit configs with the entire country dictionary database\n const combinedCodes = new Set([\n ...explicitlyAllowed,\n ...Object.keys(countryData).filter(code => {\n const fullCountryName = ISO_TO_COUNTRY_NAME[code];\n return jsonCountries.some(jc => jc.toLowerCase() === code.toLowerCase() || (fullCountryName && jc.toLowerCase() === fullCountryName.toLowerCase()));\n })\n ]);\n\n return Array.from(combinedCodes)\n .filter((code: string) => countryData[code])\n .map((code: string) => ({ code, ...countryData[code] }))\n .sort((a: Country, b: Country) => a.name.localeCompare(b.name));\n }, [idCardConfig?.selectedCountries, config.allowed_countries]);\n\n // 🚨 Filter countries list in real-time based on the search query input\n const filteredCountries = useMemo(() => {\n if (!searchQuery.trim()) return availableCountries;\n const cleanQuery = searchQuery.toLowerCase().trim();\n\n return availableCountries.filter(country => \n country.name.toLowerCase().includes(cleanQuery) || \n country.name_en.toLowerCase().includes(cleanQuery) || \n country.code.toLowerCase().includes(cleanQuery)\n );\n }, [searchQuery, availableCountries]);\n\n const availableDocumentTypes = useMemo(() => {\n if (!selectedCountryCode) return [];\n \n // Check if custom layout configuration explicitly defined items for it\n if (idCardConfig?.documentTypesByCountry?.[selectedCountryCode]) {\n return idCardConfig.documentTypesByCountry[selectedCountryCode];\n }\n\n // Default Fallback: Query mapping matrix dynamically\n const rawCountryName = ISO_TO_COUNTRY_NAME[selectedCountryCode] || selectedCountryCode;\n const baseMapping = (REGION_MAPPING as any).regionMapping || REGION_MAPPING;\n \n let countryMapping = baseMapping[rawCountryName];\n if (!countryMapping) {\n const foundKey = Object.keys(baseMapping).find(k => k.toLowerCase() === rawCountryName.toLowerCase());\n if (foundKey) countryMapping = baseMapping[foundKey];\n }\n\n if (countryMapping) {\n const inverseDocMap: Record<string, string> = {\n 'identity_card': 'nationalId',\n 'passport': 'passport',\n 'drivers_licence': 'driversLicense',\n 'permanent_residence': 'residencePermit',\n 'health_insurance_card': 'healthInsuranceCard'\n };\n return Object.keys(countryMapping).map(key => inverseDocMap[key] || key);\n }\n\n return ['nationalId', 'passport', 'driversLicense'];\n }, [selectedCountryCode, idCardConfig?.documentTypesByCountry]);\n\n const availableRegions = useMemo(() => {\n if (!selectedCountryCode || !selectedDocumentType) return [];\n\n let rawRegions: string[] = [];\n \n if (idCardConfig?.regionsByCountry?.[selectedCountryCode]?.[selectedDocumentType]) {\n rawRegions = idCardConfig.regionsByCountry[selectedCountryCode][selectedDocumentType];\n }\n\n if (rawRegions.length === 0) {\n const rawCountryName = ISO_TO_COUNTRY_NAME[selectedCountryCode] || selectedCountryCode;\n const searchDocType = jsonDocMap[selectedDocumentType] || selectedDocumentType;\n const baseMapping = (REGION_MAPPING as any).regionMapping || REGION_MAPPING;\n \n let countryMapping = baseMapping[rawCountryName];\n if (!countryMapping) {\n const foundKey = Object.keys(baseMapping).find(k => k.toLowerCase() === rawCountryName.toLowerCase());\n if (foundKey) countryMapping = baseMapping[foundKey];\n }\n\n if (countryMapping && countryMapping[searchDocType]) {\n rawRegions = Object.keys(countryMapping[searchDocType]).filter(k => k !== 'root');\n }\n }\n\n if (!Array.isArray(rawRegions)) return [];\n\n return rawRegions.sort((a, b) => a.localeCompare(b)).map(region => ({\n label: region,\n value: SUB_REGION_CODES[region] || region\n }));\n }, [selectedCountryCode, selectedDocumentType, idCardConfig?.regionsByCountry]);\n\n const needsRegion = useMemo(() => {\n return availableRegions.length > 0;\n }, [availableRegions]);\n\n const getLocalizedText = (text: LocalizedText): string => {\n return text[state.currentLanguage] || text.en || '';\n };\n\n const handleCountrySelect = (countryCode: string) => {\n setSelectedCountryCode(countryCode);\n setSelectedDocumentType(null);\n setSelectedRegion(null);\n };\n\n const handleDocumentTypeSelect = (docType: string) => {\n setSelectedDocumentType(docType);\n setSelectedRegion(null);\n };\n\n const handleRegionSelect = (regionValue: string) => {\n setSelectedRegion(regionValue);\n };\n\n const finalizeSelection = (countryCode: string, docType: string, region: string | null) => {\n const country = countryData[countryCode];\n if (!country) return;\n\n const mapping = countryMapping[countryCode as keyof typeof countryMapping];\n const countryObj: Country & { documentType?: string; region?: string } = {\n code: countryCode,\n ...country,\n regionMapping: mapping,\n documentType: docType,\n region: region || undefined,\n };\n\n onValueChange(countryObj);\n\n setTimeout(() => {\n actions.nextComponent(countryObj);\n }, 100);\n };\n\n const handleBack = () => {\n if (currentStep === 'region') {\n setCurrentStep('documentType');\n setSelectedRegion(null);\n } else if (currentStep === 'documentType') {\n setCurrentStep('country');\n setSelectedDocumentType(null);\n setSelectedRegion(null);\n setSearchQuery(''); // Reset search when backing up\n } else if (currentStep === 'country') {\n actions.previousComponent();\n }\n };\n\n const handleNext = () => {\n if (currentStep === 'country' && selectedCountryCode) {\n setCurrentStep('documentType');\n } else if (currentStep === 'documentType' && selectedDocumentType) {\n if (needsRegion) {\n setCurrentStep('region');\n } else {\n if (selectedCountryCode) {\n finalizeSelection(selectedCountryCode, selectedDocumentType, null);\n }\n }\n } else if (currentStep === 'region' && selectedRegion) {\n if (selectedCountryCode && selectedDocumentType) {\n finalizeSelection(selectedCountryCode, selectedDocumentType, selectedRegion);\n }\n }\n };\n\n const renderCountrySelection = () => {\n return (\n <>\n {/* 🔍 Dynamic Search Bar Component */}\n <TextInput\n style={styles.searchBar}\n placeholder={state.currentLanguage === \"en\" ? \"🔍 Search country...\" : \"🔍 Rechercher un pays...\"}\n placeholderTextColor=\"#94A3B8\"\n value={searchQuery}\n onChangeText={setSearchQuery}\n autoCorrect={false}\n />\n\n <ScrollView style={styles.listContainer} showsVerticalScrollIndicator={false}>\n {filteredCountries.map((country: Country & { code?: string }) => (\n <TouchableOpacity\n key={country.code}\n style={[\n styles.option,\n selectedCountryCode === country.code && styles.selectedOption\n ]}\n onPress={() => handleCountrySelect(country.code!)}\n >\n <Text style={styles.flag}>{country.flag}</Text>\n <View style={styles.optionContent}>\n <Text style={[\n styles.optionName,\n selectedCountryCode === country.code && styles.selectedOptionName\n ]}>\n {state.currentLanguage === \"en\" ? country.name_en : country.name}\n </Text>\n <Text style={styles.optionCode}>{country.code}</Text>\n </View>\n {selectedCountryCode === country.code && (\n <View style={[\n styles.checkmark,\n { backgroundColor: component.ui.themeColor as string || '#2DBD60' }\n ]}>\n <Text style={styles.checkmarkText}>✓</Text>\n </View>\n )}\n </TouchableOpacity>\n ))}\n \n {filteredCountries.length === 0 && (\n <Text style={styles.emptyText}>\n {state.currentLanguage === \"en\" ? \"No matching countries found.\" : \"Aucun pays trouvé.\"}\n </Text>\n )}\n </ScrollView>\n </>\n );\n };\n\n const renderDocumentTypeSelection = () => {\n const instructions = selectedDocumentType && idCardConfig?.instructionsByDocumentType?.[selectedDocumentType]\n ? getLocalizedText(idCardConfig.instructionsByDocumentType[selectedDocumentType])\n : null;\n\n const documentTypeLabels: Record<string, { en: string; fr: string; icon?: string }> = {\n 'nationalId': { en: 'National ID', fr: 'Carte nationale d\\'identité', icon: '🏛️' },\n 'passport': { en: 'Passport', fr: 'Passeport', icon: '📘' },\n 'driversLicense': { en: 'Driver\\'s License', fr: 'Permis de conduire', icon: '🚗' },\n 'residencePermit': { en: 'Residence Permit', fr: 'Permis de séjour', icon: '🏠' },\n 'healthInsuranceCard': { en: 'Health Insurance Card', fr: 'Carte d\\'assurance maladie', icon: '🗳️' },\n };\n\n return (\n <>\n {instructions && (\n <View style={styles.infoBox}>\n <Text style={styles.infoText}>{instructions}</Text>\n </View>\n )}\n <ScrollView style={styles.listContainer} showsVerticalScrollIndicator={false}>\n {availableDocumentTypes.map((docType: string) => {\n const label = documentTypeLabels[docType];\n const displayName = label ? (state.currentLanguage === \"en\" ? label.en : label.fr) : docType;\n const icon = label?.icon || '📄';\n\n return (\n <TouchableOpacity\n key={docType}\n style={[\n styles.option,\n selectedDocumentType === docType && styles.selectedOption\n ]}\n onPress={() => handleDocumentTypeSelect(docType)}\n >\n <Text style={styles.flag}>{icon}</Text>\n <View style={styles.optionContent}>\n <Text style={[\n styles.optionName,\n selectedDocumentType === docType && styles.selectedOptionName\n ]}>\n {displayName}\n </Text>\n </View>\n {selectedDocumentType === docType && (\n <View style={[\n styles.checkmark,\n { backgroundColor: component.ui.themeColor as string || '#2DBD60' }\n ]}>\n <Text style={styles.checkmarkText}>✓</Text>\n </View>\n )}\n </TouchableOpacity>\n );\n })}\n </ScrollView>\n </>\n );\n };\n\n const renderRegionSelection = () => {\n return (\n <>\n <ScrollView style={styles.listContainer} showsVerticalScrollIndicator={false}>\n {availableRegions.map((regionObj, index: number) => {\n return (\n <TouchableOpacity\n key={index}\n style={[\n styles.option,\n selectedRegion === regionObj.value && styles.selectedOption\n ]}\n onPress={() => handleRegionSelect(regionObj.value)}\n >\n <View style={styles.optionContent}>\n <Text style={[\n styles.optionName,\n selectedRegion === regionObj.value && styles.selectedOptionName\n ]}>\n {regionObj.label}\n </Text>\n {regionObj.value !== regionObj.label && (\n <Text style={styles.optionCode}>{regionObj.value}</Text>\n )}\n </View>\n {selectedRegion === regionObj.value && (\n <View style={[\n styles.checkmark,\n { backgroundColor: component.ui.themeColor as string || '#2DBD60' }\n ]}>\n <Text style={styles.checkmarkText}>✓</Text>\n </View>\n )}\n </TouchableOpacity>\n );\n })}\n </ScrollView>\n </>\n );\n };\n\n const getStepTitle = (): string => {\n switch (currentStep) {\n case 'country':\n return getLocalizedText(component.labels as LocalizedText);\n case 'documentType':\n return state.currentLanguage === \"en\" ? \"Select Document Type\" : \"Sélectionnez le type de document\";\n case 'region':\n return state.currentLanguage === \"en\" ? \"Select Province/State\" : \"Sélectionnez la province/l'état\";\n default:\n return '';\n }\n };\n\n const getStepDescription = (): string => {\n switch (currentStep) {\n case 'country':\n return getLocalizedText(component.instructions as LocalizedText);\n case 'documentType':\n return state.currentLanguage === \"en\"\n ? \"Choose the type of document you want to use\"\n : \"Choisissez le type de document que vous souhaitez utiliser\";\n case 'region':\n return state.currentLanguage === \"en\"\n ? \"Select the issuing province or territory\"\n : \"Sélectionnez la province ou le territoire de délivrance\";\n default:\n return '';\n }\n };\n\n const getProgressStep = (): number => {\n if (currentStep === 'country') return 1;\n if (currentStep === 'documentType') return 2;\n return 3;\n };\n\n const getTotalSteps = (): number => {\n return needsRegion ? 3 : 2;\n };\n\n const canGoNext = (): boolean => {\n if (currentStep === 'country') return selectedCountryCode !== null;\n if (currentStep === 'documentType') return selectedDocumentType !== null;\n if (currentStep === 'region') return selectedRegion !== null;\n return false;\n };\n\n return (\n <View style={styles.root}>\n <View style={styles.container}>\n <View style={styles.progressContainer}>\n <Text style={styles.progressText}>\n {state.currentLanguage === \"en\"\n ? `Step ${getProgressStep()} of ${getTotalSteps()}`\n : `Étape ${getProgressStep()} sur ${getTotalSteps()}`}\n </Text>\n </View>\n\n <Text style={styles.title}>{getStepTitle()}</Text>\n <Text style={styles.description}>{getStepDescription()}</Text>\n\n {currentStep === 'country' && renderCountrySelection()}\n {currentStep === 'documentType' && renderDocumentTypeSelection()}\n {currentStep === 'region' && renderRegionSelection()}\n\n <View style={styles.buttonContainer}>\n <Button\n title={state.currentLanguage === \"en\" ? \"Back\" : \"Retour\"}\n onPress={handleBack}\n variant={currentStep === 'country' ? \"secondary\" : \"outline\"}\n size=\"large\"\n style={{ flex: 1, marginRight: 8 }}\n />\n <Button\n title={state.currentLanguage === \"en\" ? \"Next\" : \"Suivant\"}\n onPress={handleNext}\n variant=\"primary\"\n size=\"large\"\n style={{ flex: 1 }}\n disabled={!canGoNext()}\n />\n </View>\n\n {error && (\n <Text style={styles.errorText}>{error}</Text>\n )}\n </View>\n </View>\n );\n};\n\nconst styles = StyleSheet.create({\n root: { flex: 1, maxWidth: 760, width: '100%' },\n container: { backgroundColor: 'white', margin: 10, borderRadius: 10, paddingVertical: 16, paddingHorizontal: 16, shadowColor: '#000', shadowOffset: { width: 0, height: 2 }, shadowOpacity: 0.35, shadowRadius: 4.84, elevation: 10 },\n progressContainer: { marginBottom: 16, alignItems: 'center' },\n progressText: { fontSize: 14, color: '#666', fontWeight: '500' },\n title: { fontSize: 24, fontWeight: 'bold', color: '#333', marginBottom: 8, textAlign: 'center' },\n description: { fontSize: 16, color: '#666', textAlign: 'center', marginBottom: 24, lineHeight: 22 },\n searchBar: { height: 52, backgroundColor: '#F1F5F9', borderRadius: 12, paddingHorizontal: 16, fontSize: 16, color: '#1E293B', marginBottom: 16, borderWidth: 1, borderColor: '#CBD5E1', fontWeight: '500' },\n listContainer: { maxHeight: 360, marginBottom: 24 },\n option: { flexDirection: 'row', alignItems: 'center', padding: 16, backgroundColor: '#F8F9FA', borderRadius: 12, marginBottom: 12, borderWidth: 2, borderColor: '#E9ECEF', minHeight: 64 },\n selectedOption: { borderColor: '#2DBD60', backgroundColor: '#F0F9F0' },\n flag: { fontSize: 32, marginRight: 16 },\n optionContent: { flex: 1 },\n optionName: { fontSize: 18, fontWeight: '600', color: '#333' },\n selectedOptionName: { color: '#2DBD60' },\n optionCode: { fontSize: 14, color: '#666', marginTop: 4, fontWeight: '500' },\n checkmark: { width: 24, height: 24, borderRadius: 12, justifyContent: 'center', alignItems: 'center' },\n checkmarkText: { color: 'white', fontSize: 16, fontWeight: 'bold' },\n infoBox: { backgroundColor: '#F9FAFB', padding: 12, borderRadius: 12, marginBottom: 16 },\n infoText: { fontSize: 14, color: '#666', lineHeight: 20 },\n buttonContainer: { flexDirection: 'row', marginTop: 24, gap: 12 },\n errorText: { color: '#dc2626', fontSize: 14, marginTop: 8, textAlign: 'center' },\n emptyText: { textAlign: 'center', color: '#64748B', fontSize: 16, marginTop: 24, fontWeight: '500' }\n});"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IDCardCapture.d.ts","sourceRoot":"","sources":["../../../../src/components/KYCElements/IDCardCapture.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAI5D,OAAO,EAAE,iBAAiB,EAAoI,MAAM,uBAAuB,CAAC;AAe5L,UAAU,cAAc;IAAG,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAAE;AAC3F,UAAU,kBAAkB;IAC1B,SAAS,EAAE,iBAAiB,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACvC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,
|
|
1
|
+
{"version":3,"file":"IDCardCapture.d.ts","sourceRoot":"","sources":["../../../../src/components/KYCElements/IDCardCapture.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAI5D,OAAO,EAAE,iBAAiB,EAAoI,MAAM,uBAAuB,CAAC;AAe5L,UAAU,cAAc;IAAG,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CAAE;AAC3F,UAAU,kBAAkB;IAC1B,SAAS,EAAE,iBAAiB,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACvC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAqkBtD,CAAC"}
|
|
@@ -127,6 +127,16 @@ export const IDCardCapture = ({ component, value = {}, onValueChange, error, lan
|
|
|
127
127
|
if (!rawDocType || !countryKey) {
|
|
128
128
|
return { authMethod: [], mrzTypes: [], regionMapping: null, key: 'root' };
|
|
129
129
|
}
|
|
130
|
+
const jsonDocMap = {
|
|
131
|
+
'nationalId': 'identity_card',
|
|
132
|
+
'national_id': 'identity_card',
|
|
133
|
+
'passport': 'passport',
|
|
134
|
+
'driversLicense': 'drivers_licence',
|
|
135
|
+
'drivers_licence': 'drivers_licence',
|
|
136
|
+
'residencePermit': 'permanent_residence',
|
|
137
|
+
'healthInsuranceCard': 'health_insurance_card'
|
|
138
|
+
};
|
|
139
|
+
const searchDocType = jsonDocMap[rawDocType] || rawDocType;
|
|
130
140
|
const rawCountryName = ISO_TO_COUNTRY_NAME[countryData?.code || ''] || countryData?.code || countryKey;
|
|
131
141
|
const baseMapping = REGION_MAPPING.regionMapping || REGION_MAPPING;
|
|
132
142
|
let countryMapping = baseMapping[rawCountryName];
|
|
@@ -138,7 +148,8 @@ export const IDCardCapture = ({ component, value = {}, onValueChange, error, lan
|
|
|
138
148
|
if (!countryMapping) {
|
|
139
149
|
return { authMethod: [], mrzTypes: [], regionMapping: null, key: 'root' };
|
|
140
150
|
}
|
|
141
|
-
|
|
151
|
+
// Use the translated name to look up the document in the JSON
|
|
152
|
+
const regionMapping = countryMapping[searchDocType];
|
|
142
153
|
if (!regionMapping) {
|
|
143
154
|
return { authMethod: [], mrzTypes: [], regionMapping: null, key: 'root' };
|
|
144
155
|
}
|