@redneckz/wildless-cms-uni-blocks 0.14.565 → 0.14.567
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/bundle.umd.js +10 -5
- package/bundle/bundle.umd.min.js +1 -1
- package/bundle/ui-kit/DatePicker/Calendar.d.ts +1 -0
- package/bundle/ui-kit/Loader/Loader.d.ts +1 -0
- package/bundle/ui-kit/{Timer → TimerCircle}/Timer.d.ts +4 -2
- package/bundle/ui-kit/TimerCircle/TimerCircle.d.ts +7 -0
- package/bundle/ui-kit/VerifyPhoneDialog/InputCode.d.ts +8 -0
- package/bundle/ui-kit/VerifyPhoneDialog/SubmitButton.d.ts +7 -0
- package/bundle/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.d.ts +9 -0
- package/bundle/ui-kit/VerifyPhoneDialog/submitVerifyPhoneForm.d.ts +13 -0
- package/bundle/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialog.d.ts +6 -0
- package/dist/ui-kit/DatePicker/Calendar.d.ts +1 -0
- package/dist/ui-kit/DatePicker/Calendar.js +5 -2
- package/dist/ui-kit/DatePicker/Calendar.js.map +1 -1
- package/dist/ui-kit/DatePicker/DatePicker.js +1 -1
- package/dist/ui-kit/DatePicker/DatePicker.js.map +1 -1
- package/dist/ui-kit/Loader/Loader.d.ts +1 -0
- package/dist/ui-kit/Loader/Loader.js +3 -1
- package/dist/ui-kit/Loader/Loader.js.map +1 -1
- package/dist/ui-kit/{Timer → TimerCircle}/Timer.d.ts +4 -2
- package/dist/ui-kit/TimerCircle/Timer.js +25 -0
- package/dist/ui-kit/TimerCircle/Timer.js.map +1 -0
- package/dist/ui-kit/TimerCircle/TimerCircle.d.ts +7 -0
- package/{mobile/dist/ui-kit/Timer/Timer.js → dist/ui-kit/TimerCircle/TimerCircle.js} +5 -20
- package/dist/ui-kit/TimerCircle/TimerCircle.js.map +1 -0
- package/dist/ui-kit/VerifyPhoneDialog/InputCode.d.ts +8 -0
- package/dist/ui-kit/VerifyPhoneDialog/InputCode.js +49 -0
- package/dist/ui-kit/VerifyPhoneDialog/InputCode.js.map +1 -0
- package/dist/ui-kit/VerifyPhoneDialog/SubmitButton.d.ts +7 -0
- package/dist/ui-kit/VerifyPhoneDialog/SubmitButton.js +10 -0
- package/dist/ui-kit/VerifyPhoneDialog/SubmitButton.js.map +1 -0
- package/dist/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.d.ts +9 -0
- package/dist/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.js +38 -0
- package/dist/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.js.map +1 -0
- package/dist/ui-kit/VerifyPhoneDialog/submitVerifyPhoneForm.d.ts +13 -0
- package/dist/ui-kit/VerifyPhoneDialog/submitVerifyPhoneForm.js +30 -0
- package/dist/ui-kit/VerifyPhoneDialog/submitVerifyPhoneForm.js.map +1 -0
- package/dist/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialog.d.ts +6 -0
- package/dist/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialog.js +14 -0
- package/dist/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialog.js.map +1 -0
- package/lib/common.css +1 -1
- package/lib/ui-kit/DatePicker/Calendar.d.ts +1 -0
- package/lib/ui-kit/DatePicker/Calendar.js +5 -2
- package/lib/ui-kit/DatePicker/Calendar.js.map +1 -1
- package/lib/ui-kit/DatePicker/DatePicker.js +1 -1
- package/lib/ui-kit/DatePicker/DatePicker.js.map +1 -1
- package/lib/ui-kit/Loader/Loader.d.ts +1 -0
- package/lib/ui-kit/Loader/Loader.js +3 -1
- package/lib/ui-kit/Loader/Loader.js.map +1 -1
- package/lib/ui-kit/{Timer → TimerCircle}/Timer.d.ts +4 -2
- package/lib/ui-kit/TimerCircle/Timer.js +23 -0
- package/lib/ui-kit/TimerCircle/Timer.js.map +1 -0
- package/lib/ui-kit/TimerCircle/TimerCircle.d.ts +7 -0
- package/lib/ui-kit/{Timer/Timer.js → TimerCircle/TimerCircle.js} +5 -20
- package/lib/ui-kit/TimerCircle/TimerCircle.js.map +1 -0
- package/lib/ui-kit/VerifyPhoneDialog/InputCode.d.ts +8 -0
- package/lib/ui-kit/VerifyPhoneDialog/InputCode.js +47 -0
- package/lib/ui-kit/VerifyPhoneDialog/InputCode.js.map +1 -0
- package/lib/ui-kit/VerifyPhoneDialog/SubmitButton.d.ts +7 -0
- package/lib/ui-kit/VerifyPhoneDialog/SubmitButton.js +8 -0
- package/lib/ui-kit/VerifyPhoneDialog/SubmitButton.js.map +1 -0
- package/lib/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.d.ts +9 -0
- package/lib/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.fixture.d.ts +6 -0
- package/lib/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.js +36 -0
- package/lib/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.js.map +1 -0
- package/lib/ui-kit/VerifyPhoneDialog/submitVerifyPhoneForm.d.ts +13 -0
- package/lib/ui-kit/VerifyPhoneDialog/submitVerifyPhoneForm.js +27 -0
- package/lib/ui-kit/VerifyPhoneDialog/submitVerifyPhoneForm.js.map +1 -0
- package/lib/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialog.d.ts +6 -0
- package/lib/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialog.js +11 -0
- package/lib/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialog.js.map +1 -0
- package/mobile/bundle/bundle.umd.js +10 -5
- package/mobile/bundle/bundle.umd.min.js +1 -1
- package/mobile/bundle/ui-kit/DatePicker/Calendar.d.ts +1 -0
- package/mobile/bundle/ui-kit/Loader/Loader.d.ts +1 -0
- package/mobile/bundle/ui-kit/{Timer → TimerCircle}/Timer.d.ts +4 -2
- package/mobile/bundle/ui-kit/TimerCircle/TimerCircle.d.ts +7 -0
- package/mobile/bundle/ui-kit/VerifyPhoneDialog/InputCode.d.ts +8 -0
- package/mobile/bundle/ui-kit/VerifyPhoneDialog/SubmitButton.d.ts +7 -0
- package/mobile/bundle/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.d.ts +9 -0
- package/mobile/bundle/ui-kit/VerifyPhoneDialog/submitVerifyPhoneForm.d.ts +13 -0
- package/mobile/bundle/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialog.d.ts +6 -0
- package/mobile/dist/ui-kit/DatePicker/Calendar.d.ts +1 -0
- package/mobile/dist/ui-kit/DatePicker/Calendar.js +5 -2
- package/mobile/dist/ui-kit/DatePicker/Calendar.js.map +1 -1
- package/mobile/dist/ui-kit/DatePicker/DatePicker.js +1 -1
- package/mobile/dist/ui-kit/DatePicker/DatePicker.js.map +1 -1
- package/mobile/dist/ui-kit/Loader/Loader.d.ts +1 -0
- package/mobile/dist/ui-kit/Loader/Loader.js +3 -1
- package/mobile/dist/ui-kit/Loader/Loader.js.map +1 -1
- package/mobile/dist/ui-kit/TimerCircle/Timer.d.ts +9 -0
- package/mobile/dist/ui-kit/TimerCircle/Timer.js +25 -0
- package/mobile/dist/ui-kit/TimerCircle/Timer.js.map +1 -0
- package/mobile/dist/ui-kit/TimerCircle/TimerCircle.d.ts +7 -0
- package/{dist/ui-kit/Timer/Timer.js → mobile/dist/ui-kit/TimerCircle/TimerCircle.js} +5 -20
- package/mobile/dist/ui-kit/TimerCircle/TimerCircle.js.map +1 -0
- package/mobile/dist/ui-kit/VerifyPhoneDialog/InputCode.d.ts +8 -0
- package/mobile/dist/ui-kit/VerifyPhoneDialog/InputCode.js +49 -0
- package/mobile/dist/ui-kit/VerifyPhoneDialog/InputCode.js.map +1 -0
- package/mobile/dist/ui-kit/VerifyPhoneDialog/SubmitButton.d.ts +7 -0
- package/mobile/dist/ui-kit/VerifyPhoneDialog/SubmitButton.js +10 -0
- package/mobile/dist/ui-kit/VerifyPhoneDialog/SubmitButton.js.map +1 -0
- package/mobile/dist/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.d.ts +9 -0
- package/mobile/dist/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.js +38 -0
- package/mobile/dist/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.js.map +1 -0
- package/mobile/dist/ui-kit/VerifyPhoneDialog/submitVerifyPhoneForm.d.ts +13 -0
- package/mobile/dist/ui-kit/VerifyPhoneDialog/submitVerifyPhoneForm.js +30 -0
- package/mobile/dist/ui-kit/VerifyPhoneDialog/submitVerifyPhoneForm.js.map +1 -0
- package/mobile/dist/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialog.d.ts +6 -0
- package/mobile/dist/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialog.js +14 -0
- package/mobile/dist/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialog.js.map +1 -0
- package/mobile/lib/common.css +1 -1
- package/mobile/lib/ui-kit/DatePicker/Calendar.d.ts +1 -0
- package/mobile/lib/ui-kit/DatePicker/Calendar.js +5 -2
- package/mobile/lib/ui-kit/DatePicker/Calendar.js.map +1 -1
- package/mobile/lib/ui-kit/DatePicker/DatePicker.js +1 -1
- package/mobile/lib/ui-kit/DatePicker/DatePicker.js.map +1 -1
- package/mobile/lib/ui-kit/Loader/Loader.d.ts +1 -0
- package/mobile/lib/ui-kit/Loader/Loader.js +3 -1
- package/mobile/lib/ui-kit/Loader/Loader.js.map +1 -1
- package/mobile/lib/ui-kit/TimerCircle/Timer.d.ts +9 -0
- package/mobile/lib/ui-kit/TimerCircle/Timer.js +23 -0
- package/mobile/lib/ui-kit/TimerCircle/Timer.js.map +1 -0
- package/mobile/lib/ui-kit/TimerCircle/TimerCircle.d.ts +7 -0
- package/mobile/lib/ui-kit/{Timer/Timer.js → TimerCircle/TimerCircle.js} +5 -20
- package/mobile/lib/ui-kit/TimerCircle/TimerCircle.js.map +1 -0
- package/mobile/lib/ui-kit/VerifyPhoneDialog/InputCode.d.ts +8 -0
- package/mobile/lib/ui-kit/VerifyPhoneDialog/InputCode.js +47 -0
- package/mobile/lib/ui-kit/VerifyPhoneDialog/InputCode.js.map +1 -0
- package/mobile/lib/ui-kit/VerifyPhoneDialog/SubmitButton.d.ts +7 -0
- package/mobile/lib/ui-kit/VerifyPhoneDialog/SubmitButton.js +8 -0
- package/mobile/lib/ui-kit/VerifyPhoneDialog/SubmitButton.js.map +1 -0
- package/mobile/lib/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.d.ts +9 -0
- package/mobile/lib/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.js +36 -0
- package/mobile/lib/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.js.map +1 -0
- package/mobile/lib/ui-kit/VerifyPhoneDialog/submitVerifyPhoneForm.d.ts +13 -0
- package/mobile/lib/ui-kit/VerifyPhoneDialog/submitVerifyPhoneForm.js +27 -0
- package/mobile/lib/ui-kit/VerifyPhoneDialog/submitVerifyPhoneForm.js.map +1 -0
- package/mobile/lib/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialog.d.ts +6 -0
- package/mobile/lib/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialog.js +11 -0
- package/mobile/lib/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialog.js.map +1 -0
- package/mobile/src/ui-kit/DatePicker/Calendar.tsx +6 -2
- package/mobile/src/ui-kit/DatePicker/DatePicker.tsx +1 -1
- package/mobile/src/ui-kit/Loader/Loader.tsx +20 -18
- package/mobile/src/ui-kit/TimerCircle/Timer.tsx +34 -0
- package/mobile/src/ui-kit/{Timer/Timer.tsx → TimerCircle/TimerCircle.tsx} +5 -25
- package/mobile/src/ui-kit/VerifyPhoneDialog/InputCode.tsx +90 -0
- package/mobile/src/ui-kit/VerifyPhoneDialog/SubmitButton.tsx +17 -0
- package/mobile/src/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.tsx +83 -0
- package/mobile/src/ui-kit/VerifyPhoneDialog/submitVerifyPhoneForm.tsx +36 -0
- package/mobile/src/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialog.tsx +11 -0
- package/package.json +1 -1
- package/src/ui-kit/DatePicker/Calendar.tsx +6 -2
- package/src/ui-kit/DatePicker/DatePicker.tsx +1 -1
- package/src/ui-kit/Loader/Loader.tsx +20 -18
- package/src/ui-kit/TimerCircle/Timer.tsx +34 -0
- package/src/ui-kit/{Timer/Timer.fixture.tsx → TimerCircle/TimerCircle.fixture.tsx} +2 -2
- package/src/ui-kit/{Timer/Timer.tsx → TimerCircle/TimerCircle.tsx} +5 -25
- package/src/ui-kit/VerifyPhoneDialog/InputCode.tsx +90 -0
- package/src/ui-kit/VerifyPhoneDialog/SubmitButton.tsx +17 -0
- package/src/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.fixture.tsx +24 -0
- package/src/ui-kit/VerifyPhoneDialog/VerifyPhoneDialog.tsx +83 -0
- package/src/ui-kit/VerifyPhoneDialog/submitVerifyPhoneForm.tsx +36 -0
- package/src/ui-kit/VerifyPhoneDialog/useVerifyPhoneDialog.tsx +11 -0
- package/dist/ui-kit/Timer/Timer.js.map +0 -1
- package/lib/ui-kit/Timer/Timer.js.map +0 -1
- package/mobile/dist/ui-kit/Timer/Timer.d.ts +0 -7
- package/mobile/dist/ui-kit/Timer/Timer.js.map +0 -1
- package/mobile/lib/ui-kit/Timer/Timer.d.ts +0 -7
- package/mobile/lib/ui-kit/Timer/Timer.js.map +0 -1
- /package/lib/ui-kit/{Timer/Timer.fixture.d.ts → TimerCircle/TimerCircle.fixture.d.ts} +0 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
+
import { useCallback, useEffect, useRef, useState } from '@redneckz/uni-jsx/lib/hooks';
|
|
3
|
+
|
|
4
|
+
type InputCodeProps = {
|
|
5
|
+
values: string[];
|
|
6
|
+
setValues: React.Dispatch<React.SetStateAction<string[]>>;
|
|
7
|
+
hasError?: boolean;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export const InputCode = JSX<InputCodeProps>(({ values, setValues, hasError }) => {
|
|
11
|
+
const [activeIndex, setActiveIndex] = useState(0);
|
|
12
|
+
const inputRefs = useRef<HTMLInputElement[]>([]);
|
|
13
|
+
|
|
14
|
+
useEffect(() => {
|
|
15
|
+
inputRefs.current?.[activeIndex]?.focus();
|
|
16
|
+
}, [activeIndex]);
|
|
17
|
+
|
|
18
|
+
const handleChange = useCallback(
|
|
19
|
+
(index: number) => (event: React.ChangeEvent<HTMLInputElement>) => {
|
|
20
|
+
const { value } = event.currentTarget;
|
|
21
|
+
const isLastIndex = index === values.length - 1;
|
|
22
|
+
const isMultipleCharacters = value.length > 1;
|
|
23
|
+
if (isLastIndex && isMultipleCharacters) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
setValues(values.map((_, i) => (i === index ? value : _)));
|
|
27
|
+
setActiveIndex(index + 1);
|
|
28
|
+
},
|
|
29
|
+
[values],
|
|
30
|
+
);
|
|
31
|
+
|
|
32
|
+
const handleKeyDown = useCallback(
|
|
33
|
+
(currentIndex: number) => (event: React.KeyboardEvent<HTMLInputElement>) => {
|
|
34
|
+
const { key } = event;
|
|
35
|
+
if (key === 'Backspace' && !values[currentIndex]) {
|
|
36
|
+
const previousIndex = currentIndex > 0 ? currentIndex - 1 : values.length - 1;
|
|
37
|
+
const updatedValues = values.map((value, index) => (index === previousIndex ? '' : value));
|
|
38
|
+
setValues(updatedValues);
|
|
39
|
+
setActiveIndex(previousIndex);
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
[values],
|
|
43
|
+
);
|
|
44
|
+
|
|
45
|
+
const handlePaste = useCallback(
|
|
46
|
+
(event: React.ClipboardEvent<HTMLInputElement>) => {
|
|
47
|
+
event.preventDefault();
|
|
48
|
+
const pastedData = event.clipboardData.getData('text');
|
|
49
|
+
const updatedValues = values.map((_, idx) => (idx < pastedData.length ? pastedData[idx] : _));
|
|
50
|
+
setValues(updatedValues);
|
|
51
|
+
setActiveIndex(updatedValues.length - 1);
|
|
52
|
+
},
|
|
53
|
+
[values],
|
|
54
|
+
);
|
|
55
|
+
|
|
56
|
+
return (
|
|
57
|
+
<div className="flex flex-col gap-2 text-center">
|
|
58
|
+
<div>
|
|
59
|
+
{values.map((value, index) => (
|
|
60
|
+
<input
|
|
61
|
+
key={index}
|
|
62
|
+
type="number"
|
|
63
|
+
maxLength={1}
|
|
64
|
+
value={value}
|
|
65
|
+
onChange={handleChange(index)}
|
|
66
|
+
onPaste={handlePaste}
|
|
67
|
+
ref={(ref) => {
|
|
68
|
+
if (!inputRefs.current) {
|
|
69
|
+
inputRefs.current = [];
|
|
70
|
+
}
|
|
71
|
+
inputRefs.current[index] = ref as HTMLInputElement;
|
|
72
|
+
}}
|
|
73
|
+
onFocus={(event) => event.target.select()}
|
|
74
|
+
onKeyDown={handleKeyDown(index)}
|
|
75
|
+
className={getInputStyle(index, values, hasError)}
|
|
76
|
+
/>
|
|
77
|
+
))}
|
|
78
|
+
</div>
|
|
79
|
+
{hasError ? <div className="text-error">Неверный код</div> : null}
|
|
80
|
+
</div>
|
|
81
|
+
);
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
const getInputStyle = (index: number, values: string[], hasError?: boolean) => {
|
|
85
|
+
const isInputEmpty = !values[index];
|
|
86
|
+
|
|
87
|
+
return `w-16 h-20 text-3xl text-center p-2 m-2 border ${
|
|
88
|
+
hasError && isInputEmpty ? 'border-error' : 'border-gray'
|
|
89
|
+
} rounded-md caret-transparent outline-none`;
|
|
90
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
+
import { Button } from '../Button/Button';
|
|
3
|
+
import { Text } from '../Text/Text';
|
|
4
|
+
|
|
5
|
+
interface SubmitButtonProps {
|
|
6
|
+
isDisabled: boolean;
|
|
7
|
+
onClick: () => void;
|
|
8
|
+
text?: string;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export const SubmitButton = JSX<SubmitButtonProps>(({ isDisabled, onClick, text }) => {
|
|
12
|
+
return (
|
|
13
|
+
<Button type="button" onClick={onClick} disabled={isDisabled}>
|
|
14
|
+
<Text font="font-medium">{text}</Text>
|
|
15
|
+
</Button>
|
|
16
|
+
);
|
|
17
|
+
});
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import '../../setup-fixture';
|
|
2
|
+
|
|
3
|
+
import { VerifyPhoneDialog } from './VerifyPhoneDialog';
|
|
4
|
+
|
|
5
|
+
const title = 'Подтвердите номер телефона';
|
|
6
|
+
|
|
7
|
+
const description = 'Мы отправили код на +7 (999) 999-99-99';
|
|
8
|
+
|
|
9
|
+
const __html = `Вводя код, я подтверждаю, что ознакомлен и подписываю:
|
|
10
|
+
<ul> <li>соглашение о порядке использования простой электронной подписи,
|
|
11
|
+
</li> <li>согласие на обработку персональных данных,
|
|
12
|
+
</li> <li>предоставление и подписание прочих согласий Банка,
|
|
13
|
+
</li><li>согласие на запрос в ПФР</li> </ul>`;
|
|
14
|
+
|
|
15
|
+
export default {
|
|
16
|
+
default: (
|
|
17
|
+
<VerifyPhoneDialog
|
|
18
|
+
title={title}
|
|
19
|
+
description={description}
|
|
20
|
+
__html={__html}
|
|
21
|
+
textButton="Отправить"
|
|
22
|
+
/>
|
|
23
|
+
),
|
|
24
|
+
};
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
+
import { useCallback, useState } from '@redneckz/uni-jsx/lib/hooks';
|
|
3
|
+
import { useMemo } from 'react';
|
|
4
|
+
import { Headline } from '../../components/Headline/Headline';
|
|
5
|
+
import { Dialog } from '../DialogManager/Dialog';
|
|
6
|
+
import { useDialogManager } from '../DialogManager/useDialogManager';
|
|
7
|
+
import { LinkButton } from '../LinkButton/LinkButton';
|
|
8
|
+
import { Loader } from '../Loader/Loader';
|
|
9
|
+
import { RichText } from '../RichText/RichText';
|
|
10
|
+
import { Timer } from '../TimerCircle/Timer';
|
|
11
|
+
import { InputCode } from './InputCode';
|
|
12
|
+
import { SubmitButton } from './SubmitButton';
|
|
13
|
+
import { submitVerifyPhoneForm } from './submitVerifyPhoneForm';
|
|
14
|
+
|
|
15
|
+
export interface VerifyPhoneDialogProps {
|
|
16
|
+
title?: string;
|
|
17
|
+
description?: string;
|
|
18
|
+
code?: boolean;
|
|
19
|
+
__html?: string;
|
|
20
|
+
codeLength?: number;
|
|
21
|
+
textButton?: string;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export const VerifyPhoneDialog = JSX<VerifyPhoneDialogProps>(
|
|
25
|
+
({ title, description, __html, code = true, codeLength = 4, textButton = '' }) => {
|
|
26
|
+
const { close } = useDialogManager();
|
|
27
|
+
|
|
28
|
+
const [values, setValues] = useState(Array(codeLength).fill(''));
|
|
29
|
+
const [hasError, setHasError] = useState(false);
|
|
30
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
31
|
+
const [timeNextReq, setTimeNextReq] = useState<number>(0);
|
|
32
|
+
|
|
33
|
+
const isValidCode = useMemo(() => values.every(Boolean), [values]);
|
|
34
|
+
|
|
35
|
+
const handleSubmit = useCallback(async () => {
|
|
36
|
+
setIsLoading(true);
|
|
37
|
+
const { success, expiresIn } = await submitVerifyPhoneForm(values.join(''));
|
|
38
|
+
setIsLoading(false);
|
|
39
|
+
|
|
40
|
+
setTimeNextReq(expiresIn as number);
|
|
41
|
+
|
|
42
|
+
if (success) {
|
|
43
|
+
close();
|
|
44
|
+
} else {
|
|
45
|
+
setHasError(true);
|
|
46
|
+
}
|
|
47
|
+
}, [values]);
|
|
48
|
+
|
|
49
|
+
return (
|
|
50
|
+
<Dialog className="my-6xl max-w-3xl w-full min-h-fit mx-auto rounded-lg">
|
|
51
|
+
<div className="flex flex-col gap-lg items-center rounded-md">
|
|
52
|
+
<Headline
|
|
53
|
+
className="w-full"
|
|
54
|
+
title={title}
|
|
55
|
+
description={description}
|
|
56
|
+
headlineVersion="S"
|
|
57
|
+
isEmbedded={true}
|
|
58
|
+
/>
|
|
59
|
+
{code ? <InputCode values={values} setValues={setValues} hasError={hasError} /> : null}
|
|
60
|
+
{timeNextReq ? (
|
|
61
|
+
<div className="flex flex-row text-l font-light text-primary-main">
|
|
62
|
+
Получить новый код можно через
|
|
63
|
+
<Timer
|
|
64
|
+
className="text-primary-main ml-1"
|
|
65
|
+
time={timeNextReq}
|
|
66
|
+
setTime={setTimeNextReq}
|
|
67
|
+
/>
|
|
68
|
+
</div>
|
|
69
|
+
) : (
|
|
70
|
+
<LinkButton className="text-primary-main">Получить новый код</LinkButton>
|
|
71
|
+
)}
|
|
72
|
+
|
|
73
|
+
<RichText itemSize="list-s" __html={__html} />
|
|
74
|
+
{textButton ? (
|
|
75
|
+
<SubmitButton isDisabled={!isValidCode} onClick={handleSubmit} text={textButton} />
|
|
76
|
+
) : null}
|
|
77
|
+
|
|
78
|
+
{isLoading ? <Loader blur={false} /> : null}
|
|
79
|
+
</div>
|
|
80
|
+
</Dialog>
|
|
81
|
+
);
|
|
82
|
+
},
|
|
83
|
+
);
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export interface VerifyPhoneFormData {
|
|
2
|
+
smsText: string;
|
|
3
|
+
smsCodesSetName: {
|
|
4
|
+
key: string;
|
|
5
|
+
};
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
const SEND_CODE_URL = '/api/v1/sms/checkCode';
|
|
9
|
+
|
|
10
|
+
export const submitVerifyPhoneForm = async (code: string) => {
|
|
11
|
+
const codeData: VerifyPhoneFormData = {
|
|
12
|
+
smsText: code,
|
|
13
|
+
smsCodesSetName: { key: 'AUTHENTICATION' },
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
const response = await fetch(SEND_CODE_URL, {
|
|
17
|
+
method: 'POST',
|
|
18
|
+
headers: {
|
|
19
|
+
'Content-Type': 'application/json',
|
|
20
|
+
},
|
|
21
|
+
body: JSON.stringify(codeData),
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
if (response.ok) {
|
|
25
|
+
const data = await response.json();
|
|
26
|
+
|
|
27
|
+
return {
|
|
28
|
+
success: true,
|
|
29
|
+
expiresIn: data.expires_in,
|
|
30
|
+
};
|
|
31
|
+
} else {
|
|
32
|
+
return {
|
|
33
|
+
success: false,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { useDialogManager, type DialogOptions } from '../DialogManager/useDialogManager';
|
|
2
|
+
import { VerifyPhoneDialog, type VerifyPhoneDialogProps } from './VerifyPhoneDialog';
|
|
3
|
+
|
|
4
|
+
export const useVerifyPhoneDialog = (props: VerifyPhoneDialogProps) => {
|
|
5
|
+
const { open, close } = useDialogManager();
|
|
6
|
+
|
|
7
|
+
return {
|
|
8
|
+
open: (options: DialogOptions = {}) => open(<VerifyPhoneDialog {...props} />, options),
|
|
9
|
+
close,
|
|
10
|
+
};
|
|
11
|
+
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Timer.js","sourceRoot":"","sources":["../../../src/ui-kit/Timer/Timer.tsx"],"names":[],"mappings":";;;AAAA,+CAAwC;AACxC,uDAAkE;AAClE,iEAA8D;AAC9D,mDAAgD;AAQnC,QAAA,KAAK,GAAG,IAAA,aAAG,EAAa,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;IACvE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAA,gBAAQ,EAAC,QAAQ,CAAC,CAAC;IAE3C,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YAC7B,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;QACpB,CAAC,EAAE,IAAI,CAAC,CAAC;QAET,IAAI,IAAI,KAAK,CAAC,EAAE;YACd,aAAa,CAAC,KAAK,CAAC,CAAC;SACtB;QAED,OAAO,GAAG,EAAE;YACV,aAAa,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,MAAM,kBAAkB,GAAG,GAAG,GAAG,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,QAAQ,CAAC,GAAG,GAAG,CAAC;IAEtE,OAAO,CACL,4CACE,uBAAC,mBAAQ,IAAC,KAAK,EAAE,KAAK,EAAE,eAAe,EAAC,GAAG,GAAG,EAC9C,iCAAK,SAAS,EAAC,2CAA2C,aACxD,iCAAK,SAAS,EAAC,gGAAgG,aAC7G,gCACE,SAAS,EAAC,+BAA+B,EACzC,KAAK,EAAE;oCACL,UAAU,EAAE,mCAAmC,kBAAkB,6BAA6B;iCAC/F,GACD,EACF,gCAAK,SAAS,EAAC,4GAA4G,YACxH,qBAAqB,CAAC,IAAI,CAAC,GACxB,IACF,EACN,uBAAC,mBAAQ,IAAC,MAAM,EAAE,MAAM,GAAI,IACxB,IACF,CACP,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,MAAM,qBAAqB,GAAG,CAAC,IAAY,EAAE,EAAE;IAC7C,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,GAAG,IAAI,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAEhD,OAAO,GAAG,OAAO,IAAI,OAAO,EAAE,CAAC;AACjC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Timer.js","sourceRoot":"","sources":["../../../src/ui-kit/Timer/Timer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAQhD,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,CAAa,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;IACvE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAE3C,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YAC7B,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;QACpB,CAAC,EAAE,IAAI,CAAC,CAAC;QAET,IAAI,IAAI,KAAK,CAAC,EAAE;YACd,aAAa,CAAC,KAAK,CAAC,CAAC;SACtB;QAED,OAAO,GAAG,EAAE;YACV,aAAa,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,MAAM,kBAAkB,GAAG,GAAG,GAAG,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,QAAQ,CAAC,GAAG,GAAG,CAAC;IAEtE,OAAO,CACL,0BACE,KAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,EAAE,eAAe,EAAC,GAAG,GAAG,EAC9C,eAAK,SAAS,EAAC,2CAA2C,aACxD,eAAK,SAAS,EAAC,gGAAgG,aAC7G,cACE,SAAS,EAAC,+BAA+B,EACzC,KAAK,EAAE;oCACL,UAAU,EAAE,mCAAmC,kBAAkB,6BAA6B;iCAC/F,GACD,EACF,cAAK,SAAS,EAAC,4GAA4G,YACxH,qBAAqB,CAAC,IAAI,CAAC,GACxB,IACF,EACN,KAAC,QAAQ,IAAC,MAAM,EAAE,MAAM,GAAI,IACxB,IACF,CACP,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,MAAM,qBAAqB,GAAG,CAAC,IAAY,EAAE,EAAE;IAC7C,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,GAAG,IAAI,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAEhD,OAAO,GAAG,OAAO,IAAI,OAAO,EAAE,CAAC;AACjC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Timer.js","sourceRoot":"","sources":["../../../src/ui-kit/Timer/Timer.tsx"],"names":[],"mappings":";;;AAAA,+CAAwC;AACxC,uDAAkE;AAClE,iEAA8D;AAC9D,mDAAgD;AAQnC,QAAA,KAAK,GAAG,IAAA,aAAG,EAAa,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;IACvE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAA,gBAAQ,EAAC,QAAQ,CAAC,CAAC;IAE3C,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YAC7B,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;QACpB,CAAC,EAAE,IAAI,CAAC,CAAC;QAET,IAAI,IAAI,KAAK,CAAC,EAAE;YACd,aAAa,CAAC,KAAK,CAAC,CAAC;SACtB;QAED,OAAO,GAAG,EAAE;YACV,aAAa,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,MAAM,kBAAkB,GAAG,GAAG,GAAG,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,QAAQ,CAAC,GAAG,GAAG,CAAC;IAEtE,OAAO,CACL,4CACE,uBAAC,mBAAQ,IAAC,KAAK,EAAE,KAAK,EAAE,eAAe,EAAC,GAAG,GAAG,EAC9C,iCAAK,SAAS,EAAC,2CAA2C,aACxD,iCAAK,SAAS,EAAC,gGAAgG,aAC7G,gCACE,SAAS,EAAC,+BAA+B,EACzC,KAAK,EAAE;oCACL,UAAU,EAAE,mCAAmC,kBAAkB,6BAA6B;iCAC/F,GACD,EACF,gCAAK,SAAS,EAAC,4GAA4G,YACxH,qBAAqB,CAAC,IAAI,CAAC,GACxB,IACF,EACN,uBAAC,mBAAQ,IAAC,MAAM,EAAE,MAAM,GAAI,IACxB,IACF,CACP,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,MAAM,qBAAqB,GAAG,CAAC,IAAY,EAAE,EAAE;IAC7C,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,GAAG,IAAI,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAEhD,OAAO,GAAG,OAAO,IAAI,OAAO,EAAE,CAAC;AACjC,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Timer.js","sourceRoot":"","sources":["../../../src/ui-kit/Timer/Timer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,MAAM,oCAAoC,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAQhD,MAAM,CAAC,MAAM,KAAK,GAAG,GAAG,CAAa,CAAC,EAAE,QAAQ,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;IACvE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAE3C,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YAC7B,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;QACpB,CAAC,EAAE,IAAI,CAAC,CAAC;QAET,IAAI,IAAI,KAAK,CAAC,EAAE;YACd,aAAa,CAAC,KAAK,CAAC,CAAC;SACtB;QAED,OAAO,GAAG,EAAE;YACV,aAAa,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,MAAM,kBAAkB,GAAG,GAAG,GAAG,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,QAAQ,CAAC,GAAG,GAAG,CAAC;IAEtE,OAAO,CACL,0BACE,KAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,EAAE,eAAe,EAAC,GAAG,GAAG,EAC9C,eAAK,SAAS,EAAC,2CAA2C,aACxD,eAAK,SAAS,EAAC,gGAAgG,aAC7G,cACE,SAAS,EAAC,+BAA+B,EACzC,KAAK,EAAE;oCACL,UAAU,EAAE,mCAAmC,kBAAkB,6BAA6B;iCAC/F,GACD,EACF,cAAK,SAAS,EAAC,4GAA4G,YACxH,qBAAqB,CAAC,IAAI,CAAC,GACxB,IACF,EACN,KAAC,QAAQ,IAAC,MAAM,EAAE,MAAM,GAAI,IACxB,IACF,CACP,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,MAAM,qBAAqB,GAAG,CAAC,IAAY,EAAE,EAAE;IAC7C,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,GAAG,IAAI,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAEhD,OAAO,GAAG,OAAO,IAAI,OAAO,EAAE,CAAC;AACjC,CAAC,CAAC"}
|
|
File without changes
|