@alfalab/core-components-confirmation 9.0.7 → 10.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (233) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/dist/component.d.ts +4 -164
  3. package/dist/component.js +113 -101
  4. package/dist/components/countdown-loader/component.d.ts +1 -1
  5. package/dist/components/countdown-loader/component.js +1 -1
  6. package/dist/components/countdown-loader/index.css +2 -2
  7. package/dist/components/index.d.ts +1 -3
  8. package/dist/components/index.js +15 -14
  9. package/dist/components/screens/fatal-error/component.d.ts +3 -0
  10. package/dist/components/screens/fatal-error/component.js +25 -0
  11. package/dist/components/screens/fatal-error/index.css +61 -0
  12. package/dist/components/{code-input → screens/fatal-error}/index.d.ts +0 -0
  13. package/dist/components/screens/fatal-error/index.js +13 -0
  14. package/dist/components/screens/hint/component.d.ts +3 -0
  15. package/dist/components/screens/hint/component.js +45 -0
  16. package/dist/components/screens/hint/index.css +103 -0
  17. package/dist/components/{countdown → screens/hint}/index.d.ts +0 -0
  18. package/dist/components/screens/hint/index.js +15 -0
  19. package/dist/components/screens/index.d.ts +4 -0
  20. package/dist/components/screens/index.js +26 -0
  21. package/dist/components/screens/initial/component.d.ts +3 -0
  22. package/dist/components/screens/initial/component.js +95 -0
  23. package/dist/components/screens/initial/countdown-section.d.ts +0 -0
  24. package/dist/components/screens/initial/countdown-section.js +15 -0
  25. package/dist/components/screens/initial/index.css +98 -0
  26. package/dist/components/{overlimit → screens/initial}/index.d.ts +0 -0
  27. package/dist/components/screens/initial/index.js +19 -0
  28. package/dist/components/screens/temp-block/component.d.ts +3 -0
  29. package/dist/components/screens/temp-block/component.js +36 -0
  30. package/dist/components/{overlimit → screens/temp-block}/index.css +9 -31
  31. package/dist/components/{sign-confirmation → screens/temp-block}/index.d.ts +0 -0
  32. package/dist/components/screens/temp-block/index.js +13 -0
  33. package/dist/context.d.ts +4 -0
  34. package/dist/context.js +27 -0
  35. package/dist/countdown-section-2edac0a0.d.ts +9 -0
  36. package/dist/countdown-section-2edac0a0.js +41 -0
  37. package/dist/cssm/component.d.ts +4 -164
  38. package/dist/cssm/component.js +115 -103
  39. package/dist/cssm/components/countdown-loader/component.d.ts +1 -1
  40. package/dist/cssm/components/index.d.ts +1 -3
  41. package/dist/cssm/components/index.js +19 -18
  42. package/dist/cssm/components/screens/fatal-error/component.d.ts +3 -0
  43. package/dist/cssm/components/screens/fatal-error/component.js +24 -0
  44. package/dist/cssm/components/{code-input → screens/fatal-error}/index.d.ts +0 -0
  45. package/dist/cssm/components/screens/fatal-error/index.js +14 -0
  46. package/dist/cssm/components/screens/fatal-error/index.module.css +60 -0
  47. package/dist/cssm/components/screens/hint/component.d.ts +3 -0
  48. package/dist/cssm/components/screens/hint/component.js +44 -0
  49. package/dist/cssm/components/{countdown → screens/hint}/index.d.ts +0 -0
  50. package/dist/cssm/components/screens/hint/index.js +16 -0
  51. package/dist/cssm/components/screens/hint/index.module.css +102 -0
  52. package/dist/cssm/components/screens/index.d.ts +4 -0
  53. package/dist/cssm/components/screens/index.js +31 -0
  54. package/dist/cssm/components/screens/initial/component.d.ts +3 -0
  55. package/dist/cssm/components/screens/initial/component.js +97 -0
  56. package/dist/cssm/components/screens/initial/countdown-section.d.ts +9 -0
  57. package/dist/cssm/components/screens/initial/countdown-section.js +41 -0
  58. package/dist/cssm/components/{overlimit → screens/initial}/index.d.ts +0 -0
  59. package/dist/cssm/components/screens/initial/index.js +20 -0
  60. package/dist/cssm/components/{sign-confirmation → screens/initial}/index.module.css +40 -50
  61. package/dist/cssm/components/screens/temp-block/component.d.ts +3 -0
  62. package/dist/cssm/components/screens/temp-block/component.js +36 -0
  63. package/dist/cssm/components/{sign-confirmation → screens/temp-block}/index.d.ts +0 -0
  64. package/dist/cssm/components/screens/temp-block/index.js +15 -0
  65. package/dist/cssm/components/{overlimit → screens/temp-block}/index.module.css +6 -28
  66. package/dist/cssm/context.d.ts +4 -0
  67. package/dist/cssm/context.js +27 -0
  68. package/dist/cssm/index.d.ts +3 -0
  69. package/dist/cssm/index.js +29 -20
  70. package/dist/cssm/index.module.css +5 -77
  71. package/dist/cssm/types.d.ts +130 -0
  72. package/dist/cssm/types.js +23 -0
  73. package/dist/cssm/utils.d.ts +30 -0
  74. package/dist/cssm/utils.js +84 -0
  75. package/dist/esm/component.d.ts +4 -164
  76. package/dist/esm/component.js +114 -102
  77. package/dist/esm/components/countdown-loader/component.d.ts +1 -1
  78. package/dist/esm/components/countdown-loader/component.js +1 -1
  79. package/dist/esm/components/countdown-loader/index.css +2 -2
  80. package/dist/esm/components/index.d.ts +1 -3
  81. package/dist/esm/components/index.js +11 -10
  82. package/dist/esm/components/screens/fatal-error/component.d.ts +3 -0
  83. package/dist/esm/components/screens/fatal-error/component.js +17 -0
  84. package/dist/esm/components/screens/fatal-error/index.css +61 -0
  85. package/dist/esm/components/{code-input → screens/fatal-error}/index.d.ts +0 -0
  86. package/dist/esm/components/screens/fatal-error/index.js +5 -0
  87. package/dist/esm/components/screens/hint/component.d.ts +3 -0
  88. package/dist/esm/components/screens/hint/component.js +36 -0
  89. package/dist/esm/components/screens/hint/index.css +103 -0
  90. package/dist/esm/components/{countdown → screens/hint}/index.d.ts +0 -0
  91. package/dist/esm/components/screens/hint/index.js +7 -0
  92. package/dist/esm/components/screens/index.d.ts +4 -0
  93. package/dist/esm/components/screens/index.js +15 -0
  94. package/dist/esm/components/screens/initial/component.d.ts +3 -0
  95. package/dist/esm/components/screens/initial/component.js +86 -0
  96. package/dist/esm/components/screens/initial/countdown-section.d.ts +0 -0
  97. package/dist/esm/components/screens/initial/countdown-section.js +7 -0
  98. package/dist/esm/components/screens/initial/index.css +98 -0
  99. package/dist/esm/components/{overlimit → screens/initial}/index.d.ts +0 -0
  100. package/dist/esm/components/screens/initial/index.js +11 -0
  101. package/dist/esm/components/screens/temp-block/component.d.ts +3 -0
  102. package/dist/esm/components/screens/temp-block/component.js +28 -0
  103. package/dist/{modern/components/overlimit → esm/components/screens/temp-block}/index.css +9 -31
  104. package/dist/esm/components/{sign-confirmation → screens/temp-block}/index.d.ts +0 -0
  105. package/dist/esm/components/screens/temp-block/index.js +5 -0
  106. package/dist/esm/context.d.ts +4 -0
  107. package/dist/esm/context.js +23 -0
  108. package/dist/esm/countdown-section-ddb744a6.d.ts +9 -0
  109. package/dist/esm/countdown-section-ddb744a6.js +33 -0
  110. package/dist/esm/index.css +7 -79
  111. package/dist/esm/index.d.ts +3 -0
  112. package/dist/esm/index.js +13 -11
  113. package/dist/esm/types.d.ts +130 -0
  114. package/dist/esm/types.js +19 -0
  115. package/dist/esm/utils.d.ts +30 -0
  116. package/dist/esm/utils.js +76 -0
  117. package/dist/index.css +7 -79
  118. package/dist/index.d.ts +3 -0
  119. package/dist/index.js +25 -16
  120. package/dist/modern/component.d.ts +4 -164
  121. package/dist/modern/component.js +75 -102
  122. package/dist/modern/components/countdown-loader/component.d.ts +1 -1
  123. package/dist/modern/components/countdown-loader/component.js +1 -1
  124. package/dist/modern/components/countdown-loader/index.css +2 -2
  125. package/dist/modern/components/index.d.ts +1 -3
  126. package/dist/modern/components/index.js +11 -10
  127. package/dist/modern/components/screens/fatal-error/component.d.ts +3 -0
  128. package/dist/modern/components/screens/fatal-error/component.js +17 -0
  129. package/dist/modern/components/screens/fatal-error/index.css +61 -0
  130. package/dist/modern/components/{code-input → screens/fatal-error}/index.d.ts +0 -0
  131. package/dist/modern/components/screens/fatal-error/index.js +5 -0
  132. package/dist/modern/components/screens/hint/component.d.ts +3 -0
  133. package/dist/modern/components/screens/hint/component.js +36 -0
  134. package/dist/modern/components/screens/hint/index.css +103 -0
  135. package/dist/modern/components/{countdown → screens/hint}/index.d.ts +0 -0
  136. package/dist/modern/components/screens/hint/index.js +7 -0
  137. package/dist/modern/components/screens/index.d.ts +4 -0
  138. package/dist/modern/components/screens/index.js +15 -0
  139. package/dist/modern/components/screens/initial/component.d.ts +3 -0
  140. package/dist/modern/components/screens/initial/component.js +86 -0
  141. package/dist/modern/components/screens/initial/countdown-section.d.ts +0 -0
  142. package/dist/modern/components/screens/initial/countdown-section.js +7 -0
  143. package/dist/modern/components/screens/initial/index.css +98 -0
  144. package/dist/modern/components/{overlimit → screens/initial}/index.d.ts +0 -0
  145. package/dist/modern/components/screens/initial/index.js +11 -0
  146. package/dist/modern/components/screens/temp-block/component.d.ts +3 -0
  147. package/dist/modern/components/screens/temp-block/component.js +28 -0
  148. package/dist/{esm/components/overlimit → modern/components/screens/temp-block}/index.css +9 -31
  149. package/dist/modern/components/{sign-confirmation → screens/temp-block}/index.d.ts +0 -0
  150. package/dist/modern/components/screens/temp-block/index.js +5 -0
  151. package/dist/modern/context.d.ts +4 -0
  152. package/dist/modern/context.js +23 -0
  153. package/dist/modern/countdown-section-91f055c8.d.ts +9 -0
  154. package/dist/modern/countdown-section-91f055c8.js +32 -0
  155. package/dist/modern/index.css +7 -79
  156. package/dist/modern/index.d.ts +3 -0
  157. package/dist/modern/index.js +12 -10
  158. package/dist/modern/types.d.ts +130 -0
  159. package/dist/modern/types.js +19 -0
  160. package/dist/modern/utils.d.ts +30 -0
  161. package/dist/modern/utils.js +74 -0
  162. package/dist/types.d.ts +130 -0
  163. package/dist/types.js +23 -0
  164. package/dist/utils.d.ts +30 -0
  165. package/dist/utils.js +84 -0
  166. package/package.json +3 -2
  167. package/dist/components/code-input/component.d.ts +0 -16
  168. package/dist/components/code-input/component.js +0 -160
  169. package/dist/components/code-input/index.css +0 -99
  170. package/dist/components/code-input/index.js +0 -13
  171. package/dist/components/code-input/utils.d.ts +0 -10
  172. package/dist/components/code-input/utils.js +0 -21
  173. package/dist/components/countdown/component.d.ts +0 -23
  174. package/dist/components/countdown/component.js +0 -117
  175. package/dist/components/countdown/index.css +0 -85
  176. package/dist/components/countdown/index.js +0 -16
  177. package/dist/components/overlimit/component.d.ts +0 -12
  178. package/dist/components/overlimit/component.js +0 -73
  179. package/dist/components/overlimit/index.js +0 -17
  180. package/dist/components/sign-confirmation/component.d.ts +0 -37
  181. package/dist/components/sign-confirmation/component.js +0 -62
  182. package/dist/components/sign-confirmation/index.css +0 -108
  183. package/dist/components/sign-confirmation/index.js +0 -20
  184. package/dist/cssm/components/code-input/component.d.ts +0 -16
  185. package/dist/cssm/components/code-input/component.js +0 -159
  186. package/dist/cssm/components/code-input/index.js +0 -14
  187. package/dist/cssm/components/code-input/index.module.css +0 -98
  188. package/dist/cssm/components/code-input/utils.d.ts +0 -10
  189. package/dist/cssm/components/code-input/utils.js +0 -21
  190. package/dist/cssm/components/countdown/component.d.ts +0 -23
  191. package/dist/cssm/components/countdown/component.js +0 -117
  192. package/dist/cssm/components/countdown/index.js +0 -18
  193. package/dist/cssm/components/countdown/index.module.css +0 -84
  194. package/dist/cssm/components/overlimit/component.d.ts +0 -12
  195. package/dist/cssm/components/overlimit/component.js +0 -74
  196. package/dist/cssm/components/overlimit/index.js +0 -20
  197. package/dist/cssm/components/sign-confirmation/component.d.ts +0 -37
  198. package/dist/cssm/components/sign-confirmation/component.js +0 -64
  199. package/dist/cssm/components/sign-confirmation/index.js +0 -24
  200. package/dist/esm/components/code-input/component.d.ts +0 -16
  201. package/dist/esm/components/code-input/component.js +0 -151
  202. package/dist/esm/components/code-input/index.css +0 -99
  203. package/dist/esm/components/code-input/index.js +0 -5
  204. package/dist/esm/components/code-input/utils.d.ts +0 -10
  205. package/dist/esm/components/code-input/utils.js +0 -17
  206. package/dist/esm/components/countdown/component.d.ts +0 -23
  207. package/dist/esm/components/countdown/component.js +0 -107
  208. package/dist/esm/components/countdown/index.css +0 -85
  209. package/dist/esm/components/countdown/index.js +0 -7
  210. package/dist/esm/components/overlimit/component.d.ts +0 -12
  211. package/dist/esm/components/overlimit/component.js +0 -65
  212. package/dist/esm/components/overlimit/index.js +0 -9
  213. package/dist/esm/components/sign-confirmation/component.d.ts +0 -37
  214. package/dist/esm/components/sign-confirmation/component.js +0 -53
  215. package/dist/esm/components/sign-confirmation/index.css +0 -108
  216. package/dist/esm/components/sign-confirmation/index.js +0 -12
  217. package/dist/modern/components/code-input/component.d.ts +0 -16
  218. package/dist/modern/components/code-input/component.js +0 -123
  219. package/dist/modern/components/code-input/index.css +0 -99
  220. package/dist/modern/components/code-input/index.js +0 -5
  221. package/dist/modern/components/code-input/utils.d.ts +0 -10
  222. package/dist/modern/components/code-input/utils.js +0 -16
  223. package/dist/modern/components/countdown/component.d.ts +0 -23
  224. package/dist/modern/components/countdown/component.js +0 -102
  225. package/dist/modern/components/countdown/index.css +0 -85
  226. package/dist/modern/components/countdown/index.js +0 -7
  227. package/dist/modern/components/overlimit/component.d.ts +0 -12
  228. package/dist/modern/components/overlimit/component.js +0 -64
  229. package/dist/modern/components/overlimit/index.js +0 -9
  230. package/dist/modern/components/sign-confirmation/component.d.ts +0 -37
  231. package/dist/modern/components/sign-confirmation/component.js +0 -51
  232. package/dist/modern/components/sign-confirmation/index.css +0 -108
  233. package/dist/modern/components/sign-confirmation/index.js +0 -12
@@ -0,0 +1,27 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var React = require('react');
6
+ var utils = require('./utils.js');
7
+
8
+ var mockFn = function () { return undefined; };
9
+ var ConfirmationContext = React.createContext({
10
+ alignContent: 'left',
11
+ texts: {},
12
+ state: 'INITIAL',
13
+ screen: 'INITIAL',
14
+ requiredCharAmount: 5,
15
+ countdownDuration: utils.ONE_MINUTE,
16
+ timeLeft: utils.ONE_MINUTE,
17
+ tempBlockDuration: utils.ONE_DAY,
18
+ phone: '',
19
+ onTempBlockFinished: mockFn,
20
+ onInputFinished: mockFn,
21
+ onChangeState: mockFn,
22
+ onSmsRetryClick: mockFn,
23
+ onChangeScreen: mockFn,
24
+ onFatalErrorOkButtonClick: mockFn,
25
+ });
26
+
27
+ exports.ConfirmationContext = ConfirmationContext;
@@ -1,2 +1,5 @@
1
1
  export * from "./component";
2
2
  export * from "./components/index";
3
+ export * from "./context";
4
+ export * from "./types";
5
+ export * from "./utils";
@@ -2,33 +2,42 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
+ var component = require('./component.js');
5
6
  require('react');
6
7
  require('classnames');
7
- require('@alfalab/core-components-button/dist/cssm');
8
- require('@alfalab/core-components-link/dist/cssm');
9
- require('@alfalab/utils');
10
8
  require('@alfalab/hooks');
9
+ var utils = require('./utils.js');
10
+ var context = require('./context.js');
11
+ var types = require('./types.js');
12
+ require('@alfalab/core-components-code-input/dist/cssm');
13
+ require('@alfalab/core-components-link/dist/cssm');
14
+ require('./components/screens/initial/index.module.css');
15
+ require('@alfalab/core-components-loader/dist/cssm');
16
+ require('@alfalab/core-components-button/dist/cssm');
17
+ require('./components/screens/initial/countdown-section.js');
18
+ var components_screens_initial_component = require('./components/screens/initial/component.js');
19
+ require('./components/screens/hint/index.module.css');
20
+ var components_screens_hint_component = require('./components/screens/hint/component.js');
21
+ require('./components/screens/fatal-error/index.module.css');
22
+ var components_screens_fatalError_component = require('./components/screens/fatal-error/component.js');
11
23
  require('./components/countdown-loader/index.module.css');
12
24
  var components_countdownLoader_component = require('./components/countdown-loader/component.js');
13
- require('./components/countdown/index.module.css');
14
- var components_countdown_component = require('./components/countdown/component.js');
15
- require('@alfalab/core-components-loader/dist/cssm');
16
- require('./components/code-input/component.js');
17
- require('./components/code-input/utils.js');
18
- require('./components/code-input/index.module.css');
19
- require('./components/sign-confirmation/index.module.css');
20
- var components_signConfirmation_component = require('./components/sign-confirmation/component.js');
21
- require('@alfalab/icons-glyph');
22
- require('./components/overlimit/index.module.css');
23
- var components_overlimit_component = require('./components/overlimit/component.js');
25
+ require('./components/screens/temp-block/index.module.css');
26
+ var components_screens_tempBlock_component = require('./components/screens/temp-block/component.js');
24
27
  require('./index.module.css');
25
- var component = require('./component.js');
26
28
 
27
29
 
28
30
 
29
- exports.CountdownLoader = components_countdownLoader_component.CountdownLoader;
30
- exports.Countdown = components_countdown_component.Countdown;
31
- exports.formatMsAsMinutes = components_countdown_component.formatMsAsMinutes;
32
- exports.SignConfirmation = components_signConfirmation_component.SignConfirmation;
33
- exports.Overlimit = components_overlimit_component.Overlimit;
34
31
  exports.Confirmation = component.Confirmation;
32
+ exports.ONE_DAY = utils.ONE_DAY;
33
+ exports.ONE_MINUTE = utils.ONE_MINUTE;
34
+ exports.formatMsAsMinutes = utils.formatMsAsMinutes;
35
+ exports.useConfirmation = utils.useConfirmation;
36
+ exports.useCountdown = utils.useCountdown;
37
+ exports.ConfirmationContext = context.ConfirmationContext;
38
+ exports.defaultTexts = types.defaultTexts;
39
+ exports.Initial = components_screens_initial_component.Initial;
40
+ exports.Hint = components_screens_hint_component.Hint;
41
+ exports.FatalError = components_screens_fatalError_component.FatalError;
42
+ exports.CountdownLoader = components_countdownLoader_component.CountdownLoader;
43
+ exports.TempBlock = components_screens_tempBlock_component.TempBlock;
@@ -1,5 +1,4 @@
1
1
  :root {
2
- --color-light-text-primary: #0b1f35;
3
2
  --color-light-text-secondary: #546272;
4
3
  }
5
4
  :root {
@@ -10,24 +9,12 @@
10
9
 
11
10
  /* Hard up */
12
11
  }
13
- :root {
14
- --gap-xs: 8px;
15
- --gap-xl: 24px;
16
- --gap-2xl: 32px;
17
- --gap-4xl: 48px;
18
- }
19
12
  :root {
20
13
  --font-family-system: system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Helvetica,
21
14
  sans-serif;
22
15
  }
23
16
  :root {
24
17
  /* title */
25
- --confirmation-title-font-size: 22px;
26
- --confirmation-title-line-height: 26px;
27
- --confirmation-title-font-weight: 700;
28
- --confirmation-title-font-family: var(--font-family-system);
29
- --confirmation-title-color: var(--color-light-text-primary);
30
- --confirmation-title-font-feature-settings: normal;
31
18
 
32
19
  /* text */
33
20
  --confirmation-text-font-size: 16px;
@@ -41,53 +28,6 @@
41
28
  /* input */
42
29
  }
43
30
  .component {
44
- display: flex;
45
- flex-direction: column;
46
- width: 100%;
47
- font-family: var(--confirmation-font-family);
48
- }
49
- .error {
50
- display: flex;
51
- flex-direction: column;
52
- align-items: flex-start;
53
- }
54
- .errorHeader {
55
- font-size: var(--confirmation-title-font-size);
56
- line-height: var(--confirmation-title-line-height);
57
- font-weight: var(--confirmation-title-font-weight);
58
- font-family: var(--confirmation-title-font-family);
59
- color: var(--confirmation-title-color);
60
- font-feature-settings: var(--confirmation-title-font-feature-settings);
61
-
62
- margin-bottom: var(--gap-2xl);
63
- color: var(--confirmation-title-color);
64
- }
65
- .errorText {
66
- font-size: var(--confirmation-text-font-size);
67
- line-height: var(--confirmation-text-line-height);
68
- font-weight: var(--confirmation-text-font-weight);
69
- font-family: var(--confirmation-text-font-family);
70
- color: var(--confirmation-text-color);
71
-
72
- margin-bottom: var(--gap-2xl);
73
- color: var(--confirmation-text-color);
74
- }
75
- .phoneHintWrap {
76
- display: flex;
77
- flex-direction: column;
78
- align-items: flex-start;
79
- }
80
- .phoneHintText {
81
- font-size: var(--confirmation-text-font-size);
82
- line-height: var(--confirmation-text-line-height);
83
- font-weight: var(--confirmation-text-font-weight);
84
- font-family: var(--confirmation-text-font-family);
85
- color: var(--confirmation-text-color);
86
-
87
- margin-bottom: var(--gap-xl);
88
- color: var(--confirmation-text-color);
89
- }
90
- .phonesWrap {
91
31
  font-size: var(--confirmation-text-font-size);
92
32
  line-height: var(--confirmation-text-line-height);
93
33
  font-weight: var(--confirmation-text-font-weight);
@@ -96,23 +36,11 @@
96
36
 
97
37
  display: flex;
98
38
  flex-direction: column;
99
- margin-bottom: var(--gap-4xl);
100
- }
101
- .phoneWrap {
102
- margin-bottom: var(--gap-xs)
103
- }
104
- .phoneWrap:last-child {
105
- margin-bottom: 0;
106
- }
107
- .phoneDescription {
108
- color: var(--confirmation-text-color);
39
+ width: 100%;
40
+ max-width: 400px;
41
+ margin: 0 auto;
109
42
  }
110
- .component.center {
43
+ .center {
44
+ align-items: center;
111
45
  text-align: center;
112
46
  }
113
- .center .phoneHintWrap {
114
- align-items: center;
115
- }
116
- .center .error {
117
- align-items: center;
118
- }
@@ -0,0 +1,130 @@
1
+ import { ComponentType, ReactNode } from 'react';
2
+ type ConfirmationProps = {
3
+ /**
4
+ * Экран компонента
5
+ */
6
+ screen: ConfirmationScreen | string;
7
+ /**
8
+ * Состояние компонента
9
+ */
10
+ state: ConfirmationState | string;
11
+ /**
12
+ * Позиционирование контента
13
+ */
14
+ alignContent?: 'left' | 'center';
15
+ /**
16
+ * Объект с текстами
17
+ */
18
+ texts?: ConfirmationTexts;
19
+ /**
20
+ * Количество символов, которое можно ввести в поле ввода подписания до того, как произойдет автоотправка
21
+ */
22
+ requiredCharAmount?: number;
23
+ /**
24
+ * Длительность обратного отсчета на кнопке повторного запроса сообщения, в милисекундах
25
+ */
26
+ countdownDuration?: number;
27
+ /**
28
+ * Продолжительность блокировки формы (ms)
29
+ */
30
+ tempBlockDuration?: number;
31
+ /**
32
+ * Номер телефона, на который отправлен код
33
+ */
34
+ phone?: string;
35
+ /**
36
+ * Не осталось попыток ввода кода
37
+ */
38
+ blockSmsRetry?: boolean;
39
+ /**
40
+ * Идентификатор для систем автоматизированного тестирования
41
+ */
42
+ dataTestId?: string;
43
+ /**
44
+ * Сss класс для стилизации общей обёртки
45
+ */
46
+ className?: string;
47
+ /**
48
+ * Функция обновления состояния компонента
49
+ */
50
+ onChangeState: (state: ConfirmationState | string) => void;
51
+ /**
52
+ * Функция обновления состояния компонента
53
+ */
54
+ onChangeScreen: (state: ConfirmationScreen | string) => void;
55
+ /**
56
+ * Обработчик события завершения ввода кода подписания
57
+ */
58
+ onInputFinished: (code: string) => void;
59
+ /**
60
+ * Обработчик события нажатия на кнопку "Запросить код"
61
+ */
62
+ onSmsRetryClick: () => void;
63
+ /**
64
+ * Клик по кнопке "Понятно" на экране фатальной ошибки
65
+ */
66
+ onFatalErrorOkButtonClick?: () => void;
67
+ /**
68
+ * Временная блокировка формы закончилась
69
+ */
70
+ onTempBlockFinished?: () => void;
71
+ /**
72
+ * Возввращает объект, где ключ - название экрана (screen), значение - компонент для экрана
73
+ */
74
+ getScreensMap?: (defaulScreensMap: ScreensMap) => ScreensMap;
75
+ };
76
+ type TConfirmationContext = Required<Pick<ConfirmationProps, 'alignContent' | 'texts' | 'state' | 'screen' | 'requiredCharAmount' | 'onInputFinished' | 'countdownDuration' | 'onChangeState' | 'onSmsRetryClick' | 'onChangeScreen' | 'onFatalErrorOkButtonClick' | 'tempBlockDuration'>> & Pick<ConfirmationProps, 'phone' | 'blockSmsRetry' | 'onTempBlockFinished'> & {
77
+ timeLeft: number;
78
+ };
79
+ type ConfirmationTexts = {
80
+ /**
81
+ * Экран INITIAL
82
+ */
83
+ title?: ReactNode;
84
+ codeError?: string;
85
+ codeChecking?: string;
86
+ codeSending?: string;
87
+ codeSended?: string;
88
+ buttonRetry?: string;
89
+ linkToHint?: string;
90
+ noAttemptsLeft?: string;
91
+ countdown?: string;
92
+ /**
93
+ * Экран HINT
94
+ */
95
+ hintButton?: string;
96
+ /**
97
+ * Экран FATAL_ERROR
98
+ */
99
+ fatalErrorTitle?: ReactNode;
100
+ fatalErrorDescription?: ReactNode;
101
+ fatalErrorButton?: string;
102
+ /**
103
+ * Экран TEMP_BLOCK
104
+ */
105
+ tempBlockTitle?: ReactNode;
106
+ tempBlockDescription?: ReactNode;
107
+ };
108
+ type ConfirmationScreen = 'INITIAL' | 'HINT' | 'FATAL_ERROR' | 'TEMP_BLOCK';
109
+ type ConfirmationState = 'INITIAL' | 'CODE_CHECKING' | 'CODE_SENDING' | 'CODE_ERROR';
110
+ type ScreensMap = {
111
+ [key: string]: ComponentType;
112
+ };
113
+ declare const defaultTexts: {
114
+ title: string;
115
+ codeError: string;
116
+ codeChecking: string;
117
+ codeSending: string;
118
+ buttonRetry: string;
119
+ linkToHint: string;
120
+ hintButton: string;
121
+ noAttemptsLeft: string;
122
+ fatalErrorTitle: string;
123
+ fatalErrorDescription: string;
124
+ fatalErrorButton: string;
125
+ tempBlockTitle: string;
126
+ tempBlockDescription: string;
127
+ codeSended: string;
128
+ countdown: string;
129
+ };
130
+ export { ConfirmationProps, TConfirmationContext, ConfirmationTexts, ConfirmationScreen, ConfirmationState, ScreensMap, defaultTexts };
@@ -0,0 +1,23 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var defaultTexts = {
6
+ title: 'Введите код из\xa0сообщения',
7
+ codeError: 'Код введён неверно',
8
+ codeChecking: '',
9
+ codeSending: '',
10
+ buttonRetry: 'Запросить код повторно',
11
+ linkToHint: 'Не\xa0приходит сообщение?',
12
+ hintButton: 'Вернуться к\xa0вводу кода',
13
+ noAttemptsLeft: 'Не\xa0осталось попыток запроса кода',
14
+ fatalErrorTitle: 'Ввести код больше нельзя',
15
+ fatalErrorDescription: 'Вы\xa0ввели код неверно более 5\xa0раз. В\xa0целях безопасности мы\xa0ограничили дальнейший ввод.',
16
+ fatalErrorButton: 'Понятно',
17
+ tempBlockTitle: 'Превышено количество попыток запроса кода',
18
+ tempBlockDescription: 'Повторное подтверждение кодом будет возможно через 24\xa0часа',
19
+ codeSended: 'Код выслан',
20
+ countdown: 'Запросить повторно можно через',
21
+ };
22
+
23
+ exports.defaultTexts = defaultTexts;
@@ -0,0 +1,30 @@
1
+ /// <reference types="react" />
2
+ import { ConfirmationProps } from "./types";
3
+ /**
4
+ * Форматирование миллисекунд в hh:mm:ss.
5
+ *
6
+ * @param {Number} ms миллисекунды
7
+ * @returns {String} время в формате mm:ss
8
+ */
9
+ declare function formatMsAsMinutes(ms: number): string;
10
+ type UseCountdown = (countdownDuration: number, tick?: number) => [number, () => void, () => void];
11
+ /**
12
+ * Возвращает время, которое осталось до истечения таймера в ms
13
+ */
14
+ declare const useCountdown: UseCountdown;
15
+ declare const ONE_DAY: number;
16
+ declare const ONE_MINUTE: number;
17
+ type UseConfirmationParams = {
18
+ state?: ConfirmationProps['state'];
19
+ screen?: ConfirmationProps['screen'];
20
+ blockSmsRetry?: ConfirmationProps['blockSmsRetry'];
21
+ };
22
+ declare const useConfirmation: ({ state, screen, blockSmsRetry }?: UseConfirmationParams) => {
23
+ confirmationState: string;
24
+ confirmationScreen: string;
25
+ confirmationBlockSmsRetry: boolean;
26
+ setConfirmationState: import("react").Dispatch<import("react").SetStateAction<string>>;
27
+ setConfirmationScreen: import("react").Dispatch<import("react").SetStateAction<string>>;
28
+ setConfirmationBlockSmsRetry: import("react").Dispatch<import("react").SetStateAction<boolean>>;
29
+ };
30
+ export { formatMsAsMinutes, useCountdown, ONE_DAY, ONE_MINUTE, useConfirmation };
@@ -0,0 +1,84 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var React = require('react');
6
+
7
+ /**
8
+ * Форматирование миллисекунд в hh:mm:ss.
9
+ *
10
+ * @param {Number} ms миллисекунды
11
+ * @returns {String} время в формате mm:ss
12
+ */
13
+ function formatMsAsMinutes(ms) {
14
+ var totalSeconds = Math.ceil(ms / 1000);
15
+ var totalMinutes = Math.floor(totalSeconds / 60);
16
+ var totalHours = Math.floor(totalMinutes / 60);
17
+ var seconds = totalSeconds % 60;
18
+ var paddedSeconds = ("00" + seconds).slice(-2);
19
+ if (totalHours > 0) {
20
+ var minutes = totalMinutes % 60;
21
+ var paddedMinutes_1 = ("00" + minutes).slice(-2);
22
+ var paddedHours = ("00" + totalHours).slice(-2);
23
+ return paddedHours + ":" + paddedMinutes_1 + ":" + paddedSeconds;
24
+ }
25
+ var paddedMinutes = ("00" + totalMinutes).slice(-2);
26
+ return paddedMinutes + ":" + paddedSeconds;
27
+ }
28
+ /**
29
+ * Возвращает время, которое осталось до истечения таймера в ms
30
+ */
31
+ var useCountdown = function (countdownDuration, tick) {
32
+ if (tick === void 0) { tick = 1000; }
33
+ var timerId = React.useRef(0);
34
+ var start = React.useRef(0);
35
+ var _a = React.useState(0), timePassed = _a[0], setTimePassed = _a[1];
36
+ var stopTimer = React.useCallback(function () {
37
+ window.clearInterval(timerId.current);
38
+ }, []);
39
+ var updateProgress = React.useCallback(function () {
40
+ var passed = Date.now() - start.current;
41
+ if (passed >= countdownDuration) {
42
+ stopTimer();
43
+ setTimePassed(countdownDuration);
44
+ }
45
+ else {
46
+ setTimePassed(passed);
47
+ }
48
+ }, [countdownDuration, stopTimer]);
49
+ var startTimer = React.useCallback(function () {
50
+ stopTimer();
51
+ start.current = Date.now();
52
+ updateProgress();
53
+ timerId.current = window.setInterval(updateProgress, tick);
54
+ }, [stopTimer, updateProgress, tick]);
55
+ var timeLeft = countdownDuration - timePassed;
56
+ React.useEffect(function () {
57
+ return function () {
58
+ stopTimer();
59
+ };
60
+ }, [stopTimer]);
61
+ return [timeLeft, startTimer, stopTimer];
62
+ };
63
+ var ONE_DAY = 24 * 60 * 60 * 1000;
64
+ var ONE_MINUTE = 60 * 1000;
65
+ var useConfirmation = function (_a) {
66
+ var _b = _a === void 0 ? {} : _a, state = _b.state, screen = _b.screen, blockSmsRetry = _b.blockSmsRetry;
67
+ var _c = React.useState(state !== null && state !== void 0 ? state : 'INITIAL'), confirmationState = _c[0], setConfirmationState = _c[1];
68
+ var _d = React.useState(screen !== null && screen !== void 0 ? screen : 'INITIAL'), confirmationScreen = _d[0], setConfirmationScreen = _d[1];
69
+ var _e = React.useState(blockSmsRetry !== null && blockSmsRetry !== void 0 ? blockSmsRetry : false), confirmationBlockSmsRetry = _e[0], setConfirmationBlockSmsRetry = _e[1];
70
+ return {
71
+ confirmationState: confirmationState,
72
+ confirmationScreen: confirmationScreen,
73
+ confirmationBlockSmsRetry: confirmationBlockSmsRetry,
74
+ setConfirmationState: setConfirmationState,
75
+ setConfirmationScreen: setConfirmationScreen,
76
+ setConfirmationBlockSmsRetry: setConfirmationBlockSmsRetry,
77
+ };
78
+ };
79
+
80
+ exports.ONE_DAY = ONE_DAY;
81
+ exports.ONE_MINUTE = ONE_MINUTE;
82
+ exports.formatMsAsMinutes = formatMsAsMinutes;
83
+ exports.useConfirmation = useConfirmation;
84
+ exports.useCountdown = useCountdown;
@@ -1,164 +1,4 @@
1
- /// <reference types="react" />
2
- import React from 'react';
3
- import { ReactNode } from "react";
4
- type ContentAlign = 'left' | 'center';
5
- type ConfirmationProps = {
6
- /**
7
- * Значение поля ввода
8
- */
9
- code: string;
10
- /**
11
- * Флаг состояния обработки введенного кода.
12
- */
13
- codeChecking?: boolean;
14
- /**
15
- * Флаг состояния отправки кода.
16
- */
17
- codeSending?: boolean;
18
- /**
19
- * Состояние ошибки подписания
20
- */
21
- error?: boolean;
22
- /**
23
- * Состояние ошибки лимитов - превышено кол-во попыток ввода или запросов кода
24
- */
25
- errorOverlimit?: boolean;
26
- /**
27
- * Состояние критической ошибки лимитов - превышены все лимиты и попытки, пользователя блокируют
28
- */
29
- errorOverlimitIsFatal?: boolean;
30
- /**
31
- * Текст ошибки подписания
32
- */
33
- errorText?: string;
34
- /**
35
- * Дополнительный контент
36
- */
37
- additionalContent?: ReactNode;
38
- /**
39
- * Флаг критичности ошибки подписания.
40
- * Если true - ошибка подписания рисуется на экране без поля ввода, но с кнопкой "Запросить код"
41
- * Если false - ошибка подписания рисуется под полем ввода кода
42
- */
43
- errorIsFatal?: boolean;
44
- /**
45
- * Дополнительный класс
46
- */
47
- className?: string;
48
- /**
49
- * Номер телефона, на который отправляется сообщение.
50
- */
51
- phone?: string;
52
- /**
53
- * Управление необходимостью маскировать номер телефона
54
- */
55
- hasPhoneMask?: boolean;
56
- /**
57
- * Количество символов, которое можно ввести в поле ввода подписания до того, как произойдет автоотправка
58
- */
59
- requiredCharAmount?: number;
60
- /**
61
- * Управление отображением таймера с кнопкой "Запросить код"
62
- */
63
- hasSmsCountdown?: boolean;
64
- /**
65
- * Длительность обратного отсчета на кнопке повторного запроса сообщения, в милисекундах
66
- */
67
- countdownDuration?: number;
68
- /**
69
- * Заголовок экрана подписания
70
- */
71
- signTitle?: string | React.ReactNode;
72
- /**
73
- * Заголовок экрана ошибки лимитов
74
- */
75
- overlimitTitle?: string;
76
- /**
77
- * Текстовое описание блокировки формы при превышении лимитов
78
- */
79
- overlimitText?: string;
80
- /**
81
- * Длительно блокировки при превышении лимитов, в милисекундах
82
- */
83
- overlimitCountdownDuration?: number;
84
- /**
85
- * Заголовок экрана блокирующей ошибки
86
- */
87
- errorTitle?: string;
88
- /**
89
- * Идентификатор для систем автоматизированного тестирования
90
- */
91
- dataTestId?: string;
92
- /**
93
- * Текст лоадера при проверке кода
94
- */
95
- codeCheckingText?: string;
96
- /**
97
- * Текст лоадера при отправке кода
98
- */
99
- codeSendingText?: string;
100
- /**
101
- * Текст кнопки при блокирующей ошибке
102
- */
103
- buttonErrorText?: string;
104
- /**
105
- * Текст кнопки "Вернуться назад" на экране помощи
106
- */
107
- buttonReturnText?: string;
108
- /**
109
- * Текст кнопки "Запросить новый код"
110
- */
111
- buttonRetryText?: string;
112
- /**
113
- * Позиционирование контента
114
- */
115
- alignContent?: ContentAlign;
116
- /**
117
- * Сообщение, если не осталось попыток ввода кода.
118
- * Кнопка повторной отправки смс при этом скрывается.
119
- */
120
- noAttemptsLeftMessage?: string;
121
- /**
122
- * Кастомный контент для компонента Countdown
123
- */
124
- countdownContent?: ReactNode;
125
- /**
126
- * Обработчик события завершения ввода кода подписания
127
- */
128
- onInputFinished: ({ code }: {
129
- code: string;
130
- }) => void;
131
- /**
132
- * Обработчик события изменения значения поля ввода кода подписания
133
- */
134
- onInputChange: ({ code }: {
135
- code: string;
136
- }) => void;
137
- /**
138
- * Обработчик события нажатия на кнопку "Запросить код"
139
- */
140
- onSmsRetryClick: () => void;
141
- /**
142
- * Обработчик события нажатия на кнопку "Запросить код" в блоке превышение лимитов
143
- */
144
- onOverlimitSmsRetryClick?: () => void;
145
- /**
146
- * Обработчик события завершения обратного отсчета для повторного запроса сообщения
147
- */
148
- onCountdownFinished?: () => void;
149
- /**
150
- * Обработчик события завершения обратного отсчета для блокировки формы
151
- */
152
- onOverlimitCountdownFinished?: () => void;
153
- /**
154
- * Обработчик события нажатия на ссылку "не приходит сообщение?"
155
- */
156
- onSmsHintLinkClick?: () => void;
157
- /**
158
- * Обработчик события нажатия на кнопку buttonErrorText (по дефолту "Понятно"), которая появляется при критической ошибке.
159
- * Если не передан, то вызывается onSmsRetryClick
160
- */
161
- onActionWithFatalError?: () => void;
162
- };
163
- declare const Confirmation: React.ForwardRefExoticComponent<ConfirmationProps & React.RefAttributes<HTMLDivElement>>;
164
- export { ContentAlign, ConfirmationProps, Confirmation };
1
+ import { FC } from 'react';
2
+ import { ConfirmationProps } from "./types";
3
+ declare const Confirmation: FC<ConfirmationProps>;
4
+ export { Confirmation };