@skbkontur/react-ui 0.0.0-dad43298ae → 0.0.0-db9f11da2a

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 (952) hide show
  1. package/CHANGELOG.md +280 -0
  2. package/README.md +7 -7
  3. package/cjs/components/Autocomplete/Autocomplete.d.ts +18 -26
  4. package/cjs/components/Autocomplete/Autocomplete.js +64 -46
  5. package/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
  6. package/cjs/components/Button/Button.d.ts +4 -1
  7. package/cjs/components/Button/Button.js +47 -17
  8. package/cjs/components/Button/Button.js.map +1 -1
  9. package/cjs/components/Button/Button.styles.d.ts +6 -0
  10. package/cjs/components/Button/Button.styles.js +109 -76
  11. package/cjs/components/Button/Button.styles.js.map +1 -1
  12. package/cjs/components/Button/ButtonArrow.js +13 -14
  13. package/cjs/components/Button/ButtonArrow.js.map +1 -1
  14. package/cjs/components/Calendar/Calendar.d.ts +2 -0
  15. package/cjs/components/Calendar/Calendar.js +1 -0
  16. package/cjs/components/Calendar/Calendar.js.map +1 -1
  17. package/cjs/components/Calendar/CalendarDay.js +18 -2
  18. package/cjs/components/Calendar/CalendarDay.js.map +1 -1
  19. package/cjs/components/Calendar/DayCellView.js +7 -15
  20. package/cjs/components/Calendar/DayCellView.js.map +1 -1
  21. package/cjs/components/Center/Center.d.ts +2 -0
  22. package/cjs/components/Center/Center.js +1 -0
  23. package/cjs/components/Center/Center.js.map +1 -1
  24. package/cjs/components/Checkbox/Checkbox.d.ts +4 -16
  25. package/cjs/components/Checkbox/Checkbox.js +16 -32
  26. package/cjs/components/Checkbox/Checkbox.js.map +1 -1
  27. package/cjs/components/ComboBox/ComboBox.d.ts +22 -3
  28. package/cjs/components/ComboBox/ComboBox.js +26 -1
  29. package/cjs/components/ComboBox/ComboBox.js.map +1 -1
  30. package/cjs/components/CurrencyInput/CurrencyInput.d.ts +6 -24
  31. package/cjs/components/CurrencyInput/CurrencyInput.js +6 -25
  32. package/cjs/components/CurrencyInput/CurrencyInput.js.map +1 -1
  33. package/cjs/components/CurrencyInput/constants.js +1 -2
  34. package/cjs/components/CurrencyInput/constants.js.map +1 -1
  35. package/cjs/components/CurrencyLabel/CurrencyLabel.js +21 -28
  36. package/cjs/components/CurrencyLabel/CurrencyLabel.js.map +1 -1
  37. package/cjs/components/DateInput/DateInput.d.ts +6 -1
  38. package/cjs/components/DateInput/DateInput.js +45 -17
  39. package/cjs/components/DateInput/DateInput.js.map +1 -1
  40. package/cjs/components/DateInput/helpers/InternalDateMediator.d.ts +1 -1
  41. package/cjs/components/DateInput/helpers/InternalDateMediator.js +10 -1
  42. package/cjs/components/DateInput/helpers/InternalDateMediator.js.map +1 -1
  43. package/cjs/components/DatePicker/DatePicker.d.ts +6 -33
  44. package/cjs/components/DatePicker/DatePicker.js +6 -60
  45. package/cjs/components/DatePicker/DatePicker.js.map +1 -1
  46. package/cjs/components/DateRangePicker/DateRangePicker.d.ts +3 -1
  47. package/cjs/components/DateRangePicker/DateRangePicker.js +61 -23
  48. package/cjs/components/DateRangePicker/DateRangePicker.js.map +1 -1
  49. package/cjs/components/DateRangePicker/DateRangePicker.styles.d.ts +0 -1
  50. package/cjs/components/DateRangePicker/DateRangePicker.styles.js +13 -18
  51. package/cjs/components/DateRangePicker/DateRangePicker.styles.js.map +1 -1
  52. package/cjs/components/DateRangePicker/DateRangePickerInput.js +4 -8
  53. package/cjs/components/DateRangePicker/DateRangePickerInput.js.map +1 -1
  54. package/cjs/components/DateRangePicker/helpers/validateDateRangePicker.js +17 -17
  55. package/cjs/components/DateRangePicker/helpers/validateDateRangePicker.js.map +1 -1
  56. package/cjs/components/Dropdown/Dropdown.d.ts +2 -47
  57. package/cjs/components/Dropdown/Dropdown.js +2 -82
  58. package/cjs/components/Dropdown/Dropdown.js.map +1 -1
  59. package/cjs/components/DropdownMenu/DropdownMenu.d.ts +4 -2
  60. package/cjs/components/DropdownMenu/DropdownMenu.js +1 -0
  61. package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
  62. package/cjs/components/FileUploader/FileUploader.js +15 -2
  63. package/cjs/components/FileUploader/FileUploader.js.map +1 -1
  64. package/cjs/components/FxInput/FxInput.d.ts +13 -8
  65. package/cjs/components/FxInput/FxInput.js +137 -60
  66. package/cjs/components/FxInput/FxInput.js.map +1 -1
  67. package/cjs/components/FxInput/FxInputRestoreBtn.js +2 -3
  68. package/cjs/components/FxInput/FxInputRestoreBtn.js.map +1 -1
  69. package/cjs/components/Gapped/Gapped.d.ts +2 -15
  70. package/cjs/components/Gapped/Gapped.js +1 -24
  71. package/cjs/components/Gapped/Gapped.js.map +1 -1
  72. package/cjs/components/GlobalLoader/GlobalLoader.d.ts +2 -0
  73. package/cjs/components/GlobalLoader/GlobalLoader.js +1 -0
  74. package/cjs/components/GlobalLoader/GlobalLoader.js.map +1 -1
  75. package/cjs/components/Group/Group.d.ts +5 -4
  76. package/cjs/components/Group/Group.js +91 -40
  77. package/cjs/components/Group/Group.js.map +1 -1
  78. package/cjs/components/Group/Group.styles.d.ts +1 -0
  79. package/cjs/components/Group/Group.styles.js +12 -6
  80. package/cjs/components/Group/Group.styles.js.map +1 -1
  81. package/cjs/components/Hint/Hint.d.ts +2 -0
  82. package/cjs/components/Hint/Hint.js +1 -0
  83. package/cjs/components/Hint/Hint.js.map +1 -1
  84. package/cjs/components/Input/Input.d.ts +6 -5
  85. package/cjs/components/Input/Input.js +17 -47
  86. package/cjs/components/Input/Input.js.map +1 -1
  87. package/cjs/components/Input/Input.styles.d.ts +0 -1
  88. package/cjs/components/Input/Input.styles.js +8 -19
  89. package/cjs/components/Input/Input.styles.js.map +1 -1
  90. package/cjs/components/Input/InputLayout/InputLayout.d.ts +1 -0
  91. package/cjs/components/Input/InputLayout/InputLayout.js +4 -2
  92. package/cjs/components/Input/InputLayout/InputLayout.js.map +1 -1
  93. package/cjs/components/Kebab/Kebab.d.ts +4 -2
  94. package/cjs/components/Kebab/Kebab.js +9 -29
  95. package/cjs/components/Kebab/Kebab.js.map +1 -1
  96. package/cjs/components/Link/Link.d.ts +2 -0
  97. package/cjs/components/Link/Link.js +15 -1
  98. package/cjs/components/Link/Link.js.map +1 -1
  99. package/cjs/components/Link/Link.mixins.js +1 -2
  100. package/cjs/components/Link/Link.mixins.js.map +1 -1
  101. package/cjs/components/Link/Link.styles.js +3 -2
  102. package/cjs/components/Link/Link.styles.js.map +1 -1
  103. package/cjs/components/Loader/Loader.d.ts +7 -36
  104. package/cjs/components/Loader/Loader.js +6 -56
  105. package/cjs/components/Loader/Loader.js.map +1 -1
  106. package/cjs/components/MaskedInput/ColorableInputElement/ColorableInputElement.d.ts +1 -0
  107. package/cjs/components/MaskedInput/ColorableInputElement/ColorableInputElement.js +107 -78
  108. package/cjs/components/MaskedInput/ColorableInputElement/ColorableInputElement.js.map +1 -1
  109. package/cjs/components/MaskedInput/FixedIMaskInput.js +3 -2
  110. package/cjs/components/MaskedInput/FixedIMaskInput.js.map +1 -1
  111. package/cjs/components/MaskedInput/MaskedInput.d.ts +9 -0
  112. package/cjs/components/MaskedInput/MaskedInput.js +43 -4
  113. package/cjs/components/MaskedInput/MaskedInput.js.map +1 -1
  114. package/cjs/components/MenuItem/MenuItem.d.ts +2 -12
  115. package/cjs/components/MenuItem/MenuItem.js +2 -22
  116. package/cjs/components/MenuItem/MenuItem.js.map +1 -1
  117. package/cjs/components/MiniModal/MiniModal.styles.d.ts +1 -0
  118. package/cjs/components/MiniModal/MiniModal.styles.js +14 -7
  119. package/cjs/components/MiniModal/MiniModal.styles.js.map +1 -1
  120. package/cjs/components/MiniModal/MiniModalBody.js +17 -2
  121. package/cjs/components/MiniModal/MiniModalBody.js.map +1 -1
  122. package/cjs/components/Modal/Modal.styles.d.ts +2 -1
  123. package/cjs/components/Modal/Modal.styles.js +40 -32
  124. package/cjs/components/Modal/Modal.styles.js.map +1 -1
  125. package/cjs/components/Modal/ModalBody.d.ts +2 -0
  126. package/cjs/components/Modal/ModalBody.js +1 -0
  127. package/cjs/components/Modal/ModalBody.js.map +1 -1
  128. package/cjs/components/Modal/ModalHeader.d.ts +5 -0
  129. package/cjs/components/Modal/ModalHeader.js +8 -1
  130. package/cjs/components/Modal/ModalHeader.js.map +1 -1
  131. package/cjs/components/Modal/ModalSeparator.js +1 -1
  132. package/cjs/components/Modal/ModalSeparator.js.map +1 -1
  133. package/cjs/components/Paging/DotsIcon.d.ts +3 -0
  134. package/cjs/components/Paging/DotsIcon.js +13 -0
  135. package/cjs/components/Paging/DotsIcon.js.map +1 -0
  136. package/cjs/components/Paging/ForwardIcon.d.ts +3 -0
  137. package/cjs/components/Paging/ForwardIcon.js +13 -1
  138. package/cjs/components/Paging/ForwardIcon.js.map +1 -1
  139. package/cjs/components/Paging/NavigationHelper.d.ts +3 -2
  140. package/cjs/components/Paging/NavigationHelper.js +8 -6
  141. package/cjs/components/Paging/NavigationHelper.js.map +1 -1
  142. package/cjs/components/Paging/Paging.d.ts +13 -2
  143. package/cjs/components/Paging/Paging.js +120 -50
  144. package/cjs/components/Paging/Paging.js.map +1 -1
  145. package/cjs/components/Paging/Paging.styles.d.ts +24 -1
  146. package/cjs/components/Paging/Paging.styles.js +151 -22
  147. package/cjs/components/Paging/Paging.styles.js.map +1 -1
  148. package/cjs/components/Paging/PagingHelper.d.ts +1 -1
  149. package/cjs/components/Paging/PagingHelper.js +18 -11
  150. package/cjs/components/Paging/PagingHelper.js.map +1 -1
  151. package/cjs/components/PasswordInput/PasswordInput.d.ts +5 -12
  152. package/cjs/components/PasswordInput/PasswordInput.js +21 -32
  153. package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
  154. package/cjs/components/Radio/Radio.d.ts +4 -1
  155. package/cjs/components/Radio/Radio.js +7 -4
  156. package/cjs/components/Radio/Radio.js.map +1 -1
  157. package/cjs/components/RadioGroup/RadioGroup.d.ts +3 -0
  158. package/cjs/components/RadioGroup/RadioGroup.js +19 -1
  159. package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
  160. package/cjs/components/RadioGroup/RadioGroup.styles.d.ts +1 -0
  161. package/cjs/components/RadioGroup/RadioGroup.styles.js +10 -4
  162. package/cjs/components/RadioGroup/RadioGroup.styles.js.map +1 -1
  163. package/cjs/components/ScrollContainer/ScrollContainer.d.ts +2 -9
  164. package/cjs/components/ScrollContainer/ScrollContainer.js +2 -11
  165. package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
  166. package/cjs/components/Select/Select.d.ts +7 -1
  167. package/cjs/components/Select/Select.js +13 -6
  168. package/cjs/components/Select/Select.js.map +1 -1
  169. package/cjs/components/SidePage/SidePage.js +4 -2
  170. package/cjs/components/SidePage/SidePage.js.map +1 -1
  171. package/cjs/components/SidePage/SidePage.styles.d.ts +3 -1
  172. package/cjs/components/SidePage/SidePage.styles.js +52 -38
  173. package/cjs/components/SidePage/SidePage.styles.js.map +1 -1
  174. package/cjs/components/SidePage/SidePageBody.d.ts +2 -0
  175. package/cjs/components/SidePage/SidePageBody.js +1 -0
  176. package/cjs/components/SidePage/SidePageBody.js.map +1 -1
  177. package/cjs/components/SidePage/SidePageContainer.d.ts +2 -0
  178. package/cjs/components/SidePage/SidePageContainer.js +1 -0
  179. package/cjs/components/SidePage/SidePageContainer.js.map +1 -1
  180. package/cjs/components/SidePage/SidePageFooter.d.ts +2 -0
  181. package/cjs/components/SidePage/SidePageFooter.js +1 -0
  182. package/cjs/components/SidePage/SidePageFooter.js.map +1 -1
  183. package/cjs/components/SidePage/SidePageHeader.d.ts +12 -2
  184. package/cjs/components/SidePage/SidePageHeader.js +63 -19
  185. package/cjs/components/SidePage/SidePageHeader.js.map +1 -1
  186. package/cjs/components/SingleToast/SingleToast.d.ts +33 -3
  187. package/cjs/components/SingleToast/SingleToast.js +58 -3
  188. package/cjs/components/SingleToast/SingleToast.js.map +1 -1
  189. package/cjs/components/Spinner/Spinner.d.ts +2 -18
  190. package/cjs/components/Spinner/Spinner.js +2 -32
  191. package/cjs/components/Spinner/Spinner.js.map +1 -1
  192. package/cjs/components/Sticky/Sticky.d.ts +5 -13
  193. package/cjs/components/Sticky/Sticky.js +12 -18
  194. package/cjs/components/Sticky/Sticky.js.map +1 -1
  195. package/cjs/components/Switcher/Switcher.d.ts +6 -21
  196. package/cjs/components/Switcher/Switcher.js +11 -20
  197. package/cjs/components/Switcher/Switcher.js.map +1 -1
  198. package/cjs/components/Switcher/Switcher.styles.d.ts +1 -0
  199. package/cjs/components/Switcher/Switcher.styles.js +17 -9
  200. package/cjs/components/Switcher/Switcher.styles.js.map +1 -1
  201. package/cjs/components/Tabs/Indicator.d.ts +2 -0
  202. package/cjs/components/Tabs/Indicator.js +1 -0
  203. package/cjs/components/Tabs/Indicator.js.map +1 -1
  204. package/cjs/components/Tabs/Tab.d.ts +2 -0
  205. package/cjs/components/Tabs/Tab.js +1 -0
  206. package/cjs/components/Tabs/Tab.js.map +1 -1
  207. package/cjs/components/Tabs/Tabs.d.ts +2 -0
  208. package/cjs/components/Tabs/Tabs.js +1 -0
  209. package/cjs/components/Tabs/Tabs.js.map +1 -1
  210. package/cjs/components/Textarea/Textarea.d.ts +10 -46
  211. package/cjs/components/Textarea/Textarea.js +23 -60
  212. package/cjs/components/Textarea/Textarea.js.map +1 -1
  213. package/cjs/components/Textarea/Textarea.styles.js +3 -2
  214. package/cjs/components/Textarea/Textarea.styles.js.map +1 -1
  215. package/cjs/components/Textarea/TextareaCounter.js +2 -13
  216. package/cjs/components/Textarea/TextareaCounter.js.map +1 -1
  217. package/cjs/components/Toast/Toast.d.ts +62 -13
  218. package/cjs/components/Toast/Toast.js +119 -12
  219. package/cjs/components/Toast/Toast.js.map +1 -1
  220. package/cjs/components/Toast/ToastStatic.d.ts +3 -2
  221. package/cjs/components/Toast/ToastStatic.js.map +1 -1
  222. package/cjs/components/Toast/ToastView.d.ts +8 -16
  223. package/cjs/components/Toast/ToastView.js +19 -22
  224. package/cjs/components/Toast/ToastView.js.map +1 -1
  225. package/cjs/components/Toast/ToastView.styles.d.ts +4 -0
  226. package/cjs/components/Toast/ToastView.styles.js +43 -9
  227. package/cjs/components/Toast/ToastView.styles.js.map +1 -1
  228. package/cjs/components/Toggle/Toggle.d.ts +4 -11
  229. package/cjs/components/Toggle/Toggle.js +4 -14
  230. package/cjs/components/Toggle/Toggle.js.map +1 -1
  231. package/cjs/components/Token/Token.d.ts +2 -0
  232. package/cjs/components/Token/Token.js +1 -0
  233. package/cjs/components/Token/Token.js.map +1 -1
  234. package/cjs/components/TokenInput/TokenInput.d.ts +8 -3
  235. package/cjs/components/TokenInput/TokenInput.js +44 -30
  236. package/cjs/components/TokenInput/TokenInput.js.map +1 -1
  237. package/cjs/components/TokenInput/TokenInputMenu.d.ts +12 -3
  238. package/cjs/components/TokenInput/TokenInputMenu.js +23 -1
  239. package/cjs/components/TokenInput/TokenInputMenu.js.map +1 -1
  240. package/cjs/components/Tooltip/Tooltip.d.ts +14 -8
  241. package/cjs/components/Tooltip/Tooltip.js +102 -17
  242. package/cjs/components/Tooltip/Tooltip.js.map +1 -1
  243. package/cjs/components/Tooltip/Tooltip.styles.d.ts +7 -1
  244. package/cjs/components/Tooltip/Tooltip.styles.js +50 -12
  245. package/cjs/components/Tooltip/Tooltip.styles.js.map +1 -1
  246. package/cjs/components/TooltipMenu/TooltipMenu.d.ts +4 -2
  247. package/cjs/components/TooltipMenu/TooltipMenu.js +1 -0
  248. package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
  249. package/cjs/index.d.ts +2 -0
  250. package/cjs/index.js +1 -0
  251. package/cjs/index.js.map +1 -1
  252. package/cjs/internal/ClearCrossIcon/ClearCrossIcon.d.ts +1 -0
  253. package/cjs/internal/ClearCrossIcon/ClearCrossIcon.js +16 -7
  254. package/cjs/internal/ClearCrossIcon/ClearCrossIcon.js.map +1 -1
  255. package/cjs/internal/ClearCrossIcon/ClearCrossIcon.styles.d.ts +3 -0
  256. package/cjs/internal/ClearCrossIcon/ClearCrossIcon.styles.js +27 -9
  257. package/cjs/internal/ClearCrossIcon/ClearCrossIcon.styles.js.map +1 -1
  258. package/cjs/internal/CommonWrapper/CommonWrapper.d.ts +2 -0
  259. package/cjs/internal/CommonWrapper/CommonWrapper.js +1 -0
  260. package/cjs/internal/CommonWrapper/CommonWrapper.js.map +1 -1
  261. package/cjs/internal/ComponentTable.js +2 -3
  262. package/cjs/internal/ComponentTable.js.map +1 -1
  263. package/cjs/internal/CustomComboBox/ComboBoxView.d.ts +12 -4
  264. package/cjs/internal/CustomComboBox/ComboBoxView.js +50 -7
  265. package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  266. package/cjs/internal/CustomComboBox/CustomComboBox.d.ts +11 -4
  267. package/cjs/internal/CustomComboBox/CustomComboBox.js +20 -5
  268. package/cjs/internal/CustomComboBox/CustomComboBox.js.map +1 -1
  269. package/cjs/internal/CustomComboBox/getComboBoxTheme.d.ts +2 -1
  270. package/cjs/internal/CustomComboBox/getComboBoxTheme.js +10 -7
  271. package/cjs/internal/CustomComboBox/getComboBoxTheme.js.map +1 -1
  272. package/cjs/internal/DateSelect/DateSelect.d.ts +0 -10
  273. package/cjs/internal/DateSelect/DateSelect.js +13 -19
  274. package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
  275. package/cjs/internal/FocusTrap/FocusTrap.d.ts +2 -0
  276. package/cjs/internal/FocusTrap/FocusTrap.js +1 -0
  277. package/cjs/internal/FocusTrap/FocusTrap.js.map +1 -1
  278. package/cjs/internal/IgnoreLayerClick/IgnoreLayerClick.js +1 -0
  279. package/cjs/internal/IgnoreLayerClick/IgnoreLayerClick.js.map +1 -1
  280. package/cjs/internal/InputLikeText/InputLikeText.d.ts +4 -3
  281. package/cjs/internal/InputLikeText/InputLikeText.js +13 -14
  282. package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
  283. package/cjs/internal/InputLikeText/InputLikeText.styles.d.ts +1 -0
  284. package/cjs/internal/InputLikeText/InputLikeText.styles.js +12 -4
  285. package/cjs/internal/InputLikeText/InputLikeText.styles.js.map +1 -1
  286. package/cjs/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.d.ts +37 -0
  287. package/cjs/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.js +235 -0
  288. package/cjs/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.js.map +1 -0
  289. package/cjs/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles.d.ts +3 -0
  290. package/cjs/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles.js +10 -0
  291. package/cjs/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles.js.map +1 -0
  292. package/cjs/internal/Menu/Menu.d.ts +2 -0
  293. package/cjs/internal/Menu/Menu.js +1 -0
  294. package/cjs/internal/Menu/Menu.js.map +1 -1
  295. package/cjs/internal/MobilePopup/MobilePopup.d.ts +2 -0
  296. package/cjs/internal/MobilePopup/MobilePopup.js +1 -0
  297. package/cjs/internal/MobilePopup/MobilePopup.js.map +1 -1
  298. package/cjs/internal/Popup/Popup.d.ts +43 -60
  299. package/cjs/internal/Popup/Popup.js +41 -81
  300. package/cjs/internal/Popup/Popup.js.map +1 -1
  301. package/cjs/internal/Popup/PopupPin.d.ts +23 -33
  302. package/cjs/internal/Popup/PopupPin.js +2 -35
  303. package/cjs/internal/Popup/PopupPin.js.map +1 -1
  304. package/cjs/internal/Popup/PopupPinNew.d.ts +31 -0
  305. package/cjs/internal/Popup/PopupPinNew.js +180 -0
  306. package/cjs/internal/Popup/PopupPinNew.js.map +1 -0
  307. package/cjs/internal/Popup/PopupPinNew.styles.d.ts +7 -0
  308. package/cjs/internal/Popup/PopupPinNew.styles.js +33 -0
  309. package/cjs/internal/Popup/PopupPinNew.styles.js.map +1 -0
  310. package/cjs/internal/PopupMenu/PopupMenu.d.ts +2 -0
  311. package/cjs/internal/PopupMenu/PopupMenu.js +1 -0
  312. package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
  313. package/cjs/internal/RenderContainer/RenderInnerContainer.d.ts +0 -6
  314. package/cjs/internal/RenderContainer/RenderInnerContainer.js +0 -9
  315. package/cjs/internal/RenderContainer/RenderInnerContainer.js.map +1 -1
  316. package/cjs/internal/RenderLayer/RenderLayer.d.ts +2 -3
  317. package/cjs/internal/RenderLayer/RenderLayer.js +3 -12
  318. package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
  319. package/cjs/internal/ThemePlayground/Playground.js +20 -16
  320. package/cjs/internal/ThemePlayground/Playground.js.map +1 -1
  321. package/cjs/internal/ThemePlayground/Playground.styles.js +5 -8
  322. package/cjs/internal/ThemePlayground/Playground.styles.js.map +1 -1
  323. package/cjs/internal/ThemePlayground/ShowcaseGroup.js +12 -1
  324. package/cjs/internal/ThemePlayground/ShowcaseGroup.js.map +1 -1
  325. package/cjs/internal/ThemePlayground/SizesGroup.js +4 -4
  326. package/cjs/internal/ThemePlayground/SizesGroup.js.map +1 -1
  327. package/cjs/internal/ThemePlayground/ThemeContextPlayground.js +1 -1
  328. package/cjs/internal/ThemePlayground/ThemeContextPlayground.js.map +1 -1
  329. package/cjs/internal/ThemePlayground/VariableValue.js +4 -4
  330. package/cjs/internal/ThemePlayground/VariableValue.js.map +1 -1
  331. package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  332. package/cjs/internal/ZIndex/ZIndex.d.ts +3 -3
  333. package/cjs/internal/ZIndex/ZIndex.js +5 -1
  334. package/cjs/internal/ZIndex/ZIndex.js.map +1 -1
  335. package/cjs/internal/icons2022/UiMenuDots3HIcon/UiMenuDots3HIcon16Regular.d.ts +2 -0
  336. package/cjs/internal/icons2022/UiMenuDots3HIcon/UiMenuDots3HIcon16Regular.js +16 -0
  337. package/cjs/internal/icons2022/UiMenuDots3HIcon/UiMenuDots3HIcon16Regular.js.map +1 -0
  338. package/cjs/internal/themes/BasicTheme.d.ts +125 -20
  339. package/cjs/internal/themes/BasicTheme.js +172 -25
  340. package/cjs/internal/themes/BasicTheme.js.map +1 -1
  341. package/cjs/internal/themes/DarkTheme5_2.js +1 -1
  342. package/cjs/internal/themes/DarkTheme5_2.js.map +1 -1
  343. package/cjs/internal/themes/DarkTheme5_3.d.ts +1 -0
  344. package/cjs/internal/themes/DarkTheme5_3.js +13 -0
  345. package/cjs/internal/themes/DarkTheme5_3.js.map +1 -0
  346. package/cjs/internal/themes/DarkTheme5_4.d.ts +1 -0
  347. package/cjs/internal/themes/DarkTheme5_4.js +18 -0
  348. package/cjs/internal/themes/DarkTheme5_4.js.map +1 -0
  349. package/cjs/internal/themes/LightTheme5_3.d.ts +1 -0
  350. package/cjs/internal/themes/LightTheme5_3.js +13 -0
  351. package/cjs/internal/themes/LightTheme5_3.js.map +1 -0
  352. package/cjs/internal/themes/LightTheme5_4.d.ts +1 -0
  353. package/cjs/internal/themes/LightTheme5_4.js +18 -0
  354. package/cjs/internal/themes/LightTheme5_4.js.map +1 -0
  355. package/cjs/internal/themes/consts.d.ts +8 -0
  356. package/cjs/internal/themes/consts.js +8 -0
  357. package/cjs/internal/themes/consts.js.map +1 -0
  358. package/cjs/lib/__stories__/Blink.creevey.mts +90 -0
  359. package/cjs/lib/blink.d.ts +15 -0
  360. package/cjs/lib/blink.js +65 -0
  361. package/cjs/lib/blink.js.map +1 -0
  362. package/cjs/lib/date/InternalDateGetter.d.ts +1 -1
  363. package/cjs/lib/date/InternalDateGetter.js +8 -1
  364. package/cjs/lib/date/InternalDateGetter.js.map +1 -1
  365. package/cjs/lib/delay.mts +3 -0
  366. package/cjs/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +11 -0
  367. package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +11 -0
  368. package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js +23 -1
  369. package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
  370. package/cjs/lib/forwardRefAndName.d.ts +1 -1
  371. package/cjs/lib/forwardRefAndName.js +0 -1
  372. package/cjs/lib/forwardRefAndName.js.map +1 -1
  373. package/cjs/lib/getMenuPositions.d.ts +21 -1
  374. package/cjs/lib/getMenuPositions.js +45 -8
  375. package/cjs/lib/getMenuPositions.js.map +1 -1
  376. package/cjs/lib/rootNode/rootNodeDecorator.d.ts +2 -1
  377. package/cjs/lib/rootNode/rootNodeDecorator.js +1 -0
  378. package/cjs/lib/rootNode/rootNodeDecorator.js.map +1 -1
  379. package/cjs/lib/size/SizeControlContext.d.ts +6 -0
  380. package/cjs/lib/size/SizeControlContext.js +16 -0
  381. package/cjs/lib/size/SizeControlContext.js.map +1 -0
  382. package/cjs/lib/size/SizeDecorator.d.ts +33 -0
  383. package/cjs/lib/size/SizeDecorator.js +41 -0
  384. package/cjs/lib/size/SizeDecorator.js.map +1 -0
  385. package/cjs/lib/size/constants.d.ts +2 -0
  386. package/cjs/lib/size/constants.js +3 -0
  387. package/cjs/lib/size/constants.js.map +1 -0
  388. package/cjs/lib/size/index.d.ts +1 -0
  389. package/cjs/lib/size/index.js +1 -0
  390. package/cjs/lib/size/index.js.map +1 -0
  391. package/cjs/lib/size/useSizeControl.d.ts +2 -0
  392. package/cjs/lib/size/useSizeControl.js +10 -0
  393. package/cjs/lib/size/useSizeControl.js.map +1 -0
  394. package/cjs/lib/theming/ThemeHelpers.d.ts +1 -1
  395. package/cjs/lib/theming/ThemeHelpers.js.map +1 -1
  396. package/cjs/lib/theming/ThemeVersions.d.ts +1 -1
  397. package/cjs/lib/theming/ThemeVersions.js.map +1 -1
  398. package/cjs/lib/theming/themes/DarkTheme.d.ts +2 -0
  399. package/cjs/lib/theming/themes/DarkTheme.js +6 -2
  400. package/cjs/lib/theming/themes/DarkTheme.js.map +1 -1
  401. package/cjs/lib/theming/themes/LightTheme.d.ts +2 -0
  402. package/cjs/lib/theming/themes/LightTheme.js +6 -2
  403. package/cjs/lib/theming/themes/LightTheme.js.map +1 -1
  404. package/cjs/lib/utils.d.ts +18 -1
  405. package/cjs/lib/utils.js +40 -4
  406. package/cjs/lib/utils.js.map +1 -1
  407. package/cjs/test-setup.d.ts +1 -0
  408. package/cjs/vitest.config.d.ts +2 -0
  409. package/components/Autocomplete/Autocomplete/Autocomplete.js +63 -51
  410. package/components/Autocomplete/Autocomplete/Autocomplete.js.map +1 -1
  411. package/components/Autocomplete/Autocomplete.d.ts +18 -26
  412. package/components/Button/Button/Button.js +45 -24
  413. package/components/Button/Button/Button.js.map +1 -1
  414. package/components/Button/Button.d.ts +4 -1
  415. package/components/Button/Button.styles/Button.styles.js +79 -61
  416. package/components/Button/Button.styles/Button.styles.js.map +1 -1
  417. package/components/Button/Button.styles.d.ts +6 -0
  418. package/components/Button/ButtonArrow/ButtonArrow.js +1 -3
  419. package/components/Button/ButtonArrow/ButtonArrow.js.map +1 -1
  420. package/components/Calendar/Calendar/Calendar.js.map +1 -1
  421. package/components/Calendar/Calendar.d.ts +2 -0
  422. package/components/Calendar/CalendarDay/CalendarDay.js +9 -2
  423. package/components/Calendar/CalendarDay/CalendarDay.js.map +1 -1
  424. package/components/Calendar/DayCellView/DayCellView.js +6 -10
  425. package/components/Calendar/DayCellView/DayCellView.js.map +1 -1
  426. package/components/Center/Center/Center.js.map +1 -1
  427. package/components/Center/Center.d.ts +2 -0
  428. package/components/Checkbox/Checkbox/Checkbox.js +12 -24
  429. package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
  430. package/components/Checkbox/Checkbox.d.ts +4 -16
  431. package/components/ComboBox/ComboBox/ComboBox.js +2 -1
  432. package/components/ComboBox/ComboBox/ComboBox.js.map +1 -1
  433. package/components/ComboBox/ComboBox.d.ts +22 -3
  434. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js +13 -36
  435. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js.map +1 -1
  436. package/components/CurrencyInput/CurrencyInput.d.ts +6 -24
  437. package/components/CurrencyInput/constants/constants.js +0 -1
  438. package/components/CurrencyInput/constants/constants.js.map +1 -1
  439. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js +10 -22
  440. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js.map +1 -1
  441. package/components/DateInput/DateInput/DateInput.js +34 -24
  442. package/components/DateInput/DateInput/DateInput.js.map +1 -1
  443. package/components/DateInput/DateInput.d.ts +6 -1
  444. package/components/DateInput/helpers/InternalDateMediator/InternalDateMediator.js +2 -2
  445. package/components/DateInput/helpers/InternalDateMediator/InternalDateMediator.js.map +1 -1
  446. package/components/DateInput/helpers/InternalDateMediator.d.ts +1 -1
  447. package/components/DatePicker/DatePicker/DatePicker.js +1 -32
  448. package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
  449. package/components/DatePicker/DatePicker.d.ts +6 -33
  450. package/components/DateRangePicker/DateRangePicker/DateRangePicker.js +41 -22
  451. package/components/DateRangePicker/DateRangePicker/DateRangePicker.js.map +1 -1
  452. package/components/DateRangePicker/DateRangePicker.d.ts +3 -1
  453. package/components/DateRangePicker/DateRangePicker.styles/DateRangePicker.styles.js +12 -15
  454. package/components/DateRangePicker/DateRangePicker.styles/DateRangePicker.styles.js.map +1 -1
  455. package/components/DateRangePicker/DateRangePicker.styles.d.ts +0 -1
  456. package/components/DateRangePicker/DateRangePickerInput/DateRangePickerInput.js +5 -8
  457. package/components/DateRangePicker/DateRangePickerInput/DateRangePickerInput.js.map +1 -1
  458. package/components/DateRangePicker/helpers/validateDateRangePicker/validateDateRangePicker.js +16 -15
  459. package/components/DateRangePicker/helpers/validateDateRangePicker/validateDateRangePicker.js.map +1 -1
  460. package/components/Dropdown/Dropdown/Dropdown.js +1 -47
  461. package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
  462. package/components/Dropdown/Dropdown.d.ts +2 -47
  463. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
  464. package/components/DropdownMenu/DropdownMenu.d.ts +4 -2
  465. package/components/FileUploader/FileUploader/FileUploader.js +8 -2
  466. package/components/FileUploader/FileUploader/FileUploader.js.map +1 -1
  467. package/components/FxInput/FxInput/FxInput.js +122 -70
  468. package/components/FxInput/FxInput/FxInput.js.map +1 -1
  469. package/components/FxInput/FxInput.d.ts +13 -8
  470. package/components/FxInput/FxInputRestoreBtn/FxInputRestoreBtn.js +2 -2
  471. package/components/FxInput/FxInputRestoreBtn/FxInputRestoreBtn.js.map +1 -1
  472. package/components/Gapped/Gapped/Gapped.js +1 -15
  473. package/components/Gapped/Gapped/Gapped.js.map +1 -1
  474. package/components/Gapped/Gapped.d.ts +2 -15
  475. package/components/GlobalLoader/GlobalLoader/GlobalLoader.js.map +1 -1
  476. package/components/GlobalLoader/GlobalLoader.d.ts +2 -0
  477. package/components/Group/Group/Group.js +64 -28
  478. package/components/Group/Group/Group.js.map +1 -1
  479. package/components/Group/Group.d.ts +5 -4
  480. package/components/Group/Group.styles/Group.styles.js +9 -6
  481. package/components/Group/Group.styles/Group.styles.js.map +1 -1
  482. package/components/Group/Group.styles.d.ts +1 -0
  483. package/components/Hint/Hint/Hint.js.map +1 -1
  484. package/components/Hint/Hint.d.ts +2 -0
  485. package/components/Input/Input/Input.js +23 -52
  486. package/components/Input/Input/Input.js.map +1 -1
  487. package/components/Input/Input.d.ts +6 -5
  488. package/components/Input/Input.styles/Input.styles.js +9 -13
  489. package/components/Input/Input.styles/Input.styles.js.map +1 -1
  490. package/components/Input/Input.styles.d.ts +0 -1
  491. package/components/Input/InputLayout/InputLayout/InputLayout.js +5 -2
  492. package/components/Input/InputLayout/InputLayout/InputLayout.js.map +1 -1
  493. package/components/Input/InputLayout/InputLayout.d.ts +1 -0
  494. package/components/Kebab/Kebab/Kebab.js +8 -26
  495. package/components/Kebab/Kebab/Kebab.js.map +1 -1
  496. package/components/Kebab/Kebab.d.ts +4 -2
  497. package/components/Link/Link/Link.js +8 -1
  498. package/components/Link/Link/Link.js.map +1 -1
  499. package/components/Link/Link.d.ts +2 -0
  500. package/components/Link/Link.mixins/Link.mixins.js +1 -1
  501. package/components/Link/Link.mixins/Link.mixins.js.map +1 -1
  502. package/components/Link/Link.styles/Link.styles.js +1 -1
  503. package/components/Link/Link.styles/Link.styles.js.map +1 -1
  504. package/components/Loader/Loader/Loader.js +2 -34
  505. package/components/Loader/Loader/Loader.js.map +1 -1
  506. package/components/Loader/Loader.d.ts +7 -36
  507. package/components/MaskedInput/ColorableInputElement/ColorableInputElement/ColorableInputElement.js +81 -66
  508. package/components/MaskedInput/ColorableInputElement/ColorableInputElement/ColorableInputElement.js.map +1 -1
  509. package/components/MaskedInput/ColorableInputElement/ColorableInputElement.d.ts +1 -0
  510. package/components/MaskedInput/FixedIMaskInput/FixedIMaskInput.js +3 -2
  511. package/components/MaskedInput/FixedIMaskInput/FixedIMaskInput.js.map +1 -1
  512. package/components/MaskedInput/MaskedInput/MaskedInput.js +28 -2
  513. package/components/MaskedInput/MaskedInput/MaskedInput.js.map +1 -1
  514. package/components/MaskedInput/MaskedInput.d.ts +9 -0
  515. package/components/MenuItem/MenuItem/MenuItem.js +1 -12
  516. package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
  517. package/components/MenuItem/MenuItem.d.ts +2 -12
  518. package/components/MiniModal/MiniModal.styles/MiniModal.styles.js +10 -7
  519. package/components/MiniModal/MiniModal.styles/MiniModal.styles.js.map +1 -1
  520. package/components/MiniModal/MiniModal.styles.d.ts +1 -0
  521. package/components/MiniModal/MiniModalBody/MiniModalBody.js +13 -5
  522. package/components/MiniModal/MiniModalBody/MiniModalBody.js.map +1 -1
  523. package/components/Modal/Modal.styles/Modal.styles.js +32 -29
  524. package/components/Modal/Modal.styles/Modal.styles.js.map +1 -1
  525. package/components/Modal/Modal.styles.d.ts +2 -1
  526. package/components/Modal/ModalBody/ModalBody.js.map +1 -1
  527. package/components/Modal/ModalBody.d.ts +2 -0
  528. package/components/Modal/ModalHeader/ModalHeader.js +3 -1
  529. package/components/Modal/ModalHeader/ModalHeader.js.map +1 -1
  530. package/components/Modal/ModalHeader.d.ts +5 -0
  531. package/components/Modal/ModalSeparator/ModalSeparator.js +1 -1
  532. package/components/Modal/ModalSeparator/ModalSeparator.js.map +1 -1
  533. package/components/Paging/DotsIcon/DotsIcon.js +14 -0
  534. package/components/Paging/DotsIcon/DotsIcon.js.map +1 -0
  535. package/components/Paging/DotsIcon/package.json +6 -0
  536. package/components/Paging/DotsIcon.d.ts +3 -0
  537. package/components/Paging/ForwardIcon/ForwardIcon.js +15 -1
  538. package/components/Paging/ForwardIcon/ForwardIcon.js.map +1 -1
  539. package/components/Paging/ForwardIcon.d.ts +3 -0
  540. package/components/Paging/NavigationHelper/NavigationHelper.js +9 -8
  541. package/components/Paging/NavigationHelper/NavigationHelper.js.map +1 -1
  542. package/components/Paging/NavigationHelper.d.ts +3 -2
  543. package/components/Paging/Paging/Paging.js +96 -47
  544. package/components/Paging/Paging/Paging.js.map +1 -1
  545. package/components/Paging/Paging.d.ts +13 -2
  546. package/components/Paging/Paging.styles/Paging.styles.js +77 -16
  547. package/components/Paging/Paging.styles/Paging.styles.js.map +1 -1
  548. package/components/Paging/Paging.styles.d.ts +24 -1
  549. package/components/Paging/PagingHelper/PagingHelper.js +16 -8
  550. package/components/Paging/PagingHelper/PagingHelper.js.map +1 -1
  551. package/components/Paging/PagingHelper.d.ts +1 -1
  552. package/components/PasswordInput/PasswordInput/PasswordInput.js +13 -25
  553. package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
  554. package/components/PasswordInput/PasswordInput.d.ts +5 -12
  555. package/components/Radio/Radio/Radio.js +7 -7
  556. package/components/Radio/Radio/Radio.js.map +1 -1
  557. package/components/Radio/Radio.d.ts +4 -1
  558. package/components/RadioGroup/RadioGroup/RadioGroup.js +23 -17
  559. package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
  560. package/components/RadioGroup/RadioGroup.d.ts +3 -0
  561. package/components/RadioGroup/RadioGroup.styles/RadioGroup.styles.js +7 -4
  562. package/components/RadioGroup/RadioGroup.styles/RadioGroup.styles.js.map +1 -1
  563. package/components/RadioGroup/RadioGroup.styles.d.ts +1 -0
  564. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +1 -9
  565. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
  566. package/components/ScrollContainer/ScrollContainer.d.ts +2 -9
  567. package/components/Select/Select/Select.js +17 -15
  568. package/components/Select/Select/Select.js.map +1 -1
  569. package/components/Select/Select.d.ts +7 -1
  570. package/components/SidePage/SidePage/SidePage.js +3 -3
  571. package/components/SidePage/SidePage/SidePage.js.map +1 -1
  572. package/components/SidePage/SidePage.styles/SidePage.styles.js +41 -35
  573. package/components/SidePage/SidePage.styles/SidePage.styles.js.map +1 -1
  574. package/components/SidePage/SidePage.styles.d.ts +3 -1
  575. package/components/SidePage/SidePageBody/SidePageBody.js.map +1 -1
  576. package/components/SidePage/SidePageBody.d.ts +2 -0
  577. package/components/SidePage/SidePageContainer/SidePageContainer.js.map +1 -1
  578. package/components/SidePage/SidePageContainer.d.ts +2 -0
  579. package/components/SidePage/SidePageFooter/SidePageFooter.js.map +1 -1
  580. package/components/SidePage/SidePageFooter.d.ts +2 -0
  581. package/components/SidePage/SidePageHeader/SidePageHeader.js +62 -35
  582. package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
  583. package/components/SidePage/SidePageHeader.d.ts +12 -2
  584. package/components/SingleToast/SingleToast/SingleToast.js +37 -12
  585. package/components/SingleToast/SingleToast/SingleToast.js.map +1 -1
  586. package/components/SingleToast/SingleToast.d.ts +33 -3
  587. package/components/Spinner/Spinner/Spinner.js +1 -18
  588. package/components/Spinner/Spinner/Spinner.js.map +1 -1
  589. package/components/Spinner/Spinner.d.ts +2 -18
  590. package/components/Sticky/Sticky/Sticky.js +10 -14
  591. package/components/Sticky/Sticky/Sticky.js.map +1 -1
  592. package/components/Sticky/Sticky.d.ts +5 -13
  593. package/components/Switcher/Switcher/Switcher.js +19 -16
  594. package/components/Switcher/Switcher/Switcher.js.map +1 -1
  595. package/components/Switcher/Switcher.d.ts +6 -21
  596. package/components/Switcher/Switcher.styles/Switcher.styles.js +12 -9
  597. package/components/Switcher/Switcher.styles/Switcher.styles.js.map +1 -1
  598. package/components/Switcher/Switcher.styles.d.ts +1 -0
  599. package/components/Tabs/Indicator/Indicator.js.map +1 -1
  600. package/components/Tabs/Indicator.d.ts +2 -0
  601. package/components/Tabs/Tab/Tab.js.map +1 -1
  602. package/components/Tabs/Tab.d.ts +2 -0
  603. package/components/Tabs/Tabs/Tabs.js.map +1 -1
  604. package/components/Tabs/Tabs.d.ts +2 -0
  605. package/components/Textarea/Textarea/Textarea.js +19 -52
  606. package/components/Textarea/Textarea/Textarea.js.map +1 -1
  607. package/components/Textarea/Textarea.d.ts +10 -46
  608. package/components/Textarea/Textarea.styles/Textarea.styles.js +1 -1
  609. package/components/Textarea/Textarea.styles/Textarea.styles.js.map +1 -1
  610. package/components/Textarea/TextareaCounter/TextareaCounter.js +1 -11
  611. package/components/Textarea/TextareaCounter/TextareaCounter.js.map +1 -1
  612. package/components/Toast/Toast/Toast.js +93 -32
  613. package/components/Toast/Toast/Toast.js.map +1 -1
  614. package/components/Toast/Toast.d.ts +62 -13
  615. package/components/Toast/ToastStatic/ToastStatic.js.map +1 -1
  616. package/components/Toast/ToastStatic.d.ts +3 -2
  617. package/components/Toast/ToastView/ToastView.js +20 -22
  618. package/components/Toast/ToastView/ToastView.js.map +1 -1
  619. package/components/Toast/ToastView.d.ts +8 -16
  620. package/components/Toast/ToastView.styles/ToastView.styles.js +17 -5
  621. package/components/Toast/ToastView.styles/ToastView.styles.js.map +1 -1
  622. package/components/Toast/ToastView.styles.d.ts +4 -0
  623. package/components/Toggle/Toggle/Toggle.js +11 -20
  624. package/components/Toggle/Toggle/Toggle.js.map +1 -1
  625. package/components/Toggle/Toggle.d.ts +4 -11
  626. package/components/Token/Token/Token.js.map +1 -1
  627. package/components/Token/Token.d.ts +2 -0
  628. package/components/TokenInput/TokenInput/TokenInput.js +49 -43
  629. package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
  630. package/components/TokenInput/TokenInput.d.ts +8 -3
  631. package/components/TokenInput/TokenInputMenu/TokenInputMenu.js +16 -6
  632. package/components/TokenInput/TokenInputMenu/TokenInputMenu.js.map +1 -1
  633. package/components/TokenInput/TokenInputMenu.d.ts +12 -3
  634. package/components/Tooltip/Tooltip/Tooltip.js +77 -26
  635. package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
  636. package/components/Tooltip/Tooltip.d.ts +14 -8
  637. package/components/Tooltip/Tooltip.styles/Tooltip.styles.js +22 -4
  638. package/components/Tooltip/Tooltip.styles/Tooltip.styles.js.map +1 -1
  639. package/components/Tooltip/Tooltip.styles.d.ts +7 -1
  640. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
  641. package/components/TooltipMenu/TooltipMenu.d.ts +4 -2
  642. package/index.d.ts +2 -0
  643. package/index.js +2 -0
  644. package/index.js.map +1 -1
  645. package/internal/ClearCrossIcon/ClearCrossIcon/ClearCrossIcon.js +21 -7
  646. package/internal/ClearCrossIcon/ClearCrossIcon/ClearCrossIcon.js.map +1 -1
  647. package/internal/ClearCrossIcon/ClearCrossIcon.d.ts +1 -0
  648. package/internal/ClearCrossIcon/ClearCrossIcon.styles/ClearCrossIcon.styles.js +14 -5
  649. package/internal/ClearCrossIcon/ClearCrossIcon.styles/ClearCrossIcon.styles.js.map +1 -1
  650. package/internal/ClearCrossIcon/ClearCrossIcon.styles.d.ts +3 -0
  651. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
  652. package/internal/CommonWrapper/CommonWrapper.d.ts +2 -0
  653. package/internal/ComponentTable/ComponentTable.js +0 -2
  654. package/internal/ComponentTable/ComponentTable.js.map +1 -1
  655. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +72 -41
  656. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
  657. package/internal/CustomComboBox/ComboBoxView.d.ts +12 -4
  658. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js +13 -7
  659. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js.map +1 -1
  660. package/internal/CustomComboBox/CustomComboBox.d.ts +11 -4
  661. package/internal/CustomComboBox/getComboBoxTheme/getComboBoxTheme.js +5 -3
  662. package/internal/CustomComboBox/getComboBoxTheme/getComboBoxTheme.js.map +1 -1
  663. package/internal/CustomComboBox/getComboBoxTheme.d.ts +2 -1
  664. package/internal/DateSelect/DateSelect/DateSelect.js +4 -11
  665. package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
  666. package/internal/DateSelect/DateSelect.d.ts +0 -10
  667. package/internal/FocusTrap/FocusTrap/FocusTrap.js.map +1 -1
  668. package/internal/FocusTrap/FocusTrap.d.ts +2 -0
  669. package/internal/IgnoreLayerClick/IgnoreLayerClick/IgnoreLayerClick.js.map +1 -1
  670. package/internal/InputLikeText/InputLikeText/InputLikeText.js +17 -28
  671. package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
  672. package/internal/InputLikeText/InputLikeText.d.ts +4 -3
  673. package/internal/InputLikeText/InputLikeText.styles/InputLikeText.styles.js +7 -4
  674. package/internal/InputLikeText/InputLikeText.styles/InputLikeText.styles.js.map +1 -1
  675. package/internal/InputLikeText/InputLikeText.styles.d.ts +1 -0
  676. package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout/InternalTextareaWithLayout.js +249 -0
  677. package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout/InternalTextareaWithLayout.js.map +1 -0
  678. package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout/package.json +6 -0
  679. package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.d.ts +37 -0
  680. package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles/InternalTextareaWithLayout.styles.js +8 -0
  681. package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles/InternalTextareaWithLayout.styles.js.map +1 -0
  682. package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles/package.json +6 -0
  683. package/internal/InternalTextareaWithLayout/InternalTextareaWithLayout.styles.d.ts +3 -0
  684. package/internal/Menu/Menu/Menu.js.map +1 -1
  685. package/internal/Menu/Menu.d.ts +2 -0
  686. package/internal/MobilePopup/MobilePopup/MobilePopup.js.map +1 -1
  687. package/internal/MobilePopup/MobilePopup.d.ts +2 -0
  688. package/internal/Popup/Popup/Popup.js +23 -69
  689. package/internal/Popup/Popup/Popup.js.map +1 -1
  690. package/internal/Popup/Popup.d.ts +43 -60
  691. package/internal/Popup/PopupPin/PopupPin.js +1 -34
  692. package/internal/Popup/PopupPin/PopupPin.js.map +1 -1
  693. package/internal/Popup/PopupPin.d.ts +23 -33
  694. package/internal/Popup/PopupPinNew/PopupPinNew.js +146 -0
  695. package/internal/Popup/PopupPinNew/PopupPinNew.js.map +1 -0
  696. package/internal/Popup/PopupPinNew/package.json +6 -0
  697. package/internal/Popup/PopupPinNew.d.ts +31 -0
  698. package/internal/Popup/PopupPinNew.styles/PopupPinNew.styles.js +20 -0
  699. package/internal/Popup/PopupPinNew.styles/PopupPinNew.styles.js.map +1 -0
  700. package/internal/Popup/PopupPinNew.styles/package.json +6 -0
  701. package/internal/Popup/PopupPinNew.styles.d.ts +7 -0
  702. package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
  703. package/internal/PopupMenu/PopupMenu.d.ts +2 -0
  704. package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js +0 -8
  705. package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js.map +1 -1
  706. package/internal/RenderContainer/RenderInnerContainer.d.ts +0 -6
  707. package/internal/RenderLayer/RenderLayer/RenderLayer.js +3 -11
  708. package/internal/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
  709. package/internal/RenderLayer/RenderLayer.d.ts +2 -3
  710. package/internal/ThemePlayground/Playground/Playground.js +21 -18
  711. package/internal/ThemePlayground/Playground/Playground.js.map +1 -1
  712. package/internal/ThemePlayground/Playground.styles/Playground.styles.js +4 -4
  713. package/internal/ThemePlayground/Playground.styles/Playground.styles.js.map +1 -1
  714. package/internal/ThemePlayground/ShowcaseGroup/ShowcaseGroup.js +6 -1
  715. package/internal/ThemePlayground/ShowcaseGroup/ShowcaseGroup.js.map +1 -1
  716. package/internal/ThemePlayground/SizesGroup/SizesGroup.js +4 -4
  717. package/internal/ThemePlayground/SizesGroup/SizesGroup.js.map +1 -1
  718. package/internal/ThemePlayground/ThemeContextPlayground/ThemeContextPlayground.js +2 -2
  719. package/internal/ThemePlayground/ThemeContextPlayground/ThemeContextPlayground.js.map +1 -1
  720. package/internal/ThemePlayground/VariableValue/VariableValue.js +4 -4
  721. package/internal/ThemePlayground/VariableValue/VariableValue.js.map +1 -1
  722. package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  723. package/internal/ZIndex/ZIndex/ZIndex.js +8 -10
  724. package/internal/ZIndex/ZIndex/ZIndex.js.map +1 -1
  725. package/internal/ZIndex/ZIndex.d.ts +3 -3
  726. package/internal/icons2022/UiMenuDots3HIcon/UiMenuDots3HIcon16Regular/UiMenuDots3HIcon16Regular.js +21 -0
  727. package/internal/icons2022/UiMenuDots3HIcon/UiMenuDots3HIcon16Regular/UiMenuDots3HIcon16Regular.js.map +1 -0
  728. package/internal/icons2022/UiMenuDots3HIcon/UiMenuDots3HIcon16Regular/package.json +6 -0
  729. package/internal/icons2022/UiMenuDots3HIcon/UiMenuDots3HIcon16Regular.d.ts +2 -0
  730. package/internal/themes/BasicTheme/BasicTheme.js +185 -30
  731. package/internal/themes/BasicTheme/BasicTheme.js.map +1 -1
  732. package/internal/themes/BasicTheme.d.ts +125 -20
  733. package/internal/themes/DarkTheme5_2/DarkTheme5_2.js +3 -3
  734. package/internal/themes/DarkTheme5_2/DarkTheme5_2.js.map +1 -1
  735. package/internal/themes/DarkTheme5_3/DarkTheme5_3.js +16 -0
  736. package/internal/themes/DarkTheme5_3/DarkTheme5_3.js.map +1 -0
  737. package/internal/themes/DarkTheme5_3/package.json +6 -0
  738. package/internal/themes/DarkTheme5_3.d.ts +1 -0
  739. package/internal/themes/DarkTheme5_4/DarkTheme5_4.js +17 -0
  740. package/internal/themes/DarkTheme5_4/DarkTheme5_4.js.map +1 -0
  741. package/internal/themes/DarkTheme5_4/package.json +6 -0
  742. package/internal/themes/DarkTheme5_4.d.ts +1 -0
  743. package/internal/themes/LightTheme5_3/LightTheme5_3.js +16 -0
  744. package/internal/themes/LightTheme5_3/LightTheme5_3.js.map +1 -0
  745. package/internal/themes/LightTheme5_3/package.json +6 -0
  746. package/internal/themes/LightTheme5_3.d.ts +1 -0
  747. package/internal/themes/LightTheme5_4/LightTheme5_4.js +17 -0
  748. package/internal/themes/LightTheme5_4/LightTheme5_4.js.map +1 -0
  749. package/internal/themes/LightTheme5_4/package.json +6 -0
  750. package/internal/themes/LightTheme5_4.d.ts +1 -0
  751. package/internal/themes/consts/consts.js +9 -0
  752. package/internal/themes/consts/consts.js.map +1 -0
  753. package/internal/themes/consts/package.json +6 -0
  754. package/internal/themes/consts.d.ts +8 -0
  755. package/lib/__stories__/Blink.creevey.mts +90 -0
  756. package/lib/blink/blink.js +63 -0
  757. package/lib/blink/blink.js.map +1 -0
  758. package/lib/blink/package.json +6 -0
  759. package/lib/blink.d.ts +15 -0
  760. package/lib/date/InternalDateGetter/InternalDateGetter.js +4 -1
  761. package/lib/date/InternalDateGetter/InternalDateGetter.js.map +1 -1
  762. package/lib/date/InternalDateGetter.d.ts +1 -1
  763. package/lib/delay.d.mts +1 -0
  764. package/lib/delay.mts +3 -0
  765. package/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +11 -0
  766. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js +12 -1
  767. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
  768. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +11 -0
  769. package/lib/forwardRefAndName/forwardRefAndName.js.map +1 -1
  770. package/lib/forwardRefAndName.d.ts +1 -1
  771. package/lib/getMenuPositions/getMenuPositions.js +33 -4
  772. package/lib/getMenuPositions/getMenuPositions.js.map +1 -1
  773. package/lib/getMenuPositions.d.ts +21 -1
  774. package/lib/rootNode/rootNodeDecorator/rootNodeDecorator.js.map +1 -1
  775. package/lib/rootNode/rootNodeDecorator.d.ts +2 -1
  776. package/lib/size/SizeControlContext/SizeControlContext.js +7 -0
  777. package/lib/size/SizeControlContext/SizeControlContext.js.map +1 -0
  778. package/lib/size/SizeControlContext/package.json +6 -0
  779. package/lib/size/SizeControlContext.d.ts +6 -0
  780. package/lib/size/SizeDecorator/SizeDecorator.js +41 -0
  781. package/lib/size/SizeDecorator/SizeDecorator.js.map +1 -0
  782. package/lib/size/SizeDecorator/package.json +6 -0
  783. package/lib/size/SizeDecorator.d.ts +33 -0
  784. package/lib/size/constants/constants.js +1 -0
  785. package/lib/size/constants/constants.js.map +1 -0
  786. package/lib/size/constants/package.json +6 -0
  787. package/lib/size/constants.d.ts +2 -0
  788. package/lib/size/index/index.js +1 -0
  789. package/lib/size/index/index.js.map +1 -0
  790. package/lib/size/index/package.json +6 -0
  791. package/lib/size/index.d.ts +1 -0
  792. package/lib/size/package.json +6 -0
  793. package/lib/size/useSizeControl/package.json +6 -0
  794. package/lib/size/useSizeControl/useSizeControl.js +7 -0
  795. package/lib/size/useSizeControl/useSizeControl.js.map +1 -0
  796. package/lib/size/useSizeControl.d.ts +2 -0
  797. package/lib/theming/ThemeHelpers/ThemeHelpers.js.map +1 -1
  798. package/lib/theming/ThemeHelpers.d.ts +1 -1
  799. package/lib/theming/ThemeVersions/ThemeVersions.js.map +1 -1
  800. package/lib/theming/ThemeVersions.d.ts +1 -1
  801. package/lib/theming/themes/DarkTheme/DarkTheme.js +5 -1
  802. package/lib/theming/themes/DarkTheme/DarkTheme.js.map +1 -1
  803. package/lib/theming/themes/DarkTheme.d.ts +2 -0
  804. package/lib/theming/themes/LightTheme/LightTheme.js +5 -1
  805. package/lib/theming/themes/LightTheme/LightTheme.js.map +1 -1
  806. package/lib/theming/themes/LightTheme.d.ts +2 -0
  807. package/lib/utils/utils.js +33 -2
  808. package/lib/utils/utils.js.map +1 -1
  809. package/lib/utils.d.ts +18 -1
  810. package/package.json +19 -36
  811. package/test-setup.d.ts +1 -0
  812. package/vitest.config.d.ts +2 -0
  813. package/cjs/components/Autocomplete/Autocomplete.md +0 -113
  814. package/cjs/components/Button/Button.md +0 -261
  815. package/cjs/components/Calendar/Calendar.md +0 -276
  816. package/cjs/components/Calendar/CalendarDay.md +0 -70
  817. package/cjs/components/Center/Center.md +0 -26
  818. package/cjs/components/Checkbox/Checkbox.md +0 -171
  819. package/cjs/components/ComboBox/ComboBox.md +0 -574
  820. package/cjs/components/CurrencyInput/CurrencyInput.md +0 -39
  821. package/cjs/components/CurrencyLabel/CurrencyLabel.md +0 -29
  822. package/cjs/components/DateInput/DateInput.md +0 -111
  823. package/cjs/components/DatePicker/DatePicker.md +0 -368
  824. package/cjs/components/Dropdown/Dropdown.md +0 -45
  825. package/cjs/components/DropdownMenu/DropdownMenu.md +0 -290
  826. package/cjs/components/FileUploader/FileUploader.md +0 -131
  827. package/cjs/components/FxInput/FxInput.md +0 -31
  828. package/cjs/components/Gapped/Gapped.md +0 -44
  829. package/cjs/components/GlobalLoader/GlobalLoader.md +0 -97
  830. package/cjs/components/Group/Group.md +0 -19
  831. package/cjs/components/Hint/Hint.md +0 -86
  832. package/cjs/components/Input/Input.md +0 -87
  833. package/cjs/components/Kebab/Kebab.md +0 -306
  834. package/cjs/components/Link/Link.md +0 -182
  835. package/cjs/components/Loader/Loader.md +0 -33
  836. package/cjs/components/MaskedInput/MaskedInput.md +0 -114
  837. package/cjs/components/MenuFooter/MenuFooter.md +0 -27
  838. package/cjs/components/MenuHeader/MenuHeader.md +0 -35
  839. package/cjs/components/MenuItem/MenuItem.md +0 -139
  840. package/cjs/components/MenuSeparator/MenuSeparator.md +0 -14
  841. package/cjs/components/MiniModal/MiniModal.md +0 -231
  842. package/cjs/components/Modal/Modal.md +0 -56
  843. package/cjs/components/Paging/Paging.md +0 -57
  844. package/cjs/components/PasswordInput/PasswordInput.md +0 -29
  845. package/cjs/components/Radio/Radio.md +0 -57
  846. package/cjs/components/RadioGroup/RadioGroup.md +0 -44
  847. package/cjs/components/ResponsiveLayout/ResponsiveLayout.md +0 -75
  848. package/cjs/components/ScrollContainer/ScrollContainer.md +0 -224
  849. package/cjs/components/Select/Select.md +0 -113
  850. package/cjs/components/SidePage/SidePage.md +0 -65
  851. package/cjs/components/SingleToast/SingleToast.md +0 -36
  852. package/cjs/components/Spinner/Spinner.md +0 -36
  853. package/cjs/components/Sticky/Sticky.md +0 -28
  854. package/cjs/components/Switcher/Switcher.md +0 -111
  855. package/cjs/components/Tabs/Tab.md +0 -73
  856. package/cjs/components/Tabs/Tabs.md +0 -54
  857. package/cjs/components/Textarea/Textarea.md +0 -58
  858. package/cjs/components/Toast/Toast.md +0 -69
  859. package/cjs/components/Toggle/Toggle.md +0 -110
  860. package/cjs/components/Token/Token.md +0 -131
  861. package/cjs/components/TokenInput/TokenInput.md +0 -308
  862. package/cjs/components/Tooltip/Tooltip.md +0 -322
  863. package/cjs/components/TooltipMenu/TooltipMenu.md +0 -241
  864. package/cjs/internal/DataTids/DATATIDS.md +0 -12
  865. package/cjs/internal/DataTids/DataTids.d.ts +0 -12
  866. package/cjs/internal/DataTids/DataTids.js +0 -50
  867. package/cjs/internal/DataTids/DataTids.js.map +0 -1
  868. package/cjs/internal/DataTids/DataTids.styles.d.ts +0 -7
  869. package/cjs/internal/DataTids/DataTids.styles.js +0 -42
  870. package/cjs/internal/DataTids/DataTids.styles.js.map +0 -1
  871. package/cjs/internal/DataTids/componentsDataTids.d.ts +0 -5
  872. package/cjs/internal/DataTids/componentsDataTids.js +0 -15
  873. package/cjs/internal/DataTids/componentsDataTids.js.map +0 -1
  874. package/cjs/internal/ThemePlayground/Playground.md +0 -7
  875. package/cjs/lib/SSRSafe.d.ts +0 -2
  876. package/cjs/lib/SSRSafe.js +0 -5
  877. package/cjs/lib/SSRSafe.js.map +0 -1
  878. package/cjs/lib/featureFlagsContext/FEATUREFLAGSCONTEXT.md +0 -64
  879. package/cjs/lib/locale/LOCALECONTEXT.md +0 -222
  880. package/cjs/lib/theming/ThemeContext.md +0 -265
  881. package/components/Autocomplete/Autocomplete.md +0 -113
  882. package/components/Button/Button.md +0 -261
  883. package/components/Calendar/Calendar.md +0 -276
  884. package/components/Calendar/CalendarDay.md +0 -70
  885. package/components/Center/Center.md +0 -26
  886. package/components/Checkbox/Checkbox.md +0 -171
  887. package/components/ComboBox/ComboBox.md +0 -574
  888. package/components/CurrencyInput/CurrencyInput.md +0 -39
  889. package/components/CurrencyLabel/CurrencyLabel.md +0 -29
  890. package/components/DateInput/DateInput.md +0 -111
  891. package/components/DatePicker/DatePicker.md +0 -368
  892. package/components/Dropdown/Dropdown.md +0 -45
  893. package/components/DropdownMenu/DropdownMenu.md +0 -290
  894. package/components/FileUploader/FileUploader.md +0 -131
  895. package/components/FxInput/FxInput.md +0 -31
  896. package/components/Gapped/Gapped.md +0 -44
  897. package/components/GlobalLoader/GlobalLoader.md +0 -97
  898. package/components/Group/Group.md +0 -19
  899. package/components/Hint/Hint.md +0 -86
  900. package/components/Input/Input.md +0 -87
  901. package/components/Kebab/Kebab.md +0 -306
  902. package/components/Link/Link.md +0 -182
  903. package/components/Loader/Loader.md +0 -33
  904. package/components/MaskedInput/MaskedInput.md +0 -114
  905. package/components/MenuFooter/MenuFooter.md +0 -27
  906. package/components/MenuHeader/MenuHeader.md +0 -35
  907. package/components/MenuItem/MenuItem.md +0 -139
  908. package/components/MenuSeparator/MenuSeparator.md +0 -14
  909. package/components/MiniModal/MiniModal.md +0 -231
  910. package/components/Modal/Modal.md +0 -56
  911. package/components/Paging/Paging.md +0 -57
  912. package/components/PasswordInput/PasswordInput.md +0 -29
  913. package/components/Radio/Radio.md +0 -57
  914. package/components/RadioGroup/RadioGroup.md +0 -44
  915. package/components/ResponsiveLayout/ResponsiveLayout.md +0 -75
  916. package/components/ScrollContainer/ScrollContainer.md +0 -224
  917. package/components/Select/Select.md +0 -113
  918. package/components/SidePage/SidePage.md +0 -65
  919. package/components/SingleToast/SingleToast.md +0 -36
  920. package/components/Spinner/Spinner.md +0 -36
  921. package/components/Sticky/Sticky.md +0 -28
  922. package/components/Switcher/Switcher.md +0 -111
  923. package/components/Tabs/Tab.md +0 -73
  924. package/components/Tabs/Tabs.md +0 -54
  925. package/components/Textarea/Textarea.md +0 -58
  926. package/components/Toast/Toast.md +0 -69
  927. package/components/Toggle/Toggle.md +0 -110
  928. package/components/Token/Token.md +0 -131
  929. package/components/TokenInput/TokenInput.md +0 -308
  930. package/components/Tooltip/Tooltip.md +0 -322
  931. package/components/TooltipMenu/TooltipMenu.md +0 -241
  932. package/internal/DataTids/DATATIDS.md +0 -12
  933. package/internal/DataTids/DataTids/DataTids.js +0 -69
  934. package/internal/DataTids/DataTids/DataTids.js.map +0 -1
  935. package/internal/DataTids/DataTids/package.json +0 -6
  936. package/internal/DataTids/DataTids.d.ts +0 -12
  937. package/internal/DataTids/DataTids.styles/DataTids.styles.js +0 -20
  938. package/internal/DataTids/DataTids.styles/DataTids.styles.js.map +0 -1
  939. package/internal/DataTids/DataTids.styles/package.json +0 -6
  940. package/internal/DataTids/DataTids.styles.d.ts +0 -7
  941. package/internal/DataTids/componentsDataTids/componentsDataTids.js +0 -12
  942. package/internal/DataTids/componentsDataTids/componentsDataTids.js.map +0 -1
  943. package/internal/DataTids/componentsDataTids/package.json +0 -6
  944. package/internal/DataTids/componentsDataTids.d.ts +0 -5
  945. package/internal/ThemePlayground/Playground.md +0 -7
  946. package/lib/SSRSafe/SSRSafe.js +0 -4
  947. package/lib/SSRSafe/SSRSafe.js.map +0 -1
  948. package/lib/SSRSafe/package.json +0 -6
  949. package/lib/SSRSafe.d.ts +0 -2
  950. package/lib/featureFlagsContext/FEATUREFLAGSCONTEXT.md +0 -64
  951. package/lib/locale/LOCALECONTEXT.md +0 -222
  952. package/lib/theming/ThemeContext.md +0 -265
@@ -1,13 +1,13 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- var _excluded = ["children", "onInput", "onFocus", "onBlur", "showOnFocus"]; /* eslint react-hooks/exhaustive-deps: 2 */
3
+ var _excluded = ["children", "onInput", "onFocus", "onBlur", "showOnFocus", "alwaysShowMask"]; /* eslint react-hooks/exhaustive-deps: 2 */
4
4
 
5
- import React, { useContext, useEffect, useImperativeHandle, useRef, useCallback, useState } from 'react';
6
- import { globalObject, isBrowser } from '@skbkontur/global-object';
5
+ import React, { useEffect, useContext, useImperativeHandle, useRef, useCallback, useState } from 'react';
7
6
  import debounce from 'lodash.debounce';
8
7
  import { ThemeContext } from "../../../../lib/theming/ThemeContext";
9
8
  import { forwardRefAndName } from "../../../../lib/forwardRefAndName";
10
9
  import { cx } from "../../../../lib/theming/Emotion";
10
+ import { isDocument, isWindow, tryGetDocument, tryGetWindow } from "../../../../lib/utils";
11
11
  import { globalClasses } from "../ColorableInputElement.styles";
12
12
 
13
13
  // Возможно придётся включить.
@@ -16,12 +16,13 @@ import { globalClasses } from "../ColorableInputElement.styles";
16
16
  // setInterval(() => window.requestAnimationFrame(() => dictionary.forEach((paint) => paint())), 1000);
17
17
 
18
18
  export var ColorableInputElement = forwardRefAndName('ColorableInputElement', function ColorableInputElement(props, ref) {
19
+ var _props$style3;
19
20
  var inputRef = useRef(null);
20
21
  var spanRef = useRef(null);
21
22
  var focused = useRef(false);
22
- var inputStyle = React.useRef();
23
+ var updateActiveTimer = useRef();
23
24
  var theme = useContext(ThemeContext);
24
- var _useState = useState(true),
25
+ var _useState = useState(Boolean(props.alwaysShowMask || !props.placeholder && (props.value || props.defaultValue))),
25
26
  active = _useState[0],
26
27
  setActive = _useState[1];
27
28
  var children = props.children,
@@ -29,40 +30,63 @@ export var ColorableInputElement = forwardRefAndName('ColorableInputElement', fu
29
30
  onFocus = props.onFocus,
30
31
  onBlur = props.onBlur,
31
32
  showOnFocus = props.showOnFocus,
33
+ alwaysShowMask = props.alwaysShowMask,
32
34
  inputProps = _objectWithoutPropertiesLoose(props, _excluded);
33
- useImperativeHandle(ref, function () {
34
- return {
35
- input: inputRef.current,
36
- getRootNode: function getRootNode() {
37
- return inputRef.current;
38
- }
39
- };
35
+ var stopUpdateActive = useCallback(function () {
36
+ clearTimeout(updateActiveTimer.current);
40
37
  }, []);
41
- useEffect(updateActive, []);
38
+ var updateActive = useCallback(function () {
39
+ stopUpdateActive();
40
+ updateActiveTimer.current = setTimeout(function () {
41
+ var nextActive = true;
42
+ if (inputRef.current) {
43
+ var _inputRef$current2;
44
+ var _inputRef$current = inputRef.current,
45
+ clientWidth = _inputRef$current.clientWidth,
46
+ scrollWidth = _inputRef$current.scrollWidth;
47
+ var scrollable = scrollWidth > clientWidth;
48
+ var placeholderShown = (_inputRef$current2 = inputRef.current) == null || (_inputRef$current2 = _inputRef$current2.parentElement) == null ? void 0 : _inputRef$current2.querySelector(':placeholder-shown');
49
+ nextActive = !(scrollable || placeholderShown);
50
+ }
51
+ setActive(nextActive);
52
+ }, 0);
53
+ }, [stopUpdateActive]);
42
54
  var paintText = useCallback(function () {
43
- var _inputRef$current, _shadow;
44
- if (!spanRef.current || !inputRef.current || !inputStyle.current || !isBrowser(globalObject)) {
55
+ var _inputRef$current4, _shadow, _shadow2, _props$style, _props$style2;
56
+ var win = tryGetWindow(inputRef.current);
57
+ var doc = tryGetDocument(inputRef.current);
58
+ if (!spanRef.current || !inputRef.current || !isWindow(win) || !isDocument(doc) || !active) {
59
+ var _inputRef$current3;
60
+ inputRef.current && (inputRef.current.style.backgroundImage = '');
61
+ (_inputRef$current3 = inputRef.current) == null || _inputRef$current3.classList.remove(globalClasses.input);
45
62
  return;
46
63
  }
47
- (_inputRef$current = inputRef.current) == null || _inputRef$current.classList.add(globalClasses.input);
64
+ (_inputRef$current4 = inputRef.current) == null || _inputRef$current4.classList.add(globalClasses.input);
48
65
  var shadow = spanRef.current.shadowRoot;
49
- var typedValueElement = (_shadow = shadow) == null ? void 0 : _shadow.getElementById('span');
50
- if (!typedValueElement) {
66
+ var typedValueElement = (_shadow = shadow) == null ? void 0 : _shadow.getElementById('typed-value');
67
+ var fullValueElement = (_shadow2 = shadow) == null ? void 0 : _shadow2.getElementById('full-value');
68
+ if (!typedValueElement || !fullValueElement) {
51
69
  shadow = spanRef.current.attachShadow({
52
70
  mode: 'open'
53
71
  });
54
- typedValueElement = globalObject.document.createElement('span');
55
- typedValueElement.setAttribute('id', 'span');
56
- shadow.appendChild(typedValueElement);
72
+ typedValueElement = doc.createElement('span');
73
+ fullValueElement = doc.createElement('span');
74
+ typedValueElement.setAttribute('id', 'typed-value');
75
+ fullValueElement.setAttribute('id', 'full-value');
76
+ shadow.append(typedValueElement, fullValueElement);
57
77
  }
58
- var style = inputStyle.current;
78
+ var style = getComputedStyle(inputRef.current);
59
79
  typedValueElement.textContent = (inputRef.current.getAttribute('data-unmasked-value') || focused.current) && inputRef.current.getAttribute('data-typed-value') || '';
80
+ fullValueElement.textContent = inputRef.current.value || inputRef.current.defaultValue || '';
60
81
  var inputRect = inputRef.current.getBoundingClientRect();
61
- var filledRect = spanRef.current.getBoundingClientRect();
62
- var threshold = filledRect.width / (inputRect.width / 100);
82
+ var typedValueRect = typedValueElement.getBoundingClientRect();
83
+ var fullValueRect = fullValueElement.getBoundingClientRect();
84
+ var threshold = typedValueRect.width / (inputRect.width / 100);
63
85
  var degree = style.fontStyle === 'italic' ? 100 : 90;
86
+ var restValueWidth = 1 - Math.min(fullValueRect.width / inputRect.width, 1);
64
87
  var typedValueColor = theme.inputTextColor;
65
88
  var maskColor = theme.inputPlaceholderColor;
89
+ var indent = 0;
66
90
  if (props.disabled) {
67
91
  typedValueColor = theme.inputTextColorDisabled;
68
92
  maskColor = theme.inputTextColorDisabled;
@@ -70,30 +94,44 @@ export var ColorableInputElement = forwardRefAndName('ColorableInputElement', fu
70
94
  if (props.showOnFocus) {
71
95
  maskColor = focused.current ? maskColor : 'transparent';
72
96
  }
73
- inputRef.current.style.backgroundImage = "\n linear-gradient(\n " + degree + "deg,\n " + typedValueColor + " " + threshold + "%,\n " + maskColor + " " + threshold + "%\n )";
74
- }, [props.showOnFocus, props.disabled, theme.inputTextColor, theme.inputPlaceholderColor, theme.inputTextColorDisabled]);
97
+ if (((_props$style = props.style) == null ? void 0 : _props$style.textAlign) === 'right') {
98
+ indent = 100 * restValueWidth;
99
+ }
100
+ if (((_props$style2 = props.style) == null ? void 0 : _props$style2.textAlign) === 'center') {
101
+ indent = 50 * restValueWidth;
102
+ }
103
+ inputRef.current.style.backgroundImage = "\n linear-gradient(\n " + degree + "deg,\n " + typedValueColor + " " + (threshold + indent) + "%,\n " + maskColor + " " + (threshold + indent) + "%\n )";
104
+ }, [active, props.showOnFocus, props.disabled, theme.inputTextColor, theme.inputPlaceholderColor, theme.inputTextColorDisabled, (_props$style3 = props.style) == null ? void 0 : _props$style3.textAlign]);
75
105
  var debouncedPaintText = useCallback(function () {
76
106
  return debounce(paintText);
77
107
  }, [paintText])();
78
- var activation = useCallback(function () {
79
- if (active) {
80
- debouncedPaintText();
81
- } else {
82
- var _inputRef$current2;
83
- debouncedPaintText.cancel();
84
- inputRef.current && (inputRef.current.style.backgroundImage = '');
85
- (_inputRef$current2 = inputRef.current) == null || _inputRef$current2.classList.remove(globalClasses.input);
86
- }
87
- }, [debouncedPaintText, active]);
88
- useEffect(function () {
89
- activation();
108
+ var handleInput = useCallback(function (e) {
109
+ debouncedPaintText();
110
+ onInput == null || onInput(e);
111
+ }, [debouncedPaintText, onInput]);
112
+ var handleFocus = useCallback(function (e) {
113
+ updateActive();
114
+ focused.current = true;
115
+ onFocus == null || onFocus(e);
116
+ }, [onFocus, updateActive]);
117
+ var handleBlur = useCallback(function (e) {
90
118
  updateActive();
91
- }, [props.value, props.defaultValue, theme, activation]);
119
+ focused.current = false;
120
+ onBlur == null || onBlur(e);
121
+ }, [onBlur, updateActive]);
122
+ useImperativeHandle(ref, function () {
123
+ return {
124
+ input: inputRef.current,
125
+ getRootNode: function getRootNode() {
126
+ return inputRef.current;
127
+ }
128
+ };
129
+ }, []);
92
130
  useEffect(function () {
93
- if (inputRef.current) {
94
- inputStyle.current = getComputedStyle(inputRef.current);
95
- }
96
- });
131
+ debouncedPaintText();
132
+ updateActive();
133
+ return stopUpdateActive;
134
+ }, [updateActive, props.value, props.defaultValue, theme, debouncedPaintText, stopUpdateActive]);
97
135
  return /*#__PURE__*/(
98
136
  React.createElement(React.Fragment, null, /*#__PURE__*/
99
137
  React.cloneElement(children, _extends({}, inputProps, {
@@ -111,27 +149,4 @@ export var ColorableInputElement = forwardRefAndName('ColorableInputElement', fu
111
149
  ref: spanRef
112
150
  }))
113
151
  );
114
- function handleInput(e) {
115
- var _inputRef$current3;
116
- var isActive = !((_inputRef$current3 = inputRef.current) != null && (_inputRef$current3 = _inputRef$current3.parentElement) != null && _inputRef$current3.querySelector(':placeholder-shown'));
117
- setActive(isActive);
118
- activation();
119
- onInput == null || onInput(e);
120
- }
121
- function handleFocus(e) {
122
- setTimeout(updateActive);
123
- focused.current = true;
124
- onFocus == null || onFocus(e);
125
- }
126
- function handleBlur(e) {
127
- updateActive();
128
- focused.current = false;
129
- onBlur == null || onBlur(e);
130
- }
131
- function updateActive() {
132
- setTimeout(function () {
133
- var _inputRef$current4;
134
- setActive(!((_inputRef$current4 = inputRef.current) != null && (_inputRef$current4 = _inputRef$current4.parentElement) != null && _inputRef$current4.querySelector(':placeholder-shown')));
135
- });
136
- }
137
152
  });
@@ -1 +1 @@
1
- {"version":3,"names":["React","useContext","useEffect","useImperativeHandle","useRef","useCallback","useState","globalObject","isBrowser","debounce","ThemeContext","forwardRefAndName","cx","globalClasses","ColorableInputElement","props","ref","inputRef","spanRef","focused","inputStyle","theme","_useState","active","setActive","children","onInput","onFocus","onBlur","showOnFocus","inputProps","_objectWithoutPropertiesLoose","_excluded","input","current","getRootNode","updateActive","paintText","_inputRef$current","_shadow","classList","add","shadow","shadowRoot","typedValueElement","getElementById","attachShadow","mode","document","createElement","setAttribute","appendChild","style","textContent","getAttribute","inputRect","getBoundingClientRect","filledRect","threshold","width","degree","fontStyle","typedValueColor","inputTextColor","maskColor","inputPlaceholderColor","disabled","inputTextColorDisabled","backgroundImage","debouncedPaintText","activation","_inputRef$current2","cancel","remove","value","defaultValue","getComputedStyle","Fragment","cloneElement","_extends","handleInput","handleFocus","handleBlur","className","visibility","position","whiteSpace","e","_inputRef$current3","isActive","parentElement","querySelector","setTimeout","_inputRef$current4"],"sources":["ColorableInputElement.tsx"],"sourcesContent":["/* eslint react-hooks/exhaustive-deps: 2 */\nimport type { ForwardedRef } from 'react';\nimport React, { useContext, useEffect, useImperativeHandle, useRef, useCallback, useState } from 'react';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\nimport debounce from 'lodash.debounce';\n\nimport { ThemeContext } from '../../../lib/theming/ThemeContext';\nimport type { InputElement, InputElementProps } from '../../Input';\nimport { forwardRefAndName } from '../../../lib/forwardRefAndName';\nimport { cx } from '../../../lib/theming/Emotion';\n\nimport { globalClasses } from './ColorableInputElement.styles';\n\nexport type ColorableInputElementProps = InputElementProps & {\n showOnFocus?: boolean;\n children: React.ReactElement;\n};\n\n// Возможно придётся включить.\n// Иногда, на тяжёлых страницах, текст рендерится итеративно.\n// Из-за этого могут оставаться артефакты при покраске компонента, которые пропадут только после фокуса.\n// setInterval(() => window.requestAnimationFrame(() => dictionary.forEach((paint) => paint())), 1000);\n\nexport const ColorableInputElement = forwardRefAndName(\n 'ColorableInputElement',\n function ColorableInputElement(props: ColorableInputElementProps, ref: ForwardedRef<InputElement>) {\n const inputRef = useRef<HTMLInputElement | null>(null);\n const spanRef = useRef<HTMLSpanElement | null>(null);\n const focused = useRef(false);\n const inputStyle = React.useRef<CSSStyleDeclaration>();\n const theme = useContext(ThemeContext);\n const [active, setActive] = useState(true);\n\n const { children, onInput, onFocus, onBlur, showOnFocus, ...inputProps } = props;\n\n useImperativeHandle(\n ref,\n () => ({\n input: inputRef.current,\n getRootNode: () => inputRef.current,\n }),\n [],\n );\n\n useEffect(updateActive, []);\n\n const paintText = useCallback(() => {\n if (!spanRef.current || !inputRef.current || !inputStyle.current || !isBrowser(globalObject)) {\n return;\n }\n\n inputRef.current?.classList.add(globalClasses.input);\n\n let shadow = spanRef.current.shadowRoot;\n let typedValueElement = shadow?.getElementById('span');\n\n if (!typedValueElement) {\n shadow = spanRef.current.attachShadow({ mode: 'open' });\n\n typedValueElement = globalObject.document.createElement('span');\n typedValueElement.setAttribute('id', 'span');\n\n shadow.appendChild(typedValueElement);\n }\n\n const style = inputStyle.current;\n\n typedValueElement.textContent =\n ((inputRef.current.getAttribute('data-unmasked-value') || focused.current) &&\n inputRef.current.getAttribute('data-typed-value')) ||\n '';\n\n const inputRect = inputRef.current.getBoundingClientRect();\n const filledRect = spanRef.current.getBoundingClientRect();\n\n const threshold = filledRect.width / (inputRect.width / 100);\n const degree = style.fontStyle === 'italic' ? 100 : 90;\n\n let typedValueColor = theme.inputTextColor;\n let maskColor = theme.inputPlaceholderColor;\n if (props.disabled) {\n typedValueColor = theme.inputTextColorDisabled;\n maskColor = theme.inputTextColorDisabled;\n }\n if (props.showOnFocus) {\n maskColor = focused.current ? maskColor : 'transparent';\n }\n\n inputRef.current.style.backgroundImage = `\n linear-gradient(\n ${degree}deg,\n ${typedValueColor} ${threshold}%,\n ${maskColor} ${threshold}%\n )`;\n }, [\n props.showOnFocus,\n props.disabled,\n theme.inputTextColor,\n theme.inputPlaceholderColor,\n theme.inputTextColorDisabled,\n ]);\n\n const debouncedPaintText = useCallback(() => debounce(paintText), [paintText])();\n\n const activation = useCallback(() => {\n if (active) {\n debouncedPaintText();\n } else {\n debouncedPaintText.cancel();\n inputRef.current && (inputRef.current.style.backgroundImage = '');\n inputRef.current?.classList.remove(globalClasses.input);\n }\n }, [debouncedPaintText, active]);\n\n useEffect(() => {\n activation();\n updateActive();\n }, [props.value, props.defaultValue, theme, activation]);\n\n useEffect(() => {\n if (inputRef.current) {\n inputStyle.current = getComputedStyle(inputRef.current);\n }\n });\n\n return (\n <>\n {React.cloneElement(children, {\n ...inputProps,\n onInput: handleInput,\n onFocus: handleFocus,\n onBlur: handleBlur,\n inputRef,\n className: cx(props.className, active && globalClasses.input),\n })}\n {active && <span style={{ visibility: 'hidden', position: 'absolute', whiteSpace: 'pre' }} ref={spanRef} />}\n </>\n );\n\n function handleInput(e: React.ChangeEvent<HTMLInputElement>) {\n const isActive = !inputRef.current?.parentElement?.querySelector(':placeholder-shown');\n setActive(isActive);\n\n activation();\n\n onInput?.(e);\n }\n\n function handleFocus(e: React.FocusEvent<HTMLInputElement>) {\n setTimeout(updateActive);\n\n focused.current = true;\n\n onFocus?.(e);\n }\n\n function handleBlur(e: React.FocusEvent<HTMLInputElement>) {\n updateActive();\n\n focused.current = false;\n\n onBlur?.(e);\n }\n\n function updateActive() {\n setTimeout(() => {\n setActive(!inputRef.current?.parentElement?.querySelector(':placeholder-shown'));\n });\n }\n },\n);\n"],"mappings":"2OAAA;;AAEA,OAAOA,KAAK,IAAIC,UAAU,EAAEC,SAAS,EAAEC,mBAAmB,EAAEC,MAAM,EAAEC,WAAW,EAAEC,QAAQ,QAAQ,OAAO;AACxG,SAASC,YAAY,EAAEC,SAAS,QAAQ,0BAA0B;AAClE,OAAOC,QAAQ,MAAM,iBAAiB;;AAEtC,SAASC,YAAY,QAAQ,mCAAmC;;AAEhE,SAASC,iBAAiB,QAAQ,gCAAgC;AAClE,SAASC,EAAE,QAAQ,8BAA8B;;AAEjD,SAASC,aAAa,QAAQ,gCAAgC;;;;;;;AAO9D;AACA;AACA;AACA;;AAEA,OAAO,IAAMC,qBAAqB,GAAGH,iBAAiB;EACpD,uBAAuB;EACvB,SAASG,qBAAqBA,CAACC,KAAiC,EAAEC,GAA+B,EAAE;IACjG,IAAMC,QAAQ,GAAGb,MAAM,CAA0B,IAAI,CAAC;IACtD,IAAMc,OAAO,GAAGd,MAAM,CAAyB,IAAI,CAAC;IACpD,IAAMe,OAAO,GAAGf,MAAM,CAAC,KAAK,CAAC;IAC7B,IAAMgB,UAAU,GAAGpB,KAAK,CAACI,MAAM,CAAsB,CAAC;IACtD,IAAMiB,KAAK,GAAGpB,UAAU,CAACS,YAAY,CAAC;IACtC,IAAAY,SAAA,GAA4BhB,QAAQ,CAAC,IAAI,CAAC,CAAnCiB,MAAM,GAAAD,SAAA,IAAEE,SAAS,GAAAF,SAAA;;IAExB,IAAQG,QAAQ,GAA2DV,KAAK,CAAxEU,QAAQ,CAAEC,OAAO,GAAkDX,KAAK,CAA9DW,OAAO,CAAEC,OAAO,GAAyCZ,KAAK,CAArDY,OAAO,CAAEC,MAAM,GAAiCb,KAAK,CAA5Ca,MAAM,CAAEC,WAAW,GAAoBd,KAAK,CAApCc,WAAW,CAAKC,UAAU,GAAAC,6BAAA,CAAKhB,KAAK,EAAAiB,SAAA;;IAEhF7B,mBAAmB;MACjBa,GAAG;MACH,oBAAO;UACLiB,KAAK,EAAEhB,QAAQ,CAACiB,OAAO;UACvBC,WAAW,EAAE,SAAAA,YAAA,UAAMlB,QAAQ,CAACiB,OAAO;QACrC,CAAC,EAAC;MACF;IACF,CAAC;;IAEDhC,SAAS,CAACkC,YAAY,EAAE,EAAE,CAAC;;IAE3B,IAAMC,SAAS,GAAGhC,WAAW,CAAC,YAAM,KAAAiC,iBAAA,EAAAC,OAAA;MAClC,IAAI,CAACrB,OAAO,CAACgB,OAAO,IAAI,CAACjB,QAAQ,CAACiB,OAAO,IAAI,CAACd,UAAU,CAACc,OAAO,IAAI,CAAC1B,SAAS,CAACD,YAAY,CAAC,EAAE;QAC5F;MACF;;MAEA,CAAA+B,iBAAA,GAAArB,QAAQ,CAACiB,OAAO,aAAhBI,iBAAA,CAAkBE,SAAS,CAACC,GAAG,CAAC5B,aAAa,CAACoB,KAAK,CAAC;;MAEpD,IAAIS,MAAM,GAAGxB,OAAO,CAACgB,OAAO,CAACS,UAAU;MACvC,IAAIC,iBAAiB,IAAAL,OAAA,GAAGG,MAAM,qBAANH,OAAA,CAAQM,cAAc,CAAC,MAAM,CAAC;;MAEtD,IAAI,CAACD,iBAAiB,EAAE;QACtBF,MAAM,GAAGxB,OAAO,CAACgB,OAAO,CAACY,YAAY,CAAC,EAAEC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;;QAEvDH,iBAAiB,GAAGrC,YAAY,CAACyC,QAAQ,CAACC,aAAa,CAAC,MAAM,CAAC;QAC/DL,iBAAiB,CAACM,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC;;QAE5CR,MAAM,CAACS,WAAW,CAACP,iBAAiB,CAAC;MACvC;;MAEA,IAAMQ,KAAK,GAAGhC,UAAU,CAACc,OAAO;;MAEhCU,iBAAiB,CAACS,WAAW;MAC1B,CAACpC,QAAQ,CAACiB,OAAO,CAACoB,YAAY,CAAC,qBAAqB,CAAC,IAAInC,OAAO,CAACe,OAAO;MACvEjB,QAAQ,CAACiB,OAAO,CAACoB,YAAY,CAAC,kBAAkB,CAAC;MACnD,EAAE;;MAEJ,IAAMC,SAAS,GAAGtC,QAAQ,CAACiB,OAAO,CAACsB,qBAAqB,CAAC,CAAC;MAC1D,IAAMC,UAAU,GAAGvC,OAAO,CAACgB,OAAO,CAACsB,qBAAqB,CAAC,CAAC;;MAE1D,IAAME,SAAS,GAAGD,UAAU,CAACE,KAAK,IAAIJ,SAAS,CAACI,KAAK,GAAG,GAAG,CAAC;MAC5D,IAAMC,MAAM,GAAGR,KAAK,CAACS,SAAS,KAAK,QAAQ,GAAG,GAAG,GAAG,EAAE;;MAEtD,IAAIC,eAAe,GAAGzC,KAAK,CAAC0C,cAAc;MAC1C,IAAIC,SAAS,GAAG3C,KAAK,CAAC4C,qBAAqB;MAC3C,IAAIlD,KAAK,CAACmD,QAAQ,EAAE;QAClBJ,eAAe,GAAGzC,KAAK,CAAC8C,sBAAsB;QAC9CH,SAAS,GAAG3C,KAAK,CAAC8C,sBAAsB;MAC1C;MACA,IAAIpD,KAAK,CAACc,WAAW,EAAE;QACrBmC,SAAS,GAAG7C,OAAO,CAACe,OAAO,GAAG8B,SAAS,GAAG,aAAa;MACzD;;MAEA/C,QAAQ,CAACiB,OAAO,CAACkB,KAAK,CAACgB,eAAe;;MAEhCR,MAAM;MACNE,eAAe,SAAIJ,SAAS;MAC5BM,SAAS,SAAIN,SAAS,eAC1B;;IACJ,CAAC,EAAE;IACD3C,KAAK,CAACc,WAAW;IACjBd,KAAK,CAACmD,QAAQ;IACd7C,KAAK,CAAC0C,cAAc;IACpB1C,KAAK,CAAC4C,qBAAqB;IAC3B5C,KAAK,CAAC8C,sBAAsB;IAC7B,CAAC;;IAEF,IAAME,kBAAkB,GAAGhE,WAAW,CAAC,oBAAMI,QAAQ,CAAC4B,SAAS,CAAC,IAAE,CAACA,SAAS,CAAC,CAAC,CAAC,CAAC;;IAEhF,IAAMiC,UAAU,GAAGjE,WAAW,CAAC,YAAM;MACnC,IAAIkB,MAAM,EAAE;QACV8C,kBAAkB,CAAC,CAAC;MACtB,CAAC,MAAM,KAAAE,kBAAA;QACLF,kBAAkB,CAACG,MAAM,CAAC,CAAC;QAC3BvD,QAAQ,CAACiB,OAAO,KAAKjB,QAAQ,CAACiB,OAAO,CAACkB,KAAK,CAACgB,eAAe,GAAG,EAAE,CAAC;QACjE,CAAAG,kBAAA,GAAAtD,QAAQ,CAACiB,OAAO,aAAhBqC,kBAAA,CAAkB/B,SAAS,CAACiC,MAAM,CAAC5D,aAAa,CAACoB,KAAK,CAAC;MACzD;IACF,CAAC,EAAE,CAACoC,kBAAkB,EAAE9C,MAAM,CAAC,CAAC;;IAEhCrB,SAAS,CAAC,YAAM;MACdoE,UAAU,CAAC,CAAC;MACZlC,YAAY,CAAC,CAAC;IAChB,CAAC,EAAE,CAACrB,KAAK,CAAC2D,KAAK,EAAE3D,KAAK,CAAC4D,YAAY,EAAEtD,KAAK,EAAEiD,UAAU,CAAC,CAAC;;IAExDpE,SAAS,CAAC,YAAM;MACd,IAAIe,QAAQ,CAACiB,OAAO,EAAE;QACpBd,UAAU,CAACc,OAAO,GAAG0C,gBAAgB,CAAC3D,QAAQ,CAACiB,OAAO,CAAC;MACzD;IACF,CAAC,CAAC;;IAEF;MACElC,KAAA,CAAAiD,aAAA,CAAAjD,KAAA,CAAA6E,QAAA;MACG7E,KAAK,CAAC8E,YAAY,CAACrD,QAAQ,EAAAsD,QAAA;MACvBjD,UAAU;QACbJ,OAAO,EAAEsD,WAAW;QACpBrD,OAAO,EAAEsD,WAAW;QACpBrD,MAAM,EAAEsD,UAAU;QAClBjE,QAAQ,EAARA,QAAQ;QACRkE,SAAS,EAAEvE,EAAE,CAACG,KAAK,CAACoE,SAAS,EAAE5D,MAAM,IAAIV,aAAa,CAACoB,KAAK,CAAC;MAC9D,CAAC;MACDV,MAAM,iBAAIvB,KAAA,CAAAiD,aAAA,WAAMG,KAAK,EAAE,EAAEgC,UAAU,EAAE,QAAQ,EAAEC,QAAQ,EAAE,UAAU,EAAEC,UAAU,EAAE,KAAK,CAAC,CAAE,EAACtE,GAAG,EAAEE,OAAQ,EAAE;MAC1G,CAAC;;;IAGL,SAAS8D,WAAWA,CAACO,CAAsC,EAAE,KAAAC,kBAAA;MAC3D,IAAMC,QAAQ,GAAG,GAAAD,kBAAA,GAACvE,QAAQ,CAACiB,OAAO,cAAAsD,kBAAA,GAAhBA,kBAAA,CAAkBE,aAAa,aAA/BF,kBAAA,CAAiCG,aAAa,CAAC,oBAAoB,CAAC;MACtFnE,SAAS,CAACiE,QAAQ,CAAC;;MAEnBnB,UAAU,CAAC,CAAC;;MAEZ5C,OAAO,YAAPA,OAAO,CAAG6D,CAAC,CAAC;IACd;;IAEA,SAASN,WAAWA,CAACM,CAAqC,EAAE;MAC1DK,UAAU,CAACxD,YAAY,CAAC;;MAExBjB,OAAO,CAACe,OAAO,GAAG,IAAI;;MAEtBP,OAAO,YAAPA,OAAO,CAAG4D,CAAC,CAAC;IACd;;IAEA,SAASL,UAAUA,CAACK,CAAqC,EAAE;MACzDnD,YAAY,CAAC,CAAC;;MAEdjB,OAAO,CAACe,OAAO,GAAG,KAAK;;MAEvBN,MAAM,YAANA,MAAM,CAAG2D,CAAC,CAAC;IACb;;IAEA,SAASnD,YAAYA,CAAA,EAAG;MACtBwD,UAAU,CAAC,YAAM,KAAAC,kBAAA;QACfrE,SAAS,CAAC,GAAAqE,kBAAA,GAAC5E,QAAQ,CAACiB,OAAO,cAAA2D,kBAAA,GAAhBA,kBAAA,CAAkBH,aAAa,aAA/BG,kBAAA,CAAiCF,aAAa,CAAC,oBAAoB,CAAC,EAAC;MAClF,CAAC,CAAC;IACJ;EACF;AACF,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","useEffect","useContext","useImperativeHandle","useRef","useCallback","useState","debounce","ThemeContext","forwardRefAndName","cx","isDocument","isWindow","tryGetDocument","tryGetWindow","globalClasses","ColorableInputElement","props","ref","_props$style3","inputRef","spanRef","focused","updateActiveTimer","theme","_useState","Boolean","alwaysShowMask","placeholder","value","defaultValue","active","setActive","children","onInput","onFocus","onBlur","showOnFocus","inputProps","_objectWithoutPropertiesLoose","_excluded","stopUpdateActive","clearTimeout","current","updateActive","setTimeout","nextActive","_inputRef$current2","_inputRef$current","clientWidth","scrollWidth","scrollable","placeholderShown","parentElement","querySelector","paintText","_inputRef$current4","_shadow","_shadow2","_props$style","_props$style2","win","doc","_inputRef$current3","style","backgroundImage","classList","remove","input","add","shadow","shadowRoot","typedValueElement","getElementById","fullValueElement","attachShadow","mode","createElement","setAttribute","append","getComputedStyle","textContent","getAttribute","inputRect","getBoundingClientRect","typedValueRect","fullValueRect","threshold","width","degree","fontStyle","restValueWidth","Math","min","typedValueColor","inputTextColor","maskColor","inputPlaceholderColor","indent","disabled","inputTextColorDisabled","textAlign","debouncedPaintText","handleInput","e","handleFocus","handleBlur","getRootNode","Fragment","cloneElement","_extends","className","visibility","position","whiteSpace"],"sources":["ColorableInputElement.tsx"],"sourcesContent":["/* eslint react-hooks/exhaustive-deps: 2 */\nimport type { ForwardedRef } from 'react';\nimport React, { useEffect, useContext, useImperativeHandle, useRef, useCallback, useState } from 'react';\nimport debounce from 'lodash.debounce';\n\nimport { ThemeContext } from '../../../lib/theming/ThemeContext';\nimport type { InputElement, InputElementProps } from '../../Input';\nimport { forwardRefAndName } from '../../../lib/forwardRefAndName';\nimport { cx } from '../../../lib/theming/Emotion';\nimport { isDocument, isWindow, tryGetDocument, tryGetWindow } from '../../../lib/utils';\n\nimport { globalClasses } from './ColorableInputElement.styles';\n\nexport type ColorableInputElementProps = InputElementProps & {\n alwaysShowMask?: boolean;\n showOnFocus?: boolean;\n children: React.ReactElement;\n};\n\n// Возможно придётся включить.\n// Иногда, на тяжёлых страницах, текст рендерится итеративно.\n// Из-за этого могут оставаться артефакты при покраске компонента, которые пропадут только после фокуса.\n// setInterval(() => window.requestAnimationFrame(() => dictionary.forEach((paint) => paint())), 1000);\n\nexport const ColorableInputElement = forwardRefAndName(\n 'ColorableInputElement',\n function ColorableInputElement(props: ColorableInputElementProps, ref: ForwardedRef<InputElement>) {\n const inputRef = useRef<HTMLInputElement | null>(null);\n const spanRef = useRef<HTMLSpanElement | null>(null);\n const focused = useRef(false);\n const updateActiveTimer = useRef<ReturnType<typeof setTimeout>>();\n const theme = useContext(ThemeContext);\n const [active, setActive] = useState(\n Boolean(props.alwaysShowMask || (!props.placeholder && (props.value || props.defaultValue))),\n );\n\n const { children, onInput, onFocus, onBlur, showOnFocus, alwaysShowMask, ...inputProps } = props;\n\n const stopUpdateActive = useCallback(() => {\n clearTimeout(updateActiveTimer.current);\n }, []);\n\n const updateActive = useCallback(() => {\n stopUpdateActive();\n updateActiveTimer.current = setTimeout(() => {\n let nextActive = true;\n if (inputRef.current) {\n const { clientWidth, scrollWidth } = inputRef.current;\n const scrollable = scrollWidth > clientWidth;\n\n const placeholderShown = inputRef.current?.parentElement?.querySelector(':placeholder-shown');\n\n nextActive = !(scrollable || placeholderShown);\n }\n setActive(nextActive);\n }, 0);\n }, [stopUpdateActive]);\n\n const paintText = useCallback(() => {\n const win = tryGetWindow(inputRef.current);\n const doc = tryGetDocument(inputRef.current);\n if (!spanRef.current || !inputRef.current || !isWindow(win) || !isDocument(doc) || !active) {\n inputRef.current && (inputRef.current.style.backgroundImage = '');\n inputRef.current?.classList.remove(globalClasses.input);\n\n return;\n }\n\n inputRef.current?.classList.add(globalClasses.input);\n\n let shadow = spanRef.current.shadowRoot;\n let typedValueElement = shadow?.getElementById('typed-value');\n let fullValueElement = shadow?.getElementById('full-value');\n\n if (!typedValueElement || !fullValueElement) {\n shadow = spanRef.current.attachShadow({ mode: 'open' });\n\n typedValueElement = doc.createElement('span');\n fullValueElement = doc.createElement('span');\n typedValueElement.setAttribute('id', 'typed-value');\n fullValueElement.setAttribute('id', 'full-value');\n\n shadow.append(typedValueElement, fullValueElement);\n }\n\n const style = getComputedStyle(inputRef.current);\n\n typedValueElement.textContent =\n ((inputRef.current.getAttribute('data-unmasked-value') || focused.current) &&\n inputRef.current.getAttribute('data-typed-value')) ||\n '';\n\n fullValueElement.textContent = inputRef.current.value || inputRef.current.defaultValue || '';\n\n const inputRect = inputRef.current.getBoundingClientRect();\n const typedValueRect = typedValueElement.getBoundingClientRect();\n const fullValueRect = fullValueElement.getBoundingClientRect();\n\n const threshold = typedValueRect.width / (inputRect.width / 100);\n const degree = style.fontStyle === 'italic' ? 100 : 90;\n const restValueWidth = 1 - Math.min(fullValueRect.width / inputRect.width, 1);\n\n let typedValueColor = theme.inputTextColor;\n let maskColor = theme.inputPlaceholderColor;\n let indent = 0;\n\n if (props.disabled) {\n typedValueColor = theme.inputTextColorDisabled;\n maskColor = theme.inputTextColorDisabled;\n }\n if (props.showOnFocus) {\n maskColor = focused.current ? maskColor : 'transparent';\n }\n if (props.style?.textAlign === 'right') {\n indent = 100 * restValueWidth;\n }\n if (props.style?.textAlign === 'center') {\n indent = 50 * restValueWidth;\n }\n\n inputRef.current.style.backgroundImage = `\n linear-gradient(\n ${degree}deg,\n ${typedValueColor} ${threshold + indent}%,\n ${maskColor} ${threshold + indent}%\n )`;\n }, [\n active,\n props.showOnFocus,\n props.disabled,\n theme.inputTextColor,\n theme.inputPlaceholderColor,\n theme.inputTextColorDisabled,\n props.style?.textAlign,\n ]);\n\n const debouncedPaintText = useCallback(() => debounce(paintText), [paintText])();\n\n const handleInput = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n debouncedPaintText();\n\n onInput?.(e);\n },\n [debouncedPaintText, onInput],\n );\n\n const handleFocus = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n updateActive();\n\n focused.current = true;\n\n onFocus?.(e);\n },\n [onFocus, updateActive],\n );\n\n const handleBlur = useCallback(\n (e: React.FocusEvent<HTMLInputElement>) => {\n updateActive();\n\n focused.current = false;\n\n onBlur?.(e);\n },\n [onBlur, updateActive],\n );\n\n useImperativeHandle(\n ref,\n () => ({\n input: inputRef.current,\n getRootNode: () => inputRef.current,\n }),\n [],\n );\n\n useEffect(() => {\n debouncedPaintText();\n updateActive();\n\n return stopUpdateActive;\n }, [updateActive, props.value, props.defaultValue, theme, debouncedPaintText, stopUpdateActive]);\n\n return (\n <>\n {React.cloneElement(children, {\n ...inputProps,\n onInput: handleInput,\n onFocus: handleFocus,\n onBlur: handleBlur,\n inputRef,\n className: cx(props.className, active && globalClasses.input),\n })}\n {active && <span style={{ visibility: 'hidden', position: 'absolute', whiteSpace: 'pre' }} ref={spanRef} />}\n </>\n );\n },\n);\n"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import type { InputElement, InputElementProps } from '../../Input';
3
3
  export type ColorableInputElementProps = InputElementProps & {
4
+ alwaysShowMask?: boolean;
4
5
  showOnFocus?: boolean;
5
6
  children: React.ReactElement;
6
7
  };
@@ -173,8 +173,9 @@ export var FixedIMaskInput = forwardRefAndName('FixedIMaskInput', function Fixed
173
173
  function handleInput(e) {
174
174
  var _imaskRef$current10;
175
175
  var maskRef = (_imaskRef$current10 = imaskRef.current) == null ? void 0 : _imaskRef$current10.maskRef;
176
- if (restProps.unmask && maskRef && maskRef.rawInputValue === '' && maskRef.unmaskedValue !== '') {
177
- // Для случаев, когда в value остаются только зафиксированные - {} - очищаем value полностью
176
+ if (maskRef && maskRef.rawInputValue === '') {
177
+ // в случае, когда пользователь стер все из инпута, очищаем value полностью
178
+ // иначе в value остаются символы маски
178
179
  props.onAccept == null || props.onAccept('', maskRef, e.nativeEvent);
179
180
  }
180
181
  props.onInput == null || props.onInput(e);
@@ -1 +1 @@
1
- {"version":3,"names":["React","useEffect","useImperativeHandle","useRef","IMaskInput","forwardRefAndName","isKeyArrow","isKeyArrowHorizontal","isKeyArrowLeft","isKeyArrowUp","isKeyEnd","isKeyHome","isModShift","isShortcutJumpCaret","isShortcutSelectAll","someKeys","MouseDrag","FixedIMaskInput","props","ref","inputRef","restProps","_objectWithoutPropertiesLoose","_excluded","imaskRef","focused","_imaskRef$current","current","element","fillTypedValue","mouseDrag","listen","onMouseDragEnd","e","_imaskRef$current2","_imaskRef$current3","direction","mouseDragStartEvent","selectionStart","selectionEnd","pageX","_getSelection","getSelection","start","end","setSelection","createElement","_extends","onKeyDown","handleKeyDown","onFocus","handleFocus","onBlur","handleBlur","onMouseUp","handleMouseUp","onAccept","handleAccept","onInput","handleInput","getTypedValue","_imaskRef$current4","_ref","maskRef","masked","_ref$_value","_value","_ref$displayValue","displayValue","getMaxCaretPosition","value","slice","_imaskRef$current5","_imaskRef$current6","_imaskRef$current7","setAttribute","unmaskedValue","maskChars","push","placeholderChar","blocks","Object","values","forEach","_ref2","split","RegExp","join","length","Infinity","normalizeSelection","_getSelection2","max","getNormalizedRange","calc","Math","min","selectionDirection","_imaskRef$current8","_len","arguments","_ref3","Array","_key","setSelectionRange","jumpCaret","prev","headDirection","_imaskRef$current9","word","valueOf","wordRegExp","next","match","reduce","s","a","pos","concat","calcSelection","_getSelection3","isSelectionMode","tail","head","step","increment","setTimeout","_len2","args","_key2","apply","_imaskRef$current10","unmask","rawInputValue","nativeEvent","nearest","preventDefault","_calcSelection"],"sources":["FixedIMaskInput.tsx"],"sourcesContent":["import React, { useEffect, useImperativeHandle, useRef } from 'react';\nimport type { InputMask, MaskedPatternOptions } from '@skbkontur/imask';\nimport type { IMaskInputProps } from '@skbkontur/react-imask';\nimport { IMaskInput } from '@skbkontur/react-imask';\n\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\nimport {\n isKeyArrow,\n isKeyArrowHorizontal,\n isKeyArrowLeft,\n isKeyArrowUp,\n isKeyEnd,\n isKeyHome,\n isModShift,\n isShortcutJumpCaret,\n isShortcutSelectAll,\n someKeys,\n} from '../../lib/events/keyboard/identifiers';\nimport { MouseDrag } from '../../lib/events/MouseDrag';\n\nexport type FixedIMaskInputProps = IMaskInputProps<HTMLInputElement>;\n\ntype HeadDirection = 'left' | 'right';\ntype SelectionDirection = 'forward' | 'backward' | 'none';\ntype SelectionSet = [number, number, SelectionDirection];\n\ninterface IMaskRefType {\n maskRef: InputMask<MaskedPatternOptions>;\n element: HTMLInputElement;\n}\n\nexport const FixedIMaskInput = forwardRefAndName(\n 'FixedIMaskInput',\n function FixedIMaskInput(props: FixedIMaskInputProps, ref: React.Ref<IMaskRefType | null>) {\n const { inputRef, ...restProps } = props;\n const imaskRef = useRef<IMaskRefType>(null);\n const focused = useRef(false);\n\n useEffect(() => {\n if (imaskRef.current?.element) {\n fillTypedValue();\n const mouseDrag = MouseDrag.listen(imaskRef.current.element).onMouseDragEnd((e) => {\n let direction: SelectionDirection = 'none';\n\n if (\n mouseDrag.mouseDragStartEvent &&\n imaskRef.current?.element.selectionStart !== imaskRef.current?.element.selectionEnd\n ) {\n direction = mouseDrag.mouseDragStartEvent.pageX > e.pageX ? 'backward' : 'forward';\n }\n\n const [start, end] = getSelection();\n setSelection(start, end, direction);\n });\n }\n }, []);\n\n useImperativeHandle(ref, () => imaskRef.current, []);\n\n return (\n <IMaskInput\n {...restProps}\n ref={imaskRef}\n inputRef={inputRef}\n onKeyDown={handleKeyDown}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onMouseUp={handleMouseUp}\n onAccept={handleAccept}\n onInput={handleInput}\n />\n );\n\n function getTypedValue() {\n const { _value = '', displayValue = '' } = imaskRef.current?.maskRef.masked || {};\n const end = getMaxCaretPosition();\n const value = _value !== '' || focused.current === true ? displayValue : '';\n\n return value.slice(0, end);\n }\n\n function fillTypedValue() {\n imaskRef.current?.element.setAttribute('data-typed-value', getTypedValue());\n imaskRef.current?.element.setAttribute('data-unmasked-value', imaskRef.current?.maskRef.unmaskedValue);\n }\n\n function getMaxCaretPosition(): number {\n const maskChars = [];\n if (imaskRef.current) {\n maskChars.push(imaskRef.current.maskRef.masked.placeholderChar);\n if (imaskRef.current.maskRef.masked.blocks) {\n (Object.values(imaskRef.current.maskRef.masked.blocks) as Array<{ placeholderChar?: string }>).forEach(\n ({ placeholderChar }) => placeholderChar && maskChars.push(placeholderChar),\n );\n }\n return imaskRef.current.element.value.split(new RegExp(maskChars.join('|')))[0].length;\n }\n\n return Infinity;\n }\n\n function normalizeSelection() {\n const [start, end] = getSelection();\n const max = getMaxCaretPosition();\n if (end > max) {\n setSelection(start, max);\n }\n }\n\n function getNormalizedRange(calc: number | unknown) {\n return typeof calc === 'number' ? Math.min(getMaxCaretPosition(), Math.max(0, calc)) : 0;\n }\n\n function getSelection(): SelectionSet {\n if (imaskRef.current) {\n return [\n imaskRef.current.element.selectionStart || 0,\n imaskRef.current.element.selectionEnd || 0,\n imaskRef.current.element.selectionDirection || 'none',\n ];\n }\n return [0, 0, 'none'];\n }\n\n function setSelection(...[start, end, direction]: Parameters<HTMLInputElement['setSelectionRange']>) {\n imaskRef.current?.element.setSelectionRange(\n getNormalizedRange(start),\n getNormalizedRange(end),\n direction || 'none',\n );\n }\n\n function jumpCaret(prev: number, headDirection: HeadDirection) {\n const word = /а-яa-z0-9_/.valueOf();\n const wordRegExp = new RegExp(`([${word}])+[\\\\s]*|([^${word}])+`, 'gi');\n let next = headDirection === 'right' ? prev : 0;\n imaskRef.current?.element.value.match(wordRegExp)?.reduce<number[]>((s, a) => {\n const pos = a.length + (s.slice(-1)[0] || 0);\n if (headDirection === 'right' && next === prev && next < pos) {\n next = getNormalizedRange(pos);\n } else if (headDirection === 'left' && prev > pos) {\n next = getNormalizedRange(pos);\n }\n return [...s, pos];\n }, []);\n return next;\n }\n\n /**\n * Вычислят положение каретки при управлении клавишами\n * @param e\n */\n function calcSelection(e: React.KeyboardEvent<HTMLInputElement>): SelectionSet {\n const [start, end, direction] = getSelection();\n const isSelectionMode = isModShift()(e);\n let tail = start !== end && direction === 'backward' ? end : start;\n let head = start !== end && direction === 'backward' ? start : end;\n const headDirection: HeadDirection = someKeys(isKeyArrowLeft, isKeyArrowUp, isKeyHome)(e) ? 'left' : 'right';\n const step = isKeyArrowHorizontal(e) ? 1 : Infinity;\n const increment = headDirection === 'left' ? -step : step;\n if (isShortcutJumpCaret(e)) {\n head = jumpCaret(head, headDirection);\n } else if (head !== tail && !isSelectionMode && isKeyArrowHorizontal(e)) {\n head = headDirection === 'right' ? Math.max(tail, head) : Math.min(tail, head);\n } else {\n head = head + increment;\n }\n if (isSelectionMode) {\n const start = Math.min(tail, head);\n const end = Math.max(tail, head);\n return [getNormalizedRange(start), getNormalizedRange(end), end === head ? 'forward' : 'backward'];\n }\n tail = head;\n return [getNormalizedRange(tail), getNormalizedRange(head), 'none'];\n }\n\n function handleMouseUp(e: React.MouseEvent<HTMLInputElement>) {\n normalizeSelection();\n\n props.onMouseUp?.(e);\n }\n\n function handleFocus(e: React.FocusEvent<HTMLInputElement>) {\n focused.current = true;\n fillTypedValue();\n\n setTimeout(normalizeSelection);\n\n props.onFocus?.(e);\n }\n\n function handleBlur(e: React.FocusEvent<HTMLInputElement>) {\n focused.current = false;\n fillTypedValue();\n\n props.onBlur?.(e);\n }\n\n function handleAccept(...args: Parameters<Required<IMaskInputProps<HTMLInputElement>>['onAccept']>) {\n fillTypedValue();\n\n props.onAccept?.(...args);\n }\n\n function handleInput(e: React.ChangeEvent<HTMLInputElement>) {\n const maskRef = imaskRef.current?.maskRef;\n if (restProps.unmask && maskRef && maskRef.rawInputValue === '' && maskRef.unmaskedValue !== '') {\n // Для случаев, когда в value остаются только зафиксированные - {} - очищаем value полностью\n props.onAccept?.('', maskRef, e.nativeEvent as InputEvent);\n }\n\n props.onInput?.(e);\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n const nearest = getMaxCaretPosition();\n if (isShortcutSelectAll(e)) {\n e.preventDefault();\n setSelection(0, nearest);\n } else if (isKeyArrow(e) || isKeyEnd(e) || isKeyHome(e)) {\n e.preventDefault();\n const [start, end, direction] = calcSelection(e);\n setSelection(start, end, direction);\n }\n\n props.onKeyDown?.(e);\n }\n },\n);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useEffect","useImperativeHandle","useRef","IMaskInput","forwardRefAndName","isKeyArrow","isKeyArrowHorizontal","isKeyArrowLeft","isKeyArrowUp","isKeyEnd","isKeyHome","isModShift","isShortcutJumpCaret","isShortcutSelectAll","someKeys","MouseDrag","FixedIMaskInput","props","ref","inputRef","restProps","_objectWithoutPropertiesLoose","_excluded","imaskRef","focused","_imaskRef$current","current","element","fillTypedValue","mouseDrag","listen","onMouseDragEnd","e","_imaskRef$current2","_imaskRef$current3","direction","mouseDragStartEvent","selectionStart","selectionEnd","pageX","_getSelection","getSelection","start","end","setSelection","createElement","_extends","onKeyDown","handleKeyDown","onFocus","handleFocus","onBlur","handleBlur","onMouseUp","handleMouseUp","onAccept","handleAccept","onInput","handleInput","getTypedValue","_imaskRef$current4","_ref","maskRef","masked","_ref$_value","_value","_ref$displayValue","displayValue","getMaxCaretPosition","value","slice","_imaskRef$current5","_imaskRef$current6","_imaskRef$current7","setAttribute","unmaskedValue","maskChars","push","placeholderChar","blocks","Object","values","forEach","_ref2","split","RegExp","join","length","Infinity","normalizeSelection","_getSelection2","max","getNormalizedRange","calc","Math","min","selectionDirection","_imaskRef$current8","_len","arguments","_ref3","Array","_key","setSelectionRange","jumpCaret","prev","headDirection","_imaskRef$current9","word","valueOf","wordRegExp","next","match","reduce","s","a","pos","concat","calcSelection","_getSelection3","isSelectionMode","tail","head","step","increment","setTimeout","_len2","args","_key2","apply","_imaskRef$current10","rawInputValue","nativeEvent","nearest","preventDefault","_calcSelection"],"sources":["FixedIMaskInput.tsx"],"sourcesContent":["import React, { useEffect, useImperativeHandle, useRef } from 'react';\nimport type { InputMask, MaskedPatternOptions } from '@skbkontur/imask';\nimport type { IMaskInputProps } from '@skbkontur/react-imask';\nimport { IMaskInput } from '@skbkontur/react-imask';\n\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\nimport {\n isKeyArrow,\n isKeyArrowHorizontal,\n isKeyArrowLeft,\n isKeyArrowUp,\n isKeyEnd,\n isKeyHome,\n isModShift,\n isShortcutJumpCaret,\n isShortcutSelectAll,\n someKeys,\n} from '../../lib/events/keyboard/identifiers';\nimport { MouseDrag } from '../../lib/events/MouseDrag';\n\nexport type FixedIMaskInputProps = IMaskInputProps<HTMLInputElement>;\n\ntype HeadDirection = 'left' | 'right';\ntype SelectionDirection = 'forward' | 'backward' | 'none';\ntype SelectionSet = [number, number, SelectionDirection];\n\ninterface IMaskRefType {\n maskRef: InputMask<MaskedPatternOptions>;\n element: HTMLInputElement;\n}\n\nexport const FixedIMaskInput = forwardRefAndName(\n 'FixedIMaskInput',\n function FixedIMaskInput(props: FixedIMaskInputProps, ref: React.Ref<IMaskRefType | null>) {\n const { inputRef, ...restProps } = props;\n const imaskRef = useRef<IMaskRefType>(null);\n const focused = useRef(false);\n\n useEffect(() => {\n if (imaskRef.current?.element) {\n fillTypedValue();\n const mouseDrag = MouseDrag.listen(imaskRef.current.element).onMouseDragEnd((e) => {\n let direction: SelectionDirection = 'none';\n\n if (\n mouseDrag.mouseDragStartEvent &&\n imaskRef.current?.element.selectionStart !== imaskRef.current?.element.selectionEnd\n ) {\n direction = mouseDrag.mouseDragStartEvent.pageX > e.pageX ? 'backward' : 'forward';\n }\n\n const [start, end] = getSelection();\n setSelection(start, end, direction);\n });\n }\n }, []);\n\n useImperativeHandle(ref, () => imaskRef.current, []);\n\n return (\n <IMaskInput\n {...restProps}\n ref={imaskRef}\n inputRef={inputRef}\n onKeyDown={handleKeyDown}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onMouseUp={handleMouseUp}\n onAccept={handleAccept}\n onInput={handleInput}\n />\n );\n\n function getTypedValue() {\n const { _value = '', displayValue = '' } = imaskRef.current?.maskRef.masked || {};\n const end = getMaxCaretPosition();\n const value = _value !== '' || focused.current === true ? displayValue : '';\n\n return value.slice(0, end);\n }\n\n function fillTypedValue() {\n imaskRef.current?.element.setAttribute('data-typed-value', getTypedValue());\n imaskRef.current?.element.setAttribute('data-unmasked-value', imaskRef.current?.maskRef.unmaskedValue);\n }\n\n function getMaxCaretPosition(): number {\n const maskChars = [];\n if (imaskRef.current) {\n maskChars.push(imaskRef.current.maskRef.masked.placeholderChar);\n if (imaskRef.current.maskRef.masked.blocks) {\n (Object.values(imaskRef.current.maskRef.masked.blocks) as Array<{ placeholderChar?: string }>).forEach(\n ({ placeholderChar }) => placeholderChar && maskChars.push(placeholderChar),\n );\n }\n return imaskRef.current.element.value.split(new RegExp(maskChars.join('|')))[0].length;\n }\n\n return Infinity;\n }\n\n function normalizeSelection() {\n const [start, end] = getSelection();\n const max = getMaxCaretPosition();\n if (end > max) {\n setSelection(start, max);\n }\n }\n\n function getNormalizedRange(calc: number | unknown) {\n return typeof calc === 'number' ? Math.min(getMaxCaretPosition(), Math.max(0, calc)) : 0;\n }\n\n function getSelection(): SelectionSet {\n if (imaskRef.current) {\n return [\n imaskRef.current.element.selectionStart || 0,\n imaskRef.current.element.selectionEnd || 0,\n imaskRef.current.element.selectionDirection || 'none',\n ];\n }\n return [0, 0, 'none'];\n }\n\n function setSelection(...[start, end, direction]: Parameters<HTMLInputElement['setSelectionRange']>) {\n imaskRef.current?.element.setSelectionRange(\n getNormalizedRange(start),\n getNormalizedRange(end),\n direction || 'none',\n );\n }\n\n function jumpCaret(prev: number, headDirection: HeadDirection) {\n const word = /а-яa-z0-9_/.valueOf();\n const wordRegExp = new RegExp(`([${word}])+[\\\\s]*|([^${word}])+`, 'gi');\n let next = headDirection === 'right' ? prev : 0;\n imaskRef.current?.element.value.match(wordRegExp)?.reduce<number[]>((s, a) => {\n const pos = a.length + (s.slice(-1)[0] || 0);\n if (headDirection === 'right' && next === prev && next < pos) {\n next = getNormalizedRange(pos);\n } else if (headDirection === 'left' && prev > pos) {\n next = getNormalizedRange(pos);\n }\n return [...s, pos];\n }, []);\n return next;\n }\n\n /**\n * Вычислят положение каретки при управлении клавишами\n * @param e\n */\n function calcSelection(e: React.KeyboardEvent<HTMLInputElement>): SelectionSet {\n const [start, end, direction] = getSelection();\n const isSelectionMode = isModShift()(e);\n let tail = start !== end && direction === 'backward' ? end : start;\n let head = start !== end && direction === 'backward' ? start : end;\n const headDirection: HeadDirection = someKeys(isKeyArrowLeft, isKeyArrowUp, isKeyHome)(e) ? 'left' : 'right';\n const step = isKeyArrowHorizontal(e) ? 1 : Infinity;\n const increment = headDirection === 'left' ? -step : step;\n if (isShortcutJumpCaret(e)) {\n head = jumpCaret(head, headDirection);\n } else if (head !== tail && !isSelectionMode && isKeyArrowHorizontal(e)) {\n head = headDirection === 'right' ? Math.max(tail, head) : Math.min(tail, head);\n } else {\n head = head + increment;\n }\n if (isSelectionMode) {\n const start = Math.min(tail, head);\n const end = Math.max(tail, head);\n return [getNormalizedRange(start), getNormalizedRange(end), end === head ? 'forward' : 'backward'];\n }\n tail = head;\n return [getNormalizedRange(tail), getNormalizedRange(head), 'none'];\n }\n\n function handleMouseUp(e: React.MouseEvent<HTMLInputElement>) {\n normalizeSelection();\n\n props.onMouseUp?.(e);\n }\n\n function handleFocus(e: React.FocusEvent<HTMLInputElement>) {\n focused.current = true;\n fillTypedValue();\n\n setTimeout(normalizeSelection);\n\n props.onFocus?.(e);\n }\n\n function handleBlur(e: React.FocusEvent<HTMLInputElement>) {\n focused.current = false;\n fillTypedValue();\n\n props.onBlur?.(e);\n }\n\n function handleAccept(...args: Parameters<Required<IMaskInputProps<HTMLInputElement>>['onAccept']>) {\n fillTypedValue();\n\n props.onAccept?.(...args);\n }\n\n function handleInput(e: React.ChangeEvent<HTMLInputElement>) {\n const maskRef = imaskRef.current?.maskRef;\n if (maskRef && maskRef.rawInputValue === '') {\n // в случае, когда пользователь стер все из инпута, очищаем value полностью\n // иначе в value остаются символы маски\n props.onAccept?.('', maskRef, e.nativeEvent as InputEvent);\n }\n\n props.onInput?.(e);\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n const nearest = getMaxCaretPosition();\n if (isShortcutSelectAll(e)) {\n e.preventDefault();\n setSelection(0, nearest);\n } else if (isKeyArrow(e) || isKeyEnd(e) || isKeyHome(e)) {\n e.preventDefault();\n const [start, end, direction] = calcSelection(e);\n setSelection(start, end, direction);\n }\n\n props.onKeyDown?.(e);\n }\n },\n);\n"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3
- var _excluded = ["mask", "maskChar", "formatChars", "alwaysShowMask", "colored", "imaskProps", "unmask", "onValueChange", "onUnexpectedInput", "onChange", "element", "className"];
3
+ var _excluded = ["mask", "maskChar", "formatChars", "alwaysShowMask", "colored", "imaskProps", "unmask", "onValueChange", "onUnexpectedInput", "onChange", "onBeforePasteValue", "element", "className", "maxLength"];
4
4
  import React, { useImperativeHandle, useRef, useState, useEffect, useContext } from 'react';
5
5
  import { forwardRefAndName } from "../../../lib/forwardRefAndName";
6
6
  import { cx } from "../../../lib/theming/Emotion";
@@ -11,6 +11,20 @@ import { globalClasses, styles } from "../MaskedInput.styles";
11
11
  import { getDefinitions, getMaskChar } from "../MaskedInput.helpers";
12
12
  import { ColorableInputElement } from "../ColorableInputElement";
13
13
  import { FixedIMaskInput } from "../FixedIMaskInput";
14
+ export var getSafeMaskInputType = function getSafeMaskInputType(type) {
15
+ if (!type) {
16
+ return type;
17
+ }
18
+ switch (type) {
19
+ case 'number':
20
+ case 'date':
21
+ case 'time':
22
+ case 'password':
23
+ return 'text';
24
+ default:
25
+ return type;
26
+ }
27
+ };
14
28
 
15
29
  /**
16
30
  * Интерфейс пропсов наследуется от `Input`.
@@ -31,8 +45,10 @@ export var MaskedInput = forwardRefAndName('MaskedInput', function MaskedInput(p
31
45
  onValueChange = props.onValueChange,
32
46
  onUnexpectedInput = props.onUnexpectedInput,
33
47
  onChange = props.onChange,
48
+ onBeforePasteValue = props.onBeforePasteValue,
34
49
  element = props.element,
35
50
  className = props.className,
51
+ maxLength = props.maxLength,
36
52
  inputProps = _objectWithoutPropertiesLoose(props, _excluded);
37
53
  var theme = useContext(ThemeContext);
38
54
  var inputRef = useRef(null);
@@ -73,10 +89,12 @@ export var MaskedInput = forwardRefAndName('MaskedInput', function MaskedInput(p
73
89
  onBlur: handleBlur,
74
90
  onInput: handleInput,
75
91
  onKeyDown: handleKeyDown,
92
+ onPaste: handlePaste,
76
93
  className: cx(globalClasses.root, uiFontGlobalClassesRoot, className, styles.root(theme)),
77
94
  element: colored ? /*#__PURE__*/
78
95
  React.createElement(ColorableInputElement, {
79
- showOnFocus: false
96
+ showOnFocus: false,
97
+ alwaysShowMask: alwaysShowMask
80
98
  }, /*#__PURE__*/
81
99
  React.createElement(FixedIMaskInput, _extends({}, imaskProps, {
82
100
  onAccept: handleAccept
@@ -87,6 +105,14 @@ export var MaskedInput = forwardRefAndName('MaskedInput', function MaskedInput(p
87
105
  }))
88
106
  }))
89
107
  );
108
+ function handlePaste(event) {
109
+ if (onBeforePasteValue && onValueChange) {
110
+ var _event$clipboardData$, _event$clipboardData;
111
+ event.preventDefault();
112
+ onValueChange == null || onValueChange(onBeforePasteValue((_event$clipboardData$ = (_event$clipboardData = event.clipboardData) == null ? void 0 : _event$clipboardData.getData('text')) != null ? _event$clipboardData$ : ''));
113
+ }
114
+ props.onPaste == null || props.onPaste(event);
115
+ }
90
116
  function getCompatibleIMaskProps() {
91
117
  return _extends({
92
118
  mask: mask.replace(/0/g, '{\\0}'),
@@ -1 +1 @@
1
- {"version":3,"names":["React","useImperativeHandle","useRef","useState","useEffect","useContext","forwardRefAndName","cx","Input","isKeyBackspace","isKeyDelete","ThemeContext","globalClasses","styles","getDefinitions","getMaskChar","ColorableInputElement","FixedIMaskInput","MaskedInput","props","ref","mask","maskChar","formatChars","_props$alwaysShowMask","alwaysShowMask","_props$colored","colored","_props$imaskProps","imaskProps","customIMaskProps","_props$unmask","unmask","onValueChange","onUnexpectedInput","onChange","element","className","inputProps","_objectWithoutPropertiesLoose","_excluded","theme","inputRef","_useState","focused","setFocused","prevValue","value","String","defaultValue","prevSelectionStart","current","Object","assign","selectAll","_inputRef$current","_inputRef$current2","focus","delaySelectAll","_inputRef$current3","input","selectionStart","getCompatibleIMaskProps","uiFontGlobalClassesRoot","createElement","_extends","onFocus","handleFocus","onBlur","handleBlur","onInput","handleInput","onKeyDown","handleKeyDown","root","showOnFocus","onAccept","handleAccept","replace","placeholderChar","definitions","eager","overwrite","lazy","disabled","_len","arguments","length","args","Array","_key","e","_e$currentTarget","currentTarget","handleUnexpectedInput","_inputRef$current4","selectAllOnFocus","_inputRef$current5","blink","bind","undefined","_e$currentTarget2","selectionEnd"],"sources":["MaskedInput.tsx"],"sourcesContent":["import React, { useImperativeHandle, useRef, useState, useEffect, useContext } from 'react';\nimport type { IMaskInputProps } from '@skbkontur/react-imask';\nimport type { Ref } from 'react';\n\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\nimport { cx } from '../../lib/theming/Emotion';\nimport type { InputProps, InputType } from '../Input';\nimport { Input } from '../Input';\nimport { isKeyBackspace, isKeyDelete } from '../../lib/events/keyboard/identifiers';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\n\nimport { globalClasses, styles } from './MaskedInput.styles';\nimport { getDefinitions, getMaskChar } from './MaskedInput.helpers';\nimport { ColorableInputElement } from './ColorableInputElement';\nimport { FixedIMaskInput } from './FixedIMaskInput';\n\nexport interface MaskedProps {\n /** Паттерн маски */\n mask: string;\n\n /** Устанавливает символ маски\n * @default _ */\n maskChar?: string;\n\n /** Задает словарь символов-регулярок для задания маски.\n * @default { '9': '[0-9]', 'a': '[A-Za-z]', '*': '[A-Za-z0-9]' } */\n formatChars?: Record<string, string>;\n\n /** Включает показ символов маски.\n * @default false */\n alwaysShowMask?: boolean;\n\n /** Задает обработчик неправильного ввода.\n * Вторым агрументом будет передан метод вспыхивания акцентным цветом.\n *\n * Если обработчик не задан, то инпут вспыхивает по-умолчанию.\n * @param value значение инпута.\n * @param blink вспыхнуть акцентным цвтетом.\n */\n onUnexpectedInput?: (value: string, blink: () => void) => void;\n\n /** Убирает из value символы, не введённые пользователем\n * @default false */\n unmask?: boolean;\n\n /** Раскрашивает символы маски.\n * @default true\n * @ignore */\n colored?: boolean;\n\n /** Задает пропы для компонента `IMaskInput`. Необходимы для юнит-тестов\n * @ignore */\n imaskProps?: IMaskInputProps<HTMLInputElement>;\n}\n\nexport type MaskInputType = Exclude<InputType, 'number' | 'date' | 'time' | 'password'>;\n\nexport interface MaskedInputProps\n extends MaskedProps,\n Omit<\n InputProps,\n 'showClearIcon' | 'mask' | 'maxLength' | 'type' | 'alwaysShowMask' | 'onUnexpectedInput' | 'maskChar'\n > {\n type?: MaskInputType;\n}\n\n/**\n * Интерфейс пропсов наследуется от `Input`.\n * Из пропсов `Input` исключены некоторые не применимые к полю с маской пропсы и сокращен список возможных значений в type.\n */\nexport const MaskedInput = forwardRefAndName(\n 'MaskedInput',\n function MaskedInput(props: MaskedInputProps, ref: Ref<Input | null>) {\n const {\n mask,\n maskChar,\n formatChars,\n alwaysShowMask = false,\n colored = true,\n imaskProps: customIMaskProps = {},\n unmask = false,\n onValueChange,\n onUnexpectedInput,\n onChange,\n element,\n className,\n ...inputProps\n } = props;\n const theme = useContext(ThemeContext);\n\n const inputRef = useRef<Input>(null);\n\n const [focused, setFocused] = useState(false);\n const prevValue = useRef<string>(props.value || String(props.defaultValue) || '');\n const prevSelectionStart = useRef<number | null>(null);\n\n useImperativeHandle(\n ref,\n () =>\n inputRef.current &&\n Object.assign(inputRef.current, {\n selectAll: () => {\n inputRef.current?.focus();\n inputRef.current?.delaySelectAll();\n },\n }),\n [],\n );\n\n useEffect(() => {\n // Для корректной работы onUnexpectedInput надо знать предыдущий value,\n // но imask при монтировании не вызывает onAccept, если value невалиден или laze=false.\n // Поэтому актуальный value при монтировании надо получать вручную\n if (inputRef.current?.input) {\n prevValue.current = inputRef.current.input.value;\n prevSelectionStart.current = inputRef.current.input.selectionStart;\n }\n }, []);\n\n const imaskProps = getCompatibleIMaskProps();\n\n // TODO: Удалить в следующем мажоре\n // Селекторы могут ожидать определённый порядок классов\n const uiFontGlobalClassesRoot = 'react-ui-ui-font-root';\n\n return (\n <Input\n ref={inputRef}\n {...inputProps}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onInput={handleInput}\n onKeyDown={handleKeyDown}\n className={cx(globalClasses.root, uiFontGlobalClassesRoot, className, styles.root(theme))}\n element={\n colored ? (\n <ColorableInputElement showOnFocus={false}>\n <FixedIMaskInput {...imaskProps} onAccept={handleAccept} />\n </ColorableInputElement>\n ) : (\n <FixedIMaskInput {...imaskProps} onAccept={handleAccept} />\n )\n }\n />\n );\n\n function getCompatibleIMaskProps(): IMaskInputProps<HTMLInputElement> {\n return {\n mask: mask.replace(/0/g, '{\\\\0}') as any,\n placeholderChar: getMaskChar(maskChar),\n definitions: getDefinitions(formatChars),\n // FIXME: Должно быть eager=true, но в imask ломается удаление по delete\n eager: 'append',\n overwrite: 'shift',\n lazy: !alwaysShowMask && (props.disabled || !focused),\n unmask,\n ...customIMaskProps,\n } as IMaskInputProps<HTMLInputElement>;\n }\n\n function handleAccept(...args: Parameters<Required<IMaskInputProps<HTMLInputElement>>['onAccept']>) {\n const [value, , e] = args;\n\n // Метод onAccept может вызываться при монтировании, если не задан проп defaultValue.\n // Но нативный input никогда не вызывает onChange при монтировании.\n // Наше событие onValueChange в Input вывается в тех же случаях, что и нативный onChange,\n // поэтому чтобы сохранить консинстентность будем ориентироваться на наличие аргумента e.\n // Он содержит нативное событие, вызвавшее изменение.\n e && onValueChange?.(value);\n !e && (prevValue.current = value);\n }\n\n /**\n * Отслеживаем неожиданные нажатия\n * handleAccept не вызывается когда значение с маской не меняется\n * Сначала вызывается handleAccept, затем handleInput\n */\n function handleInput(e: React.ChangeEvent<HTMLInputElement>) {\n const { value, selectionStart } = e.currentTarget;\n\n // При вводе неожиданных символов или удалении каретка может перепрыгивать фиксированные символы.\n // Такие случаи не расцениваем как неожиданный ввод, т.к. пользователь может намеренно их вводить.\n if (prevValue.current === value && selectionStart === prevSelectionStart.current) {\n handleUnexpectedInput(value);\n }\n prevValue.current = value;\n prevSelectionStart.current = selectionStart;\n\n props.onInput?.(e);\n }\n\n function handleFocus(e: React.FocusEvent<HTMLInputElement>) {\n setFocused(true);\n props.onFocus?.(e);\n\n // Если value из пропов отличается от value, которое получит input после обработки,\n // то imask будет ставить каретку за последним валидным символом.\n props.selectAllOnFocus && inputRef.current?.delaySelectAll();\n }\n\n function handleUnexpectedInput(value: string) {\n const blink = inputRef.current?.blink.bind(inputRef.current) || (() => undefined);\n onUnexpectedInput ? onUnexpectedInput(value, blink) : blink();\n }\n\n function handleBlur(e: React.FocusEvent<HTMLInputElement>) {\n setFocused(false);\n props.onBlur?.(e);\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n const { value, selectionStart, selectionEnd } = e.currentTarget;\n\n if (\n (isKeyBackspace(e) && selectionStart === 0 && selectionEnd === 0) ||\n (isKeyDelete(e) && prevSelectionStart.current === value.length)\n ) {\n // Случаи, когда нажатие клавиш не тригерит `onInput`\n handleUnexpectedInput(value);\n prevValue.current = e.currentTarget.value;\n }\n prevSelectionStart.current = selectionStart;\n\n props.onKeyDown?.(e);\n }\n },\n);\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useImperativeHandle","useRef","useState","useEffect","useContext","forwardRefAndName","cx","Input","isKeyBackspace","isKeyDelete","ThemeContext","globalClasses","styles","getDefinitions","getMaskChar","ColorableInputElement","FixedIMaskInput","getSafeMaskInputType","type","MaskedInput","props","ref","mask","maskChar","formatChars","_props$alwaysShowMask","alwaysShowMask","_props$colored","colored","_props$imaskProps","imaskProps","customIMaskProps","_props$unmask","unmask","onValueChange","onUnexpectedInput","onChange","onBeforePasteValue","element","className","maxLength","inputProps","_objectWithoutPropertiesLoose","_excluded","theme","inputRef","_useState","focused","setFocused","prevValue","value","String","defaultValue","prevSelectionStart","current","Object","assign","selectAll","_inputRef$current","_inputRef$current2","focus","delaySelectAll","_inputRef$current3","input","selectionStart","getCompatibleIMaskProps","uiFontGlobalClassesRoot","createElement","_extends","onFocus","handleFocus","onBlur","handleBlur","onInput","handleInput","onKeyDown","handleKeyDown","onPaste","handlePaste","root","showOnFocus","onAccept","handleAccept","event","_event$clipboardData$","_event$clipboardData","preventDefault","clipboardData","getData","replace","placeholderChar","definitions","eager","overwrite","lazy","disabled","_len","arguments","length","args","Array","_key","e","_e$currentTarget","currentTarget","handleUnexpectedInput","_inputRef$current4","selectAllOnFocus","_inputRef$current5","blink","bind","undefined","_e$currentTarget2","selectionEnd"],"sources":["MaskedInput.tsx"],"sourcesContent":["import React, { useImperativeHandle, useRef, useState, useEffect, useContext } from 'react';\nimport type { IMaskInputProps } from '@skbkontur/react-imask';\nimport type { Ref } from 'react';\n\nimport { forwardRefAndName } from '../../lib/forwardRefAndName';\nimport { cx } from '../../lib/theming/Emotion';\nimport type { InputProps, InputType } from '../Input';\nimport { Input } from '../Input';\nimport { isKeyBackspace, isKeyDelete } from '../../lib/events/keyboard/identifiers';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\n\nimport { globalClasses, styles } from './MaskedInput.styles';\nimport { getDefinitions, getMaskChar } from './MaskedInput.helpers';\nimport { ColorableInputElement } from './ColorableInputElement';\nimport { FixedIMaskInput } from './FixedIMaskInput';\n\nexport type MaskedInputOnBeforePasteValue = (value: string) => string;\n\nexport interface MaskedProps {\n /** Паттерн маски */\n mask: string;\n\n /** Устанавливает символ маски\n * @default _ */\n maskChar?: string;\n\n /** Задает словарь символов-регулярок для задания маски.\n * @default { '9': '[0-9]', 'a': '[A-Za-z]', '*': '[A-Za-z0-9]' } */\n formatChars?: Record<string, string>;\n\n /** Включает показ символов маски.\n * @default false */\n alwaysShowMask?: boolean;\n\n /** Задает обработчик неправильного ввода.\n * Вторым агрументом будет передан метод вспыхивания акцентным цветом.\n *\n * Если обработчик не задан, то инпут вспыхивает по-умолчанию.\n * @param value значение инпута.\n * @param blink вспыхнуть акцентным цвтетом.\n */\n onUnexpectedInput?: (value: string, blink: () => void) => void;\n\n /** Задает обработчик вставки значения в инпут.\n * В value будет передано значение из буфера обмена.\n * Возвращаемое значение будет использовано как значение инпута.\n * Используется для фильтрации значения при вставке из буфера обмена.\n * @param value значение вставки.\n */\n onBeforePasteValue?: MaskedInputOnBeforePasteValue;\n\n /** Убирает из value символы, не введённые пользователем\n * @default false */\n unmask?: boolean;\n\n /** Раскрашивает символы маски.\n * @default true\n * @ignore */\n colored?: boolean;\n\n /** Задает пропы для компонента `IMaskInput`. Необходимы для юнит-тестов\n * @ignore */\n imaskProps?: IMaskInputProps<HTMLInputElement>;\n}\n\nexport type MaskInputType = Exclude<InputType, 'number' | 'date' | 'time' | 'password'>;\n\nexport const getSafeMaskInputType = (type?: InputType): MaskInputType | undefined => {\n if (!type) {\n return type;\n }\n\n switch (type) {\n case 'number':\n case 'date':\n case 'time':\n case 'password':\n return 'text';\n default:\n return type;\n }\n};\n\nexport interface MaskedInputProps\n extends MaskedProps,\n Omit<\n InputProps,\n 'showClearIcon' | 'mask' | 'maxLength' | 'type' | 'alwaysShowMask' | 'onUnexpectedInput' | 'maskChar'\n > {\n type?: MaskInputType;\n}\n\n/**\n * Интерфейс пропсов наследуется от `Input`.\n * Из пропсов `Input` исключены некоторые не применимые к полю с маской пропсы и сокращен список возможных значений в type.\n */\nexport const MaskedInput = forwardRefAndName(\n 'MaskedInput',\n function MaskedInput(props: MaskedInputProps, ref: Ref<Input | null>) {\n const {\n mask,\n maskChar,\n formatChars,\n alwaysShowMask = false,\n colored = true,\n imaskProps: customIMaskProps = {},\n unmask = false,\n onValueChange,\n onUnexpectedInput,\n onChange,\n onBeforePasteValue,\n element,\n className,\n // @ts-expect-error: могут передавать игнорируя ошибку\n maxLength,\n ...inputProps\n } = props;\n const theme = useContext(ThemeContext);\n\n const inputRef = useRef<Input>(null);\n\n const [focused, setFocused] = useState(false);\n const prevValue = useRef<string>(props.value || String(props.defaultValue) || '');\n const prevSelectionStart = useRef<number | null>(null);\n\n useImperativeHandle(\n ref,\n () =>\n inputRef.current &&\n Object.assign(inputRef.current, {\n selectAll: () => {\n inputRef.current?.focus();\n inputRef.current?.delaySelectAll();\n },\n }),\n [],\n );\n\n useEffect(() => {\n // Для корректной работы onUnexpectedInput надо знать предыдущий value,\n // но imask при монтировании не вызывает onAccept, если value невалиден или laze=false.\n // Поэтому актуальный value при монтировании надо получать вручную\n if (inputRef.current?.input) {\n prevValue.current = inputRef.current.input.value;\n prevSelectionStart.current = inputRef.current.input.selectionStart;\n }\n }, []);\n\n const imaskProps = getCompatibleIMaskProps();\n\n // TODO: Удалить в следующем мажоре\n // Селекторы могут ожидать определённый порядок классов\n const uiFontGlobalClassesRoot = 'react-ui-ui-font-root';\n\n return (\n <Input\n ref={inputRef}\n {...inputProps}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onInput={handleInput}\n onKeyDown={handleKeyDown}\n onPaste={handlePaste}\n className={cx(globalClasses.root, uiFontGlobalClassesRoot, className, styles.root(theme))}\n element={\n colored ? (\n <ColorableInputElement showOnFocus={false} alwaysShowMask={alwaysShowMask}>\n <FixedIMaskInput {...imaskProps} onAccept={handleAccept} />\n </ColorableInputElement>\n ) : (\n <FixedIMaskInput {...imaskProps} onAccept={handleAccept} />\n )\n }\n />\n );\n\n function handlePaste(event: React.ClipboardEvent<HTMLInputElement>) {\n if (onBeforePasteValue && onValueChange) {\n event.preventDefault();\n onValueChange?.(onBeforePasteValue(event.clipboardData?.getData('text') ?? ''));\n }\n\n props.onPaste?.(event);\n }\n\n function getCompatibleIMaskProps(): IMaskInputProps<HTMLInputElement> {\n return {\n mask: mask.replace(/0/g, '{\\\\0}') as any,\n placeholderChar: getMaskChar(maskChar),\n definitions: getDefinitions(formatChars),\n // FIXME: Должно быть eager=true, но в imask ломается удаление по delete\n eager: 'append',\n overwrite: 'shift',\n lazy: !alwaysShowMask && (props.disabled || !focused),\n unmask,\n ...customIMaskProps,\n } as IMaskInputProps<HTMLInputElement>;\n }\n\n function handleAccept(...args: Parameters<Required<IMaskInputProps<HTMLInputElement>>['onAccept']>) {\n const [value, , e] = args;\n\n // Метод onAccept может вызываться при монтировании, если не задан проп defaultValue.\n // Но нативный input никогда не вызывает onChange при монтировании.\n // Наше событие onValueChange в Input вывается в тех же случаях, что и нативный onChange,\n // поэтому чтобы сохранить консинстентность будем ориентироваться на наличие аргумента e.\n // Он содержит нативное событие, вызвавшее изменение.\n e && onValueChange?.(value);\n !e && (prevValue.current = value);\n }\n\n /**\n * Отслеживаем неожиданные нажатия\n * handleAccept не вызывается когда значение с маской не меняется\n * Сначала вызывается handleAccept, затем handleInput\n */\n function handleInput(e: React.ChangeEvent<HTMLInputElement>) {\n const { value, selectionStart } = e.currentTarget;\n\n // При вводе неожиданных символов или удалении каретка может перепрыгивать фиксированные символы.\n // Такие случаи не расцениваем как неожиданный ввод, т.к. пользователь может намеренно их вводить.\n if (prevValue.current === value && selectionStart === prevSelectionStart.current) {\n handleUnexpectedInput(value);\n }\n prevValue.current = value;\n prevSelectionStart.current = selectionStart;\n\n props.onInput?.(e);\n }\n\n function handleFocus(e: React.FocusEvent<HTMLInputElement>) {\n setFocused(true);\n props.onFocus?.(e);\n\n // Если value из пропов отличается от value, которое получит input после обработки,\n // то imask будет ставить каретку за последним валидным символом.\n props.selectAllOnFocus && inputRef.current?.delaySelectAll();\n }\n\n function handleUnexpectedInput(value: string) {\n const blink = inputRef.current?.blink.bind(inputRef.current) || (() => undefined);\n onUnexpectedInput ? onUnexpectedInput(value, blink) : blink();\n }\n\n function handleBlur(e: React.FocusEvent<HTMLInputElement>) {\n setFocused(false);\n props.onBlur?.(e);\n }\n\n function handleKeyDown(e: React.KeyboardEvent<HTMLInputElement>) {\n const { value, selectionStart, selectionEnd } = e.currentTarget;\n\n if (\n (isKeyBackspace(e) && selectionStart === 0 && selectionEnd === 0) ||\n (isKeyDelete(e) && prevSelectionStart.current === value.length)\n ) {\n // Случаи, когда нажатие клавиш не тригерит `onInput`\n handleUnexpectedInput(value);\n prevValue.current = e.currentTarget.value;\n }\n prevSelectionStart.current = selectionStart;\n\n props.onKeyDown?.(e);\n }\n },\n);\n"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,7 @@
1
1
  import type { IMaskInputProps } from '@skbkontur/react-imask';
2
2
  import type { InputProps, InputType } from '../Input';
3
3
  import { Input } from '../Input';
4
+ export type MaskedInputOnBeforePasteValue = (value: string) => string;
4
5
  export interface MaskedProps {
5
6
  /** Паттерн маски */
6
7
  mask: string;
@@ -21,6 +22,13 @@ export interface MaskedProps {
21
22
  * @param blink вспыхнуть акцентным цвтетом.
22
23
  */
23
24
  onUnexpectedInput?: (value: string, blink: () => void) => void;
25
+ /** Задает обработчик вставки значения в инпут.
26
+ * В value будет передано значение из буфера обмена.
27
+ * Возвращаемое значение будет использовано как значение инпута.
28
+ * Используется для фильтрации значения при вставке из буфера обмена.
29
+ * @param value значение вставки.
30
+ */
31
+ onBeforePasteValue?: MaskedInputOnBeforePasteValue;
24
32
  /** Убирает из value символы, не введённые пользователем
25
33
  * @default false */
26
34
  unmask?: boolean;
@@ -33,6 +41,7 @@ export interface MaskedProps {
33
41
  imaskProps?: IMaskInputProps<HTMLInputElement>;
34
42
  }
35
43
  export type MaskInputType = Exclude<InputType, 'number' | 'date' | 'time' | 'password'>;
44
+ export declare const getSafeMaskInputType: (type?: InputType) => MaskInputType | undefined;
36
45
  export interface MaskedInputProps extends MaskedProps, Omit<InputProps, 'showClearIcon' | 'mask' | 'maxLength' | 'type' | 'alwaysShowMask' | 'onUnexpectedInput' | 'maskChar'> {
37
46
  type?: MaskInputType;
38
47
  }
@@ -5,7 +5,6 @@ import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
5
5
  var _excluded = ["link", "comment", "icon", "loose", "state", "size", "_enableIconPadding", "component", "onMouseEnter", "onMouseLeave", "isMobile", "href", "disabled", "scrollIntoView", "rel", "isNotSelectable", "children", "className", "style", "data-tid"];
6
6
  var _class, _MenuItem;
7
7
  import React from 'react';
8
- import PropTypes from 'prop-types';
9
8
  import { globalObject, isBrowser } from '@skbkontur/global-object';
10
9
  import { isThemeGTE } from "../../../lib/theming/ThemeHelpers";
11
10
  import { scrollYCenterIntoNearestScrollable } from "../../../lib/dom/scrollYCenterIntoNearestScrollable";
@@ -294,15 +293,5 @@ export var MenuItem = rootNode(_class = (_MenuItem = /*#__PURE__*/function (_Rea
294
293
  return this.props.state === 'selected' && !this.state.highlighted;
295
294
  }
296
295
  }]);
297
- }(React.Component), _MenuItem.__KONTUR_REACT_UI__ = 'MenuItem', _MenuItem.displayName = 'MenuItem', _MenuItem.__MENU_ITEM__ = true, _MenuItem.propTypes = {
298
- comment: PropTypes.node,
299
- disabled: PropTypes.bool,
300
- href: PropTypes.string,
301
- icon: PropTypes.node,
302
- loose: PropTypes.bool,
303
- state: PropTypes.string,
304
- target: PropTypes.string,
305
- onClick: PropTypes.func,
306
- size: PropTypes.string
307
- }, _MenuItem.contextType = MenuContext, _MenuItem)) || _class;
296
+ }(React.Component), _MenuItem.__KONTUR_REACT_UI__ = 'MenuItem', _MenuItem.displayName = 'MenuItem', _MenuItem.__MENU_ITEM__ = true, _MenuItem.contextType = MenuContext, _MenuItem)) || _class;
308
297
  export var isMenuItem = isReactUIComponent('MenuItem');