@tap-payments/auth-jsconnect 2.1.29-test → 2.1.31-test
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/@types/form.d.ts +8 -0
- package/build/api/individual.d.ts +1 -0
- package/build/features/app/individual/individualStore.d.ts +15 -1
- package/build/features/app/individual/individualStore.js +103 -14
- package/build/features/app/password/passwordStore.d.ts +7 -0
- package/build/features/app/password/passwordStore.js +12 -5
- package/build/features/bank/screens/ResetPasswordSuccess/ResetPasswordSuccess.js +9 -2
- package/build/features/brand/screens/BrandActivities/ExpectedSalesRange.js +7 -2
- package/build/features/brand/screens/ResetPasswordSuccess/ResetPasswordSuccess.js +9 -2
- package/build/features/business/screens/Customers/ExpectedSalesRange.js +7 -2
- package/build/features/business/screens/ResetPasswordSuccess/ResetPasswordSuccess.js +9 -2
- package/build/features/entity/screens/ResetPasswordSuccess/ResetPasswordSuccess.js +9 -2
- package/build/features/individual/screens/AdditionalIndividualInfo/AdditionalIndividualInfo.js +8 -17
- package/build/features/individual/screens/AdditionalIndividualInfo/CivilIDFile.d.ts +3 -0
- package/build/features/individual/screens/AdditionalIndividualInfo/CivilIDFile.js +67 -0
- package/build/features/individual/screens/AdditionalIndividualInfo/SignatureFile.d.ts +6 -0
- package/build/features/individual/screens/AdditionalIndividualInfo/SignatureFile.js +78 -0
- package/build/features/individual/screens/AdditionalIndividualInfo/validation.d.ts +12 -0
- package/build/features/individual/screens/AdditionalIndividualInfo/validation.js +27 -0
- package/build/features/individual/screens/ResetPasswordSuccess/ResetPasswordSuccess.js +9 -2
- package/build/features/password/screens/ResetPasswordSuccess/ResetPasswordSuccess.js +9 -2
- package/build/features/password/screens/Success/Success.js +0 -1
- package/build/features/tax/screens/ResetPasswordSuccess/ResetPasswordSuccess.js +9 -2
- package/package.json +129 -129
package/build/@types/form.d.ts
CHANGED
|
@@ -89,6 +89,14 @@ export declare type IndividualExtraFormValues = {
|
|
|
89
89
|
isPEP: boolean | null;
|
|
90
90
|
isInfluencer: boolean | null;
|
|
91
91
|
};
|
|
92
|
+
export declare type IndividualAttachmentsFormValues = {
|
|
93
|
+
civilID?: string;
|
|
94
|
+
civilIDFile?: Array<File>;
|
|
95
|
+
signatureFileId?: string;
|
|
96
|
+
signatureFile?: Array<File>;
|
|
97
|
+
civilIDUploading?: boolean;
|
|
98
|
+
signatureFileUploading?: boolean;
|
|
99
|
+
};
|
|
92
100
|
export declare type PasswordCreateFormValues = {
|
|
93
101
|
password: string;
|
|
94
102
|
confirmPassword: string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { RootState } from '../../../app/store';
|
|
2
|
-
import { CountryCode, FlowsTypes, IndividualExtraFormValues, OTPFormValues, ResponseData, SharedState } from '../../../@types';
|
|
2
|
+
import { CountryCode, FlowsTypes, IndividualAttachmentsFormValues, IndividualExtraFormValues, OTPFormValues, ResponseData, SharedState } from '../../../@types';
|
|
3
3
|
export declare const verifyLeadToken: import("@reduxjs/toolkit").AsyncThunk<{
|
|
4
4
|
data: any;
|
|
5
5
|
boardResponse: {
|
|
@@ -8,6 +8,7 @@ export declare const verifyLeadToken: import("@reduxjs/toolkit").AsyncThunk<{
|
|
|
8
8
|
bank_account: any;
|
|
9
9
|
entity: any;
|
|
10
10
|
merchant: any;
|
|
11
|
+
merchant_id: any;
|
|
11
12
|
name: any;
|
|
12
13
|
contact: any;
|
|
13
14
|
countries: CountryCode[];
|
|
@@ -40,6 +41,7 @@ export declare const verifyLeadOTP: import("@reduxjs/toolkit").AsyncThunk<{
|
|
|
40
41
|
bank_account: any;
|
|
41
42
|
entity: any;
|
|
42
43
|
merchant: any;
|
|
44
|
+
merchant_id: any;
|
|
43
45
|
name: any;
|
|
44
46
|
contact: any;
|
|
45
47
|
countries: CountryCode[];
|
|
@@ -59,6 +61,17 @@ export declare const updateIndividualInfo: import("@reduxjs/toolkit").AsyncThunk
|
|
|
59
61
|
data: any;
|
|
60
62
|
formData: IndividualExtraFormValues;
|
|
61
63
|
}, IndividualExtraFormValues, {}>;
|
|
64
|
+
interface UploadFileParams {
|
|
65
|
+
file: File;
|
|
66
|
+
onProgress?: (value: number) => void;
|
|
67
|
+
title?: string;
|
|
68
|
+
}
|
|
69
|
+
export declare const uploadCivilIdFile: import("@reduxjs/toolkit").AsyncThunk<{
|
|
70
|
+
data: any;
|
|
71
|
+
}, UploadFileParams, {}>;
|
|
72
|
+
export declare const uploadSignatureFile: import("@reduxjs/toolkit").AsyncThunk<{
|
|
73
|
+
data: any;
|
|
74
|
+
}, UploadFileParams, {}>;
|
|
62
75
|
export declare const updateBoardSuccess: import("@reduxjs/toolkit").AsyncThunk<{
|
|
63
76
|
response: any;
|
|
64
77
|
formData: void;
|
|
@@ -70,6 +83,7 @@ export interface IndividualData {
|
|
|
70
83
|
verify: ResponseData & VerifyData;
|
|
71
84
|
otpData: OTPFormValues & ResponseData;
|
|
72
85
|
individualData: IndividualExtraFormValues & ResponseData;
|
|
86
|
+
attachmentsData: IndividualAttachmentsFormValues & ResponseData;
|
|
73
87
|
flowName: FlowsTypes;
|
|
74
88
|
}
|
|
75
89
|
export interface IndividualState extends SharedState<IndividualData> {
|
|
@@ -123,6 +123,7 @@ export var verifyLeadToken = createAsyncThunk('individualVerifyLeadToken', funct
|
|
|
123
123
|
bank_account: boardData === null || boardData === void 0 ? void 0 : boardData.bank_account,
|
|
124
124
|
entity: boardData === null || boardData === void 0 ? void 0 : boardData.entity,
|
|
125
125
|
merchant: boardData === null || boardData === void 0 ? void 0 : boardData.merchant,
|
|
126
|
+
merchant_id: boardInfoData === null || boardInfoData === void 0 ? void 0 : boardInfoData.merchant_id,
|
|
126
127
|
name: (_d = boardData === null || boardData === void 0 ? void 0 : boardData.user) === null || _d === void 0 ? void 0 : _d.names,
|
|
127
128
|
contact: (_e = boardData === null || boardData === void 0 ? void 0 : boardData.user) === null || _e === void 0 ? void 0 : _e.contact,
|
|
128
129
|
countries: countries,
|
|
@@ -260,6 +261,7 @@ export var verifyLeadOTP = createAsyncThunk('verifyIndividualLeadOTP', function
|
|
|
260
261
|
bank_account: boardData === null || boardData === void 0 ? void 0 : boardData.bank_account,
|
|
261
262
|
entity: boardData === null || boardData === void 0 ? void 0 : boardData.entity,
|
|
262
263
|
merchant: boardData === null || boardData === void 0 ? void 0 : boardData.merchant,
|
|
264
|
+
merchant_id: boardInfoData === null || boardInfoData === void 0 ? void 0 : boardInfoData.merchant_id,
|
|
263
265
|
name: (_j = boardData === null || boardData === void 0 ? void 0 : boardData.user) === null || _j === void 0 ? void 0 : _j.names,
|
|
264
266
|
contact: (_k = boardData === null || boardData === void 0 ? void 0 : boardData.user) === null || _k === void 0 ? void 0 : _k.contact,
|
|
265
267
|
countries: countries,
|
|
@@ -273,37 +275,92 @@ export var verifyLeadOTP = createAsyncThunk('verifyIndividualLeadOTP', function
|
|
|
273
275
|
});
|
|
274
276
|
}); });
|
|
275
277
|
export var updateIndividualInfo = createAsyncThunk('updateIndividualInfo', function (params, thunkApi) { return __awaiter(void 0, void 0, void 0, function () {
|
|
276
|
-
var _a, settings, individual, _b, id, type, requestBody, data;
|
|
277
|
-
var
|
|
278
|
-
return __generator(this, function (
|
|
279
|
-
switch (
|
|
278
|
+
var _a, settings, individual, _b, id, type, _c, civilID, signatureFileId, documentBody, requestBody, data;
|
|
279
|
+
var _d, _e, _f, _g, _h, _j, _k, _l;
|
|
280
|
+
return __generator(this, function (_m) {
|
|
281
|
+
switch (_m.label) {
|
|
280
282
|
case 0:
|
|
281
283
|
_a = thunkApi.getState(), settings = _a.settings, individual = _a.individual;
|
|
282
|
-
_b = ((
|
|
284
|
+
_b = ((_e = (_d = individual.data.verify.responseBody) === null || _d === void 0 ? void 0 : _d.notification) === null || _e === void 0 ? void 0 : _e.recipient) || {}, id = _b.id, type = _b.type;
|
|
285
|
+
_c = individual.data.attachmentsData, civilID = _c.civilID, signatureFileId = _c.signatureFileId;
|
|
286
|
+
documentBody = [];
|
|
287
|
+
if (!!civilID)
|
|
288
|
+
documentBody.push(civilID);
|
|
289
|
+
if (!!signatureFileId)
|
|
290
|
+
documentBody.push(signatureFileId);
|
|
283
291
|
requestBody = {
|
|
284
292
|
id: id,
|
|
285
293
|
type: type,
|
|
286
|
-
occupation: { id: (
|
|
294
|
+
occupation: { id: (_f = params.occupation) === null || _f === void 0 ? void 0 : _f.id },
|
|
287
295
|
employer_name: params.employerName,
|
|
288
|
-
employer_country: (
|
|
289
|
-
source_income: [{ id: (
|
|
290
|
-
monthly_income: { id: (
|
|
296
|
+
employer_country: (_g = params.employerLocation) === null || _g === void 0 ? void 0 : _g.iso2,
|
|
297
|
+
source_income: [{ id: (_h = params.sourceIncome) === null || _h === void 0 ? void 0 : _h.id }],
|
|
298
|
+
monthly_income: { id: (_j = params.monthlyIncome) === null || _j === void 0 ? void 0 : _j.id },
|
|
291
299
|
is_relative_PEP: params.isPEP,
|
|
292
300
|
is_influencer: params.isInfluencer,
|
|
301
|
+
documents: documentBody,
|
|
293
302
|
encryption_contract: ['employer_name', 'employer_country'],
|
|
294
303
|
step_name: INDIVIDUAl_STEP_NAMES.INDIVIDUAl_INFO
|
|
295
304
|
};
|
|
296
305
|
return [4, API.individualService.updateIndividual(requestBody)];
|
|
297
306
|
case 1:
|
|
298
|
-
data = (
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
(_k = (_j = settings.data.appConfig).onStepCompleted) === null || _k === void 0 ? void 0 : _k.call(_j, settings.data.activeScreen.name, requestBody);
|
|
302
|
-
}
|
|
307
|
+
data = (_m.sent()).data;
|
|
308
|
+
thunkApi.dispatch(handleNextScreenStep());
|
|
309
|
+
(_l = (_k = settings.data.appConfig).onStepCompleted) === null || _l === void 0 ? void 0 : _l.call(_k, settings.data.activeScreen.name, requestBody);
|
|
303
310
|
return [2, { data: data, formData: params }];
|
|
304
311
|
}
|
|
305
312
|
});
|
|
306
313
|
}); });
|
|
314
|
+
export var uploadCivilIdFile = createAsyncThunk('uploadCivilIdFile', function (_a) {
|
|
315
|
+
var file = _a.file, onProgress = _a.onProgress, title = _a.title;
|
|
316
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
317
|
+
var uploadPayload, onUploadProgress, data;
|
|
318
|
+
return __generator(this, function (_b) {
|
|
319
|
+
switch (_b.label) {
|
|
320
|
+
case 0:
|
|
321
|
+
uploadPayload = {
|
|
322
|
+
file_link_create: false,
|
|
323
|
+
title: title,
|
|
324
|
+
purpose: 'identity_document',
|
|
325
|
+
file: file
|
|
326
|
+
};
|
|
327
|
+
onUploadProgress = function (progressEvent) {
|
|
328
|
+
var progress = ((progressEvent === null || progressEvent === void 0 ? void 0 : progressEvent.loaded) / (progressEvent === null || progressEvent === void 0 ? void 0 : progressEvent.total)) * 100;
|
|
329
|
+
onProgress === null || onProgress === void 0 ? void 0 : onProgress(Math.floor(progress));
|
|
330
|
+
};
|
|
331
|
+
return [4, API.entityService.uploadFileInfo(uploadPayload, { onUploadProgress: onUploadProgress })];
|
|
332
|
+
case 1:
|
|
333
|
+
data = _b.sent();
|
|
334
|
+
return [2, { data: data }];
|
|
335
|
+
}
|
|
336
|
+
});
|
|
337
|
+
});
|
|
338
|
+
});
|
|
339
|
+
export var uploadSignatureFile = createAsyncThunk('uploadSignatureFile', function (_a) {
|
|
340
|
+
var file = _a.file, onProgress = _a.onProgress;
|
|
341
|
+
return __awaiter(void 0, void 0, void 0, function () {
|
|
342
|
+
var uploadPayload, onUploadProgress, data;
|
|
343
|
+
return __generator(this, function (_b) {
|
|
344
|
+
switch (_b.label) {
|
|
345
|
+
case 0:
|
|
346
|
+
uploadPayload = {
|
|
347
|
+
file_link_create: false,
|
|
348
|
+
title: 'Merchant Signature',
|
|
349
|
+
purpose: 'customer_signature',
|
|
350
|
+
file: file
|
|
351
|
+
};
|
|
352
|
+
onUploadProgress = function (progressEvent) {
|
|
353
|
+
var progress = ((progressEvent === null || progressEvent === void 0 ? void 0 : progressEvent.loaded) / (progressEvent === null || progressEvent === void 0 ? void 0 : progressEvent.total)) * 100;
|
|
354
|
+
onProgress === null || onProgress === void 0 ? void 0 : onProgress(Math.floor(progress));
|
|
355
|
+
};
|
|
356
|
+
return [4, API.entityService.uploadFileInfo(uploadPayload, { onUploadProgress: onUploadProgress })];
|
|
357
|
+
case 1:
|
|
358
|
+
data = _b.sent();
|
|
359
|
+
return [2, { data: data }];
|
|
360
|
+
}
|
|
361
|
+
});
|
|
362
|
+
});
|
|
363
|
+
});
|
|
307
364
|
export var updateBoardSuccess = createAsyncThunk('individualUpdateBoardSuccess', function (params, thunkApi) { return __awaiter(void 0, void 0, void 0, function () {
|
|
308
365
|
var _a, settings, individual, _b, id, infoId, payload, data, boardInfoStatus;
|
|
309
366
|
var _c, _d, _e, _f;
|
|
@@ -354,6 +411,10 @@ var initialState = {
|
|
|
354
411
|
employerLocation: undefined,
|
|
355
412
|
isPEP: null,
|
|
356
413
|
isInfluencer: null
|
|
414
|
+
},
|
|
415
|
+
attachmentsData: {
|
|
416
|
+
civilIDUploading: false,
|
|
417
|
+
signatureFileUploading: false
|
|
357
418
|
}
|
|
358
419
|
}
|
|
359
420
|
};
|
|
@@ -511,6 +572,34 @@ export var individualSlice = createSlice({
|
|
|
511
572
|
.addCase(retrieveBoardDetails.rejected, function (state, action) {
|
|
512
573
|
state.error = action.error.message;
|
|
513
574
|
state.loading = false;
|
|
575
|
+
})
|
|
576
|
+
.addCase(uploadCivilIdFile.pending, function (state) {
|
|
577
|
+
state.error = null;
|
|
578
|
+
state.data.attachmentsData.civilIDUploading = true;
|
|
579
|
+
})
|
|
580
|
+
.addCase(uploadCivilIdFile.fulfilled, function (state, action) {
|
|
581
|
+
state.error = null;
|
|
582
|
+
state.data.attachmentsData.civilIDUploading = false;
|
|
583
|
+
var data = action.payload.data;
|
|
584
|
+
state.data.attachmentsData.civilID = data === null || data === void 0 ? void 0 : data.id;
|
|
585
|
+
})
|
|
586
|
+
.addCase(uploadCivilIdFile.rejected, function (state) {
|
|
587
|
+
state.data.attachmentsData.civilIDUploading = false;
|
|
588
|
+
state.error = 'file_upload_error';
|
|
589
|
+
})
|
|
590
|
+
.addCase(uploadSignatureFile.pending, function (state) {
|
|
591
|
+
state.error = null;
|
|
592
|
+
state.data.attachmentsData.signatureFileUploading = true;
|
|
593
|
+
})
|
|
594
|
+
.addCase(uploadSignatureFile.fulfilled, function (state, action) {
|
|
595
|
+
state.error = null;
|
|
596
|
+
state.data.attachmentsData.signatureFileUploading = false;
|
|
597
|
+
var data = action.payload.data;
|
|
598
|
+
state.data.attachmentsData.signatureFileId = data === null || data === void 0 ? void 0 : data.id;
|
|
599
|
+
})
|
|
600
|
+
.addCase(uploadSignatureFile.rejected, function (state) {
|
|
601
|
+
state.data.attachmentsData.signatureFileUploading = false;
|
|
602
|
+
state.error = 'file_upload_error';
|
|
514
603
|
})
|
|
515
604
|
.addCase(updateBoardSuccess.fulfilled, function (state, action) {
|
|
516
605
|
var _a;
|
|
@@ -55,6 +55,13 @@ export declare const resetPassword: import("@reduxjs/toolkit").AsyncThunk<{
|
|
|
55
55
|
}, OTPFormValues, {}>;
|
|
56
56
|
export declare const retrieveBoardResetPasswordSuccess: import("@reduxjs/toolkit").AsyncThunk<{
|
|
57
57
|
id: any;
|
|
58
|
+
response: {
|
|
59
|
+
flows: {
|
|
60
|
+
name: string;
|
|
61
|
+
status: string;
|
|
62
|
+
url: string;
|
|
63
|
+
}[];
|
|
64
|
+
};
|
|
58
65
|
}, void, {}>;
|
|
59
66
|
declare type VerifyData = {
|
|
60
67
|
token: string;
|
|
@@ -211,6 +211,7 @@ export var updateBoardSuccess = createAsyncThunk('passwordUpdateBoardSuccess', f
|
|
|
211
211
|
_g.sent();
|
|
212
212
|
(_d = (_c = settings.data.appConfig).onStepCompleted) === null || _d === void 0 ? void 0 : _d.call(_c, settings.data.activeScreen.name, params);
|
|
213
213
|
(_f = (_e = settings.data.appConfig).onFlowCompleted) === null || _f === void 0 ? void 0 : _f.call(_e, { data: data });
|
|
214
|
+
thunkApi.dispatch(handleNextScreenStep());
|
|
214
215
|
return [2, { response: __assign(__assign({}, data), { flows: BUSINESS_FLOW_SUCCESS.concat((boardInfoData === null || boardInfoData === void 0 ? void 0 : boardInfoData.info) || []) }), formData: params }];
|
|
215
216
|
}
|
|
216
217
|
});
|
|
@@ -288,20 +289,23 @@ export var resetPassword = createAsyncThunk('resetPassword', function (params, t
|
|
|
288
289
|
});
|
|
289
290
|
}); });
|
|
290
291
|
export var retrieveBoardResetPasswordSuccess = createAsyncThunk('retrieveBoardResetPasswordSuccess', function (params, thunkApi) { return __awaiter(void 0, void 0, void 0, function () {
|
|
291
|
-
var _a, password, settings, id;
|
|
292
|
+
var _a, password, settings, id, boardInfoData;
|
|
292
293
|
var _b, _c, _d, _e;
|
|
293
294
|
return __generator(this, function (_f) {
|
|
294
295
|
switch (_f.label) {
|
|
295
296
|
case 0:
|
|
296
297
|
_a = thunkApi.getState(), password = _a.password, settings = _a.settings;
|
|
297
298
|
id = (password.data.verify.responseBody || { board_id: '' }).board_id;
|
|
298
|
-
return [4,
|
|
299
|
+
return [4, API.boardService.retrieveBoardInfoStatus(id)];
|
|
299
300
|
case 1:
|
|
301
|
+
boardInfoData = _f.sent();
|
|
302
|
+
return [4, thunkApi.dispatch(retrieveBoardDetails(id))];
|
|
303
|
+
case 2:
|
|
300
304
|
_f.sent();
|
|
305
|
+
thunkApi.dispatch(handleNextScreenStep());
|
|
301
306
|
(_c = (_b = settings.data.appConfig).onStepCompleted) === null || _c === void 0 ? void 0 : _c.call(_b, settings.data.activeScreen.name, { id: id });
|
|
302
307
|
(_e = (_d = settings.data.appConfig).onFlowCompleted) === null || _e === void 0 ? void 0 : _e.call(_d, id);
|
|
303
|
-
|
|
304
|
-
return [2, { id: id }];
|
|
308
|
+
return [2, { id: id, response: { flows: BUSINESS_FLOW_SUCCESS.concat((boardInfoData === null || boardInfoData === void 0 ? void 0 : boardInfoData.info) || []) } }];
|
|
305
309
|
}
|
|
306
310
|
});
|
|
307
311
|
}); });
|
|
@@ -512,9 +516,12 @@ export var passwordSlice = createSlice({
|
|
|
512
516
|
state.error = action.error.message;
|
|
513
517
|
state.loading = false;
|
|
514
518
|
})
|
|
515
|
-
.addCase(retrieveBoardResetPasswordSuccess.fulfilled, function (state) {
|
|
519
|
+
.addCase(retrieveBoardResetPasswordSuccess.fulfilled, function (state, action) {
|
|
516
520
|
state.loading = false;
|
|
517
521
|
state.error = null;
|
|
522
|
+
var response = (action.payload || {}).response;
|
|
523
|
+
var flows = response.flows;
|
|
524
|
+
state.data.verify.responseBody = __assign(__assign({}, state.data.verify.responseBody), { flows: flows });
|
|
518
525
|
})
|
|
519
526
|
.addCase(retrieveBoardResetPasswordSuccess.pending, function (state) {
|
|
520
527
|
state.loading = true;
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { useTranslation } from 'react-i18next';
|
|
3
|
+
import { Trans, useTranslation } from 'react-i18next';
|
|
4
4
|
import SuccessScreen from '../../../shared/SuccessScreen';
|
|
5
|
+
import { bankSelector } from '../../../../features/app/bank/bankStore';
|
|
6
|
+
import { maskEmail } from '../../../../utils';
|
|
7
|
+
import { useAppSelector } from '../../../../hooks';
|
|
5
8
|
var ResetPasswordSuccess = function (_a) {
|
|
9
|
+
var _b, _c;
|
|
6
10
|
var t = useTranslation().t;
|
|
7
|
-
|
|
11
|
+
var data = useAppSelector(bankSelector).data;
|
|
12
|
+
var email = ((_c = (_b = data.verify.responseBody) === null || _b === void 0 ? void 0 : _b.business) === null || _c === void 0 ? void 0 : _c.primary_contact).email;
|
|
13
|
+
var maskedEmail = maskEmail(email);
|
|
14
|
+
return (_jsx(SuccessScreen, { title: t("reset_password_success_title"), description: _jsx(Trans, { i18nKey: 'reset_password_success_description_dev', values: { email: maskedEmail } }), showEmailProviders: true }));
|
|
8
15
|
};
|
|
9
16
|
export default React.memo(ResetPasswordSuccess);
|
|
@@ -20,10 +20,11 @@ import SimpleList from '../../../../components/SimpleList';
|
|
|
20
20
|
import Collapse from '../../../../components/Collapse';
|
|
21
21
|
import ExpandIcon from '../../../../components/ExpandIcon';
|
|
22
22
|
import { brandSelector, clearError } from '../../../app/brand/brandStore';
|
|
23
|
-
import { isExist } from '../../../../utils';
|
|
23
|
+
import { findCurrencyByIso2, isExist } from '../../../../utils';
|
|
24
24
|
import { ScreenContainer } from '../../../shared/Containers';
|
|
25
25
|
import { InputLabelStyled, CheckIconStyled, InputStyled, NameContainer } from './CustomerBase';
|
|
26
26
|
import Search from '../../../../features/shared/Search';
|
|
27
|
+
import { settingsSelector } from '../../../../app/settings';
|
|
27
28
|
var ListItem = styled(Box)(function (_a) {
|
|
28
29
|
var theme = _a.theme;
|
|
29
30
|
return ({
|
|
@@ -55,9 +56,11 @@ var ExpectedSalesRange = function (_a) {
|
|
|
55
56
|
var dispatch = useAppDispatch();
|
|
56
57
|
var expectedSaleControl = useController({ name: 'expectedSale', control: control });
|
|
57
58
|
var _e = useAppSelector(brandSelector), data = _e.data, error = _e.error;
|
|
59
|
+
var settingsData = useAppSelector(settingsSelector).data;
|
|
58
60
|
var brandActivities = data.brandActivities;
|
|
59
61
|
var expectedSales = (brandActivities.responseBody || {}).expectedSales;
|
|
60
62
|
var expectedSalesRangeValue = expectedSaleControl.field.value;
|
|
63
|
+
var countryCode = settingsData.businessCountry;
|
|
61
64
|
var handleOpenMainMenu = function (event) {
|
|
62
65
|
setAnchorEl(event.currentTarget);
|
|
63
66
|
onListOpen === null || onListOpen === void 0 ? void 0 : onListOpen();
|
|
@@ -109,7 +112,9 @@ var ExpectedSalesRange = function (_a) {
|
|
|
109
112
|
if (item)
|
|
110
113
|
setSubIndex(item.id);
|
|
111
114
|
}, [anchorEl, expectedSalesRangeValue]);
|
|
112
|
-
return (_jsx(Collapse, __assign({ in: show }, { children: _jsxs(ScreenContainer, { children: [_jsx(InputLabelStyled, { children: t('
|
|
115
|
+
return (_jsx(Collapse, __assign({ in: show }, { children: _jsxs(ScreenContainer, { children: [_jsx(InputLabelStyled, { children: t('expected_sales_monthly', {
|
|
116
|
+
currency: findCurrencyByIso2(countryCode.iso2)
|
|
117
|
+
}) }), _jsx(InputStyled, { readOnly: true, 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(ExpandIcon, { anchorEl: !!anchorEl }) }), _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) {
|
|
113
118
|
var isOnlyOneItem = !item.sub || item.sub.length === 1;
|
|
114
119
|
if (isOnlyOneItem)
|
|
115
120
|
onSelectItem(item);
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { useTranslation } from 'react-i18next';
|
|
3
|
+
import { Trans, useTranslation } from 'react-i18next';
|
|
4
4
|
import SuccessScreen from '../../../shared/SuccessScreen';
|
|
5
|
+
import { useAppSelector } from '../../../../hooks';
|
|
6
|
+
import { maskEmail } from '../../../../utils';
|
|
7
|
+
import { brandSelector } from '../../../../features/app/brand/brandStore';
|
|
5
8
|
var ResetPasswordSuccess = function (_a) {
|
|
9
|
+
var _b, _c;
|
|
6
10
|
var t = useTranslation().t;
|
|
7
|
-
|
|
11
|
+
var data = useAppSelector(brandSelector).data;
|
|
12
|
+
var email = ((_c = (_b = data.verify.responseBody) === null || _b === void 0 ? void 0 : _b.business) === null || _c === void 0 ? void 0 : _c.primary_contact).email;
|
|
13
|
+
var maskedEmail = maskEmail(email);
|
|
14
|
+
return (_jsx(SuccessScreen, { title: t("reset_password_success_title"), description: _jsx(Trans, { i18nKey: 'reset_password_success_description_dev', values: { email: maskedEmail } }), showEmailProviders: true }));
|
|
8
15
|
};
|
|
9
16
|
export default React.memo(ResetPasswordSuccess);
|
|
@@ -20,10 +20,11 @@ import SimpleList from '../../../../components/SimpleList';
|
|
|
20
20
|
import Collapse from '../../../../components/Collapse';
|
|
21
21
|
import ExpandIcon from '../../../../components/ExpandIcon';
|
|
22
22
|
import { businessSelector, clearError } from '../../../app/business/businessStore';
|
|
23
|
-
import { isExist } from '../../../../utils';
|
|
23
|
+
import { findCurrencyByIso2, isExist } from '../../../../utils';
|
|
24
24
|
import { ScreenContainer } from '../../../shared/Containers';
|
|
25
25
|
import { InputLabelStyled, CheckIconStyled, InputStyled, NameContainer } from './CustomerLocations';
|
|
26
26
|
import Search from '../../../../features/shared/Search';
|
|
27
|
+
import { settingsSelector } from '../../../../app/settings';
|
|
27
28
|
var ListItem = styled(Box)(function (_a) {
|
|
28
29
|
var theme = _a.theme;
|
|
29
30
|
return ({
|
|
@@ -55,9 +56,11 @@ var ExpectedSalesRange = function (_a) {
|
|
|
55
56
|
var dispatch = useAppDispatch();
|
|
56
57
|
var expectedSaleControl = useController({ name: 'expectedSale', control: control });
|
|
57
58
|
var _e = useAppSelector(businessSelector), data = _e.data, error = _e.error;
|
|
59
|
+
var settingsData = useAppSelector(settingsSelector).data;
|
|
58
60
|
var activitiesData = data.activitiesData;
|
|
59
61
|
var expectedSales = (activitiesData.responseBody || {}).expectedSales;
|
|
60
62
|
var expectedSalesRangeValue = expectedSaleControl.field.value;
|
|
63
|
+
var countryCode = settingsData.businessCountry;
|
|
61
64
|
var handleOpenMainMenu = function (event) {
|
|
62
65
|
setAnchorEl(event.currentTarget);
|
|
63
66
|
onListOpen === null || onListOpen === void 0 ? void 0 : onListOpen();
|
|
@@ -109,7 +112,9 @@ var ExpectedSalesRange = function (_a) {
|
|
|
109
112
|
if (item)
|
|
110
113
|
setSubIndex(item.id);
|
|
111
114
|
}, [anchorEl, expectedSalesRangeValue]);
|
|
112
|
-
return (_jsx(Collapse, __assign({ in: show }, { children: _jsxs(ScreenContainer, { children: [_jsx(InputLabelStyled, { children: t('
|
|
115
|
+
return (_jsx(Collapse, __assign({ in: show }, { children: _jsxs(ScreenContainer, { children: [_jsx(InputLabelStyled, { children: t('expected_sales_monthly', {
|
|
116
|
+
currency: findCurrencyByIso2(countryCode.iso2)
|
|
117
|
+
}) }), _jsx(InputStyled, { readOnly: true, 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(ExpandIcon, { anchorEl: !!anchorEl }) }), _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) {
|
|
113
118
|
var isOnlyOneItem = !item.sub || item.sub.length === 1;
|
|
114
119
|
if (isOnlyOneItem)
|
|
115
120
|
onSelectItem(item);
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { useTranslation } from 'react-i18next';
|
|
3
|
+
import { useTranslation, Trans } from 'react-i18next';
|
|
4
4
|
import SuccessScreen from '../../../shared/SuccessScreen';
|
|
5
|
+
import { businessSelector } from '../../../app/business/businessStore';
|
|
6
|
+
import { useAppSelector } from '../../../../hooks';
|
|
7
|
+
import { maskEmail } from '../../../../utils';
|
|
5
8
|
var ResetPasswordSuccess = function (_a) {
|
|
9
|
+
var _b, _c;
|
|
6
10
|
var t = useTranslation().t;
|
|
7
|
-
|
|
11
|
+
var data = useAppSelector(businessSelector).data;
|
|
12
|
+
var email = ((_c = (_b = data.verify.responseBody) === null || _b === void 0 ? void 0 : _b.business) === null || _c === void 0 ? void 0 : _c.primary_contact).email;
|
|
13
|
+
var maskedEmail = maskEmail(email);
|
|
14
|
+
return (_jsx(SuccessScreen, { title: t("reset_password_success_title"), description: _jsx(Trans, { i18nKey: 'reset_password_success_description_dev', values: { email: maskedEmail } }), showEmailProviders: true }));
|
|
8
15
|
};
|
|
9
16
|
export default React.memo(ResetPasswordSuccess);
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { useTranslation } from 'react-i18next';
|
|
3
|
+
import { Trans, useTranslation } from 'react-i18next';
|
|
4
4
|
import SuccessScreen from '../../../shared/SuccessScreen';
|
|
5
|
+
import { maskEmail } from '../../../../utils';
|
|
6
|
+
import { entitySelector } from '../../../../features/app/entity/entityStore';
|
|
7
|
+
import { useAppSelector } from '../../../../hooks';
|
|
5
8
|
var ResetPasswordSuccess = function (_a) {
|
|
9
|
+
var _b, _c;
|
|
6
10
|
var t = useTranslation().t;
|
|
7
|
-
|
|
11
|
+
var data = useAppSelector(entitySelector).data;
|
|
12
|
+
var email = ((_c = (_b = data.verify.responseBody) === null || _b === void 0 ? void 0 : _b.business) === null || _c === void 0 ? void 0 : _c.primary_contact).email;
|
|
13
|
+
var maskedEmail = maskEmail(email);
|
|
14
|
+
return (_jsx(SuccessScreen, { title: t("reset_password_success_title"), description: _jsx(Trans, { i18nKey: 'reset_password_success_description_dev', values: { email: maskedEmail } }), showEmailProviders: true }));
|
|
8
15
|
};
|
|
9
16
|
export default React.memo(ResetPasswordSuccess);
|
package/build/features/individual/screens/AdditionalIndividualInfo/AdditionalIndividualInfo.js
CHANGED
|
@@ -9,17 +9,6 @@ var __assign = (this && this.__assign) || function () {
|
|
|
9
9
|
};
|
|
10
10
|
return __assign.apply(this, arguments);
|
|
11
11
|
};
|
|
12
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
13
|
-
var t = {};
|
|
14
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
15
|
-
t[p] = s[p];
|
|
16
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
17
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
18
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
19
|
-
t[p[i]] = s[p[i]];
|
|
20
|
-
}
|
|
21
|
-
return t;
|
|
22
|
-
};
|
|
23
12
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
24
13
|
import * as React from 'react';
|
|
25
14
|
import { yupResolver } from '@hookform/resolvers/yup';
|
|
@@ -42,6 +31,8 @@ import EmployerLocation from './EmployerLocation';
|
|
|
42
31
|
import SourceOfIncome from './SourceOfIncome';
|
|
43
32
|
import { individualSelector, updateIndividualInfo } from '../../../app/individual/individualStore';
|
|
44
33
|
import Occupation from './Occupation';
|
|
34
|
+
import CivilIDFile from './CivilIDFile';
|
|
35
|
+
import SignatureFile from './SignatureFile';
|
|
45
36
|
var ListType;
|
|
46
37
|
(function (ListType) {
|
|
47
38
|
ListType["SourceOfIncomeList"] = "SourceOfIncomeList";
|
|
@@ -56,15 +47,15 @@ var AdditionalIndividualInfo = function (_a) {
|
|
|
56
47
|
var _b = useAppSelector(individualSelector), data = _b.data, loading = _b.loading, error = _b.error;
|
|
57
48
|
var settingsData = useAppSelector(settingsSelector).data;
|
|
58
49
|
var countries = settingsData.countries;
|
|
59
|
-
var
|
|
50
|
+
var user = (data.verify.responseBody || {}).user;
|
|
60
51
|
var methods = useForm({
|
|
61
52
|
resolver: yupResolver(IndividualInfoValidationSchema),
|
|
62
|
-
defaultValues:
|
|
53
|
+
defaultValues: data.individualData,
|
|
63
54
|
mode: 'onChange'
|
|
64
55
|
});
|
|
65
|
-
useSetFromDefaultValues(methods,
|
|
66
|
-
var
|
|
67
|
-
var
|
|
56
|
+
useSetFromDefaultValues(methods, data.individualData, true);
|
|
57
|
+
var _c = React.useState(), listActive = _c[0], setListActive = _c[1];
|
|
58
|
+
var _d = React.useState(false), employerFieldsActive = _d[0], setEmployerFieldsActive = _d[1];
|
|
68
59
|
React.useEffect(function () {
|
|
69
60
|
var _a, _b;
|
|
70
61
|
if (((_b = (_a = methods.getValues('sourceIncome')) === null || _a === void 0 ? void 0 : _a.name.en) === null || _b === void 0 ? void 0 : _b.toLowerCase()) === 'salary')
|
|
@@ -88,7 +79,7 @@ var AdditionalIndividualInfo = function (_a) {
|
|
|
88
79
|
return (_jsx(ScreenContainer, { children: _jsx(FormProvider, __assign({}, methods, { children: _jsxs(Form, __assign({ onSubmit: methods.handleSubmit(onSubmit) }, { children: [_jsxs(Box, { children: [_jsx(Occupation, { onListOpen: function () { return handleMenuClick(ListType.OccupationList); }, onListClose: function () { return handleMenuClick(); }, show: !isEmployerLocationListActive && !isMonthlyIncomeListActive && !isSourceOfIncomeListActive }), _jsx(SourceOfIncome, { onListOpen: function () { return handleMenuClick(ListType.SourceOfIncomeList); }, onListClose: function () { return handleMenuClick(); }, show: !isEmployerLocationListActive && !isMonthlyIncomeListActive && !isOccupationListActive }), _jsx(MonthlyIncome, { show: !isEmployerLocationListActive && !isSourceOfIncomeListActive && !isOccupationListActive, onListOpen: function () { return handleMenuClick(ListType.MonthlyIncomeList); }, onListClose: function () { return handleMenuClick(); } }), _jsx(EmployerName, { show: false }), _jsx(EmployerLocation, { show: !isSourceOfIncomeListActive &&
|
|
89
80
|
employerFieldsActive &&
|
|
90
81
|
!isMonthlyIncomeListActive &&
|
|
91
|
-
!isOccupationListActive, countries: countries, onListOpen: function () { return handleMenuClick(ListType.EmployerLocationList); }, onListClose: function () { return handleMenuClick(); } }), _jsx(PEPSwitch, { show: !listActive }), _jsx(InfluencerSwitch, { show: !listActive })] }), _jsx(Collapse, __assign({ in: !listActive, timeout: 500 }, { children: _jsx(Button, __assign({ onBackClicked: function () { return onBack(); }, isAr: isAr, disableBack: true, disabled: !methods.formState.isValid, loading: loading, error: t(error || '') }, { children: t('next') })) }))] })) })) }));
|
|
82
|
+
!isOccupationListActive, countries: countries, onListOpen: function () { return handleMenuClick(ListType.EmployerLocationList); }, onListClose: function () { return handleMenuClick(); } }), _jsxs(Collapse, __assign({ in: !listActive, timeout: 500 }, { children: [_jsx(CivilIDFile, {}), _jsx(SignatureFile, { show: user === null || user === void 0 ? void 0 : user.is_authorized })] })), _jsx(PEPSwitch, { show: !listActive }), _jsx(InfluencerSwitch, { show: !listActive })] }), _jsx(Collapse, __assign({ in: !listActive, timeout: 500 }, { children: _jsx(Button, __assign({ onBackClicked: function () { return onBack(); }, isAr: isAr, disableBack: true, disabled: !methods.formState.isValid, loading: loading, error: t(error || '') }, { children: t('next') })) }))] })) })) }));
|
|
92
83
|
};
|
|
93
84
|
export default React.memo(AdditionalIndividualInfo);
|
|
94
85
|
AdditionalIndividualInfo.defaultProps = {};
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { ScreenContainer } from '../../../../features/shared/Containers';
|
|
4
|
+
import { styled } from '@mui/material/styles';
|
|
5
|
+
import { useTranslation } from 'react-i18next';
|
|
6
|
+
import { useController, useFormContext } from 'react-hook-form';
|
|
7
|
+
import { useAppDispatch, useAppSelector } from '../../../../hooks';
|
|
8
|
+
import { individualSelector, uploadCivilIdFile } from '../../../../features/app/individual/individualStore';
|
|
9
|
+
import { MAX_FILE_SIZE, VALID_FILE_FORMATS } from '../../../../constants';
|
|
10
|
+
import UploadFile from '../../../../features/shared/UploadFile';
|
|
11
|
+
var FeatureStyled = styled(ScreenContainer)(function (_a) {
|
|
12
|
+
var theme = _a.theme;
|
|
13
|
+
return ({
|
|
14
|
+
marginBlockStart: theme.spacing(3)
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
var CivilIDFile = function () {
|
|
18
|
+
var _a, _b;
|
|
19
|
+
var _c = React.useState(0), progress = _c[0], setProgress = _c[1];
|
|
20
|
+
var t = useTranslation().t;
|
|
21
|
+
var _d = useFormContext(), control = _d.control, setError = _d.setError, clearErrors = _d.clearErrors;
|
|
22
|
+
var civilIDFileControl = useController({ name: 'civilIDFile', control: control });
|
|
23
|
+
var civilIDFileIdControl = useController({ name: 'civilIDFileId', control: control });
|
|
24
|
+
var _e = useAppSelector(individualSelector), data = _e.data, loading = _e.loading, sysError = _e.error;
|
|
25
|
+
var civilIDUploading = data.attachmentsData.civilIDUploading;
|
|
26
|
+
var dispatch = useAppDispatch();
|
|
27
|
+
var civilIDValue = civilIDFileControl.field.value;
|
|
28
|
+
var error = ((_a = civilIDFileControl.fieldState.error) === null || _a === void 0 ? void 0 : _a.message) || ((_b = civilIDFileIdControl.fieldState.error) === null || _b === void 0 ? void 0 : _b.message);
|
|
29
|
+
var handleCivilIDChange = function (files) {
|
|
30
|
+
var _a;
|
|
31
|
+
var file = files === null || files === void 0 ? void 0 : files[0];
|
|
32
|
+
if (!VALID_FILE_FORMATS.includes(file === null || file === void 0 ? void 0 : file.type)) {
|
|
33
|
+
setError('civilIDFile', { message: 'file_not_supported_alert' });
|
|
34
|
+
}
|
|
35
|
+
else if ((file === null || file === void 0 ? void 0 : file.size) > MAX_FILE_SIZE) {
|
|
36
|
+
setError('civilIDFile', { message: 'file_size_alert' });
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
civilIDFileControl.field.onChange(file);
|
|
40
|
+
dispatch(uploadCivilIdFile({
|
|
41
|
+
file: file,
|
|
42
|
+
onProgress: function (value) {
|
|
43
|
+
setProgress(value);
|
|
44
|
+
},
|
|
45
|
+
title: (_a = data.verify.responseBody) === null || _a === void 0 ? void 0 : _a.merchant_id
|
|
46
|
+
}));
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
var handleReset = function () {
|
|
50
|
+
civilIDFileControl.field.onChange(null);
|
|
51
|
+
civilIDFileIdControl.field.onChange('');
|
|
52
|
+
setProgress(0);
|
|
53
|
+
};
|
|
54
|
+
React.useEffect(function () {
|
|
55
|
+
if (sysError === 'file_upload_error') {
|
|
56
|
+
setError('civilIDFileId', { message: sysError });
|
|
57
|
+
civilIDFileControl.field.onChange(null);
|
|
58
|
+
setProgress(0);
|
|
59
|
+
}
|
|
60
|
+
}, [sysError]);
|
|
61
|
+
React.useEffect(function () {
|
|
62
|
+
if ((civilIDFileControl.formState.isValid || !!civilIDValue) && error != 'file_upload_error')
|
|
63
|
+
clearErrors();
|
|
64
|
+
}, [civilIDFileControl.formState.isValid, civilIDValue]);
|
|
65
|
+
return (_jsx(FeatureStyled, { children: _jsx(UploadFile, { label: t('title_civil_id'), title: t('drag_and_drop'), subTitle: t('subtitle_drop'), dragDescription: t('desc_drag_and_drop_civilID'), uploadingTitle: t('file_uploading_title'), successTitle: t('success_upload_civil_id'), onFileUploaded: handleCivilIDChange, isFileUploaded: !civilIDUploading && !!civilIDValue, isSubmitting: loading, isUploading: civilIDUploading, progress: progress, onReset: handleReset, error: error && t(error) }) }));
|
|
66
|
+
};
|
|
67
|
+
export default CivilIDFile;
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
12
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
13
|
+
import React from 'react';
|
|
14
|
+
import { ScreenContainer } from '../../../../features/shared/Containers';
|
|
15
|
+
import { styled } from '@mui/material/styles';
|
|
16
|
+
import { useTranslation } from 'react-i18next';
|
|
17
|
+
import { useController, useFormContext } from 'react-hook-form';
|
|
18
|
+
import { useAppDispatch, useAppSelector } from '../../../../hooks';
|
|
19
|
+
import { individualSelector, uploadSignatureFile } from '../../../../features/app/individual/individualStore';
|
|
20
|
+
import { MAX_FILE_SIZE, VALID_FILE_FORMATS } from '../../../../constants';
|
|
21
|
+
import UploadFile from '../../../../features/shared/UploadFile';
|
|
22
|
+
import Collapse from '../../../../components/Collapse';
|
|
23
|
+
var FeatureStyled = styled(ScreenContainer)(function (_a) {
|
|
24
|
+
var theme = _a.theme;
|
|
25
|
+
return ({
|
|
26
|
+
marginBlockStart: theme.spacing(3)
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
var SignatureFile = function (_a) {
|
|
30
|
+
var _b, _c;
|
|
31
|
+
var show = _a.show;
|
|
32
|
+
var _d = React.useState(0), progress = _d[0], setProgress = _d[1];
|
|
33
|
+
var t = useTranslation().t;
|
|
34
|
+
var _e = useFormContext(), control = _e.control, setError = _e.setError, clearErrors = _e.clearErrors;
|
|
35
|
+
var signatureFileControl = useController({ name: 'signatureFile', control: control });
|
|
36
|
+
var signatureFileIdControl = useController({ name: 'signatureFileId', control: control });
|
|
37
|
+
var _f = useAppSelector(individualSelector), data = _f.data, loading = _f.loading, sysError = _f.error;
|
|
38
|
+
var signatureFileUploading = data.attachmentsData.signatureFileUploading;
|
|
39
|
+
var dispatch = useAppDispatch();
|
|
40
|
+
var signatureValue = signatureFileControl.field.value;
|
|
41
|
+
var error = ((_b = signatureFileControl.fieldState.error) === null || _b === void 0 ? void 0 : _b.message) || ((_c = signatureFileIdControl.fieldState.error) === null || _c === void 0 ? void 0 : _c.message);
|
|
42
|
+
var handleSignatureChange = function (files) {
|
|
43
|
+
var file = files === null || files === void 0 ? void 0 : files[0];
|
|
44
|
+
if (!VALID_FILE_FORMATS.includes(file === null || file === void 0 ? void 0 : file.type)) {
|
|
45
|
+
setError('signatureFile', { message: 'file_not_supported_alert' });
|
|
46
|
+
}
|
|
47
|
+
else if ((file === null || file === void 0 ? void 0 : file.size) > MAX_FILE_SIZE) {
|
|
48
|
+
setError('signatureFile', { message: 'file_size_alert' });
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
signatureFileControl.field.onChange(file);
|
|
52
|
+
dispatch(uploadSignatureFile({
|
|
53
|
+
file: file,
|
|
54
|
+
onProgress: function (value) {
|
|
55
|
+
setProgress(value);
|
|
56
|
+
}
|
|
57
|
+
}));
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
var handleReset = function () {
|
|
61
|
+
signatureFileControl.field.onChange(null);
|
|
62
|
+
signatureFileIdControl.field.onChange('');
|
|
63
|
+
setProgress(0);
|
|
64
|
+
};
|
|
65
|
+
React.useEffect(function () {
|
|
66
|
+
if (sysError === 'file_upload_error') {
|
|
67
|
+
setError('signatureFileId', { message: sysError });
|
|
68
|
+
signatureFileControl.field.onChange(null);
|
|
69
|
+
setProgress(0);
|
|
70
|
+
}
|
|
71
|
+
}, [sysError]);
|
|
72
|
+
React.useEffect(function () {
|
|
73
|
+
if ((signatureFileControl.formState.isValid || !!signatureValue) && error != 'file_upload_error')
|
|
74
|
+
clearErrors();
|
|
75
|
+
}, [signatureFileControl.formState.isValid, signatureValue]);
|
|
76
|
+
return (_jsx(Collapse, __assign({ in: show }, { children: _jsx(FeatureStyled, { children: _jsx(UploadFile, { label: t('title_signature_file'), title: t('drag_and_drop'), subTitle: t('subtitle_drop'), dragDescription: t('desc_drag_and_drop_signature'), uploadingTitle: t('file_uploading_title'), successTitle: t('success_upload_signature_file'), onFileUploaded: handleSignatureChange, isFileUploaded: !signatureFileUploading && !!signatureValue, isSubmitting: loading, isUploading: signatureFileUploading, progress: progress, onReset: handleReset, error: error && t(error) }) }) })));
|
|
77
|
+
};
|
|
78
|
+
export default SignatureFile;
|
|
@@ -6,6 +6,10 @@ export declare const IndividualInfoValidationSchema: yup.ObjectSchema<import("yu
|
|
|
6
6
|
sourceIncome: import("yup/lib/object").RequiredObjectSchema<ObjectShape, import("yup/lib/object").AnyObject, import("yup/lib/object").TypeOfShape<ObjectShape>>;
|
|
7
7
|
monthlyIncome: import("yup/lib/object").OptionalObjectSchema<ObjectShape, import("yup/lib/object").AnyObject, import("yup/lib/object").TypeOfShape<ObjectShape>>;
|
|
8
8
|
employerLocation: import("yup/lib/object").OptionalObjectSchema<Partial<Record<keyof CountryCode, yup.AnySchema<any, any, any> | import("yup/lib/Reference").default<unknown> | import("yup/lib/Lazy").default<any, any>>>, import("yup/lib/object").AnyObject, import("yup/lib/object").TypeOfShape<Partial<Record<keyof CountryCode, yup.AnySchema<any, any, any> | import("yup/lib/Reference").default<unknown> | import("yup/lib/Lazy").default<any, any>>>>>;
|
|
9
|
+
civilIDFileId: yup.StringSchema<string | undefined, import("yup/lib/types").AnyObject, string | undefined>;
|
|
10
|
+
civilIDFile: any;
|
|
11
|
+
signatureFileId: yup.StringSchema<string | undefined, import("yup/lib/types").AnyObject, string | undefined>;
|
|
12
|
+
signatureFile: any;
|
|
9
13
|
isPEP: import("yup/lib/boolean").RequiredBooleanSchema<boolean | undefined, import("yup/lib/types").AnyObject>;
|
|
10
14
|
isInfluencer: import("yup/lib/boolean").RequiredBooleanSchema<boolean | undefined, import("yup/lib/types").AnyObject>;
|
|
11
15
|
}>, import("yup/lib/object").AnyObject, import("yup/lib/object").TypeOfShape<import("yup/lib/object").Assign<ObjectShape, {
|
|
@@ -13,6 +17,10 @@ export declare const IndividualInfoValidationSchema: yup.ObjectSchema<import("yu
|
|
|
13
17
|
sourceIncome: import("yup/lib/object").RequiredObjectSchema<ObjectShape, import("yup/lib/object").AnyObject, import("yup/lib/object").TypeOfShape<ObjectShape>>;
|
|
14
18
|
monthlyIncome: import("yup/lib/object").OptionalObjectSchema<ObjectShape, import("yup/lib/object").AnyObject, import("yup/lib/object").TypeOfShape<ObjectShape>>;
|
|
15
19
|
employerLocation: import("yup/lib/object").OptionalObjectSchema<Partial<Record<keyof CountryCode, yup.AnySchema<any, any, any> | import("yup/lib/Reference").default<unknown> | import("yup/lib/Lazy").default<any, any>>>, import("yup/lib/object").AnyObject, import("yup/lib/object").TypeOfShape<Partial<Record<keyof CountryCode, yup.AnySchema<any, any, any> | import("yup/lib/Reference").default<unknown> | import("yup/lib/Lazy").default<any, any>>>>>;
|
|
20
|
+
civilIDFileId: yup.StringSchema<string | undefined, import("yup/lib/types").AnyObject, string | undefined>;
|
|
21
|
+
civilIDFile: any;
|
|
22
|
+
signatureFileId: yup.StringSchema<string | undefined, import("yup/lib/types").AnyObject, string | undefined>;
|
|
23
|
+
signatureFile: any;
|
|
16
24
|
isPEP: import("yup/lib/boolean").RequiredBooleanSchema<boolean | undefined, import("yup/lib/types").AnyObject>;
|
|
17
25
|
isInfluencer: import("yup/lib/boolean").RequiredBooleanSchema<boolean | undefined, import("yup/lib/types").AnyObject>;
|
|
18
26
|
}>>, import("yup/lib/object").AssertsShape<import("yup/lib/object").Assign<ObjectShape, {
|
|
@@ -20,6 +28,10 @@ export declare const IndividualInfoValidationSchema: yup.ObjectSchema<import("yu
|
|
|
20
28
|
sourceIncome: import("yup/lib/object").RequiredObjectSchema<ObjectShape, import("yup/lib/object").AnyObject, import("yup/lib/object").TypeOfShape<ObjectShape>>;
|
|
21
29
|
monthlyIncome: import("yup/lib/object").OptionalObjectSchema<ObjectShape, import("yup/lib/object").AnyObject, import("yup/lib/object").TypeOfShape<ObjectShape>>;
|
|
22
30
|
employerLocation: import("yup/lib/object").OptionalObjectSchema<Partial<Record<keyof CountryCode, yup.AnySchema<any, any, any> | import("yup/lib/Reference").default<unknown> | import("yup/lib/Lazy").default<any, any>>>, import("yup/lib/object").AnyObject, import("yup/lib/object").TypeOfShape<Partial<Record<keyof CountryCode, yup.AnySchema<any, any, any> | import("yup/lib/Reference").default<unknown> | import("yup/lib/Lazy").default<any, any>>>>>;
|
|
31
|
+
civilIDFileId: yup.StringSchema<string | undefined, import("yup/lib/types").AnyObject, string | undefined>;
|
|
32
|
+
civilIDFile: any;
|
|
33
|
+
signatureFileId: yup.StringSchema<string | undefined, import("yup/lib/types").AnyObject, string | undefined>;
|
|
34
|
+
signatureFile: any;
|
|
23
35
|
isPEP: import("yup/lib/boolean").RequiredBooleanSchema<boolean | undefined, import("yup/lib/types").AnyObject>;
|
|
24
36
|
isInfluencer: import("yup/lib/boolean").RequiredBooleanSchema<boolean | undefined, import("yup/lib/types").AnyObject>;
|
|
25
37
|
}>>>;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as yup from 'yup';
|
|
2
|
+
import { MAX_FILE_SIZE, VALID_FILE_FORMATS } from '../../../../constants';
|
|
2
3
|
export var IndividualInfoValidationSchema = yup.object().shape({
|
|
3
4
|
occupation: yup.object().required('alert_choose_occupation'),
|
|
4
5
|
sourceIncome: yup.object().required('choose_any_source_of_income'),
|
|
@@ -19,6 +20,32 @@ export var IndividualInfoValidationSchema = yup.object().shape({
|
|
|
19
20
|
return yup.object().optional();
|
|
20
21
|
}
|
|
21
22
|
}),
|
|
23
|
+
civilIDFileId: yup.string().optional(),
|
|
24
|
+
civilIDFile: yup
|
|
25
|
+
.mixed()
|
|
26
|
+
.test({
|
|
27
|
+
test: function (value) {
|
|
28
|
+
if (!!value)
|
|
29
|
+
return VALID_FILE_FORMATS.includes(value === null || value === void 0 ? void 0 : value.type) && (value === null || value === void 0 ? void 0 : value.size) < MAX_FILE_SIZE
|
|
30
|
+
? true
|
|
31
|
+
: this.createError({ message: 'alert_file_upload' });
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
})
|
|
35
|
+
.optional(),
|
|
36
|
+
signatureFileId: yup.string().optional(),
|
|
37
|
+
signatureFile: yup
|
|
38
|
+
.mixed()
|
|
39
|
+
.test({
|
|
40
|
+
test: function (value) {
|
|
41
|
+
if (!!value)
|
|
42
|
+
return VALID_FILE_FORMATS.includes(value === null || value === void 0 ? void 0 : value.type) && (value === null || value === void 0 ? void 0 : value.size) < MAX_FILE_SIZE
|
|
43
|
+
? true
|
|
44
|
+
: this.createError({ message: 'alert_file_upload' });
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
})
|
|
48
|
+
.optional(),
|
|
22
49
|
isPEP: yup.boolean().required('please_choose_relative_pep'),
|
|
23
50
|
isInfluencer: yup.boolean().required('please_choose_are_you_influncer')
|
|
24
51
|
});
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { useTranslation } from 'react-i18next';
|
|
3
|
+
import { Trans, useTranslation } from 'react-i18next';
|
|
4
4
|
import SuccessScreen from '../../../shared/SuccessScreen';
|
|
5
|
+
import { maskEmail } from '../../../../utils';
|
|
6
|
+
import { individualSelector } from '../../../../features/app/individual/individualStore';
|
|
7
|
+
import { useAppSelector } from '../../../../hooks';
|
|
5
8
|
var ResetPasswordSuccess = function (_a) {
|
|
9
|
+
var _b, _c;
|
|
6
10
|
var t = useTranslation().t;
|
|
7
|
-
|
|
11
|
+
var data = useAppSelector(individualSelector).data;
|
|
12
|
+
var email = ((_c = (_b = data.verify.responseBody) === null || _b === void 0 ? void 0 : _b.business) === null || _c === void 0 ? void 0 : _c.primary_contact).email;
|
|
13
|
+
var maskedEmail = maskEmail(email);
|
|
14
|
+
return (_jsx(SuccessScreen, { title: t("reset_password_success_title"), description: _jsx(Trans, { i18nKey: 'reset_password_success_description_dev', values: { email: maskedEmail } }), showEmailProviders: true }));
|
|
8
15
|
};
|
|
9
16
|
export default React.memo(ResetPasswordSuccess);
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { useTranslation } from 'react-i18next';
|
|
3
|
+
import { Trans, useTranslation } from 'react-i18next';
|
|
4
4
|
import SuccessScreen from '../../../shared/SuccessScreen';
|
|
5
|
+
import { useAppSelector } from '../../../../hooks';
|
|
6
|
+
import { maskEmail } from '../../../../utils';
|
|
7
|
+
import { passwordSelector } from '../../../app/password/passwordStore';
|
|
5
8
|
var ResetPasswordSuccess = function (_a) {
|
|
9
|
+
var _b, _c;
|
|
6
10
|
var t = useTranslation().t;
|
|
7
|
-
|
|
11
|
+
var data = useAppSelector(passwordSelector).data;
|
|
12
|
+
var email = ((_c = (_b = data.verify.responseBody) === null || _b === void 0 ? void 0 : _b.business) === null || _c === void 0 ? void 0 : _c.primary_contact).email;
|
|
13
|
+
var maskedEmail = maskEmail(email);
|
|
14
|
+
return (_jsx(SuccessScreen, { title: t("reset_password_success_title"), description: _jsx(Trans, { i18nKey: 'reset_password_success_description_dev', values: { email: maskedEmail } }), showEmailProviders: true }));
|
|
8
15
|
};
|
|
9
16
|
export default React.memo(ResetPasswordSuccess);
|
|
@@ -20,7 +20,6 @@ var Success = function (_a) {
|
|
|
20
20
|
}, []);
|
|
21
21
|
var onSuccess = function () {
|
|
22
22
|
setClicked(true);
|
|
23
|
-
dispatch(retrieveBoardResetPasswordSuccess());
|
|
24
23
|
};
|
|
25
24
|
return (_jsx(SuccessScreen, { title: t('password_success_title'), onSuccess: onSuccess, successTitle: t('continue'), loading: clicked && loading, error: error || '' }));
|
|
26
25
|
};
|
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import * as React from 'react';
|
|
3
|
-
import { useTranslation } from 'react-i18next';
|
|
3
|
+
import { Trans, useTranslation } from 'react-i18next';
|
|
4
4
|
import SuccessScreen from '../../../shared/SuccessScreen';
|
|
5
|
+
import { useAppSelector } from '../../../../hooks';
|
|
6
|
+
import { maskEmail } from '../../../../utils';
|
|
7
|
+
import { taxSelector } from '../../../../features/app/tax/taxStore';
|
|
5
8
|
var ResetPasswordSuccess = function (_a) {
|
|
9
|
+
var _b, _c;
|
|
6
10
|
var t = useTranslation().t;
|
|
7
|
-
|
|
11
|
+
var data = useAppSelector(taxSelector).data;
|
|
12
|
+
var email = ((_c = (_b = data.verify.responseBody) === null || _b === void 0 ? void 0 : _b.business) === null || _c === void 0 ? void 0 : _c.primary_contact).email;
|
|
13
|
+
var maskedEmail = maskEmail(email);
|
|
14
|
+
return (_jsx(SuccessScreen, { title: t("reset_password_success_title"), description: _jsx(Trans, { i18nKey: 'reset_password_success_description_dev', values: { email: maskedEmail } }), showEmailProviders: true }));
|
|
8
15
|
};
|
|
9
16
|
export default React.memo(ResetPasswordSuccess);
|
package/package.json
CHANGED
|
@@ -1,129 +1,129 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@tap-payments/auth-jsconnect",
|
|
3
|
-
"version": "2.1.
|
|
4
|
-
"description": "connect library, auth",
|
|
5
|
-
"private": false,
|
|
6
|
-
"main": "build/index.js",
|
|
7
|
-
"module": "build/index.js",
|
|
8
|
-
"types": "build/index.d.ts",
|
|
9
|
-
"files": [
|
|
10
|
-
"build",
|
|
11
|
-
"README.md"
|
|
12
|
-
],
|
|
13
|
-
"scripts": {
|
|
14
|
-
"husky:setup": "npx husky install",
|
|
15
|
-
"prettier": "prettier --list-different \"src/**/*.{md,mdx,ts,js,tsx,jsx,json}\" *.json *.js",
|
|
16
|
-
"prettier:fix": "prettier --write \"src/**/*.{ts,tsx,js,jsx,json,md,css,json}\" *.json *.js",
|
|
17
|
-
"lint": "eslint src --color --ext .js,.jsx,.ts,.tsx,.json",
|
|
18
|
-
"lint:fix": "eslint src --ext .js,.jsx,.ts,.tsx --fix",
|
|
19
|
-
"start": "cross-env NODE_ENV=development webpack serve",
|
|
20
|
-
"build": "rm -rf build && cross-env NODE_ENV=production webpack",
|
|
21
|
-
"copy:files": "copyfiles -u 1 src/**/*.css build/",
|
|
22
|
-
"tsc:alias": "tsc-alias -p tsconfig.json",
|
|
23
|
-
"ts:build": "rm -rf build && tsc -p tsconfig.json && tsc-alias -p tsconfig.json && yarn copy:files",
|
|
24
|
-
"push": "npm publish --access public"
|
|
25
|
-
},
|
|
26
|
-
"keywords": [],
|
|
27
|
-
"author": {
|
|
28
|
-
"name": "Ahmed Elsharkawy",
|
|
29
|
-
"email": "a.elsharkawy@tap.company"
|
|
30
|
-
},
|
|
31
|
-
"license": "ISC",
|
|
32
|
-
"devDependencies": {
|
|
33
|
-
"@babel/core": "^7.18.6",
|
|
34
|
-
"@babel/preset-env": "^7.18.6",
|
|
35
|
-
"@babel/preset-react": "^7.18.6",
|
|
36
|
-
"@babel/preset-typescript": "^7.18.6",
|
|
37
|
-
"@types/lodash-es": "^4.17.6",
|
|
38
|
-
"@types/react": "^18.0.15",
|
|
39
|
-
"@types/react-calendar": "~3.5.1",
|
|
40
|
-
"@types/react-dom": "^18.0.6",
|
|
41
|
-
"@typescript-eslint/eslint-plugin": "^5.30.5",
|
|
42
|
-
"@typescript-eslint/parser": "^5.30.5",
|
|
43
|
-
"babel-loader": "^8.2.5",
|
|
44
|
-
"copyfiles": "^2.4.1",
|
|
45
|
-
"cross-env": "^7.0.3",
|
|
46
|
-
"css-loader": "^6.7.1",
|
|
47
|
-
"css-minimizer-webpack-plugin": "^4.0.0",
|
|
48
|
-
"eslint": "^8.19.0",
|
|
49
|
-
"eslint-config-airbnb": "^19.0.4",
|
|
50
|
-
"eslint-config-prettier": "^8.5.0",
|
|
51
|
-
"eslint-plugin-import": "^2.26.0",
|
|
52
|
-
"eslint-plugin-jsx-a11y": "^6.6.0",
|
|
53
|
-
"eslint-plugin-node": "^11.1.0",
|
|
54
|
-
"eslint-plugin-prettier": "^4.2.1",
|
|
55
|
-
"eslint-plugin-react": "^7.30.1",
|
|
56
|
-
"eslint-plugin-react-hooks": "^4.6.0",
|
|
57
|
-
"file-loader": "^6.2.0",
|
|
58
|
-
"fork-ts-checker-webpack-plugin": "^7.2.12",
|
|
59
|
-
"html-loader": "^3.1.2",
|
|
60
|
-
"html-webpack-plugin": "^5.5.0",
|
|
61
|
-
"husky": "^8.0.1",
|
|
62
|
-
"lint-staged": "^13.0.3",
|
|
63
|
-
"mini-css-extract-plugin": "^2.6.1",
|
|
64
|
-
"prettier": "^2.7.1",
|
|
65
|
-
"sass": "^1.53.0",
|
|
66
|
-
"sass-loader": "^13.0.2",
|
|
67
|
-
"style-loader": "^3.3.1",
|
|
68
|
-
"terser-webpack-plugin": "^5.3.3",
|
|
69
|
-
"tsc-alias": "^1.6.11",
|
|
70
|
-
"typescript": "^4.7.4",
|
|
71
|
-
"webpack": "^5.73.0",
|
|
72
|
-
"webpack-cli": "^4.10.0",
|
|
73
|
-
"webpack-dev-server": "^4.9.3",
|
|
74
|
-
"webpack-merge": "^5.8.0"
|
|
75
|
-
},
|
|
76
|
-
"dependencies": {
|
|
77
|
-
"@emotion/react": "^11.9.3",
|
|
78
|
-
"@emotion/styled": "^11.9.3",
|
|
79
|
-
"@fingerprintjs/fingerprintjs": "~3.3.4",
|
|
80
|
-
"@hookform/resolvers": "^2.9.6",
|
|
81
|
-
"@mui/icons-material": "^5.8.4",
|
|
82
|
-
"@mui/material": "^5.8.7",
|
|
83
|
-
"@reduxjs/toolkit": "^1.8.3",
|
|
84
|
-
"axios": "^0.27.2",
|
|
85
|
-
"device-detector-js": "^3.0.3",
|
|
86
|
-
"i18next": "^21.8.14",
|
|
87
|
-
"i18next-browser-languagedetector": "^6.1.4",
|
|
88
|
-
"i18next-http-backend": "^1.4.1",
|
|
89
|
-
"jsencrypt": "^2.3.1",
|
|
90
|
-
"lodash-es": "^4.17.21",
|
|
91
|
-
"lottie-web": "^5.9.6",
|
|
92
|
-
"moment": "^2.29.4",
|
|
93
|
-
"react": "^18.2.0",
|
|
94
|
-
"react-calendar": "~3.7.0",
|
|
95
|
-
"react-device-detect": "^2.2.2",
|
|
96
|
-
"react-dom": "^18.2.0",
|
|
97
|
-
"react-dropzone": "^14.2.2",
|
|
98
|
-
"react-hook-form": "^7.33.1",
|
|
99
|
-
"react-i18next": "^11.18.1",
|
|
100
|
-
"react-multi-date-picker": "^3.3.4",
|
|
101
|
-
"react-otp-input": "^2.4.0",
|
|
102
|
-
"react-redux": "^8.0.2",
|
|
103
|
-
"react-spring-bottom-sheet": "^3.4.1",
|
|
104
|
-
"yup": "^0.32.11"
|
|
105
|
-
},
|
|
106
|
-
"peerDependencies": {
|
|
107
|
-
"react": "^18.2.0",
|
|
108
|
-
"react-dom": "^18.2.0"
|
|
109
|
-
},
|
|
110
|
-
"lint-staged": {
|
|
111
|
-
"src/**/*.{ts,tsx,json,js,jsx}": [
|
|
112
|
-
"yarn run prettier:fix",
|
|
113
|
-
"yarn run lint",
|
|
114
|
-
"git add ."
|
|
115
|
-
]
|
|
116
|
-
},
|
|
117
|
-
"browserslist": {
|
|
118
|
-
"production": [
|
|
119
|
-
">0.2%",
|
|
120
|
-
"not dead",
|
|
121
|
-
"not op_mini all"
|
|
122
|
-
],
|
|
123
|
-
"development": [
|
|
124
|
-
"last 1 chrome version",
|
|
125
|
-
"last 1 firefox version",
|
|
126
|
-
"last 1 safari version"
|
|
127
|
-
]
|
|
128
|
-
}
|
|
129
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@tap-payments/auth-jsconnect",
|
|
3
|
+
"version": "2.1.31-test",
|
|
4
|
+
"description": "connect library, auth",
|
|
5
|
+
"private": false,
|
|
6
|
+
"main": "build/index.js",
|
|
7
|
+
"module": "build/index.js",
|
|
8
|
+
"types": "build/index.d.ts",
|
|
9
|
+
"files": [
|
|
10
|
+
"build",
|
|
11
|
+
"README.md"
|
|
12
|
+
],
|
|
13
|
+
"scripts": {
|
|
14
|
+
"husky:setup": "npx husky install",
|
|
15
|
+
"prettier": "prettier --list-different \"src/**/*.{md,mdx,ts,js,tsx,jsx,json}\" *.json *.js",
|
|
16
|
+
"prettier:fix": "prettier --write \"src/**/*.{ts,tsx,js,jsx,json,md,css,json}\" *.json *.js",
|
|
17
|
+
"lint": "eslint src --color --ext .js,.jsx,.ts,.tsx,.json",
|
|
18
|
+
"lint:fix": "eslint src --ext .js,.jsx,.ts,.tsx --fix",
|
|
19
|
+
"start": "cross-env NODE_ENV=development webpack serve",
|
|
20
|
+
"build": "rm -rf build && cross-env NODE_ENV=production webpack",
|
|
21
|
+
"copy:files": "copyfiles -u 1 src/**/*.css build/",
|
|
22
|
+
"tsc:alias": "tsc-alias -p tsconfig.json",
|
|
23
|
+
"ts:build": "rm -rf build && tsc -p tsconfig.json && tsc-alias -p tsconfig.json && yarn copy:files",
|
|
24
|
+
"push": "npm publish --access public"
|
|
25
|
+
},
|
|
26
|
+
"keywords": [],
|
|
27
|
+
"author": {
|
|
28
|
+
"name": "Ahmed Elsharkawy",
|
|
29
|
+
"email": "a.elsharkawy@tap.company"
|
|
30
|
+
},
|
|
31
|
+
"license": "ISC",
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"@babel/core": "^7.18.6",
|
|
34
|
+
"@babel/preset-env": "^7.18.6",
|
|
35
|
+
"@babel/preset-react": "^7.18.6",
|
|
36
|
+
"@babel/preset-typescript": "^7.18.6",
|
|
37
|
+
"@types/lodash-es": "^4.17.6",
|
|
38
|
+
"@types/react": "^18.0.15",
|
|
39
|
+
"@types/react-calendar": "~3.5.1",
|
|
40
|
+
"@types/react-dom": "^18.0.6",
|
|
41
|
+
"@typescript-eslint/eslint-plugin": "^5.30.5",
|
|
42
|
+
"@typescript-eslint/parser": "^5.30.5",
|
|
43
|
+
"babel-loader": "^8.2.5",
|
|
44
|
+
"copyfiles": "^2.4.1",
|
|
45
|
+
"cross-env": "^7.0.3",
|
|
46
|
+
"css-loader": "^6.7.1",
|
|
47
|
+
"css-minimizer-webpack-plugin": "^4.0.0",
|
|
48
|
+
"eslint": "^8.19.0",
|
|
49
|
+
"eslint-config-airbnb": "^19.0.4",
|
|
50
|
+
"eslint-config-prettier": "^8.5.0",
|
|
51
|
+
"eslint-plugin-import": "^2.26.0",
|
|
52
|
+
"eslint-plugin-jsx-a11y": "^6.6.0",
|
|
53
|
+
"eslint-plugin-node": "^11.1.0",
|
|
54
|
+
"eslint-plugin-prettier": "^4.2.1",
|
|
55
|
+
"eslint-plugin-react": "^7.30.1",
|
|
56
|
+
"eslint-plugin-react-hooks": "^4.6.0",
|
|
57
|
+
"file-loader": "^6.2.0",
|
|
58
|
+
"fork-ts-checker-webpack-plugin": "^7.2.12",
|
|
59
|
+
"html-loader": "^3.1.2",
|
|
60
|
+
"html-webpack-plugin": "^5.5.0",
|
|
61
|
+
"husky": "^8.0.1",
|
|
62
|
+
"lint-staged": "^13.0.3",
|
|
63
|
+
"mini-css-extract-plugin": "^2.6.1",
|
|
64
|
+
"prettier": "^2.7.1",
|
|
65
|
+
"sass": "^1.53.0",
|
|
66
|
+
"sass-loader": "^13.0.2",
|
|
67
|
+
"style-loader": "^3.3.1",
|
|
68
|
+
"terser-webpack-plugin": "^5.3.3",
|
|
69
|
+
"tsc-alias": "^1.6.11",
|
|
70
|
+
"typescript": "^4.7.4",
|
|
71
|
+
"webpack": "^5.73.0",
|
|
72
|
+
"webpack-cli": "^4.10.0",
|
|
73
|
+
"webpack-dev-server": "^4.9.3",
|
|
74
|
+
"webpack-merge": "^5.8.0"
|
|
75
|
+
},
|
|
76
|
+
"dependencies": {
|
|
77
|
+
"@emotion/react": "^11.9.3",
|
|
78
|
+
"@emotion/styled": "^11.9.3",
|
|
79
|
+
"@fingerprintjs/fingerprintjs": "~3.3.4",
|
|
80
|
+
"@hookform/resolvers": "^2.9.6",
|
|
81
|
+
"@mui/icons-material": "^5.8.4",
|
|
82
|
+
"@mui/material": "^5.8.7",
|
|
83
|
+
"@reduxjs/toolkit": "^1.8.3",
|
|
84
|
+
"axios": "^0.27.2",
|
|
85
|
+
"device-detector-js": "^3.0.3",
|
|
86
|
+
"i18next": "^21.8.14",
|
|
87
|
+
"i18next-browser-languagedetector": "^6.1.4",
|
|
88
|
+
"i18next-http-backend": "^1.4.1",
|
|
89
|
+
"jsencrypt": "^2.3.1",
|
|
90
|
+
"lodash-es": "^4.17.21",
|
|
91
|
+
"lottie-web": "^5.9.6",
|
|
92
|
+
"moment": "^2.29.4",
|
|
93
|
+
"react": "^18.2.0",
|
|
94
|
+
"react-calendar": "~3.7.0",
|
|
95
|
+
"react-device-detect": "^2.2.2",
|
|
96
|
+
"react-dom": "^18.2.0",
|
|
97
|
+
"react-dropzone": "^14.2.2",
|
|
98
|
+
"react-hook-form": "^7.33.1",
|
|
99
|
+
"react-i18next": "^11.18.1",
|
|
100
|
+
"react-multi-date-picker": "^3.3.4",
|
|
101
|
+
"react-otp-input": "^2.4.0",
|
|
102
|
+
"react-redux": "^8.0.2",
|
|
103
|
+
"react-spring-bottom-sheet": "^3.4.1",
|
|
104
|
+
"yup": "^0.32.11"
|
|
105
|
+
},
|
|
106
|
+
"peerDependencies": {
|
|
107
|
+
"react": "^18.2.0",
|
|
108
|
+
"react-dom": "^18.2.0"
|
|
109
|
+
},
|
|
110
|
+
"lint-staged": {
|
|
111
|
+
"src/**/*.{ts,tsx,json,js,jsx}": [
|
|
112
|
+
"yarn run prettier:fix",
|
|
113
|
+
"yarn run lint",
|
|
114
|
+
"git add ."
|
|
115
|
+
]
|
|
116
|
+
},
|
|
117
|
+
"browserslist": {
|
|
118
|
+
"production": [
|
|
119
|
+
">0.2%",
|
|
120
|
+
"not dead",
|
|
121
|
+
"not op_mini all"
|
|
122
|
+
],
|
|
123
|
+
"development": [
|
|
124
|
+
"last 1 chrome version",
|
|
125
|
+
"last 1 firefox version",
|
|
126
|
+
"last 1 safari version"
|
|
127
|
+
]
|
|
128
|
+
}
|
|
129
|
+
}
|