@redneckz/wildless-cms-uni-blocks 0.14.588 → 0.14.590
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/bundle/api/RetailApi/RetailApi.d.ts +3 -1
- package/bundle/api/RetailApi/RetailApiTypes.d.ts +3 -0
- package/bundle/blocks.schema.json +1 -1
- package/bundle/bundle.umd.js +187 -59
- package/bundle/bundle.umd.min.js +1 -1
- package/bundle/hooks/useElementSpace.d.ts +2 -0
- package/bundle/icons/IconName.d.ts +4 -2
- package/bundle/ui-kit/CaptchaDialog/CaptchaDialog.d.ts +7 -0
- package/bundle/ui-kit/CaptchaDialog/checkCaptcha.d.ts +8 -0
- package/bundle/ui-kit/CaptchaDialog/createCaptcha.d.ts +1 -0
- package/bundle/ui-kit/CaptchaDialog/useCaptchaDialog.d.ts +6 -0
- package/bundle/ui-kit/VerifyPhoneDialog/InputCode.d.ts +1 -0
- package/bundle/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.d.ts +3 -3
- package/bundle/ui-kit/VerifyPhoneDialog/handleSendCode.d.ts +15 -0
- package/bundle/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.d.ts +16 -0
- package/cosmos-static/icons/RefreshIcon.svg +1 -0
- package/cosmos-static/icons/sprites.svg +1 -0
- package/dist/api/RetailApi/RetailApi.d.ts +3 -1
- package/dist/api/RetailApi/RetailApi.js +15 -1
- package/dist/api/RetailApi/RetailApi.js.map +1 -1
- package/dist/api/RetailApi/RetailApiTypes.d.ts +3 -0
- package/dist/components/ApplicationLeadForm/useApplicationLeadApi.js +3 -4
- package/dist/components/ApplicationLeadForm/useApplicationLeadApi.js.map +1 -1
- package/dist/hooks/useElementSpace.d.ts +2 -0
- package/dist/hooks/useElementSpace.js +21 -0
- package/dist/hooks/useElementSpace.js.map +1 -0
- package/dist/icons/IconName.d.ts +4 -2
- package/dist/icons/IconName.js +3 -1
- package/dist/icons/IconName.js.map +1 -1
- package/dist/ui-kit/CaptchaDialog/CaptchaDialog.d.ts +7 -0
- package/dist/ui-kit/CaptchaDialog/CaptchaDialog.js +22 -0
- package/dist/ui-kit/CaptchaDialog/CaptchaDialog.js.map +1 -0
- package/dist/ui-kit/CaptchaDialog/checkCaptcha.d.ts +8 -0
- package/dist/ui-kit/CaptchaDialog/checkCaptcha.js +16 -0
- package/dist/ui-kit/CaptchaDialog/checkCaptcha.js.map +1 -0
- package/dist/ui-kit/CaptchaDialog/createCaptcha.d.ts +1 -0
- package/dist/ui-kit/CaptchaDialog/createCaptcha.js +9 -0
- package/dist/ui-kit/CaptchaDialog/createCaptcha.js.map +1 -0
- package/dist/ui-kit/CaptchaDialog/useCaptchaDialog.d.ts +6 -0
- package/dist/ui-kit/CaptchaDialog/useCaptchaDialog.js +15 -0
- package/dist/ui-kit/CaptchaDialog/useCaptchaDialog.js.map +1 -0
- package/dist/ui-kit/DatePicker/DatePicker.js +5 -1
- package/dist/ui-kit/DatePicker/DatePicker.js.map +1 -1
- package/dist/ui-kit/VerifyPhoneDialog/InputCode.d.ts +1 -0
- package/dist/ui-kit/VerifyPhoneDialog/InputCode.js +2 -2
- package/dist/ui-kit/VerifyPhoneDialog/InputCode.js.map +1 -1
- package/dist/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.d.ts +3 -3
- package/dist/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.js +20 -29
- package/dist/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.js.map +1 -1
- package/dist/ui-kit/VerifyPhoneDialog/handleSendCode.d.ts +15 -0
- package/dist/ui-kit/VerifyPhoneDialog/handleSendCode.js +21 -0
- package/dist/ui-kit/VerifyPhoneDialog/handleSendCode.js.map +1 -0
- package/dist/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialog.js +1 -1
- package/dist/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialog.js.map +1 -1
- package/dist/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.d.ts +16 -0
- package/dist/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.js +59 -0
- package/dist/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.js.map +1 -0
- package/lib/api/RetailApi/RetailApi.d.ts +3 -1
- package/lib/api/RetailApi/RetailApi.js +15 -1
- package/lib/api/RetailApi/RetailApi.js.map +1 -1
- package/lib/api/RetailApi/RetailApiTypes.d.ts +3 -0
- package/lib/common.css +1 -1
- package/lib/components/ApplicationLeadForm/useApplicationLeadApi.js +3 -4
- package/lib/components/ApplicationLeadForm/useApplicationLeadApi.js.map +1 -1
- package/lib/components/OfficesAtmsMap/OfficesAtmsMapLayout.d.ts +1 -1
- package/lib/hooks/useElementSpace.d.ts +2 -0
- package/lib/hooks/useElementSpace.js +18 -0
- package/lib/hooks/useElementSpace.js.map +1 -0
- package/lib/icons/IconName.d.ts +4 -2
- package/lib/icons/IconName.js +3 -1
- package/lib/icons/IconName.js.map +1 -1
- package/lib/ui-kit/CaptchaDialog/CaptchaDialog.d.ts +7 -0
- package/lib/ui-kit/CaptchaDialog/CaptchaDialog.fixture.d.ts +6 -0
- package/lib/ui-kit/CaptchaDialog/CaptchaDialog.js +20 -0
- package/lib/ui-kit/CaptchaDialog/CaptchaDialog.js.map +1 -0
- package/lib/ui-kit/CaptchaDialog/checkCaptcha.d.ts +8 -0
- package/lib/ui-kit/CaptchaDialog/checkCaptcha.js +13 -0
- package/lib/ui-kit/CaptchaDialog/checkCaptcha.js.map +1 -0
- package/lib/ui-kit/CaptchaDialog/createCaptcha.d.ts +1 -0
- package/lib/ui-kit/CaptchaDialog/createCaptcha.js +6 -0
- package/lib/ui-kit/CaptchaDialog/createCaptcha.js.map +1 -0
- package/lib/ui-kit/CaptchaDialog/useCaptchaDialog.d.ts +6 -0
- package/lib/ui-kit/CaptchaDialog/useCaptchaDialog.js +12 -0
- package/lib/ui-kit/CaptchaDialog/useCaptchaDialog.js.map +1 -0
- package/lib/ui-kit/DatePicker/DatePicker.js +5 -1
- package/lib/ui-kit/DatePicker/DatePicker.js.map +1 -1
- package/lib/ui-kit/VerifyPhoneDialog/InputCode.d.ts +1 -0
- package/lib/ui-kit/VerifyPhoneDialog/InputCode.js +2 -2
- package/lib/ui-kit/VerifyPhoneDialog/InputCode.js.map +1 -1
- package/lib/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.d.ts +3 -3
- package/lib/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.js +21 -30
- package/lib/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.js.map +1 -1
- package/lib/ui-kit/VerifyPhoneDialog/handleSendCode.d.ts +15 -0
- package/lib/ui-kit/VerifyPhoneDialog/handleSendCode.js +18 -0
- package/lib/ui-kit/VerifyPhoneDialog/handleSendCode.js.map +1 -0
- package/lib/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialog.js +1 -1
- package/lib/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialog.js.map +1 -1
- package/lib/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.d.ts +16 -0
- package/lib/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.js +56 -0
- package/lib/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.js.map +1 -0
- package/mobile/bundle/api/RetailApi/RetailApi.d.ts +3 -1
- package/mobile/bundle/api/RetailApi/RetailApiTypes.d.ts +3 -0
- package/mobile/bundle/bundle.umd.js +187 -59
- package/mobile/bundle/bundle.umd.min.js +1 -1
- package/mobile/bundle/hooks/useElementSpace.d.ts +2 -0
- package/mobile/bundle/icons/IconName.d.ts +4 -2
- package/mobile/bundle/ui-kit/CaptchaDialog/CaptchaDialog.d.ts +7 -0
- package/mobile/bundle/ui-kit/CaptchaDialog/checkCaptcha.d.ts +8 -0
- package/mobile/bundle/ui-kit/CaptchaDialog/createCaptcha.d.ts +1 -0
- package/mobile/bundle/ui-kit/CaptchaDialog/useCaptchaDialog.d.ts +6 -0
- package/mobile/bundle/ui-kit/VerifyPhoneDialog/InputCode.d.ts +1 -0
- package/mobile/bundle/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.d.ts +3 -3
- package/mobile/bundle/ui-kit/VerifyPhoneDialog/handleSendCode.d.ts +15 -0
- package/mobile/bundle/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.d.ts +16 -0
- package/mobile/dist/api/RetailApi/RetailApi.d.ts +3 -1
- package/mobile/dist/api/RetailApi/RetailApi.js +15 -1
- package/mobile/dist/api/RetailApi/RetailApi.js.map +1 -1
- package/mobile/dist/api/RetailApi/RetailApiTypes.d.ts +3 -0
- package/mobile/dist/components/ApplicationLeadForm/useApplicationLeadApi.js +3 -4
- package/mobile/dist/components/ApplicationLeadForm/useApplicationLeadApi.js.map +1 -1
- package/mobile/dist/hooks/useElementSpace.d.ts +2 -0
- package/mobile/dist/hooks/useElementSpace.js +21 -0
- package/mobile/dist/hooks/useElementSpace.js.map +1 -0
- package/mobile/dist/icons/IconName.d.ts +4 -2
- package/mobile/dist/icons/IconName.js +3 -1
- package/mobile/dist/icons/IconName.js.map +1 -1
- package/mobile/dist/ui-kit/CaptchaDialog/CaptchaDialog.d.ts +7 -0
- package/mobile/dist/ui-kit/CaptchaDialog/CaptchaDialog.js +22 -0
- package/mobile/dist/ui-kit/CaptchaDialog/CaptchaDialog.js.map +1 -0
- package/mobile/dist/ui-kit/CaptchaDialog/checkCaptcha.d.ts +8 -0
- package/mobile/dist/ui-kit/CaptchaDialog/checkCaptcha.js +16 -0
- package/mobile/dist/ui-kit/CaptchaDialog/checkCaptcha.js.map +1 -0
- package/mobile/dist/ui-kit/CaptchaDialog/createCaptcha.d.ts +1 -0
- package/mobile/dist/ui-kit/CaptchaDialog/createCaptcha.js +9 -0
- package/mobile/dist/ui-kit/CaptchaDialog/createCaptcha.js.map +1 -0
- package/mobile/dist/ui-kit/CaptchaDialog/useCaptchaDialog.d.ts +6 -0
- package/mobile/dist/ui-kit/CaptchaDialog/useCaptchaDialog.js +15 -0
- package/mobile/dist/ui-kit/CaptchaDialog/useCaptchaDialog.js.map +1 -0
- package/mobile/dist/ui-kit/DatePicker/DatePicker.js +5 -1
- package/mobile/dist/ui-kit/DatePicker/DatePicker.js.map +1 -1
- package/mobile/dist/ui-kit/VerifyPhoneDialog/InputCode.d.ts +1 -0
- package/mobile/dist/ui-kit/VerifyPhoneDialog/InputCode.js +2 -2
- package/mobile/dist/ui-kit/VerifyPhoneDialog/InputCode.js.map +1 -1
- package/mobile/dist/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.d.ts +3 -3
- package/mobile/dist/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.js +20 -29
- package/mobile/dist/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.js.map +1 -1
- package/mobile/dist/ui-kit/VerifyPhoneDialog/handleSendCode.d.ts +15 -0
- package/mobile/dist/ui-kit/VerifyPhoneDialog/handleSendCode.js +21 -0
- package/mobile/dist/ui-kit/VerifyPhoneDialog/handleSendCode.js.map +1 -0
- package/mobile/dist/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialog.js +1 -1
- package/mobile/dist/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialog.js.map +1 -1
- package/mobile/dist/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.d.ts +16 -0
- package/mobile/dist/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.js +59 -0
- package/mobile/dist/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.js.map +1 -0
- package/mobile/lib/api/RetailApi/RetailApi.d.ts +3 -1
- package/mobile/lib/api/RetailApi/RetailApi.js +15 -1
- package/mobile/lib/api/RetailApi/RetailApi.js.map +1 -1
- package/mobile/lib/api/RetailApi/RetailApiTypes.d.ts +3 -0
- package/mobile/lib/common.css +1 -1
- package/mobile/lib/components/ApplicationLeadForm/useApplicationLeadApi.js +3 -4
- package/mobile/lib/components/ApplicationLeadForm/useApplicationLeadApi.js.map +1 -1
- package/mobile/lib/hooks/useElementSpace.d.ts +2 -0
- package/mobile/lib/hooks/useElementSpace.js +18 -0
- package/mobile/lib/hooks/useElementSpace.js.map +1 -0
- package/mobile/lib/icons/IconName.d.ts +4 -2
- package/mobile/lib/icons/IconName.js +3 -1
- package/mobile/lib/icons/IconName.js.map +1 -1
- package/mobile/lib/ui-kit/CaptchaDialog/CaptchaDialog.d.ts +7 -0
- package/mobile/lib/ui-kit/CaptchaDialog/CaptchaDialog.js +20 -0
- package/mobile/lib/ui-kit/CaptchaDialog/CaptchaDialog.js.map +1 -0
- package/mobile/lib/ui-kit/CaptchaDialog/checkCaptcha.d.ts +8 -0
- package/mobile/lib/ui-kit/CaptchaDialog/checkCaptcha.js +13 -0
- package/mobile/lib/ui-kit/CaptchaDialog/checkCaptcha.js.map +1 -0
- package/mobile/lib/ui-kit/CaptchaDialog/createCaptcha.d.ts +1 -0
- package/mobile/lib/ui-kit/CaptchaDialog/createCaptcha.js +6 -0
- package/mobile/lib/ui-kit/CaptchaDialog/createCaptcha.js.map +1 -0
- package/mobile/lib/ui-kit/CaptchaDialog/useCaptchaDialog.d.ts +6 -0
- package/mobile/lib/ui-kit/CaptchaDialog/useCaptchaDialog.js +12 -0
- package/mobile/lib/ui-kit/CaptchaDialog/useCaptchaDialog.js.map +1 -0
- package/mobile/lib/ui-kit/DatePicker/DatePicker.js +5 -1
- package/mobile/lib/ui-kit/DatePicker/DatePicker.js.map +1 -1
- package/mobile/lib/ui-kit/VerifyPhoneDialog/InputCode.d.ts +1 -0
- package/mobile/lib/ui-kit/VerifyPhoneDialog/InputCode.js +2 -2
- package/mobile/lib/ui-kit/VerifyPhoneDialog/InputCode.js.map +1 -1
- package/mobile/lib/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.d.ts +3 -3
- package/mobile/lib/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.js +21 -30
- package/mobile/lib/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.js.map +1 -1
- package/mobile/lib/ui-kit/VerifyPhoneDialog/handleSendCode.d.ts +15 -0
- package/mobile/lib/ui-kit/VerifyPhoneDialog/handleSendCode.js +18 -0
- package/mobile/lib/ui-kit/VerifyPhoneDialog/handleSendCode.js.map +1 -0
- package/mobile/lib/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialog.js +1 -1
- package/mobile/lib/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialog.js.map +1 -1
- package/mobile/lib/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.d.ts +16 -0
- package/mobile/lib/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.js +56 -0
- package/mobile/lib/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.js.map +1 -0
- package/mobile/src/api/RetailApi/RetailApi.ts +18 -1
- package/mobile/src/api/RetailApi/RetailApiTypes.ts +4 -0
- package/mobile/src/components/ApplicationLeadForm/useApplicationLeadApi.ts +3 -4
- package/mobile/src/hooks/useElementSpace.ts +25 -0
- package/mobile/src/icons/IconName.ts +5 -5
- package/mobile/src/icons/RefreshIcon.svg +3 -0
- package/mobile/src/ui-kit/CaptchaDialog/CaptchaDialog.tsx +68 -0
- package/mobile/src/ui-kit/CaptchaDialog/checkCaptcha.ts +25 -0
- package/mobile/src/ui-kit/CaptchaDialog/createCaptcha.ts +6 -0
- package/mobile/src/ui-kit/CaptchaDialog/useCaptchaDialog.tsx +12 -0
- package/mobile/src/ui-kit/DatePicker/DatePicker.tsx +9 -1
- package/mobile/src/ui-kit/VerifyPhoneDialog/InputCode.tsx +3 -2
- package/mobile/src/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.tsx +66 -51
- package/mobile/src/ui-kit/VerifyPhoneDialog/handleSendCode.ts +37 -0
- package/mobile/src/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialog.tsx +2 -1
- package/mobile/src/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.tsx +71 -0
- package/package.json +2 -2
- package/src/api/RetailApi/RetailApi.ts +18 -1
- package/src/api/RetailApi/RetailApiTypes.ts +4 -0
- package/src/components/ApplicationLeadForm/useApplicationLeadApi.ts +3 -4
- package/src/hooks/useElementSpace.ts +25 -0
- package/src/icons/IconName.ts +353 -6
- package/src/icons/RefreshIcon.svg +3 -0
- package/src/ui-kit/CaptchaDialog/CaptchaDialog.fixture.tsx +11 -0
- package/src/ui-kit/CaptchaDialog/CaptchaDialog.tsx +68 -0
- package/src/ui-kit/CaptchaDialog/checkCaptcha.ts +25 -0
- package/src/ui-kit/CaptchaDialog/createCaptcha.ts +6 -0
- package/src/ui-kit/CaptchaDialog/useCaptchaDialog.tsx +12 -0
- package/src/ui-kit/DatePicker/DatePicker.tsx +9 -1
- package/src/ui-kit/VerifyPhoneDialog/InputCode.tsx +3 -2
- package/src/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.fixture.tsx +11 -8
- package/src/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.tsx +66 -51
- package/src/ui-kit/VerifyPhoneDialog/handleSendCode.ts +37 -0
- package/src/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialog.tsx +2 -1
- package/src/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialogSubmit.tsx +71 -0
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import {
|
|
2
|
+
type CapchaTextType,
|
|
2
3
|
type CheckCodeBody,
|
|
3
4
|
type CheckCodeResponse,
|
|
4
5
|
type CreateDraftTaskBody,
|
|
@@ -12,6 +13,8 @@ import {
|
|
|
12
13
|
|
|
13
14
|
type RequsetMethod = 'POST' | 'GET' | 'PUT';
|
|
14
15
|
|
|
16
|
+
const getResponse = (response: Response) => (isJSON(response) ? response.json() : response);
|
|
17
|
+
|
|
15
18
|
const getAthorizationHeaders = () => {
|
|
16
19
|
const token = sessionStorage.getItem('accessToken');
|
|
17
20
|
|
|
@@ -29,7 +32,17 @@ const request = async <T>(url: string, method: RequsetMethod, body?: any): Promi
|
|
|
29
32
|
},
|
|
30
33
|
credentials: 'include',
|
|
31
34
|
body: body ? JSON.stringify(body) : null,
|
|
32
|
-
})
|
|
35
|
+
})
|
|
36
|
+
.then((response: Response) => {
|
|
37
|
+
if (response.ok) {
|
|
38
|
+
return getResponse(response);
|
|
39
|
+
} else {
|
|
40
|
+
throw response;
|
|
41
|
+
}
|
|
42
|
+
})
|
|
43
|
+
.catch((error) => {
|
|
44
|
+
throw error;
|
|
45
|
+
});
|
|
33
46
|
|
|
34
47
|
const saveToken = (data: CheckCodeResponse) => {
|
|
35
48
|
sessionStorage.setItem('accessToken', data.access_token as string);
|
|
@@ -48,4 +61,8 @@ export const RETAIL_API = {
|
|
|
48
61
|
SendCode: async (body: SendCodeBody) => await request('/sms/sendCode', 'POST', body),
|
|
49
62
|
CheckCode: async (body: CheckCodeBody) =>
|
|
50
63
|
await request<CheckCodeResponse>('/sms/checkCode', 'POST', body).then(saveToken),
|
|
64
|
+
CreateCaptcha: async (phoneNumber: string) =>
|
|
65
|
+
await request<Response>(`/sms/createCaptcha?phoneNumber=${phoneNumber}`, 'GET'),
|
|
66
|
+
CheckCaptcha: async (body: CapchaTextType) =>
|
|
67
|
+
await request<Response>('/sms/checkCaptcha', 'POST', body),
|
|
51
68
|
};
|
|
@@ -38,14 +38,14 @@ export const useApplicationLeadApi = (inputs: FieldDef[], programId: string) =>
|
|
|
38
38
|
await RETAIL_API.UpdateUserTask(
|
|
39
39
|
getUpdateUserTaskData(participantId, taskId, profileId, formData),
|
|
40
40
|
);
|
|
41
|
-
|
|
41
|
+
globalThis.location.href = '/credit-lead';
|
|
42
42
|
} catch {
|
|
43
43
|
setResponseStatus('Fail');
|
|
44
44
|
}
|
|
45
45
|
};
|
|
46
46
|
// eslint-disable-next-line react-hooks/rules-of-hooks
|
|
47
47
|
const verifyPhoneDialog = useVerifyPhoneDialog({
|
|
48
|
-
|
|
48
|
+
close: handleSuccessVerify,
|
|
49
49
|
...verifyPhoneContent(formData?.phone),
|
|
50
50
|
});
|
|
51
51
|
verifyPhoneDialog.open();
|
|
@@ -64,12 +64,11 @@ export const useApplicationLeadApi = (inputs: FieldDef[], programId: string) =>
|
|
|
64
64
|
const verifyPhoneContent = (phone: string) => ({
|
|
65
65
|
title: 'Подтвердите номер телефона',
|
|
66
66
|
description: `Мы отправили код на ${phone}`,
|
|
67
|
-
|
|
67
|
+
phoneNumber: formatPhone(phone),
|
|
68
68
|
textButton: 'Оформить',
|
|
69
69
|
__html: `<span>Вводя код, я подтверждаю, что ознакомлен и подписываю:</span>
|
|
70
70
|
<ul><li>соглашение о порядке использования простой электронной подписи,
|
|
71
71
|
</li><li>согласие на обработку персональных данных,
|
|
72
72
|
</li><li>предоставление и подписание прочих согласий Банка,
|
|
73
73
|
</li><li>согласие на запрос в ПФР</li></ul>`,
|
|
74
|
-
href: '/credit-lead',
|
|
75
74
|
});
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { useEffect, useState } from '@redneckz/uni-jsx/lib/hooks';
|
|
2
|
+
import { type RefObject } from 'react';
|
|
3
|
+
|
|
4
|
+
export const useElementSpace = (ref: RefObject<HTMLElement>, heightEl: number) => {
|
|
5
|
+
const [spaceAbove, setSpaceAbove] = useState(false);
|
|
6
|
+
|
|
7
|
+
useEffect(() => {
|
|
8
|
+
const handleResize = () => {
|
|
9
|
+
if (ref?.current) {
|
|
10
|
+
const { top } = ref.current.getBoundingClientRect();
|
|
11
|
+
|
|
12
|
+
const hasSpaceAbove = top > heightEl;
|
|
13
|
+
|
|
14
|
+
setSpaceAbove(hasSpaceAbove);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
handleResize();
|
|
19
|
+
window.addEventListener('resize', handleResize);
|
|
20
|
+
|
|
21
|
+
return () => window.removeEventListener('resize', handleResize);
|
|
22
|
+
}, [ref]);
|
|
23
|
+
|
|
24
|
+
return spaceAbove;
|
|
25
|
+
};
|
|
@@ -3,15 +3,15 @@
|
|
|
3
3
|
/* eslint-disable max-len, max-lines */
|
|
4
4
|
|
|
5
5
|
export const IconsWithoutInversion = new Set([
|
|
6
|
-
'ActualBalanceIcon', 'AlarmIcon', 'BelarusianFlag', 'ChartIcon', 'ChevronLeftIcon', 'ClientIcon', 'DollarIcon', 'DoneIcon', 'EuroIcon', 'FullScreenIcon', 'HeadphonesIcon', 'HeartIcon', 'HouseIcon', 'LogoIcon', 'MagnifierIcon', 'MapMarkerClusterIcon', 'MapMarkerClusterYellowIcon', 'MapMarkerSingleIcon', 'MapOpenedIcon', 'MoneyInsuranceIcon', 'NewDocIcon', 'PackA4Icon', 'PassSendIcon', 'PercentIcon', 'ResponseFailIcon', 'ResponseOKIcon', 'SignDocsIcon', 'SoundIcon'
|
|
6
|
+
'ActualBalanceIcon', 'AlarmIcon', 'BelarusianFlag', 'ChartIcon', 'ChevronLeftIcon', 'ClientIcon', 'DollarIcon', 'DoneIcon', 'EuroIcon', 'FullScreenIcon', 'HeadphonesIcon', 'HeartIcon', 'HouseIcon', 'LogoIcon', 'MagnifierIcon', 'MapMarkerClusterIcon', 'MapMarkerClusterYellowIcon', 'MapMarkerSingleIcon', 'MapOpenedIcon', 'MoneyInsuranceIcon', 'NewDocIcon', 'PackA4Icon', 'PassSendIcon', 'PercentIcon', 'RefreshIcon', 'ResponseFailIcon', 'ResponseOKIcon', 'SignDocsIcon', 'SoundIcon'
|
|
7
7
|
]);
|
|
8
8
|
|
|
9
9
|
export enum IconMap {
|
|
10
|
-
AchievementIcon = 'AchievementIcon', ActualBalanceIcon = 'ActualBalanceIcon', AlarmIcon = 'AlarmIcon', AppleIcon = 'AppleIcon', ArrowDownIcon = 'ArrowDownIcon', ArrowDownSolidIcon = 'ArrowDownSolidIcon', ArrowLeftIcon = 'ArrowLeftIcon', ArrowRightIcon = 'ArrowRightIcon', ArrowTopRightIcon = 'ArrowTopRightIcon', ArrowUpIcon = 'ArrowUpIcon', ArrowUpSolidIcon = 'ArrowUpSolidIcon', AtmIcon = 'AtmIcon', BankIcon = 'BankIcon', BelarusianFlag = 'BelarusianFlag', BriefcaseIcon = 'BriefcaseIcon', BuildingIcon = 'BuildingIcon', BurgerIcon = 'BurgerIcon', CalendarCircleIcon = 'CalendarCircleIcon', CalendarIcon = 'CalendarIcon', CalendarTickIcon = 'CalendarTickIcon', CardIcon = 'CardIcon', CardPosIcon = 'CardPosIcon', CardSendIcon = 'CardSendIcon', CardTickIcon = 'CardTickIcon', ChartIcon = 'ChartIcon', ChartRoundIcon = 'ChartRoundIcon', ChartSquareIcon = 'ChartSquareIcon', ChevronLeftIcon = 'ChevronLeftIcon', ChineseYuanRenminbiIcon = 'ChineseYuanRenminbiIcon', ClientIcon = 'ClientIcon', CloseIcon = 'CloseIcon', CoinIcon = 'CoinIcon', ConvertCardIcon = 'ConvertCardIcon', CopyIcon = 'CopyIcon', CourtHouseIcon = 'CourtHouseIcon', CupIcon = 'CupIcon', DevIcon = 'DevIcon', DiscountShapeIcon = 'DiscountShapeIcon', DocDownloadIcon = 'DocDownloadIcon', DocIcon = 'DocIcon', DollarIcon = 'DollarIcon', DoneIcon = 'DoneIcon', DoneSimpleIcon = 'DoneSimpleIcon', DzenIcon = 'DzenIcon', EmptyWalletChangeIcon = 'EmptyWalletChangeIcon', EmptyWalletIcon = 'EmptyWalletIcon', EuroIcon = 'EuroIcon', FaxIcon = 'FaxIcon', FullScreenIcon = 'FullScreenIcon', GeolocationIcon = 'GeolocationIcon', GlobalIcon = 'GlobalIcon', GpsIcon = 'GpsIcon', GridIcon = 'GridIcon', HeadphonesIcon = 'HeadphonesIcon', HeartIcon = 'HeartIcon', HeartTickIcon = 'HeartTickIcon', HouseIcon = 'HouseIcon', HuaweiIcon = 'HuaweiIcon', LockIcon = 'LockIcon', LogoIcon = 'LogoIcon', LoupeIcon = 'LoupeIcon', MagnifierIcon = 'MagnifierIcon', MailIcon = 'MailIcon', MapMarkerClusterIcon = 'MapMarkerClusterIcon', MapMarkerClusterYellowIcon = 'MapMarkerClusterYellowIcon', MapMarkerSingleIcon = 'MapMarkerSingleIcon', MapOpenedIcon = 'MapOpenedIcon', MinusIcon = 'MinusIcon', MoneyIcon = 'MoneyIcon', MoneyInsuranceIcon = 'MoneyInsuranceIcon', MonitorMobileIcon = 'MonitorMobileIcon', NewDocIcon = 'NewDocIcon', NotificationBingIcon = 'NotificationBingIcon', OkIcon = 'OkIcon', PackA4Icon = 'PackA4Icon', PassSendIcon = 'PassSendIcon', PercentageRoundIcon = 'PercentageRoundIcon', PercentIcon = 'PercentIcon', PersonalCardIcon = 'PersonalCardIcon', PhoneCallingIcon = 'PhoneCallingIcon', PhoneIcon = 'PhoneIcon', PlayMarketIcon = 'PlayMarketIcon', PlusCircleIcon = 'PlusCircleIcon', PlusIcon = 'PlusIcon', Profile2UserIcon = 'Profile2UserIcon', ProfileIcon = 'ProfileIcon', ResponseFailIcon = 'ResponseFailIcon', ResponseOKIcon = 'ResponseOKIcon', RoundRubleIcon = 'RoundRubleIcon', RustoreIcon = 'RustoreIcon', RutubeIcon = 'RutubeIcon', SafeIcon = 'SafeIcon', SecurityСardIcon = 'SecurityСardIcon', ShieldTickIcon = 'ShieldTickIcon', SignDocsIcon = 'SignDocsIcon', SmallClockIcon = 'SmallClockIcon', SoundIcon = 'SoundIcon', TelegramIcon = 'TelegramIcon', UserGeoLocationIcon = 'UserGeoLocationIcon', UserSquareIcon = 'UserSquareIcon', UserTickIcon = 'UserTickIcon', VKIcon = 'VKIcon', WalletAddIcon = 'WalletAddIcon', WalletIcon = 'WalletIcon', WalletWithMoneyIcon = 'WalletWithMoneyIcon', YoutubeIcon = 'YoutubeIcon'
|
|
10
|
+
AchievementIcon = 'AchievementIcon', ActualBalanceIcon = 'ActualBalanceIcon', AlarmIcon = 'AlarmIcon', AppleIcon = 'AppleIcon', ArrowDownIcon = 'ArrowDownIcon', ArrowDownSolidIcon = 'ArrowDownSolidIcon', ArrowLeftIcon = 'ArrowLeftIcon', ArrowRightIcon = 'ArrowRightIcon', ArrowTopRightIcon = 'ArrowTopRightIcon', ArrowUpIcon = 'ArrowUpIcon', ArrowUpSolidIcon = 'ArrowUpSolidIcon', AtmIcon = 'AtmIcon', BankIcon = 'BankIcon', BelarusianFlag = 'BelarusianFlag', BriefcaseIcon = 'BriefcaseIcon', BuildingIcon = 'BuildingIcon', BurgerIcon = 'BurgerIcon', CalendarCircleIcon = 'CalendarCircleIcon', CalendarIcon = 'CalendarIcon', CalendarTickIcon = 'CalendarTickIcon', CardIcon = 'CardIcon', CardPosIcon = 'CardPosIcon', CardSendIcon = 'CardSendIcon', CardTickIcon = 'CardTickIcon', ChartIcon = 'ChartIcon', ChartRoundIcon = 'ChartRoundIcon', ChartSquareIcon = 'ChartSquareIcon', ChevronLeftIcon = 'ChevronLeftIcon', ChineseYuanRenminbiIcon = 'ChineseYuanRenminbiIcon', ClientIcon = 'ClientIcon', CloseIcon = 'CloseIcon', CoinIcon = 'CoinIcon', ConvertCardIcon = 'ConvertCardIcon', CopyIcon = 'CopyIcon', CourtHouseIcon = 'CourtHouseIcon', CupIcon = 'CupIcon', DevIcon = 'DevIcon', DiscountShapeIcon = 'DiscountShapeIcon', DocDownloadIcon = 'DocDownloadIcon', DocIcon = 'DocIcon', DollarIcon = 'DollarIcon', DoneIcon = 'DoneIcon', DoneSimpleIcon = 'DoneSimpleIcon', DzenIcon = 'DzenIcon', EmptyWalletChangeIcon = 'EmptyWalletChangeIcon', EmptyWalletIcon = 'EmptyWalletIcon', EuroIcon = 'EuroIcon', FaxIcon = 'FaxIcon', FullScreenIcon = 'FullScreenIcon', GeolocationIcon = 'GeolocationIcon', GlobalIcon = 'GlobalIcon', GpsIcon = 'GpsIcon', GridIcon = 'GridIcon', HeadphonesIcon = 'HeadphonesIcon', HeartIcon = 'HeartIcon', HeartTickIcon = 'HeartTickIcon', HouseIcon = 'HouseIcon', HuaweiIcon = 'HuaweiIcon', LockIcon = 'LockIcon', LogoIcon = 'LogoIcon', LoupeIcon = 'LoupeIcon', MagnifierIcon = 'MagnifierIcon', MailIcon = 'MailIcon', MapMarkerClusterIcon = 'MapMarkerClusterIcon', MapMarkerClusterYellowIcon = 'MapMarkerClusterYellowIcon', MapMarkerSingleIcon = 'MapMarkerSingleIcon', MapOpenedIcon = 'MapOpenedIcon', MinusIcon = 'MinusIcon', MoneyIcon = 'MoneyIcon', MoneyInsuranceIcon = 'MoneyInsuranceIcon', MonitorMobileIcon = 'MonitorMobileIcon', NewDocIcon = 'NewDocIcon', NotificationBingIcon = 'NotificationBingIcon', OkIcon = 'OkIcon', PackA4Icon = 'PackA4Icon', PassSendIcon = 'PassSendIcon', PercentageRoundIcon = 'PercentageRoundIcon', PercentIcon = 'PercentIcon', PersonalCardIcon = 'PersonalCardIcon', PhoneCallingIcon = 'PhoneCallingIcon', PhoneIcon = 'PhoneIcon', PlayMarketIcon = 'PlayMarketIcon', PlusCircleIcon = 'PlusCircleIcon', PlusIcon = 'PlusIcon', Profile2UserIcon = 'Profile2UserIcon', ProfileIcon = 'ProfileIcon', RefreshIcon = 'RefreshIcon', ResponseFailIcon = 'ResponseFailIcon', ResponseOKIcon = 'ResponseOKIcon', RoundRubleIcon = 'RoundRubleIcon', RustoreIcon = 'RustoreIcon', RutubeIcon = 'RutubeIcon', SafeIcon = 'SafeIcon', SecurityСardIcon = 'SecurityСardIcon', ShieldTickIcon = 'ShieldTickIcon', SignDocsIcon = 'SignDocsIcon', SmallClockIcon = 'SmallClockIcon', SoundIcon = 'SoundIcon', TelegramIcon = 'TelegramIcon', UserGeoLocationIcon = 'UserGeoLocationIcon', UserSquareIcon = 'UserSquareIcon', UserTickIcon = 'UserTickIcon', VKIcon = 'VKIcon', WalletAddIcon = 'WalletAddIcon', WalletIcon = 'WalletIcon', WalletWithMoneyIcon = 'WalletWithMoneyIcon', YoutubeIcon = 'YoutubeIcon'
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
export enum IconTitleMap {
|
|
14
|
-
AchievementIcon = 'Достижение', ActualBalanceIcon = 'Деньги', AlarmIcon = 'Предупреждение', AppleIcon = 'Лого «Apple»', ArrowDownIcon = 'Стрелка \'Вниз\'', ArrowDownSolidIcon = 'Стрелка сплошная \'Вниз\'', ArrowLeftIcon = 'Стрелка \'Влево\'', ArrowRightIcon = 'Стрелка \'Вправо\'', ArrowTopRightIcon = 'Стрелка \'Вверх-право\'', ArrowUpIcon = 'Стрелка \'Вверх\'', ArrowUpSolidIcon = 'Стрелка сплошная \'Вверх\'', AtmIcon = 'Банкомат', BankIcon = 'Банк', BelarusianFlag = 'Белорусский флаг', BriefcaseIcon = 'Портфель', BuildingIcon = 'Здание с деревом', BurgerIcon = 'Бургер', CalendarCircleIcon = 'Скруглённый календарь', CalendarIcon = 'Календарь', CalendarTickIcon = 'Календарь с галочкой', CardIcon = 'Кред. карта', CardPosIcon = 'Кред. карта под наклоном', CardSendIcon = 'Карта', CardTickIcon = 'Кред. карта с галочкой', ChartIcon = 'Инвестиции', ChartRoundIcon = 'Диаграмма (в круге)', ChartSquareIcon = 'Деньги внутри кошелька', ChevronLeftIcon = 'Стрелка \'Влево\'', ChineseYuanRenminbiIcon = 'Китайский юань', ClientIcon = 'Клиент', CloseIcon = 'Крестик', CoinIcon = 'Монеты', ConvertCardIcon = 'Конвертирование', CopyIcon = 'Копирование', CourtHouseIcon = 'Здание суда', CupIcon = 'Кубок', DevIcon = 'Разработка', DiscountShapeIcon = 'Скидка', DocDownloadIcon = 'Скачать документ', DocIcon = 'Документ', DollarIcon = 'Доллар', DoneIcon = 'Зелёная \'галочка\' в круге', DoneSimpleIcon = 'Зелёная \'галочка\'', DzenIcon = 'Лого «Дзен»', EmptyWalletChangeIcon = 'Пустой кошелёк с возвратом', EmptyWalletIcon = 'Пустой кошелёк', EuroIcon = 'Евро', FaxIcon = 'Факс', FullScreenIcon = 'FullScreenIcon', GeolocationIcon = 'Геолокация', GlobalIcon = 'Глобус', GpsIcon = 'Gps', GridIcon = 'Сетка (белая)', HeadphonesIcon = 'HeadphonesIcon', HeartIcon = 'Сердце', HeartTickIcon = 'Сердцебеение', HouseIcon = 'Ипотека', HuaweiIcon = 'Лого «Huawei»', LockIcon = 'Замок', LogoIcon = 'Логотип', LoupeIcon = 'Лупа', MagnifierIcon = 'MagnifierIcon', MailIcon = 'E-mail', MapMarkerClusterIcon = 'Маркер карты', MapMarkerClusterYellowIcon = 'Маркер карты (желтый)', MapMarkerSingleIcon = 'Маркер карты РСХБ', MapOpenedIcon = 'Иконка Развёрнутая карта', MinusIcon = 'Минус', MoneyIcon = 'Деньги', MoneyInsuranceIcon = 'Денежное страхование', MonitorMobileIcon = 'Монитор и мобильный', NewDocIcon = 'Новый документ', NotificationBingIcon = 'Колокольчик нотификаций', OkIcon = 'Лого «Одноклассники»', PackA4Icon = 'Пачка бумаги А4', PassSendIcon = 'Бизнес', PercentageRoundIcon = 'Проценты (круг.)', PercentIcon = 'PercentIcon', PersonalCardIcon = 'Персональная карта', PhoneCallingIcon = 'Звонящий телефон', PhoneIcon = 'Телефон', PlayMarketIcon = 'Лого «PlayMarket»', PlusCircleIcon = 'Плюс в круге', PlusIcon = 'Плюс', Profile2UserIcon = 'Профиль, 2 персоны', ProfileIcon = 'Профиль', ResponseFailIcon = 'Ошибка', ResponseOKIcon = 'Ок', RoundRubleIcon = 'Рубль (круг.)', RustoreIcon = 'Лого «Rustore»', RutubeIcon = 'Лого «Rutube»', SafeIcon = 'Сейф', SecurityСardIcon = 'Безопасность', ShieldTickIcon = 'Безопасность', SignDocsIcon = 'Подписанные документы', SmallClockIcon = 'Маленькие часы', SoundIcon = 'Кольцо', TelegramIcon = 'Лого «Telegram»', UserGeoLocationIcon = 'Самолётик', UserSquareIcon = 'Пользователь в рамке', UserTickIcon = 'Пользователь', VKIcon = 'Лого «VK»', WalletAddIcon = 'Кошелёк с плюсом', WalletIcon = 'Кошелёк', WalletWithMoneyIcon = 'Кошелёк с деньгами', YoutubeIcon = 'Лого «Youtube»'
|
|
14
|
+
AchievementIcon = 'Достижение', ActualBalanceIcon = 'Деньги', AlarmIcon = 'Предупреждение', AppleIcon = 'Лого «Apple»', ArrowDownIcon = 'Стрелка \'Вниз\'', ArrowDownSolidIcon = 'Стрелка сплошная \'Вниз\'', ArrowLeftIcon = 'Стрелка \'Влево\'', ArrowRightIcon = 'Стрелка \'Вправо\'', ArrowTopRightIcon = 'Стрелка \'Вверх-право\'', ArrowUpIcon = 'Стрелка \'Вверх\'', ArrowUpSolidIcon = 'Стрелка сплошная \'Вверх\'', AtmIcon = 'Банкомат', BankIcon = 'Банк', BelarusianFlag = 'Белорусский флаг', BriefcaseIcon = 'Портфель', BuildingIcon = 'Здание с деревом', BurgerIcon = 'Бургер', CalendarCircleIcon = 'Скруглённый календарь', CalendarIcon = 'Календарь', CalendarTickIcon = 'Календарь с галочкой', CardIcon = 'Кред. карта', CardPosIcon = 'Кред. карта под наклоном', CardSendIcon = 'Карта', CardTickIcon = 'Кред. карта с галочкой', ChartIcon = 'Инвестиции', ChartRoundIcon = 'Диаграмма (в круге)', ChartSquareIcon = 'Деньги внутри кошелька', ChevronLeftIcon = 'Стрелка \'Влево\'', ChineseYuanRenminbiIcon = 'Китайский юань', ClientIcon = 'Клиент', CloseIcon = 'Крестик', CoinIcon = 'Монеты', ConvertCardIcon = 'Конвертирование', CopyIcon = 'Копирование', CourtHouseIcon = 'Здание суда', CupIcon = 'Кубок', DevIcon = 'Разработка', DiscountShapeIcon = 'Скидка', DocDownloadIcon = 'Скачать документ', DocIcon = 'Документ', DollarIcon = 'Доллар', DoneIcon = 'Зелёная \'галочка\' в круге', DoneSimpleIcon = 'Зелёная \'галочка\'', DzenIcon = 'Лого «Дзен»', EmptyWalletChangeIcon = 'Пустой кошелёк с возвратом', EmptyWalletIcon = 'Пустой кошелёк', EuroIcon = 'Евро', FaxIcon = 'Факс', FullScreenIcon = 'FullScreenIcon', GeolocationIcon = 'Геолокация', GlobalIcon = 'Глобус', GpsIcon = 'Gps', GridIcon = 'Сетка (белая)', HeadphonesIcon = 'HeadphonesIcon', HeartIcon = 'Сердце', HeartTickIcon = 'Сердцебеение', HouseIcon = 'Ипотека', HuaweiIcon = 'Лого «Huawei»', LockIcon = 'Замок', LogoIcon = 'Логотип', LoupeIcon = 'Лупа', MagnifierIcon = 'MagnifierIcon', MailIcon = 'E-mail', MapMarkerClusterIcon = 'Маркер карты', MapMarkerClusterYellowIcon = 'Маркер карты (желтый)', MapMarkerSingleIcon = 'Маркер карты РСХБ', MapOpenedIcon = 'Иконка Развёрнутая карта', MinusIcon = 'Минус', MoneyIcon = 'Деньги', MoneyInsuranceIcon = 'Денежное страхование', MonitorMobileIcon = 'Монитор и мобильный', NewDocIcon = 'Новый документ', NotificationBingIcon = 'Колокольчик нотификаций', OkIcon = 'Лого «Одноклассники»', PackA4Icon = 'Пачка бумаги А4', PassSendIcon = 'Бизнес', PercentageRoundIcon = 'Проценты (круг.)', PercentIcon = 'PercentIcon', PersonalCardIcon = 'Персональная карта', PhoneCallingIcon = 'Звонящий телефон', PhoneIcon = 'Телефон', PlayMarketIcon = 'Лого «PlayMarket»', PlusCircleIcon = 'Плюс в круге', PlusIcon = 'Плюс', Profile2UserIcon = 'Профиль, 2 персоны', ProfileIcon = 'Профиль', RefreshIcon = 'RefreshIcon', ResponseFailIcon = 'Ошибка', ResponseOKIcon = 'Ок', RoundRubleIcon = 'Рубль (круг.)', RustoreIcon = 'Лого «Rustore»', RutubeIcon = 'Лого «Rutube»', SafeIcon = 'Сейф', SecurityСardIcon = 'Безопасность', ShieldTickIcon = 'Безопасность', SignDocsIcon = 'Подписанные документы', SmallClockIcon = 'Маленькие часы', SoundIcon = 'Кольцо', TelegramIcon = 'Лого «Telegram»', UserGeoLocationIcon = 'Самолётик', UserSquareIcon = 'Пользователь в рамке', UserTickIcon = 'Пользователь', VKIcon = 'Лого «VK»', WalletAddIcon = 'Кошелёк с плюсом', WalletIcon = 'Кошелёк', WalletWithMoneyIcon = 'Кошелёк с деньгами', YoutubeIcon = 'Лого «Youtube»'
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
/**
|
|
@@ -19,7 +19,7 @@ export enum IconTitleMap {
|
|
|
19
19
|
* @title Иконка
|
|
20
20
|
* @enumNames [
|
|
21
21
|
* "",
|
|
22
|
-
* 'Достижение', 'Деньги', 'Предупреждение', 'Лого «Apple»', 'Стрелка \'Вниз\'', 'Стрелка сплошная \'Вниз\'', 'Стрелка \'Влево\'', 'Стрелка \'Вправо\'', 'Стрелка \'Вверх-право\'', 'Стрелка \'Вверх\'', 'Стрелка сплошная \'Вверх\'', 'Банкомат', 'Банк', 'Белорусский флаг', 'Портфель', 'Здание с деревом', 'Бургер', 'Скруглённый календарь', 'Календарь', 'Календарь с галочкой', 'Кред. карта', 'Кред. карта под наклоном', 'Карта', 'Кред. карта с галочкой', 'Инвестиции', 'Диаграмма (в круге)', 'Деньги внутри кошелька', 'Стрелка \'Влево\'', 'Китайский юань', 'Клиент', 'Крестик', 'Монеты', 'Конвертирование', 'Копирование', 'Здание суда', 'Кубок', 'Разработка', 'Скидка', 'Скачать документ', 'Документ', 'Доллар', 'Зелёная \'галочка\' в круге', 'Зелёная \'галочка\'', 'Лого «Дзен»', 'Пустой кошелёк с возвратом', 'Пустой кошелёк', 'Евро', 'Факс', 'FullScreenIcon', 'Геолокация', 'Глобус', 'Gps', 'Сетка (белая)', 'HeadphonesIcon', 'Сердце', 'Сердцебеение', 'Ипотека', 'Лого «Huawei»', 'Замок', 'Логотип', 'Лупа', 'MagnifierIcon', 'E-mail', 'Маркер карты', 'Маркер карты (желтый)', 'Маркер карты РСХБ', 'Иконка Развёрнутая карта', 'Минус', 'Деньги', 'Денежное страхование', 'Монитор и мобильный', 'Новый документ', 'Колокольчик нотификаций', 'Лого «Одноклассники»', 'Пачка бумаги А4', 'Бизнес', 'Проценты (круг.)', 'PercentIcon', 'Персональная карта', 'Звонящий телефон', 'Телефон', 'Лого «PlayMarket»', 'Плюс в круге', 'Плюс', 'Профиль, 2 персоны', 'Профиль', 'Ошибка', 'Ок', 'Рубль (круг.)', 'Лого «Rustore»', 'Лого «Rutube»', 'Сейф', 'Безопасность', 'Безопасность', 'Подписанные документы', 'Маленькие часы', 'Кольцо', 'Лого «Telegram»', 'Самолётик', 'Пользователь в рамке', 'Пользователь', 'Лого «VK»', 'Кошелёк с плюсом', 'Кошелёк', 'Кошелёк с деньгами', 'Лого «Youtube»'
|
|
22
|
+
* 'Достижение', 'Деньги', 'Предупреждение', 'Лого «Apple»', 'Стрелка \'Вниз\'', 'Стрелка сплошная \'Вниз\'', 'Стрелка \'Влево\'', 'Стрелка \'Вправо\'', 'Стрелка \'Вверх-право\'', 'Стрелка \'Вверх\'', 'Стрелка сплошная \'Вверх\'', 'Банкомат', 'Банк', 'Белорусский флаг', 'Портфель', 'Здание с деревом', 'Бургер', 'Скруглённый календарь', 'Календарь', 'Календарь с галочкой', 'Кред. карта', 'Кред. карта под наклоном', 'Карта', 'Кред. карта с галочкой', 'Инвестиции', 'Диаграмма (в круге)', 'Деньги внутри кошелька', 'Стрелка \'Влево\'', 'Китайский юань', 'Клиент', 'Крестик', 'Монеты', 'Конвертирование', 'Копирование', 'Здание суда', 'Кубок', 'Разработка', 'Скидка', 'Скачать документ', 'Документ', 'Доллар', 'Зелёная \'галочка\' в круге', 'Зелёная \'галочка\'', 'Лого «Дзен»', 'Пустой кошелёк с возвратом', 'Пустой кошелёк', 'Евро', 'Факс', 'FullScreenIcon', 'Геолокация', 'Глобус', 'Gps', 'Сетка (белая)', 'HeadphonesIcon', 'Сердце', 'Сердцебеение', 'Ипотека', 'Лого «Huawei»', 'Замок', 'Логотип', 'Лупа', 'MagnifierIcon', 'E-mail', 'Маркер карты', 'Маркер карты (желтый)', 'Маркер карты РСХБ', 'Иконка Развёрнутая карта', 'Минус', 'Деньги', 'Денежное страхование', 'Монитор и мобильный', 'Новый документ', 'Колокольчик нотификаций', 'Лого «Одноклассники»', 'Пачка бумаги А4', 'Бизнес', 'Проценты (круг.)', 'PercentIcon', 'Персональная карта', 'Звонящий телефон', 'Телефон', 'Лого «PlayMarket»', 'Плюс в круге', 'Плюс', 'Профиль, 2 персоны', 'Профиль', 'RefreshIcon', 'Ошибка', 'Ок', 'Рубль (круг.)', 'Лого «Rustore»', 'Лого «Rutube»', 'Сейф', 'Безопасность', 'Безопасность', 'Подписанные документы', 'Маленькие часы', 'Кольцо', 'Лого «Telegram»', 'Самолётик', 'Пользователь в рамке', 'Пользователь', 'Лого «VK»', 'Кошелёк с плюсом', 'Кошелёк', 'Кошелёк с деньгами', 'Лого «Youtube»'
|
|
23
23
|
* ]
|
|
24
24
|
*/
|
|
25
|
-
export type IconName = '' | 'AchievementIcon' | 'ActualBalanceIcon' | 'AlarmIcon' | 'AppleIcon' | 'ArrowDownIcon' | 'ArrowDownSolidIcon' | 'ArrowLeftIcon' | 'ArrowRightIcon' | 'ArrowTopRightIcon' | 'ArrowUpIcon' | 'ArrowUpSolidIcon' | 'AtmIcon' | 'BankIcon' | 'BelarusianFlag' | 'BriefcaseIcon' | 'BuildingIcon' | 'BurgerIcon' | 'CalendarCircleIcon' | 'CalendarIcon' | 'CalendarTickIcon' | 'CardIcon' | 'CardPosIcon' | 'CardSendIcon' | 'CardTickIcon' | 'ChartIcon' | 'ChartRoundIcon' | 'ChartSquareIcon' | 'ChevronLeftIcon' | 'ChineseYuanRenminbiIcon' | 'ClientIcon' | 'CloseIcon' | 'CoinIcon' | 'ConvertCardIcon' | 'CopyIcon' | 'CourtHouseIcon' | 'CupIcon' | 'DevIcon' | 'DiscountShapeIcon' | 'DocDownloadIcon' | 'DocIcon' | 'DollarIcon' | 'DoneIcon' | 'DoneSimpleIcon' | 'DzenIcon' | 'EmptyWalletChangeIcon' | 'EmptyWalletIcon' | 'EuroIcon' | 'FaxIcon' | 'FullScreenIcon' | 'GeolocationIcon' | 'GlobalIcon' | 'GpsIcon' | 'GridIcon' | 'HeadphonesIcon' | 'HeartIcon' | 'HeartTickIcon' | 'HouseIcon' | 'HuaweiIcon' | 'LockIcon' | 'LogoIcon' | 'LoupeIcon' | 'MagnifierIcon' | 'MailIcon' | 'MapMarkerClusterIcon' | 'MapMarkerClusterYellowIcon' | 'MapMarkerSingleIcon' | 'MapOpenedIcon' | 'MinusIcon' | 'MoneyIcon' | 'MoneyInsuranceIcon' | 'MonitorMobileIcon' | 'NewDocIcon' | 'NotificationBingIcon' | 'OkIcon' | 'PackA4Icon' | 'PassSendIcon' | 'PercentageRoundIcon' | 'PercentIcon' | 'PersonalCardIcon' | 'PhoneCallingIcon' | 'PhoneIcon' | 'PlayMarketIcon' | 'PlusCircleIcon' | 'PlusIcon' | 'Profile2UserIcon' | 'ProfileIcon' | 'ResponseFailIcon' | 'ResponseOKIcon' | 'RoundRubleIcon' | 'RustoreIcon' | 'RutubeIcon' | 'SafeIcon' | 'SecurityСardIcon' | 'ShieldTickIcon' | 'SignDocsIcon' | 'SmallClockIcon' | 'SoundIcon' | 'TelegramIcon' | 'UserGeoLocationIcon' | 'UserSquareIcon' | 'UserTickIcon' | 'VKIcon' | 'WalletAddIcon' | 'WalletIcon' | 'WalletWithMoneyIcon' | 'YoutubeIcon';
|
|
25
|
+
export type IconName = '' | 'AchievementIcon' | 'ActualBalanceIcon' | 'AlarmIcon' | 'AppleIcon' | 'ArrowDownIcon' | 'ArrowDownSolidIcon' | 'ArrowLeftIcon' | 'ArrowRightIcon' | 'ArrowTopRightIcon' | 'ArrowUpIcon' | 'ArrowUpSolidIcon' | 'AtmIcon' | 'BankIcon' | 'BelarusianFlag' | 'BriefcaseIcon' | 'BuildingIcon' | 'BurgerIcon' | 'CalendarCircleIcon' | 'CalendarIcon' | 'CalendarTickIcon' | 'CardIcon' | 'CardPosIcon' | 'CardSendIcon' | 'CardTickIcon' | 'ChartIcon' | 'ChartRoundIcon' | 'ChartSquareIcon' | 'ChevronLeftIcon' | 'ChineseYuanRenminbiIcon' | 'ClientIcon' | 'CloseIcon' | 'CoinIcon' | 'ConvertCardIcon' | 'CopyIcon' | 'CourtHouseIcon' | 'CupIcon' | 'DevIcon' | 'DiscountShapeIcon' | 'DocDownloadIcon' | 'DocIcon' | 'DollarIcon' | 'DoneIcon' | 'DoneSimpleIcon' | 'DzenIcon' | 'EmptyWalletChangeIcon' | 'EmptyWalletIcon' | 'EuroIcon' | 'FaxIcon' | 'FullScreenIcon' | 'GeolocationIcon' | 'GlobalIcon' | 'GpsIcon' | 'GridIcon' | 'HeadphonesIcon' | 'HeartIcon' | 'HeartTickIcon' | 'HouseIcon' | 'HuaweiIcon' | 'LockIcon' | 'LogoIcon' | 'LoupeIcon' | 'MagnifierIcon' | 'MailIcon' | 'MapMarkerClusterIcon' | 'MapMarkerClusterYellowIcon' | 'MapMarkerSingleIcon' | 'MapOpenedIcon' | 'MinusIcon' | 'MoneyIcon' | 'MoneyInsuranceIcon' | 'MonitorMobileIcon' | 'NewDocIcon' | 'NotificationBingIcon' | 'OkIcon' | 'PackA4Icon' | 'PassSendIcon' | 'PercentageRoundIcon' | 'PercentIcon' | 'PersonalCardIcon' | 'PhoneCallingIcon' | 'PhoneIcon' | 'PlayMarketIcon' | 'PlusCircleIcon' | 'PlusIcon' | 'Profile2UserIcon' | 'ProfileIcon' | 'RefreshIcon' | 'ResponseFailIcon' | 'ResponseOKIcon' | 'RoundRubleIcon' | 'RustoreIcon' | 'RutubeIcon' | 'SafeIcon' | 'SecurityСardIcon' | 'ShieldTickIcon' | 'SignDocsIcon' | 'SmallClockIcon' | 'SoundIcon' | 'TelegramIcon' | 'UserGeoLocationIcon' | 'UserSquareIcon' | 'UserTickIcon' | 'VKIcon' | 'WalletAddIcon' | 'WalletIcon' | 'WalletWithMoneyIcon' | 'YoutubeIcon';
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="16" height="15" viewBox="0 0 16 15" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.02079 5.56497C4.39003 4.51997 5.10207 3.57283 6.12033 2.90846C8.53724 1.33151 11.693 1.97769 13.1872 4.26776C14.6814 6.55783 14.0016 9.70652 11.5847 11.2835C10.1249 12.2359 8.38657 12.3784 6.91147 11.831C6.39369 11.6388 5.81818 11.9028 5.62604 12.4206C5.43389 12.9384 5.69787 13.5139 6.21566 13.706C8.27304 14.4695 10.6763 14.2642 12.6776 12.9585C15.9737 10.8079 16.9894 6.43528 14.8622 3.17489C12.7349 -0.0855042 8.32355 -0.917117 5.02746 1.23345C3.43193 2.27447 2.37357 3.83114 1.94423 5.52999L1.70711 5.29287C1.31658 4.90234 0.683418 4.90234 0.292893 5.29287C-0.097631 5.68339 -0.0976311 6.31656 0.292893 6.70708L3 9.41419L5.70711 6.70708C6.09763 6.31656 6.09763 5.68339 5.70711 5.29287C5.31658 4.90234 4.68342 4.90234 4.29289 5.29287L4.02079 5.56497Z" fill="#1C1C1C"/>
|
|
3
|
+
</svg>
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
+
import { useEffect, useState } from '@redneckz/uni-jsx/lib/hooks';
|
|
3
|
+
import { Button } from '../Button/Button';
|
|
4
|
+
import { Dialog } from '../DialogManager/Dialog';
|
|
5
|
+
import { Icon } from '../Icon/Icon';
|
|
6
|
+
import { Input } from '../Input/Input';
|
|
7
|
+
import { Logo } from '../Logo/Logo';
|
|
8
|
+
import { checkCaptcha } from './checkCaptcha';
|
|
9
|
+
import { createCaptcha } from './createCaptcha';
|
|
10
|
+
|
|
11
|
+
export interface CaptchaDialogProps {
|
|
12
|
+
phoneNumber: string;
|
|
13
|
+
sendCode?: () => void;
|
|
14
|
+
close?: () => void;
|
|
15
|
+
onClose?: () => void;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export const CaptchaDialog = JSX<CaptchaDialogProps>(
|
|
19
|
+
({ phoneNumber, close, sendCode, onClose }) => {
|
|
20
|
+
const [captcha, setCaptcha] = useState('');
|
|
21
|
+
const [code, setCode] = useState('');
|
|
22
|
+
const [hasError, setHasError] = useState(false);
|
|
23
|
+
|
|
24
|
+
useEffect(() => {
|
|
25
|
+
createCaptcha(setCaptcha, phoneNumber);
|
|
26
|
+
}, []);
|
|
27
|
+
|
|
28
|
+
return (
|
|
29
|
+
<Dialog
|
|
30
|
+
head={<Logo />}
|
|
31
|
+
onClose={onClose}
|
|
32
|
+
className="my-6xl max-w-lg w-full min-h-fit mx-auto rounded-lg"
|
|
33
|
+
>
|
|
34
|
+
<div className="flex flex-col gap-lg items-center rounded-md">
|
|
35
|
+
<div className="flex h-[140px] w-[300px]">
|
|
36
|
+
<img className="grow" src={captcha}></img>
|
|
37
|
+
<div
|
|
38
|
+
onClick={() => createCaptcha(setCaptcha, phoneNumber)}
|
|
39
|
+
className="flex w-8 items-center justify-center cursor-pointer"
|
|
40
|
+
>
|
|
41
|
+
<Icon iconVersion="normal" name="RefreshIcon" />
|
|
42
|
+
</div>
|
|
43
|
+
</div>
|
|
44
|
+
<Input
|
|
45
|
+
className="w-[300px]"
|
|
46
|
+
onChange={setCode}
|
|
47
|
+
value={code}
|
|
48
|
+
placeholder="Введите код с картинки"
|
|
49
|
+
/>
|
|
50
|
+
{hasError ? <div className="text-error">Неверный код</div> : null}
|
|
51
|
+
<div className="flex w-[310px] justify-between">
|
|
52
|
+
<Button onClick={close} version="secondary">
|
|
53
|
+
Вернуться
|
|
54
|
+
</Button>
|
|
55
|
+
<Button
|
|
56
|
+
type="submit"
|
|
57
|
+
disabled={!code}
|
|
58
|
+
onClick={() => checkCaptcha({ code, setHasError, close, sendCode })}
|
|
59
|
+
version="secondary"
|
|
60
|
+
>
|
|
61
|
+
Отправить
|
|
62
|
+
</Button>
|
|
63
|
+
</div>
|
|
64
|
+
</div>
|
|
65
|
+
</Dialog>
|
|
66
|
+
);
|
|
67
|
+
},
|
|
68
|
+
);
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { RETAIL_API } from '../../api/RetailApi/RetailApi';
|
|
2
|
+
import { noop } from '../../utils/noop';
|
|
3
|
+
|
|
4
|
+
interface CheckCaptchaProps {
|
|
5
|
+
code: string;
|
|
6
|
+
setHasError: (hasError: boolean) => void;
|
|
7
|
+
sendCode?: () => void;
|
|
8
|
+
close?: () => void;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export const checkCaptcha = async ({
|
|
12
|
+
code,
|
|
13
|
+
setHasError,
|
|
14
|
+
close,
|
|
15
|
+
sendCode = noop,
|
|
16
|
+
}: CheckCaptchaProps) => {
|
|
17
|
+
const response = await RETAIL_API.CheckCaptcha({ captchaText: code });
|
|
18
|
+
|
|
19
|
+
if ((await response.text()) === 'ERROR') {
|
|
20
|
+
setHasError(true);
|
|
21
|
+
} else {
|
|
22
|
+
sendCode();
|
|
23
|
+
close?.();
|
|
24
|
+
}
|
|
25
|
+
};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { RETAIL_API } from '../../api/RetailApi/RetailApi';
|
|
2
|
+
|
|
3
|
+
export const createCaptcha = async (setCaptcha: (captcha: string) => void, phoneNumber: string) => {
|
|
4
|
+
const response = await RETAIL_API.CreateCaptcha(phoneNumber);
|
|
5
|
+
setCaptcha(URL.createObjectURL(await response.blob()));
|
|
6
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { useDialogManager } from '../DialogManager/useDialogManager';
|
|
2
|
+
import { CaptchaDialog, type CaptchaDialogProps } from './CaptchaDialog';
|
|
3
|
+
|
|
4
|
+
export const useCaptchaDialog = (initialProps: CaptchaDialogProps, onClose: () => void) => {
|
|
5
|
+
const { open, close, closeAll } = useDialogManager();
|
|
6
|
+
|
|
7
|
+
return {
|
|
8
|
+
open: () => open(<CaptchaDialog close={close} onClose={onClose} {...initialProps} />),
|
|
9
|
+
close,
|
|
10
|
+
closeAll,
|
|
11
|
+
};
|
|
12
|
+
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { JSX } from '@redneckz/uni-jsx';
|
|
2
2
|
import { useState } from '@redneckz/uni-jsx/lib/hooks';
|
|
3
3
|
import { useBool } from '@redneckz/uni-jsx/lib/hooks/useBool';
|
|
4
|
+
import { useElementSpace } from '../../hooks/useElementSpace';
|
|
4
5
|
import { type LabelProps } from '../../model/HeadlineType';
|
|
5
6
|
import { type IconVersion } from '../../model/IconVersion';
|
|
6
7
|
import { formatDate } from '../../utils/formatDate';
|
|
@@ -65,13 +66,19 @@ export const DatePicker = JSX<DatePickerProps>(
|
|
|
65
66
|
showCalendar,
|
|
66
67
|
});
|
|
67
68
|
|
|
69
|
+
const spaceAbove = useElementSpace(ref, 370);
|
|
70
|
+
|
|
68
71
|
return (
|
|
69
72
|
<div className={style('space-y-xs', className)} ref={ref}>
|
|
70
73
|
{renderLabel(label)}
|
|
71
74
|
<div className="relative">
|
|
72
75
|
{renderDatePickerForm(handleChangeVisibleCalendar, value, valid)}
|
|
73
76
|
{showCalendar ? (
|
|
74
|
-
<div
|
|
77
|
+
<div
|
|
78
|
+
className={style('absolute bg-white z-20 select-none', {
|
|
79
|
+
'bottom-full': spaceAbove,
|
|
80
|
+
})}
|
|
81
|
+
>
|
|
75
82
|
<div className="flex gap-s">
|
|
76
83
|
<div className="my-auto" onClick={handlePrevMonth}>
|
|
77
84
|
<Icon {...ICON_PROPS} className="-rotate-90 cursor-pointer" />
|
|
@@ -99,6 +106,7 @@ export const DatePicker = JSX<DatePickerProps>(
|
|
|
99
106
|
onDateSelect={onChange}
|
|
100
107
|
min={minDate}
|
|
101
108
|
max={maxDate}
|
|
109
|
+
setValue={setValue}
|
|
102
110
|
/>
|
|
103
111
|
</div>
|
|
104
112
|
) : null}
|
|
@@ -5,9 +5,10 @@ type InputCodeProps = {
|
|
|
5
5
|
values: string[];
|
|
6
6
|
setValues: React.Dispatch<React.SetStateAction<string[]>>;
|
|
7
7
|
hasError?: boolean;
|
|
8
|
+
errorText?: string;
|
|
8
9
|
};
|
|
9
10
|
|
|
10
|
-
export const InputCode = JSX<InputCodeProps>(({ values, setValues, hasError }) => {
|
|
11
|
+
export const InputCode = JSX<InputCodeProps>(({ values, setValues, hasError, errorText }) => {
|
|
11
12
|
const [activeIndex, setActiveIndex] = useState(0);
|
|
12
13
|
const inputRefs = useRef<HTMLInputElement[]>([]);
|
|
13
14
|
|
|
@@ -76,7 +77,7 @@ export const InputCode = JSX<InputCodeProps>(({ values, setValues, hasError }) =
|
|
|
76
77
|
/>
|
|
77
78
|
))}
|
|
78
79
|
</div>
|
|
79
|
-
{hasError ? <div className="text-error"
|
|
80
|
+
{hasError ? <div className="text-error">{errorText}</div> : null}
|
|
80
81
|
</div>
|
|
81
82
|
);
|
|
82
83
|
});
|
|
@@ -1,71 +1,70 @@
|
|
|
1
1
|
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
-
import { useCallback, useEffect,
|
|
3
|
-
import { RETAIL_API } from '../../api/RetailApi/RetailApi';
|
|
2
|
+
import { useCallback, useEffect, useState } from '@redneckz/uni-jsx/lib/hooks';
|
|
4
3
|
import { Headline } from '../../components/Headline/Headline';
|
|
4
|
+
import { noop } from '../../utils/noop';
|
|
5
|
+
import { useCaptchaDialog } from '../CaptchaDialog/useCaptchaDialog';
|
|
5
6
|
import { Dialog } from '../DialogManager/Dialog';
|
|
6
|
-
import { useDialogManager } from '../DialogManager/useDialogManager';
|
|
7
7
|
import { LinkButton } from '../LinkButton/LinkButton';
|
|
8
8
|
import { Loader } from '../Loader/Loader';
|
|
9
9
|
import { RichText } from '../RichText/RichText';
|
|
10
10
|
import { Timer } from '../TimerCircle/Timer';
|
|
11
|
+
import { handleSendCode } from './handleSendCode';
|
|
11
12
|
import { InputCode } from './InputCode';
|
|
12
13
|
import { SubmitButton } from './SubmitButton';
|
|
14
|
+
import { useVerifyPhoneDialogSubmit } from './useVerifyPhoneDialogSubmit';
|
|
13
15
|
|
|
14
16
|
export interface VerifyPhoneDialogProps {
|
|
15
|
-
|
|
17
|
+
close?: () => void;
|
|
18
|
+
onClose?: () => void;
|
|
16
19
|
title?: string;
|
|
17
20
|
description?: string;
|
|
18
21
|
code?: boolean;
|
|
19
22
|
__html?: string;
|
|
20
23
|
codeLength?: number;
|
|
21
24
|
textButton?: string;
|
|
22
|
-
|
|
23
|
-
href?: string;
|
|
25
|
+
phoneNumber?: string;
|
|
24
26
|
}
|
|
25
27
|
|
|
26
28
|
export const VerifyPhoneDialog = JSX<VerifyPhoneDialogProps>(
|
|
27
29
|
({
|
|
30
|
+
close = noop,
|
|
31
|
+
onClose = noop,
|
|
28
32
|
title,
|
|
29
|
-
phone,
|
|
30
33
|
description,
|
|
31
34
|
__html,
|
|
32
35
|
code = true,
|
|
33
36
|
codeLength = 4,
|
|
34
37
|
textButton = '',
|
|
35
|
-
|
|
36
|
-
href = '',
|
|
38
|
+
phoneNumber = '+79999999999',
|
|
37
39
|
}) => {
|
|
38
|
-
const
|
|
40
|
+
const [values, setValues] = useState(Array(codeLength).fill(''));
|
|
39
41
|
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
const {
|
|
43
|
+
handleSubmit,
|
|
44
|
+
hasError,
|
|
45
|
+
errorText,
|
|
46
|
+
isLoading,
|
|
47
|
+
timeNextReq,
|
|
48
|
+
isSubmitButtonDisabled,
|
|
49
|
+
setTimeNextReq,
|
|
50
|
+
setIsTimerStarted,
|
|
51
|
+
setAttemps,
|
|
52
|
+
} = useVerifyPhoneDialogSubmit({ values, close });
|
|
44
53
|
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
54
|
+
const sendCode = useCallback(() => {
|
|
55
|
+
handleSendCode({
|
|
56
|
+
phoneNumber,
|
|
57
|
+
captchaDialog,
|
|
58
|
+
setTimeNextReq,
|
|
59
|
+
setIsTimerStarted,
|
|
60
|
+
setAttemps,
|
|
51
61
|
});
|
|
52
62
|
}, []);
|
|
63
|
+
const captchaDialog = useCaptchaDialog({ phoneNumber, sendCode }, onClose);
|
|
53
64
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
await RETAIL_API.CheckCode({
|
|
58
|
-
smsText: values.join(''),
|
|
59
|
-
smsCodesSetName: { key: 'AUTHENTICATION' },
|
|
60
|
-
});
|
|
61
|
-
globalThis.location.href = href;
|
|
62
|
-
close();
|
|
63
|
-
onClose && onClose();
|
|
64
|
-
} catch {
|
|
65
|
-
setIsLoading(false);
|
|
66
|
-
setHasError(true);
|
|
67
|
-
}
|
|
68
|
-
}, [values]);
|
|
65
|
+
useEffect(() => {
|
|
66
|
+
sendCode();
|
|
67
|
+
}, []);
|
|
69
68
|
|
|
70
69
|
return (
|
|
71
70
|
<Dialog className="my-6xl max-w-3xl w-full min-h-fit mx-auto rounded-lg">
|
|
@@ -77,24 +76,19 @@ export const VerifyPhoneDialog = JSX<VerifyPhoneDialogProps>(
|
|
|
77
76
|
headlineVersion="S"
|
|
78
77
|
isEmbedded={true}
|
|
79
78
|
/>
|
|
80
|
-
{code ?
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
</div>
|
|
90
|
-
) : (
|
|
91
|
-
<LinkButton className="text-primary-main">Получить новый код</LinkButton>
|
|
92
|
-
)}
|
|
79
|
+
{code ? (
|
|
80
|
+
<InputCode
|
|
81
|
+
values={values}
|
|
82
|
+
setValues={setValues}
|
|
83
|
+
errorText={errorText}
|
|
84
|
+
hasError={hasError}
|
|
85
|
+
/>
|
|
86
|
+
) : null}
|
|
87
|
+
{renderText(timeNextReq, setTimeNextReq, sendCode)}
|
|
93
88
|
|
|
94
89
|
<RichText itemSize="list-s" __html={__html} />
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
) : null}
|
|
90
|
+
|
|
91
|
+
{renderTextButton(textButton, isSubmitButtonDisabled, handleSubmit)}
|
|
98
92
|
|
|
99
93
|
{isLoading ? <Loader blur={false} /> : null}
|
|
100
94
|
</div>
|
|
@@ -102,3 +96,24 @@ export const VerifyPhoneDialog = JSX<VerifyPhoneDialogProps>(
|
|
|
102
96
|
);
|
|
103
97
|
},
|
|
104
98
|
);
|
|
99
|
+
|
|
100
|
+
const renderTextButton = (textButton: string, isDisabled: boolean, handleSubmit: () => void) =>
|
|
101
|
+
textButton ? (
|
|
102
|
+
<SubmitButton isDisabled={isDisabled} onClick={handleSubmit} text={textButton} />
|
|
103
|
+
) : null;
|
|
104
|
+
|
|
105
|
+
const renderText = (
|
|
106
|
+
timeNextReq: number,
|
|
107
|
+
setTimeNextReq: React.Dispatch<React.SetStateAction<number>>,
|
|
108
|
+
sendCode: () => void,
|
|
109
|
+
) =>
|
|
110
|
+
timeNextReq ? (
|
|
111
|
+
<div className="flex flex-row text-l font-light text-primary-main">
|
|
112
|
+
Получить новый код можно через
|
|
113
|
+
<Timer className="text-primary-main ml-1" time={timeNextReq} setTime={setTimeNextReq} />
|
|
114
|
+
</div>
|
|
115
|
+
) : (
|
|
116
|
+
<LinkButton onClick={sendCode} className="text-primary-main">
|
|
117
|
+
Получить новый код
|
|
118
|
+
</LinkButton>
|
|
119
|
+
);
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { RETAIL_API } from '../../api/RetailApi/RetailApi';
|
|
2
|
+
import { type CaptchaDialogProps } from '../CaptchaDialog/CaptchaDialog';
|
|
3
|
+
import { type DialogOptions } from '../DialogManager/useDialogManager';
|
|
4
|
+
|
|
5
|
+
interface HandleSendCodeProps {
|
|
6
|
+
phoneNumber: string;
|
|
7
|
+
captchaDialog: {
|
|
8
|
+
open: (props?: CaptchaDialogProps, options?: DialogOptions) => void;
|
|
9
|
+
close: () => void;
|
|
10
|
+
closeAll: () => void;
|
|
11
|
+
};
|
|
12
|
+
setTimeNextReq: (timeNextReq: number) => void;
|
|
13
|
+
setIsTimerStarted: (isTimerStarted: boolean) => void;
|
|
14
|
+
setAttemps: (attemps: number) => void;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export const handleSendCode = async ({
|
|
18
|
+
phoneNumber,
|
|
19
|
+
captchaDialog,
|
|
20
|
+
setTimeNextReq,
|
|
21
|
+
setIsTimerStarted,
|
|
22
|
+
setAttemps,
|
|
23
|
+
}: HandleSendCodeProps) => {
|
|
24
|
+
try {
|
|
25
|
+
await RETAIL_API.SendCode({
|
|
26
|
+
phoneNumber: phoneNumber,
|
|
27
|
+
smsCodesSetName: { key: 'AUTHENTICATION' },
|
|
28
|
+
});
|
|
29
|
+
setAttemps(0);
|
|
30
|
+
setTimeNextReq(180);
|
|
31
|
+
setIsTimerStarted(true);
|
|
32
|
+
} catch (e: any) {
|
|
33
|
+
if (e?.status === 429) {
|
|
34
|
+
captchaDialog.open();
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
};
|
|
@@ -5,7 +5,8 @@ export const useVerifyPhoneDialog = (props: VerifyPhoneDialogProps) => {
|
|
|
5
5
|
const { open, close } = useDialogManager();
|
|
6
6
|
|
|
7
7
|
return {
|
|
8
|
-
open: (options: DialogOptions = {}) =>
|
|
8
|
+
open: (options: DialogOptions = {}) =>
|
|
9
|
+
open(<VerifyPhoneDialog onClose={close} {...props} />, options),
|
|
9
10
|
close,
|
|
10
11
|
};
|
|
11
12
|
};
|