@skbkontur/react-ui 6.1.6-fd904.0 → 6.1.6

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 (223) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/components/CurrencyInput/CurrencyHelper.d.ts +1 -2
  3. package/components/CurrencyInput/CurrencyHelper.js +32 -28
  4. package/components/CurrencyInput/CurrencyHelper.js.map +1 -1
  5. package/components/CurrencyInput/CurrencyInputHelper.js +1 -1
  6. package/components/CurrencyInput/CurrencyInputHelper.js.map +1 -1
  7. package/components/DateInput/DateInput.js +4 -1
  8. package/components/DateInput/DateInput.js.map +1 -1
  9. package/components/FileUploader/FileUploaderFile.d.ts +1 -1
  10. package/components/FileUploader/FileUploaderFile.js +1 -1
  11. package/components/FileUploader/FileUploaderFile.js.map +1 -1
  12. package/components/FxInput/FxInput.d.ts +1 -1
  13. package/components/FxInput/FxInput.js.map +1 -1
  14. package/components/MaskedInput/MaskedInput.d.ts +2 -6
  15. package/components/MaskedInput/MaskedInput.js +126 -10
  16. package/components/MaskedInput/MaskedInput.js.map +1 -1
  17. package/components/MaskedInput/index.d.ts +0 -1
  18. package/components/MaskedInput/index.js +0 -1
  19. package/components/MaskedInput/index.js.map +1 -1
  20. package/components/MiniModal/MiniModal.d.ts +0 -9
  21. package/components/MiniModal/MiniModal.js +0 -9
  22. package/components/MiniModal/MiniModal.js.map +1 -1
  23. package/components/Modal/Modal.d.ts +0 -5
  24. package/components/Modal/Modal.js +0 -5
  25. package/components/Modal/Modal.js.map +1 -1
  26. package/components/Select/Select.d.ts +1 -0
  27. package/components/Select/Select.js +12 -2
  28. package/components/Select/Select.js.map +1 -1
  29. package/components/Switcher/Switcher.d.ts +3 -3
  30. package/components/Switcher/Switcher.js +1 -1
  31. package/components/Switcher/Switcher.js.map +1 -1
  32. package/components/Tabs/Tab.d.ts +4 -5
  33. package/components/Tabs/Tab.js +0 -1
  34. package/components/Tabs/Tab.js.map +1 -1
  35. package/components/Tabs/Tabs.d.ts +2 -2
  36. package/components/Tabs/Tabs.js +1 -1
  37. package/components/Tabs/Tabs.js.map +1 -1
  38. package/components/Token/Token.d.ts +1 -1
  39. package/components/Token/Token.js +1 -1
  40. package/components/Token/Token.js.map +1 -1
  41. package/components/TokenInput/TokenInput.d.ts +1 -1
  42. package/components/TokenInput/TokenInput.js +1 -1
  43. package/components/TokenInput/TokenInput.js.map +1 -1
  44. package/internal/Menu/Menu.d.ts +5 -0
  45. package/internal/Menu/Menu.js +21 -0
  46. package/internal/Menu/Menu.js.map +1 -1
  47. package/lib/events/keyboard/KeyboardEventCodes.d.ts +0 -2
  48. package/lib/events/keyboard/KeyboardEventCodes.js +0 -2
  49. package/lib/events/keyboard/KeyboardEventCodes.js.map +1 -1
  50. package/lib/events/keyboard/KeyboardMapKeys.js +0 -2
  51. package/lib/events/keyboard/KeyboardMapKeys.js.map +1 -1
  52. package/lib/events/keyboard/identifiers.d.ts +0 -2
  53. package/lib/events/keyboard/identifiers.js +0 -6
  54. package/lib/events/keyboard/identifiers.js.map +1 -1
  55. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +0 -1
  56. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js +0 -1
  57. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
  58. package/package.json +1 -4
  59. package/components/MaskedInput/MaskedInputLegacy.d.ts +0 -3
  60. package/components/MaskedInput/MaskedInputLegacy.js +0 -142
  61. package/components/MaskedInput/MaskedInputLegacy.js.map +0 -1
  62. package/components/MaskedInputV2/MaskedInputV2.d.ts +0 -61
  63. package/components/MaskedInputV2/MaskedInputV2.helpers.d.ts +0 -9
  64. package/components/MaskedInputV2/MaskedInputV2.helpers.js +0 -17
  65. package/components/MaskedInputV2/MaskedInputV2.helpers.js.map +0 -1
  66. package/components/MaskedInputV2/MaskedInputV2.js +0 -307
  67. package/components/MaskedInputV2/MaskedInputV2.js.map +0 -1
  68. package/components/MaskedInputV2/MaskedInputV2.phone.d.ts +0 -25
  69. package/components/MaskedInputV2/MaskedInputV2.phone.js +0 -35
  70. package/components/MaskedInputV2/MaskedInputV2.phone.js.map +0 -1
  71. package/components/MaskedInputV2/MaskedInputV2.styles.d.ts +0 -7
  72. package/components/MaskedInputV2/MaskedInputV2.styles.js +0 -19
  73. package/components/MaskedInputV2/MaskedInputV2.styles.js.map +0 -1
  74. package/components/MaskedInputV2/index.d.ts +0 -2
  75. package/components/MaskedInputV2/index.js +0 -3
  76. package/components/MaskedInputV2/index.js.map +0 -1
  77. package/components/MaskedInputV2/internal/MaskOverlay.d.ts +0 -19
  78. package/components/MaskedInputV2/internal/MaskOverlay.js +0 -54
  79. package/components/MaskedInputV2/internal/MaskOverlay.js.map +0 -1
  80. package/components/MaskedInputV2/internal/MaskedCore.d.ts +0 -8
  81. package/components/MaskedInputV2/internal/MaskedCore.js +0 -186
  82. package/components/MaskedInputV2/internal/MaskedCore.js.map +0 -1
  83. package/components/MaskedInputV2/internal/MaskedCore.types.d.ts +0 -37
  84. package/components/MaskedInputV2/internal/MaskedCore.types.js +0 -2
  85. package/components/MaskedInputV2/internal/MaskedCore.types.js.map +0 -1
  86. package/components/MaskedInputV2/internal/MaskedInternal.styles.d.ts +0 -15
  87. package/components/MaskedInputV2/internal/MaskedInternal.styles.js +0 -34
  88. package/components/MaskedInputV2/internal/MaskedInternal.styles.js.map +0 -1
  89. package/components/MaskedInputV2/internal/buildSlotMap.d.ts +0 -11
  90. package/components/MaskedInputV2/internal/buildSlotMap.js +0 -37
  91. package/components/MaskedInputV2/internal/buildSlotMap.js.map +0 -1
  92. package/components/MaskedInputV2/internal/computeMaskAlignPadding.d.ts +0 -6
  93. package/components/MaskedInputV2/internal/computeMaskAlignPadding.js +0 -47
  94. package/components/MaskedInputV2/internal/computeMaskAlignPadding.js.map +0 -1
  95. package/components/MaskedInputV2/internal/computePasteMaskedCursor.d.ts +0 -3
  96. package/components/MaskedInputV2/internal/computePasteMaskedCursor.js +0 -11
  97. package/components/MaskedInputV2/internal/computePasteMaskedCursor.js.map +0 -1
  98. package/components/MaskedInputV2/internal/extractRaw.d.ts +0 -10
  99. package/components/MaskedInputV2/internal/extractRaw.js +0 -16
  100. package/components/MaskedInputV2/internal/extractRaw.js.map +0 -1
  101. package/components/MaskedInputV2/internal/findNearestRawLeft.d.ts +0 -10
  102. package/components/MaskedInputV2/internal/findNearestRawLeft.js +0 -18
  103. package/components/MaskedInputV2/internal/findNearestRawLeft.js.map +0 -1
  104. package/components/MaskedInputV2/internal/helpers.d.ts +0 -8
  105. package/components/MaskedInputV2/internal/helpers.js +0 -9
  106. package/components/MaskedInputV2/internal/helpers.js.map +0 -1
  107. package/components/MaskedInputV2/internal/maskedCoreClipboard.d.ts +0 -37
  108. package/components/MaskedInputV2/internal/maskedCoreClipboard.js +0 -52
  109. package/components/MaskedInputV2/internal/maskedCoreClipboard.js.map +0 -1
  110. package/components/MaskedInputV2/internal/maskedCoreDeletion.d.ts +0 -28
  111. package/components/MaskedInputV2/internal/maskedCoreDeletion.js +0 -70
  112. package/components/MaskedInputV2/internal/maskedCoreDeletion.js.map +0 -1
  113. package/components/MaskedInputV2/internal/maskedCoreInputChange.d.ts +0 -35
  114. package/components/MaskedInputV2/internal/maskedCoreInputChange.js +0 -31
  115. package/components/MaskedInputV2/internal/maskedCoreInputChange.js.map +0 -1
  116. package/components/MaskedInputV2/internal/maskedCoreNavigation.d.ts +0 -13
  117. package/components/MaskedInputV2/internal/maskedCoreNavigation.js +0 -79
  118. package/components/MaskedInputV2/internal/maskedCoreNavigation.js.map +0 -1
  119. package/components/MaskedInputV2/internal/measureInputTextWidth.d.ts +0 -2
  120. package/components/MaskedInputV2/internal/measureInputTextWidth.js +0 -30
  121. package/components/MaskedInputV2/internal/measureInputTextWidth.js.map +0 -1
  122. package/components/MaskedInputV2/internal/setMaskInputSelectionRange.d.ts +0 -2
  123. package/components/MaskedInputV2/internal/setMaskInputSelectionRange.js +0 -25
  124. package/components/MaskedInputV2/internal/setMaskInputSelectionRange.js.map +0 -1
  125. package/components/MaskedInputV2/internal/showOverlay.d.ts +0 -3
  126. package/components/MaskedInputV2/internal/showOverlay.js +0 -16
  127. package/components/MaskedInputV2/internal/showOverlay.js.map +0 -1
  128. package/components/MaskedInputV2/internal/stripMaskChars.d.ts +0 -11
  129. package/components/MaskedInputV2/internal/stripMaskChars.js +0 -20
  130. package/components/MaskedInputV2/internal/stripMaskChars.js.map +0 -1
  131. package/components/MaskedInputV2/internal/types.d.ts +0 -74
  132. package/components/MaskedInputV2/internal/types.js +0 -2
  133. package/components/MaskedInputV2/internal/types.js.map +0 -1
  134. package/components/MaskedInputV2/internal/useInputOverflow.d.ts +0 -4
  135. package/components/MaskedInputV2/internal/useInputOverflow.js +0 -34
  136. package/components/MaskedInputV2/internal/useInputOverflow.js.map +0 -1
  137. package/components/MaskedInputV2/internal/useMaskAlignPadding.d.ts +0 -2
  138. package/components/MaskedInputV2/internal/useMaskAlignPadding.js +0 -33
  139. package/components/MaskedInputV2/internal/useMaskAlignPadding.js.map +0 -1
  140. package/components/MaskedInputV2/internal/useMaskEngine.d.ts +0 -42
  141. package/components/MaskedInputV2/internal/useMaskEngine.js +0 -72
  142. package/components/MaskedInputV2/internal/useMaskEngine.js.map +0 -1
  143. package/components/MaskedInputV2/internal/useMaskedCoreHandlers.d.ts +0 -34
  144. package/components/MaskedInputV2/internal/useMaskedCoreHandlers.js +0 -272
  145. package/components/MaskedInputV2/internal/useMaskedCoreHandlers.js.map +0 -1
  146. package/components/MaskedInputV2/react-imask/imask/controls/html-input-mask-element.d.ts +0 -16
  147. package/components/MaskedInputV2/react-imask/imask/controls/html-input-mask-element.js +0 -59
  148. package/components/MaskedInputV2/react-imask/imask/controls/html-input-mask-element.js.map +0 -1
  149. package/components/MaskedInputV2/react-imask/imask/controls/html-mask-element.d.ts +0 -20
  150. package/components/MaskedInputV2/react-imask/imask/controls/html-mask-element.js +0 -106
  151. package/components/MaskedInputV2/react-imask/imask/controls/html-mask-element.js.map +0 -1
  152. package/components/MaskedInputV2/react-imask/imask/controls/input-history.d.ts +0 -17
  153. package/components/MaskedInputV2/react-imask/imask/controls/input-history.js +0 -49
  154. package/components/MaskedInputV2/react-imask/imask/controls/input-history.js.map +0 -1
  155. package/components/MaskedInputV2/react-imask/imask/controls/input.d.ts +0 -95
  156. package/components/MaskedInputV2/react-imask/imask/controls/input.js +0 -420
  157. package/components/MaskedInputV2/react-imask/imask/controls/input.js.map +0 -1
  158. package/components/MaskedInputV2/react-imask/imask/controls/mask-element.d.ts +0 -30
  159. package/components/MaskedInputV2/react-imask/imask/controls/mask-element.js +0 -59
  160. package/components/MaskedInputV2/react-imask/imask/controls/mask-element.js.map +0 -1
  161. package/components/MaskedInputV2/react-imask/imask/core/action-details.d.ts +0 -30
  162. package/components/MaskedInputV2/react-imask/imask/core/action-details.js +0 -100
  163. package/components/MaskedInputV2/react-imask/imask/core/action-details.js.map +0 -1
  164. package/components/MaskedInputV2/react-imask/imask/core/change-details.d.ts +0 -20
  165. package/components/MaskedInputV2/react-imask/imask/core/change-details.js +0 -46
  166. package/components/MaskedInputV2/react-imask/imask/core/change-details.js.map +0 -1
  167. package/components/MaskedInputV2/react-imask/imask/core/continuous-tail-details.d.ts +0 -21
  168. package/components/MaskedInputV2/react-imask/imask/core/continuous-tail-details.js +0 -52
  169. package/components/MaskedInputV2/react-imask/imask/core/continuous-tail-details.js.map +0 -1
  170. package/components/MaskedInputV2/react-imask/imask/core/holder.d.ts +0 -34
  171. package/components/MaskedInputV2/react-imask/imask/core/holder.js +0 -38
  172. package/components/MaskedInputV2/react-imask/imask/core/holder.js.map +0 -1
  173. package/components/MaskedInputV2/react-imask/imask/core/tail-details.d.ts +0 -20
  174. package/components/MaskedInputV2/react-imask/imask/core/tail-details.js +0 -2
  175. package/components/MaskedInputV2/react-imask/imask/core/tail-details.js.map +0 -1
  176. package/components/MaskedInputV2/react-imask/imask/core/utils.d.ts +0 -24
  177. package/components/MaskedInputV2/react-imask/imask/core/utils.js +0 -100
  178. package/components/MaskedInputV2/react-imask/imask/core/utils.js.map +0 -1
  179. package/components/MaskedInputV2/react-imask/imask/imask.d.ts +0 -5
  180. package/components/MaskedInputV2/react-imask/imask/imask.js +0 -7
  181. package/components/MaskedInputV2/react-imask/imask/imask.js.map +0 -1
  182. package/components/MaskedInputV2/react-imask/imask/index.d.ts +0 -17
  183. package/components/MaskedInputV2/react-imask/imask/index.js +0 -16
  184. package/components/MaskedInputV2/react-imask/imask/index.js.map +0 -1
  185. package/components/MaskedInputV2/react-imask/imask/masked/base.d.ts +0 -114
  186. package/components/MaskedInputV2/react-imask/imask/masked/base.js +0 -411
  187. package/components/MaskedInputV2/react-imask/imask/masked/base.js.map +0 -1
  188. package/components/MaskedInputV2/react-imask/imask/masked/create.d.ts +0 -14
  189. package/components/MaskedInputV2/react-imask/imask/masked/create.js +0 -11
  190. package/components/MaskedInputV2/react-imask/imask/masked/create.js.map +0 -1
  191. package/components/MaskedInputV2/react-imask/imask/masked/factory.d.ts +0 -62
  192. package/components/MaskedInputV2/react-imask/imask/masked/factory.js +0 -107
  193. package/components/MaskedInputV2/react-imask/imask/masked/factory.js.map +0 -1
  194. package/components/MaskedInputV2/react-imask/imask/masked/pattern.d.ts +0 -101
  195. package/components/MaskedInputV2/react-imask/imask/masked/pattern.js +0 -549
  196. package/components/MaskedInputV2/react-imask/imask/masked/pattern.js.map +0 -1
  197. package/components/MaskedInputV2/react-imask/imask/masked/patterns/block.d.ts +0 -30
  198. package/components/MaskedInputV2/react-imask/imask/masked/patterns/block.js +0 -2
  199. package/components/MaskedInputV2/react-imask/imask/masked/patterns/block.js.map +0 -1
  200. package/components/MaskedInputV2/react-imask/imask/masked/patterns/chunk-tail-details.d.ts +0 -20
  201. package/components/MaskedInputV2/react-imask/imask/masked/patterns/chunk-tail-details.js +0 -182
  202. package/components/MaskedInputV2/react-imask/imask/masked/patterns/chunk-tail-details.js.map +0 -1
  203. package/components/MaskedInputV2/react-imask/imask/masked/patterns/cursor.d.ts +0 -31
  204. package/components/MaskedInputV2/react-imask/imask/masked/patterns/cursor.js +0 -163
  205. package/components/MaskedInputV2/react-imask/imask/masked/patterns/cursor.js.map +0 -1
  206. package/components/MaskedInputV2/react-imask/imask/masked/patterns/fixed-definition.d.ts +0 -42
  207. package/components/MaskedInputV2/react-imask/imask/masked/patterns/fixed-definition.js +0 -158
  208. package/components/MaskedInputV2/react-imask/imask/masked/patterns/fixed-definition.js.map +0 -1
  209. package/components/MaskedInputV2/react-imask/imask/masked/patterns/input-definition.d.ts +0 -56
  210. package/components/MaskedInputV2/react-imask/imask/masked/patterns/input-definition.js +0 -185
  211. package/components/MaskedInputV2/react-imask/imask/masked/patterns/input-definition.js.map +0 -1
  212. package/components/MaskedInputV2/react-imask/imask/masked/regexp.d.ts +0 -17
  213. package/components/MaskedInputV2/react-imask/imask/masked/regexp.js +0 -36
  214. package/components/MaskedInputV2/react-imask/imask/masked/regexp.js.map +0 -1
  215. package/components/MaskedInputV2/react-imask/index.d.ts +0 -3
  216. package/components/MaskedInputV2/react-imask/index.js +0 -4
  217. package/components/MaskedInputV2/react-imask/index.js.map +0 -1
  218. package/components/MaskedInputV2/react-imask/input.d.ts +0 -8
  219. package/components/MaskedInputV2/react-imask/input.js +0 -35
  220. package/components/MaskedInputV2/react-imask/input.js.map +0 -1
  221. package/components/MaskedInputV2/react-imask/mixin.d.ts +0 -31
  222. package/components/MaskedInputV2/react-imask/mixin.js +0 -246
  223. package/components/MaskedInputV2/react-imask/mixin.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -3,6 +3,20 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [6.1.6](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@6.1.5...@skbkontur/react-ui@6.1.6) (2026-07-28)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **CurrencyInput:** allow editing of positive invalid values ([484949b](https://github.com/skbkontur/retail-ui/commit/484949b7aaf68041c16ba05546f569cf07dac564))
12
+ * **CurrencyInput:** forbid scientific notation in user input ([71e127f](https://github.com/skbkontur/retail-ui/commit/71e127fc321dfb12cdbd40404e8c12637c89058b))
13
+ * **DateInput:** blink on input same number ([401290d](https://github.com/skbkontur/retail-ui/commit/401290dc26bf0468497466fbeb6648beb8c1e2b4))
14
+ * **Select:** use correct scroll method on open ([0338e5c](https://github.com/skbkontur/retail-ui/commit/0338e5cd402f97e4f8e866a941dc69d3477ee0b2))
15
+
16
+
17
+
18
+
19
+
6
20
  ## [6.1.5](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@6.1.4...@skbkontur/react-ui@6.1.5) (2026-07-15)
7
21
 
8
22
 
@@ -27,14 +27,13 @@ export declare class CurrencyHelper {
27
27
  static unformatString(value: string): string;
28
28
  static formatForClipboard(value: string): string;
29
29
  static formatString(value: string, formattingOptions?: Nullable<DecimalFormattingOptions>): string;
30
- static isValidString(value: string, options: DecimalOptions): boolean;
30
+ static isValidString(value: string, options: DecimalOptions, previousValue?: string): boolean;
31
31
  static extractValid(value: string, options: DecimalOptions): string;
32
32
  static destructString(value: string): {
33
33
  sign: string;
34
34
  integer: string;
35
35
  delimiter: string;
36
36
  fraction: string;
37
- exponent: string;
38
37
  } | null;
39
38
  private static toDecimalString;
40
39
  }
@@ -16,16 +16,16 @@ var CurrencyHelper = /** @class */ (function () {
16
16
  function CurrencyHelper() {
17
17
  }
18
18
  CurrencyHelper.getOptions = function (options) {
19
- return __assign(__assign({}, _a.defaultOptions), options);
19
+ return __assign(__assign({}, CurrencyHelper.defaultOptions), options);
20
20
  };
21
21
  CurrencyHelper.getInfo = function (value, options) {
22
- var raw = _a.unformatString(value);
23
- var formatted = _a.formatString(value, options);
24
- var cursorMap = _a.getCursorMap(formatted, options);
22
+ var raw = CurrencyHelper.unformatString(value);
23
+ var formatted = CurrencyHelper.formatString(value, options);
24
+ var cursorMap = CurrencyHelper.getCursorMap(formatted, options);
25
25
  return { raw: raw, formatted: formatted, cursorMap: cursorMap };
26
26
  };
27
27
  CurrencyHelper.getCursorMap = function (formatted, formattingOptions) {
28
- var options = _a.getOptions(formattingOptions);
28
+ var options = CurrencyHelper.getOptions(formattingOptions);
29
29
  var regexp = new RegExp(options.thousandsDelimiter);
30
30
  var cursorMap = [];
31
31
  var index = formatted.length;
@@ -49,14 +49,14 @@ var CurrencyHelper = /** @class */ (function () {
49
49
  if (isNullable(value)) {
50
50
  return '';
51
51
  }
52
- return _a.formatString(this.toDecimalString(value), options);
52
+ return CurrencyHelper.formatString(this.toDecimalString(value), options);
53
53
  };
54
54
  CurrencyHelper.parse = function (value) {
55
- var cleaned = _a.unformatString(value);
55
+ var cleaned = CurrencyHelper.unformatString(value);
56
56
  if (!cleaned) {
57
57
  return null;
58
58
  }
59
- var destructed = _a.destructString(cleaned);
59
+ var destructed = CurrencyHelper.destructString(cleaned);
60
60
  if (!destructed) {
61
61
  return null;
62
62
  }
@@ -70,11 +70,11 @@ var CurrencyHelper = /** @class */ (function () {
70
70
  .replace(/[\u2212\u002D\uFE63\uFF0D\u2012\u2013\u2014\u2015]/g, '-');
71
71
  };
72
72
  CurrencyHelper.formatForClipboard = function (value) {
73
- return _a.unformatString(value).replace('.', ',');
73
+ return CurrencyHelper.unformatString(value).replace('.', ',');
74
74
  };
75
75
  CurrencyHelper.formatString = function (value, formattingOptions) {
76
- var unformattedValue = _a.unformatString(value);
77
- var destructed = _a.destructString(unformattedValue) || {
76
+ var unformattedValue = CurrencyHelper.unformatString(value);
77
+ var destructed = CurrencyHelper.destructString(unformattedValue) || {
78
78
  sign: '',
79
79
  integer: '',
80
80
  delimiter: '',
@@ -83,7 +83,7 @@ var CurrencyHelper = /** @class */ (function () {
83
83
  var sign = destructed.sign, integer = destructed.integer, delimiter = destructed.delimiter;
84
84
  var fraction = destructed.fraction;
85
85
  var fractionDigits = fraction.length;
86
- var options = _a.getOptions(formattingOptions);
86
+ var options = CurrencyHelper.getOptions(formattingOptions);
87
87
  if (options.hideTrailingZeros) {
88
88
  fraction = fraction.replace(/0+$/, '');
89
89
  fractionDigits = fraction.length;
@@ -107,9 +107,9 @@ var CurrencyHelper = /** @class */ (function () {
107
107
  }
108
108
  return result;
109
109
  };
110
- CurrencyHelper.isValidString = function (value, options) {
111
- var unformattedValue = _a.unformatString(value);
112
- var destructed = _a.destructString(unformattedValue);
110
+ CurrencyHelper.isValidString = function (value, options, previousValue) {
111
+ var unformattedValue = CurrencyHelper.unformatString(value);
112
+ var destructed = CurrencyHelper.destructString(unformattedValue);
113
113
  if (!destructed) {
114
114
  return false;
115
115
  }
@@ -129,12 +129,18 @@ var CurrencyHelper = /** @class */ (function () {
129
129
  return false;
130
130
  }
131
131
  if (isNonNullable(options.fractionDigits) && fractionDigits > options.fractionDigits) {
132
- return false;
132
+ if (previousValue === undefined) {
133
+ return false;
134
+ }
135
+ var previousDestructed = CurrencyHelper.destructString(CurrencyHelper.unformatString(previousValue));
136
+ if (!previousDestructed || fractionDigits > previousDestructed.fraction.length) {
137
+ return false;
138
+ }
133
139
  }
134
140
  return integerDigits + fractionDigits <= MAX_SAFE_DIGITS;
135
141
  };
136
142
  CurrencyHelper.extractValid = function (value, options) {
137
- var unformattedValue = _a.unformatString(value);
143
+ var unformattedValue = CurrencyHelper.unformatString(value);
138
144
  var match = /[-.\d]+/.exec(unformattedValue);
139
145
  if (!match) {
140
146
  return '';
@@ -142,22 +148,20 @@ var CurrencyHelper = /** @class */ (function () {
142
148
  var token = match[0].substr(0, MAX_ALLOWED_CHARS);
143
149
  for (var i = token.length; i >= 0; --i) {
144
150
  var result = token.substr(0, i);
145
- if (_a.isValidString(result, options)) {
151
+ if (CurrencyHelper.isValidString(result, options)) {
146
152
  return result;
147
153
  }
148
154
  }
149
155
  return '';
150
156
  };
151
157
  CurrencyHelper.destructString = function (value) {
152
- var match = /^(-)?(\d*)?(\.)?(\d*)?(e)?([-+]?\d+)?$/.exec(value);
158
+ var match = /^(-)?(\d*)?(\.)?(\d*)?$/.exec(value);
153
159
  if (!match) {
154
160
  return null;
155
161
  }
156
- var _b = match[1], sign = _b === void 0 ? '' : _b, _c = match[2], integer = _c === void 0 ? '' : _c, _d = match[3], delimiter = _d === void 0 ? '' : _d, _e = match[4], fraction = _e === void 0 ? '' : _e, _f = match[6], exponent = _f === void 0 ? '' : _f;
157
- return { sign: sign, integer: integer, delimiter: delimiter, fraction: fraction, exponent: exponent };
162
+ var _a = match[1], sign = _a === void 0 ? '' : _a, _b = match[2], integer = _b === void 0 ? '' : _b, _c = match[3], delimiter = _c === void 0 ? '' : _c, _d = match[4], fraction = _d === void 0 ? '' : _d;
163
+ return { sign: sign, integer: integer, delimiter: delimiter, fraction: fraction };
158
164
  };
159
- var _a;
160
- _a = CurrencyHelper;
161
165
  CurrencyHelper.defaultOptions = {
162
166
  fractionDigits: null,
163
167
  hideTrailingZeros: false,
@@ -168,16 +172,16 @@ var CurrencyHelper = /** @class */ (function () {
168
172
  if (!number.toString().includes('e')) {
169
173
  return number.toString();
170
174
  }
171
- var destructed = _a.destructString(number.toExponential());
172
- if (destructed === null) {
175
+ var match = /^(-)?(\d*)(?:\.(\d*))?e([+-]?\d+)$/.exec(number.toExponential());
176
+ if (!match) {
173
177
  return '';
174
178
  }
175
- var _b = destructed.sign, sign = _b === void 0 ? '' : _b, integer = destructed.integer, fraction = destructed.fraction, exponent = destructed.exponent;
176
- var intExponent = parseInt(exponent || '0');
179
+ var _a = match[1], sign = _a === void 0 ? '' : _a, _b = match[2], integer = _b === void 0 ? '' : _b, _c = match[3], fraction = _c === void 0 ? '' : _c, _d = match[4], exponent = _d === void 0 ? '0' : _d;
180
+ var intExponent = parseInt(exponent);
177
181
  if (intExponent > 0) {
178
182
  return [sign, integer, fraction, '0'.repeat(intExponent - fraction.length)].join('');
179
183
  }
180
- return [sign, '0.', ' 0'.repeat(-intExponent - 1), integer, fraction].join('');
184
+ return [sign, '0.', '0'.repeat(-intExponent - 1), integer, fraction].join('');
181
185
  };
182
186
  return CurrencyHelper;
183
187
  }());
@@ -1 +1 @@
1
- {"version":3,"file":"CurrencyHelper.js","sourceRoot":"","sources":["CurrencyHelper.tsx"],"names":[],"mappings":"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","sourcesContent":["import { isSafari } from '../../lib/client.js';\nimport { isNonNullable, isNullable } from '../../lib/utils.js';\nimport type { Nullable } from '../../typings/utility-types.js';\nimport { MAX_ALLOWED_CHARS, MAX_SAFE_DIGITS, MINUS_SIGN, SPACE, THIN_SPACE } from './constants.js';\nimport type { DecimalOptions } from './CurrencyInputHelper.js';\nimport type { CursorMap } from './CursorHelper.js';\n\nexport interface DecimalFormattingOptions {\n /** Устанавливает минимальное количество отображаемых знаков после запятой. */\n fractionDigits?: Nullable<number>;\n\n /** Убирает лишние нули после запятой. */\n hideTrailingZeros?: boolean;\n\n /** Устанавливает разделители для тысячных разрядов. */\n thousandsDelimiter?: string;\n\n /** Устанавливает знак минуса. */\n minusSign?: string;\n}\n\ntype DecimalFormattingOptionsInternal = Required<DecimalFormattingOptions>;\n\nexport interface FormattingInfo {\n raw: string;\n formatted: string;\n cursorMap: CursorMap;\n}\n\nexport class CurrencyHelper {\n public static defaultOptions: DecimalFormattingOptionsInternal = {\n fractionDigits: null,\n hideTrailingZeros: false,\n thousandsDelimiter: isSafari ? SPACE : THIN_SPACE,\n minusSign: MINUS_SIGN,\n };\n\n public static getOptions(options?: Nullable<DecimalFormattingOptions>): DecimalFormattingOptionsInternal {\n return { ...CurrencyHelper.defaultOptions, ...options };\n }\n\n public static getInfo(value: string, options?: Nullable<DecimalFormattingOptions>): FormattingInfo {\n const raw = CurrencyHelper.unformatString(value);\n const formatted = CurrencyHelper.formatString(value, options);\n const cursorMap = CurrencyHelper.getCursorMap(formatted, options);\n\n return { raw, formatted, cursorMap };\n }\n\n public static getCursorMap(formatted: string, formattingOptions?: Nullable<DecimalFormattingOptions>): CursorMap {\n const options = CurrencyHelper.getOptions(formattingOptions);\n const regexp = new RegExp(options.thousandsDelimiter);\n const cursorMap: CursorMap = [];\n\n let index = formatted.length;\n let cursor = formatted.length;\n let skip = 0;\n\n while (index >= 0) {\n cursorMap[index] = cursor;\n\n const ignoredSymbol = regexp.exec(formatted[index - 1]);\n if (ignoredSymbol) {\n ++skip;\n } else {\n cursor = cursor - skip - 1;\n skip = 0;\n }\n --index;\n }\n return cursorMap;\n }\n\n public static format(value: Nullable<number>, options?: Nullable<DecimalFormattingOptions>): string {\n if (isNullable(value)) {\n return '';\n }\n return CurrencyHelper.formatString(this.toDecimalString(value), options);\n }\n\n public static parse(value: string): Nullable<number> {\n const cleaned = CurrencyHelper.unformatString(value);\n if (!cleaned) {\n return null;\n }\n\n const destructed = CurrencyHelper.destructString(cleaned);\n if (!destructed) {\n return null;\n }\n\n const result =\n destructed.sign + (destructed.integer || '0') + (destructed.delimiter || '.') + (destructed.fraction || '0');\n\n return parseFloat(result);\n }\n\n public static unformatString(value: string): string {\n return value\n .replace(/\\s/g, '')\n .replace(',', '.')\n .replace(/[\\u2212\\u002D\\uFE63\\uFF0D\\u2012\\u2013\\u2014\\u2015]/g, '-');\n }\n\n public static formatForClipboard(value: string): string {\n return CurrencyHelper.unformatString(value).replace('.', ',');\n }\n\n public static formatString(value: string, formattingOptions?: Nullable<DecimalFormattingOptions>): string {\n const unformattedValue = CurrencyHelper.unformatString(value);\n const destructed = CurrencyHelper.destructString(unformattedValue) || {\n sign: '',\n integer: '',\n delimiter: '',\n fraction: '',\n };\n\n const { sign, integer, delimiter } = destructed;\n let fraction = destructed.fraction;\n let fractionDigits = fraction.length;\n\n const options = CurrencyHelper.getOptions(formattingOptions);\n if (options.hideTrailingZeros) {\n fraction = fraction.replace(/0+$/, '');\n fractionDigits = fraction.length;\n } else if (options.fractionDigits !== null) {\n fractionDigits = options.fractionDigits;\n }\n\n const parts = [];\n\n const blockSize = 3;\n const start = ((integer.length - 1) % blockSize) - blockSize + 1;\n for (let i = start; i < integer.length; i += blockSize) {\n parts.push(integer.substring(Math.max(i, 0), i + blockSize));\n }\n\n let result = parts.join(options.thousandsDelimiter);\n\n if (delimiter || fractionDigits) {\n result += ',';\n result += fraction.padEnd(Math.min(fractionDigits, MAX_SAFE_DIGITS), '0');\n }\n\n if (sign) {\n result = options.minusSign + result;\n }\n\n return result;\n }\n\n public static isValidString(value: string, options: DecimalOptions): boolean {\n const unformattedValue = CurrencyHelper.unformatString(value);\n const destructed = CurrencyHelper.destructString(unformattedValue);\n\n if (!destructed) {\n return false;\n }\n\n const { sign, integer, delimiter, fraction } = destructed;\n\n if (options.unsigned && sign) {\n return false;\n }\n\n if (options.fractionDigits === 0 && delimiter) {\n return false;\n }\n\n const integerDigits = integer === '0' ? 0 : integer.length;\n const fractionDigits = fraction.length;\n\n if (isNonNullable(options.integerDigits) && integerDigits > options.integerDigits) {\n return false;\n }\n\n if (isNullable(options.integerDigits) && integerDigits > MAX_SAFE_DIGITS - (options.fractionDigits || 0)) {\n return false;\n }\n\n if (isNonNullable(options.fractionDigits) && fractionDigits > options.fractionDigits) {\n return false;\n }\n\n return integerDigits + fractionDigits <= MAX_SAFE_DIGITS;\n }\n\n public static extractValid(value: string, options: DecimalOptions): string {\n const unformattedValue = CurrencyHelper.unformatString(value);\n\n const match = /[-.\\d]+/.exec(unformattedValue);\n\n if (!match) {\n return '';\n }\n\n const token = match[0].substr(0, MAX_ALLOWED_CHARS);\n\n for (let i = token.length; i >= 0; --i) {\n const result = token.substr(0, i);\n if (CurrencyHelper.isValidString(result, options)) {\n return result;\n }\n }\n\n return '';\n }\n\n public static destructString(value: string): {\n sign: string;\n integer: string;\n delimiter: string;\n fraction: string;\n exponent: string;\n } | null {\n const match = /^(-)?(\\d*)?(\\.)?(\\d*)?(e)?([-+]?\\d+)?$/.exec(value);\n if (!match) {\n return null;\n }\n const [, sign = '', integer = '', delimiter = '', fraction = '', , exponent = ''] = match;\n return { sign, integer, delimiter, fraction, exponent };\n }\n\n private static toDecimalString = (number: number) => {\n if (!number.toString().includes('e')) {\n return number.toString();\n }\n const destructed = this.destructString(number.toExponential());\n if (destructed === null) {\n return '';\n }\n const { sign = '', integer, fraction, exponent } = destructed;\n const intExponent = parseInt(exponent || '0');\n if (intExponent > 0) {\n return [sign, integer, fraction, '0'.repeat(intExponent - fraction.length)].join('');\n }\n return [sign, '0.', ' 0'.repeat(-intExponent - 1), integer, fraction].join('');\n };\n}\n"]}
1
+ {"version":3,"file":"CurrencyHelper.js","sourceRoot":"","sources":["CurrencyHelper.tsx"],"names":[],"mappings":"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","sourcesContent":["import { isSafari } from '../../lib/client.js';\nimport { isNonNullable, isNullable } from '../../lib/utils.js';\nimport type { Nullable } from '../../typings/utility-types.js';\nimport { MAX_ALLOWED_CHARS, MAX_SAFE_DIGITS, MINUS_SIGN, SPACE, THIN_SPACE } from './constants.js';\nimport type { DecimalOptions } from './CurrencyInputHelper.js';\nimport type { CursorMap } from './CursorHelper.js';\n\nexport interface DecimalFormattingOptions {\n /** Устанавливает минимальное количество отображаемых знаков после запятой. */\n fractionDigits?: Nullable<number>;\n\n /** Убирает лишние нули после запятой. */\n hideTrailingZeros?: boolean;\n\n /** Устанавливает разделители для тысячных разрядов. */\n thousandsDelimiter?: string;\n\n /** Устанавливает знак минуса. */\n minusSign?: string;\n}\n\ntype DecimalFormattingOptionsInternal = Required<DecimalFormattingOptions>;\n\nexport interface FormattingInfo {\n raw: string;\n formatted: string;\n cursorMap: CursorMap;\n}\n\nexport class CurrencyHelper {\n public static defaultOptions: DecimalFormattingOptionsInternal = {\n fractionDigits: null,\n hideTrailingZeros: false,\n thousandsDelimiter: isSafari ? SPACE : THIN_SPACE,\n minusSign: MINUS_SIGN,\n };\n\n public static getOptions(options?: Nullable<DecimalFormattingOptions>): DecimalFormattingOptionsInternal {\n return { ...CurrencyHelper.defaultOptions, ...options };\n }\n\n public static getInfo(value: string, options?: Nullable<DecimalFormattingOptions>): FormattingInfo {\n const raw = CurrencyHelper.unformatString(value);\n const formatted = CurrencyHelper.formatString(value, options);\n const cursorMap = CurrencyHelper.getCursorMap(formatted, options);\n\n return { raw, formatted, cursorMap };\n }\n\n public static getCursorMap(formatted: string, formattingOptions?: Nullable<DecimalFormattingOptions>): CursorMap {\n const options = CurrencyHelper.getOptions(formattingOptions);\n const regexp = new RegExp(options.thousandsDelimiter);\n const cursorMap: CursorMap = [];\n\n let index = formatted.length;\n let cursor = formatted.length;\n let skip = 0;\n\n while (index >= 0) {\n cursorMap[index] = cursor;\n\n const ignoredSymbol = regexp.exec(formatted[index - 1]);\n if (ignoredSymbol) {\n ++skip;\n } else {\n cursor = cursor - skip - 1;\n skip = 0;\n }\n --index;\n }\n return cursorMap;\n }\n\n public static format(value: Nullable<number>, options?: Nullable<DecimalFormattingOptions>): string {\n if (isNullable(value)) {\n return '';\n }\n return CurrencyHelper.formatString(this.toDecimalString(value), options);\n }\n\n public static parse(value: string): Nullable<number> {\n const cleaned = CurrencyHelper.unformatString(value);\n if (!cleaned) {\n return null;\n }\n\n const destructed = CurrencyHelper.destructString(cleaned);\n if (!destructed) {\n return null;\n }\n\n const result =\n destructed.sign + (destructed.integer || '0') + (destructed.delimiter || '.') + (destructed.fraction || '0');\n\n return parseFloat(result);\n }\n\n public static unformatString(value: string): string {\n return value\n .replace(/\\s/g, '')\n .replace(',', '.')\n .replace(/[\\u2212\\u002D\\uFE63\\uFF0D\\u2012\\u2013\\u2014\\u2015]/g, '-');\n }\n\n public static formatForClipboard(value: string): string {\n return CurrencyHelper.unformatString(value).replace('.', ',');\n }\n\n public static formatString(value: string, formattingOptions?: Nullable<DecimalFormattingOptions>): string {\n const unformattedValue = CurrencyHelper.unformatString(value);\n const destructed = CurrencyHelper.destructString(unformattedValue) || {\n sign: '',\n integer: '',\n delimiter: '',\n fraction: '',\n };\n\n const { sign, integer, delimiter } = destructed;\n let fraction = destructed.fraction;\n let fractionDigits = fraction.length;\n\n const options = CurrencyHelper.getOptions(formattingOptions);\n if (options.hideTrailingZeros) {\n fraction = fraction.replace(/0+$/, '');\n fractionDigits = fraction.length;\n } else if (options.fractionDigits !== null) {\n fractionDigits = options.fractionDigits;\n }\n\n const parts = [];\n\n const blockSize = 3;\n const start = ((integer.length - 1) % blockSize) - blockSize + 1;\n for (let i = start; i < integer.length; i += blockSize) {\n parts.push(integer.substring(Math.max(i, 0), i + blockSize));\n }\n\n let result = parts.join(options.thousandsDelimiter);\n\n if (delimiter || fractionDigits) {\n result += ',';\n result += fraction.padEnd(Math.min(fractionDigits, MAX_SAFE_DIGITS), '0');\n }\n\n if (sign) {\n result = options.minusSign + result;\n }\n\n return result;\n }\n\n public static isValidString(value: string, options: DecimalOptions, previousValue?: string): boolean {\n const unformattedValue = CurrencyHelper.unformatString(value);\n const destructed = CurrencyHelper.destructString(unformattedValue);\n\n if (!destructed) {\n return false;\n }\n\n const { sign, integer, delimiter, fraction } = destructed;\n\n if (options.unsigned && sign) {\n return false;\n }\n\n if (options.fractionDigits === 0 && delimiter) {\n return false;\n }\n\n const integerDigits = integer === '0' ? 0 : integer.length;\n const fractionDigits = fraction.length;\n\n if (isNonNullable(options.integerDigits) && integerDigits > options.integerDigits) {\n return false;\n }\n\n if (isNullable(options.integerDigits) && integerDigits > MAX_SAFE_DIGITS - (options.fractionDigits || 0)) {\n return false;\n }\n\n if (isNonNullable(options.fractionDigits) && fractionDigits > options.fractionDigits) {\n if (previousValue === undefined) {\n return false;\n }\n const previousDestructed = CurrencyHelper.destructString(CurrencyHelper.unformatString(previousValue));\n if (!previousDestructed || fractionDigits > previousDestructed.fraction.length) {\n return false;\n }\n }\n\n return integerDigits + fractionDigits <= MAX_SAFE_DIGITS;\n }\n\n public static extractValid(value: string, options: DecimalOptions): string {\n const unformattedValue = CurrencyHelper.unformatString(value);\n\n const match = /[-.\\d]+/.exec(unformattedValue);\n\n if (!match) {\n return '';\n }\n\n const token = match[0].substr(0, MAX_ALLOWED_CHARS);\n\n for (let i = token.length; i >= 0; --i) {\n const result = token.substr(0, i);\n if (CurrencyHelper.isValidString(result, options)) {\n return result;\n }\n }\n\n return '';\n }\n\n public static destructString(value: string): {\n sign: string;\n integer: string;\n delimiter: string;\n fraction: string;\n } | null {\n const match = /^(-)?(\\d*)?(\\.)?(\\d*)?$/.exec(value);\n if (!match) {\n return null;\n }\n const [, sign = '', integer = '', delimiter = '', fraction = ''] = match;\n return { sign, integer, delimiter, fraction };\n }\n\n private static toDecimalString = (number: number) => {\n if (!number.toString().includes('e')) {\n return number.toString();\n }\n const match = /^(-)?(\\d*)(?:\\.(\\d*))?e([+-]?\\d+)$/.exec(number.toExponential());\n if (!match) {\n return '';\n }\n const [, sign = '', integer = '', fraction = '', exponent = '0'] = match;\n const intExponent = parseInt(exponent);\n if (intExponent > 0) {\n return [sign, integer, fraction, '0'.repeat(intExponent - fraction.length)].join('');\n }\n return [sign, '0.', '0'.repeat(-intExponent - 1), integer, fraction].join('');\n };\n}\n"]}
@@ -31,7 +31,7 @@ var CurrencyInputHelper = /** @class */ (function () {
31
31
  var prefix = value.substring(0, start);
32
32
  var suffix = value.substring(end);
33
33
  var combined = prefix + input + suffix;
34
- if (CurrencyHelper.isValidString(combined, options)) {
34
+ if (CurrencyHelper.isValidString(combined, options, value)) {
35
35
  return CurrencyInputHelper.insert(value, start, end, input);
36
36
  }
37
37
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"CurrencyInputHelper.js","sourceRoot":"","sources":["CurrencyInputHelper.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from '../../typings/utility-types.js';\nimport { CurrencyHelper } from './CurrencyHelper.js';\nimport { CursorHelper } from './CursorHelper.js';\nimport type { Selection } from './SelectionHelper.js';\n\nexport interface DecimalOptions {\n /** Задает допустимое количество цифр целой части. Если передан 0, или fractionDigits=15, то и в целой части допускается только 0. */\n integerDigits?: Nullable<number>;\n\n /** Устанавливает минимальное количество отображаемых знаков после запятой. */\n fractionDigits?: Nullable<number>;\n\n /** Определяет, является ли число беззнаковым. */\n unsigned?: boolean;\n}\n\nexport class CurrencyInputHelper {\n public static moveCursor(value: string, selection: Selection, step: number): number {\n if (selection.start === selection.end) {\n return CursorHelper.calculatePosition(CurrencyHelper.getInfo(value).cursorMap, selection.start, step);\n } else if (step < 0) {\n return selection.start;\n }\n\n return selection.end;\n }\n\n public static extendSelection(value: string, selection: Selection, step: number): Selection {\n const info = CurrencyHelper.getInfo(value);\n return CursorHelper.extendSelection(info.cursorMap, selection, step);\n }\n\n public static normalizeSelection(value: string, selection: Selection): Selection {\n const info = CurrencyHelper.getInfo(value);\n return CursorHelper.normalizeSelection(info.cursorMap, selection);\n }\n\n public static safeInsert(\n value: string,\n start: number,\n end: number,\n input: string,\n options: DecimalOptions,\n ): { value: string; position: number } | null {\n if (input && start === 0 && end === value.length) {\n const extracted = CurrencyHelper.extractValid(input, options);\n if (!extracted) {\n return null;\n }\n return CurrencyInputHelper.insert(value, start, end, extracted);\n }\n\n const prefix = value.substring(0, start);\n const suffix = value.substring(end);\n\n const combined = prefix + input + suffix;\n if (CurrencyHelper.isValidString(combined, options)) {\n return CurrencyInputHelper.insert(value, start, end, input);\n }\n return null;\n }\n\n public static insert(\n value: string,\n start: number,\n end: number,\n input: string,\n ): { value: string; position: number } | null {\n const prefix = value.substring(0, start);\n const suffix = value.substring(end);\n\n const info = CurrencyHelper.getInfo(value);\n const raw = CursorHelper.toRawPosition(info.cursorMap, start);\n const info2 = CurrencyHelper.getInfo(prefix + input + suffix);\n const formattedPosition = CursorHelper.toFormattedPosition(info2.cursorMap, raw + input.length);\n\n return { value: info2.formatted, position: formattedPosition };\n }\n}\n"]}
1
+ {"version":3,"file":"CurrencyInputHelper.js","sourceRoot":"","sources":["CurrencyInputHelper.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from '../../typings/utility-types.js';\nimport { CurrencyHelper } from './CurrencyHelper.js';\nimport { CursorHelper } from './CursorHelper.js';\nimport type { Selection } from './SelectionHelper.js';\n\nexport interface DecimalOptions {\n /** Задает допустимое количество цифр целой части. Если передан 0, или fractionDigits=15, то и в целой части допускается только 0. */\n integerDigits?: Nullable<number>;\n\n /** Устанавливает минимальное количество отображаемых знаков после запятой. */\n fractionDigits?: Nullable<number>;\n\n /** Определяет, является ли число беззнаковым. */\n unsigned?: boolean;\n}\n\nexport class CurrencyInputHelper {\n public static moveCursor(value: string, selection: Selection, step: number): number {\n if (selection.start === selection.end) {\n return CursorHelper.calculatePosition(CurrencyHelper.getInfo(value).cursorMap, selection.start, step);\n } else if (step < 0) {\n return selection.start;\n }\n\n return selection.end;\n }\n\n public static extendSelection(value: string, selection: Selection, step: number): Selection {\n const info = CurrencyHelper.getInfo(value);\n return CursorHelper.extendSelection(info.cursorMap, selection, step);\n }\n\n public static normalizeSelection(value: string, selection: Selection): Selection {\n const info = CurrencyHelper.getInfo(value);\n return CursorHelper.normalizeSelection(info.cursorMap, selection);\n }\n\n public static safeInsert(\n value: string,\n start: number,\n end: number,\n input: string,\n options: DecimalOptions,\n ): { value: string; position: number } | null {\n if (input && start === 0 && end === value.length) {\n const extracted = CurrencyHelper.extractValid(input, options);\n if (!extracted) {\n return null;\n }\n return CurrencyInputHelper.insert(value, start, end, extracted);\n }\n\n const prefix = value.substring(0, start);\n const suffix = value.substring(end);\n\n const combined = prefix + input + suffix;\n if (CurrencyHelper.isValidString(combined, options, value)) {\n return CurrencyInputHelper.insert(value, start, end, input);\n }\n return null;\n }\n\n public static insert(\n value: string,\n start: number,\n end: number,\n input: string,\n ): { value: string; position: number } | null {\n const prefix = value.substring(0, start);\n const suffix = value.substring(end);\n\n const info = CurrencyHelper.getInfo(value);\n const raw = CursorHelper.toRawPosition(info.cursorMap, start);\n const info2 = CurrencyHelper.getInfo(prefix + input + suffix);\n const formattedPosition = CursorHelper.toFormattedPosition(info2.cursorMap, raw + input.length);\n\n return { value: info2.formatted, position: formattedPosition };\n }\n}\n"]}
@@ -288,7 +288,10 @@ var DateInput = /** @class */ (function (_super) {
288
288
  _this.iDateMediator.clear(InternalDateComponentType.All);
289
289
  _this.setState({ selected: selected });
290
290
  }
291
- var inputMode = _this.iDateMediator.inputKey(event.key, selected, _this.state.inputMode).inputMode;
291
+ var _a = _this.iDateMediator.inputKey(event.key, selected, _this.state.inputMode), inputMode = _a.inputMode, changed = _a.changed;
292
+ if (!changed) {
293
+ _this.blink();
294
+ }
292
295
  if (!inputMode) {
293
296
  _this.ignoringDelimiter = true;
294
297
  _this.shiftSelection(1);
@@ -1 +1 @@
1
- {"version":3,"file":"DateInput.js","sourceRoot":"","sources":["DateInput.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport type { AriaAttributes, HTMLAttributes } from 'react';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { FocusControlWrapper } from '../../internal/FocusControlWrapper/index.js';\nimport { InputLikeText } from '../../internal/InputLikeText/index.js';\nimport { ConditionalHandler } from '../../lib/ConditionalHandler.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport { LENGTH_FULLDATE, MAX_FULLDATE, MIN_FULLDATE } from '../../lib/date/constants.js';\nimport { InternalDateComponentType } from '../../lib/date/types.js';\nimport type { GlobalObject } from '../../lib/globalObject.js';\nimport { locale } from '../../lib/locale/decorators.js';\nimport { REACT_MAJOR_VERSION } from '../../lib/react-is.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { rootNode } from '../../lib/rootNode/index.js';\nimport { withSize } from '../../lib/size/SizeDecorator.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport type { DatePickerLocale } from '../DatePicker/locale/index.js';\nimport { DatePickerLocaleHelper } from '../DatePicker/locale/index.js';\nimport { CalendarIcon } from './CalendarIcon.js';\nimport { DateFragmentsView } from './DateFragmentsView.js';\nimport { getStyles } from './DateInput.styles.js';\nimport { Actions, extractAction } from './helpers/DateInputKeyboardActions.js';\nimport { InternalDateMediator } from './helpers/InternalDateMediator.js';\n\nexport interface DateInputState {\n selected: InternalDateComponentType | null;\n valueFormatted: string;\n inputMode: boolean;\n focused: boolean;\n dragged: boolean;\n}\n\nexport const DateInputDataTids = {\n root: 'DateInput__root',\n icon: 'DateInput__icon',\n} as const;\n\nexport interface DateInputProps\n extends\n CommonProps,\n Pick<AriaAttributes, 'aria-describedby' | 'aria-label' | 'aria-labelledby'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'> {\n /** Устанавливает фокус на поле после окончания загрузки страницы. */\n autoFocus?: boolean;\n\n /** Значение поля. */\n value?: string;\n\n /** Меняет визуальное отображение поля на состояние ошибки. */\n error?: boolean;\n\n /** Меняет визуальное отображение поля на состояние предупреждения. */\n warning?: boolean;\n\n /** Блокирует поле. */\n disabled?: boolean;\n\n /** Минимальная дата в формате `dd.mm.yyyy`. */\n minDate?: string;\n\n /** Максимальная дата в формате `dd.mm.yyyy`. */\n maxDate?: string;\n\n /** Ширина поля. */\n width?: string | number;\n\n /** Добавляет иконку календаря. */\n withIcon?: boolean;\n\n /** Размер поля. */\n size?: SizeProp;\n\n /** Событие потери полем фокуса. */\n onBlur?: (x0: React.FocusEvent<HTMLElement>) => void;\n\n /** Событие нажатия на поле. */\n onClick?: (x0: React.MouseEvent<HTMLElement>) => void;\n\n /** Событие получения полем фокуса. */\n onFocus?: (x0: React.FocusEvent<HTMLElement>) => void;\n\n /** Событие изменения value.\n * @param value - строка в формате `dd.mm.yyyy`. */\n onValueChange?: (value: string) => void;\n\n /** Событие нажатия кнопки на клавиатуре. */\n onKeyDown?: (x0: React.KeyboardEvent<HTMLElement>) => void;\n}\n\ntype DefaultProps = Required<Pick<DateInputProps, 'value' | 'minDate' | 'maxDate' | 'width'>>;\n\n/**\n * Поле ввода для выбора даты с клавиатуры. Используется в [поле с датой](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_date-components-datepicker--docs).\n */\n@withRenderEnvironment\n@rootNode\n@locale('DatePicker', DatePickerLocaleHelper)\n@withSize\nexport class DateInput extends React.Component<DateInputProps, DateInputState> {\n public static __KONTUR_REACT_UI__ = 'DateInput';\n public static displayName = 'DateInput';\n\n public static defaultProps: DefaultProps = {\n value: '',\n minDate: MIN_FULLDATE,\n maxDate: MAX_FULLDATE,\n width: 125,\n };\n private size!: SizeProp;\n\n private getProps = createPropsGetter(DateInput.defaultProps);\n\n private iDateMediator: InternalDateMediator = new InternalDateMediator();\n private inputLikeText: InputLikeText | null = null;\n private dateFragmentsView: DateFragmentsView | null = null;\n private isMouseDown = false;\n private isMouseFocus = false;\n private ignoringDelimiter = false;\n private locale!: DatePickerLocale;\n private blurEvent: React.FocusEvent<HTMLElement> | null = null;\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private conditionalHandler = new ConditionalHandler<Actions, [React.KeyboardEvent<HTMLElement>]>()\n .add(Actions.MoveSelectionLeft, () => this.shiftSelection(-1))\n .add(Actions.MoveSelectionRight, () => this.shiftSelection(1))\n .add(Actions.Separator, () => this.pressDelimiter())\n .add(Actions.MoveSelectionFirst, () => this.selectDateComponent(this.iDateMediator.getLeftmostType()))\n .add(Actions.MoveSelectionLast, () => this.selectDateComponent(this.iDateMediator.getRightmostType()))\n .add(Actions.Increment, () => this.shiftDateComponent(1))\n .add(Actions.Decrement, () => this.shiftDateComponent(-1))\n .add(Actions.Digit, (e) => this.inputValue(e))\n .add(Actions.ClearSelection, () => this.clearSelected())\n .add(Actions.ClearOneChar, () => this.clearOneChar())\n .add(Actions.FullSelection, () => this.fullSelection())\n .add(Actions.WrongInput, () => this.blink())\n .build();\n\n constructor(props: DateInputProps) {\n super(props);\n\n this.state = {\n valueFormatted: '',\n selected: null,\n inputMode: false,\n focused: false,\n dragged: false,\n };\n }\n\n public componentDidUpdate(prevProps: DateInputProps) {\n const { value, minDate, maxDate } = this.getProps();\n if (\n prevProps.value !== value ||\n prevProps.minDate !== minDate ||\n prevProps.maxDate !== maxDate ||\n this.iDateMediator.isChangedLocale(this.locale)\n ) {\n this.updateFromProps(false);\n }\n !this.props.disabled && this.selectNode();\n }\n\n public selectNode = (): void => {\n const type = this.state.selected;\n const dateFragmentsView = this.dateFragmentsView && this.dateFragmentsView.getRootNode();\n if (type === null || !this.inputLikeText || !dateFragmentsView) {\n return;\n }\n if (type === InternalDateComponentType.All) {\n this.inputLikeText.selectInnerNode(dateFragmentsView, 0, 5);\n return;\n }\n const index = this.iDateMediator.getTypesOrder().indexOf(type);\n if (index > -1) {\n this.inputLikeText.selectInnerNode(dateFragmentsView, index * 2, index * 2 + 1);\n }\n };\n\n public componentDidMount(): void {\n this.updateFromProps(false);\n if (this.props.autoFocus) {\n this.focus();\n }\n }\n\n public blur(): void {\n if (this.inputLikeText) {\n this.inputLikeText.blur();\n }\n }\n\n public focus(): void {\n if (this.inputLikeText) {\n this.inputLikeText.focus();\n }\n }\n\n public blink(): void {\n if (this.inputLikeText) {\n this.inputLikeText.blink();\n }\n }\n\n public render(): React.JSX.Element {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { focused, selected, inputMode, valueFormatted } = this.state;\n const showValue = Boolean(focused || valueFormatted);\n const { width } = this.getProps();\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <FocusControlWrapper onBlurWhenDisabled={this.resetFocus}>\n <InputLikeText\n data-tid={DateInputDataTids.root}\n id={this.props.id}\n width={width}\n ref={this.inputLikeTextRef}\n size={this.size}\n disabled={this.props.disabled}\n error={this.props.error}\n warning={this.props.warning}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onClick={this.props.onClick}\n onKeyDown={this.handleKeyDown}\n onMouseDownCapture={this.handleMouseDownCapture}\n onPaste={this.handlePaste}\n rightIcon={this.renderIcon()}\n onDoubleClickCapture={this.handleDoubleClick}\n onMouseDragStart={this.handleMouseDragStart}\n onMouseDragEnd={this.handleMouseDragEnd}\n value={this.iDateMediator.getInternalString()}\n inputMode={'numeric'}\n takeContentWidth\n aria-describedby={this.props['aria-describedby']}\n aria-label={this.props['aria-label']}\n aria-labelledby={this.props['aria-labelledby']}\n >\n <span className={this.cx(this.styles.value(), { [this.styles.valueVisible()]: showValue })}>\n <DateFragmentsView\n ref={this.dateFragmentsViewRef}\n fragments={this.iDateMediator.getFragments()}\n onSelectDateComponent={this.handleSelectDateComponent}\n selected={selected}\n inputMode={inputMode}\n />\n </span>\n </InputLikeText>\n </FocusControlWrapper>\n </CommonWrapper>\n );\n }\n\n private renderIcon = () => {\n const { withIcon, disabled = false } = this.props;\n const size = this.size;\n\n if (withIcon) {\n const theme = this.theme;\n const icon = <CalendarIcon size={size} />;\n const iconStyles = this.cx({\n [this.styles.icon(theme)]: true,\n [this.styles.iconSmall(theme)]: size === 'small',\n [this.styles.iconMedium(theme)]: size === 'medium',\n [this.styles.iconLarge(theme)]: size === 'large',\n [this.styles.iconDisabled(theme)]: disabled,\n });\n return (\n <span className={iconStyles} data-tid={DateInputDataTids.icon}>\n {icon}\n </span>\n );\n }\n return null;\n };\n\n private handleFocus = (e: React.FocusEvent<HTMLElement>) => {\n this.setState((prevState) => ({\n focused: true,\n selected: this.isMouseDown && !prevState.focused ? prevState.selected : this.iDateMediator.getLeftmostType(),\n }));\n\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n };\n\n private resetFocus = () => this.updateValue({ focused: false, selected: null, inputMode: false }, false);\n\n private handleBlur = (e: React.FocusEvent<HTMLElement>) => {\n this.resetFocus();\n\n if (this.props.onBlur) {\n const restored = this.iDateMediator.restore();\n if (restored) {\n e.persist();\n this.blurEvent = e;\n } else {\n this.props.onBlur(e);\n }\n }\n };\n\n private handleMouseDownCapture = (e: React.MouseEvent<HTMLSpanElement>) => {\n const isFragment = this.dateFragmentsView ? this.dateFragmentsView.isFragment(e.target) : false;\n if (this.state.focused && !isFragment) {\n e.preventDefault();\n }\n this.isMouseFocus = !this.state.focused;\n this.isMouseDown = isFragment;\n };\n\n private handleSelectDateComponent = (type: InternalDateComponentType) => {\n if (!(this.isMouseFocus && this.iDateMediator.isEmpty())) {\n this.selectDateComponent(type);\n }\n this.isMouseFocus = false;\n this.isMouseDown = false;\n };\n\n private handleMouseDragStart = () => {\n this.setState({ dragged: true, selected: null });\n };\n\n private handleMouseDragEnd = () => {\n const selection = this.globalObject.getSelection?.();\n if (\n selection &&\n selection.toString().length === LENGTH_FULLDATE &&\n this.state.selected !== InternalDateComponentType.All\n ) {\n this.selectDateComponent(InternalDateComponentType.All);\n }\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (this.conditionalHandler(extractAction(e), e)) {\n e.preventDefault();\n }\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n };\n\n private handlePaste = (e: React.ClipboardEvent<HTMLElement>) => {\n const pasted = e && e.clipboardData.getData('text').trim();\n if (pasted && this.iDateMediator.validateString(pasted)) {\n this.iDateMediator.paste(pasted);\n this.updateValue();\n }\n };\n\n private handleDoubleClick = () => {\n this.selectDateComponent(InternalDateComponentType.All);\n };\n\n private inputLikeTextRef = (el: InputLikeText | null) => {\n this.inputLikeText = el;\n };\n\n private dateFragmentsViewRef = (el: DateFragmentsView | null) => {\n this.dateFragmentsView = el;\n };\n\n private selectDateComponent = (selected: InternalDateComponentType | null): void => {\n this.setState({ selected, inputMode: false });\n };\n\n private updateValue = (state: Partial<DateInputState> = {}, sync = true): void => {\n const valueFormatted = this.iDateMediator.getString();\n\n const update = () => this.setState({ ...state, valueFormatted } as DateInputState, this.emitChange);\n\n if (sync && REACT_MAJOR_VERSION >= 18) {\n ReactDOM.flushSync(update);\n } else {\n update();\n }\n };\n\n private updateFromProps = (sync: boolean): void => {\n this.iDateMediator.update(this.props, this.locale);\n\n this.updateValue({}, sync);\n };\n\n private fullSelection = (): void => {\n this.selectDateComponent(InternalDateComponentType.All);\n };\n\n private pressDelimiter = (): void => {\n const value = this.iDateMediator.get(this.state.selected);\n if (value !== null && value !== '') {\n if (!this.ignoringDelimiter) {\n this.shiftSelection(1);\n }\n this.ignoringDelimiter = false;\n }\n };\n\n private emitChange = (): void => {\n if (this.props.onValueChange) {\n const value = this.iDateMediator.getInternalString();\n if (this.props.value !== value) {\n this.props.onValueChange(value);\n }\n }\n\n // `this.blurEvent` is always null in `flushSync` without `setTimeout` due to sync update\n setTimeout(() => {\n if (this.blurEvent && this.props.onBlur) {\n this.props.onBlur(this.blurEvent);\n this.blurEvent = null;\n }\n });\n };\n\n private clearSelected = (): void => {\n const selected = this.state.selected === null ? this.iDateMediator.getLeftmostType() : this.state.selected;\n this.iDateMediator.clear(selected);\n this.updateValue({\n inputMode: false,\n selected: selected === InternalDateComponentType.All ? this.iDateMediator.getLeftmostType() : selected,\n });\n };\n\n private clearOneChar = (): void => {\n const { selected, inputMode } = this.state;\n const nextType = selected === null ? this.iDateMediator.getRightmostType() : selected;\n if (this.iDateMediator.isNull(nextType)) {\n this.shiftSelection(-1);\n return;\n }\n if (selected === InternalDateComponentType.All) {\n this.iDateMediator.clear(InternalDateComponentType.All);\n this.updateValue({ selected: this.iDateMediator.getLeftmostType() });\n return;\n }\n this.iDateMediator.deleteOneCharRight(nextType, inputMode);\n this.updateValue({\n inputMode: this.iDateMediator.get(nextType) !== null,\n selected: nextType,\n });\n };\n\n private shiftDateComponent = (step: number): void => {\n const { selected } = this.state;\n const changed = this.iDateMediator.shiftDateComponent(selected, step);\n if (!changed) {\n this.blink();\n return;\n }\n this.updateValue({\n inputMode: false,\n selected: selected === InternalDateComponentType.All ? this.iDateMediator.getLeftmostType() : selected,\n });\n };\n\n private shiftSelection = (step: number): void => {\n const selected = this.iDateMediator.getShiftedType(this.state.selected, step);\n if (selected !== this.state.selected) {\n this.setState({ selected, inputMode: false });\n }\n };\n\n private inputValue = (event: React.KeyboardEvent<HTMLElement>): void => {\n let selected = this.state.selected;\n if (selected === InternalDateComponentType.All) {\n selected = this.iDateMediator.getLeftmostType();\n this.iDateMediator.clear(InternalDateComponentType.All);\n this.setState({ selected });\n }\n\n const { inputMode } = this.iDateMediator.inputKey(event.key, selected, this.state.inputMode);\n\n if (!inputMode) {\n this.ignoringDelimiter = true;\n this.shiftSelection(1);\n }\n this.updateValue({ inputMode });\n };\n}\n"]}
1
+ {"version":3,"file":"DateInput.js","sourceRoot":"","sources":["DateInput.tsx"],"names":[],"mappings":"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","sourcesContent":["import type { Emotion } from '@emotion/css/create-instance';\nimport type { AriaAttributes, HTMLAttributes } from 'react';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport type { CommonProps } from '../../internal/CommonWrapper/index.js';\nimport { CommonWrapper } from '../../internal/CommonWrapper/index.js';\nimport { FocusControlWrapper } from '../../internal/FocusControlWrapper/index.js';\nimport { InputLikeText } from '../../internal/InputLikeText/index.js';\nimport { ConditionalHandler } from '../../lib/ConditionalHandler.js';\nimport { createPropsGetter } from '../../lib/createPropsGetter.js';\nimport { LENGTH_FULLDATE, MAX_FULLDATE, MIN_FULLDATE } from '../../lib/date/constants.js';\nimport { InternalDateComponentType } from '../../lib/date/types.js';\nimport type { GlobalObject } from '../../lib/globalObject.js';\nimport { locale } from '../../lib/locale/decorators.js';\nimport { REACT_MAJOR_VERSION } from '../../lib/react-is.js';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment/index.js';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode/index.js';\nimport { rootNode } from '../../lib/rootNode/index.js';\nimport { withSize } from '../../lib/size/SizeDecorator.js';\nimport type { Theme } from '../../lib/theming/Theme.js';\nimport { ThemeContext } from '../../lib/theming/ThemeContext.js';\nimport type { SizeProp } from '../../lib/types/props.js';\nimport type { DatePickerLocale } from '../DatePicker/locale/index.js';\nimport { DatePickerLocaleHelper } from '../DatePicker/locale/index.js';\nimport { CalendarIcon } from './CalendarIcon.js';\nimport { DateFragmentsView } from './DateFragmentsView.js';\nimport { getStyles } from './DateInput.styles.js';\nimport { Actions, extractAction } from './helpers/DateInputKeyboardActions.js';\nimport { InternalDateMediator } from './helpers/InternalDateMediator.js';\n\nexport interface DateInputState {\n selected: InternalDateComponentType | null;\n valueFormatted: string;\n inputMode: boolean;\n focused: boolean;\n dragged: boolean;\n}\n\nexport const DateInputDataTids = {\n root: 'DateInput__root',\n icon: 'DateInput__icon',\n} as const;\n\nexport interface DateInputProps\n extends\n CommonProps,\n Pick<AriaAttributes, 'aria-describedby' | 'aria-label' | 'aria-labelledby'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'> {\n /** Устанавливает фокус на поле после окончания загрузки страницы. */\n autoFocus?: boolean;\n\n /** Значение поля. */\n value?: string;\n\n /** Меняет визуальное отображение поля на состояние ошибки. */\n error?: boolean;\n\n /** Меняет визуальное отображение поля на состояние предупреждения. */\n warning?: boolean;\n\n /** Блокирует поле. */\n disabled?: boolean;\n\n /** Минимальная дата в формате `dd.mm.yyyy`. */\n minDate?: string;\n\n /** Максимальная дата в формате `dd.mm.yyyy`. */\n maxDate?: string;\n\n /** Ширина поля. */\n width?: string | number;\n\n /** Добавляет иконку календаря. */\n withIcon?: boolean;\n\n /** Размер поля. */\n size?: SizeProp;\n\n /** Событие потери полем фокуса. */\n onBlur?: (x0: React.FocusEvent<HTMLElement>) => void;\n\n /** Событие нажатия на поле. */\n onClick?: (x0: React.MouseEvent<HTMLElement>) => void;\n\n /** Событие получения полем фокуса. */\n onFocus?: (x0: React.FocusEvent<HTMLElement>) => void;\n\n /** Событие изменения value.\n * @param value - строка в формате `dd.mm.yyyy`. */\n onValueChange?: (value: string) => void;\n\n /** Событие нажатия кнопки на клавиатуре. */\n onKeyDown?: (x0: React.KeyboardEvent<HTMLElement>) => void;\n}\n\ntype DefaultProps = Required<Pick<DateInputProps, 'value' | 'minDate' | 'maxDate' | 'width'>>;\n\n/**\n * Поле ввода для выбора даты с клавиатуры. Используется в [поле с датой](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_date-components-datepicker--docs).\n */\n@withRenderEnvironment\n@rootNode\n@locale('DatePicker', DatePickerLocaleHelper)\n@withSize\nexport class DateInput extends React.Component<DateInputProps, DateInputState> {\n public static __KONTUR_REACT_UI__ = 'DateInput';\n public static displayName = 'DateInput';\n\n public static defaultProps: DefaultProps = {\n value: '',\n minDate: MIN_FULLDATE,\n maxDate: MAX_FULLDATE,\n width: 125,\n };\n private size!: SizeProp;\n\n private getProps = createPropsGetter(DateInput.defaultProps);\n\n private iDateMediator: InternalDateMediator = new InternalDateMediator();\n private inputLikeText: InputLikeText | null = null;\n private dateFragmentsView: DateFragmentsView | null = null;\n private isMouseDown = false;\n private isMouseFocus = false;\n private ignoringDelimiter = false;\n private locale!: DatePickerLocale;\n private blurEvent: React.FocusEvent<HTMLElement> | null = null;\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private conditionalHandler = new ConditionalHandler<Actions, [React.KeyboardEvent<HTMLElement>]>()\n .add(Actions.MoveSelectionLeft, () => this.shiftSelection(-1))\n .add(Actions.MoveSelectionRight, () => this.shiftSelection(1))\n .add(Actions.Separator, () => this.pressDelimiter())\n .add(Actions.MoveSelectionFirst, () => this.selectDateComponent(this.iDateMediator.getLeftmostType()))\n .add(Actions.MoveSelectionLast, () => this.selectDateComponent(this.iDateMediator.getRightmostType()))\n .add(Actions.Increment, () => this.shiftDateComponent(1))\n .add(Actions.Decrement, () => this.shiftDateComponent(-1))\n .add(Actions.Digit, (e) => this.inputValue(e))\n .add(Actions.ClearSelection, () => this.clearSelected())\n .add(Actions.ClearOneChar, () => this.clearOneChar())\n .add(Actions.FullSelection, () => this.fullSelection())\n .add(Actions.WrongInput, () => this.blink())\n .build();\n\n constructor(props: DateInputProps) {\n super(props);\n\n this.state = {\n valueFormatted: '',\n selected: null,\n inputMode: false,\n focused: false,\n dragged: false,\n };\n }\n\n public componentDidUpdate(prevProps: DateInputProps) {\n const { value, minDate, maxDate } = this.getProps();\n if (\n prevProps.value !== value ||\n prevProps.minDate !== minDate ||\n prevProps.maxDate !== maxDate ||\n this.iDateMediator.isChangedLocale(this.locale)\n ) {\n this.updateFromProps(false);\n }\n !this.props.disabled && this.selectNode();\n }\n\n public selectNode = (): void => {\n const type = this.state.selected;\n const dateFragmentsView = this.dateFragmentsView && this.dateFragmentsView.getRootNode();\n if (type === null || !this.inputLikeText || !dateFragmentsView) {\n return;\n }\n if (type === InternalDateComponentType.All) {\n this.inputLikeText.selectInnerNode(dateFragmentsView, 0, 5);\n return;\n }\n const index = this.iDateMediator.getTypesOrder().indexOf(type);\n if (index > -1) {\n this.inputLikeText.selectInnerNode(dateFragmentsView, index * 2, index * 2 + 1);\n }\n };\n\n public componentDidMount(): void {\n this.updateFromProps(false);\n if (this.props.autoFocus) {\n this.focus();\n }\n }\n\n public blur(): void {\n if (this.inputLikeText) {\n this.inputLikeText.blur();\n }\n }\n\n public focus(): void {\n if (this.inputLikeText) {\n this.inputLikeText.focus();\n }\n }\n\n public blink(): void {\n if (this.inputLikeText) {\n this.inputLikeText.blink();\n }\n }\n\n public render(): React.JSX.Element {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { focused, selected, inputMode, valueFormatted } = this.state;\n const showValue = Boolean(focused || valueFormatted);\n const { width } = this.getProps();\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <FocusControlWrapper onBlurWhenDisabled={this.resetFocus}>\n <InputLikeText\n data-tid={DateInputDataTids.root}\n id={this.props.id}\n width={width}\n ref={this.inputLikeTextRef}\n size={this.size}\n disabled={this.props.disabled}\n error={this.props.error}\n warning={this.props.warning}\n onBlur={this.handleBlur}\n onFocus={this.handleFocus}\n onClick={this.props.onClick}\n onKeyDown={this.handleKeyDown}\n onMouseDownCapture={this.handleMouseDownCapture}\n onPaste={this.handlePaste}\n rightIcon={this.renderIcon()}\n onDoubleClickCapture={this.handleDoubleClick}\n onMouseDragStart={this.handleMouseDragStart}\n onMouseDragEnd={this.handleMouseDragEnd}\n value={this.iDateMediator.getInternalString()}\n inputMode={'numeric'}\n takeContentWidth\n aria-describedby={this.props['aria-describedby']}\n aria-label={this.props['aria-label']}\n aria-labelledby={this.props['aria-labelledby']}\n >\n <span className={this.cx(this.styles.value(), { [this.styles.valueVisible()]: showValue })}>\n <DateFragmentsView\n ref={this.dateFragmentsViewRef}\n fragments={this.iDateMediator.getFragments()}\n onSelectDateComponent={this.handleSelectDateComponent}\n selected={selected}\n inputMode={inputMode}\n />\n </span>\n </InputLikeText>\n </FocusControlWrapper>\n </CommonWrapper>\n );\n }\n\n private renderIcon = () => {\n const { withIcon, disabled = false } = this.props;\n const size = this.size;\n\n if (withIcon) {\n const theme = this.theme;\n const icon = <CalendarIcon size={size} />;\n const iconStyles = this.cx({\n [this.styles.icon(theme)]: true,\n [this.styles.iconSmall(theme)]: size === 'small',\n [this.styles.iconMedium(theme)]: size === 'medium',\n [this.styles.iconLarge(theme)]: size === 'large',\n [this.styles.iconDisabled(theme)]: disabled,\n });\n return (\n <span className={iconStyles} data-tid={DateInputDataTids.icon}>\n {icon}\n </span>\n );\n }\n return null;\n };\n\n private handleFocus = (e: React.FocusEvent<HTMLElement>) => {\n this.setState((prevState) => ({\n focused: true,\n selected: this.isMouseDown && !prevState.focused ? prevState.selected : this.iDateMediator.getLeftmostType(),\n }));\n\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n };\n\n private resetFocus = () => this.updateValue({ focused: false, selected: null, inputMode: false }, false);\n\n private handleBlur = (e: React.FocusEvent<HTMLElement>) => {\n this.resetFocus();\n\n if (this.props.onBlur) {\n const restored = this.iDateMediator.restore();\n if (restored) {\n e.persist();\n this.blurEvent = e;\n } else {\n this.props.onBlur(e);\n }\n }\n };\n\n private handleMouseDownCapture = (e: React.MouseEvent<HTMLSpanElement>) => {\n const isFragment = this.dateFragmentsView ? this.dateFragmentsView.isFragment(e.target) : false;\n if (this.state.focused && !isFragment) {\n e.preventDefault();\n }\n this.isMouseFocus = !this.state.focused;\n this.isMouseDown = isFragment;\n };\n\n private handleSelectDateComponent = (type: InternalDateComponentType) => {\n if (!(this.isMouseFocus && this.iDateMediator.isEmpty())) {\n this.selectDateComponent(type);\n }\n this.isMouseFocus = false;\n this.isMouseDown = false;\n };\n\n private handleMouseDragStart = () => {\n this.setState({ dragged: true, selected: null });\n };\n\n private handleMouseDragEnd = () => {\n const selection = this.globalObject.getSelection?.();\n if (\n selection &&\n selection.toString().length === LENGTH_FULLDATE &&\n this.state.selected !== InternalDateComponentType.All\n ) {\n this.selectDateComponent(InternalDateComponentType.All);\n }\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (this.conditionalHandler(extractAction(e), e)) {\n e.preventDefault();\n }\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n };\n\n private handlePaste = (e: React.ClipboardEvent<HTMLElement>) => {\n const pasted = e && e.clipboardData.getData('text').trim();\n if (pasted && this.iDateMediator.validateString(pasted)) {\n this.iDateMediator.paste(pasted);\n this.updateValue();\n }\n };\n\n private handleDoubleClick = () => {\n this.selectDateComponent(InternalDateComponentType.All);\n };\n\n private inputLikeTextRef = (el: InputLikeText | null) => {\n this.inputLikeText = el;\n };\n\n private dateFragmentsViewRef = (el: DateFragmentsView | null) => {\n this.dateFragmentsView = el;\n };\n\n private selectDateComponent = (selected: InternalDateComponentType | null): void => {\n this.setState({ selected, inputMode: false });\n };\n\n private updateValue = (state: Partial<DateInputState> = {}, sync = true): void => {\n const valueFormatted = this.iDateMediator.getString();\n\n const update = () => this.setState({ ...state, valueFormatted } as DateInputState, this.emitChange);\n\n if (sync && REACT_MAJOR_VERSION >= 18) {\n ReactDOM.flushSync(update);\n } else {\n update();\n }\n };\n\n private updateFromProps = (sync: boolean): void => {\n this.iDateMediator.update(this.props, this.locale);\n\n this.updateValue({}, sync);\n };\n\n private fullSelection = (): void => {\n this.selectDateComponent(InternalDateComponentType.All);\n };\n\n private pressDelimiter = (): void => {\n const value = this.iDateMediator.get(this.state.selected);\n if (value !== null && value !== '') {\n if (!this.ignoringDelimiter) {\n this.shiftSelection(1);\n }\n this.ignoringDelimiter = false;\n }\n };\n\n private emitChange = (): void => {\n if (this.props.onValueChange) {\n const value = this.iDateMediator.getInternalString();\n if (this.props.value !== value) {\n this.props.onValueChange(value);\n }\n }\n\n // `this.blurEvent` is always null in `flushSync` without `setTimeout` due to sync update\n setTimeout(() => {\n if (this.blurEvent && this.props.onBlur) {\n this.props.onBlur(this.blurEvent);\n this.blurEvent = null;\n }\n });\n };\n\n private clearSelected = (): void => {\n const selected = this.state.selected === null ? this.iDateMediator.getLeftmostType() : this.state.selected;\n this.iDateMediator.clear(selected);\n this.updateValue({\n inputMode: false,\n selected: selected === InternalDateComponentType.All ? this.iDateMediator.getLeftmostType() : selected,\n });\n };\n\n private clearOneChar = (): void => {\n const { selected, inputMode } = this.state;\n const nextType = selected === null ? this.iDateMediator.getRightmostType() : selected;\n if (this.iDateMediator.isNull(nextType)) {\n this.shiftSelection(-1);\n return;\n }\n if (selected === InternalDateComponentType.All) {\n this.iDateMediator.clear(InternalDateComponentType.All);\n this.updateValue({ selected: this.iDateMediator.getLeftmostType() });\n return;\n }\n this.iDateMediator.deleteOneCharRight(nextType, inputMode);\n this.updateValue({\n inputMode: this.iDateMediator.get(nextType) !== null,\n selected: nextType,\n });\n };\n\n private shiftDateComponent = (step: number): void => {\n const { selected } = this.state;\n const changed = this.iDateMediator.shiftDateComponent(selected, step);\n if (!changed) {\n this.blink();\n return;\n }\n this.updateValue({\n inputMode: false,\n selected: selected === InternalDateComponentType.All ? this.iDateMediator.getLeftmostType() : selected,\n });\n };\n\n private shiftSelection = (step: number): void => {\n const selected = this.iDateMediator.getShiftedType(this.state.selected, step);\n if (selected !== this.state.selected) {\n this.setState({ selected, inputMode: false });\n }\n };\n\n private inputValue = (event: React.KeyboardEvent<HTMLElement>): void => {\n let selected = this.state.selected;\n if (selected === InternalDateComponentType.All) {\n selected = this.iDateMediator.getLeftmostType();\n this.iDateMediator.clear(InternalDateComponentType.All);\n this.setState({ selected });\n }\n\n const { inputMode, changed } = this.iDateMediator.inputKey(event.key, selected, this.state.inputMode);\n\n if (!changed) {\n this.blink();\n }\n\n if (!inputMode) {\n this.ignoringDelimiter = true;\n this.shiftSelection(1);\n }\n\n this.updateValue({ inputMode });\n };\n}\n"]}
@@ -56,6 +56,6 @@ export declare const FileUploaderFileDataTids: {
56
56
  readonly fileTypeIcon: "FileUploader__fileTypeIcon";
57
57
  };
58
58
  /**
59
- * `FileUploaderFile` показывает одну строку файла внутри [FileUploader](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_input-data-fileuploader-fileuploader--docs): имя, тип, размер, статусы и удаление.
59
+ * `FileUploaderFile` показывает одну строку файла внутри `FileUploader`: имя, тип, размер, статусы и удаление.
60
60
  */
61
61
  export declare const FileUploaderFile: import("../../lib/forwardRefAndName.js").ReactUIComponentWithRef<HTMLDivElement, FileUploaderFileProps> & Record<never, never>;
@@ -83,7 +83,7 @@ export var FileUploaderFileDataTids = {
83
83
  fileTypeIcon: 'FileUploader__fileTypeIcon',
84
84
  };
85
85
  /**
86
- * `FileUploaderFile` показывает одну строку файла внутри [FileUploader](https://tech.skbkontur.ru/kontur-ui/?path=/docs/react-ui_input-data-fileuploader-fileuploader--docs): имя, тип, размер, статусы и удаление.
86
+ * `FileUploaderFile` показывает одну строку файла внутри `FileUploader`: имя, тип, размер, статусы и удаление.
87
87
  */
88
88
  export var FileUploaderFile = forwardRefAndName('FileUploaderFile', function (props, ref) {
89
89
  var _a, _b, _c;