@salutejs/plasma-new-hope 0.325.0 → 0.326.0-canary.1973.15343275842.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 (177) hide show
  1. package/cjs/components/CodeInput/CodeInput.css +14 -0
  2. package/cjs/components/CodeInput/CodeInput.js +292 -0
  3. package/cjs/components/CodeInput/CodeInput.js.map +1 -0
  4. package/cjs/components/CodeInput/CodeInput.styles.js +78 -0
  5. package/cjs/components/CodeInput/CodeInput.styles.js.map +1 -0
  6. package/cjs/components/CodeInput/CodeInput.styles_29ush3.css +8 -0
  7. package/cjs/components/CodeInput/CodeInput.tokens.js +72 -0
  8. package/cjs/components/CodeInput/CodeInput.tokens.js.map +1 -0
  9. package/cjs/components/CodeInput/utils/constants.js +14 -0
  10. package/cjs/components/CodeInput/utils/constants.js.map +1 -0
  11. package/cjs/components/CodeInput/utils/handleCodeError.js +55 -0
  12. package/cjs/components/CodeInput/utils/handleCodeError.js.map +1 -0
  13. package/cjs/components/CodeInput/utils/handleItemError.js +53 -0
  14. package/cjs/components/CodeInput/utils/handleItemError.js.map +1 -0
  15. package/cjs/components/CodeInput/utils/initialValuesHelper.js +33 -0
  16. package/cjs/components/CodeInput/utils/initialValuesHelper.js.map +1 -0
  17. package/cjs/components/CodeInput/variations/_disabled/base.js +9 -0
  18. package/cjs/components/CodeInput/variations/_disabled/base.js.map +1 -0
  19. package/cjs/components/CodeInput/variations/_disabled/base_vkh53h.css +1 -0
  20. package/cjs/components/CodeInput/variations/_size/base.js +9 -0
  21. package/cjs/components/CodeInput/variations/_size/base.js.map +1 -0
  22. package/cjs/components/CodeInput/variations/_size/base_fhdb3l.css +1 -0
  23. package/cjs/components/CodeInput/variations/_view/base.js +9 -0
  24. package/cjs/components/CodeInput/variations/_view/base.js.map +1 -0
  25. package/cjs/components/CodeInput/variations/_view/base_lzwhmf.css +1 -0
  26. package/cjs/index.css +15 -0
  27. package/cjs/index.js +6 -0
  28. package/cjs/index.js.map +1 -1
  29. package/emotion/cjs/components/CodeInput/CodeInput.js +301 -0
  30. package/emotion/cjs/components/CodeInput/CodeInput.styles.js +76 -0
  31. package/emotion/cjs/components/CodeInput/CodeInput.tokens.js +70 -0
  32. package/emotion/cjs/components/CodeInput/CodeInput.types.js +5 -0
  33. package/emotion/cjs/components/CodeInput/index.js +31 -0
  34. package/emotion/cjs/components/CodeInput/utils/constants.js +12 -0
  35. package/emotion/cjs/components/CodeInput/utils/handleCodeError.js +58 -0
  36. package/emotion/cjs/components/CodeInput/utils/handleItemError.js +56 -0
  37. package/emotion/cjs/components/CodeInput/utils/index.js +38 -0
  38. package/emotion/cjs/components/CodeInput/utils/initialValuesHelper.js +30 -0
  39. package/emotion/cjs/components/CodeInput/variations/_disabled/base.js +9 -0
  40. package/emotion/cjs/components/CodeInput/variations/_disabled/tokens.json +4 -0
  41. package/emotion/cjs/components/CodeInput/variations/_size/base.js +10 -0
  42. package/emotion/cjs/components/CodeInput/variations/_size/tokens.json +19 -0
  43. package/emotion/cjs/components/CodeInput/variations/_view/base.js +10 -0
  44. package/emotion/cjs/components/CodeInput/variations/_view/tokens.json +1 -0
  45. package/emotion/cjs/examples/plasma_b2c/components/CodeInput/CodeInput.config.js +27 -0
  46. package/emotion/cjs/examples/plasma_b2c/components/CodeInput/CodeInput.js +11 -0
  47. package/emotion/cjs/examples/plasma_b2c/components/CodeInput/CodeInput.stories.tsx +107 -0
  48. package/emotion/cjs/examples/plasma_web/components/CodeInput/CodeInput.config.js +27 -0
  49. package/emotion/cjs/examples/plasma_web/components/CodeInput/CodeInput.js +11 -0
  50. package/emotion/cjs/examples/plasma_web/components/CodeInput/CodeInput.stories.tsx +107 -0
  51. package/emotion/cjs/index.js +11 -0
  52. package/emotion/es/components/CodeInput/CodeInput.js +292 -0
  53. package/emotion/es/components/CodeInput/CodeInput.styles.js +69 -0
  54. package/emotion/es/components/CodeInput/CodeInput.tokens.js +64 -0
  55. package/emotion/es/components/CodeInput/CodeInput.types.js +1 -0
  56. package/emotion/es/components/CodeInput/index.js +2 -0
  57. package/emotion/es/components/CodeInput/utils/constants.js +6 -0
  58. package/emotion/es/components/CodeInput/utils/handleCodeError.js +52 -0
  59. package/emotion/es/components/CodeInput/utils/handleItemError.js +50 -0
  60. package/emotion/es/components/CodeInput/utils/index.js +3 -0
  61. package/emotion/es/components/CodeInput/utils/initialValuesHelper.js +24 -0
  62. package/emotion/es/components/CodeInput/variations/_disabled/base.js +3 -0
  63. package/emotion/es/components/CodeInput/variations/_disabled/tokens.json +4 -0
  64. package/emotion/es/components/CodeInput/variations/_size/base.js +4 -0
  65. package/emotion/es/components/CodeInput/variations/_size/tokens.json +19 -0
  66. package/emotion/es/components/CodeInput/variations/_view/base.js +4 -0
  67. package/emotion/es/components/CodeInput/variations/_view/tokens.json +1 -0
  68. package/emotion/es/examples/plasma_b2c/components/CodeInput/CodeInput.config.js +21 -0
  69. package/emotion/es/examples/plasma_b2c/components/CodeInput/CodeInput.js +5 -0
  70. package/emotion/es/examples/plasma_b2c/components/CodeInput/CodeInput.stories.tsx +107 -0
  71. package/emotion/es/examples/plasma_web/components/CodeInput/CodeInput.config.js +21 -0
  72. package/emotion/es/examples/plasma_web/components/CodeInput/CodeInput.js +5 -0
  73. package/emotion/es/examples/plasma_web/components/CodeInput/CodeInput.stories.tsx +107 -0
  74. package/emotion/es/index.js +1 -0
  75. package/es/components/CodeInput/CodeInput.css +14 -0
  76. package/es/components/CodeInput/CodeInput.js +282 -0
  77. package/es/components/CodeInput/CodeInput.js.map +1 -0
  78. package/es/components/CodeInput/CodeInput.styles.js +67 -0
  79. package/es/components/CodeInput/CodeInput.styles.js.map +1 -0
  80. package/es/components/CodeInput/CodeInput.styles_29ush3.css +8 -0
  81. package/es/components/CodeInput/CodeInput.tokens.js +67 -0
  82. package/es/components/CodeInput/CodeInput.tokens.js.map +1 -0
  83. package/es/components/CodeInput/utils/constants.js +7 -0
  84. package/es/components/CodeInput/utils/constants.js.map +1 -0
  85. package/es/components/CodeInput/utils/handleCodeError.js +51 -0
  86. package/es/components/CodeInput/utils/handleCodeError.js.map +1 -0
  87. package/es/components/CodeInput/utils/handleItemError.js +49 -0
  88. package/es/components/CodeInput/utils/handleItemError.js.map +1 -0
  89. package/es/components/CodeInput/utils/initialValuesHelper.js +27 -0
  90. package/es/components/CodeInput/utils/initialValuesHelper.js.map +1 -0
  91. package/es/components/CodeInput/variations/_disabled/base.js +5 -0
  92. package/es/components/CodeInput/variations/_disabled/base.js.map +1 -0
  93. package/es/components/CodeInput/variations/_disabled/base_vkh53h.css +1 -0
  94. package/es/components/CodeInput/variations/_size/base.js +5 -0
  95. package/es/components/CodeInput/variations/_size/base.js.map +1 -0
  96. package/es/components/CodeInput/variations/_size/base_fhdb3l.css +1 -0
  97. package/es/components/CodeInput/variations/_view/base.js +5 -0
  98. package/es/components/CodeInput/variations/_view/base.js.map +1 -0
  99. package/es/components/CodeInput/variations/_view/base_lzwhmf.css +1 -0
  100. package/es/index.css +15 -0
  101. package/es/index.js +2 -0
  102. package/es/index.js.map +1 -1
  103. package/package.json +2 -2
  104. package/styled-components/cjs/components/CodeInput/CodeInput.js +301 -0
  105. package/styled-components/cjs/components/CodeInput/CodeInput.styles.js +47 -0
  106. package/styled-components/cjs/components/CodeInput/CodeInput.tokens.js +70 -0
  107. package/styled-components/cjs/components/CodeInput/CodeInput.types.js +5 -0
  108. package/styled-components/cjs/components/CodeInput/index.js +31 -0
  109. package/styled-components/cjs/components/CodeInput/utils/constants.js +12 -0
  110. package/styled-components/cjs/components/CodeInput/utils/handleCodeError.js +58 -0
  111. package/styled-components/cjs/components/CodeInput/utils/handleItemError.js +56 -0
  112. package/styled-components/cjs/components/CodeInput/utils/index.js +38 -0
  113. package/styled-components/cjs/components/CodeInput/utils/initialValuesHelper.js +30 -0
  114. package/styled-components/cjs/components/CodeInput/variations/_disabled/base.js +9 -0
  115. package/styled-components/cjs/components/CodeInput/variations/_disabled/tokens.json +4 -0
  116. package/styled-components/cjs/components/CodeInput/variations/_size/base.js +10 -0
  117. package/styled-components/cjs/components/CodeInput/variations/_size/tokens.json +19 -0
  118. package/styled-components/cjs/components/CodeInput/variations/_view/base.js +10 -0
  119. package/styled-components/cjs/components/CodeInput/variations/_view/tokens.json +1 -0
  120. package/styled-components/cjs/examples/plasma_b2c/components/CodeInput/CodeInput.config.js +27 -0
  121. package/styled-components/cjs/examples/plasma_b2c/components/CodeInput/CodeInput.js +11 -0
  122. package/styled-components/cjs/examples/plasma_b2c/components/CodeInput/CodeInput.stories.tsx +107 -0
  123. package/styled-components/cjs/examples/plasma_web/components/CodeInput/CodeInput.config.js +27 -0
  124. package/styled-components/cjs/examples/plasma_web/components/CodeInput/CodeInput.js +11 -0
  125. package/styled-components/cjs/examples/plasma_web/components/CodeInput/CodeInput.stories.tsx +107 -0
  126. package/styled-components/cjs/index.js +11 -0
  127. package/styled-components/es/components/CodeInput/CodeInput.js +292 -0
  128. package/styled-components/es/components/CodeInput/CodeInput.styles.js +39 -0
  129. package/styled-components/es/components/CodeInput/CodeInput.tokens.js +64 -0
  130. package/styled-components/es/components/CodeInput/CodeInput.types.js +1 -0
  131. package/styled-components/es/components/CodeInput/index.js +2 -0
  132. package/styled-components/es/components/CodeInput/utils/constants.js +6 -0
  133. package/styled-components/es/components/CodeInput/utils/handleCodeError.js +52 -0
  134. package/styled-components/es/components/CodeInput/utils/handleItemError.js +50 -0
  135. package/styled-components/es/components/CodeInput/utils/index.js +3 -0
  136. package/styled-components/es/components/CodeInput/utils/initialValuesHelper.js +24 -0
  137. package/styled-components/es/components/CodeInput/variations/_disabled/base.js +3 -0
  138. package/styled-components/es/components/CodeInput/variations/_disabled/tokens.json +4 -0
  139. package/styled-components/es/components/CodeInput/variations/_size/base.js +4 -0
  140. package/styled-components/es/components/CodeInput/variations/_size/tokens.json +19 -0
  141. package/styled-components/es/components/CodeInput/variations/_view/base.js +4 -0
  142. package/styled-components/es/components/CodeInput/variations/_view/tokens.json +1 -0
  143. package/styled-components/es/examples/plasma_b2c/components/CodeInput/CodeInput.config.js +21 -0
  144. package/styled-components/es/examples/plasma_b2c/components/CodeInput/CodeInput.js +5 -0
  145. package/styled-components/es/examples/plasma_b2c/components/CodeInput/CodeInput.stories.tsx +107 -0
  146. package/styled-components/es/examples/plasma_web/components/CodeInput/CodeInput.config.js +21 -0
  147. package/styled-components/es/examples/plasma_web/components/CodeInput/CodeInput.js +5 -0
  148. package/styled-components/es/examples/plasma_web/components/CodeInput/CodeInput.stories.tsx +107 -0
  149. package/styled-components/es/index.js +1 -0
  150. package/types/components/CodeInput/CodeInput.d.ts +67 -0
  151. package/types/components/CodeInput/CodeInput.d.ts.map +1 -0
  152. package/types/components/CodeInput/CodeInput.styles.d.ts +17 -0
  153. package/types/components/CodeInput/CodeInput.styles.d.ts.map +1 -0
  154. package/types/components/CodeInput/CodeInput.tokens.d.ts +65 -0
  155. package/types/components/CodeInput/CodeInput.tokens.d.ts.map +1 -0
  156. package/types/components/CodeInput/CodeInput.types.d.ts +96 -0
  157. package/types/components/CodeInput/CodeInput.types.d.ts.map +1 -0
  158. package/types/components/CodeInput/index.d.ts +3 -0
  159. package/types/components/CodeInput/index.d.ts.map +1 -0
  160. package/types/components/CodeInput/utils/constants.d.ts +7 -0
  161. package/types/components/CodeInput/utils/constants.d.ts.map +1 -0
  162. package/types/components/CodeInput/utils/handleCodeError.d.ts +15 -0
  163. package/types/components/CodeInput/utils/handleCodeError.d.ts.map +1 -0
  164. package/types/components/CodeInput/utils/handleItemError.d.ts +14 -0
  165. package/types/components/CodeInput/utils/handleItemError.d.ts.map +1 -0
  166. package/types/components/CodeInput/utils/index.d.ts +4 -0
  167. package/types/components/CodeInput/utils/index.d.ts.map +1 -0
  168. package/types/components/CodeInput/utils/initialValuesHelper.d.ts +4 -0
  169. package/types/components/CodeInput/utils/initialValuesHelper.d.ts.map +1 -0
  170. package/types/components/CodeInput/variations/_disabled/base.d.ts +2 -0
  171. package/types/components/CodeInput/variations/_disabled/base.d.ts.map +1 -0
  172. package/types/components/CodeInput/variations/_size/base.d.ts +2 -0
  173. package/types/components/CodeInput/variations/_size/base.d.ts.map +1 -0
  174. package/types/components/CodeInput/variations/_view/base.d.ts +2 -0
  175. package/types/components/CodeInput/variations/_view/base.d.ts.map +1 -0
  176. package/types/index.d.ts +1 -0
  177. package/types/index.d.ts.map +1 -1
@@ -0,0 +1,107 @@
1
+ import React, { ComponentProps, useState } from 'react';
2
+ import type { StoryObj, Meta } from '@storybook/react';
3
+ import { action } from '@storybook/addon-actions';
4
+ import { getConfigVariations } from '@salutejs/plasma-sb-utils';
5
+
6
+ import { WithTheme } from '../../../_helpers';
7
+
8
+ import { CodeInput } from './CodeInput';
9
+ import { config } from './CodeInput.config';
10
+
11
+ const onChange = action('onChange');
12
+ const onFullCodeEnter = action('onFullCodeEnter');
13
+
14
+ const { views, sizes } = getConfigVariations(config);
15
+ const codeLengths = [4, 5, 6];
16
+ const captionAlignVariants = ['left', 'center'];
17
+ const itemErrorBehaviorVariants = ['remove-symbol', 'keep', 'forbid-enter'];
18
+ const codeErrorBehaviorVariants = ['remove-code', 'keep'];
19
+
20
+ const meta: Meta<typeof CodeInput> = {
21
+ title: 'web/Data Entry/CodeInput',
22
+ component: CodeInput,
23
+ decorators: [WithTheme],
24
+ argTypes: {
25
+ view: {
26
+ options: views,
27
+ control: {
28
+ type: 'select',
29
+ },
30
+ },
31
+ size: {
32
+ options: sizes,
33
+ control: {
34
+ type: 'inline-radio',
35
+ },
36
+ },
37
+ screen: {
38
+ options: ['large', 'medium', 'small'],
39
+ control: {
40
+ type: 'inline-radio',
41
+ },
42
+ },
43
+ captionAlign: {
44
+ options: captionAlignVariants,
45
+ control: {
46
+ type: 'inline-radio',
47
+ },
48
+ },
49
+ codeLength: {
50
+ options: codeLengths,
51
+ control: {
52
+ type: 'inline-radio',
53
+ },
54
+ },
55
+ itemErrorBehavior: {
56
+ options: itemErrorBehaviorVariants,
57
+ control: {
58
+ type: 'inline-radio',
59
+ },
60
+ },
61
+ codeErrorBehavior: {
62
+ options: codeErrorBehaviorVariants,
63
+ control: {
64
+ type: 'inline-radio',
65
+ },
66
+ },
67
+ },
68
+ parameters: {
69
+ controls: {
70
+ exclude: ['view'],
71
+ },
72
+ },
73
+ };
74
+
75
+ export default meta;
76
+
77
+ type StoryPropsDefault = ComponentProps<typeof CodeInput>;
78
+
79
+ const StoryDefault = (args: StoryPropsDefault) => {
80
+ const [value, setValue] = useState('');
81
+
82
+ const handleChange = (newValue: string) => {
83
+ setValue(newValue);
84
+ onChange(newValue);
85
+ };
86
+
87
+ return <CodeInput {...args} value={value} onChange={handleChange} onFullCodeEnter={onFullCodeEnter} />;
88
+ };
89
+
90
+ export const Default: StoryObj<StoryPropsDefault> = {
91
+ args: {
92
+ view: 'default',
93
+ size: 'm',
94
+ codeLength: 6,
95
+ caption: 'Caption',
96
+ captionAlign: 'center',
97
+ width: '',
98
+ screen: 'medium',
99
+ isError: false,
100
+ itemErrorBehavior: 'remove-symbol',
101
+ codeErrorBehavior: 'remove-code',
102
+ autoFocus: true,
103
+ disabled: false,
104
+ hidden: false,
105
+ },
106
+ render: StoryDefault,
107
+ };
@@ -850,6 +850,17 @@ Object.keys(_PaginationDots).forEach(function (key) {
850
850
  }
851
851
  });
852
852
  });
853
+ var _CodeInput = /*#__PURE__*/require("./components/CodeInput");
854
+ Object.keys(_CodeInput).forEach(function (key) {
855
+ if (key === "default" || key === "__esModule") return;
856
+ if (key in exports && exports[key] === _CodeInput[key]) return;
857
+ Object.defineProperty(exports, key, {
858
+ enumerable: true,
859
+ get: function get() {
860
+ return _CodeInput[key];
861
+ }
862
+ });
863
+ });
853
864
  var _CodeField = /*#__PURE__*/require("./components/CodeField");
854
865
  Object.keys(_CodeField).forEach(function (key) {
855
866
  if (key === "default" || key === "__esModule") return;
@@ -0,0 +1,292 @@
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ var _Separator;
3
+ var _excluded = ["className", "value", "placeholder", "autoFocus", "codeLength", "caption", "captionAlign", "width", "view", "size", "screen", "hidden", "disabled", "isError", "allowedSymbols", "itemErrorBehavior", "codeErrorBehavior", "autoComplete", "setIsError", "onChange", "onFullCodeEnter"];
4
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
5
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
6
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
7
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
8
+ function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
9
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
10
+ function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
11
+ function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
12
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
13
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
14
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
15
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
16
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
17
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
18
+ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
19
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
20
+ import React, { forwardRef, Fragment, useCallback, useEffect, useRef, useState } from 'react';
21
+ import cls from 'classnames';
22
+ import { useDidMountEffect } from "../../hooks";
23
+ import { getSizeValueFromProp } from "../../utils";
24
+ import { BACKSPACE_KEY, FORBIDDEN_KEYS, ONLY_DIGITS_PATTERN } from "./utils/constants";
25
+ import { getCodeValue, getFieldPattern, getPlaceholderValue, handleCodeError, handleItemError } from "./utils";
26
+ import { classes } from "./CodeInput.tokens";
27
+ import { base, CaptionWrapper, CodeGroup, CodeWrapper, ItemInput, Separator, ItemWrapper, ItemCircle } from "./CodeInput.styles";
28
+ import { base as viewCSS } from "./variations/_view/base";
29
+ import { base as sizeCSS } from "./variations/_size/base";
30
+ import { base as disabledCSS } from "./variations/_disabled/base";
31
+ export var codeInputRoot = function codeInputRoot(Root) {
32
+ return /*#__PURE__*/forwardRef(function (_ref, ref) {
33
+ var className = _ref.className,
34
+ outerValue = _ref.value,
35
+ placeholder = _ref.placeholder,
36
+ autoFocus = _ref.autoFocus,
37
+ _ref$codeLength = _ref.codeLength,
38
+ codeLength = _ref$codeLength === void 0 ? 6 : _ref$codeLength,
39
+ caption = _ref.caption,
40
+ _ref$captionAlign = _ref.captionAlign,
41
+ captionAlign = _ref$captionAlign === void 0 ? 'left' : _ref$captionAlign,
42
+ width = _ref.width,
43
+ view = _ref.view,
44
+ size = _ref.size,
45
+ _ref$screen = _ref.screen,
46
+ screen = _ref$screen === void 0 ? 'medium' : _ref$screen,
47
+ hidden = _ref.hidden,
48
+ disabled = _ref.disabled,
49
+ isError = _ref.isError,
50
+ _ref$allowedSymbols = _ref.allowedSymbols,
51
+ allowedSymbols = _ref$allowedSymbols === void 0 ? ONLY_DIGITS_PATTERN : _ref$allowedSymbols,
52
+ _ref$itemErrorBehavio = _ref.itemErrorBehavior,
53
+ itemErrorBehavior = _ref$itemErrorBehavio === void 0 ? 'remove-symbol' : _ref$itemErrorBehavio,
54
+ _ref$codeErrorBehavio = _ref.codeErrorBehavior,
55
+ codeErrorBehavior = _ref$codeErrorBehavio === void 0 ? 'remove-code' : _ref$codeErrorBehavio,
56
+ _ref$autoComplete = _ref.autoComplete,
57
+ autoComplete = _ref$autoComplete === void 0 ? 'one-time-code' : _ref$autoComplete,
58
+ setIsError = _ref.setIsError,
59
+ onChange = _ref.onChange,
60
+ onFullCodeEnter = _ref.onFullCodeEnter,
61
+ rest = _objectWithoutProperties(_ref, _excluded);
62
+ var _useState = useState(getCodeValue(codeLength, outerValue || '')),
63
+ _useState2 = _slicedToArray(_useState, 2),
64
+ code = _useState2[0],
65
+ setCode = _useState2[1];
66
+ var _useState3 = useState(code.join('')),
67
+ _useState4 = _slicedToArray(_useState3, 2),
68
+ originalValue = _useState4[0],
69
+ setOriginalValue = _useState4[1];
70
+ var inputRefs = useRef([]);
71
+ var inputContainerRef = useRef(null);
72
+ var captionRef = useRef(null);
73
+ var fieldPattern = getFieldPattern(allowedSymbols);
74
+ var placeholderValue = getPlaceholderValue(codeLength, placeholder);
75
+ var parts = codeLength === 6 ? 2 : 1;
76
+ var screenClass = classes["".concat(screen, "Screen")];
77
+ var widthValue = width ? getSizeValueFromProp(width, 'rem') : undefined;
78
+ var getLastActiveIndex = function getLastActiveIndex() {
79
+ if (code.length && code.length < codeLength) {
80
+ return code.length;
81
+ }
82
+ var lastEmptyIndex = code.findIndex(function (digit) {
83
+ return digit === '';
84
+ });
85
+ return lastEmptyIndex >= 0 ? lastEmptyIndex : codeLength - 1;
86
+ };
87
+ var handleClick = function handleClick() {
88
+ if (disabled) {
89
+ return;
90
+ }
91
+ var lastActiveIndex = getLastActiveIndex();
92
+ if (inputRefs.current[lastActiveIndex]) {
93
+ inputRefs.current[lastActiveIndex].focus();
94
+ }
95
+ };
96
+ var handleOnKeyDown = function handleOnKeyDown(event, index) {
97
+ if (disabled) {
98
+ return;
99
+ }
100
+ var key = event.key;
101
+ if (FORBIDDEN_KEYS.includes(key)) {
102
+ event.preventDefault();
103
+ return;
104
+ }
105
+ if (key === BACKSPACE_KEY) {
106
+ if (index > 0 && code[index] === '') {
107
+ var _inputRefs$current;
108
+ (_inputRefs$current = inputRefs.current[index - 1]) === null || _inputRefs$current === void 0 || _inputRefs$current.focus();
109
+ }
110
+ }
111
+ };
112
+ var codeSetter = function codeSetter(newCode) {
113
+ setCode(newCode);
114
+ setOriginalValue(newCode.join(''));
115
+ if (onChange) {
116
+ onChange(newCode.join(''));
117
+ }
118
+ };
119
+ var handleChange = function handleChange(event, index) {
120
+ var _inputRefs$current$in;
121
+ if (disabled) {
122
+ return;
123
+ }
124
+ var rawSymbol = event.currentTarget.value;
125
+ var symbol = rawSymbol.charAt(rawSymbol.length - 1);
126
+ var newCode = _toConsumableArray(code);
127
+ (_inputRefs$current$in = inputRefs.current[index]) === null || _inputRefs$current$in === void 0 || _inputRefs$current$in.classList.remove(classes.itemError);
128
+ if (isError) {
129
+ var _captionRef$current;
130
+ (_captionRef$current = captionRef.current) === null || _captionRef$current === void 0 || _captionRef$current.classList.remove(classes.captionError);
131
+ if (codeErrorBehavior === 'keep') {
132
+ var _inputContainerRef$cu;
133
+ (_inputContainerRef$cu = inputContainerRef.current) === null || _inputContainerRef$cu === void 0 || _inputContainerRef$cu.classList.remove(classes.codeError, classes.codeErrorAnimation);
134
+ }
135
+ if (setIsError) {
136
+ setIsError(false);
137
+ }
138
+ }
139
+ if (!fieldPattern) {
140
+ newCode[index] = symbol;
141
+ codeSetter(newCode);
142
+ if (symbol && index < codeLength - 1) {
143
+ var _inputRefs$current2;
144
+ (_inputRefs$current2 = inputRefs.current[index + 1]) === null || _inputRefs$current2 === void 0 || _inputRefs$current2.focus();
145
+ }
146
+ return;
147
+ }
148
+ if (!symbol) {
149
+ newCode[index] = '';
150
+ codeSetter(newCode);
151
+ return;
152
+ }
153
+ if (fieldPattern.test(symbol)) {
154
+ newCode[index] = symbol.charAt(symbol.length - 1);
155
+ codeSetter(newCode);
156
+ if (index < codeLength - 1) {
157
+ var _inputRefs$current3;
158
+ (_inputRefs$current3 = inputRefs.current[index + 1]) === null || _inputRefs$current3 === void 0 || _inputRefs$current3.focus();
159
+ }
160
+ } else {
161
+ newCode[index] = symbol.charAt(symbol.length - 1);
162
+ handleItemError({
163
+ currentSymbol: symbol,
164
+ itemErrorBehavior: itemErrorBehavior,
165
+ index: index,
166
+ newCode: newCode,
167
+ inputRefs: inputRefs,
168
+ setCode: setCode,
169
+ codeSetter: codeSetter
170
+ });
171
+ }
172
+ };
173
+ var handlePaste = function handlePaste(event) {
174
+ var _inputRefs$current$ac;
175
+ if (disabled) {
176
+ return;
177
+ }
178
+ event.preventDefault();
179
+ var rawData = event.clipboardData.getData('text/plain');
180
+ var pastedData = (fieldPattern ? rawData.split('').map(function (symb) {
181
+ var _symb$match;
182
+ return ((_symb$match = symb.match(fieldPattern)) === null || _symb$match === void 0 ? void 0 : _symb$match[0]) || '';
183
+ }).filter(Boolean) || [] : rawData.split('')).slice(0, codeLength);
184
+ var activeIndex = Math.min(pastedData.length, codeLength - 1);
185
+ (_inputRefs$current$ac = inputRefs.current[activeIndex]) === null || _inputRefs$current$ac === void 0 || _inputRefs$current$ac.focus();
186
+ codeSetter(pastedData);
187
+ };
188
+ var handleFullCodeEnter = useCallback(function (fullCode) {
189
+ if (onFullCodeEnter) {
190
+ onFullCodeEnter(fullCode);
191
+ }
192
+ }, []);
193
+ useEffect(function () {
194
+ inputRefs.current = inputRefs.current.slice(0, codeLength);
195
+ }, [codeLength]);
196
+ useEffect(function () {
197
+ if (autoFocus && !disabled) {
198
+ var _inputRefs$current$la;
199
+ var lastActiveIndex = getLastActiveIndex();
200
+ (_inputRefs$current$la = inputRefs.current[lastActiveIndex]) === null || _inputRefs$current$la === void 0 || _inputRefs$current$la.focus();
201
+ }
202
+ }, [autoFocus]);
203
+ useDidMountEffect(function () {
204
+ if (handleFullCodeEnter && originalValue.length === codeLength) {
205
+ handleFullCodeEnter(originalValue);
206
+ }
207
+ }, [originalValue, handleFullCodeEnter]);
208
+ useDidMountEffect(function () {
209
+ if (isError) {
210
+ handleCodeError({
211
+ codeLength: codeLength,
212
+ codeErrorBehavior: codeErrorBehavior,
213
+ currentCode: code,
214
+ inputRefs: inputRefs,
215
+ inputContainerRef: inputContainerRef,
216
+ captionRef: captionRef,
217
+ setCode: setCode,
218
+ codeSetter: codeSetter
219
+ });
220
+ }
221
+ }, [isError]);
222
+ return /*#__PURE__*/React.createElement(Root, _extends({
223
+ ref: ref,
224
+ view: view,
225
+ size: size,
226
+ disabled: disabled,
227
+ screen: screen,
228
+ onClick: handleClick,
229
+ className: cls(className, _defineProperty({}, classes.captionAlignLeft, captionAlign === 'left'))
230
+ }, rest), /*#__PURE__*/React.createElement(CodeWrapper, {
231
+ ref: inputContainerRef
232
+ }, _toConsumableArray(Array(parts)).map(function (_, partIndex) {
233
+ return /*#__PURE__*/React.createElement(Fragment, {
234
+ key: partIndex
235
+ }, /*#__PURE__*/React.createElement(CodeGroup, {
236
+ role: "group"
237
+ }, _toConsumableArray(Array(codeLength / parts)).map(function (_, i) {
238
+ var inputCorrectIndex = i + codeLength / parts * partIndex;
239
+ return /*#__PURE__*/React.createElement(ItemWrapper, {
240
+ key: partIndex + i + partIndex * i,
241
+ className: screenClass
242
+ }, /*#__PURE__*/React.createElement(ItemInput, _extends({
243
+ ref: function ref(element) {
244
+ inputRefs.current[inputCorrectIndex] = element;
245
+ },
246
+ className: cls(_defineProperty({}, classes.hoverEnabled, inputCorrectIndex >= originalValue.length)),
247
+ hide: hidden,
248
+ value: code[inputCorrectIndex] || '',
249
+ autoComplete: autoComplete,
250
+ onChange: function onChange(e) {
251
+ handleChange(e, inputCorrectIndex);
252
+ },
253
+ onKeyDown: function onKeyDown(e) {
254
+ handleOnKeyDown(e, inputCorrectIndex);
255
+ },
256
+ onPaste: handlePaste,
257
+ tabIndex: originalValue.length === inputCorrectIndex ? 0 : -1
258
+ }, placeholderValue && {
259
+ placeholder: placeholderValue[inputCorrectIndex]
260
+ })), (!code[inputCorrectIndex] || !!code[inputCorrectIndex] && hidden) && /*#__PURE__*/React.createElement(ItemCircle, {
261
+ className: !!code[inputCorrectIndex] && hidden ? classes.itemCirlceFilled : ''
262
+ }));
263
+ })), partIndex !== parts - 1 && (_Separator || (_Separator = /*#__PURE__*/React.createElement(Separator, null))));
264
+ })), caption && /*#__PURE__*/React.createElement(CaptionWrapper, {
265
+ ref: captionRef,
266
+ captionAlign: captionAlign,
267
+ widthValue: widthValue
268
+ }, caption));
269
+ });
270
+ };
271
+ export var codeInputConfig = {
272
+ name: 'CodeInput',
273
+ tag: 'div',
274
+ layout: codeInputRoot,
275
+ base: base,
276
+ variations: {
277
+ view: {
278
+ css: viewCSS
279
+ },
280
+ size: {
281
+ css: sizeCSS
282
+ },
283
+ disabled: {
284
+ css: disabledCSS,
285
+ attrs: true
286
+ }
287
+ },
288
+ defaults: {
289
+ size: 'm',
290
+ view: 'default'
291
+ }
292
+ };
@@ -0,0 +1,39 @@
1
+ var _templateObject;
2
+ function _taggedTemplateLiteral(e, t) { return t || (t = e.slice(0)), Object.freeze(Object.defineProperties(e, { raw: { value: Object.freeze(t) } })); }
3
+ import { css } from 'styled-components';
4
+ import styled from 'styled-components';
5
+ import { classes, tokens } from "./CodeInput.tokens";
6
+ export var base = /*#__PURE__*/css(_templateObject || (_templateObject = /*#__PURE__*/_taggedTemplateLiteral(["\n display: flex;\n flex-direction: column;\n justify-content: center;\n width: min-content;\n align-items: center;\n\n &.", " {\n align-items: start;\n }\n"])), classes.captionAlignLeft);
7
+ export var CodeWrapper = /*#__PURE__*/styled.div.withConfig({
8
+ componentId: "plasma-new-hope__sc-1lsnhbl-0"
9
+ })(["display:flex;align-items:center;"]);
10
+ export var CodeGroup = /*#__PURE__*/styled.div.withConfig({
11
+ componentId: "plasma-new-hope__sc-1lsnhbl-1"
12
+ })(["display:flex;align-items:center;"]);
13
+ export var Separator = /*#__PURE__*/styled.div.withConfig({
14
+ componentId: "plasma-new-hope__sc-1lsnhbl-2"
15
+ })(["width:var(", ");"], tokens.separatorWidth);
16
+ export var ItemInput = /*#__PURE__*/styled.input.withConfig({
17
+ componentId: "plasma-new-hope__sc-1lsnhbl-3"
18
+ })(["box-sizing:border-box;appearance:none;border:0;padding:0;outline:none;pointer-events:none;text-align:center;caret-color:transparent;caret:none;opacity:", ";"], function (_ref) {
19
+ var hide = _ref.hide;
20
+ return hide ? '0' : '1';
21
+ });
22
+ export var ItemWrapper = /*#__PURE__*/styled.div.withConfig({
23
+ componentId: "plasma-new-hope__sc-1lsnhbl-4"
24
+ })(["position:relative;"]);
25
+ export var ItemCircle = /*#__PURE__*/styled.div.withConfig({
26
+ componentId: "plasma-new-hope__sc-1lsnhbl-5"
27
+ })(["position:absolute;top:calc(50% - calc(var(", ") / 2));left:calc(50% - calc(var(", ") / 2));width:var(", ");height:var(", ");box-sizing:border-box;border:var(", ") solid var(", ");border-radius:100%;background-color:'transparent';&.", "{background-color:var(", ");}"], tokens.codeItemCircleSize, tokens.codeItemCircleSize, tokens.codeItemCircleSize, tokens.codeItemCircleSize, tokens.codeItemCircleBorderWidth, tokens.codeColor, classes.itemCirlceFilled, tokens.codeColor);
28
+ export var CaptionWrapper = /*#__PURE__*/styled.div.withConfig({
29
+ componentId: "plasma-new-hope__sc-1lsnhbl-6"
30
+ })(["text-align:", ";align-self:", ";width:", ";white-space:pre-line;"], function (_ref2) {
31
+ var captionAlign = _ref2.captionAlign;
32
+ return captionAlign;
33
+ }, function (_ref3) {
34
+ var captionAlign = _ref3.captionAlign;
35
+ return captionAlign;
36
+ }, function (_ref4) {
37
+ var widthValue = _ref4.widthValue;
38
+ return widthValue || 'auto';
39
+ });
@@ -0,0 +1,64 @@
1
+ export var classes = {
2
+ itemError: 'codeinput-item-error',
3
+ itemErrorAnimation: 'codeinput-item-error-animation',
4
+ itemErrorFade: 'codeinput-item-error-fade',
5
+ itemCirlceFilled: 'codeinput-item-circle-filled',
6
+ captionError: 'codeinput-caption-error',
7
+ codeError: 'codeinput-code-error',
8
+ codeErrorAnimation: 'codeinput-code-error-animation',
9
+ codeErrorFade: 'codeinput-code-error-fade',
10
+ captionAlignLeft: 'codeinput-caption-align-left',
11
+ hoverEnabled: 'codeinput-item-hover-enabled',
12
+ segmented: 'codeinput-shape-segmented',
13
+ "default": 'codeinput-shape-default',
14
+ largeScreen: 'codeinput-large-screen',
15
+ mediumScreen: 'codeinput-medium-screen',
16
+ smallScreen: 'codeinput-small-screen',
17
+ disabled: 'codeinput-disabled'
18
+ };
19
+ export var tokens = {
20
+ captionGap: '--plasma-codeinput-caption-gap',
21
+ codeItemsGap: '--plasma-codeinput-code-item-gap',
22
+ separatorWidth: '--plasma-codeinput-separator-width',
23
+ codeItemLargeWidth: '--plasma-codeinput-item-large-width',
24
+ codeItemLargeHeight: '--plasma-codeinput-item-large-height',
25
+ codeItemMediumWidth: '--plasma-codeinput-item-medium-width',
26
+ codeItemMediumHeight: '--plasma-codeinput-item-medium-height',
27
+ codeItemSmallWidth: '--plasma-codeinput-item-small-width',
28
+ codeItemSmallHeight: '--plasma-codeinput-item-small-height',
29
+ codeItemCircleSize: '--plasma-codeinput-item-circle-size',
30
+ codeItemCircleBorderWidth: '--plasma-codeinput-item-circle-border-width',
31
+ fontStyle: '--plasma-codeinput-font-style',
32
+ fontFamily: '--plasma-codeinput-font-family',
33
+ fontWeight: '--plasma-codeinput-font-weight',
34
+ letterSpacing: '--plasma-codeinput-letter-spacing',
35
+ largeScreenFontSize: '--plasma-codeinput-large-screen-font-size',
36
+ largeScreenLineHeight: '--plasma-codeinput-large-screen-line-height',
37
+ mediumScreenFontSize: '--plasma-codeinput-medium-screen-font-size',
38
+ mediumScreenLineHeight: '--plasma-codeinput-medium-screen-line-height',
39
+ smallScreenFontSize: '--plasma-codeinput-small-screen-font-size',
40
+ smallScreenLineHeight: '--plasma-codeinput-small-screen-line-height',
41
+ captionFontFamily: '--plasma-codeinput-caption-font-family',
42
+ captionFontSize: '--plasma-codeinput-caption-font-style',
43
+ captionFontStyle: '--plasma-codeinput-caption-font-size',
44
+ captionFontWeight: '--plasma-codeinput-caption-font-weight',
45
+ captionLetterSpacing: '--plasma-codeinput-caption-letter-spacing',
46
+ captionLineHeight: '--plasma-codeinput-caption-line-height',
47
+ borderRadius: '--plasma-codeinput-code-item-border-radius',
48
+ borderRadiusSegmented: '--plasma-codeinput-code-item-border-radius-segmented',
49
+ segmentedSideBorderRadius: '--plasma-codeinput-code-item-segmented-side-border-radius',
50
+ captionColor: '--plasma-codeinput-caption-color',
51
+ captionColorError: '--plasma-codeinput-caption-color-error',
52
+ codeColor: '--plasma-codeinput-code-color',
53
+ codeColorError: '--plasma-codeinput-code-color-error',
54
+ backgroundColor: '--plasma-codeinput-background-color',
55
+ backgroundColorHover: '--plasma-codeinput-background-color-hover',
56
+ backgroundColorFocus: '--plasma-codeinput-background-color-focus',
57
+ backgroundErrorColor: '--plasma-codeinput-background-error-color',
58
+ borderWidth: '--plasma-codeinput-border-width',
59
+ borderColor: '--plasma-codeinput-border-color',
60
+ borderColorHover: '--plasma-codeinput-border-color-hover',
61
+ borderColorFocus: '--plasma-codeinput-border-color-focus',
62
+ borderErrorColor: '--plasma-codeinput-border-error-color',
63
+ disabledOpacity: '--plasma-codeinput-disabled-opacity'
64
+ };
@@ -0,0 +1,2 @@
1
+ export { codeInputRoot, codeInputConfig } from "./CodeInput";
2
+ export { tokens as codeInputTokens, classes as codeInputClasses } from "./CodeInput.tokens";
@@ -0,0 +1,6 @@
1
+ export var ONLY_DIGITS_PATTERN = '^\\d+$';
2
+ export var ONLY_CHARS_PATTERN = '^[a-zA-Z]+$';
3
+ export var ONLY_DIGITS_AND_CHARS_PATTERN = '^[a-zA-Z0-9]+$';
4
+ export var FORBIDDEN_KEYS = ['ArrowLeft', 'ArrowRight', 'ArrowUp', 'ArrowDown', 'Delete'];
5
+ export var BACKSPACE_KEY = 'Backspace';
6
+ export var ANIMATION_TIMEOUT = 300;
@@ -0,0 +1,52 @@
1
+ function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
2
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
4
+ function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
5
+ function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
6
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
7
+ import { classes } from "../CodeInput.tokens";
8
+ import { ANIMATION_TIMEOUT } from "./constants";
9
+ import { getCodeValue } from "./initialValuesHelper";
10
+ export var handleCodeError = function handleCodeError(_ref) {
11
+ var _captionRef$current, _captionRef$current2;
12
+ var codeLength = _ref.codeLength,
13
+ codeErrorBehavior = _ref.codeErrorBehavior,
14
+ currentCode = _ref.currentCode,
15
+ inputRefs = _ref.inputRefs,
16
+ inputContainerRef = _ref.inputContainerRef,
17
+ captionRef = _ref.captionRef,
18
+ setCode = _ref.setCode,
19
+ codeSetter = _ref.codeSetter;
20
+ if (!inputContainerRef.current) {
21
+ return;
22
+ }
23
+ switch (codeErrorBehavior) {
24
+ case 'keep':
25
+ inputContainerRef.current.classList.add(classes.codeError, classes.codeErrorAnimation);
26
+ (_captionRef$current = captionRef.current) === null || _captionRef$current === void 0 || _captionRef$current.classList.add(classes.captionError);
27
+ setTimeout(function () {
28
+ var _inputContainerRef$cu;
29
+ var newCode = _toConsumableArray(currentCode);
30
+ newCode.pop();
31
+ codeSetter(newCode);
32
+ setCode(currentCode);
33
+ (_inputContainerRef$cu = inputContainerRef.current) === null || _inputContainerRef$cu === void 0 || _inputContainerRef$cu.classList.remove(classes.codeErrorAnimation);
34
+ setTimeout(function () {
35
+ var _inputRefs$current, _inputRefs$current2;
36
+ (_inputRefs$current = inputRefs.current[inputRefs.current.length - 1]) === null || _inputRefs$current === void 0 || _inputRefs$current.setSelectionRange(0, 1);
37
+ (_inputRefs$current2 = inputRefs.current[inputRefs.current.length - 1]) === null || _inputRefs$current2 === void 0 || _inputRefs$current2.focus();
38
+ }, 0);
39
+ }, ANIMATION_TIMEOUT);
40
+ break;
41
+ case 'remove-code':
42
+ default:
43
+ inputContainerRef.current.classList.add(classes.codeError, classes.codeErrorAnimation, classes.codeErrorFade);
44
+ (_captionRef$current2 = captionRef.current) === null || _captionRef$current2 === void 0 || _captionRef$current2.classList.add(classes.captionError);
45
+ setTimeout(function () {
46
+ var _inputRefs$current$, _inputContainerRef$cu2;
47
+ codeSetter(getCodeValue(codeLength, ''));
48
+ (_inputRefs$current$ = inputRefs.current[0]) === null || _inputRefs$current$ === void 0 || _inputRefs$current$.focus();
49
+ (_inputContainerRef$cu2 = inputContainerRef.current) === null || _inputContainerRef$cu2 === void 0 || _inputContainerRef$cu2.classList.remove(classes.codeError, classes.codeErrorAnimation, classes.codeErrorFade);
50
+ }, ANIMATION_TIMEOUT);
51
+ }
52
+ };
@@ -0,0 +1,50 @@
1
+ function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
2
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
4
+ function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
5
+ function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
6
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
7
+ import { classes } from "../CodeInput.tokens";
8
+ import { ANIMATION_TIMEOUT } from "./constants";
9
+ export var handleItemError = function handleItemError(_ref) {
10
+ var _inputRefs$current$in, _inputRefs$current$in4;
11
+ var currentSymbol = _ref.currentSymbol,
12
+ itemErrorBehavior = _ref.itemErrorBehavior,
13
+ index = _ref.index,
14
+ newCode = _ref.newCode,
15
+ inputRefs = _ref.inputRefs,
16
+ setCode = _ref.setCode,
17
+ codeSetter = _ref.codeSetter;
18
+ if (!inputRefs.current[index] || currentSymbol === ' ') {
19
+ return;
20
+ }
21
+ switch (itemErrorBehavior) {
22
+ case 'keep':
23
+ setCode(newCode);
24
+ (_inputRefs$current$in = inputRefs.current[index]) === null || _inputRefs$current$in === void 0 || _inputRefs$current$in.classList.add(classes.itemError, classes.itemErrorAnimation);
25
+ setTimeout(function () {
26
+ var _inputRefs$current$in2;
27
+ (_inputRefs$current$in2 = inputRefs.current[index]) === null || _inputRefs$current$in2 === void 0 || _inputRefs$current$in2.classList.remove(classes.itemErrorAnimation);
28
+ setTimeout(function () {
29
+ var _inputRefs$current$in3;
30
+ return (_inputRefs$current$in3 = inputRefs.current[index]) === null || _inputRefs$current$in3 === void 0 ? void 0 : _inputRefs$current$in3.setSelectionRange(0, 1);
31
+ }, 0);
32
+ }, ANIMATION_TIMEOUT);
33
+ break;
34
+ case 'forbid-enter':
35
+ newCode[index] = '';
36
+ codeSetter(newCode);
37
+ break;
38
+ case 'remove-symbol':
39
+ default:
40
+ setCode(newCode);
41
+ (_inputRefs$current$in4 = inputRefs.current[index]) === null || _inputRefs$current$in4 === void 0 || _inputRefs$current$in4.classList.add(classes.itemError, classes.itemErrorFade, classes.itemErrorAnimation);
42
+ setTimeout(function () {
43
+ var _inputRefs$current$in5;
44
+ var updatedCode = _toConsumableArray(newCode);
45
+ updatedCode[index] = '';
46
+ codeSetter(updatedCode);
47
+ (_inputRefs$current$in5 = inputRefs.current[index]) === null || _inputRefs$current$in5 === void 0 || _inputRefs$current$in5.classList.remove(classes.itemError, classes.itemErrorFade, classes.itemErrorAnimation);
48
+ }, ANIMATION_TIMEOUT);
49
+ }
50
+ };
@@ -0,0 +1,3 @@
1
+ export { getFieldPattern, getPlaceholderValue, getCodeValue } from "./initialValuesHelper";
2
+ export { handleItemError } from "./handleItemError";
3
+ export { handleCodeError } from "./handleCodeError";