datakeen-session-react 1.1.140-dev.66 → 1.1.140-dev.68
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/cjs/components/session/UserInputForm/AddressFields.js +2 -10
- package/dist/cjs/components/session/UserInputForm/AddressFields.js.map +1 -1
- package/dist/cjs/components/session/UserInputForm/NationalityField.js +2 -11
- package/dist/cjs/components/session/UserInputForm/NationalityField.js.map +1 -1
- package/dist/cjs/constants/userInputForm.js +0 -25
- package/dist/cjs/constants/userInputForm.js.map +1 -1
- package/dist/cjs/hooks/useCountryOptions.js +20 -0
- package/dist/cjs/hooks/useCountryOptions.js.map +1 -0
- package/dist/cjs/i18n/country/country.iso2.fr.json.js +2 -2
- package/dist/cjs/services/documentTemplate.js +1 -1
- package/dist/cjs/services/documentTemplate.js.map +1 -1
- package/dist/esm/components/session/UserInputForm/AddressFields.js +2 -10
- package/dist/esm/components/session/UserInputForm/AddressFields.js.map +1 -1
- package/dist/esm/components/session/UserInputForm/NationalityField.js +3 -12
- package/dist/esm/components/session/UserInputForm/NationalityField.js.map +1 -1
- package/dist/esm/constants/userInputForm.js +1 -25
- package/dist/esm/constants/userInputForm.js.map +1 -1
- package/dist/esm/hooks/useCountryOptions.js +18 -0
- package/dist/esm/hooks/useCountryOptions.js.map +1 -0
- package/dist/esm/i18n/country/country.iso2.fr.json.js +2 -2
- package/dist/esm/i18n/index.js +2 -2
- package/dist/esm/i18n/index.js.map +1 -1
- package/dist/esm/services/documentTemplate.js +1 -1
- package/dist/esm/services/documentTemplate.js.map +1 -1
- package/package.json +1 -1
|
@@ -2,14 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var tslib_es6 = require('../../../node_modules/tslib/tslib.es6.js');
|
|
6
5
|
var jsxRuntime = require('react/jsx-runtime');
|
|
7
|
-
var React = require('react');
|
|
8
6
|
var Label = require('@radix-ui/react-label');
|
|
9
7
|
var clsx = require('clsx');
|
|
10
8
|
var SelectComponent = require('../../ui/SelectComponent.js');
|
|
11
|
-
var userInputForm = require('../../../constants/userInputForm.js');
|
|
12
9
|
var useI18n = require('../../../hooks/useI18n.js');
|
|
10
|
+
var useCountryOptions = require('../../../hooks/useCountryOptions.js');
|
|
13
11
|
|
|
14
12
|
function _interopNamespaceDefault(e) {
|
|
15
13
|
var n = Object.create(null);
|
|
@@ -33,13 +31,7 @@ var Label__namespace = /*#__PURE__*/_interopNamespaceDefault(Label);
|
|
|
33
31
|
var AddressFields = function (_a) {
|
|
34
32
|
var form = _a.form, errors = _a.errors, requestedFields = _a.requestedFields, addressSuggestions = _a.addressSuggestions, showSuggestions = _a.showSuggestions, onFieldChange = _a.onFieldChange, onAddressChange = _a.onAddressChange, onAddressFocus = _a.onAddressFocus, onAddressBlur = _a.onAddressBlur, onApplySuggestion = _a.onApplySuggestion;
|
|
35
33
|
var t = useI18n.useI18n().t;
|
|
36
|
-
var countryOptions =
|
|
37
|
-
if (userInputForm.COUNTRY_OPTIONS.length === 0) {
|
|
38
|
-
return userInputForm.COUNTRY_OPTIONS;
|
|
39
|
-
}
|
|
40
|
-
var first = userInputForm.COUNTRY_OPTIONS[0], rest = userInputForm.COUNTRY_OPTIONS.slice(1);
|
|
41
|
-
return tslib_es6.__spreadArray([tslib_es6.__assign(tslib_es6.__assign({}, first), { label: t("user_input_form.select.country") })], rest, true);
|
|
42
|
-
}, [t]);
|
|
34
|
+
var countryOptions = useCountryOptions.useCountryOptions("user_input_form.select.country");
|
|
43
35
|
if (!requestedFields.has("adresse")) {
|
|
44
36
|
return null;
|
|
45
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddressFields.js","sources":["../../../../../../src/components/session/UserInputForm/AddressFields.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport * as Label from \"@radix-ui/react-label\";\nimport clsx from \"clsx\";\nimport { Select } from \"../../ui/SelectComponent\";\nimport { COUNTRY_OPTIONS } from \"../../../constants/userInputForm\";\nimport type {\n AddressSuggestion,\n RequestedFields,\n UserInputFormErrors,\n UserInputFormState,\n} from \"../../../types/userInputForm\";\nimport { useI18n } from \"../../../hooks/useI18n\";\n\ninterface AddressFieldsProps {\n form: UserInputFormState;\n errors: UserInputFormErrors;\n requestedFields: RequestedFields;\n addressSuggestions: AddressSuggestion[];\n showSuggestions: boolean;\n onFieldChange: (key: keyof UserInputFormState, value: string) => void;\n onAddressChange: (value: string) => void;\n onAddressFocus: () => void;\n onAddressBlur: () => void;\n onApplySuggestion: (suggestion: AddressSuggestion) => void;\n}\n\nconst AddressFields = ({\n form,\n errors,\n requestedFields,\n addressSuggestions,\n showSuggestions,\n onFieldChange,\n onAddressChange,\n onAddressFocus,\n onAddressBlur,\n onApplySuggestion,\n}: AddressFieldsProps) => {\n const { t } = useI18n();\n\n const countryOptions = useMemo(() => {\n if (COUNTRY_OPTIONS.length === 0) {\n return COUNTRY_OPTIONS;\n }\n\n const [first, ...rest] = COUNTRY_OPTIONS;\n return [{ ...first, label: t(\"user_input_form.select.country\") }, ...rest];\n }, [t]);\n\n if (!requestedFields.has(\"adresse\")) {\n return null;\n }\n\n return (\n <>\n <div className=\"relative space-y-2\">\n <Label.Root\n htmlFor=\"addressLine1\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\"user_input_form.fields.address_line1\")}\n </Label.Root>\n <input\n id=\"addressLine1\"\n type=\"text\"\n value={form.addressLine1 || \"\"}\n onChange={(event) => onAddressChange(event.target.value)}\n onFocus={onAddressFocus}\n onBlur={onAddressBlur}\n placeholder={t(\"user_input_form.placeholders.address_line1\")}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.addressLine1\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover:border-gray-400\"\n )}\n autoComplete=\"street-address\"\n />\n {showSuggestions && addressSuggestions.length > 0 && (\n <div className=\"absolute z-20 mt-1 max-h-48 w-full overflow-auto rounded-lg border border-gray-200 bg-white shadow-lg\">\n {addressSuggestions.map((suggestion) => (\n <button\n key={suggestion.id}\n type=\"button\"\n className=\"w-full px-3 py-2 text-left text-sm hover:bg-gray-100\"\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => onApplySuggestion(suggestion)}\n >\n <div className=\"flex flex-col\">\n <span className=\"text-sm text-gray-900\">\n {suggestion.label}\n </span>\n {(suggestion.city ||\n suggestion.postalCode ||\n suggestion.country ||\n suggestion.countryCode) && (\n <span className=\"text-xs text-gray-500\">\n {[\n [suggestion.postalCode, suggestion.city]\n .filter(Boolean)\n .join(\" \"),\n suggestion.country ||\n suggestion.countryCode?.toUpperCase(),\n ]\n .filter(Boolean)\n .join(\", \")}\n </span>\n )}\n </div>\n </button>\n ))}\n </div>\n )}\n {errors.addressLine1 && (\n <p className=\"flex items-center gap-1 text-sm text-red-600\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.address_line1_required\")}\n </p>\n )}\n </div>\n\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"addressLine2\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\"user_input_form.fields.address_line2\")}\n </Label.Root>\n <input\n id=\"addressLine2\"\n type=\"text\"\n value={form.addressLine2 || \"\"}\n onChange={(event) =>\n onFieldChange(\"addressLine2\", event.target.value)\n }\n placeholder={t(\"user_input_form.placeholders.address_line2\")}\n className=\"w-full rounded-lg border border-gray-300 px-3 py-3 text-base transition-colors hover:border-gray-400 focus:border-transparent focus:outline-none focus:ring-2 focus:ring-[#11E5C5]\"\n autoComplete=\"address-line2\"\n />\n </div>\n\n <div className=\"grid grid-cols-[140px_minmax(0,1fr)] gap-3 md:grid-cols-[160px_minmax(0,1fr)]\">\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"postalCode\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\"user_input_form.fields.postal_code\")}\n </Label.Root>\n <input\n id=\"postalCode\"\n type=\"text\"\n value={form.postalCode || \"\"}\n onChange={(event) =>\n onFieldChange(\"postalCode\", event.target.value)\n }\n placeholder={t(\"user_input_form.placeholders.postal_code\")}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.postalCode\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover-border-gray-400\"\n )}\n autoComplete=\"postal-code\"\n />\n {errors.postalCode && (\n <p className=\"flex items-center gap-1 text-sm text-red-600\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.postal_code_required\")}\n </p>\n )}\n </div>\n\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"city\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\"user_input_form.fields.city\")}\n </Label.Root>\n <input\n id=\"city\"\n type=\"text\"\n value={form.city || \"\"}\n onChange={(event) => onFieldChange(\"city\", event.target.value)}\n placeholder={t(\"user_input_form.placeholders.city\")}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.city\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover-border-gray-400\"\n )}\n autoComplete=\"address-level2\"\n />\n {errors.city && (\n <p className=\"flex items-center gap-1 text-sm text-red-600\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.city_required\")}\n </p>\n )}\n </div>\n </div>\n\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"country\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\"user_input_form.fields.country\")}\n </Label.Root>\n <Select\n options={countryOptions}\n value={form.countryCode || \"\"}\n onValueChange={(value) => onFieldChange(\"countryCode\", value)}\n placeholder={t(\"user_input_form.select.country\")}\n error={Boolean(errors.country)}\n />\n {errors.country && (\n <p className=\"flex items-center gap-1 text-sm text-red-600\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.country_required\")}\n </p>\n )}\n </div>\n </>\n );\n};\n\nexport default AddressFields;\n"],"names":["useI18n","useMemo","COUNTRY_OPTIONS","__spreadArray","__assign","_jsxs","_Fragment","_jsx","Label","Select"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AddressFields.js","sources":["../../../../../../src/components/session/UserInputForm/AddressFields.tsx"],"sourcesContent":["import * as Label from \"@radix-ui/react-label\";\nimport clsx from \"clsx\";\nimport { Select } from \"../../ui/SelectComponent\";\nimport type {\n AddressSuggestion,\n RequestedFields,\n UserInputFormErrors,\n UserInputFormState,\n} from \"../../../types/userInputForm\";\nimport { useI18n } from \"../../../hooks/useI18n\";\nimport { useCountryOptions } from \"../../../hooks/useCountryOptions\";\n\ninterface AddressFieldsProps {\n form: UserInputFormState;\n errors: UserInputFormErrors;\n requestedFields: RequestedFields;\n addressSuggestions: AddressSuggestion[];\n showSuggestions: boolean;\n onFieldChange: (key: keyof UserInputFormState, value: string) => void;\n onAddressChange: (value: string) => void;\n onAddressFocus: () => void;\n onAddressBlur: () => void;\n onApplySuggestion: (suggestion: AddressSuggestion) => void;\n}\n\nconst AddressFields = ({\n form,\n errors,\n requestedFields,\n addressSuggestions,\n showSuggestions,\n onFieldChange,\n onAddressChange,\n onAddressFocus,\n onAddressBlur,\n onApplySuggestion,\n}: AddressFieldsProps) => {\n const { t } = useI18n();\n const countryOptions = useCountryOptions(\"user_input_form.select.country\");\n\n if (!requestedFields.has(\"adresse\")) {\n return null;\n }\n\n return (\n <>\n <div className=\"relative space-y-2\">\n <Label.Root\n htmlFor=\"addressLine1\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\"user_input_form.fields.address_line1\")}\n </Label.Root>\n <input\n id=\"addressLine1\"\n type=\"text\"\n value={form.addressLine1 || \"\"}\n onChange={(event) => onAddressChange(event.target.value)}\n onFocus={onAddressFocus}\n onBlur={onAddressBlur}\n placeholder={t(\"user_input_form.placeholders.address_line1\")}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.addressLine1\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover:border-gray-400\"\n )}\n autoComplete=\"street-address\"\n />\n {showSuggestions && addressSuggestions.length > 0 && (\n <div className=\"absolute z-20 mt-1 max-h-48 w-full overflow-auto rounded-lg border border-gray-200 bg-white shadow-lg\">\n {addressSuggestions.map((suggestion) => (\n <button\n key={suggestion.id}\n type=\"button\"\n className=\"w-full px-3 py-2 text-left text-sm hover:bg-gray-100\"\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => onApplySuggestion(suggestion)}\n >\n <div className=\"flex flex-col\">\n <span className=\"text-sm text-gray-900\">\n {suggestion.label}\n </span>\n {(suggestion.city ||\n suggestion.postalCode ||\n suggestion.country ||\n suggestion.countryCode) && (\n <span className=\"text-xs text-gray-500\">\n {[\n [suggestion.postalCode, suggestion.city]\n .filter(Boolean)\n .join(\" \"),\n suggestion.country ||\n suggestion.countryCode?.toUpperCase(),\n ]\n .filter(Boolean)\n .join(\", \")}\n </span>\n )}\n </div>\n </button>\n ))}\n </div>\n )}\n {errors.addressLine1 && (\n <p className=\"flex items-center gap-1 text-sm text-red-600\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.address_line1_required\")}\n </p>\n )}\n </div>\n\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"addressLine2\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\"user_input_form.fields.address_line2\")}\n </Label.Root>\n <input\n id=\"addressLine2\"\n type=\"text\"\n value={form.addressLine2 || \"\"}\n onChange={(event) =>\n onFieldChange(\"addressLine2\", event.target.value)\n }\n placeholder={t(\"user_input_form.placeholders.address_line2\")}\n className=\"w-full rounded-lg border border-gray-300 px-3 py-3 text-base transition-colors hover:border-gray-400 focus:border-transparent focus:outline-none focus:ring-2 focus:ring-[#11E5C5]\"\n autoComplete=\"address-line2\"\n />\n </div>\n\n <div className=\"grid grid-cols-[140px_minmax(0,1fr)] gap-3 md:grid-cols-[160px_minmax(0,1fr)]\">\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"postalCode\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\"user_input_form.fields.postal_code\")}\n </Label.Root>\n <input\n id=\"postalCode\"\n type=\"text\"\n value={form.postalCode || \"\"}\n onChange={(event) =>\n onFieldChange(\"postalCode\", event.target.value)\n }\n placeholder={t(\"user_input_form.placeholders.postal_code\")}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.postalCode\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover-border-gray-400\"\n )}\n autoComplete=\"postal-code\"\n />\n {errors.postalCode && (\n <p className=\"flex items-center gap-1 text-sm text-red-600\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.postal_code_required\")}\n </p>\n )}\n </div>\n\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"city\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\"user_input_form.fields.city\")}\n </Label.Root>\n <input\n id=\"city\"\n type=\"text\"\n value={form.city || \"\"}\n onChange={(event) => onFieldChange(\"city\", event.target.value)}\n placeholder={t(\"user_input_form.placeholders.city\")}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.city\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover-border-gray-400\"\n )}\n autoComplete=\"address-level2\"\n />\n {errors.city && (\n <p className=\"flex items-center gap-1 text-sm text-red-600\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.city_required\")}\n </p>\n )}\n </div>\n </div>\n\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"country\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\"user_input_form.fields.country\")}\n </Label.Root>\n <Select\n options={countryOptions}\n value={form.countryCode || \"\"}\n onValueChange={(value) => onFieldChange(\"countryCode\", value)}\n placeholder={t(\"user_input_form.select.country\")}\n error={Boolean(errors.country)}\n />\n {errors.country && (\n <p className=\"flex items-center gap-1 text-sm text-red-600\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.country_required\")}\n </p>\n )}\n </div>\n </>\n );\n};\n\nexport default AddressFields;\n"],"names":["useI18n","useCountryOptions","_jsxs","_Fragment","_jsx","Label","Select"],"mappings":"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"}
|
|
@@ -2,13 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var tslib_es6 = require('../../../node_modules/tslib/tslib.es6.js');
|
|
6
5
|
var jsxRuntime = require('react/jsx-runtime');
|
|
7
|
-
var React = require('react');
|
|
8
6
|
var Label = require('@radix-ui/react-label');
|
|
9
7
|
var SelectComponent = require('../../ui/SelectComponent.js');
|
|
10
8
|
var userInputForm = require('../../../constants/userInputForm.js');
|
|
11
9
|
var useI18n = require('../../../hooks/useI18n.js');
|
|
10
|
+
var useCountryOptions = require('../../../hooks/useCountryOptions.js');
|
|
12
11
|
|
|
13
12
|
function _interopNamespaceDefault(e) {
|
|
14
13
|
var n = Object.create(null);
|
|
@@ -32,15 +31,7 @@ var Label__namespace = /*#__PURE__*/_interopNamespaceDefault(Label);
|
|
|
32
31
|
var NationalityField = function (_a) {
|
|
33
32
|
var form = _a.form, errors = _a.errors, requestedFields = _a.requestedFields, onFieldChange = _a.onFieldChange;
|
|
34
33
|
var t = useI18n.useI18n().t;
|
|
35
|
-
var countryOptions =
|
|
36
|
-
if (userInputForm.COUNTRY_OPTIONS.length === 0) {
|
|
37
|
-
return userInputForm.COUNTRY_OPTIONS;
|
|
38
|
-
}
|
|
39
|
-
var first = userInputForm.COUNTRY_OPTIONS[0], rest = userInputForm.COUNTRY_OPTIONS.slice(1);
|
|
40
|
-
return tslib_es6.__spreadArray([
|
|
41
|
-
tslib_es6.__assign(tslib_es6.__assign({}, first), { label: t("user_input_form.select.nationality") })
|
|
42
|
-
], rest, true);
|
|
43
|
-
}, [t]);
|
|
34
|
+
var countryOptions = useCountryOptions.useCountryOptions("user_input_form.select.nationality");
|
|
44
35
|
if (!requestedFields.has("nationalite")) {
|
|
45
36
|
return null;
|
|
46
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NationalityField.js","sources":["../../../../../../src/components/session/UserInputForm/NationalityField.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"NationalityField.js","sources":["../../../../../../src/components/session/UserInputForm/NationalityField.tsx"],"sourcesContent":["import * as Label from \"@radix-ui/react-label\";\nimport { Select } from \"../../ui/SelectComponent\";\nimport { FIELD_LABELS } from \"../../../constants/userInputForm\";\nimport type {\n RequestedFields,\n UserInputFormErrors,\n UserInputFormState,\n} from \"../../../types/userInputForm\";\nimport { useI18n } from \"../../../hooks/useI18n\";\nimport { useCountryOptions } from \"../../../hooks/useCountryOptions\";\n\ninterface NationalityFieldProps {\n form: UserInputFormState;\n errors: UserInputFormErrors;\n requestedFields: RequestedFields;\n onFieldChange: (key: keyof UserInputFormState, value: string) => void;\n}\n\nconst NationalityField = ({\n form,\n errors,\n requestedFields,\n onFieldChange,\n}: NationalityFieldProps) => {\n const { t } = useI18n();\n const countryOptions = useCountryOptions(\"user_input_form.select.nationality\");\n\n if (!requestedFields.has(\"nationalite\")) {\n return null;\n }\n\n return (\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"nationality\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(FIELD_LABELS.nationalite)}\n </Label.Root>\n <Select\n options={countryOptions}\n value={form.nationality || \"\"}\n onValueChange={(value) => onFieldChange(\"nationality\", value)}\n placeholder={t(\"user_input_form.select.nationality\")}\n error={Boolean(errors.nationality)}\n />\n {errors.nationality && (\n <p className=\"text-red-600 text-sm flex items-center gap-1\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.nationality_required\")}\n </p>\n )}\n </div>\n );\n};\n\nexport default NationalityField;\n"],"names":["useI18n","useCountryOptions","_jsxs","_jsx","Label","FIELD_LABELS","Select"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkBA,IAAM,gBAAgB,GAAG,UAAC,EAKF,EAAA;QAJtB,IAAI,GAAA,EAAA,CAAA,IAAA,EACJ,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,eAAe,GAAA,EAAA,CAAA,eAAA,EACf,aAAa,GAAA,EAAA,CAAA,aAAA;AAEL,IAAA,IAAA,CAAC,GAAKA,eAAO,EAAE,EAAd;AACT,IAAA,IAAM,cAAc,GAAGC,mCAAiB,CAAC,oCAAoC,CAAC;IAE9E,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE;AACvC,QAAA,OAAO,IAAI;IACb;IAEA,QACEC,yBAAK,SAAS,EAAC,WAAW,EAAA,QAAA,EAAA,CACxBC,cAAA,CAACC,gBAAK,CAAC,IAAI,IACT,OAAO,EAAC,aAAa,EACrB,SAAS,EAAC,wDAAwD,EAAA,QAAA,EAEjE,CAAC,CAACC,0BAAY,CAAC,WAAW,CAAC,EAAA,CACjB,EACbF,cAAA,CAACG,sBAAM,IACL,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE,EAC7B,aAAa,EAAE,UAAC,KAAK,EAAA,EAAK,OAAA,aAAa,CAAC,aAAa,EAAE,KAAK,CAAC,CAAA,CAAnC,CAAmC,EAC7D,WAAW,EAAE,CAAC,CAAC,oCAAoC,CAAC,EACpD,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,EAAA,CAClC,EACD,MAAM,CAAC,WAAW,KACjBJ,eAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,8CAA8C,EAAA,QAAA,EAAA,CACzDC,cAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,cAAc,EAAA,QAAA,EAAA,QAAA,EAAA,CAAS,EACtC,CAAC,CAAC,6CAA6C,CAAC,CAAA,EAAA,CAC/C,CACL,CAAA,EAAA,CACG;AAEV;;;;"}
|
|
@@ -29,30 +29,6 @@ var YEAR_OPTIONS = years.map(function (value) { return ({
|
|
|
29
29
|
value: String(value),
|
|
30
30
|
label: String(value),
|
|
31
31
|
}); });
|
|
32
|
-
var COUNTRY_OPTIONS = [
|
|
33
|
-
{ value: "", label: "Sélectionnez un pays" },
|
|
34
|
-
{ value: "FR", label: "France" },
|
|
35
|
-
{ value: "BE", label: "Belgique" },
|
|
36
|
-
{ value: "CH", label: "Suisse" },
|
|
37
|
-
{ value: "DE", label: "Allemagne" },
|
|
38
|
-
{ value: "ES", label: "Espagne" },
|
|
39
|
-
{ value: "IT", label: "Italie" },
|
|
40
|
-
{ value: "PT", label: "Portugal" },
|
|
41
|
-
{ value: "GB", label: "Royaume-Uni" },
|
|
42
|
-
{ value: "IE", label: "Irlande" },
|
|
43
|
-
{ value: "NL", label: "Pays-Bas" },
|
|
44
|
-
{ value: "US", label: "États-Unis" },
|
|
45
|
-
{ value: "CA", label: "Canada" },
|
|
46
|
-
{ value: "MX", label: "Mexique" },
|
|
47
|
-
{ value: "AU", label: "Australie" },
|
|
48
|
-
{ value: "BR", label: "Brésil" },
|
|
49
|
-
{ value: "MA", label: "Maroc" },
|
|
50
|
-
{ value: "DZ", label: "Algérie" },
|
|
51
|
-
{ value: "TN", label: "Tunisie" },
|
|
52
|
-
{ value: "JP", label: "Japon" },
|
|
53
|
-
{ value: "CN", label: "Chine" },
|
|
54
|
-
{ value: "IN", label: "Inde" },
|
|
55
|
-
];
|
|
56
32
|
var ADDRESS_SUGGESTIONS = [
|
|
57
33
|
"10 Rue de Rivoli, 75001 Paris, France",
|
|
58
34
|
"221B Baker Street, NW1 6XE Londres, Royaume-Uni",
|
|
@@ -93,7 +69,6 @@ var FALLBACK_ADDRESS_SUGGESTIONS = ADDRESS_SUGGESTIONS.map(function (label, inde
|
|
|
93
69
|
}); });
|
|
94
70
|
|
|
95
71
|
exports.ADDRESS_SUGGESTIONS = ADDRESS_SUGGESTIONS;
|
|
96
|
-
exports.COUNTRY_OPTIONS = COUNTRY_OPTIONS;
|
|
97
72
|
exports.DAY_OPTIONS = DAY_OPTIONS;
|
|
98
73
|
exports.DEFAULT_FIELDS = DEFAULT_FIELDS;
|
|
99
74
|
exports.FALLBACK_ADDRESS_SUGGESTIONS = FALLBACK_ADDRESS_SUGGESTIONS;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"userInputForm.js","sources":["../../../../src/constants/userInputForm.ts"],"sourcesContent":["import type {\n AddressSuggestion,\n InformationType,\n RequestedFieldKey,\n SelectOption,\n} from \"../types/userInputForm\";\n\nconst days = Array.from({ length: 31 }, (_, index) => index + 1);\nconst currentYear = new Date().getFullYear();\nconst years = Array.from({ length: 120 }, (_, index) => currentYear - index);\n\nconst monthLabels = [\n \"Janvier\",\n \"Février\",\n \"Mars\",\n \"Avril\",\n \"Mai\",\n \"Juin\",\n \"Juillet\",\n \"Août\",\n \"Septembre\",\n \"Octobre\",\n \"Novembre\",\n \"Décembre\",\n];\n\nexport const DAY_OPTIONS: SelectOption[] = days.map((value) => ({\n value: String(value).padStart(2, \"0\"),\n label: String(value).padStart(2, \"0\"),\n}));\n\nexport const MONTH_OPTIONS: SelectOption[] = monthLabels.map(\n (label, index) => ({\n value: String(index + 1).padStart(2, \"0\"),\n label,\n })\n);\n\nexport const YEAR_OPTIONS: SelectOption[] = years.map((value) => ({\n value: String(value),\n label: String(value),\n}));\n\
|
|
1
|
+
{"version":3,"file":"userInputForm.js","sources":["../../../../src/constants/userInputForm.ts"],"sourcesContent":["import type {\n AddressSuggestion,\n InformationType,\n RequestedFieldKey,\n SelectOption,\n} from \"../types/userInputForm\";\n\nconst days = Array.from({ length: 31 }, (_, index) => index + 1);\nconst currentYear = new Date().getFullYear();\nconst years = Array.from({ length: 120 }, (_, index) => currentYear - index);\n\nconst monthLabels = [\n \"Janvier\",\n \"Février\",\n \"Mars\",\n \"Avril\",\n \"Mai\",\n \"Juin\",\n \"Juillet\",\n \"Août\",\n \"Septembre\",\n \"Octobre\",\n \"Novembre\",\n \"Décembre\",\n];\n\nexport const DAY_OPTIONS: SelectOption[] = days.map((value) => ({\n value: String(value).padStart(2, \"0\"),\n label: String(value).padStart(2, \"0\"),\n}));\n\nexport const MONTH_OPTIONS: SelectOption[] = monthLabels.map(\n (label, index) => ({\n value: String(index + 1).padStart(2, \"0\"),\n label,\n })\n);\n\nexport const YEAR_OPTIONS: SelectOption[] = years.map((value) => ({\n value: String(value),\n label: String(value),\n}));\n\n\nexport const ADDRESS_SUGGESTIONS: string[] = [\n \"10 Rue de Rivoli, 75001 Paris, France\",\n \"221B Baker Street, NW1 6XE Londres, Royaume-Uni\",\n \"1600 Amphitheatre Parkway, 94043 Mountain View, États-Unis\",\n \"55 Rue du Faubourg Saint-Honoré, 75008 Paris, France\",\n \"1 Place du Commerce, 44000 Nantes, France\",\n \"Piazza del Colosseo 1, 00184 Rome, Italie\",\n \"Av. Paulista 1578, 01310-200 São Paulo, Brésil\",\n];\n\nexport const DEFAULT_FIELDS: Record<InformationType, RequestedFieldKey[]> = {\n identity: [\"nom\", \"prenom\", \"date_naissance\"],\n \"identity-legal\": [\"nom\", \"siret\", \"tva\", \"adresse\"],\n contact: [\"email\", \"sms\"],\n address: [\"adresse\"],\n nationality: [\"nationalite\"],\n custom: [], // Custom forms use customFields instead\n};\n\nexport const FIELD_LABELS: Record<RequestedFieldKey, string> = {\n nom: \"user_input_form.fields.last_name\",\n prenom: \"user_input_form.fields.first_name\",\n date_naissance: \"user_input_form.fields.birth_date\",\n email: \"user_input_form.fields.email\",\n sms: \"user_input_form.fields.phone\",\n adresse: \"user_input_form.fields.address_line1\",\n nationalite: \"user_input_form.fields.nationality\",\n company: \"user_input_form.fields.company_name\",\n siret: \"user_input_form.fields.siret\",\n tva: \"user_input_form.fields.vat_number\",\n};\n\n// Backend endpoint pour l'autocomplétion d'adresses (sécurisé)\nexport const GEOCODING_AUTOCOMPLETE_ENDPOINT = \"/geocoding/autocomplete\";\n\nexport const FALLBACK_ADDRESS_SUGGESTIONS: AddressSuggestion[] =\n ADDRESS_SUGGESTIONS.map((label, index) => ({\n id: `fallback-${index}`,\n label,\n addressLine1: label,\n postalCode: \"\",\n city: \"\",\n country: \"\",\n }));\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var tslib_es6 = require('../node_modules/tslib/tslib.es6.js');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var country_iso2_fr = require('../i18n/country/country.iso2.fr.json.js');
|
|
6
|
+
var useI18n = require('./useI18n.js');
|
|
7
|
+
|
|
8
|
+
var ISO_CODES = Object.keys(country_iso2_fr.default);
|
|
9
|
+
var useCountryOptions = function (placeholderKey) {
|
|
10
|
+
var _a = useI18n.useI18n(), t = _a.t, currentLanguage = _a.currentLanguage;
|
|
11
|
+
return React.useMemo(function () {
|
|
12
|
+
var countries = ISO_CODES.filter(function (code) { return code !== "EU"; })
|
|
13
|
+
.map(function (code) { return ({ value: code, label: t(code) }); })
|
|
14
|
+
.sort(function (a, b) { return a.label.localeCompare(b.label, currentLanguage); });
|
|
15
|
+
return tslib_es6.__spreadArray([{ value: "", label: t(placeholderKey) }], countries, true);
|
|
16
|
+
}, [t, currentLanguage, placeholderKey]);
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
exports.useCountryOptions = useCountryOptions;
|
|
20
|
+
//# sourceMappingURL=useCountryOptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCountryOptions.js","sources":["../../../../src/hooks/useCountryOptions.ts"],"sourcesContent":["import { useMemo } from \"react\";\nimport countryISO from \"../i18n/country/country.iso2.fr.json\";\nimport { useI18n } from \"./useI18n\";\nimport type { SelectOption } from \"../types/userInputForm\";\n\nconst ISO_CODES = Object.keys(countryISO);\n\nexport const useCountryOptions = (placeholderKey: string): SelectOption[] => {\n const { t, currentLanguage } = useI18n();\n\n return useMemo(() => {\n const countries = ISO_CODES.filter((code) => code !== \"EU\")\n .map((code) => ({ value: code, label: t(code) }))\n .sort((a, b) => a.label.localeCompare(b.label, currentLanguage));\n\n return [{ value: \"\", label: t(placeholderKey) }, ...countries];\n }, [t, currentLanguage, placeholderKey]);\n};\n"],"names":["countryISO","useI18n","useMemo","__spreadArray"],"mappings":";;;;;;;AAKA,IAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAACA,uBAAU,CAAC;AAElC,IAAM,iBAAiB,GAAG,UAAC,cAAsB,EAAA;IAChD,IAAA,EAAA,GAAyBC,eAAO,EAAE,EAAhC,CAAC,GAAA,EAAA,CAAA,CAAA,EAAE,eAAe,GAAA,EAAA,CAAA,eAAc;AAExC,IAAA,OAAOC,aAAO,CAAC,YAAA;AACb,QAAA,IAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,UAAC,IAAI,EAAA,EAAK,OAAA,IAAI,KAAK,IAAI,CAAA,CAAb,CAAa;aACvD,GAAG,CAAC,UAAC,IAAI,EAAA,EAAK,QAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAC,CAAjC,CAAiC;aAC/C,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,EAAA,EAAK,OAAA,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,EAAE,eAAe,CAAC,CAAA,CAA/C,CAA+C,CAAC;AAElE,QAAA,OAAAC,uBAAA,CAAA,CAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,cAAc,CAAC,EAAE,CAAA,EAAK,SAAS,EAAA,IAAA,CAAA;IAC/D,CAAC,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;AAC1C;;;;"}
|
|
@@ -178,7 +178,7 @@ var YE = "Yémen";
|
|
|
178
178
|
var ZM = "Zambie";
|
|
179
179
|
var ZW = "Zimbabwe";
|
|
180
180
|
var EU = "Europe (UE)";
|
|
181
|
-
var
|
|
181
|
+
var countryISO = {
|
|
182
182
|
AF: AF,
|
|
183
183
|
ZA: ZA,
|
|
184
184
|
AL: AL,
|
|
@@ -533,5 +533,5 @@ exports.YE = YE;
|
|
|
533
533
|
exports.ZA = ZA;
|
|
534
534
|
exports.ZM = ZM;
|
|
535
535
|
exports.ZW = ZW;
|
|
536
|
-
exports.default =
|
|
536
|
+
exports.default = countryISO;
|
|
537
537
|
//# sourceMappingURL=country.iso2.fr.json.js.map
|
|
@@ -88,7 +88,7 @@ var getDocumentTemplateId = function (params) {
|
|
|
88
88
|
var normalizedCountry = countryCode === null || countryCode === void 0 ? void 0 : countryCode.toUpperCase();
|
|
89
89
|
var resolvedType = resolveDocumentType(documentId);
|
|
90
90
|
var documents = (_a = acceptedCountries === null || acceptedCountries === void 0 ? void 0 : acceptedCountries.find(function (country) { var _a; return ((_a = country.code) === null || _a === void 0 ? void 0 : _a.toUpperCase()) === normalizedCountry; })) === null || _a === void 0 ? void 0 : _a.documents;
|
|
91
|
-
if (resolvedType && ((_b = documents === null || documents === void 0 ? void 0 : documents[resolvedType]) === null || _b === void 0 ? void 0 : _b.length) && (documents === null || documents === void 0 ? void 0 : documents[resolvedType][0]) != "INT") {
|
|
91
|
+
if (resolvedType && ((_b = documents === null || documents === void 0 ? void 0 : documents[resolvedType]) === null || _b === void 0 ? void 0 : _b.length) && (documents === null || documents === void 0 ? void 0 : documents[resolvedType][0]) != "INT" && (documents === null || documents === void 0 ? void 0 : documents[resolvedType][0]) != "EU") {
|
|
92
92
|
// Special case for France pink driving license (1989 format)
|
|
93
93
|
var docName = (_d = (_c = documentTemplates === null || documentTemplates === void 0 ? void 0 : documentTemplates.data) === null || _c === void 0 ? void 0 : _c.find(function (tpl) { return tpl.id === documents[resolvedType][0]; })) === null || _d === void 0 ? void 0 : _d.name;
|
|
94
94
|
if (normalizedCountry === "FR" && resolvedType === "driverLicense" && docName === "france_driving_license_1989" && documents[resolvedType][1]) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documentTemplate.js","sources":["../../../../src/services/documentTemplate.ts"],"sourcesContent":["import { apiService } from \"./api\";\nimport type { AcceptedCountry } from \"../types/session\";\n\nexport interface DocumentTemplate {\n id: string;\n name: string;\n countryCode: string;\n acceptedFormats: string[];\n maxFiles: number;\n minFiles: number;\n maxPages: number;\n maxSize: number;\n sides: string;\n}\n\nexport interface FetchedDocumentTemplates {\n status: number;\n message: string;\n data: DocumentTemplate[];\n}\n\nconst DOCUMENT_ID_TO_TYPE: Record<string, keyof AcceptedCountry[\"documents\"]> = {\n passport: \"passport\",\n \"jdi-3\": \"passport\",\n idcard: \"idCard\",\n idCard: \"idCard\",\n \"jdi-2\": \"idCard\",\n driverlicense: \"driverLicense\",\n driverLicense: \"driverLicense\",\n \"jdi-4\": \"driverLicense\",\n residencepermit: \"residencePermit\",\n residencePermit: \"residencePermit\",\n \"jdi-5\": \"residencePermit\",\n pinkdriverlicense: \"pinkDriverLicense\",\n pinkDriverLicense: \"pinkDriverLicense\",\n};\n\n\n/**\n * Retrieves the document type key for API requests based on the document type.\n * \n * @param docType - The document type from the AcceptedCountry documents\n * @returns The corresponding document type key string used in API requests\n * \n * @example\n * ```typescript\n * getDocTypeKey('passport') // returns 'passport'\n * getDocTypeKey('idCard') // returns 'id_card'\n * getDocTypeKey('driverLicense') // returns 'driving_license'\n * ```\n */\nexport const getDocTypeKey = (docType: keyof AcceptedCountry[\"documents\"]): string => {\n switch (docType) {\n case \"passport\":\n return \"passport\";\n case \"idCard\":\n return \"id_card\";\n case \"residencePermit\":\n return \"residency_permit\";\n case \"driverLicense\":\n return \"driving_license\";\n case \"pinkDriverLicense\":\n return \"driving_license_1989\";\n default:\n return String(docType).toLowerCase();\n }\n};\n\n\n\n/**\n * Resolves a document ID string to its corresponding document type.\n * Performs case-insensitive matching against the DOCUMENT_ID_TO_TYPE mapping.\n * \n * @param documentId - The document identifier to resolve\n * @returns The resolved document type or undefined if no match is found\n * \n * @internal\n */\nconst resolveDocumentType = (documentId: string): keyof AcceptedCountry[\"documents\"] | undefined => {\n return DOCUMENT_ID_TO_TYPE[documentId] ?? DOCUMENT_ID_TO_TYPE[documentId.toLowerCase()];\n};\n\n\n/**\n * Retrieves the document template ID for a specific country and document type.\n * First attempts to find the template ID from acceptedCountries data.\n * If not found, falls back to searching through documentTemplates by matching country code and template name.\n * \n * @param params - Configuration object\n * @param params.countryCode - The ISO country code (case-insensitive)\n * @param params.documentId - The document type identifier\n * @param params.acceptedCountries - Optional array of accepted countries with their document configurations\n * @param params.documentTemplates - Optional fetched document templates to search through\n * @returns The document template ID if found, otherwise undefined\n * \n * @example\n * ```typescript\n * const templateId = getDocumentTemplateId({\n * countryCode: 'FR',\n * documentId: 'passport',\n * acceptedCountries: countries,\n * documentTemplates: templates\n * });\n * ```\n */\nexport const getDocumentTemplateId = (params: {\n countryCode: string;\n documentId: string;\n acceptedCountries?: AcceptedCountry[];\n documentTemplates?: FetchedDocumentTemplates;\n}): string | undefined => {\n const { countryCode, documentId, acceptedCountries, documentTemplates } = params;\n const normalizedCountry = countryCode?.toUpperCase();\n const resolvedType = resolveDocumentType(documentId);\n\n const documents = acceptedCountries?.find(\n (country) => country.code?.toUpperCase() === normalizedCountry\n )?.documents;\n\n if (resolvedType && documents?.[resolvedType]?.length && documents?.[resolvedType][0] != \"INT\") {\n // Special case for France pink driving license (1989 format)\n const docName = documentTemplates?.data?.find(tpl => tpl.id === documents[resolvedType][0])?.name;\n if (normalizedCountry === \"FR\" && resolvedType === \"driverLicense\" && docName === \"france_driving_license_1989\" && documents[resolvedType][1]) {\n return documents[resolvedType][1];\n }\n return documents[resolvedType][0];\n }\n\n if (!resolvedType) {\n return undefined;\n }\n\n const templateKey = getDocTypeKey(resolvedType).toLowerCase();\n const matchedTemplate = documentTemplates?.data?.findLast((tpl) => {\n return (\n tpl.countryCode === normalizedCountry &&\n (tpl.name?.toLowerCase() || \"\").includes(templateKey)\n );\n });\n\n return matchedTemplate?.id;\n};\n\n\n/**\n * Fetches all document templates from the API with optional filtering.\n * \n * @param params - Optional configuration object for filtering results\n * @param params.type - Filter templates by document type\n * @param params.tags - Filter templates by tags array\n * @returns Promise resolving to fetched document templates data\n * @throws {Error} Throws an error if the API request fails\n * \n * @example\n * ```typescript\n * // Fetch all templates\n * const allTemplates = await getAllDocumentTemplates();\n * \n * // Fetch templates with filters\n * const filteredTemplates = await getAllDocumentTemplates({\n * type: 'proof_of_identity',\n * tags: ['biometric', 'eu']\n * });\n * ```\n */\nexport const getAllDocumentTemplates = async (params?: {\n type?: string;\n tags?: string[];\n}): Promise<FetchedDocumentTemplates> => {\n const query = new URLSearchParams();\n if (params?.type) query.append(\"type\", params.type);\n if (params?.tags && params.tags.length > 0) {\n params.tags.forEach((tag) => query.append(\"tags\", tag));\n }\n\n const url = \"document/get-all-document-templates\";\n const response = await apiService.get<FetchedDocumentTemplates>(\n `${url}?${query.toString()}`\n );\n if (!response.success) {\n throw new Error(\"Failed to fetch document templates\");\n }\n return response.data;\n};\n"],"names":["__awaiter","apiService"],"mappings":";;;;;AAqBA,IAAM,mBAAmB,GAAuD;AAC9E,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,OAAO,EAAE,UAAU;AACnB,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,OAAO,EAAE,QAAQ;AACjB,IAAA,aAAa,EAAE,eAAe;AAC9B,IAAA,aAAa,EAAE,eAAe;AAC9B,IAAA,OAAO,EAAE,eAAe;AACxB,IAAA,eAAe,EAAE,iBAAiB;AAClC,IAAA,eAAe,EAAE,iBAAiB;AAClC,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,iBAAiB,EAAE,mBAAmB;AACtC,IAAA,iBAAiB,EAAE,mBAAmB;CACvC;AAGD;;;;;;;;;;;;AAYG;AACI,IAAM,aAAa,GAAG,UAAC,OAA2C,EAAA;IACvE,QAAQ,OAAO;AACb,QAAA,KAAK,UAAU;AACb,YAAA,OAAO,UAAU;AACnB,QAAA,KAAK,QAAQ;AACX,YAAA,OAAO,SAAS;AAClB,QAAA,KAAK,iBAAiB;AACpB,YAAA,OAAO,kBAAkB;AAC3B,QAAA,KAAK,eAAe;AAClB,YAAA,OAAO,iBAAiB;AAC1B,QAAA,KAAK,mBAAmB;AACtB,YAAA,OAAO,sBAAsB;AAC/B,QAAA;AACE,YAAA,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE;;AAE1C;AAIA;;;;;;;;AAQG;AACH,IAAM,mBAAmB,GAAG,UAAC,UAAkB,EAAA;;AAC7C,IAAA,OAAO,CAAA,EAAA,GAAA,mBAAmB,CAAC,UAAU,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,mBAAmB,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;AACzF,CAAC;AAGD;;;;;;;;;;;;;;;;;;;;;AAqBG;AACI,IAAM,qBAAqB,GAAG,UAAC,MAKrC,EAAA;;AACS,IAAA,IAAA,WAAW,GAAuD,MAAM,YAA7D,EAAE,UAAU,GAA2C,MAAM,CAAA,UAAjD,EAAE,iBAAiB,GAAwB,MAAM,CAAA,iBAA9B,EAAE,iBAAiB,GAAK,MAAM,kBAAX;IACrE,IAAM,iBAAiB,GAAG,WAAW,KAAA,IAAA,IAAX,WAAW,uBAAX,WAAW,CAAE,WAAW,EAAE;AACpD,IAAA,IAAM,YAAY,GAAG,mBAAmB,CAAC,UAAU,CAAC;AAEpD,IAAA,IAAM,SAAS,GAAG,CAAA,EAAA,GAAA,iBAAiB,KAAA,IAAA,IAAjB,iBAAiB,KAAA,MAAA,GAAA,MAAA,GAAjB,iBAAiB,CAAE,IAAI,CACvC,UAAC,OAAO,EAAA,EAAA,IAAA,EAAA,CAAA,CAAK,OAAA,CAAA,CAAA,EAAA,GAAA,OAAO,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,WAAW,EAAE,MAAK,iBAAiB,CAAA,CAAA,CAAA,CAC/D,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,SAAS;AAEZ,IAAA,IAAI,YAAY,KAAI,CAAA,EAAA,GAAA,SAAS,KAAA,IAAA,IAAT,SAAS,KAAA,MAAA,GAAA,MAAA,GAAT,SAAS,CAAG,YAAY,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,MAAM,CAAA,IAAI,CAAA,SAAS,KAAA,IAAA,IAAT,SAAS,KAAA,MAAA,GAAA,MAAA,GAAT,SAAS,CAAG,YAAY,CAAA,CAAE,CAAC,CAAC,KAAI,KAAK,EAAE;;AAE9F,QAAA,IAAM,OAAO,GAAG,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,iBAAiB,KAAA,IAAA,IAAjB,iBAAiB,KAAA,MAAA,GAAA,MAAA,GAAjB,iBAAiB,CAAE,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,IAAI,CAAC,UAAA,GAAG,EAAA,EAAI,OAAA,GAAG,CAAC,EAAE,KAAK,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA,CAArC,CAAqC,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,IAAI;QACjG,IAAI,iBAAiB,KAAK,IAAI,IAAI,YAAY,KAAK,eAAe,IAAI,OAAO,KAAK,6BAA6B,IAAI,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE;AAC7I,YAAA,OAAO,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACnC;AACA,QAAA,OAAO,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACnC;IAEA,IAAI,CAAC,YAAY,EAAE;AACjB,QAAA,OAAO,SAAS;IAClB;IAEA,IAAM,WAAW,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE;AAC7D,IAAA,IAAM,eAAe,GAAG,CAAA,EAAA,GAAA,iBAAiB,aAAjB,iBAAiB,KAAA,MAAA,GAAA,MAAA,GAAjB,iBAAiB,CAAE,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,QAAQ,CAAC,UAAC,GAAG,EAAA;;AAC5D,QAAA,QACE,GAAG,CAAC,WAAW,KAAK,iBAAiB;AACrC,YAAA,CAAC,CAAA,CAAA,EAAA,GAAA,GAAG,CAAC,IAAI,0CAAE,WAAW,EAAE,KAAI,EAAE,EAAE,QAAQ,CAAC,WAAW,CAAC;AAEzD,IAAA,CAAC,CAAC;AAEF,IAAA,OAAO,eAAe,KAAA,IAAA,IAAf,eAAe,uBAAf,eAAe,CAAE,EAAE;AAC5B;AAGA;;;;;;;;;;;;;;;;;;;;AAoBG;AACI,IAAM,uBAAuB,GAAG,UAAO,MAG7C,EAAA,EAAA,OAAAA,mBAAA,CAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,YAAA;;;;;AACO,gBAAA,KAAK,GAAG,IAAI,eAAe,EAAE;gBAM7B,GAAG,GAAG,qCAAqC;AAChC,gBAAA,OAAA,CAAA,CAAA,YAAMC,cAAU,CAAC,GAAG,CACnC,EAAA,CAAA,MAAA,CAAG,GAAG,EAAA,GAAA,CAAA,CAAA,MAAA,CAAI,KAAK,CAAC,QAAQ,EAAE,CAAE,CAC7B,CAAA;;AAFK,gBAAA,QAAQ,GAAG,EAAA,CAAA,IAAA,EAEhB;AACD,gBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;AACrB,oBAAA,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC;gBACvD;gBACA,OAAA,CAAA,CAAA,aAAO,QAAQ,CAAC,IAAI,CAAA;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"documentTemplate.js","sources":["../../../../src/services/documentTemplate.ts"],"sourcesContent":["import { apiService } from \"./api\";\nimport type { AcceptedCountry } from \"../types/session\";\n\nexport interface DocumentTemplate {\n id: string;\n name: string;\n countryCode: string;\n acceptedFormats: string[];\n maxFiles: number;\n minFiles: number;\n maxPages: number;\n maxSize: number;\n sides: string;\n}\n\nexport interface FetchedDocumentTemplates {\n status: number;\n message: string;\n data: DocumentTemplate[];\n}\n\nconst DOCUMENT_ID_TO_TYPE: Record<string, keyof AcceptedCountry[\"documents\"]> = {\n passport: \"passport\",\n \"jdi-3\": \"passport\",\n idcard: \"idCard\",\n idCard: \"idCard\",\n \"jdi-2\": \"idCard\",\n driverlicense: \"driverLicense\",\n driverLicense: \"driverLicense\",\n \"jdi-4\": \"driverLicense\",\n residencepermit: \"residencePermit\",\n residencePermit: \"residencePermit\",\n \"jdi-5\": \"residencePermit\",\n pinkdriverlicense: \"pinkDriverLicense\",\n pinkDriverLicense: \"pinkDriverLicense\",\n};\n\n\n/**\n * Retrieves the document type key for API requests based on the document type.\n * \n * @param docType - The document type from the AcceptedCountry documents\n * @returns The corresponding document type key string used in API requests\n * \n * @example\n * ```typescript\n * getDocTypeKey('passport') // returns 'passport'\n * getDocTypeKey('idCard') // returns 'id_card'\n * getDocTypeKey('driverLicense') // returns 'driving_license'\n * ```\n */\nexport const getDocTypeKey = (docType: keyof AcceptedCountry[\"documents\"]): string => {\n switch (docType) {\n case \"passport\":\n return \"passport\";\n case \"idCard\":\n return \"id_card\";\n case \"residencePermit\":\n return \"residency_permit\";\n case \"driverLicense\":\n return \"driving_license\";\n case \"pinkDriverLicense\":\n return \"driving_license_1989\";\n default:\n return String(docType).toLowerCase();\n }\n};\n\n\n\n/**\n * Resolves a document ID string to its corresponding document type.\n * Performs case-insensitive matching against the DOCUMENT_ID_TO_TYPE mapping.\n * \n * @param documentId - The document identifier to resolve\n * @returns The resolved document type or undefined if no match is found\n * \n * @internal\n */\nconst resolveDocumentType = (documentId: string): keyof AcceptedCountry[\"documents\"] | undefined => {\n return DOCUMENT_ID_TO_TYPE[documentId] ?? DOCUMENT_ID_TO_TYPE[documentId.toLowerCase()];\n};\n\n\n/**\n * Retrieves the document template ID for a specific country and document type.\n * First attempts to find the template ID from acceptedCountries data.\n * If not found, falls back to searching through documentTemplates by matching country code and template name.\n * \n * @param params - Configuration object\n * @param params.countryCode - The ISO country code (case-insensitive)\n * @param params.documentId - The document type identifier\n * @param params.acceptedCountries - Optional array of accepted countries with their document configurations\n * @param params.documentTemplates - Optional fetched document templates to search through\n * @returns The document template ID if found, otherwise undefined\n * \n * @example\n * ```typescript\n * const templateId = getDocumentTemplateId({\n * countryCode: 'FR',\n * documentId: 'passport',\n * acceptedCountries: countries,\n * documentTemplates: templates\n * });\n * ```\n */\nexport const getDocumentTemplateId = (params: {\n countryCode: string;\n documentId: string;\n acceptedCountries?: AcceptedCountry[];\n documentTemplates?: FetchedDocumentTemplates;\n}): string | undefined => {\n const { countryCode, documentId, acceptedCountries, documentTemplates } = params;\n const normalizedCountry = countryCode?.toUpperCase();\n const resolvedType = resolveDocumentType(documentId);\n\n const documents = acceptedCountries?.find(\n (country) => country.code?.toUpperCase() === normalizedCountry\n )?.documents;\n\n if (resolvedType && documents?.[resolvedType]?.length && documents?.[resolvedType][0] != \"INT\" && documents?.[resolvedType][0] != \"EU\") {\n // Special case for France pink driving license (1989 format)\n const docName = documentTemplates?.data?.find(tpl => tpl.id === documents[resolvedType][0])?.name;\n if (normalizedCountry === \"FR\" && resolvedType === \"driverLicense\" && docName === \"france_driving_license_1989\" && documents[resolvedType][1]) {\n return documents[resolvedType][1];\n }\n return documents[resolvedType][0];\n }\n\n if (!resolvedType) {\n return undefined;\n }\n\n const templateKey = getDocTypeKey(resolvedType).toLowerCase();\n const matchedTemplate = documentTemplates?.data?.findLast((tpl) => {\n return (\n tpl.countryCode === normalizedCountry &&\n (tpl.name?.toLowerCase() || \"\").includes(templateKey)\n );\n });\n\n return matchedTemplate?.id;\n};\n\n\n/**\n * Fetches all document templates from the API with optional filtering.\n * \n * @param params - Optional configuration object for filtering results\n * @param params.type - Filter templates by document type\n * @param params.tags - Filter templates by tags array\n * @returns Promise resolving to fetched document templates data\n * @throws {Error} Throws an error if the API request fails\n * \n * @example\n * ```typescript\n * // Fetch all templates\n * const allTemplates = await getAllDocumentTemplates();\n * \n * // Fetch templates with filters\n * const filteredTemplates = await getAllDocumentTemplates({\n * type: 'proof_of_identity',\n * tags: ['biometric', 'eu']\n * });\n * ```\n */\nexport const getAllDocumentTemplates = async (params?: {\n type?: string;\n tags?: string[];\n}): Promise<FetchedDocumentTemplates> => {\n const query = new URLSearchParams();\n if (params?.type) query.append(\"type\", params.type);\n if (params?.tags && params.tags.length > 0) {\n params.tags.forEach((tag) => query.append(\"tags\", tag));\n }\n\n const url = \"document/get-all-document-templates\";\n const response = await apiService.get<FetchedDocumentTemplates>(\n `${url}?${query.toString()}`\n );\n if (!response.success) {\n throw new Error(\"Failed to fetch document templates\");\n }\n return response.data;\n};\n"],"names":["__awaiter","apiService"],"mappings":"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"}
|
|
@@ -1,22 +1,14 @@
|
|
|
1
|
-
import { __spreadArray, __assign } from '../../../node_modules/tslib/tslib.es6.js';
|
|
2
1
|
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
3
|
-
import { useMemo } from 'react';
|
|
4
2
|
import * as Label from '@radix-ui/react-label';
|
|
5
3
|
import clsx from 'clsx';
|
|
6
4
|
import { Select } from '../../ui/SelectComponent.js';
|
|
7
|
-
import { COUNTRY_OPTIONS } from '../../../constants/userInputForm.js';
|
|
8
5
|
import { useI18n } from '../../../hooks/useI18n.js';
|
|
6
|
+
import { useCountryOptions } from '../../../hooks/useCountryOptions.js';
|
|
9
7
|
|
|
10
8
|
var AddressFields = function (_a) {
|
|
11
9
|
var form = _a.form, errors = _a.errors, requestedFields = _a.requestedFields, addressSuggestions = _a.addressSuggestions, showSuggestions = _a.showSuggestions, onFieldChange = _a.onFieldChange, onAddressChange = _a.onAddressChange, onAddressFocus = _a.onAddressFocus, onAddressBlur = _a.onAddressBlur, onApplySuggestion = _a.onApplySuggestion;
|
|
12
10
|
var t = useI18n().t;
|
|
13
|
-
var countryOptions =
|
|
14
|
-
if (COUNTRY_OPTIONS.length === 0) {
|
|
15
|
-
return COUNTRY_OPTIONS;
|
|
16
|
-
}
|
|
17
|
-
var first = COUNTRY_OPTIONS[0], rest = COUNTRY_OPTIONS.slice(1);
|
|
18
|
-
return __spreadArray([__assign(__assign({}, first), { label: t("user_input_form.select.country") })], rest, true);
|
|
19
|
-
}, [t]);
|
|
11
|
+
var countryOptions = useCountryOptions("user_input_form.select.country");
|
|
20
12
|
if (!requestedFields.has("adresse")) {
|
|
21
13
|
return null;
|
|
22
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddressFields.js","sources":["../../../../../../src/components/session/UserInputForm/AddressFields.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport * as Label from \"@radix-ui/react-label\";\nimport clsx from \"clsx\";\nimport { Select } from \"../../ui/SelectComponent\";\nimport { COUNTRY_OPTIONS } from \"../../../constants/userInputForm\";\nimport type {\n AddressSuggestion,\n RequestedFields,\n UserInputFormErrors,\n UserInputFormState,\n} from \"../../../types/userInputForm\";\nimport { useI18n } from \"../../../hooks/useI18n\";\n\ninterface AddressFieldsProps {\n form: UserInputFormState;\n errors: UserInputFormErrors;\n requestedFields: RequestedFields;\n addressSuggestions: AddressSuggestion[];\n showSuggestions: boolean;\n onFieldChange: (key: keyof UserInputFormState, value: string) => void;\n onAddressChange: (value: string) => void;\n onAddressFocus: () => void;\n onAddressBlur: () => void;\n onApplySuggestion: (suggestion: AddressSuggestion) => void;\n}\n\nconst AddressFields = ({\n form,\n errors,\n requestedFields,\n addressSuggestions,\n showSuggestions,\n onFieldChange,\n onAddressChange,\n onAddressFocus,\n onAddressBlur,\n onApplySuggestion,\n}: AddressFieldsProps) => {\n const { t } = useI18n();\n\n const countryOptions = useMemo(() => {\n if (COUNTRY_OPTIONS.length === 0) {\n return COUNTRY_OPTIONS;\n }\n\n const [first, ...rest] = COUNTRY_OPTIONS;\n return [{ ...first, label: t(\"user_input_form.select.country\") }, ...rest];\n }, [t]);\n\n if (!requestedFields.has(\"adresse\")) {\n return null;\n }\n\n return (\n <>\n <div className=\"relative space-y-2\">\n <Label.Root\n htmlFor=\"addressLine1\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\"user_input_form.fields.address_line1\")}\n </Label.Root>\n <input\n id=\"addressLine1\"\n type=\"text\"\n value={form.addressLine1 || \"\"}\n onChange={(event) => onAddressChange(event.target.value)}\n onFocus={onAddressFocus}\n onBlur={onAddressBlur}\n placeholder={t(\"user_input_form.placeholders.address_line1\")}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.addressLine1\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover:border-gray-400\"\n )}\n autoComplete=\"street-address\"\n />\n {showSuggestions && addressSuggestions.length > 0 && (\n <div className=\"absolute z-20 mt-1 max-h-48 w-full overflow-auto rounded-lg border border-gray-200 bg-white shadow-lg\">\n {addressSuggestions.map((suggestion) => (\n <button\n key={suggestion.id}\n type=\"button\"\n className=\"w-full px-3 py-2 text-left text-sm hover:bg-gray-100\"\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => onApplySuggestion(suggestion)}\n >\n <div className=\"flex flex-col\">\n <span className=\"text-sm text-gray-900\">\n {suggestion.label}\n </span>\n {(suggestion.city ||\n suggestion.postalCode ||\n suggestion.country ||\n suggestion.countryCode) && (\n <span className=\"text-xs text-gray-500\">\n {[\n [suggestion.postalCode, suggestion.city]\n .filter(Boolean)\n .join(\" \"),\n suggestion.country ||\n suggestion.countryCode?.toUpperCase(),\n ]\n .filter(Boolean)\n .join(\", \")}\n </span>\n )}\n </div>\n </button>\n ))}\n </div>\n )}\n {errors.addressLine1 && (\n <p className=\"flex items-center gap-1 text-sm text-red-600\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.address_line1_required\")}\n </p>\n )}\n </div>\n\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"addressLine2\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\"user_input_form.fields.address_line2\")}\n </Label.Root>\n <input\n id=\"addressLine2\"\n type=\"text\"\n value={form.addressLine2 || \"\"}\n onChange={(event) =>\n onFieldChange(\"addressLine2\", event.target.value)\n }\n placeholder={t(\"user_input_form.placeholders.address_line2\")}\n className=\"w-full rounded-lg border border-gray-300 px-3 py-3 text-base transition-colors hover:border-gray-400 focus:border-transparent focus:outline-none focus:ring-2 focus:ring-[#11E5C5]\"\n autoComplete=\"address-line2\"\n />\n </div>\n\n <div className=\"grid grid-cols-[140px_minmax(0,1fr)] gap-3 md:grid-cols-[160px_minmax(0,1fr)]\">\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"postalCode\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\"user_input_form.fields.postal_code\")}\n </Label.Root>\n <input\n id=\"postalCode\"\n type=\"text\"\n value={form.postalCode || \"\"}\n onChange={(event) =>\n onFieldChange(\"postalCode\", event.target.value)\n }\n placeholder={t(\"user_input_form.placeholders.postal_code\")}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.postalCode\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover-border-gray-400\"\n )}\n autoComplete=\"postal-code\"\n />\n {errors.postalCode && (\n <p className=\"flex items-center gap-1 text-sm text-red-600\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.postal_code_required\")}\n </p>\n )}\n </div>\n\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"city\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\"user_input_form.fields.city\")}\n </Label.Root>\n <input\n id=\"city\"\n type=\"text\"\n value={form.city || \"\"}\n onChange={(event) => onFieldChange(\"city\", event.target.value)}\n placeholder={t(\"user_input_form.placeholders.city\")}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.city\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover-border-gray-400\"\n )}\n autoComplete=\"address-level2\"\n />\n {errors.city && (\n <p className=\"flex items-center gap-1 text-sm text-red-600\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.city_required\")}\n </p>\n )}\n </div>\n </div>\n\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"country\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\"user_input_form.fields.country\")}\n </Label.Root>\n <Select\n options={countryOptions}\n value={form.countryCode || \"\"}\n onValueChange={(value) => onFieldChange(\"countryCode\", value)}\n placeholder={t(\"user_input_form.select.country\")}\n error={Boolean(errors.country)}\n />\n {errors.country && (\n <p className=\"flex items-center gap-1 text-sm text-red-600\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.country_required\")}\n </p>\n )}\n </div>\n </>\n );\n};\n\nexport default AddressFields;\n"],"names":["_jsxs","_Fragment","_jsx"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AddressFields.js","sources":["../../../../../../src/components/session/UserInputForm/AddressFields.tsx"],"sourcesContent":["import * as Label from \"@radix-ui/react-label\";\nimport clsx from \"clsx\";\nimport { Select } from \"../../ui/SelectComponent\";\nimport type {\n AddressSuggestion,\n RequestedFields,\n UserInputFormErrors,\n UserInputFormState,\n} from \"../../../types/userInputForm\";\nimport { useI18n } from \"../../../hooks/useI18n\";\nimport { useCountryOptions } from \"../../../hooks/useCountryOptions\";\n\ninterface AddressFieldsProps {\n form: UserInputFormState;\n errors: UserInputFormErrors;\n requestedFields: RequestedFields;\n addressSuggestions: AddressSuggestion[];\n showSuggestions: boolean;\n onFieldChange: (key: keyof UserInputFormState, value: string) => void;\n onAddressChange: (value: string) => void;\n onAddressFocus: () => void;\n onAddressBlur: () => void;\n onApplySuggestion: (suggestion: AddressSuggestion) => void;\n}\n\nconst AddressFields = ({\n form,\n errors,\n requestedFields,\n addressSuggestions,\n showSuggestions,\n onFieldChange,\n onAddressChange,\n onAddressFocus,\n onAddressBlur,\n onApplySuggestion,\n}: AddressFieldsProps) => {\n const { t } = useI18n();\n const countryOptions = useCountryOptions(\"user_input_form.select.country\");\n\n if (!requestedFields.has(\"adresse\")) {\n return null;\n }\n\n return (\n <>\n <div className=\"relative space-y-2\">\n <Label.Root\n htmlFor=\"addressLine1\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\"user_input_form.fields.address_line1\")}\n </Label.Root>\n <input\n id=\"addressLine1\"\n type=\"text\"\n value={form.addressLine1 || \"\"}\n onChange={(event) => onAddressChange(event.target.value)}\n onFocus={onAddressFocus}\n onBlur={onAddressBlur}\n placeholder={t(\"user_input_form.placeholders.address_line1\")}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.addressLine1\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover:border-gray-400\"\n )}\n autoComplete=\"street-address\"\n />\n {showSuggestions && addressSuggestions.length > 0 && (\n <div className=\"absolute z-20 mt-1 max-h-48 w-full overflow-auto rounded-lg border border-gray-200 bg-white shadow-lg\">\n {addressSuggestions.map((suggestion) => (\n <button\n key={suggestion.id}\n type=\"button\"\n className=\"w-full px-3 py-2 text-left text-sm hover:bg-gray-100\"\n onMouseDown={(event) => event.preventDefault()}\n onClick={() => onApplySuggestion(suggestion)}\n >\n <div className=\"flex flex-col\">\n <span className=\"text-sm text-gray-900\">\n {suggestion.label}\n </span>\n {(suggestion.city ||\n suggestion.postalCode ||\n suggestion.country ||\n suggestion.countryCode) && (\n <span className=\"text-xs text-gray-500\">\n {[\n [suggestion.postalCode, suggestion.city]\n .filter(Boolean)\n .join(\" \"),\n suggestion.country ||\n suggestion.countryCode?.toUpperCase(),\n ]\n .filter(Boolean)\n .join(\", \")}\n </span>\n )}\n </div>\n </button>\n ))}\n </div>\n )}\n {errors.addressLine1 && (\n <p className=\"flex items-center gap-1 text-sm text-red-600\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.address_line1_required\")}\n </p>\n )}\n </div>\n\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"addressLine2\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\"user_input_form.fields.address_line2\")}\n </Label.Root>\n <input\n id=\"addressLine2\"\n type=\"text\"\n value={form.addressLine2 || \"\"}\n onChange={(event) =>\n onFieldChange(\"addressLine2\", event.target.value)\n }\n placeholder={t(\"user_input_form.placeholders.address_line2\")}\n className=\"w-full rounded-lg border border-gray-300 px-3 py-3 text-base transition-colors hover:border-gray-400 focus:border-transparent focus:outline-none focus:ring-2 focus:ring-[#11E5C5]\"\n autoComplete=\"address-line2\"\n />\n </div>\n\n <div className=\"grid grid-cols-[140px_minmax(0,1fr)] gap-3 md:grid-cols-[160px_minmax(0,1fr)]\">\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"postalCode\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\"user_input_form.fields.postal_code\")}\n </Label.Root>\n <input\n id=\"postalCode\"\n type=\"text\"\n value={form.postalCode || \"\"}\n onChange={(event) =>\n onFieldChange(\"postalCode\", event.target.value)\n }\n placeholder={t(\"user_input_form.placeholders.postal_code\")}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.postalCode\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover-border-gray-400\"\n )}\n autoComplete=\"postal-code\"\n />\n {errors.postalCode && (\n <p className=\"flex items-center gap-1 text-sm text-red-600\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.postal_code_required\")}\n </p>\n )}\n </div>\n\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"city\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\"user_input_form.fields.city\")}\n </Label.Root>\n <input\n id=\"city\"\n type=\"text\"\n value={form.city || \"\"}\n onChange={(event) => onFieldChange(\"city\", event.target.value)}\n placeholder={t(\"user_input_form.placeholders.city\")}\n className={clsx(\n \"w-full px-3 py-3 md:py-4 border rounded-lg text-base transition-colors focus:outline-none focus:ring-2 focus:ring-[#11E5C5] focus:border-transparent\",\n errors.city\n ? \"border-red-500 bg-red-50\"\n : \"border-gray-300 hover-border-gray-400\"\n )}\n autoComplete=\"address-level2\"\n />\n {errors.city && (\n <p className=\"flex items-center gap-1 text-sm text-red-600\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.city_required\")}\n </p>\n )}\n </div>\n </div>\n\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"country\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(\"user_input_form.fields.country\")}\n </Label.Root>\n <Select\n options={countryOptions}\n value={form.countryCode || \"\"}\n onValueChange={(value) => onFieldChange(\"countryCode\", value)}\n placeholder={t(\"user_input_form.select.country\")}\n error={Boolean(errors.country)}\n />\n {errors.country && (\n <p className=\"flex items-center gap-1 text-sm text-red-600\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.country_required\")}\n </p>\n )}\n </div>\n </>\n );\n};\n\nexport default AddressFields;\n"],"names":["_jsxs","_Fragment","_jsx"],"mappings":"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"}
|
|
@@ -1,23 +1,14 @@
|
|
|
1
|
-
import { __spreadArray, __assign } from '../../../node_modules/tslib/tslib.es6.js';
|
|
2
1
|
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
3
|
-
import { useMemo } from 'react';
|
|
4
2
|
import * as Label from '@radix-ui/react-label';
|
|
5
3
|
import { Select } from '../../ui/SelectComponent.js';
|
|
6
|
-
import {
|
|
4
|
+
import { FIELD_LABELS } from '../../../constants/userInputForm.js';
|
|
7
5
|
import { useI18n } from '../../../hooks/useI18n.js';
|
|
6
|
+
import { useCountryOptions } from '../../../hooks/useCountryOptions.js';
|
|
8
7
|
|
|
9
8
|
var NationalityField = function (_a) {
|
|
10
9
|
var form = _a.form, errors = _a.errors, requestedFields = _a.requestedFields, onFieldChange = _a.onFieldChange;
|
|
11
10
|
var t = useI18n().t;
|
|
12
|
-
var countryOptions =
|
|
13
|
-
if (COUNTRY_OPTIONS.length === 0) {
|
|
14
|
-
return COUNTRY_OPTIONS;
|
|
15
|
-
}
|
|
16
|
-
var first = COUNTRY_OPTIONS[0], rest = COUNTRY_OPTIONS.slice(1);
|
|
17
|
-
return __spreadArray([
|
|
18
|
-
__assign(__assign({}, first), { label: t("user_input_form.select.nationality") })
|
|
19
|
-
], rest, true);
|
|
20
|
-
}, [t]);
|
|
11
|
+
var countryOptions = useCountryOptions("user_input_form.select.nationality");
|
|
21
12
|
if (!requestedFields.has("nationalite")) {
|
|
22
13
|
return null;
|
|
23
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NationalityField.js","sources":["../../../../../../src/components/session/UserInputForm/NationalityField.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"file":"NationalityField.js","sources":["../../../../../../src/components/session/UserInputForm/NationalityField.tsx"],"sourcesContent":["import * as Label from \"@radix-ui/react-label\";\nimport { Select } from \"../../ui/SelectComponent\";\nimport { FIELD_LABELS } from \"../../../constants/userInputForm\";\nimport type {\n RequestedFields,\n UserInputFormErrors,\n UserInputFormState,\n} from \"../../../types/userInputForm\";\nimport { useI18n } from \"../../../hooks/useI18n\";\nimport { useCountryOptions } from \"../../../hooks/useCountryOptions\";\n\ninterface NationalityFieldProps {\n form: UserInputFormState;\n errors: UserInputFormErrors;\n requestedFields: RequestedFields;\n onFieldChange: (key: keyof UserInputFormState, value: string) => void;\n}\n\nconst NationalityField = ({\n form,\n errors,\n requestedFields,\n onFieldChange,\n}: NationalityFieldProps) => {\n const { t } = useI18n();\n const countryOptions = useCountryOptions(\"user_input_form.select.nationality\");\n\n if (!requestedFields.has(\"nationalite\")) {\n return null;\n }\n\n return (\n <div className=\"space-y-2\">\n <Label.Root\n htmlFor=\"nationality\"\n className=\"block text-sm md:text-base font-semibold text-gray-900\"\n >\n {t(FIELD_LABELS.nationalite)}\n </Label.Root>\n <Select\n options={countryOptions}\n value={form.nationality || \"\"}\n onValueChange={(value) => onFieldChange(\"nationality\", value)}\n placeholder={t(\"user_input_form.select.nationality\")}\n error={Boolean(errors.nationality)}\n />\n {errors.nationality && (\n <p className=\"text-red-600 text-sm flex items-center gap-1\">\n <span className=\"text-red-500\">⚠</span>\n {t(\"user_input_form.errors.nationality_required\")}\n </p>\n )}\n </div>\n );\n};\n\nexport default NationalityField;\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;AAkBA,IAAM,gBAAgB,GAAG,UAAC,EAKF,EAAA;QAJtB,IAAI,GAAA,EAAA,CAAA,IAAA,EACJ,MAAM,GAAA,EAAA,CAAA,MAAA,EACN,eAAe,GAAA,EAAA,CAAA,eAAA,EACf,aAAa,GAAA,EAAA,CAAA,aAAA;AAEL,IAAA,IAAA,CAAC,GAAK,OAAO,EAAE,EAAd;AACT,IAAA,IAAM,cAAc,GAAG,iBAAiB,CAAC,oCAAoC,CAAC;IAE9E,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE;AACvC,QAAA,OAAO,IAAI;IACb;IAEA,QACEA,cAAK,SAAS,EAAC,WAAW,EAAA,QAAA,EAAA,CACxBC,GAAA,CAAC,KAAK,CAAC,IAAI,IACT,OAAO,EAAC,aAAa,EACrB,SAAS,EAAC,wDAAwD,EAAA,QAAA,EAEjE,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,EAAA,CACjB,EACbA,GAAA,CAAC,MAAM,IACL,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,IAAI,CAAC,WAAW,IAAI,EAAE,EAC7B,aAAa,EAAE,UAAC,KAAK,EAAA,EAAK,OAAA,aAAa,CAAC,aAAa,EAAE,KAAK,CAAC,CAAA,CAAnC,CAAmC,EAC7D,WAAW,EAAE,CAAC,CAAC,oCAAoC,CAAC,EACpD,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,EAAA,CAClC,EACD,MAAM,CAAC,WAAW,KACjBD,IAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,8CAA8C,EAAA,QAAA,EAAA,CACzDC,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,cAAc,EAAA,QAAA,EAAA,QAAA,EAAA,CAAS,EACtC,CAAC,CAAC,6CAA6C,CAAC,CAAA,EAAA,CAC/C,CACL,CAAA,EAAA,CACG;AAEV;;;;"}
|
|
@@ -27,30 +27,6 @@ var YEAR_OPTIONS = years.map(function (value) { return ({
|
|
|
27
27
|
value: String(value),
|
|
28
28
|
label: String(value),
|
|
29
29
|
}); });
|
|
30
|
-
var COUNTRY_OPTIONS = [
|
|
31
|
-
{ value: "", label: "Sélectionnez un pays" },
|
|
32
|
-
{ value: "FR", label: "France" },
|
|
33
|
-
{ value: "BE", label: "Belgique" },
|
|
34
|
-
{ value: "CH", label: "Suisse" },
|
|
35
|
-
{ value: "DE", label: "Allemagne" },
|
|
36
|
-
{ value: "ES", label: "Espagne" },
|
|
37
|
-
{ value: "IT", label: "Italie" },
|
|
38
|
-
{ value: "PT", label: "Portugal" },
|
|
39
|
-
{ value: "GB", label: "Royaume-Uni" },
|
|
40
|
-
{ value: "IE", label: "Irlande" },
|
|
41
|
-
{ value: "NL", label: "Pays-Bas" },
|
|
42
|
-
{ value: "US", label: "États-Unis" },
|
|
43
|
-
{ value: "CA", label: "Canada" },
|
|
44
|
-
{ value: "MX", label: "Mexique" },
|
|
45
|
-
{ value: "AU", label: "Australie" },
|
|
46
|
-
{ value: "BR", label: "Brésil" },
|
|
47
|
-
{ value: "MA", label: "Maroc" },
|
|
48
|
-
{ value: "DZ", label: "Algérie" },
|
|
49
|
-
{ value: "TN", label: "Tunisie" },
|
|
50
|
-
{ value: "JP", label: "Japon" },
|
|
51
|
-
{ value: "CN", label: "Chine" },
|
|
52
|
-
{ value: "IN", label: "Inde" },
|
|
53
|
-
];
|
|
54
30
|
var ADDRESS_SUGGESTIONS = [
|
|
55
31
|
"10 Rue de Rivoli, 75001 Paris, France",
|
|
56
32
|
"221B Baker Street, NW1 6XE Londres, Royaume-Uni",
|
|
@@ -90,5 +66,5 @@ var FALLBACK_ADDRESS_SUGGESTIONS = ADDRESS_SUGGESTIONS.map(function (label, inde
|
|
|
90
66
|
country: "",
|
|
91
67
|
}); });
|
|
92
68
|
|
|
93
|
-
export { ADDRESS_SUGGESTIONS,
|
|
69
|
+
export { ADDRESS_SUGGESTIONS, DAY_OPTIONS, DEFAULT_FIELDS, FALLBACK_ADDRESS_SUGGESTIONS, FIELD_LABELS, GEOCODING_AUTOCOMPLETE_ENDPOINT, MONTH_OPTIONS, YEAR_OPTIONS };
|
|
94
70
|
//# sourceMappingURL=userInputForm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"userInputForm.js","sources":["../../../../src/constants/userInputForm.ts"],"sourcesContent":["import type {\n AddressSuggestion,\n InformationType,\n RequestedFieldKey,\n SelectOption,\n} from \"../types/userInputForm\";\n\nconst days = Array.from({ length: 31 }, (_, index) => index + 1);\nconst currentYear = new Date().getFullYear();\nconst years = Array.from({ length: 120 }, (_, index) => currentYear - index);\n\nconst monthLabels = [\n \"Janvier\",\n \"Février\",\n \"Mars\",\n \"Avril\",\n \"Mai\",\n \"Juin\",\n \"Juillet\",\n \"Août\",\n \"Septembre\",\n \"Octobre\",\n \"Novembre\",\n \"Décembre\",\n];\n\nexport const DAY_OPTIONS: SelectOption[] = days.map((value) => ({\n value: String(value).padStart(2, \"0\"),\n label: String(value).padStart(2, \"0\"),\n}));\n\nexport const MONTH_OPTIONS: SelectOption[] = monthLabels.map(\n (label, index) => ({\n value: String(index + 1).padStart(2, \"0\"),\n label,\n })\n);\n\nexport const YEAR_OPTIONS: SelectOption[] = years.map((value) => ({\n value: String(value),\n label: String(value),\n}));\n\
|
|
1
|
+
{"version":3,"file":"userInputForm.js","sources":["../../../../src/constants/userInputForm.ts"],"sourcesContent":["import type {\n AddressSuggestion,\n InformationType,\n RequestedFieldKey,\n SelectOption,\n} from \"../types/userInputForm\";\n\nconst days = Array.from({ length: 31 }, (_, index) => index + 1);\nconst currentYear = new Date().getFullYear();\nconst years = Array.from({ length: 120 }, (_, index) => currentYear - index);\n\nconst monthLabels = [\n \"Janvier\",\n \"Février\",\n \"Mars\",\n \"Avril\",\n \"Mai\",\n \"Juin\",\n \"Juillet\",\n \"Août\",\n \"Septembre\",\n \"Octobre\",\n \"Novembre\",\n \"Décembre\",\n];\n\nexport const DAY_OPTIONS: SelectOption[] = days.map((value) => ({\n value: String(value).padStart(2, \"0\"),\n label: String(value).padStart(2, \"0\"),\n}));\n\nexport const MONTH_OPTIONS: SelectOption[] = monthLabels.map(\n (label, index) => ({\n value: String(index + 1).padStart(2, \"0\"),\n label,\n })\n);\n\nexport const YEAR_OPTIONS: SelectOption[] = years.map((value) => ({\n value: String(value),\n label: String(value),\n}));\n\n\nexport const ADDRESS_SUGGESTIONS: string[] = [\n \"10 Rue de Rivoli, 75001 Paris, France\",\n \"221B Baker Street, NW1 6XE Londres, Royaume-Uni\",\n \"1600 Amphitheatre Parkway, 94043 Mountain View, États-Unis\",\n \"55 Rue du Faubourg Saint-Honoré, 75008 Paris, France\",\n \"1 Place du Commerce, 44000 Nantes, France\",\n \"Piazza del Colosseo 1, 00184 Rome, Italie\",\n \"Av. Paulista 1578, 01310-200 São Paulo, Brésil\",\n];\n\nexport const DEFAULT_FIELDS: Record<InformationType, RequestedFieldKey[]> = {\n identity: [\"nom\", \"prenom\", \"date_naissance\"],\n \"identity-legal\": [\"nom\", \"siret\", \"tva\", \"adresse\"],\n contact: [\"email\", \"sms\"],\n address: [\"adresse\"],\n nationality: [\"nationalite\"],\n custom: [], // Custom forms use customFields instead\n};\n\nexport const FIELD_LABELS: Record<RequestedFieldKey, string> = {\n nom: \"user_input_form.fields.last_name\",\n prenom: \"user_input_form.fields.first_name\",\n date_naissance: \"user_input_form.fields.birth_date\",\n email: \"user_input_form.fields.email\",\n sms: \"user_input_form.fields.phone\",\n adresse: \"user_input_form.fields.address_line1\",\n nationalite: \"user_input_form.fields.nationality\",\n company: \"user_input_form.fields.company_name\",\n siret: \"user_input_form.fields.siret\",\n tva: \"user_input_form.fields.vat_number\",\n};\n\n// Backend endpoint pour l'autocomplétion d'adresses (sécurisé)\nexport const GEOCODING_AUTOCOMPLETE_ENDPOINT = \"/geocoding/autocomplete\";\n\nexport const FALLBACK_ADDRESS_SUGGESTIONS: AddressSuggestion[] =\n ADDRESS_SUGGESTIONS.map((label, index) => ({\n id: `fallback-${index}`,\n label,\n addressLine1: label,\n postalCode: \"\",\n city: \"\",\n country: \"\",\n }));\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { __spreadArray } from '../node_modules/tslib/tslib.es6.js';
|
|
2
|
+
import { useMemo } from 'react';
|
|
3
|
+
import countryISO from '../i18n/country/country.iso2.fr.json.js';
|
|
4
|
+
import { useI18n } from './useI18n.js';
|
|
5
|
+
|
|
6
|
+
var ISO_CODES = Object.keys(countryISO);
|
|
7
|
+
var useCountryOptions = function (placeholderKey) {
|
|
8
|
+
var _a = useI18n(), t = _a.t, currentLanguage = _a.currentLanguage;
|
|
9
|
+
return useMemo(function () {
|
|
10
|
+
var countries = ISO_CODES.filter(function (code) { return code !== "EU"; })
|
|
11
|
+
.map(function (code) { return ({ value: code, label: t(code) }); })
|
|
12
|
+
.sort(function (a, b) { return a.label.localeCompare(b.label, currentLanguage); });
|
|
13
|
+
return __spreadArray([{ value: "", label: t(placeholderKey) }], countries, true);
|
|
14
|
+
}, [t, currentLanguage, placeholderKey]);
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export { useCountryOptions };
|
|
18
|
+
//# sourceMappingURL=useCountryOptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCountryOptions.js","sources":["../../../../src/hooks/useCountryOptions.ts"],"sourcesContent":["import { useMemo } from \"react\";\nimport countryISO from \"../i18n/country/country.iso2.fr.json\";\nimport { useI18n } from \"./useI18n\";\nimport type { SelectOption } from \"../types/userInputForm\";\n\nconst ISO_CODES = Object.keys(countryISO);\n\nexport const useCountryOptions = (placeholderKey: string): SelectOption[] => {\n const { t, currentLanguage } = useI18n();\n\n return useMemo(() => {\n const countries = ISO_CODES.filter((code) => code !== \"EU\")\n .map((code) => ({ value: code, label: t(code) }))\n .sort((a, b) => a.label.localeCompare(b.label, currentLanguage));\n\n return [{ value: \"\", label: t(placeholderKey) }, ...countries];\n }, [t, currentLanguage, placeholderKey]);\n};\n"],"names":[],"mappings":";;;;;AAKA,IAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;AAElC,IAAM,iBAAiB,GAAG,UAAC,cAAsB,EAAA;IAChD,IAAA,EAAA,GAAyB,OAAO,EAAE,EAAhC,CAAC,GAAA,EAAA,CAAA,CAAA,EAAE,eAAe,GAAA,EAAA,CAAA,eAAc;AAExC,IAAA,OAAO,OAAO,CAAC,YAAA;AACb,QAAA,IAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,UAAC,IAAI,EAAA,EAAK,OAAA,IAAI,KAAK,IAAI,CAAA,CAAb,CAAa;aACvD,GAAG,CAAC,UAAC,IAAI,EAAA,EAAK,QAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAC,CAAjC,CAAiC;aAC/C,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,EAAA,EAAK,OAAA,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,EAAE,eAAe,CAAC,CAAA,CAA/C,CAA+C,CAAC;AAElE,QAAA,OAAA,aAAA,CAAA,CAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,cAAc,CAAC,EAAE,CAAA,EAAK,SAAS,EAAA,IAAA,CAAA;IAC/D,CAAC,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;AAC1C;;;;"}
|
|
@@ -174,7 +174,7 @@ var YE = "Yémen";
|
|
|
174
174
|
var ZM = "Zambie";
|
|
175
175
|
var ZW = "Zimbabwe";
|
|
176
176
|
var EU = "Europe (UE)";
|
|
177
|
-
var
|
|
177
|
+
var countryISO = {
|
|
178
178
|
AF: AF,
|
|
179
179
|
ZA: ZA,
|
|
180
180
|
AL: AL,
|
|
@@ -353,5 +353,5 @@ var countryISOFr = {
|
|
|
353
353
|
EU: EU
|
|
354
354
|
};
|
|
355
355
|
|
|
356
|
-
export { AD, AE, AF, AG, AI, AL, AM, AO, AR, AT, AU, AW, AZ, BA, BB, BD, BE, BF, BG, BH, BI, BJ, BM, BN, BO, BR, BS, BT, BW, BY, BZ, CA, CD, CF, CG, CH, CI, CL, CM, CN, CO, CR, CU, CV, CY, CZ, DE, DJ, DK, DM, DO, DZ, EC, EE, EG, ER, ES, ET, EU, FI, FR, GA, GB, GD, GE, GH, GL, GM, GN, GQ, GR, GY, HN, HR, HT, HU, ID, IE, IL, IN, IQ, IR, IS, IT, JM, JO, JP, KE, KG, KM, KR, KW, KZ, LA, LB, LR, LS, LT, LU, LV, LY, MA, MC, MD, ME, MG, MK, ML, MR, MS, MT, MV, MW, MX, MY, MZ, NA, NE, NG, NI, NL, NO, NP, NZ, OM, PA, PE, PG, PH, PK, PL, PS, PT, PY, QA, RO, RS, RU, RW, SA, SC, SD, SE, SG, SI, SK, SL, SM, SN, SO, SR, SS, SV, SX, SY, TD, TG, TH, TL, TM, TN, TR, TW, TZ, UA, UG, US, UY, UZ, VA, VE, VN, YE, ZA, ZM, ZW,
|
|
356
|
+
export { AD, AE, AF, AG, AI, AL, AM, AO, AR, AT, AU, AW, AZ, BA, BB, BD, BE, BF, BG, BH, BI, BJ, BM, BN, BO, BR, BS, BT, BW, BY, BZ, CA, CD, CF, CG, CH, CI, CL, CM, CN, CO, CR, CU, CV, CY, CZ, DE, DJ, DK, DM, DO, DZ, EC, EE, EG, ER, ES, ET, EU, FI, FR, GA, GB, GD, GE, GH, GL, GM, GN, GQ, GR, GY, HN, HR, HT, HU, ID, IE, IL, IN, IQ, IR, IS, IT, JM, JO, JP, KE, KG, KM, KR, KW, KZ, LA, LB, LR, LS, LT, LU, LV, LY, MA, MC, MD, ME, MG, MK, ML, MR, MS, MT, MV, MW, MX, MY, MZ, NA, NE, NG, NI, NL, NO, NP, NZ, OM, PA, PE, PG, PH, PK, PL, PS, PT, PY, QA, RO, RS, RU, RW, SA, SC, SD, SE, SG, SI, SK, SL, SM, SN, SO, SR, SS, SV, SX, SY, TD, TG, TH, TL, TM, TN, TR, TW, TZ, UA, UG, US, UY, UZ, VA, VE, VN, YE, ZA, ZM, ZW, countryISO as default };
|
|
357
357
|
//# sourceMappingURL=country.iso2.fr.json.js.map
|
package/dist/esm/i18n/index.js
CHANGED
|
@@ -7,14 +7,14 @@ import documentsEn from './documents/documents.en.json.js';
|
|
|
7
7
|
import documentsFr from './documents/documents.fr.json.js';
|
|
8
8
|
import countryFr from './country/country.fr.json.js';
|
|
9
9
|
import countryEn from './country/country.en.json.js';
|
|
10
|
-
import
|
|
10
|
+
import countryISO from './country/country.iso2.fr.json.js';
|
|
11
11
|
import countryISOEn from './country/country.iso2.en.json.js';
|
|
12
12
|
|
|
13
13
|
// Créer une instance i18next complètement séparée pour le SDK
|
|
14
14
|
var sdkI18n = createInstance();
|
|
15
15
|
var resources = {
|
|
16
16
|
fr: {
|
|
17
|
-
translation: __assign(__assign(__assign(__assign({}, frTranslations), documentsFr), countryFr),
|
|
17
|
+
translation: __assign(__assign(__assign(__assign({}, frTranslations), documentsFr), countryFr), countryISO)
|
|
18
18
|
},
|
|
19
19
|
en: {
|
|
20
20
|
translation: __assign(__assign(__assign(__assign({}, enTranslations), documentsEn), countryEn), countryISOEn)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/i18n/index.ts"],"sourcesContent":["import { createInstance } from 'i18next';\nimport { initReactI18next } from 'react-i18next';\nimport frTranslations from './fr.json';\nimport enTranslations from './en.json';\n\nimport documentsEn from './documents/documents.en.json';\nimport documentsFr from './documents/documents.fr.json';\n\nimport countryFr from './country/country.fr.json';\nimport countryEn from './country/country.en.json';\nimport countryISOFr from './country/country.iso2.fr.json';\nimport countryISOEn from './country/country.iso2.en.json';\n\n// Créer une instance i18next complètement séparée pour le SDK\nconst sdkI18n = createInstance();\n\nconst resources = {\n fr: {\n translation: {\n ...frTranslations,\n // Documents\n ...documentsFr,\n // Pays\n ...countryFr,\n ...countryISOFr\n }\n },\n en: {\n translation: {\n ...enTranslations,\n // Documents\n ...documentsEn,\n // Pays\n ...countryEn,\n ...countryISOEn\n }\n }\n};\n\n// Get initial language from localStorage or default to 'fr'\nconst getInitialLanguage = (): string => {\n try {\n const savedLanguage = localStorage.getItem('datakeen-sdk-language');\n return savedLanguage && (savedLanguage === 'fr' || savedLanguage === 'en') ? savedLanguage : 'fr';\n } catch (error) {\n console.warn('Failed to read language from localStorage:', error);\n return 'fr';\n }\n};\n\n// Initialiser l'instance SDK de manière indépendante\nsdkI18n\n .use(initReactI18next)\n .init({\n resources,\n lng: getInitialLanguage(),\n fallbackLng: 'fr',\n debug: false,\n interpolation: {\n escapeValue: false\n }\n });\n\nexport default sdkI18n;\n"],"names":[],"mappings":";;;;;;;;;;;;AAaA;AACA,IAAM,OAAO,GAAG,cAAc;AAE9B,IAAM,SAAS,GAAG;AAChB,IAAA,EAAE,EAAE;QACF,WAAW,EAAA,QAAA,CAAA,QAAA,CAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EACN,cAAc,CAAA,EAEd,WAAW,GAEX,SAAS,CAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/i18n/index.ts"],"sourcesContent":["import { createInstance } from 'i18next';\nimport { initReactI18next } from 'react-i18next';\nimport frTranslations from './fr.json';\nimport enTranslations from './en.json';\n\nimport documentsEn from './documents/documents.en.json';\nimport documentsFr from './documents/documents.fr.json';\n\nimport countryFr from './country/country.fr.json';\nimport countryEn from './country/country.en.json';\nimport countryISOFr from './country/country.iso2.fr.json';\nimport countryISOEn from './country/country.iso2.en.json';\n\n// Créer une instance i18next complètement séparée pour le SDK\nconst sdkI18n = createInstance();\n\nconst resources = {\n fr: {\n translation: {\n ...frTranslations,\n // Documents\n ...documentsFr,\n // Pays\n ...countryFr,\n ...countryISOFr\n }\n },\n en: {\n translation: {\n ...enTranslations,\n // Documents\n ...documentsEn,\n // Pays\n ...countryEn,\n ...countryISOEn\n }\n }\n};\n\n// Get initial language from localStorage or default to 'fr'\nconst getInitialLanguage = (): string => {\n try {\n const savedLanguage = localStorage.getItem('datakeen-sdk-language');\n return savedLanguage && (savedLanguage === 'fr' || savedLanguage === 'en') ? savedLanguage : 'fr';\n } catch (error) {\n console.warn('Failed to read language from localStorage:', error);\n return 'fr';\n }\n};\n\n// Initialiser l'instance SDK de manière indépendante\nsdkI18n\n .use(initReactI18next)\n .init({\n resources,\n lng: getInitialLanguage(),\n fallbackLng: 'fr',\n debug: false,\n interpolation: {\n escapeValue: false\n }\n });\n\nexport default sdkI18n;\n"],"names":["countryISOFr"],"mappings":";;;;;;;;;;;;AAaA;AACA,IAAM,OAAO,GAAG,cAAc;AAE9B,IAAM,SAAS,GAAG;AAChB,IAAA,EAAE,EAAE;QACF,WAAW,EAAA,QAAA,CAAA,QAAA,CAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EACN,cAAc,CAAA,EAEd,WAAW,GAEX,SAAS,CAAA,EACTA,UAAY;AAElB,KAAA;AACD,IAAA,EAAE,EAAE;QACF,WAAW,EAAA,QAAA,CAAA,QAAA,CAAA,QAAA,CAAA,QAAA,CAAA,EAAA,EACN,cAAc,CAAA,EAEd,WAAW,GAEX,SAAS,CAAA,EACT,YAAY;AAElB;CACF;AAED;AACA,IAAM,kBAAkB,GAAG,YAAA;AACzB,IAAA,IAAI;QACF,IAAM,aAAa,GAAG,YAAY,CAAC,OAAO,CAAC,uBAAuB,CAAC;AACnE,QAAA,OAAO,aAAa,KAAK,aAAa,KAAK,IAAI,IAAI,aAAa,KAAK,IAAI,CAAC,GAAG,aAAa,GAAG,IAAI;IACnG;IAAE,OAAO,KAAK,EAAE;AACd,QAAA,OAAO,CAAC,IAAI,CAAC,4CAA4C,EAAE,KAAK,CAAC;AACjE,QAAA,OAAO,IAAI;IACb;AACF,CAAC;AAED;AACA;KACG,GAAG,CAAC,gBAAgB;AACpB,KAAA,IAAI,CAAC;AACJ,IAAA,SAAS,EAAA,SAAA;IACT,GAAG,EAAE,kBAAkB,EAAE;AACzB,IAAA,WAAW,EAAE,IAAI;AACjB,IAAA,KAAK,EAAE,KAAK;AACZ,IAAA,aAAa,EAAE;AACb,QAAA,WAAW,EAAE;AACd;AACF,CAAA,CAAC;;;;"}
|
|
@@ -86,7 +86,7 @@ var getDocumentTemplateId = function (params) {
|
|
|
86
86
|
var normalizedCountry = countryCode === null || countryCode === void 0 ? void 0 : countryCode.toUpperCase();
|
|
87
87
|
var resolvedType = resolveDocumentType(documentId);
|
|
88
88
|
var documents = (_a = acceptedCountries === null || acceptedCountries === void 0 ? void 0 : acceptedCountries.find(function (country) { var _a; return ((_a = country.code) === null || _a === void 0 ? void 0 : _a.toUpperCase()) === normalizedCountry; })) === null || _a === void 0 ? void 0 : _a.documents;
|
|
89
|
-
if (resolvedType && ((_b = documents === null || documents === void 0 ? void 0 : documents[resolvedType]) === null || _b === void 0 ? void 0 : _b.length) && (documents === null || documents === void 0 ? void 0 : documents[resolvedType][0]) != "INT") {
|
|
89
|
+
if (resolvedType && ((_b = documents === null || documents === void 0 ? void 0 : documents[resolvedType]) === null || _b === void 0 ? void 0 : _b.length) && (documents === null || documents === void 0 ? void 0 : documents[resolvedType][0]) != "INT" && (documents === null || documents === void 0 ? void 0 : documents[resolvedType][0]) != "EU") {
|
|
90
90
|
// Special case for France pink driving license (1989 format)
|
|
91
91
|
var docName = (_d = (_c = documentTemplates === null || documentTemplates === void 0 ? void 0 : documentTemplates.data) === null || _c === void 0 ? void 0 : _c.find(function (tpl) { return tpl.id === documents[resolvedType][0]; })) === null || _d === void 0 ? void 0 : _d.name;
|
|
92
92
|
if (normalizedCountry === "FR" && resolvedType === "driverLicense" && docName === "france_driving_license_1989" && documents[resolvedType][1]) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documentTemplate.js","sources":["../../../../src/services/documentTemplate.ts"],"sourcesContent":["import { apiService } from \"./api\";\nimport type { AcceptedCountry } from \"../types/session\";\n\nexport interface DocumentTemplate {\n id: string;\n name: string;\n countryCode: string;\n acceptedFormats: string[];\n maxFiles: number;\n minFiles: number;\n maxPages: number;\n maxSize: number;\n sides: string;\n}\n\nexport interface FetchedDocumentTemplates {\n status: number;\n message: string;\n data: DocumentTemplate[];\n}\n\nconst DOCUMENT_ID_TO_TYPE: Record<string, keyof AcceptedCountry[\"documents\"]> = {\n passport: \"passport\",\n \"jdi-3\": \"passport\",\n idcard: \"idCard\",\n idCard: \"idCard\",\n \"jdi-2\": \"idCard\",\n driverlicense: \"driverLicense\",\n driverLicense: \"driverLicense\",\n \"jdi-4\": \"driverLicense\",\n residencepermit: \"residencePermit\",\n residencePermit: \"residencePermit\",\n \"jdi-5\": \"residencePermit\",\n pinkdriverlicense: \"pinkDriverLicense\",\n pinkDriverLicense: \"pinkDriverLicense\",\n};\n\n\n/**\n * Retrieves the document type key for API requests based on the document type.\n * \n * @param docType - The document type from the AcceptedCountry documents\n * @returns The corresponding document type key string used in API requests\n * \n * @example\n * ```typescript\n * getDocTypeKey('passport') // returns 'passport'\n * getDocTypeKey('idCard') // returns 'id_card'\n * getDocTypeKey('driverLicense') // returns 'driving_license'\n * ```\n */\nexport const getDocTypeKey = (docType: keyof AcceptedCountry[\"documents\"]): string => {\n switch (docType) {\n case \"passport\":\n return \"passport\";\n case \"idCard\":\n return \"id_card\";\n case \"residencePermit\":\n return \"residency_permit\";\n case \"driverLicense\":\n return \"driving_license\";\n case \"pinkDriverLicense\":\n return \"driving_license_1989\";\n default:\n return String(docType).toLowerCase();\n }\n};\n\n\n\n/**\n * Resolves a document ID string to its corresponding document type.\n * Performs case-insensitive matching against the DOCUMENT_ID_TO_TYPE mapping.\n * \n * @param documentId - The document identifier to resolve\n * @returns The resolved document type or undefined if no match is found\n * \n * @internal\n */\nconst resolveDocumentType = (documentId: string): keyof AcceptedCountry[\"documents\"] | undefined => {\n return DOCUMENT_ID_TO_TYPE[documentId] ?? DOCUMENT_ID_TO_TYPE[documentId.toLowerCase()];\n};\n\n\n/**\n * Retrieves the document template ID for a specific country and document type.\n * First attempts to find the template ID from acceptedCountries data.\n * If not found, falls back to searching through documentTemplates by matching country code and template name.\n * \n * @param params - Configuration object\n * @param params.countryCode - The ISO country code (case-insensitive)\n * @param params.documentId - The document type identifier\n * @param params.acceptedCountries - Optional array of accepted countries with their document configurations\n * @param params.documentTemplates - Optional fetched document templates to search through\n * @returns The document template ID if found, otherwise undefined\n * \n * @example\n * ```typescript\n * const templateId = getDocumentTemplateId({\n * countryCode: 'FR',\n * documentId: 'passport',\n * acceptedCountries: countries,\n * documentTemplates: templates\n * });\n * ```\n */\nexport const getDocumentTemplateId = (params: {\n countryCode: string;\n documentId: string;\n acceptedCountries?: AcceptedCountry[];\n documentTemplates?: FetchedDocumentTemplates;\n}): string | undefined => {\n const { countryCode, documentId, acceptedCountries, documentTemplates } = params;\n const normalizedCountry = countryCode?.toUpperCase();\n const resolvedType = resolveDocumentType(documentId);\n\n const documents = acceptedCountries?.find(\n (country) => country.code?.toUpperCase() === normalizedCountry\n )?.documents;\n\n if (resolvedType && documents?.[resolvedType]?.length && documents?.[resolvedType][0] != \"INT\") {\n // Special case for France pink driving license (1989 format)\n const docName = documentTemplates?.data?.find(tpl => tpl.id === documents[resolvedType][0])?.name;\n if (normalizedCountry === \"FR\" && resolvedType === \"driverLicense\" && docName === \"france_driving_license_1989\" && documents[resolvedType][1]) {\n return documents[resolvedType][1];\n }\n return documents[resolvedType][0];\n }\n\n if (!resolvedType) {\n return undefined;\n }\n\n const templateKey = getDocTypeKey(resolvedType).toLowerCase();\n const matchedTemplate = documentTemplates?.data?.findLast((tpl) => {\n return (\n tpl.countryCode === normalizedCountry &&\n (tpl.name?.toLowerCase() || \"\").includes(templateKey)\n );\n });\n\n return matchedTemplate?.id;\n};\n\n\n/**\n * Fetches all document templates from the API with optional filtering.\n * \n * @param params - Optional configuration object for filtering results\n * @param params.type - Filter templates by document type\n * @param params.tags - Filter templates by tags array\n * @returns Promise resolving to fetched document templates data\n * @throws {Error} Throws an error if the API request fails\n * \n * @example\n * ```typescript\n * // Fetch all templates\n * const allTemplates = await getAllDocumentTemplates();\n * \n * // Fetch templates with filters\n * const filteredTemplates = await getAllDocumentTemplates({\n * type: 'proof_of_identity',\n * tags: ['biometric', 'eu']\n * });\n * ```\n */\nexport const getAllDocumentTemplates = async (params?: {\n type?: string;\n tags?: string[];\n}): Promise<FetchedDocumentTemplates> => {\n const query = new URLSearchParams();\n if (params?.type) query.append(\"type\", params.type);\n if (params?.tags && params.tags.length > 0) {\n params.tags.forEach((tag) => query.append(\"tags\", tag));\n }\n\n const url = \"document/get-all-document-templates\";\n const response = await apiService.get<FetchedDocumentTemplates>(\n `${url}?${query.toString()}`\n );\n if (!response.success) {\n throw new Error(\"Failed to fetch document templates\");\n }\n return response.data;\n};\n"],"names":[],"mappings":";;;AAqBA,IAAM,mBAAmB,GAAuD;AAC9E,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,OAAO,EAAE,UAAU;AACnB,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,OAAO,EAAE,QAAQ;AACjB,IAAA,aAAa,EAAE,eAAe;AAC9B,IAAA,aAAa,EAAE,eAAe;AAC9B,IAAA,OAAO,EAAE,eAAe;AACxB,IAAA,eAAe,EAAE,iBAAiB;AAClC,IAAA,eAAe,EAAE,iBAAiB;AAClC,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,iBAAiB,EAAE,mBAAmB;AACtC,IAAA,iBAAiB,EAAE,mBAAmB;CACvC;AAGD;;;;;;;;;;;;AAYG;AACI,IAAM,aAAa,GAAG,UAAC,OAA2C,EAAA;IACvE,QAAQ,OAAO;AACb,QAAA,KAAK,UAAU;AACb,YAAA,OAAO,UAAU;AACnB,QAAA,KAAK,QAAQ;AACX,YAAA,OAAO,SAAS;AAClB,QAAA,KAAK,iBAAiB;AACpB,YAAA,OAAO,kBAAkB;AAC3B,QAAA,KAAK,eAAe;AAClB,YAAA,OAAO,iBAAiB;AAC1B,QAAA,KAAK,mBAAmB;AACtB,YAAA,OAAO,sBAAsB;AAC/B,QAAA;AACE,YAAA,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE;;AAE1C;AAIA;;;;;;;;AAQG;AACH,IAAM,mBAAmB,GAAG,UAAC,UAAkB,EAAA;;AAC7C,IAAA,OAAO,CAAA,EAAA,GAAA,mBAAmB,CAAC,UAAU,CAAC,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,mBAAmB,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;AACzF,CAAC;AAGD;;;;;;;;;;;;;;;;;;;;;AAqBG;AACI,IAAM,qBAAqB,GAAG,UAAC,MAKrC,EAAA;;AACS,IAAA,IAAA,WAAW,GAAuD,MAAM,YAA7D,EAAE,UAAU,GAA2C,MAAM,CAAA,UAAjD,EAAE,iBAAiB,GAAwB,MAAM,CAAA,iBAA9B,EAAE,iBAAiB,GAAK,MAAM,kBAAX;IACrE,IAAM,iBAAiB,GAAG,WAAW,KAAA,IAAA,IAAX,WAAW,uBAAX,WAAW,CAAE,WAAW,EAAE;AACpD,IAAA,IAAM,YAAY,GAAG,mBAAmB,CAAC,UAAU,CAAC;AAEpD,IAAA,IAAM,SAAS,GAAG,CAAA,EAAA,GAAA,iBAAiB,KAAA,IAAA,IAAjB,iBAAiB,KAAA,MAAA,GAAA,MAAA,GAAjB,iBAAiB,CAAE,IAAI,CACvC,UAAC,OAAO,EAAA,EAAA,IAAA,EAAA,CAAA,CAAK,OAAA,CAAA,CAAA,EAAA,GAAA,OAAO,CAAC,IAAI,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,WAAW,EAAE,MAAK,iBAAiB,CAAA,CAAA,CAAA,CAC/D,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,SAAS;AAEZ,IAAA,IAAI,YAAY,KAAI,CAAA,EAAA,GAAA,SAAS,KAAA,IAAA,IAAT,SAAS,
|
|
1
|
+
{"version":3,"file":"documentTemplate.js","sources":["../../../../src/services/documentTemplate.ts"],"sourcesContent":["import { apiService } from \"./api\";\nimport type { AcceptedCountry } from \"../types/session\";\n\nexport interface DocumentTemplate {\n id: string;\n name: string;\n countryCode: string;\n acceptedFormats: string[];\n maxFiles: number;\n minFiles: number;\n maxPages: number;\n maxSize: number;\n sides: string;\n}\n\nexport interface FetchedDocumentTemplates {\n status: number;\n message: string;\n data: DocumentTemplate[];\n}\n\nconst DOCUMENT_ID_TO_TYPE: Record<string, keyof AcceptedCountry[\"documents\"]> = {\n passport: \"passport\",\n \"jdi-3\": \"passport\",\n idcard: \"idCard\",\n idCard: \"idCard\",\n \"jdi-2\": \"idCard\",\n driverlicense: \"driverLicense\",\n driverLicense: \"driverLicense\",\n \"jdi-4\": \"driverLicense\",\n residencepermit: \"residencePermit\",\n residencePermit: \"residencePermit\",\n \"jdi-5\": \"residencePermit\",\n pinkdriverlicense: \"pinkDriverLicense\",\n pinkDriverLicense: \"pinkDriverLicense\",\n};\n\n\n/**\n * Retrieves the document type key for API requests based on the document type.\n * \n * @param docType - The document type from the AcceptedCountry documents\n * @returns The corresponding document type key string used in API requests\n * \n * @example\n * ```typescript\n * getDocTypeKey('passport') // returns 'passport'\n * getDocTypeKey('idCard') // returns 'id_card'\n * getDocTypeKey('driverLicense') // returns 'driving_license'\n * ```\n */\nexport const getDocTypeKey = (docType: keyof AcceptedCountry[\"documents\"]): string => {\n switch (docType) {\n case \"passport\":\n return \"passport\";\n case \"idCard\":\n return \"id_card\";\n case \"residencePermit\":\n return \"residency_permit\";\n case \"driverLicense\":\n return \"driving_license\";\n case \"pinkDriverLicense\":\n return \"driving_license_1989\";\n default:\n return String(docType).toLowerCase();\n }\n};\n\n\n\n/**\n * Resolves a document ID string to its corresponding document type.\n * Performs case-insensitive matching against the DOCUMENT_ID_TO_TYPE mapping.\n * \n * @param documentId - The document identifier to resolve\n * @returns The resolved document type or undefined if no match is found\n * \n * @internal\n */\nconst resolveDocumentType = (documentId: string): keyof AcceptedCountry[\"documents\"] | undefined => {\n return DOCUMENT_ID_TO_TYPE[documentId] ?? DOCUMENT_ID_TO_TYPE[documentId.toLowerCase()];\n};\n\n\n/**\n * Retrieves the document template ID for a specific country and document type.\n * First attempts to find the template ID from acceptedCountries data.\n * If not found, falls back to searching through documentTemplates by matching country code and template name.\n * \n * @param params - Configuration object\n * @param params.countryCode - The ISO country code (case-insensitive)\n * @param params.documentId - The document type identifier\n * @param params.acceptedCountries - Optional array of accepted countries with their document configurations\n * @param params.documentTemplates - Optional fetched document templates to search through\n * @returns The document template ID if found, otherwise undefined\n * \n * @example\n * ```typescript\n * const templateId = getDocumentTemplateId({\n * countryCode: 'FR',\n * documentId: 'passport',\n * acceptedCountries: countries,\n * documentTemplates: templates\n * });\n * ```\n */\nexport const getDocumentTemplateId = (params: {\n countryCode: string;\n documentId: string;\n acceptedCountries?: AcceptedCountry[];\n documentTemplates?: FetchedDocumentTemplates;\n}): string | undefined => {\n const { countryCode, documentId, acceptedCountries, documentTemplates } = params;\n const normalizedCountry = countryCode?.toUpperCase();\n const resolvedType = resolveDocumentType(documentId);\n\n const documents = acceptedCountries?.find(\n (country) => country.code?.toUpperCase() === normalizedCountry\n )?.documents;\n\n if (resolvedType && documents?.[resolvedType]?.length && documents?.[resolvedType][0] != \"INT\" && documents?.[resolvedType][0] != \"EU\") {\n // Special case for France pink driving license (1989 format)\n const docName = documentTemplates?.data?.find(tpl => tpl.id === documents[resolvedType][0])?.name;\n if (normalizedCountry === \"FR\" && resolvedType === \"driverLicense\" && docName === \"france_driving_license_1989\" && documents[resolvedType][1]) {\n return documents[resolvedType][1];\n }\n return documents[resolvedType][0];\n }\n\n if (!resolvedType) {\n return undefined;\n }\n\n const templateKey = getDocTypeKey(resolvedType).toLowerCase();\n const matchedTemplate = documentTemplates?.data?.findLast((tpl) => {\n return (\n tpl.countryCode === normalizedCountry &&\n (tpl.name?.toLowerCase() || \"\").includes(templateKey)\n );\n });\n\n return matchedTemplate?.id;\n};\n\n\n/**\n * Fetches all document templates from the API with optional filtering.\n * \n * @param params - Optional configuration object for filtering results\n * @param params.type - Filter templates by document type\n * @param params.tags - Filter templates by tags array\n * @returns Promise resolving to fetched document templates data\n * @throws {Error} Throws an error if the API request fails\n * \n * @example\n * ```typescript\n * // Fetch all templates\n * const allTemplates = await getAllDocumentTemplates();\n * \n * // Fetch templates with filters\n * const filteredTemplates = await getAllDocumentTemplates({\n * type: 'proof_of_identity',\n * tags: ['biometric', 'eu']\n * });\n * ```\n */\nexport const getAllDocumentTemplates = async (params?: {\n type?: string;\n tags?: string[];\n}): Promise<FetchedDocumentTemplates> => {\n const query = new URLSearchParams();\n if (params?.type) query.append(\"type\", params.type);\n if (params?.tags && params.tags.length > 0) {\n params.tags.forEach((tag) => query.append(\"tags\", tag));\n }\n\n const url = \"document/get-all-document-templates\";\n const response = await apiService.get<FetchedDocumentTemplates>(\n `${url}?${query.toString()}`\n );\n if (!response.success) {\n throw new Error(\"Failed to fetch document templates\");\n }\n return response.data;\n};\n"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED