@tap-payments/auth-jsconnect 2.3.30-test → 2.3.32-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.
@@ -351,12 +351,79 @@ export declare enum VerificationStatus {
351
351
  NOT_ENTERED = "not_entered"
352
352
  }
353
353
  export declare type BankDataStatus = {
354
+ iban: FieldType;
354
355
  account_number: FieldType;
356
+ swift_code: FieldType;
355
357
  bank_name: FieldType;
356
- bank_statement_file_id: FieldType;
357
358
  beneficiary_name: FieldType;
358
- iban: FieldType;
359
+ bank_statement_file_id: FieldType;
359
360
  is_acknowledged: FieldType;
360
- swift_code: FieldType;
361
+ };
362
+ export declare type EntityDataStatus = {
363
+ type: FieldType;
364
+ 'license.status': FieldType;
365
+ 'license.provider': FieldType;
366
+ 'license.type': FieldType;
367
+ 'license.number': FieldType;
368
+ 'license.additional_info': FieldType;
369
+ 'license.issuing_date': FieldType;
370
+ 'license.expiry_date': FieldType;
371
+ 'capital.paid': FieldType;
372
+ 'capital.subscribed': FieldType;
373
+ 'capital.announced': FieldType;
374
+ 'capital.shares.count': FieldType;
375
+ 'capital.shares.value': FieldType;
376
+ activities: FieldType;
377
+ documents: FieldType;
378
+ location: FieldType;
379
+ 'legal_name.en': FieldType;
380
+ 'legal_name.ar': FieldType;
381
+ country: FieldType;
382
+ not_for_profit: FieldType;
383
+ is_vat_acknowledged: FieldType;
384
+ tax_number: FieldType;
385
+ opened_by: FieldType;
386
+ signed_by: FieldType;
387
+ settlement_by: FieldType;
388
+ billing_address: FieldType;
389
+ AOA_file_id: FieldType;
390
+ };
391
+ export declare type IndividualDataStatus = {
392
+ status: FieldType;
393
+ name: FieldType;
394
+ 'contact.email': FieldType;
395
+ 'contact.phone.number': FieldType;
396
+ 'contact.phone.country_code': FieldType;
397
+ nationality: FieldType;
398
+ 'birth.date': FieldType;
399
+ 'birth.city': FieldType;
400
+ 'birth.country': FieldType;
401
+ 'identification.id': FieldType;
402
+ 'identification.type': FieldType;
403
+ 'identification.expiry': FieldType;
404
+ 'identification.issuer_country': FieldType;
405
+ role: FieldType;
406
+ relation: FieldType;
407
+ occupation: FieldType;
408
+ is_authorized: FieldType;
409
+ address: FieldType;
410
+ source_of_income: FieldType;
411
+ monthly_income: FieldType;
412
+ is_relative_PEP: FieldType;
413
+ is_influencer: FieldType;
414
+ };
415
+ export declare type BrandDataStatus = {
416
+ status: FieldType;
417
+ name: FieldType;
418
+ 'operations.business_start_date': FieldType;
419
+ 'operations.sales_range': FieldType;
420
+ 'operations.customer_base': FieldType;
421
+ 'operations.customer_base_location': FieldType;
422
+ terms: FieldType;
423
+ 'segment.type': FieldType;
424
+ 'segment.teams': FieldType;
425
+ 'segment.sale': FieldType;
426
+ activities: FieldType;
427
+ channel_services: FieldType;
361
428
  };
362
429
  export {};
@@ -332,7 +332,7 @@ export var retrieveEntityList = createAsyncThunk('retrieveEntityList', function
332
332
  });
333
333
  }); });
334
334
  export var updateBrandActivities = createAsyncThunk('brandUpdateBrandActivities', function (params, thunkApi) { return __awaiter(void 0, void 0, void 0, function () {
335
- var _a, settings, brand, _b, data_status, id, isActivitiesNonEditable, isCustomerBaseLocationNonEditable, isCustomerBaseNonEditable, isSalesRangeNonEditable, activities, customerLocations, expectedCustomer, expectedSale, requestBody, customerLocation, customerBaseId, salesId, customerBase, brandData;
335
+ var _a, settings, brand, _b, data_status, id, isActivitiesNonEditable, isCustomerBaseLocationNonEditable, isCustomerBaseNonEditable, isTermsNonEditable, isSalesRangeNonEditable, activities, customerLocations, expectedCustomer, expectedSale, requestBody, customerLocation, customerBaseId, salesId, customerBase, brandData;
336
336
  var _c, _d, _e;
337
337
  return __generator(this, function (_f) {
338
338
  switch (_f.label) {
@@ -342,12 +342,13 @@ export var updateBrandActivities = createAsyncThunk('brandUpdateBrandActivities'
342
342
  isActivitiesNonEditable = hasNoneEditableValue(data_status, 'activities');
343
343
  isCustomerBaseLocationNonEditable = hasNoneEditableValue(data_status === null || data_status === void 0 ? void 0 : data_status.operations, 'customer_base_location');
344
344
  isCustomerBaseNonEditable = hasNoneEditableValue(data_status === null || data_status === void 0 ? void 0 : data_status.operations, 'customer_base');
345
+ isTermsNonEditable = hasNoneEditableValue(data_status, 'terms');
345
346
  isSalesRangeNonEditable = hasNoneEditableValue(data_status === null || data_status === void 0 ? void 0 : data_status.operations, 'sales_range');
346
347
  activities = params.activities, customerLocations = params.customerLocations, expectedCustomer = params.expectedCustomer, expectedSale = params.expectedSale;
347
348
  requestBody = {
348
349
  id: id,
349
350
  activities: isActivitiesNonEditable ? undefined : activities,
350
- term: ['general', 'refund', 'chargeback'],
351
+ term: isTermsNonEditable ? undefined : ['general', 'refund', 'chargeback'],
351
352
  step_name: BRAND_STEP_NAMES.BRAND_ACTIVITIES
352
353
  };
353
354
  customerLocation = customerLocations.map(function (location) { return ({
@@ -298,10 +298,12 @@ export var taxSlice = createSlice({
298
298
  state.error = null;
299
299
  state.customLoading = false;
300
300
  var _a = action.payload, data = _a.data, token = _a.token, boardResponse = _a.boardResponse;
301
- var user = boardResponse.user, bank_account = boardResponse.bank_account, vatID = boardResponse.vatID, merchant = boardResponse.merchant, individuals = boardResponse.individuals;
301
+ var user = boardResponse.user, bank_account = boardResponse.bank_account, vatID = boardResponse.vatID, merchant = boardResponse.merchant, individuals = boardResponse.individuals, entity = boardResponse.entity;
302
302
  state.data.verify.responseBody = __assign(__assign(__assign(__assign({}, data), boardResponse), state.data.verify.responseBody), { board_id: data.id, name: user === null || user === void 0 ? void 0 : user.names, bank_account: bank_account, vatID: vatID, merchant: merchant, individuals: individuals });
303
303
  state.data.verify.token = token;
304
304
  state.data.taxData.vatId = vatID;
305
+ if (entity === null || entity === void 0 ? void 0 : entity.is_vat_acknowledged)
306
+ state.data.taxData.confirmPolicy = entity === null || entity === void 0 ? void 0 : entity.is_vat_acknowledged;
305
307
  })
306
308
  .addCase(verifyLeadToken.pending, function (state) {
307
309
  state.error = null;
@@ -11,15 +11,14 @@ var __assign = (this && this.__assign) || function () {
11
11
  };
12
12
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
13
  import React from 'react';
14
- import { ScreenContainer } from '../../../../features/shared/Containers';
14
+ import { ScreenContainer } from '../../../shared/Containers';
15
15
  import { FormProvider, useForm } from 'react-hook-form';
16
16
  import Form from '../../../../components/Form';
17
17
  import { styled } from '@mui/material/styles';
18
- import { useAppDispatch, useAppSelector, useLanguage, useSetFromDefaultValues } from '../../../../hooks';
18
+ import { useAppDispatch, useAppSelector, useDataNoneEditable, useFormReadOnly, useLanguage, useSetFromDefaultValues, useFormErrorAndUpdateReadOnly } from '../../../../hooks';
19
19
  import { yupResolver } from '@hookform/resolvers/yup';
20
20
  import { BrandActivitiesValidationSchema } from './validation';
21
21
  import Button from '../../../shared/Button';
22
- import { settingsSelector } from '../../../../app/settings';
23
22
  import { brandSelector, updateBrandActivities } from '../../../app/brand/brandStore';
24
23
  import { handlePrevScreenStep } from '../../../../app/settings';
25
24
  import { useTranslation } from 'react-i18next';
@@ -38,7 +37,6 @@ var FormStyled = styled(Form)(function () { return ({
38
37
  var BrandActivities = function (_a) {
39
38
  var _b = React.useState(), listActive = _b[0], setListActive = _b[1];
40
39
  var dispatch = useAppDispatch();
41
- var settingData = useAppSelector(settingsSelector).data;
42
40
  var _c = useAppSelector(brandSelector), data = _c.data, loading = _c.loading, error = _c.error;
43
41
  var _d = data.brandActivities, activities = _d.activities, customerLocations = _d.customerLocations, expectedCustomer = _d.expectedCustomer, expectedSale = _d.expectedSale, termAndConditionChecked = _d.termAndConditionChecked, refundPolicy = _d.refundPolicy, transactionPolicy = _d.transactionPolicy;
44
42
  var ListType;
@@ -62,6 +60,16 @@ var BrandActivities = function (_a) {
62
60
  mode: 'onChange'
63
61
  });
64
62
  useSetFromDefaultValues(methods, data.brandActivities, true);
63
+ var brand = (data.verify.responseBody || {}).brand;
64
+ var originalReadOnly = useFormReadOnly(methods);
65
+ var noneEditable = useDataNoneEditable(brand === null || brand === void 0 ? void 0 : brand.data_status, [
66
+ 'activities',
67
+ 'operations.customer_base_location',
68
+ 'operations.customer_base',
69
+ 'operations.sales_range',
70
+ 'terms'
71
+ ]);
72
+ var readOnly = useFormErrorAndUpdateReadOnly(methods, originalReadOnly, noneEditable);
65
73
  var onSubmit = function (data) {
66
74
  dispatch(updateBrandActivities(data));
67
75
  };
@@ -78,6 +86,6 @@ var BrandActivities = function (_a) {
78
86
  var isCustomerBaseListActive = listActive === ListType.CustomerBaseList;
79
87
  var isExpectedCustomerListActive = listActive === ListType.ExpectedCustomerList;
80
88
  var isExpectedSalesListActive = listActive === ListType.ExpectedSalesList;
81
- return (_jsx(ScreenContainer, { children: _jsx(FormProvider, __assign({}, methods, { children: _jsxs(FormStyled, __assign({ onSubmit: methods.handleSubmit(onSubmit) }, { children: [_jsx(ActivitiesList, { readOnly: !settingData.boardMaturity && (activities === null || activities === void 0 ? void 0 : activities.length) > 0, show: !isCustomerBaseListActive && !isExpectedCustomerListActive && !isExpectedSalesListActive, onListOpen: function () { return handleMenuClick(ListType.ActivitiesList); }, onListClose: function () { return handleMenuClick(); } }), _jsx(CustomerBase, { readOnly: !settingData.boardMaturity && (customerLocations === null || customerLocations === void 0 ? void 0 : customerLocations.length) > 0, show: !isActivitiesListActive && !isExpectedCustomerListActive && !isExpectedSalesListActive, onListOpen: function () { return handleMenuClick(ListType.CustomerBaseList); }, onListClose: function () { return handleMenuClick(); } }), _jsx(ExpectedCustomers, { readOnly: !settingData.boardMaturity && !!(expectedCustomer === null || expectedCustomer === void 0 ? void 0 : expectedCustomer.id), show: !isActivitiesListActive && !isCustomerBaseListActive && !isExpectedSalesListActive, onListOpen: function () { return handleMenuClick(ListType.ExpectedCustomerList); }, onListClose: function () { return handleMenuClick(); } }), _jsx(ExpectedSalesRange, { readOnly: !settingData.boardMaturity && !!(expectedSale === null || expectedSale === void 0 ? void 0 : expectedSale.id), show: !isActivitiesListActive && !isCustomerBaseListActive && !isExpectedCustomerListActive, onListOpen: function () { return handleMenuClick(ListType.ExpectedSalesList); }, onListClose: function () { return handleMenuClick(); } }), _jsxs(Collapse, __assign({ in: !listActive }, { children: [_jsx(TAC, { show: true, readOnly: !settingData.boardMaturity && termAndConditionChecked === true }), _jsx(RefundPolicy, { readOnly: !settingData.boardMaturity && refundPolicy === true }), _jsx(TransactionPolicy, { readOnly: !settingData.boardMaturity && transactionPolicy === true }), _jsx(Button, __assign({ onBackClicked: function () { return onBack(); }, disabled: disabled, isAr: isAr, error: t(error || ''), loading: loading }, { children: t('next') }))] }))] })) })) }));
89
+ return (_jsx(ScreenContainer, { children: _jsx(FormProvider, __assign({}, methods, { children: _jsxs(FormStyled, __assign({ onSubmit: methods.handleSubmit(onSubmit) }, { children: [_jsx(ActivitiesList, { readOnly: readOnly['activities'] || noneEditable['activities'], show: !isCustomerBaseListActive && !isExpectedCustomerListActive && !isExpectedSalesListActive, onListOpen: function () { return handleMenuClick(ListType.ActivitiesList); }, onListClose: function () { return handleMenuClick(); } }), _jsx(CustomerBase, { readOnly: readOnly['customerLocations'] || noneEditable['operations.customer_base_location'], show: !isActivitiesListActive && !isExpectedCustomerListActive && !isExpectedSalesListActive, onListOpen: function () { return handleMenuClick(ListType.CustomerBaseList); }, onListClose: function () { return handleMenuClick(); } }), _jsx(ExpectedCustomers, { readOnly: readOnly['expectedCustomer'] || noneEditable['operations.customer_base'], show: !isActivitiesListActive && !isCustomerBaseListActive && !isExpectedSalesListActive, onListOpen: function () { return handleMenuClick(ListType.ExpectedCustomerList); }, onListClose: function () { return handleMenuClick(); } }), _jsx(ExpectedSalesRange, { readOnly: readOnly['expectedSale'] || noneEditable['operations.sales_range'], show: !isActivitiesListActive && !isCustomerBaseListActive && !isExpectedCustomerListActive, onListOpen: function () { return handleMenuClick(ListType.ExpectedSalesList); }, onListClose: function () { return handleMenuClick(); } }), _jsxs(Collapse, __assign({ in: !listActive }, { children: [_jsx(TAC, { show: true, readOnly: readOnly['termAndConditionChecked'] || noneEditable['terms'] }), _jsx(RefundPolicy, { readOnly: readOnly['refundPolicy'] || noneEditable['terms'] }), _jsx(TransactionPolicy, { readOnly: readOnly['transactionPolicy'] || noneEditable['terms'] }), _jsx(Button, __assign({ onBackClicked: function () { return onBack(); }, disabled: disabled, isAr: isAr, error: t(error || ''), loading: loading }, { children: t('next') }))] }))] })) })) }));
82
90
  };
83
91
  export default BrandActivities;
@@ -45,16 +45,16 @@ var SimpleListStyled = styled((SimpleList))(function () { return ({
45
45
  height: 'fit-content'
46
46
  }); });
47
47
  var ExpectedCustomers = function (_a) {
48
- var _b, _c;
48
+ var _b, _c, _d, _e;
49
49
  var readOnly = _a.readOnly, props = __rest(_a, ["readOnly"]);
50
- var _d = React.useState([]), expectedCustomersList = _d[0], setExpectedCustomersList = _d[1];
51
- var _e = React.useState(null), anchorEl = _e[0], setAnchorEl = _e[1];
50
+ var _f = React.useState([]), expectedCustomersList = _f[0], setExpectedCustomersList = _f[1];
51
+ var _g = React.useState(null), anchorEl = _g[0], setAnchorEl = _g[1];
52
52
  var t = useTranslation().t;
53
53
  var isAr = useLanguage().isAr;
54
54
  var dispatch = useAppDispatch();
55
55
  var control = useFormContext().control;
56
56
  var expectedCustomerControl = useController({ name: 'expectedCustomer', control: control });
57
- var _f = useAppSelector(brandSelector), data = _f.data, error = _f.error;
57
+ var _h = useAppSelector(brandSelector), data = _h.data, error = _h.error;
58
58
  var brandActivities = data.brandActivities;
59
59
  var response = brandActivities.responseBody;
60
60
  var onOpenList = function (event) {
@@ -93,7 +93,7 @@ var ExpectedCustomers = function (_a) {
93
93
  };
94
94
  var expectedCustomersValue = expectedCustomerControl.field.value;
95
95
  var expectedCustomersSelected = expectedCustomersValue;
96
- return (_jsx(Collapse, __assign({ in: props.show }, { children: _jsxs(ScreenContainer, { children: [_jsx(InputLabelStyled, { children: t('expected_customers_to_serve') }), _jsx(InputStyled, { readOnly: true, placeholder: t('choose_expected_sales'), value: isAr ? (_b = expectedCustomersSelected === null || expectedCustomersSelected === void 0 ? void 0 : expectedCustomersSelected.name.ar) !== null && _b !== void 0 ? _b : '' : (_c = expectedCustomersSelected === null || expectedCustomersSelected === void 0 ? void 0 : expectedCustomersSelected.name.en) !== null && _c !== void 0 ? _c : '', onClick: !!anchorEl ? function () { return onCloseList(); } : onOpenList, endAdornment: _jsx(ExpandIcon, { anchorEl: !!anchorEl }) }), _jsxs(Collapse, __assign({ in: !!anchorEl, timeout: 300 }, { children: [_jsx(Search, { onSearchValue: handleSearch }), _jsx(SimpleListStyled, { searchKeyPath: 'name', list: expectedCustomersList, onSelectItem: onSelectItem, renderItem: function (item) {
96
+ return (_jsx(Collapse, __assign({ in: props.show }, { children: _jsxs(ScreenContainer, { children: [_jsx(InputLabelStyled, { children: t('expected_customers_to_serve') }), _jsx(InputStyled, { readOnly: true, placeholder: t('choose_expected_sales'), value: isAr ? (_c = (_b = expectedCustomersSelected === null || expectedCustomersSelected === void 0 ? void 0 : expectedCustomersSelected.name) === null || _b === void 0 ? void 0 : _b.ar) !== null && _c !== void 0 ? _c : '' : (_e = (_d = expectedCustomersSelected === null || expectedCustomersSelected === void 0 ? void 0 : expectedCustomersSelected.name) === null || _d === void 0 ? void 0 : _d.en) !== null && _e !== void 0 ? _e : '', onClick: !!anchorEl ? function () { return onCloseList(); } : onOpenList, endAdornment: _jsx(ExpandIcon, { anchorEl: !!anchorEl }) }), _jsxs(Collapse, __assign({ in: !!anchorEl, timeout: 300 }, { children: [_jsx(Search, { onSearchValue: handleSearch }), _jsx(SimpleListStyled, { searchKeyPath: 'name', list: expectedCustomersList, onSelectItem: onSelectItem, renderItem: function (item) {
97
97
  return (_jsxs(_Fragment, { children: [_jsx(ListItemContainer, { children: _jsx(NameContainer, __assign({ isSelected: (item === null || item === void 0 ? void 0 : item.id) === (expectedCustomersValue === null || expectedCustomersValue === void 0 ? void 0 : expectedCustomersValue.id) }, { children: isAr ? item.name.ar : item.name.en })) }), item.id === (expectedCustomersSelected === null || expectedCustomersSelected === void 0 ? void 0 : expectedCustomersSelected.id) && _jsx(CheckIconStyled, {})] }));
98
98
  } })] }))] }) })));
99
99
  };
@@ -10,19 +10,19 @@ var __assign = (this && this.__assign) || function () {
10
10
  return __assign.apply(this, arguments);
11
11
  };
12
12
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
- import { ScreenContainer } from '../../../../features/shared/Containers';
13
+ import { ScreenContainer } from '../../../shared/Containers';
14
14
  import React from 'react';
15
15
  import { FormProvider, useForm } from 'react-hook-form';
16
16
  import Form from '../../../../components/Form';
17
17
  import { styled } from '@mui/material/styles';
18
- import { useAppDispatch, useAppSelector, useLanguage, useSetFromDefaultValues } from '../../../../hooks';
18
+ import { useAppDispatch, useAppSelector, useDataNoneEditable, useFormReadOnly, useLanguage, useSetFromDefaultValues, useFormErrorAndUpdateReadOnly } from '../../../../hooks';
19
19
  import { yupResolver } from '@hookform/resolvers/yup';
20
20
  import { BrandValidationSchema } from './validation';
21
21
  import Button from '../../../shared/Button';
22
22
  import { settingsSelector } from '../../../../app/settings';
23
23
  import { clearError, brandSelector, updateBrand } from '../../../app/brand/brandStore';
24
24
  import { useTranslation } from 'react-i18next';
25
- import TeamSize from '../../../../features/brand/screens/BrandInfo/TeamSize';
25
+ import TeamSize from '../../../brand/screens/BrandInfo/TeamSize';
26
26
  import Collapse from '../../../../components/Collapse';
27
27
  import { mapSalesChannel } from '../../../../utils';
28
28
  import BrandName from './BrandName';
@@ -48,7 +48,7 @@ var BrandInfo = function (_a) {
48
48
  var settingData = useAppSelector(settingsSelector).data;
49
49
  var _e = useAppSelector(brandSelector), data = _e.data, loading = _e.loading, error = _e.error;
50
50
  var _f = data.brandData, brandName = _f.brandName, segment = _f.segment, teamSize = _f.teamSize, salesChannels = _f.salesChannels, brandLogoId = _f.brandLogoId, responseBody = _f.responseBody;
51
- var logo_details = (((_b = data.verify.responseBody) === null || _b === void 0 ? void 0 : _b.brand) || {}).logo_details;
51
+ var _g = ((_b = data.verify.responseBody) === null || _b === void 0 ? void 0 : _b.brand) || {}, logo_details = _g.logo_details, data_status = _g.data_status;
52
52
  var methods = useForm({
53
53
  resolver: yupResolver(BrandValidationSchema()),
54
54
  defaultValues: {
@@ -62,6 +62,9 @@ var BrandInfo = function (_a) {
62
62
  });
63
63
  useSetFromDefaultValues(methods, __assign(__assign({}, data.brandData), { salesChannels: [] }), true);
64
64
  var defaultBrandLogoFile = React.useMemo(function () { return logo_details && __assign(__assign({}, logo_details), { docId: '' }); }, [logo_details]);
65
+ var originalReadOnly = useFormReadOnly(methods, { brandLogoId: defaultBrandLogoFile });
66
+ var noneEditable = useDataNoneEditable(data_status, ['name', 'segment.type', 'segment.teams', 'channel_services']);
67
+ var readOnly = useFormErrorAndUpdateReadOnly(methods, originalReadOnly, noneEditable);
65
68
  var onSubmit = function (data) {
66
69
  dispatch(updateBrand(data));
67
70
  };
@@ -84,6 +87,6 @@ var BrandInfo = function (_a) {
84
87
  };
85
88
  var isSegmentsListActive = listActive === ListType.SegmentsList;
86
89
  var isTeamSizeListActive = listActive === ListType.TeamSizeList;
87
- return (_jsx(ScreenContainer, { children: _jsx(FormProvider, __assign({}, methods, { children: _jsxs(FormStyled, __assign({ onSubmit: methods.handleSubmit(onSubmit) }, { children: [_jsx(BrandName, { readOnly: !settingData.boardMaturity && !!brandName, show: !listActive, brandNameChecking: brandNameChecking, fetchingBrandName: setBrandNameChecking }), _jsx(BrandLogo, { defaultFile: defaultBrandLogoFile, readOnly: !settingData.boardMaturity && !!defaultBrandLogoFile, show: !listActive }), _jsx(Segments, { readOnly: !settingData.boardMaturity && !!(segment === null || segment === void 0 ? void 0 : segment.id), show: !isTeamSizeListActive, onListOpen: function () { return handleMenuClick(ListType.SegmentsList); }, onListClose: function () { return handleMenuClick(); } }), _jsx(TeamSize, { readOnly: !settingData.boardMaturity && !!(teamSize === null || teamSize === void 0 ? void 0 : teamSize.id), show: !isSegmentsListActive, onListOpen: function () { return handleMenuClick(ListType.TeamSizeList); }, onListClose: function () { return handleMenuClick(); } }), _jsxs(Collapse, __assign({ in: !listActive }, { children: [_jsx(SalesChannels, { readOnly: !settingData.boardMaturity && (salesChannels === null || salesChannels === void 0 ? void 0 : salesChannels.length) > 0 }), _jsx(Button, __assign({ disableBack: true, disabled: disabled, isAr: isAr, error: t(error || ''), loading: loading }, { children: t('next') }))] }))] })) })) }));
90
+ return (_jsx(ScreenContainer, { children: _jsx(FormProvider, __assign({}, methods, { children: _jsxs(FormStyled, __assign({ onSubmit: methods.handleSubmit(onSubmit) }, { children: [_jsx(BrandName, { readOnly: readOnly['brandName'] || noneEditable['name'], show: !listActive, brandNameChecking: brandNameChecking, fetchingBrandName: setBrandNameChecking }), _jsx(BrandLogo, { defaultFile: defaultBrandLogoFile, readOnly: readOnly['brandLogoId'], show: !listActive }), _jsx(Segments, { readOnly: readOnly['segment'] || noneEditable['segment.type'], show: !isTeamSizeListActive, onListOpen: function () { return handleMenuClick(ListType.SegmentsList); }, onListClose: function () { return handleMenuClick(); } }), _jsx(TeamSize, { readOnly: readOnly['teamSize'] || noneEditable['segment.teams'], show: !isSegmentsListActive, onListOpen: function () { return handleMenuClick(ListType.TeamSizeList); }, onListClose: function () { return handleMenuClick(); } }), _jsxs(Collapse, __assign({ in: !listActive }, { children: [_jsx(SalesChannels, { readOnly: readOnly['salesChannels'] || noneEditable['channel_services'] }), _jsx(Button, __assign({ disableBack: true, disabled: disabled, isAr: isAr, error: t(error || ''), loading: loading }, { children: t('next') }))] }))] })) })) }));
88
91
  };
89
92
  export default BrandInfo;
@@ -9,25 +9,13 @@ 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 { FormProvider, useForm } from 'react-hook-form';
26
15
  import { useTranslation } from 'react-i18next';
27
16
  import { styled } from '@mui/material/styles';
28
17
  import Collapse from '@mui/material/Collapse';
29
- import { useAppDispatch, useAppSelector, useLanguage, useSetFromDefaultValues } from '../../../../hooks';
30
- import { settingsSelector } from '../../../../app/settings';
18
+ import { useAppDispatch, useAppSelector, useDataNoneEditable, useFormReadOnly, useLanguage, useSetFromDefaultValues, useFormErrorAndUpdateReadOnly } from '../../../../hooks';
31
19
  import { clearError, entitySelector, updateEntityCapital } from '../../../app/entity/entityStore';
32
20
  import { yupResolver } from '@hookform/resolvers/yup';
33
21
  import { handlePrevScreenStep } from '../../../../app/settings';
@@ -45,19 +33,31 @@ var FormStyled = styled(Form)(function () { return ({
45
33
  }); });
46
34
  var EntityCapital = function (_a) {
47
35
  var _b = React.useState(false), anchorEl = _b[0], setAnchorEl = _b[1];
48
- var settingData = useAppSelector(settingsSelector).data;
49
36
  var _c = useAppSelector(entitySelector), data = _c.data, loading = _c.loading, error = _c.error, uploading = _c.uploading;
50
37
  var isAr = useLanguage().isAr;
51
38
  var t = useTranslation().t;
52
39
  var dispatch = useAppDispatch();
53
- var _d = data.entityCapitalData, responseBody = _d.responseBody, defaultValues = __rest(_d, ["responseBody"]);
40
+ var _d = data.entityCapitalData, responseBody = _d.responseBody, capitalPaid = _d.capitalPaid, capitalShareCount = _d.capitalShareCount, capitalShareValue = _d.capitalShareValue, activities = _d.activities;
54
41
  var entity = (data.verify.responseBody || {}).entity;
55
42
  var methods = useForm({
56
43
  resolver: yupResolver(EntityCapitalValidationSchema()),
57
- defaultValues: defaultValues,
44
+ defaultValues: {
45
+ activities: activities,
46
+ capitalPaid: capitalPaid,
47
+ capitalShareCount: capitalShareCount,
48
+ capitalShareValue: capitalShareValue
49
+ },
58
50
  mode: 'onChange'
59
51
  });
60
- useSetFromDefaultValues(methods, defaultValues);
52
+ useSetFromDefaultValues(methods, data.entityCapitalData, true);
53
+ var originalReadOnly = useFormReadOnly(methods);
54
+ var noneEditable = useDataNoneEditable(entity === null || entity === void 0 ? void 0 : entity.data_status, [
55
+ 'activities',
56
+ 'capital.paid',
57
+ 'capital.shares.count',
58
+ 'capital.shares.value'
59
+ ]);
60
+ var readOnly = useFormErrorAndUpdateReadOnly(methods, originalReadOnly, noneEditable);
61
61
  var onSubmit = function (data) {
62
62
  dispatch(updateEntityCapital(data));
63
63
  };
@@ -72,6 +72,6 @@ var EntityCapital = function (_a) {
72
72
  setAnchorEl(flag);
73
73
  };
74
74
  var disabled = !methods.formState.isValid || !!error || uploading;
75
- return (_jsx(ScreenContainer, { children: _jsx(FormProvider, __assign({}, methods, { children: _jsxs(FormStyled, __assign({ onSubmit: methods.handleSubmit(onSubmit) }, { children: [_jsx(ActivityList, { readOnly: !settingData.boardMaturity && defaultValues.activities.length > 0, onListOpen: function () { return handleActivitiesOpenClose(true); }, onListClose: function () { return handleActivitiesOpenClose(false); } }), _jsxs(Collapse, __assign({ in: !anchorEl }, { children: [_jsx(CapitalPaid, { readOnly: !settingData.boardMaturity && !!defaultValues.capitalPaid }), _jsx(CapitalShareCount, { readOnly: !settingData.boardMaturity && !!defaultValues.capitalShareCount }), _jsx(CapitalShareValue, { readOnly: !settingData.boardMaturity && !!defaultValues.capitalShareValue }), _jsx(Button, __assign({ onBackClicked: function () { return onBack(); }, disabled: disabled, isAr: isAr, loading: loading, error: t(error || '') }, { children: t('next') }))] }))] })) })) }));
75
+ return (_jsx(ScreenContainer, { children: _jsx(FormProvider, __assign({}, methods, { children: _jsxs(FormStyled, __assign({ onSubmit: methods.handleSubmit(onSubmit) }, { children: [_jsx(ActivityList, { readOnly: readOnly['activities'] || noneEditable['activities'], onListOpen: function () { return handleActivitiesOpenClose(true); }, onListClose: function () { return handleActivitiesOpenClose(false); } }), _jsxs(Collapse, __assign({ in: !anchorEl }, { children: [_jsx(CapitalPaid, { readOnly: readOnly['capitalPaid'] || noneEditable['capital.paid'] }), _jsx(CapitalShareCount, { readOnly: readOnly['capitalShareCount'] || noneEditable['capital.shares.count'] }), _jsx(CapitalShareValue, { readOnly: readOnly['capitalShareValue'] || noneEditable['capital.shares.value'] }), _jsx(Button, __assign({ onBackClicked: function () { return onBack(); }, disabled: disabled, isAr: isAr, loading: loading, error: t(error || '') }, { children: t('next') }))] }))] })) })) }));
76
76
  };
77
77
  export default EntityCapital;
@@ -15,7 +15,7 @@ import { FormProvider, useForm } from 'react-hook-form';
15
15
  import { useTranslation } from 'react-i18next';
16
16
  import { yupResolver } from '@hookform/resolvers/yup';
17
17
  import { styled } from '@mui/material/styles';
18
- import { useAppDispatch, useAppSelector, useLanguage, useSetFromDefaultValues } from '../../../../hooks';
18
+ import { useAppDispatch, useAppSelector, useDataNoneEditable, useFormReadOnly, useLanguage, useSetFromDefaultValues, useFormErrorAndUpdateReadOnly } from '../../../../hooks';
19
19
  import { settingsSelector } from '../../../../app/settings';
20
20
  import { getFileDetailsFromDocument, isKW, isSA } from '../../../../utils';
21
21
  import { BusinessType, DocumentPurpose } from '../../../../@types';
@@ -70,6 +70,19 @@ var EntityName = function (_a) {
70
70
  useSetFromDefaultValues(methods, data.entityNameData, true);
71
71
  var defaultCertificateFiles = React.useMemo(function () { return getFileDetailsFromDocument(entity === null || entity === void 0 ? void 0 : entity.documents, DocumentPurpose.CR); }, [entity === null || entity === void 0 ? void 0 : entity.documents]);
72
72
  var defaultArticleFile = React.useMemo(function () { return (entity === null || entity === void 0 ? void 0 : entity.AOA_file) && __assign(__assign({}, entity === null || entity === void 0 ? void 0 : entity.AOA_file), { docId: entity.id }); }, [entity === null || entity === void 0 ? void 0 : entity.AOA_file]);
73
+ var originalReadOnly = useFormReadOnly(methods, { certificateId: defaultCertificateFiles, articleId: defaultArticleFile });
74
+ var noneEditable = useDataNoneEditable(entity === null || entity === void 0 ? void 0 : entity.data_status, [
75
+ 'legal_name.en',
76
+ 'legal_name.ar',
77
+ 'type',
78
+ 'license.number',
79
+ 'license.additional_info',
80
+ 'license.issuing_date',
81
+ 'license.expiry_date',
82
+ 'documents',
83
+ 'AOA_file_id'
84
+ ]);
85
+ var readOnly = useFormErrorAndUpdateReadOnly(methods, originalReadOnly, noneEditable);
73
86
  var onSubmit = function (data) {
74
87
  dispatch(updateEntityName(data));
75
88
  };
@@ -89,7 +102,6 @@ var EntityName = function (_a) {
89
102
  var disabled = !methods.formState.isValid || !!error || uploading || uploadingArticle;
90
103
  var showLicenseNumber = !isSACountry ? isCR : true;
91
104
  var showUnifiedNumber = isSACountry ? isCR : false;
92
- console.log('!settingsData.boardMaturity && !!certificateId?.length}', !settingsData.boardMaturity, !!(certificateId === null || certificateId === void 0 ? void 0 : certificateId.length), certificateId);
93
- return (_jsx(ScreenContainer, { children: _jsx(FormProvider, __assign({}, methods, { children: _jsxs(FormStyled, __assign({ onSubmit: methods.handleSubmit(onSubmit) }, { children: [_jsx(Collapse, __assign({ in: !expiryAnchorEl && !issueAnchorEl && !entityTypeAnchorEl }, { children: _jsx(LegalName, { readOnly: !settingsData.boardMaturity && !!legalName }) })), _jsx(Collapse, __assign({ in: !expiryAnchorEl && !issueAnchorEl }, { children: _jsx(EntityTypeList, { readOnly: !settingsData.boardMaturity && entityType.length > 0, onListOpen: function () { return handleEntityOpenClose(true); }, onListClose: function () { return handleEntityOpenClose(false); } }) })), _jsxs(Collapse, __assign({ in: !expiryAnchorEl && !issueAnchorEl && !entityTypeAnchorEl }, { children: [_jsx(LicenseNumber, { show: showLicenseNumber, readOnly: !settingsData.boardMaturity && !!licenseNumber }), _jsx(UnifiedNumber, { show: showUnifiedNumber, readOnly: !settingsData.boardMaturity && !!unifiedNumber })] })), _jsx(Collapse, __assign({ in: !expiryAnchorEl && !entityTypeAnchorEl }, { children: _jsx(IssuingDate, { onDateClicked: handleIssueDateOpenClose, readOnly: !settingsData.boardMaturity && !!issuingDate }) })), _jsx(Collapse, __assign({ in: !issueAnchorEl && !entityTypeAnchorEl }, { children: _jsx(ExpiryDate, { onDateClicked: handleExpiryDateOpenClose, readOnly: !settingsData.boardMaturity && !!expiryDate }) })), _jsxs(Collapse, __assign({ in: !expiryAnchorEl && !issueAnchorEl && !entityTypeAnchorEl }, { children: [_jsx(LicenseCertificate, { defaultFiles: defaultCertificateFiles, show: !(isKWCountry && !isCR), readOnly: !settingsData.boardMaturity && !!(defaultCertificateFiles === null || defaultCertificateFiles === void 0 ? void 0 : defaultCertificateFiles.length) }), _jsx(Article, { defaultFile: defaultArticleFile, show: true, readOnly: !settingsData.boardMaturity && !!defaultArticleFile })] })), _jsx(Collapse, __assign({ in: !expiryAnchorEl && !issueAnchorEl && !entityTypeAnchorEl }, { children: _jsx(Button, __assign({ disableBack: true, disabled: disabled, isAr: isAr, loading: loading, error: t(error || '') }, { children: t('next') })) }))] })) })) }));
105
+ return (_jsx(ScreenContainer, { children: _jsx(FormProvider, __assign({}, methods, { children: _jsxs(FormStyled, __assign({ onSubmit: methods.handleSubmit(onSubmit) }, { children: [_jsx(Collapse, __assign({ in: !expiryAnchorEl && !issueAnchorEl && !entityTypeAnchorEl }, { children: _jsx(LegalName, { readOnly: readOnly['legalName'] || (noneEditable['legal_name.en'] && noneEditable['legal_name.ar']) }) })), _jsx(Collapse, __assign({ in: !expiryAnchorEl && !issueAnchorEl }, { children: _jsx(EntityTypeList, { readOnly: readOnly['entityType'] || noneEditable['type'], onListOpen: function () { return handleEntityOpenClose(true); }, onListClose: function () { return handleEntityOpenClose(false); } }) })), _jsxs(Collapse, __assign({ in: !expiryAnchorEl && !issueAnchorEl && !entityTypeAnchorEl }, { children: [_jsx(LicenseNumber, { show: showLicenseNumber, readOnly: readOnly['licenseNumber'] || noneEditable['license.number'] }), _jsx(UnifiedNumber, { show: showUnifiedNumber, readOnly: readOnly['unifiedNumber'] || noneEditable['license.additional_info'] })] })), _jsx(Collapse, __assign({ in: !expiryAnchorEl && !entityTypeAnchorEl }, { children: _jsx(IssuingDate, { onDateClicked: handleIssueDateOpenClose, readOnly: readOnly['issuingDate'] || noneEditable['license.issuing_date'] }) })), _jsx(Collapse, __assign({ in: !issueAnchorEl && !entityTypeAnchorEl }, { children: _jsx(ExpiryDate, { onDateClicked: handleExpiryDateOpenClose, readOnly: readOnly['expiryDate'] || noneEditable['license.expiry_date'] }) })), _jsxs(Collapse, __assign({ in: !expiryAnchorEl && !issueAnchorEl && !entityTypeAnchorEl }, { children: [_jsx(LicenseCertificate, { defaultFiles: defaultCertificateFiles, show: !(isKWCountry && !isCR), readOnly: readOnly['certificateId'] || noneEditable['documents'] }), _jsx(Article, { defaultFile: defaultArticleFile, show: true, readOnly: readOnly['articleId'] || noneEditable['AOA_file_id'] })] })), _jsx(Collapse, __assign({ in: !expiryAnchorEl && !issueAnchorEl && !entityTypeAnchorEl }, { children: _jsx(Button, __assign({ disableBack: true, disabled: disabled, isAr: isAr, loading: loading, error: t(error || '') }, { children: t('next') })) }))] })) })) }));
94
106
  };
95
107
  export default EntityName;
@@ -17,7 +17,7 @@ import { useTranslation } from 'react-i18next';
17
17
  import { handleCurrentActiveScreen, settingsSelector } from '../../../../app/settings';
18
18
  import Box from '@mui/material/Box';
19
19
  import { alpha, styled } from '@mui/material/styles';
20
- import { useAppDispatch, useAppSelector, useSetFromDefaultValues, useLanguage } from '../../../../hooks';
20
+ import { useAppDispatch, useAppSelector, useSetFromDefaultValues, useLanguage, useFormReadOnly, useDataNoneEditable, useFormErrorAndUpdateReadOnly } from '../../../../hooks';
21
21
  import { DocumentPurpose, IndividualType } from '../../../../@types';
22
22
  import { isSA } from '../../../../utils';
23
23
  import Form from '../../../../components/Form';
@@ -55,12 +55,10 @@ var AdditionalIndividualInfo = function (_a) {
55
55
  var t = useTranslation().t;
56
56
  var isAr = useLanguage().isAr;
57
57
  var dispatch = useAppDispatch();
58
- var settingData = useAppSelector(settingsSelector).data;
59
58
  var _b = useAppSelector(individualSelector), data = _b.data, loading = _b.loading, error = _b.error;
60
59
  var settingsData = useAppSelector(settingsSelector).data;
61
60
  var verify = data.verify;
62
61
  var user = (verify.responseBody || {}).user;
63
- var isAuthorizedUser = user === null || user === void 0 ? void 0 : user.is_authorized;
64
62
  var _c = data.individualData, occupation = _c.occupation, sourceIncome = _c.sourceIncome, monthlyIncome = _c.monthlyIncome, employerName = _c.employerName, employerLocation = _c.employerLocation, isPEP = _c.isPEP, isInfluencer = _c.isInfluencer, civilID = _c.civilID, signatureFileId = _c.signatureFileId, civilIDUploading = _c.civilIDUploading, signatureFileUploading = _c.signatureFileUploading, shareCount = _c.shareCount, shareValue = _c.shareValue;
65
63
  var methods = useForm({
66
64
  resolver: yupResolver(IndividualInfoValidationSchema(user === null || user === void 0 ? void 0 : user.type)),
@@ -108,7 +106,22 @@ var AdditionalIndividualInfo = function (_a) {
108
106
  return t('type_board_member');
109
107
  return t('type_user');
110
108
  };
111
- var defaultUserFiles = React.useMemo(function () { return getFileDetailsFromDocument(user === null || user === void 0 ? void 0 : user.documents, DocumentPurpose.IDENTITY_DOCUMENT); }, [user === null || user === void 0 ? void 0 : user.documents]);
109
+ var defaultCivilIdFiles = React.useMemo(function () { return getFileDetailsFromDocument(user === null || user === void 0 ? void 0 : user.documents, DocumentPurpose.IDENTITY_DOCUMENT); }, [user === null || user === void 0 ? void 0 : user.documents]);
110
+ var defaultSignatureFiles = React.useMemo(function () { return getFileDetailsFromDocument(user === null || user === void 0 ? void 0 : user.documents, DocumentPurpose.CUSTOMER_SIGNATURE); }, [user === null || user === void 0 ? void 0 : user.documents]);
111
+ var originalReadOnly = useFormReadOnly(methods, {
112
+ isPEP: typeof isPEP === 'boolean',
113
+ isInfluencer: typeof isInfluencer === 'boolean',
114
+ civilID: defaultCivilIdFiles,
115
+ signatureFileId: defaultSignatureFiles
116
+ });
117
+ var noneEditable = useDataNoneEditable(user === null || user === void 0 ? void 0 : user.data_status, [
118
+ 'occupation',
119
+ 'source_of_income',
120
+ 'monthly_income',
121
+ 'is_relative_PEP',
122
+ 'is_influencer'
123
+ ]);
124
+ var readOnly = useFormErrorAndUpdateReadOnly(methods, originalReadOnly, noneEditable);
112
125
  var showSignatureFile = (user === null || user === void 0 ? void 0 : user.type) === IndividualType.USER || (user === null || user === void 0 ? void 0 : user.type) === IndividualType.BUYER;
113
126
  var showOccupationFile = (user === null || user === void 0 ? void 0 : user.type) === IndividualType.USER || (user === null || user === void 0 ? void 0 : user.type) === IndividualType.BUYER;
114
127
  var showSourceOfIncome = (user === null || user === void 0 ? void 0 : user.type) === IndividualType.USER || (user === null || user === void 0 ? void 0 : user.type) === IndividualType.BUYER;
@@ -119,7 +132,7 @@ var AdditionalIndividualInfo = function (_a) {
119
132
  var isMonthlyIncomeListActive = listActive === ListType.MonthlyIncomeList;
120
133
  var isOccupationListActive = listActive === ListType.OccupationList;
121
134
  var disabled = !methods.formState.isValid || civilIDUploading || signatureFileUploading;
122
- return (_jsxs(ScreenContainer, { children: [_jsx(Collapse, __assign({ in: !listActive && !!(user === null || user === void 0 ? void 0 : user.is_authorized), timeout: 500 }, { children: _jsxs(TextBoxStyled, { children: [getUserName() || '', _jsx(RoleTextStyled, { children: getUserRole() || '' })] }) })), _jsx(FormProvider, __assign({}, methods, { children: _jsxs(Form, __assign({ onSubmit: methods.handleSubmit(onSubmit) }, { children: [_jsxs(Box, { children: [_jsx(Occupation, { readOnly: !settingData.boardMaturity && !!(occupation === null || occupation === void 0 ? void 0 : occupation.id), onListOpen: function () { return handleMenuClick(ListType.OccupationList); }, onListClose: function () { return handleMenuClick(); }, show: showOccupationFile && !isMonthlyIncomeListActive && !isSourceOfIncomeListActive }), _jsx(SourceOfIncome, { readOnly: !settingData.boardMaturity && !!(sourceIncome === null || sourceIncome === void 0 ? void 0 : sourceIncome.id), onListOpen: function () { return handleMenuClick(ListType.SourceOfIncomeList); }, onListClose: function () { return handleMenuClick(); }, show: showSourceOfIncome && !isMonthlyIncomeListActive && !isOccupationListActive }), _jsx(MonthlyIncome, { readOnly: !settingData.boardMaturity && !!(monthlyIncome === null || monthlyIncome === void 0 ? void 0 : monthlyIncome.id), show: showSourceOfIncome && !isSourceOfIncomeListActive && !isOccupationListActive, onListOpen: function () { return handleMenuClick(ListType.MonthlyIncomeList); }, onListClose: function () { return handleMenuClick(); } }), _jsx(ShareCount, { show: !listActive && showShares, readOnly: !settingData.boardMaturity && !!shareCount }), _jsx(ShareValue, { show: !listActive && showShares, readOnly: !settingData.boardMaturity && !!shareValue }), _jsxs(Collapse, __assign({ in: !listActive, timeout: 500 }, { children: [_jsx(CivilIDFile, { show: !isSACountry, readOnly: !settingData.boardMaturity && !!defaultUserFiles.length, defaultFiles: defaultUserFiles }), _jsx(SignatureFile, { show: (user === null || user === void 0 ? void 0 : user.is_authorized) && showSignatureFile, readOnly: !settingData.boardMaturity && !!defaultUserFiles.length, defaultFiles: defaultUserFiles })] })), _jsx(PEPSwitch, { show: showIsPEP && !listActive, readOnly: !settingData.boardMaturity && typeof isPEP === 'boolean' }), _jsx(InfluencerSwitch, { show: showIsInfluencer && !listActive, readOnly: !settingData.boardMaturity && typeof isInfluencer === 'boolean' })] }), _jsx(Collapse, __assign({ in: !listActive, timeout: 500 }, { children: _jsx(Button, __assign({ onBackClicked: function () { return onBack(); }, isAr: isAr, disabled: disabled, loading: loading, error: t(error || '') }, { children: t('next') })) }))] })) }))] }));
135
+ return (_jsxs(ScreenContainer, { children: [_jsx(Collapse, __assign({ in: !listActive && !!(user === null || user === void 0 ? void 0 : user.is_authorized), timeout: 500 }, { children: _jsxs(TextBoxStyled, { children: [getUserName() || '', _jsx(RoleTextStyled, { children: getUserRole() || '' })] }) })), _jsx(FormProvider, __assign({}, methods, { children: _jsxs(Form, __assign({ onSubmit: methods.handleSubmit(onSubmit) }, { children: [_jsxs(Box, { children: [_jsx(Occupation, { readOnly: readOnly['occupation'] || noneEditable['occupation'], onListOpen: function () { return handleMenuClick(ListType.OccupationList); }, onListClose: function () { return handleMenuClick(); }, show: showOccupationFile && !isMonthlyIncomeListActive && !isSourceOfIncomeListActive }), _jsx(SourceOfIncome, { readOnly: readOnly['sourceIncome'] || noneEditable['source_of_income'], onListOpen: function () { return handleMenuClick(ListType.SourceOfIncomeList); }, onListClose: function () { return handleMenuClick(); }, show: showSourceOfIncome && !isMonthlyIncomeListActive && !isOccupationListActive }), _jsx(MonthlyIncome, { readOnly: readOnly['monthlyIncome'] || noneEditable['monthly_income'], show: showSourceOfIncome && !isSourceOfIncomeListActive && !isOccupationListActive, onListOpen: function () { return handleMenuClick(ListType.MonthlyIncomeList); }, onListClose: function () { return handleMenuClick(); } }), _jsx(ShareCount, { show: !listActive && showShares, readOnly: readOnly['shareCount'] }), _jsx(ShareValue, { show: !listActive && showShares, readOnly: readOnly['shareValue'] }), _jsxs(Collapse, __assign({ in: !listActive, timeout: 500 }, { children: [_jsx(CivilIDFile, { show: !isSACountry, readOnly: readOnly['civilID'], defaultFiles: defaultCivilIdFiles }), _jsx(SignatureFile, { show: (user === null || user === void 0 ? void 0 : user.is_authorized) && showSignatureFile, readOnly: readOnly['signatureFileId'], defaultFiles: defaultSignatureFiles })] })), _jsx(PEPSwitch, { show: showIsPEP && !listActive, readOnly: readOnly['isPEP'] || noneEditable['is_relative_PEP'] }), _jsx(InfluencerSwitch, { show: showIsInfluencer && !listActive, readOnly: readOnly['isInfluencer'] || noneEditable['is_influencer'] })] }), _jsx(Collapse, __assign({ in: !listActive, timeout: 500 }, { children: _jsx(Button, __assign({ onBackClicked: function () { return onBack(); }, isAr: isAr, disabled: disabled, loading: loading, error: t(error || '') }, { children: t('next') })) }))] })) }))] }));
123
136
  };
124
137
  export default React.memo(AdditionalIndividualInfo);
125
138
  AdditionalIndividualInfo.defaultProps = {};
@@ -17,7 +17,7 @@ import { useTranslation } from 'react-i18next';
17
17
  import { handleCurrentActiveScreen, settingsSelector } from '../../../../app/settings';
18
18
  import Box from '@mui/material/Box';
19
19
  import { alpha, styled } from '@mui/material/styles';
20
- import { useAppDispatch, useAppSelector, useSetFromDefaultValues, useLanguage } from '../../../../hooks';
20
+ import { useAppDispatch, useAppSelector, useSetFromDefaultValues, useLanguage, useFormReadOnly, useDataNoneEditable, useFormErrorAndUpdateReadOnly } from '../../../../hooks';
21
21
  import { IndividualType } from '../../../../@types';
22
22
  import Form from '../../../../components/Form';
23
23
  import Collapse from '../../../../components/Collapse';
@@ -85,6 +85,22 @@ var IndividualPersonalInfo = function (_a) {
85
85
  var _c = React.useState(), listActive = _c[0], setListActive = _c[1];
86
86
  var _d = React.useState(false), dobActive = _d[0], setDobActive = _d[1];
87
87
  var _e = React.useState(false), expiryDateActive = _e[0], setExpiryDateActive = _e[1];
88
+ var originalReadOnly = useFormReadOnly(methods);
89
+ var noneEditable = useDataNoneEditable(user === null || user === void 0 ? void 0 : user.data_status, [
90
+ 'name',
91
+ 'contact.phone.number',
92
+ 'contact.phone.country_code',
93
+ 'contact.email',
94
+ 'identification.id',
95
+ 'identification.type',
96
+ 'identification.issuer_country',
97
+ 'identification.expiry',
98
+ 'birth.date',
99
+ 'birth.country',
100
+ 'birth.city',
101
+ 'nationality'
102
+ ]);
103
+ var readOnly = useFormErrorAndUpdateReadOnly(methods, originalReadOnly, noneEditable);
88
104
  var onSubmit = function (data) {
89
105
  dispatch(updateIndividualPersonalInfo(data));
90
106
  };
@@ -129,11 +145,11 @@ var IndividualPersonalInfo = function (_a) {
129
145
  var isBirthCountryListActive = listActive === ListType.BirthCountryList;
130
146
  var isBirthCityListActive = listActive === ListType.BirthCityList;
131
147
  var isNationalityListActive = listActive === ListType.NationalityList;
132
- return (_jsxs(ScreenContainer, { children: [_jsx(Collapse, __assign({ in: showField && !!(user === null || user === void 0 ? void 0 : user.is_authorized), timeout: 500 }, { children: _jsxs(TextBoxStyled, { children: [getUserName() || '', _jsx(RoleTextStyled, { children: getUserOccupation() || '' })] }) })), _jsx(FormProvider, __assign({}, methods, { children: _jsxs(Form, __assign({ onSubmit: methods.handleSubmit(onSubmit) }, { children: [_jsxs(Box, { children: [_jsx(Name, { show: showField, readOnly: !settingsData.boardMaturity && !!name }), _jsx(MobileNumber, { readOnly: !settingsData.boardMaturity && !!mobile, show: !isDateFieldActive && !isBirthCountryListActive && !isBirthCityListActive && !isNationalityListActive, countries: countries, onListOpen: function () { return handleMenuClick(ListType.MobileCountryList); }, onListClose: function () { return handleMenuClick(); } }), _jsx(Email, { show: showField, readOnly: !settingsData.boardMaturity && !!email }), _jsx(Gender, { show: showField, readOnly: !settingsData.boardMaturity && !!gender }), _jsx(ID, { show: showField, readOnly: !settingsData.boardMaturity && !!nid }), _jsx(IssuedCountry, { readOnly: !settingsData.boardMaturity && !!issuedCountry, show: !isMobileCountryListActive && !isDateFieldActive && !isBirthCountryListActive && !isBirthCityListActive && !isNationalityListActive, countries: countries, onListOpen: function () { return handleMenuClick(ListType.IssuedCountryList); }, onListClose: function () { return handleMenuClick(); } }), _jsx(ExpiryDate, { show: !listActive && !dobActive, onDateClicked: handleExpiryDateActive, readOnly: !settingsData.boardMaturity && !!expiryDate }), _jsx(DOB, { show: !listActive && !expiryDateActive, onDateClicked: handleDobActive, readOnly: !settingsData.boardMaturity && !!dob }), _jsx(BirthCountry, { readOnly: !settingsData.boardMaturity && !!placeOfBirthCountry, show: !isMobileCountryListActive && !isDateFieldActive && !isIssuedCountryListActive && !isBirthCityListActive && !isNationalityListActive, countries: countries, onListOpen: function () { return handleMenuClick(ListType.BirthCountryList); }, onListClose: function () { return handleMenuClick(); } }), _jsx(BirthCity, { readOnly: !settingsData.boardMaturity && !!placeOfBirthCity, show: !isMobileCountryListActive &&
148
+ return (_jsxs(ScreenContainer, { children: [_jsx(Collapse, __assign({ in: showField && !!(user === null || user === void 0 ? void 0 : user.is_authorized), timeout: 500 }, { children: _jsxs(TextBoxStyled, { children: [getUserName() || '', _jsx(RoleTextStyled, { children: getUserOccupation() || '' })] }) })), _jsx(FormProvider, __assign({}, methods, { children: _jsxs(Form, __assign({ onSubmit: methods.handleSubmit(onSubmit) }, { children: [_jsxs(Box, { children: [_jsx(Name, { show: showField, readOnly: readOnly['name'] || noneEditable['name'] }), _jsx(MobileNumber, { readOnly: readOnly['mobile'] || noneEditable['contact.phone.number'] || noneEditable['contact.phone.country_code'], show: !isDateFieldActive && !isBirthCountryListActive && !isBirthCityListActive && !isNationalityListActive, countries: countries, onListOpen: function () { return handleMenuClick(ListType.MobileCountryList); }, onListClose: function () { return handleMenuClick(); } }), _jsx(Email, { show: showField, readOnly: readOnly['email'] || noneEditable['contact.email'] }), _jsx(Gender, { show: showField, readOnly: readOnly['gender'] }), _jsx(ID, { show: showField, readOnly: readOnly['nid'] || noneEditable['identification.id'] }), _jsx(IssuedCountry, { readOnly: readOnly['issuedCountry'] || noneEditable['identification.issuer_country'], show: !isMobileCountryListActive && !isDateFieldActive && !isBirthCountryListActive && !isBirthCityListActive && !isNationalityListActive, countries: countries, onListOpen: function () { return handleMenuClick(ListType.IssuedCountryList); }, onListClose: function () { return handleMenuClick(); } }), _jsx(ExpiryDate, { show: !listActive && !dobActive, onDateClicked: handleExpiryDateActive, readOnly: readOnly['expiryDate'] || noneEditable['identification.expiry'] }), _jsx(DOB, { show: !listActive && !expiryDateActive, onDateClicked: handleDobActive, readOnly: readOnly['dob'] || noneEditable['birth.date'] }), _jsx(BirthCountry, { readOnly: readOnly['placeOfBirthCountry'] || noneEditable['birth.country'], show: !isMobileCountryListActive && !isDateFieldActive && !isIssuedCountryListActive && !isBirthCityListActive && !isNationalityListActive, countries: countries, onListOpen: function () { return handleMenuClick(ListType.BirthCountryList); }, onListClose: function () { return handleMenuClick(); } }), _jsx(BirthCity, { readOnly: readOnly['placeOfBirthCity'] || noneEditable['birth.city'], show: !isMobileCountryListActive &&
133
149
  !isDateFieldActive &&
134
150
  !isIssuedCountryListActive &&
135
151
  !isBirthCountryListActive &&
136
- !isNationalityListActive, onListOpen: function () { return handleMenuClick(ListType.BirthCityList); }, onListClose: function () { return handleMenuClick(); } }), _jsx(Nationality, { readOnly: !settingsData.boardMaturity && !!nationality, show: !isMobileCountryListActive && !isDateFieldActive && !isIssuedCountryListActive && !isBirthCityListActive && !isBirthCountryListActive, countries: countries, onListOpen: function () { return handleMenuClick(ListType.NationalityList); }, onListClose: function () { return handleMenuClick(); } })] }), _jsx(Collapse, __assign({ in: showField, timeout: 500 }, { children: _jsx(Button, __assign({ onBackClicked: function () { return onBack(); }, isAr: isAr, disableBack: !(user === null || user === void 0 ? void 0 : user.is_authorized), disabled: disabled, loading: loading, error: t(error || '') }, { children: t('next') })) }))] })) }))] }));
152
+ !isNationalityListActive, onListOpen: function () { return handleMenuClick(ListType.BirthCityList); }, onListClose: function () { return handleMenuClick(); } }), _jsx(Nationality, { readOnly: readOnly['nationality'] || noneEditable['nationality'], show: !isMobileCountryListActive && !isDateFieldActive && !isIssuedCountryListActive && !isBirthCityListActive && !isBirthCountryListActive, countries: countries, onListOpen: function () { return handleMenuClick(ListType.NationalityList); }, onListClose: function () { return handleMenuClick(); } })] }), _jsx(Collapse, __assign({ in: showField, timeout: 500 }, { children: _jsx(Button, __assign({ onBackClicked: function () { return onBack(); }, isAr: isAr, disableBack: !(user === null || user === void 0 ? void 0 : user.is_authorized), disabled: disabled, loading: loading, error: t(error || '') }, { children: t('next') })) }))] })) }))] }));
137
153
  };
138
154
  IndividualPersonalInfo.defaultProps = {};
139
155
  export default React.memo(IndividualPersonalInfo);
@@ -16,7 +16,7 @@ import { useForm, FormProvider } from 'react-hook-form';
16
16
  import { yupResolver } from '@hookform/resolvers/yup';
17
17
  import { styled } from '@mui/material/styles';
18
18
  import Form from '../../../../components/Form';
19
- import { useAppDispatch, useLanguage, useAppSelector, useSetFromDefaultValues } from '../../../../hooks';
19
+ import { useAppDispatch, useLanguage, useAppSelector, useSetFromDefaultValues, useFormReadOnly, useDataNoneEditable, useFormErrorAndUpdateReadOnly } from '../../../../hooks';
20
20
  import { handleCurrentActiveScreen, settingsSelector } from '../../../../app/settings';
21
21
  import { DocumentPurpose } from '../../../../@types';
22
22
  import { getFileDetailsFromDocument, isSA } from '../../../../utils';
@@ -49,6 +49,10 @@ var TaxDetails = function () {
49
49
  mode: 'onChange'
50
50
  });
51
51
  useSetFromDefaultValues(methods, data.taxData);
52
+ var defaultTaxFiles = React.useMemo(function () { return getFileDetailsFromDocument(entity === null || entity === void 0 ? void 0 : entity.documents, DocumentPurpose.TAX_DOCUMENT); }, [entity === null || entity === void 0 ? void 0 : entity.documents]);
53
+ var originalReadOnly = useFormReadOnly(methods, { documentId: defaultTaxFiles });
54
+ var noneEditable = useDataNoneEditable(entity === null || entity === void 0 ? void 0 : entity.data_status, ['tax_number', 'documents', 'is_vat_acknowledged']);
55
+ var readOnly = useFormErrorAndUpdateReadOnly(methods, originalReadOnly, noneEditable);
52
56
  var t = useTranslation().t;
53
57
  var isAr = useLanguage().isAr;
54
58
  var isSACountry = React.useMemo(function () { return isSA(settingsData.businessCountry.iso2); }, [settingsData.businessCountry.iso2]);
@@ -58,7 +62,6 @@ var TaxDetails = function () {
58
62
  var onBack = function () {
59
63
  dispatch(handleCurrentActiveScreen('TAX_SUCCESS_FOUR_FLOWS_BUTTONS_STEP'));
60
64
  };
61
- var defaultTaxFiles = React.useMemo(function () { return getFileDetailsFromDocument(entity === null || entity === void 0 ? void 0 : entity.documents, DocumentPurpose.TAX_DOCUMENT); }, [entity === null || entity === void 0 ? void 0 : entity.documents]);
62
- return (_jsx(ScreenContainer, { children: _jsx(FormProvider, __assign({}, methods, { children: _jsxs(FormStyled, __assign({ onSubmit: methods.handleSubmit(onSubmit) }, { children: [_jsx(VATId, { readOnly: !settingsData.boardMaturity && !!vatId }), _jsx(TaxDocument, { show: isSACountry, defaultFiles: defaultTaxFiles, readOnly: !settingsData.boardMaturity && !!defaultTaxFiles.length }), _jsx(ConfirmPolicy, { readOnly: !settingsData.boardMaturity && confirmPolicy === true }), _jsx(Button, __assign({ onBackClicked: function () { return onBack(); }, isAr: isAr, disableBack: true, disabled: !methods.formState.isValid || uploading, loading: loading, error: t(error || '') }, { children: t('next') }))] })) })) }));
65
+ return (_jsx(ScreenContainer, { children: _jsx(FormProvider, __assign({}, methods, { children: _jsxs(FormStyled, __assign({ onSubmit: methods.handleSubmit(onSubmit) }, { children: [_jsx(VATId, { readOnly: readOnly['vatId'] || noneEditable['tax_number'] }), _jsx(TaxDocument, { show: isSACountry, defaultFiles: defaultTaxFiles, readOnly: readOnly['documentId'] || noneEditable['documents'] }), _jsx(ConfirmPolicy, { readOnly: readOnly['documentId'] || noneEditable['is_vat_acknowledged'] }), _jsx(Button, __assign({ onBackClicked: function () { return onBack(); }, isAr: isAr, disableBack: true, disabled: !methods.formState.isValid || uploading, loading: loading, error: t(error || '') }, { children: t('next') }))] })) })) }));
63
66
  };
64
67
  export default TaxDetails;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tap-payments/auth-jsconnect",
3
- "version": "2.3.30-test",
3
+ "version": "2.3.32-test",
4
4
  "description": "connect library, auth",
5
5
  "private": false,
6
6
  "main": "build/index.js",