@tap-payments/auth-jsconnect 2.8.55-beta → 2.8.55-development

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.
Files changed (189) hide show
  1. package/build/@types/app.d.ts +1 -0
  2. package/build/@types/form.d.ts +1 -0
  3. package/build/@types/redux.d.ts +1 -0
  4. package/build/api/entity.d.ts +2 -2
  5. package/build/api/entity.js +12 -4
  6. package/build/api/index.d.ts +2 -2
  7. package/build/constants/api.d.ts +0 -1
  8. package/build/constants/api.js +0 -2
  9. package/build/constants/app.d.ts +0 -2
  10. package/build/constants/app.js +0 -2
  11. package/build/features/app/bank/bankStore.d.ts +13 -18
  12. package/build/features/app/bank/bankStore.js +184 -165
  13. package/build/features/app/board/boardStore.js +52 -30
  14. package/build/features/app/brand/brandStore.d.ts +16 -33
  15. package/build/features/app/brand/brandStore.js +239 -242
  16. package/build/features/app/business/businessStore.d.ts +0 -5
  17. package/build/features/app/business/businessStore.js +76 -87
  18. package/build/features/app/connectExpress/connectExpressStore.d.ts +15 -6
  19. package/build/features/app/connectExpress/connectExpressStore.js +110 -52
  20. package/build/features/app/entity/entityStore.d.ts +20 -36
  21. package/build/features/app/entity/entityStore.js +196 -246
  22. package/build/features/app/individual/individualStore.d.ts +22 -38
  23. package/build/features/app/individual/individualStore.js +263 -266
  24. package/build/features/app/password/passwordStore.d.ts +40 -23
  25. package/build/features/app/password/passwordStore.js +226 -233
  26. package/build/features/app/tax/taxStore.d.ts +13 -7
  27. package/build/features/app/tax/taxStore.js +168 -147
  28. package/build/features/auth/screens/AuthSwitch/AuthSwitch.js +13 -1
  29. package/build/features/auth/screens/BusinessCountry/BusinessCountry.js +7 -1
  30. package/build/features/bank/Bank.d.ts +1 -0
  31. package/build/features/bank/Bank.js +7 -4
  32. package/build/features/bank/screens/BankDetails/BankDetails.js +18 -5
  33. package/build/features/bank/screens/OperatorError/OperatorError.d.ts +5 -0
  34. package/build/features/bank/screens/OperatorError/OperatorError.js +9 -0
  35. package/build/features/bank/screens/OperatorError/index.d.ts +3 -0
  36. package/build/features/bank/screens/OperatorError/index.js +2 -0
  37. package/build/features/bank/screens/SuccessWithFlowButtons/SuccessWithFlowButtons.js +2 -2
  38. package/build/features/bank/screens/Verify/Verify.js +5 -5
  39. package/build/features/board/Board.js +8 -4
  40. package/build/features/board/screens/OperatorError/OperatorError.d.ts +5 -0
  41. package/build/features/board/screens/OperatorError/OperatorError.js +9 -0
  42. package/build/features/board/screens/OperatorError/index.d.ts +3 -0
  43. package/build/features/board/screens/OperatorError/index.js +2 -0
  44. package/build/features/board/screens/SuccessWithFlowButtons/SuccessWithFlowButtons.js +3 -4
  45. package/build/features/brand/Brand.d.ts +1 -0
  46. package/build/features/brand/Brand.js +7 -4
  47. package/build/features/brand/screens/BrandActivities/BrandActivities.js +49 -12
  48. package/build/features/brand/screens/BrandActivities/ExpectedSalesRange.js +6 -3
  49. package/build/features/brand/screens/BrandActivities/RefundPolicy.js +1 -1
  50. package/build/features/brand/screens/BrandActivities/TAC.js +1 -1
  51. package/build/features/brand/screens/BrandActivities/TransactionPolicy.js +1 -1
  52. package/build/features/brand/screens/BrandInfo/BrandInfo.js +23 -5
  53. package/build/features/brand/screens/BrandSegmentInfo/BrandSegmentInfo.js +23 -7
  54. package/build/features/brand/screens/OperatorError/OperatorError.d.ts +5 -0
  55. package/build/features/brand/screens/OperatorError/OperatorError.js +9 -0
  56. package/build/features/brand/screens/OperatorError/index.d.ts +3 -0
  57. package/build/features/brand/screens/OperatorError/index.js +2 -0
  58. package/build/features/brand/screens/SuccessWithFlowButtons/SuccessWithFlowButtons.js +2 -2
  59. package/build/features/brand/screens/Verify/Verify.js +1 -1
  60. package/build/features/business/Business.js +9 -4
  61. package/build/features/business/screens/Activities/Activities.js +12 -3
  62. package/build/features/business/screens/BusinessType/BusinessType.js +10 -2
  63. package/build/features/business/screens/CivilID/CivilID.js +1 -1
  64. package/build/features/business/screens/Customers/Customers.js +12 -3
  65. package/build/features/business/screens/Customers/ExpectedSalesRange.js +6 -3
  66. package/build/features/business/screens/IDBOD/IDBOD.js +10 -2
  67. package/build/features/business/screens/OTP/OTP.js +1 -1
  68. package/build/features/business/screens/OperatorError/OperatorError.d.ts +5 -0
  69. package/build/features/business/screens/OperatorError/OperatorError.js +9 -0
  70. package/build/features/business/screens/OperatorError/index.d.ts +3 -0
  71. package/build/features/business/screens/OperatorError/index.js +2 -0
  72. package/build/features/business/screens/SuccessWithFlowButtons/SuccessWithFlowButtons.js +14 -3
  73. package/build/features/business/screens/Verify/Verify.js +13 -3
  74. package/build/features/connect/Connect.js +3 -2
  75. package/build/features/connect/screens/BrandSegment/BrandSegment.js +1 -1
  76. package/build/features/connect/screens/BusinessCountry/BusinessCountry.js +9 -2
  77. package/build/features/connect/screens/CivilID/CivilID.js +1 -1
  78. package/build/features/connect/screens/Individual/Email.js +3 -1
  79. package/build/features/connect/screens/Individual/Individual.js +1 -1
  80. package/build/features/connect/screens/Merchant/BrandList.js +3 -3
  81. package/build/features/connect/screens/Merchant/Merchant.js +1 -1
  82. package/build/features/connect/screens/Merchant/SalesChannels.js +1 -1
  83. package/build/features/connect/screens/Mobile/Mobile.js +11 -8
  84. package/build/features/connect/screens/NID/NID.js +1 -1
  85. package/build/features/connect/screens/OperatorError/OperatorError.js +1 -1
  86. package/build/features/connectExpress/ConnectExpress.js +2 -1
  87. package/build/features/connectExpress/screens/AuthenticationList/AuthenticationList.js +5 -2
  88. package/build/features/connectExpress/screens/AuthenticationList/EntityLicenseType.d.ts +9 -0
  89. package/build/features/connectExpress/screens/AuthenticationList/EntityLicenseType.js +90 -0
  90. package/build/features/connectExpress/screens/AuthenticationList/EntityList.js +6 -1
  91. package/build/features/connectExpress/screens/AuthenticationList/validation.d.ts +3 -0
  92. package/build/features/connectExpress/screens/AuthenticationList/validation.js +10 -0
  93. package/build/features/connectExpress/screens/BusinessCountry/BusinessCountry.js +7 -1
  94. package/build/features/connectExpress/screens/CivilID/CivilID.js +1 -1
  95. package/build/features/connectExpress/screens/CivilIDMissed/CivilID.js +1 -1
  96. package/build/features/connectExpress/screens/CollectBusinessInfo/CollectBusinessInfo.js +1 -1
  97. package/build/features/connectExpress/screens/CollectIndividualInfo/CollectIndividualInfo.js +1 -1
  98. package/build/features/connectExpress/screens/CollectIndividualInfo/Email.js +3 -1
  99. package/build/features/connectExpress/screens/CreateAccountLoader/CreateAccountLoader.js +14 -24
  100. package/build/features/connectExpress/screens/Mobile/Mobile.js +9 -2
  101. package/build/features/connectExpress/screens/NID/NID.js +1 -1
  102. package/build/features/connectExpress/screens/NIDMissed/NID.js +1 -1
  103. package/build/features/connectExpress/screens/OperatorError/OperatorError.d.ts +5 -0
  104. package/build/features/connectExpress/screens/OperatorError/OperatorError.js +9 -0
  105. package/build/features/connectExpress/screens/OperatorError/index.d.ts +3 -0
  106. package/build/features/connectExpress/screens/OperatorError/index.js +2 -0
  107. package/build/features/connectExpress/screens/PrepareDataLoading/PrepareDataLoading.d.ts +5 -0
  108. package/build/features/connectExpress/screens/PrepareDataLoading/PrepareDataLoading.js +34 -0
  109. package/build/features/connectExpress/screens/PrepareDataLoading/index.d.ts +2 -0
  110. package/build/features/connectExpress/screens/PrepareDataLoading/index.js +2 -0
  111. package/build/features/connectExpress/screens/SuccessWithFlowButtons/SuccessWithFlowButtons.js +2 -2
  112. package/build/features/entity/Entity.d.ts +1 -0
  113. package/build/features/entity/Entity.js +7 -4
  114. package/build/features/entity/screens/EntityCapital/CapitalPaid.js +8 -4
  115. package/build/features/entity/screens/EntityCapital/CapitalShareValue.js +8 -4
  116. package/build/features/entity/screens/EntityCapital/EntityCapital.js +34 -10
  117. package/build/features/entity/screens/EntityName/EntityName.js +32 -15
  118. package/build/features/entity/screens/OperatorError/OperatorError.d.ts +5 -0
  119. package/build/features/entity/screens/OperatorError/OperatorError.js +9 -0
  120. package/build/features/entity/screens/OperatorError/index.d.ts +3 -0
  121. package/build/features/entity/screens/OperatorError/index.js +2 -0
  122. package/build/features/entity/screens/SuccessWithFlowButtons/SuccessWithFlowButtons.js +2 -2
  123. package/build/features/entity/screens/Verify/Verify.js +1 -1
  124. package/build/features/featuresScreens.js +67 -7
  125. package/build/features/individual/Individual.d.ts +1 -0
  126. package/build/features/individual/Individual.js +7 -4
  127. package/build/features/individual/screens/AdditionalIndividualInfo/AdditionalIndividualInfo.js +54 -14
  128. package/build/features/individual/screens/AdditionalIndividualInfo/IsAuthorizedSwitch.d.ts +14 -0
  129. package/build/features/individual/screens/AdditionalIndividualInfo/IsAuthorizedSwitch.js +76 -0
  130. package/build/features/individual/screens/AdditionalIndividualInfo/MonthlyIncome.js +5 -2
  131. package/build/features/individual/screens/AdditionalIndividualInfo/ShareValue.js +8 -3
  132. package/build/features/individual/screens/AdditionalIndividualInfo/validation.d.ts +4 -1
  133. package/build/features/individual/screens/AdditionalIndividualInfo/validation.js +3 -2
  134. package/build/features/individual/screens/IndividualList/Email.js +3 -2
  135. package/build/features/individual/screens/IndividualList/IndividualList.js +18 -5
  136. package/build/features/individual/screens/IndividualList/UserList.js +13 -9
  137. package/build/features/individual/screens/IndividualPersonalInfo/Email.js +4 -2
  138. package/build/features/individual/screens/IndividualPersonalInfo/IndividualPersonalInfo.js +76 -20
  139. package/build/features/individual/screens/IndividualPhoneInfo/PhoneInfo.js +1 -1
  140. package/build/features/individual/screens/OperatorError/OperatorError.d.ts +5 -0
  141. package/build/features/individual/screens/OperatorError/OperatorError.js +9 -0
  142. package/build/features/individual/screens/OperatorError/index.d.ts +3 -0
  143. package/build/features/individual/screens/OperatorError/index.js +2 -0
  144. package/build/features/individual/screens/SuccessWithFlowButtons/SuccessWithFlowButtons.js +2 -2
  145. package/build/features/individual/screens/Verify/Verify.js +1 -1
  146. package/build/features/password/Password.d.ts +1 -0
  147. package/build/features/password/Password.js +75 -28
  148. package/build/features/password/screens/CreatePassword/CreatePassword.js +8 -4
  149. package/build/features/password/screens/OTP/OTP.js +1 -1
  150. package/build/features/password/screens/OperatorError/OperatorError.d.ts +5 -0
  151. package/build/features/password/screens/OperatorError/OperatorError.js +9 -0
  152. package/build/features/password/screens/OperatorError/index.d.ts +3 -0
  153. package/build/features/password/screens/OperatorError/index.js +2 -0
  154. package/build/features/password/screens/PrepareDataLoading/PrepareDataLoading.d.ts +4 -0
  155. package/build/features/password/screens/PrepareDataLoading/PrepareDataLoading.js +10 -0
  156. package/build/features/password/screens/PrepareDataLoading/index.d.ts +2 -0
  157. package/build/features/password/screens/PrepareDataLoading/index.js +2 -0
  158. package/build/features/password/screens/SuccessWithFlowButtons/SuccessWithFlowButtons.js +2 -2
  159. package/build/features/password/screens/Verify/Verify.js +5 -5
  160. package/build/features/shared/Button/FlowsButtons.js +13 -3
  161. package/build/features/shared/Containers/FeatureContainer.d.ts +1 -0
  162. package/build/features/shared/Containers/FeatureContainer.js +3 -3
  163. package/build/features/shared/SuccessFlowButtons/SuccessFlowButtons.d.ts +5 -1
  164. package/build/features/shared/SuccessFlowButtons/SuccessFlowButtons.js +3 -3
  165. package/build/features/signIn/SignIn.js +12 -3
  166. package/build/features/signIn/screens/OperatorError/OperatorError.d.ts +5 -0
  167. package/build/features/signIn/screens/OperatorError/OperatorError.js +9 -0
  168. package/build/features/signIn/screens/OperatorError/index.d.ts +3 -0
  169. package/build/features/signIn/screens/OperatorError/index.js +2 -0
  170. package/build/features/tax/Tax.d.ts +1 -0
  171. package/build/features/tax/Tax.js +7 -4
  172. package/build/features/tax/screens/OperatorError/OperatorError.d.ts +5 -0
  173. package/build/features/tax/screens/OperatorError/OperatorError.js +9 -0
  174. package/build/features/tax/screens/OperatorError/index.d.ts +3 -0
  175. package/build/features/tax/screens/OperatorError/index.js +2 -0
  176. package/build/features/tax/screens/SuccessWithFlowButtons/SuccessWithFlowButtons.js +2 -2
  177. package/build/features/tax/screens/TaxDetails/TaxDetails.js +7 -2
  178. package/build/features/tax/screens/Verify/Verify.js +5 -5
  179. package/build/hooks/index.d.ts +1 -0
  180. package/build/hooks/index.js +1 -0
  181. package/build/hooks/useFormDirtyCheck.d.ts +10 -0
  182. package/build/hooks/useFormDirtyCheck.js +66 -0
  183. package/build/hooks/useVerifyToken.d.ts +5 -2
  184. package/build/hooks/useVerifyToken.js +10 -5
  185. package/build/utils/common.js +4 -4
  186. package/build/utils/locale.js +2 -1
  187. package/build/utils/string.d.ts +5 -2
  188. package/build/utils/string.js +34 -5
  189. package/package.json +2 -2
@@ -0,0 +1,3 @@
1
+ import OperatorError, { OperatorErrorProps } from './OperatorError';
2
+ export type { OperatorErrorProps };
3
+ export default OperatorError;
@@ -0,0 +1,2 @@
1
+ import OperatorError from './OperatorError';
2
+ export default OperatorError;
@@ -21,10 +21,10 @@ var SuccessWithFlowButtons = function () {
21
21
  var _a = useAppSelector(brandSelector), data = _a.data, loading = _a.loading;
22
22
  var settingsData = useAppSelector(settingsSelector).data;
23
23
  var isScopeAuthentication = settingsData.appConfig.scope === SCOPE_AUTH;
24
- var _b = data.verify.responseBody || {}, flows = _b.flows, entity = _b.entity, brand = _b.brand, bank = _b.bank_account, merchant = _b.merchant, user = _b.user, business = _b.business, board_id = _b.board_id, board_info_id = _b.board_info_id, name = _b.name, individuals = _b.individuals;
24
+ var _b = data.verify.responseBody || {}, flows = _b.flows, entity = _b.entity, brand = _b.brand, bank = _b.bank_account, merchant = _b.merchant, user = _b.user, business = _b.business, board_id = _b.board_id, board_info_id = _b.board_info_id, name = _b.name, individuals = _b.individuals, recipient = _b.recipient;
25
25
  var onClose = function () {
26
26
  dispatch(onCloseCompleteBrand());
27
27
  };
28
- return (_jsx(SuccessFlowButtons, { flowName: data.flowName, loading: loading, bank: bank, brand: brand, entity: entity, merchant: merchant, user: __assign({ names: { en: name } }, user), business: business, boardId: board_id, boardInfoId: board_info_id, individuals: individuals, flows: flows || [], onClose: isScopeAuthentication ? onClose : undefined }));
28
+ return (_jsx(SuccessFlowButtons, { flowName: data.flowName, loading: loading, bank: bank, brand: brand, entity: entity, merchant: merchant, user: __assign({ names: { en: name } }, user), business: business, boardId: board_id, boardInfoId: board_info_id, individuals: individuals, flows: flows || [], onClose: isScopeAuthentication ? onClose : undefined, recipient: recipient }));
29
29
  };
30
30
  export default memo(SuccessWithFlowButtons);
@@ -72,7 +72,7 @@ var VerifyNumber = function (_a) {
72
72
  var onSubmit = function (formData) {
73
73
  dispatch(verifyBrandLeadOTP(deepCopy(formData)));
74
74
  };
75
- var disabled = !methods.formState.isValid || !!error || !phone || resendLoading;
75
+ var disabled = !methods.formState.isValid || !phone || resendLoading;
76
76
  return (_jsx(ScreenContainer, { children: _jsx(FormProvider, __assign({}, methods, { children: _jsxs(FormStyled, __assign({ onSubmit: methods.handleSubmit(onSubmit) }, { children: [_jsx(OTPTitleContainerStyled, { children: _jsxs(OTPTitleStyled, { children: [loading ? t('ide_otp_waiting_title') : t('ide_opt_sent_title'), !loading && phone && _jsx("span", __assign({ dir: 'ltr' }, { children: "".concat(maskPhone(phone || '')) }))] }) }), _jsx(OTPInput, { loading: resendLoading, setLoading: setResendLoading }), _jsx(Button, __assign({ disableBack: true, disabled: disabled, isAr: isAr, loading: loading, error: t(error || '') }, { children: t('next') }))] })) })) }));
77
77
  };
78
78
  export default React.memo(VerifyNumber);
@@ -13,7 +13,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
13
13
  import { memo, useEffect } from 'react';
14
14
  import { createRoot } from 'react-dom/client';
15
15
  import { useAppTheme, useAppDispatch, useAppSelector, useAppConfig, useErrorListener, useStepStartedListener } from '../../hooks';
16
- import { handleLanguage, settingsSelector } from '../../app/settings';
16
+ import { handleCurrentActiveScreen, handleLanguage, settingsSelector } from '../../app/settings';
17
17
  import { FeatureContainer } from '../shared/Containers';
18
18
  import { businessSelector, verifyLeadToken } from '../app/business/businessStore';
19
19
  import AnimationFlow from '../../components/AnimationFlow';
@@ -47,9 +47,14 @@ var Business = memo(function (props) {
47
47
  dispatch(verifyLeadToken(token));
48
48
  };
49
49
  useEffect(function () {
50
- if (!settingLoading && open)
51
- verifyToken();
52
- }, [settingLoading]);
50
+ if (settingLoading || !open)
51
+ return;
52
+ if (!data.isValidOperator) {
53
+ dispatch(handleCurrentActiveScreen('BUSINESS_OPERATOR_ERROR_STEP'));
54
+ return;
55
+ }
56
+ verifyToken();
57
+ }, [data.isValidOperator, settingLoading]);
53
58
  return (_jsx(ThemeProvider, __assign({ theme: theme }, { children: _jsx(Background, __assign({ open: open, isTapOrigin: isTapOrigin, loading: settingLoading || customLoading }, { children: _jsx(AnimationFlow, __assign({ pointerEvents: loading ? 'none' : 'auto', isTapOrigin: isTapOrigin, loading: settingLoading || customLoading, error: error, open: open, breakpoint: 'sm', screenId: activeScreen.name, merchantInfo: merchant, isMaturityExpress: isMaturityExpress, dialogEdgeFormat: data.appConfig.dialogEdgeFormat, features: appConfig.features }, { children: _jsx(FeatureContainer, __assign({ isMaturityExpress: isMaturityExpress }, { children: businessFeatureScreens.map(function (_a, index) {
54
59
  var Element = _a.element, name = _a.name;
55
60
  var isActive = activeScreen.name === name;
@@ -18,9 +18,9 @@ import { useAppDispatch, useLanguage, useAppSelector, useSetFromDefaultValues, u
18
18
  import Form from '../../../../components/Form';
19
19
  import { yupResolver } from '@hookform/resolvers/yup';
20
20
  import { useTranslation } from 'react-i18next';
21
- import { handlePrevScreenStep } from '../../../../app/settings';
21
+ import { handlePrevScreenStep, settingsSelector } from '../../../../app/settings';
22
22
  import Button from '../../../shared/Button';
23
- import { deepCopy } from '../../../../utils';
23
+ import { deepCopy, sendCustomEventToGTM } from '../../../../utils';
24
24
  import { ScreenContainer } from '../../../shared/Containers';
25
25
  import Collapse from '../../../../components/Collapse';
26
26
  import OperationStartDate from './OperationStartDate';
@@ -36,6 +36,7 @@ var Activities = function () {
36
36
  var _b = React.useState(false), anchorEl = _b[0], setAnchorEl = _b[1];
37
37
  var _c = React.useState(false), collapse = _c[0], setCollapse = _c[1];
38
38
  var dispatch = useAppDispatch();
39
+ var settingsData = useAppSelector(settingsSelector).data;
39
40
  var isAr = useLanguage().isAr;
40
41
  var t = useTranslation().t;
41
42
  var _d = useAppSelector(businessSelector), data = _d.data, loading = _d.loading, error = _d.error;
@@ -64,6 +65,14 @@ var Activities = function () {
64
65
  var onBack = function () {
65
66
  dispatch(handlePrevScreenStep());
66
67
  };
68
+ React.useEffect(function () {
69
+ sendCustomEventToGTM({
70
+ event: 'Send Event',
71
+ event_category: 'Account Creation Flow',
72
+ event_action: 'Brand Activities Details Page',
73
+ event_label: settingsData.businessCountry.iso2
74
+ });
75
+ }, []);
67
76
  React.useEffect(function () {
68
77
  if (error)
69
78
  dispatch(clearError());
@@ -72,7 +81,7 @@ var Activities = function () {
72
81
  anchorEl ? setAnchorEl(false) : setAnchorEl(true);
73
82
  };
74
83
  var isOperationStartDateVerified = dataVerified['operations.business_start_date'] && (operations === null || operations === void 0 ? void 0 : operations.business_start_date) === methods.watch('operationStartDate');
75
- var disabled = !methods.formState.isValid || !!error;
84
+ var disabled = !methods.formState.isValid;
76
85
  return (_jsx(ScreenContainer, { children: _jsx(FormProvider, __assign({}, methods, { children: _jsxs(FormStyled, __assign({ onSubmit: methods.handleSubmit(onSubmit) }, { children: [_jsx(Collapse, __assign({ in: !collapse && !anchorEl }, { children: _jsx(LicenseName, {}) })), _jsx(Collapse, __assign({ in: !collapse }, { children: _jsx(ActivitiesList, { readOnly: readOnly['activities'] || noneEditable['activities'], onListOpen: function () { return handleMenuClick(); }, onListClose: function () { return handleMenuClick(); } }) })), _jsx(Collapse, __assign({ in: !anchorEl }, { children: _jsx(OperationStartDate, { isVerified: isOperationStartDateVerified, readOnly: readOnly['operationStartDate'] || noneEditable['operations.business_start_date'], onDateClicked: handleCollapseOpenClose }) })), _jsx(Collapse, __assign({ in: !collapse && !anchorEl }, { children: _jsx(Button, __assign({ disableBack: true, onBackClicked: function () { return onBack(); }, isAr: isAr, disabled: disabled, loading: loading, error: t(error || '') }, { children: t('next') })) }))] })) })) }));
77
86
  };
78
87
  export default Activities;
@@ -23,7 +23,7 @@ import ScreenContainer from '../../../shared/Containers/ScreenContainer';
23
23
  import { businessSelector, clearError, updateLeadBusinessType } from '../../../app/business/businessStore';
24
24
  import { BusinessType as Type } from '../../../../@types';
25
25
  import Button from '../../../shared/Button';
26
- import { deepCopy, isKW, isOtherLicense, isOtherThanKWOrSA, isSA } from '../../../../utils';
26
+ import { deepCopy, isKW, isOtherLicense, isOtherThanKWOrSA, isSA, sendCustomEventToGTM } from '../../../../utils';
27
27
  import { KWLicenseValidationSchema, LicenseValidationSchema, OtherCountryLicenseValidationSchema } from './validation';
28
28
  import LicenseList from './LicenseList';
29
29
  import LicenseCertificate from './LicenseCertificate';
@@ -46,6 +46,14 @@ var BusinessType = function (_a) {
46
46
  var isAr = useLanguage().isAr;
47
47
  var dispatch = useAppDispatch();
48
48
  var _d = React.useState(), listActive = _d[0], setListActive = _d[1];
49
+ React.useEffect(function () {
50
+ sendCustomEventToGTM({
51
+ event: 'Send Event',
52
+ event_category: 'Account Creation Flow',
53
+ event_action: 'CR Page',
54
+ event_label: settingsData.businessCountry.iso2
55
+ });
56
+ }, []);
49
57
  var handleMenuClick = function (flag) {
50
58
  setListActive(flag);
51
59
  };
@@ -99,7 +107,7 @@ var BusinessType = function (_a) {
99
107
  var hasEntityList = !!(entityLicenseList === null || entityLicenseList === void 0 ? void 0 : entityLicenseList.length);
100
108
  var showLicenseList = hasEntityList ? (isSACountry || isOtherCountry) && isOtherLicense(selectedLicenseEntity) : isSACountry || isOtherCountry;
101
109
  var showEntityList = isKWCountry ? hasEntityList && !isLicenseListActive && isCR : hasEntityList && !isLicenseListActive;
102
- var disabled = !methods.formState.isValid || !!error || uploading || uploadingArticle;
110
+ var disabled = !methods.formState.isValid || uploading || uploadingArticle;
103
111
  var disableBack = !data.otpData.isNID;
104
112
  return (_jsx(ScreenContainer, { children: _jsx(FormProvider, __assign({}, methods, { children: _jsxs(Form, __assign({ onSubmit: methods.handleSubmit(onSubmit) }, { children: [_jsx(LicenseType, { show: !listActive && isKWCountry }), _jsx(EntityLicenseList, { show: showEntityList, onListOpen: function () { return handleMenuClick(ListType.EntityLicenseList); }, onListClose: function () { return handleMenuClick(); } }), _jsx(LicenseList, { show: showLicenseList && !isEntityLicenseListActive, onListOpen: function () { return handleMenuClick(ListType.LicenseList); }, onListClose: function () { return handleMenuClick(); } }), _jsx(EntityName, { show: !isAnyListActive && isKWCountry && isCR }), _jsx(LicenseNumber, { show: isKWCountry ? !isAnyListActive && isCR : !isAnyListActive }), _jsx(LicenseCertificate, { show: !isAnyListActive && isKWCountry && isCR }), _jsx(Article, { show: !isAnyListActive && isKWCountry && isCR }), _jsx(Collapse, __assign({ in: !isAnyListActive, timeout: 500 }, { children: _jsx(Button, __assign({ disableBack: disableBack, onBackClicked: function () { return onBack(); }, isAr: isAr, disabled: disabled, loading: loading, error: t(error || '') }, { children: t('next') })) }))] })) })) }));
105
113
  };
@@ -62,7 +62,7 @@ var CivilID = function (_a) {
62
62
  if (error)
63
63
  dispatch(clearError());
64
64
  };
65
- var disabled = !methods.formState.isValid || !!error;
65
+ var disabled = !methods.formState.isValid;
66
66
  return (_jsx(ScreenContainer, { children: _jsx(FormProvider, __assign({}, methods, { children: _jsxs(FormStyled, __assign({ onSubmit: methods.handleSubmit(onSubmit) }, { children: [_jsx(IDNumber, { sx: { mb: 7.5, transition: 'mb 0.3s' } }), _jsx(Button, __assign({ loading: loading, isAr: isAr, disableBack: true, disabled: disabled || settingsStore.loading, error: t(error || '') }, { children: t('next') }))] })) })) }));
67
67
  };
68
68
  export default React.memo(CivilID);
@@ -17,7 +17,7 @@ import { useTranslation } from 'react-i18next';
17
17
  import { useForm, FormProvider } from 'react-hook-form';
18
18
  import { yupResolver } from '@hookform/resolvers/yup';
19
19
  import { useAppDispatch, useAppSelector, useDataNoneEditable, useDataVerified, useExcludeReadOnlyFelids, useFormErrorAndUpdateReadOnly, useFormReadOnly, useSetFromDefaultValues } from '../../../../hooks';
20
- import { handlePrevScreenStep } from '../../../../app/settings';
20
+ import { handlePrevScreenStep, settingsSelector } from '../../../../app/settings';
21
21
  import { CustomerInfoValidation } from './validation';
22
22
  import Form from '../../../../components/Form';
23
23
  import Button from '../../../shared/Button';
@@ -30,7 +30,7 @@ import TransactionPolicy from './TransactionPolicy';
30
30
  import { ScreenContainer } from '../../../shared/Containers';
31
31
  import Collapse from '../../../../components/Collapse';
32
32
  import { businessSelector, clearError, updateCustomersInfo } from '../../../app/business/businessStore';
33
- import { deepCopy } from '../../../../utils';
33
+ import { deepCopy, sendCustomEventToGTM } from '../../../../utils';
34
34
  var FormStyled = styled(Form)(function () { return ({
35
35
  display: 'flex',
36
36
  flexDirection: 'column'
@@ -45,6 +45,7 @@ var Customers = function (_a) {
45
45
  var _b, _c, _d, _e, _f;
46
46
  var _g = React.useState(), listActive = _g[0], setListActive = _g[1];
47
47
  var dispatch = useAppDispatch();
48
+ var settingsData = useAppSelector(settingsSelector).data;
48
49
  var _h = useAppSelector(businessSelector), data = _h.data, loading = _h.loading, error = _h.error;
49
50
  var _j = data.customersData, customerLocations = _j.customerLocations, expectedCustomer = _j.expectedCustomer, expectedSale = _j.expectedSale, refundPolicy = _j.refundPolicy, transactionPolicy = _j.transactionPolicy;
50
51
  var _k = ((_b = data.verify.responseBody) === null || _b === void 0 ? void 0 : _b.brand) || {}, data_status = _k.data_status, data_verification = _k.data_verification, operations = _k.operations, terms = _k.terms;
@@ -75,6 +76,14 @@ var Customers = function (_a) {
75
76
  'operations.sales_range'
76
77
  ]);
77
78
  var getFelids = useExcludeReadOnlyFelids(methods, readOnly).getFelids;
79
+ React.useEffect(function () {
80
+ sendCustomEventToGTM({
81
+ event: 'Send Event',
82
+ event_category: 'Account Creation Flow',
83
+ event_action: 'Business Market and Size Details Page',
84
+ event_label: settingsData.businessCountry.iso2
85
+ });
86
+ }, []);
78
87
  React.useEffect(function () {
79
88
  var _a, _b;
80
89
  var isTermsAgreed = !!((_b = (_a = terms === null || terms === void 0 ? void 0 : terms.find) === null || _a === void 0 ? void 0 : _a.call(terms, function (_a) {
@@ -127,7 +136,7 @@ var Customers = function (_a) {
127
136
  var whenNotSelectExpectedCustomers = !isCustomerLocationsListActive && !isExpectedSalesListActive;
128
137
  var whenNotSelectExpectedSales = !isCustomerLocationsListActive && !isExpectedCustomersListActive;
129
138
  var isAnyListSelected = !isExpectedCustomersListActive && !isCustomerLocationsListActive && !isExpectedSalesListActive;
130
- var disabled = !methods.formState.isValid || !!error;
139
+ var disabled = !methods.formState.isValid;
131
140
  return (_jsx(ScreenContainer, { children: _jsx(FormProvider, __assign({}, methods, { children: _jsxs(FormStyled, __assign({ onSubmit: methods.handleSubmit(onSubmit) }, { children: [_jsx(CustomerLocations, { readOnly: readOnly['customerLocations'] || noneEditable['operations.customer_base_location'], show: whenNotSelectCustomersLocation, onListOpen: function () { return handleMenuClick(ListType.CustomerLocationsList); }, onListClose: function () { return handleMenuClick(); }, isVerified: isCustomerLocationsVerified }), _jsx(ExpectedCustomers, { readOnly: readOnly['expectedCustomer'] || noneEditable['operations.customer_base'], show: whenNotSelectExpectedCustomers, onListOpen: function () { return handleMenuClick(ListType.ExpectedCustomersList); }, onListClose: function () { return handleMenuClick(); }, isVerified: isExpectedCustomersVerified }), _jsx(ExpectedSales, { readOnly: readOnly['expectedSale'] || noneEditable['operations.sales_range'], show: whenNotSelectExpectedSales, onListOpen: function () { return handleMenuClick(ListType.ExpectedSalesList); }, onListClose: function () { return handleMenuClick(); }, isVerified: isExpectedSalesRangeVerified }), _jsxs(Collapse, __assign({ in: isAnyListSelected }, { children: [_jsx(RefundPolicy, { readOnly: readOnly['refundPolicy'] || noneEditable['terms'] }), _jsx(TransactionPolicy, { readOnly: readOnly['transactionPolicy'] || noneEditable['terms'] }), _jsx(Box, __assign({ sx: { mt: 2 } }, { children: _jsx(Button, __assign({ onBackClicked: function () { return onBack(); }, isAr: isAr, disabled: disabled, loading: loading, error: t(error || '') }, { children: t('next') })) }))] }))] })) })) }));
132
141
  };
133
142
  export default React.memo(Customers);
@@ -22,7 +22,7 @@ import Collapse from '../../../../components/Collapse';
22
22
  import ExpandIcon from '../../../../components/ExpandIcon';
23
23
  import { EndAdornmentExpanded } from '../../../shared/EndAdornment';
24
24
  import { businessSelector, clearError } from '../../../app/business/businessStore';
25
- import { isExist } from '../../../../utils';
25
+ import { getCurrencyByCountryIso2, isExist } from '../../../../utils';
26
26
  import { ScreenContainer } from '../../../shared/Containers';
27
27
  import Search from '../../../shared/Search';
28
28
  import InputSelect from '../../../shared/InputSelect';
@@ -66,7 +66,7 @@ var ExpectedSalesRange = function (_a) {
66
66
  var expectedSaleControl = useController({ name: 'expectedSale', control: control });
67
67
  var _e = useAppSelector(businessSelector), data = _e.data, error = _e.error;
68
68
  var settingsData = useAppSelector(settingsSelector).data;
69
- var activitiesData = data.activitiesData, currency = data.currency;
69
+ var activitiesData = data.activitiesData;
70
70
  var expectedSales = (activitiesData.responseBody || {}).expectedSales;
71
71
  var expectedSalesRangeValue = expectedSaleControl.field.value;
72
72
  var countryCode = settingsData.businessCountry;
@@ -121,8 +121,11 @@ var ExpectedSalesRange = function (_a) {
121
121
  if (item)
122
122
  setSubIndex(item.id);
123
123
  }, [anchorEl, expectedSalesRangeValue]);
124
+ var getCurrency = React.useMemo(function () {
125
+ return t(getCurrencyByCountryIso2(countryCode.iso2));
126
+ }, [countryCode.iso2]);
124
127
  return (_jsx(Collapse, __assign({ in: show }, { children: _jsxs(ScreenContainer, { children: [_jsx(InputLabelStyled, { children: t('expected_sales_monthly', {
125
- currency: t(currency)
128
+ currency: getCurrency
126
129
  }) }), _jsx(InputStyled, { readOnly: readOnly, value: (isAr ? expectedSalesRangeValue === null || expectedSalesRangeValue === void 0 ? void 0 : expectedSalesRangeValue.name.ar : expectedSalesRangeValue === null || expectedSalesRangeValue === void 0 ? void 0 : expectedSalesRangeValue.name.en) || '', onClick: !!anchorEl ? handleCloseMainMenu : handleOpenMainMenu, placeholder: t('choose_expected_sales'), endAdornment: _jsx(EndAdornmentExpanded, { anchorEl: anchorEl, isVerified: isVerified }) }), _jsxs(Collapse, __assign({ in: !!anchorEl }, { children: [_jsx(Search, { onSearchValue: handleSearch }), _jsx(SimpleListStyled, { sx: { maxHeight: '350px', paddingTop: 0 }, list: expectedSalesRangeList, listItemProps: { sx: { padding: 0 } }, onSelectItem: function (item) {
127
130
  var isOnlyOneItem = !item.sub || item.sub.length === 1;
128
131
  if (isOnlyOneItem)
@@ -22,7 +22,7 @@ import Button from '../../../shared/Button';
22
22
  import { ScreenContainer } from '../../../shared/Containers';
23
23
  import { businessSelector, clearError, updateLeadIdentity } from '../../../app/business/businessStore';
24
24
  import Collapse from '../../../../components/Collapse';
25
- import { deepCopy, isOtherThanKWOrSA } from '../../../../utils';
25
+ import { deepCopy, isOtherThanKWOrSA, sendCustomEventToGTM } from '../../../../utils';
26
26
  import { NIDOtherCountryValidationSchema, NIDValidationSchema } from './validation';
27
27
  import ID from './ID';
28
28
  import DOB from './DOB';
@@ -44,6 +44,14 @@ var IDBOD = function (_a) {
44
44
  mode: 'onChange'
45
45
  });
46
46
  useSetFromDefaultValues(methods, data.nidData);
47
+ React.useEffect(function () {
48
+ sendCustomEventToGTM({
49
+ event: 'Send Event',
50
+ event_category: 'Account Creation Flow',
51
+ event_action: 'ID Details Step',
52
+ event_label: settingsData.businessCountry.iso2
53
+ });
54
+ }, []);
47
55
  React.useEffect(function () {
48
56
  if (error)
49
57
  dispatch(clearError());
@@ -54,7 +62,7 @@ var IDBOD = function (_a) {
54
62
  var handleCollapseOpenClose = function (flag) {
55
63
  setCollapse(flag);
56
64
  };
57
- var disabled = !methods.formState.isValid || !!error;
65
+ var disabled = !methods.formState.isValid;
58
66
  return (_jsx(ScreenContainer, { children: _jsx(FormProvider, __assign({}, methods, { children: _jsxs(FormStyled, __assign({ onSubmit: methods.handleSubmit(onSubmit) }, { children: [_jsx(Collapse, __assign({ in: !collapse }, { children: _jsx(ID, {}) })), _jsx(DOB, { onDateClicked: handleCollapseOpenClose }), _jsx(Collapse, __assign({ in: !collapse }, { children: _jsx(Button, __assign({ loading: loading, disableBack: true, isAr: isAr, disabled: disabled, error: t(error || '') }, { children: t('next') })) }))] })) })) }));
59
67
  };
60
68
  export default React.memo(IDBOD);
@@ -82,7 +82,7 @@ var OTP = function (_a) {
82
82
  var onBack = function () {
83
83
  dispatch(handlePrevScreenStep());
84
84
  };
85
- var disabled = !methods.formState.isValid || !!error;
85
+ var disabled = !methods.formState.isValid;
86
86
  var idNumber = data.nidData.nid;
87
87
  return (_jsx(ScreenContainer, { children: _jsx(FormProvider, __assign({}, methods, { children: _jsxs(FormStyled, __assign({ onSubmit: methods.handleSubmit(onSubmit) }, { children: [_jsx(OTPTitleContainerStyled, { children: _jsxs(OTPTitleStyled, { children: [loading ? t('ide_otp_waiting_title') : t('opt_nid_sent_title', { provider: 'ABSHER' }), ' ', !loading && _jsx("span", __assign({ dir: 'ltr' }, { children: "".concat(maskID(idNumber || '')) }))] }) }), _jsx(OTPInput, {}), _jsx(Button, __assign({ onBackClicked: function () { return onBack(); }, disabled: disabled, isAr: isAr, loading: loading, error: t(error || '') }, { children: t('next') }))] })) })) }));
88
88
  };
@@ -0,0 +1,5 @@
1
+ import * as React from 'react';
2
+ export interface OperatorErrorProps {
3
+ }
4
+ declare const _default: React.MemoExoticComponent<({}: OperatorErrorProps) => import("react/jsx-runtime").JSX.Element>;
5
+ export default _default;
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import * as React from 'react';
3
+ import { useTranslation } from 'react-i18next';
4
+ import GenericError from '../../../shared/GenericError';
5
+ var OperatorError = function (_a) {
6
+ var t = useTranslation().t;
7
+ return _jsx(GenericError, { error: t('operator_is_invalid'), errorTitle: t('oops') });
8
+ };
9
+ export default React.memo(OperatorError);
@@ -0,0 +1,3 @@
1
+ import OperatorError, { OperatorErrorProps } from './OperatorError';
2
+ export type { OperatorErrorProps };
3
+ export default OperatorError;
@@ -0,0 +1,2 @@
1
+ import OperatorError from './OperatorError';
2
+ export default OperatorError;
@@ -10,13 +10,24 @@ var __assign = (this && this.__assign) || function () {
10
10
  return __assign.apply(this, arguments);
11
11
  };
12
12
  import { jsx as _jsx } from "react/jsx-runtime";
13
- import { memo } from 'react';
13
+ import React, { memo } from 'react';
14
14
  import { useAppSelector } from '../../../../hooks';
15
15
  import { businessSelector } from '../../../app/business/businessStore';
16
16
  import SuccessFlowButtons from '../../../shared/SuccessFlowButtons';
17
+ import { sendCustomEventToGTM } from '../../../../utils';
18
+ import { settingsSelector } from '../../../../app/settings';
17
19
  var SuccessWithFlowButtons = function () {
18
20
  var data = useAppSelector(businessSelector).data;
19
- var _a = data.verify.responseBody || {}, flows = _a.flows, entity = _a.entity, brand = _a.brand, bank = _a.bank_account, merchant = _a.merchant, user = _a.user, business = _a.business, board_id = _a.board_id, board_info_id = _a.board_info_id, name = _a.name, individuals = _a.individuals;
20
- return (_jsx(SuccessFlowButtons, { flowName: data.flowName, bank: bank, brand: brand, entity: entity, merchant: merchant, user: __assign({ names: { en: name } }, user), business: business, boardId: board_id, individuals: individuals, boardInfoId: board_info_id, flows: flows || [] }));
21
+ var settingsData = useAppSelector(settingsSelector).data;
22
+ var _a = data.verify.responseBody || {}, flows = _a.flows, entity = _a.entity, brand = _a.brand, bank = _a.bank_account, merchant = _a.merchant, user = _a.user, business = _a.business, board_id = _a.board_id, board_info_id = _a.board_info_id, name = _a.name, individuals = _a.individuals, recipient = _a.recipient;
23
+ React.useEffect(function () {
24
+ sendCustomEventToGTM({
25
+ event: 'Send Event',
26
+ event_category: 'Account Creation Flow',
27
+ event_action: 'Board Page View',
28
+ event_label: settingsData.businessCountry.iso2
29
+ });
30
+ }, []);
31
+ return (_jsx(SuccessFlowButtons, { flowName: data.flowName, bank: bank, brand: brand, entity: entity, merchant: merchant, user: __assign({ names: { en: name } }, user), business: business, boardId: board_id, individuals: individuals, boardInfoId: board_info_id, flows: flows || [], recipient: recipient }));
21
32
  };
22
33
  export default memo(SuccessWithFlowButtons);
@@ -17,9 +17,9 @@ import { useForm, FormProvider } from 'react-hook-form';
17
17
  import { yupResolver } from '@hookform/resolvers/yup';
18
18
  import Box from '@mui/material/Box/Box';
19
19
  import { styled } from '@mui/material/styles';
20
- import { handlePrevScreenStep } from '../../../../app/settings';
20
+ import { handlePrevScreenStep, settingsSelector } from '../../../../app/settings';
21
21
  import { useLanguage } from '../../../../hooks';
22
- import { deepCopy, maskPhone } from '../../../../utils';
22
+ import { deepCopy, maskPhone, sendCustomEventToGTM } from '../../../../utils';
23
23
  import Form from '../../../../components/Form';
24
24
  import Text from '../../../../components/Text';
25
25
  import { ScreenContainer } from '../../../shared/Containers';
@@ -49,6 +49,7 @@ var FormStyled = styled(Form)(function () { return ({
49
49
  var VerifyNumber = function (_a) {
50
50
  var _b, _c;
51
51
  var dispatch = useAppDispatch();
52
+ var settingsData = useAppSelector(settingsSelector).data;
52
53
  var _d = useAppSelector(businessSelector), data = _d.data, loading = _d.loading, error = _d.error;
53
54
  var methods = useForm({
54
55
  resolver: yupResolver(OTPValidation),
@@ -59,6 +60,15 @@ var VerifyNumber = function (_a) {
59
60
  var isAr = useLanguage().isAr;
60
61
  var _e = React.useState(false), resendLoading = _e[0], setResendLoading = _e[1];
61
62
  var phone = (_c = (_b = data.verify.responseBody) === null || _b === void 0 ? void 0 : _b.verification_by) === null || _c === void 0 ? void 0 : _c.sent_to;
63
+ React.useEffect(function () {
64
+ var _a;
65
+ sendCustomEventToGTM({
66
+ event: 'Send Event',
67
+ event_category: 'Account Creation Flow',
68
+ event_action: 'Business OTP Step',
69
+ event_label: (_a = settingsData.businessCountry) === null || _a === void 0 ? void 0 : _a.iso2
70
+ });
71
+ }, []);
62
72
  React.useEffect(function () {
63
73
  if (error && methods.formState.isValid && phone)
64
74
  dispatch(clearError());
@@ -72,7 +82,7 @@ var VerifyNumber = function (_a) {
72
82
  var onBack = function () {
73
83
  dispatch(handlePrevScreenStep());
74
84
  };
75
- var disabled = !methods.formState.isValid || !!error || !phone || resendLoading;
85
+ var disabled = !methods.formState.isValid || !phone || resendLoading;
76
86
  return (_jsx(ScreenContainer, { children: _jsx(FormProvider, __assign({}, methods, { children: _jsxs(FormStyled, __assign({ onSubmit: methods.handleSubmit(onSubmit) }, { children: [_jsx(OTPTitleContainerStyled, { children: _jsxs(OTPTitleStyled, { children: [loading ? t('ide_otp_waiting_title') : t('ide_opt_sent_title'), !loading && phone && _jsx("span", __assign({ dir: 'ltr' }, { children: "".concat(maskPhone(phone || '')) }))] }) }), _jsx(OTPInput, { loading: resendLoading, setLoading: setResendLoading }), _jsx(Button, __assign({ disableBack: true, onBackClicked: function () { return onBack(); }, disabled: disabled, isAr: isAr, loading: loading, error: t(error || '') }, { children: t('next') }))] })) })) }));
77
87
  };
78
88
  export default React.memo(VerifyNumber);
@@ -89,7 +89,8 @@ var Connect = memo(function (props) {
89
89
  React.useEffect(function () {
90
90
  initializeGTM();
91
91
  sendPageView({
92
- title: 'Connect'
92
+ title: 'Connect',
93
+ connect_flow: 'Normal'
93
94
  });
94
95
  if (props.leadId) {
95
96
  dispatch(storeLeadId(props.leadId));
@@ -124,7 +125,7 @@ var Connect = memo(function (props) {
124
125
  event: 'Send Event',
125
126
  event_category: 'User Registration Flow',
126
127
  event_action: 'Registration Landing Page Viewed',
127
- event_value: (_b = data.businessCountry) === null || _b === void 0 ? void 0 : _b.iso2
128
+ event_label: (_b = data.businessCountry) === null || _b === void 0 ? void 0 : _b.iso2
128
129
  });
129
130
  sendCustomDimension({
130
131
  event: 'PageView',
@@ -56,7 +56,7 @@ var BrandSegment = function (_a) {
56
56
  if (error)
57
57
  dispatch(clearError());
58
58
  }, [methods.formState.isValid]);
59
- var disabled = !methods.formState.isValid || !!error;
59
+ var disabled = !methods.formState.isValid;
60
60
  return (_jsx(ScreenContainer, { children: _jsx(FormProvider, __assign({}, methods, { children: _jsxs(Form, __assign({ onSubmit: methods.handleSubmit(onSubmit) }, { children: [_jsx(TeamSize, { show: true, onListOpen: function () { return setListActive(true); }, onListClose: function () { return setListActive(false); } }), _jsx(Collapse, __assign({ in: !listActive, timeout: 500 }, { children: _jsx(Button, __assign({ onBackClicked: function () { return onBack(); }, disabled: disabled, isAr: isAr, error: t(error || ''), loading: loading }, { children: t('next') })) }))] })) })) }));
61
61
  };
62
62
  export default React.memo(BrandSegment);
@@ -52,7 +52,7 @@ import { useAppSelector, useAppDispatch, useLanguage } from '../../../../hooks';
52
52
  import { ScreenContainer } from '../../../shared/Containers';
53
53
  import BusinessCountry from '../../../shared/BusinessCountry';
54
54
  import Button from '../../../shared/Button';
55
- import { findCountryByIso2, isKW, isOtherThanKWOrSA, updateLocationUrlWithCountry } from '../../../../utils';
55
+ import { findCountryByIso2, isKW, isOtherThanKWOrSA, sendCustomEventToGTM, updateLocationUrlWithCountry } from '../../../../utils';
56
56
  import Collapse from '../../../../components/Collapse';
57
57
  import { handleNextScreenStep, handleSetCountryByIso2, settingsSelector } from '../../../../app/settings';
58
58
  import { connectSelector, setDefaultCountryCode, updateBusinessCountry, storeIsStartFromBusinessCountry, clearError } from '../../../app/connect/connectStore';
@@ -81,7 +81,14 @@ var BusinessCountryScreen = function (_a) {
81
81
  return [2];
82
82
  countryCode = findCountryByIso2(settingsData.countries, iso2);
83
83
  dispatch(handleSetCountryByIso2(iso2));
84
- updateLocationUrlWithCountry(iso2);
84
+ sendCustomEventToGTM({
85
+ event: 'Send Event',
86
+ event_category: 'User Registration Flow',
87
+ event_action: 'Country selection page view',
88
+ event_label: iso2
89
+ });
90
+ if (settingsData.appConfig.mode !== 'popup')
91
+ updateLocationUrlWithCountry(iso2);
85
92
  if (!data.leadId) return [3, 2];
86
93
  return [4, dispatch(updateBusinessCountry(iso2))];
87
94
  case 1:
@@ -97,7 +97,7 @@ var CivilID = function (_a) {
97
97
  React.useEffect(function () {
98
98
  dispatch(resetStore());
99
99
  }, []);
100
- var disabled = !methods.formState.isValid || !!error;
100
+ var disabled = !methods.formState.isValid;
101
101
  return (_jsx(ScreenContainer, { children: _jsx(FormProvider, __assign({}, methods, { children: _jsxs(FormStyled, __assign({ onSubmit: methods.handleSubmit(onSubmit) }, { children: [_jsx(IDNumber, { sx: { mb: methods.formState.isValid ? 7.5 : 0, transition: 'mb 0.3s' } }), _jsx(Button, __assign({ loading: loading, isAr: isAr, onBackClicked: onBackToCountryList, disableBack: !data.isStartFromBusinessCountry, disabled: disabled || settingsStore.loading, error: t(error || '') }, { children: t('next') })), _jsxs(Collapse, __assign({ in: !methods.formState.isValid }, { children: [_jsxs(OrBoxStyled, { children: [_jsx(DividerStyled, {}), _jsx(TextStyled, { children: t('or') }), _jsx(DividerStyled, {})] }), _jsx(MobileButton, __assign({ onClick: function () { return onBack(); }, disabled: loading || settingsStore.loading }, { children: t('mobile_button_label') }))] }))] })) })) }));
102
102
  };
103
103
  export default React.memo(CivilID);
@@ -53,6 +53,7 @@ import { useController, useFormContext } from 'react-hook-form';
53
53
  import { useTranslation } from 'react-i18next';
54
54
  import { styled } from '@mui/material/styles';
55
55
  import { useAppDispatch, useAppSelector } from '../../../../hooks';
56
+ import { removeAllOtherThanCharsNumbersAtAndDot } from '../../../../utils';
56
57
  import Collapse from '../../../../components/Collapse';
57
58
  import { ScreenContainer } from '../../../shared/Containers';
58
59
  import Input from '../../../shared/Input';
@@ -89,7 +90,8 @@ var Email = function (_a) {
89
90
  });
90
91
  }); }, 500);
91
92
  var handleEmailChange = function (event) {
92
- emailControl.field.onChange(event.target.value);
93
+ var value = removeAllOtherThanCharsNumbersAtAndDot(event.target.value);
94
+ emailControl.field.onChange(value);
93
95
  };
94
96
  React.useEffect(function () {
95
97
  var isValid = emailValue && !error && emailValue.length > 3;
@@ -100,7 +100,7 @@ var Individual = function (_a) {
100
100
  }, [responseBody]);
101
101
  var isLeadEmailAvailable = (contact === null || contact === void 0 ? void 0 : contact.email) === methods.watch('email');
102
102
  var isEmailValid = typeof is_available === 'undefined' ? isLeadEmailAvailable : is_available;
103
- var emailErrChecks = !methods.formState.isValid || !!methods.formState.errors.email || !!error;
103
+ var emailErrChecks = !methods.formState.isValid || !!methods.formState.errors.email;
104
104
  var disabled = emailErrChecks || emailChecking || !isEmailValid;
105
105
  return (_jsx(ScreenContainer, { children: _jsx(FormProvider, __assign({}, methods, { children: _jsxs(FormStyled, __assign({ onSubmit: methods.handleSubmit(onSubmit) }, { children: [_jsx(Name, { show: !listActive }), _jsx(MobileNumber, { show: !isMobile, onListOpen: function () { return handleMenuListClick(); }, onListClose: function () { return handleMenuListClick(); }, countries: settingsData.countries }), _jsx(Email, { show: !listActive, fetchingEmail: function (v) { return setEmailChecking(v); }, emailChecking: emailChecking }), _jsx(Collapse, __assign({ in: !listActive }, { children: _jsx(Button, __assign({ onBackClicked: function () { return onBack(); }, disabled: disabled, isAr: isAr, loading: loading, error: t(error || '') }, { children: t('next') })) }))] })) })) }));
106
106
  };
@@ -60,9 +60,9 @@ var BrandList = function (_a) {
60
60
  setAnchorEl(null);
61
61
  (_a = rest.onListClose) === null || _a === void 0 ? void 0 : _a.call(rest);
62
62
  };
63
- var getBrandName = function (_a) {
64
- var name = _a.name;
65
- return (isAr ? name === null || name === void 0 ? void 0 : name.ar : name === null || name === void 0 ? void 0 : name.en) || '';
63
+ var getBrandName = function (brand) {
64
+ var _a, _b;
65
+ return (isAr ? (_a = brand === null || brand === void 0 ? void 0 : brand.name) === null || _a === void 0 ? void 0 : _a.ar : (_b = brand === null || brand === void 0 ? void 0 : brand.name) === null || _b === void 0 ? void 0 : _b.en) || '';
66
66
  };
67
67
  var getBrandId = function (item) {
68
68
  return item.id || '';
@@ -84,7 +84,7 @@ var Merchant = function (_a) {
84
84
  if (termAndConditionChecked === true)
85
85
  methods.setValue('termAndConditionChecked', termAndConditionChecked);
86
86
  }, [termAndConditionChecked]);
87
- var brandErrChecks = !methods.formState.isValid || !!methods.formState.errors.brandName || !!error;
87
+ var brandErrChecks = !methods.formState.isValid || !!methods.formState.errors.brandName;
88
88
  var disabled = brandErrChecks || brandNameChecking || ((_c = data.brandData.responseBody) === null || _c === void 0 ? void 0 : _c.response_code) === '5';
89
89
  var hasBrandList = (brandList === null || brandList === void 0 ? void 0 : brandList.length) > 0;
90
90
  var isOtherBrand = (brandListItem === null || brandListItem === void 0 ? void 0 : brandListItem.id) === 'other' && hasBrandList;
@@ -15,7 +15,7 @@ var SalesChannels = function (_a) {
15
15
  var channelList = (responseBody || {}).channel_list;
16
16
  var selectedBrandControl = getValues('selectedBrandItem');
17
17
  React.useEffect(function () {
18
- if (selectedBrandItem.id) {
18
+ if (selectedBrandItem === null || selectedBrandItem === void 0 ? void 0 : selectedBrandItem.id) {
19
19
  setValue('selectedBrandItem', selectedBrandItem);
20
20
  var sales = mapSalesChannel(selectedBrandItem.channel_services || []);
21
21
  field.onChange(sales);
@@ -74,12 +74,12 @@ var ListType;
74
74
  ListType["CountryCodeList"] = "CountryCodeList";
75
75
  })(ListType || (ListType = {}));
76
76
  var Mobile = function (_a) {
77
- var _b, _c;
77
+ var _b;
78
78
  var settingsStore = useAppSelector(settingsSelector);
79
- var _d = useAppSelector(connectSelector), data = _d.data, loading = _d.loading, error = _d.error;
80
- var _e = React.useState(), listType = _e[0], setListType = _e[1];
79
+ var _c = useAppSelector(connectSelector), data = _c.data, loading = _c.loading, error = _c.error;
80
+ var _d = React.useState(), listType = _d[0], setListType = _d[1];
81
81
  var dispatch = useAppDispatch();
82
- var _f = data.mobileData, mobile = _f.mobile, countryCode = _f.countryCode, termAndConditionChecked = _f.termAndConditionChecked;
82
+ var _e = data.mobileData, mobile = _e.mobile, countryCode = _e.countryCode, termAndConditionChecked = _e.termAndConditionChecked;
83
83
  var methods = useForm({
84
84
  resolver: yupResolver(PhoneValidationSchema),
85
85
  defaultValues: {
@@ -92,6 +92,7 @@ var Mobile = function (_a) {
92
92
  useSetFromDefaultValues(methods, data.mobileData);
93
93
  var t = useTranslation().t;
94
94
  var isAr = useLanguage().isAr;
95
+ var country = (_b = settingsStore.data.businessCountry) === null || _b === void 0 ? void 0 : _b.iso2;
95
96
  var handleMenuListClick = function (flag) {
96
97
  setListType(flag);
97
98
  };
@@ -107,13 +108,15 @@ var Mobile = function (_a) {
107
108
  dispatch(resetNIDScreen());
108
109
  dispatch(resetCivilScreen());
109
110
  };
110
- var isKWCountry = React.useMemo(function () { var _a; return isKW((_a = settingsStore.data.businessCountry) === null || _a === void 0 ? void 0 : _a.iso2); }, [(_b = settingsStore.data.businessCountry) === null || _b === void 0 ? void 0 : _b.iso2]);
111
- var isOtherThanKWOrSACountry = React.useMemo(function () { var _a; return isOtherThanKWOrSA((_a = settingsStore.data.businessCountry) === null || _a === void 0 ? void 0 : _a.iso2); }, [(_c = settingsStore.data.businessCountry) === null || _c === void 0 ? void 0 : _c.iso2]);
111
+ var isKWCountry = React.useMemo(function () { return isKW(country); }, [country]);
112
+ var isOtherThanKWOrSACountry = React.useMemo(function () { return isOtherThanKWOrSA(country); }, [country]);
112
113
  var onBack = function () {
114
+ var eventAction = isKWCountry ? 'PACI Click' : 'Abser Click';
113
115
  sendCustomEventToGTM({
114
116
  event: 'Send Event',
115
117
  event_category: 'User Registration Flow',
116
- event_action: 'Switch to ID Login Clicked'
118
+ event_action: eventAction,
119
+ event_label: country
117
120
  });
118
121
  dispatch(handlePrevScreenStep(isKWCountry ? 'CONNECT_CIVIL_ID_STEP' : 'CONNECT_NID_STEP'));
119
122
  };
@@ -126,7 +129,7 @@ var Mobile = function (_a) {
126
129
  var isBusinessListActive = listType === ListType.BusinessList;
127
130
  var isCountryListActive = listType === ListType.CountryCodeList;
128
131
  var listActive = isBusinessListActive || isCountryListActive;
129
- var disabled = !methods.formState.isValid || !!error;
132
+ var disabled = !methods.formState.isValid;
130
133
  var title = t('join_our_community');
131
134
  var subTitle = t('ide_terms_and_conditions_description');
132
135
  return (_jsxs(ScreenContainer, { children: [(title || subTitle) && _jsx(MIDTitle, { show: !listActive, title: title, description: subTitle }), _jsx(FormProvider, __assign({}, methods, { children: _jsxs(FormStyled, __assign({ onSubmit: methods.handleSubmit(onSubmit) }, { children: [_jsx(InputsContainerStyled, { children: _jsx(MobileNumber, { show: !isBusinessListActive, countries: settingsStore.data.countries, onListOpen: function () { return handleMenuListClick(ListType.CountryCodeList); }, onListClose: function () { return handleMenuListClick(); } }) }), _jsxs(Collapse, __assign({ in: !listActive }, { children: [_jsx(Button, __assign({ isAr: isAr, onBackClicked: onBackToCountryList, disableBack: !data.isStartFromBusinessCountry, disabled: disabled || settingsStore.loading, loading: loading, error: t(error || '') }, { children: t('next') })), _jsxs(Collapse, __assign({ in: !methods.formState.isValid && !isOtherThanKWOrSACountry }, { children: [_jsxs(OrBoxStyled, { children: [_jsx(DividerStyled, {}), _jsx(TextStyled, { children: t('or') }), _jsx(DividerStyled, {})] }), isKWCountry ? (_jsx(MobileButton, __assign({ disabled: settingsStore.loading || loading, onClick: function () { return onBack(); }, icon: ICONS_NAMES.PACI_ICON }, { children: t('paci_button_label') }))) : (_jsx(AbsherButton, __assign({ disabled: settingsStore.loading || loading, onClick: function () { return onBack(); } }, { children: t('absher_button_label') })))] }))] }))] })) }))] }));
@@ -101,7 +101,7 @@ var NID = function (_a) {
101
101
  React.useEffect(function () {
102
102
  dispatch(resetStore());
103
103
  }, []);
104
- var disabled = !methods.formState.isValid || !!error;
104
+ var disabled = !methods.formState.isValid;
105
105
  return (_jsx(ScreenContainer, { children: _jsx(FormProvider, __assign({}, methods, { children: _jsxs(FormStyled, __assign({ onSubmit: methods.handleSubmit(onSubmit) }, { children: [_jsx(Collapse, __assign({ in: !collapse }, { children: _jsx(IDNumber, { show: !collapse }) })), _jsx(DOB, { onDateClicked: handleCollapseOpenClose }), _jsxs(Collapse, __assign({ in: !collapse }, { children: [_jsx(Button, __assign({ loading: loading, isAr: isAr, onBackClicked: onBackToCountryList, disableBack: !data.isStartFromBusinessCountry, disabled: disabled || settingsStore.loading, error: t(error || '') }, { children: t('next') })), _jsxs(Collapse, __assign({ in: !methods.formState.isValid }, { children: [_jsxs(OrBoxStyled, { children: [_jsx(DividerStyled, {}), _jsx(TextStyled, { children: t('or') }), _jsx(DividerStyled, {})] }), _jsx(MobileButton, __assign({ onClick: function () { return onBack(); }, disabled: loading || settingsStore.loading }, { children: t('mobile_button_label') }))] }))] }))] })) })) }));
106
106
  };
107
107
  export default React.memo(NID);
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import * as React from 'react';
3
3
  import { useTranslation } from 'react-i18next';
4
- import GenericError from '../../../../features/shared/GenericError';
4
+ import GenericError from '../../../shared/GenericError';
5
5
  var OperatorError = function (_a) {
6
6
  var t = useTranslation().t;
7
7
  return _jsx(GenericError, { error: t('operator_is_invalid'), errorTitle: t('oops') });
@@ -99,7 +99,8 @@ var ConnectExpress = memo(function (_a) {
99
99
  React.useEffect(function () {
100
100
  initializeGTM();
101
101
  sendPageView({
102
- title: 'Connect Express'
102
+ title: 'Connect Express',
103
+ connect_flow: 'Express'
103
104
  });
104
105
  }, []);
105
106
  React.useEffect(function () {