@skbkontur/react-ui 5.2.1 → 5.3.1

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 (555) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/README.md +7 -7
  3. package/cjs/components/Autocomplete/Autocomplete.d.ts +6 -23
  4. package/cjs/components/Autocomplete/Autocomplete.js +49 -46
  5. package/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
  6. package/cjs/components/Button/Button.d.ts +2 -0
  7. package/cjs/components/Button/Button.js +29 -1
  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 +107 -75
  11. package/cjs/components/Button/Button.styles.js.map +1 -1
  12. package/cjs/components/Calendar/Calendar.d.ts +2 -0
  13. package/cjs/components/Calendar/Calendar.js +1 -0
  14. package/cjs/components/Calendar/Calendar.js.map +1 -1
  15. package/cjs/components/Center/Center.d.ts +2 -0
  16. package/cjs/components/Center/Center.js +1 -0
  17. package/cjs/components/Center/Center.js.map +1 -1
  18. package/cjs/components/Checkbox/Checkbox.d.ts +2 -12
  19. package/cjs/components/Checkbox/Checkbox.js +2 -14
  20. package/cjs/components/Checkbox/Checkbox.js.map +1 -1
  21. package/cjs/components/ComboBox/ComboBox.d.ts +2 -0
  22. package/cjs/components/ComboBox/ComboBox.js +1 -0
  23. package/cjs/components/ComboBox/ComboBox.js.map +1 -1
  24. package/cjs/components/CurrencyInput/CurrencyInput.d.ts +6 -24
  25. package/cjs/components/CurrencyInput/CurrencyInput.js +5 -28
  26. package/cjs/components/CurrencyInput/CurrencyInput.js.map +1 -1
  27. package/cjs/components/CurrencyInput/constants.js +1 -2
  28. package/cjs/components/CurrencyInput/constants.js.map +1 -1
  29. package/cjs/components/CurrencyLabel/CurrencyLabel.js +21 -28
  30. package/cjs/components/CurrencyLabel/CurrencyLabel.js.map +1 -1
  31. package/cjs/components/DateInput/DateInput.d.ts +2 -0
  32. package/cjs/components/DateInput/DateInput.js +1 -0
  33. package/cjs/components/DateInput/DateInput.js.map +1 -1
  34. package/cjs/components/DatePicker/DatePicker.d.ts +6 -33
  35. package/cjs/components/DatePicker/DatePicker.js +6 -60
  36. package/cjs/components/DatePicker/DatePicker.js.map +1 -1
  37. package/cjs/components/Dropdown/Dropdown.d.ts +2 -47
  38. package/cjs/components/Dropdown/Dropdown.js +2 -82
  39. package/cjs/components/Dropdown/Dropdown.js.map +1 -1
  40. package/cjs/components/DropdownMenu/DropdownMenu.d.ts +4 -2
  41. package/cjs/components/DropdownMenu/DropdownMenu.js +1 -0
  42. package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
  43. package/cjs/components/FxInput/FxInput.d.ts +2 -5
  44. package/cjs/components/FxInput/FxInput.js +2 -7
  45. package/cjs/components/FxInput/FxInput.js.map +1 -1
  46. package/cjs/components/Gapped/Gapped.d.ts +2 -15
  47. package/cjs/components/Gapped/Gapped.js +1 -24
  48. package/cjs/components/Gapped/Gapped.js.map +1 -1
  49. package/cjs/components/GlobalLoader/GlobalLoader.d.ts +2 -0
  50. package/cjs/components/GlobalLoader/GlobalLoader.js +1 -0
  51. package/cjs/components/GlobalLoader/GlobalLoader.js.map +1 -1
  52. package/cjs/components/Group/Group.d.ts +5 -4
  53. package/cjs/components/Group/Group.js +91 -40
  54. package/cjs/components/Group/Group.js.map +1 -1
  55. package/cjs/components/Group/Group.styles.d.ts +1 -0
  56. package/cjs/components/Group/Group.styles.js +12 -6
  57. package/cjs/components/Group/Group.styles.js.map +1 -1
  58. package/cjs/components/Hint/Hint.d.ts +2 -0
  59. package/cjs/components/Hint/Hint.js +1 -0
  60. package/cjs/components/Hint/Hint.js.map +1 -1
  61. package/cjs/components/Input/Input.d.ts +2 -0
  62. package/cjs/components/Input/Input.js +1 -0
  63. package/cjs/components/Input/Input.js.map +1 -1
  64. package/cjs/components/Kebab/Kebab.d.ts +2 -1
  65. package/cjs/components/Kebab/Kebab.js +2 -26
  66. package/cjs/components/Kebab/Kebab.js.map +1 -1
  67. package/cjs/components/Link/Link.d.ts +2 -0
  68. package/cjs/components/Link/Link.js +1 -0
  69. package/cjs/components/Link/Link.js.map +1 -1
  70. package/cjs/components/Loader/Loader.d.ts +6 -36
  71. package/cjs/components/Loader/Loader.js +3 -57
  72. package/cjs/components/Loader/Loader.js.map +1 -1
  73. package/cjs/components/MaskedInput/MaskedInput.d.ts +1 -0
  74. package/cjs/components/MaskedInput/MaskedInput.js +17 -1
  75. package/cjs/components/MaskedInput/MaskedInput.js.map +1 -1
  76. package/cjs/components/MenuItem/MenuItem.d.ts +2 -12
  77. package/cjs/components/MenuItem/MenuItem.js +2 -22
  78. package/cjs/components/MenuItem/MenuItem.js.map +1 -1
  79. package/cjs/components/MiniModal/MiniModal.styles.d.ts +1 -0
  80. package/cjs/components/MiniModal/MiniModal.styles.js +14 -7
  81. package/cjs/components/MiniModal/MiniModal.styles.js.map +1 -1
  82. package/cjs/components/MiniModal/MiniModalBody.js +17 -2
  83. package/cjs/components/MiniModal/MiniModalBody.js.map +1 -1
  84. package/cjs/components/Modal/Modal.styles.d.ts +1 -0
  85. package/cjs/components/Modal/Modal.styles.js +36 -28
  86. package/cjs/components/Modal/Modal.styles.js.map +1 -1
  87. package/cjs/components/Modal/ModalBody.d.ts +2 -0
  88. package/cjs/components/Modal/ModalBody.js +1 -0
  89. package/cjs/components/Modal/ModalBody.js.map +1 -1
  90. package/cjs/components/Modal/ModalHeader.d.ts +5 -0
  91. package/cjs/components/Modal/ModalHeader.js +8 -1
  92. package/cjs/components/Modal/ModalHeader.js.map +1 -1
  93. package/cjs/components/Paging/DotsIcon.d.ts +3 -0
  94. package/cjs/components/Paging/DotsIcon.js +13 -0
  95. package/cjs/components/Paging/DotsIcon.js.map +1 -0
  96. package/cjs/components/Paging/ForwardIcon.d.ts +3 -0
  97. package/cjs/components/Paging/ForwardIcon.js +13 -1
  98. package/cjs/components/Paging/ForwardIcon.js.map +1 -1
  99. package/cjs/components/Paging/NavigationHelper.d.ts +3 -2
  100. package/cjs/components/Paging/NavigationHelper.js +8 -6
  101. package/cjs/components/Paging/NavigationHelper.js.map +1 -1
  102. package/cjs/components/Paging/Paging.d.ts +13 -2
  103. package/cjs/components/Paging/Paging.js +120 -50
  104. package/cjs/components/Paging/Paging.js.map +1 -1
  105. package/cjs/components/Paging/Paging.styles.d.ts +24 -1
  106. package/cjs/components/Paging/Paging.styles.js +151 -22
  107. package/cjs/components/Paging/Paging.styles.js.map +1 -1
  108. package/cjs/components/Paging/PagingHelper.d.ts +1 -1
  109. package/cjs/components/Paging/PagingHelper.js +18 -11
  110. package/cjs/components/Paging/PagingHelper.js.map +1 -1
  111. package/cjs/components/PasswordInput/PasswordInput.d.ts +2 -7
  112. package/cjs/components/PasswordInput/PasswordInput.js +2 -11
  113. package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
  114. package/cjs/components/Radio/Radio.d.ts +2 -0
  115. package/cjs/components/Radio/Radio.js +1 -0
  116. package/cjs/components/Radio/Radio.js.map +1 -1
  117. package/cjs/components/RadioGroup/RadioGroup.d.ts +2 -0
  118. package/cjs/components/RadioGroup/RadioGroup.js +1 -0
  119. package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
  120. package/cjs/components/ScrollContainer/ScrollContainer.d.ts +2 -9
  121. package/cjs/components/ScrollContainer/ScrollContainer.js +2 -11
  122. package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
  123. package/cjs/components/Select/Select.d.ts +2 -0
  124. package/cjs/components/Select/Select.js +2 -1
  125. package/cjs/components/Select/Select.js.map +1 -1
  126. package/cjs/components/SidePage/SidePage.styles.d.ts +3 -1
  127. package/cjs/components/SidePage/SidePage.styles.js +52 -38
  128. package/cjs/components/SidePage/SidePage.styles.js.map +1 -1
  129. package/cjs/components/SidePage/SidePageBody.d.ts +2 -0
  130. package/cjs/components/SidePage/SidePageBody.js +1 -0
  131. package/cjs/components/SidePage/SidePageBody.js.map +1 -1
  132. package/cjs/components/SidePage/SidePageContainer.d.ts +2 -0
  133. package/cjs/components/SidePage/SidePageContainer.js +1 -0
  134. package/cjs/components/SidePage/SidePageContainer.js.map +1 -1
  135. package/cjs/components/SidePage/SidePageFooter.d.ts +2 -0
  136. package/cjs/components/SidePage/SidePageFooter.js +1 -0
  137. package/cjs/components/SidePage/SidePageFooter.js.map +1 -1
  138. package/cjs/components/SidePage/SidePageHeader.d.ts +12 -2
  139. package/cjs/components/SidePage/SidePageHeader.js +60 -19
  140. package/cjs/components/SidePage/SidePageHeader.js.map +1 -1
  141. package/cjs/components/Spinner/Spinner.d.ts +2 -18
  142. package/cjs/components/Spinner/Spinner.js +2 -32
  143. package/cjs/components/Spinner/Spinner.js.map +1 -1
  144. package/cjs/components/Sticky/Sticky.d.ts +2 -13
  145. package/cjs/components/Sticky/Sticky.js +2 -22
  146. package/cjs/components/Sticky/Sticky.js.map +1 -1
  147. package/cjs/components/Switcher/Switcher.d.ts +6 -21
  148. package/cjs/components/Switcher/Switcher.js +11 -20
  149. package/cjs/components/Switcher/Switcher.js.map +1 -1
  150. package/cjs/components/Switcher/Switcher.styles.d.ts +1 -0
  151. package/cjs/components/Switcher/Switcher.styles.js +17 -9
  152. package/cjs/components/Switcher/Switcher.styles.js.map +1 -1
  153. package/cjs/components/Tabs/Indicator.d.ts +2 -0
  154. package/cjs/components/Tabs/Indicator.js +1 -0
  155. package/cjs/components/Tabs/Indicator.js.map +1 -1
  156. package/cjs/components/Tabs/Tab.d.ts +2 -0
  157. package/cjs/components/Tabs/Tab.js +1 -0
  158. package/cjs/components/Tabs/Tab.js.map +1 -1
  159. package/cjs/components/Tabs/Tabs.d.ts +2 -0
  160. package/cjs/components/Tabs/Tabs.js +1 -0
  161. package/cjs/components/Tabs/Tabs.js.map +1 -1
  162. package/cjs/components/Textarea/Textarea.d.ts +2 -44
  163. package/cjs/components/Textarea/Textarea.js +2 -56
  164. package/cjs/components/Textarea/Textarea.js.map +1 -1
  165. package/cjs/components/Textarea/TextareaCounter.js +2 -13
  166. package/cjs/components/Textarea/TextareaCounter.js.map +1 -1
  167. package/cjs/components/Toast/Toast.d.ts +2 -0
  168. package/cjs/components/Toast/Toast.js +1 -0
  169. package/cjs/components/Toast/Toast.js.map +1 -1
  170. package/cjs/components/Toast/ToastView.d.ts +2 -14
  171. package/cjs/components/Toast/ToastView.js +3 -22
  172. package/cjs/components/Toast/ToastView.js.map +1 -1
  173. package/cjs/components/Toggle/Toggle.d.ts +2 -10
  174. package/cjs/components/Toggle/Toggle.js +1 -11
  175. package/cjs/components/Toggle/Toggle.js.map +1 -1
  176. package/cjs/components/Token/Token.d.ts +2 -0
  177. package/cjs/components/Token/Token.js +1 -0
  178. package/cjs/components/Token/Token.js.map +1 -1
  179. package/cjs/components/TokenInput/TokenInput.d.ts +2 -0
  180. package/cjs/components/TokenInput/TokenInput.js +1 -0
  181. package/cjs/components/TokenInput/TokenInput.js.map +1 -1
  182. package/cjs/components/Tooltip/Tooltip.d.ts +14 -9
  183. package/cjs/components/Tooltip/Tooltip.js +95 -13
  184. package/cjs/components/Tooltip/Tooltip.js.map +1 -1
  185. package/cjs/components/Tooltip/Tooltip.styles.d.ts +7 -1
  186. package/cjs/components/Tooltip/Tooltip.styles.js +50 -12
  187. package/cjs/components/Tooltip/Tooltip.styles.js.map +1 -1
  188. package/cjs/components/TooltipMenu/TooltipMenu.d.ts +4 -2
  189. package/cjs/components/TooltipMenu/TooltipMenu.js +1 -0
  190. package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
  191. package/cjs/index.d.ts +1 -0
  192. package/cjs/index.js.map +1 -1
  193. package/cjs/internal/CommonWrapper/CommonWrapper.d.ts +2 -0
  194. package/cjs/internal/CommonWrapper/CommonWrapper.js +1 -0
  195. package/cjs/internal/CommonWrapper/CommonWrapper.js.map +1 -1
  196. package/cjs/internal/ComponentTable.js +2 -3
  197. package/cjs/internal/ComponentTable.js.map +1 -1
  198. package/cjs/internal/CustomComboBox/ComboBoxView.d.ts +2 -0
  199. package/cjs/internal/CustomComboBox/ComboBoxView.js +1 -0
  200. package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  201. package/cjs/internal/CustomComboBox/CustomComboBox.d.ts +2 -0
  202. package/cjs/internal/CustomComboBox/CustomComboBox.js +1 -0
  203. package/cjs/internal/CustomComboBox/CustomComboBox.js.map +1 -1
  204. package/cjs/internal/DateSelect/DateSelect.d.ts +0 -10
  205. package/cjs/internal/DateSelect/DateSelect.js +1 -18
  206. package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
  207. package/cjs/internal/FocusTrap/FocusTrap.d.ts +2 -0
  208. package/cjs/internal/FocusTrap/FocusTrap.js +1 -0
  209. package/cjs/internal/FocusTrap/FocusTrap.js.map +1 -1
  210. package/cjs/internal/IgnoreLayerClick/IgnoreLayerClick.js +1 -0
  211. package/cjs/internal/IgnoreLayerClick/IgnoreLayerClick.js.map +1 -1
  212. package/cjs/internal/InputLikeText/InputLikeText.d.ts +2 -0
  213. package/cjs/internal/InputLikeText/InputLikeText.js +1 -0
  214. package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
  215. package/cjs/internal/Menu/Menu.d.ts +2 -0
  216. package/cjs/internal/Menu/Menu.js +1 -0
  217. package/cjs/internal/Menu/Menu.js.map +1 -1
  218. package/cjs/internal/MobilePopup/MobilePopup.d.ts +2 -0
  219. package/cjs/internal/MobilePopup/MobilePopup.js +1 -0
  220. package/cjs/internal/MobilePopup/MobilePopup.js.map +1 -1
  221. package/cjs/internal/Popup/Popup.d.ts +41 -59
  222. package/cjs/internal/Popup/Popup.js +36 -79
  223. package/cjs/internal/Popup/Popup.js.map +1 -1
  224. package/cjs/internal/Popup/PopupPin.d.ts +23 -33
  225. package/cjs/internal/Popup/PopupPin.js +2 -35
  226. package/cjs/internal/Popup/PopupPin.js.map +1 -1
  227. package/cjs/internal/Popup/PopupPinNew.d.ts +31 -0
  228. package/cjs/internal/Popup/PopupPinNew.js +180 -0
  229. package/cjs/internal/Popup/PopupPinNew.js.map +1 -0
  230. package/cjs/internal/Popup/PopupPinNew.styles.d.ts +7 -0
  231. package/cjs/internal/Popup/PopupPinNew.styles.js +33 -0
  232. package/cjs/internal/Popup/PopupPinNew.styles.js.map +1 -0
  233. package/cjs/internal/PopupMenu/PopupMenu.d.ts +2 -0
  234. package/cjs/internal/PopupMenu/PopupMenu.js +1 -0
  235. package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
  236. package/cjs/internal/RenderContainer/RenderInnerContainer.d.ts +0 -6
  237. package/cjs/internal/RenderContainer/RenderInnerContainer.js +0 -9
  238. package/cjs/internal/RenderContainer/RenderInnerContainer.js.map +1 -1
  239. package/cjs/internal/RenderLayer/RenderLayer.d.ts +2 -3
  240. package/cjs/internal/RenderLayer/RenderLayer.js +3 -12
  241. package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
  242. package/cjs/internal/ThemePlayground/Playground.js +1 -1
  243. package/cjs/internal/ThemePlayground/Playground.js.map +1 -1
  244. package/cjs/internal/ThemePlayground/Playground.styles.js +5 -8
  245. package/cjs/internal/ThemePlayground/Playground.styles.js.map +1 -1
  246. package/cjs/internal/ThemePlayground/ShowcaseGroup.js +12 -1
  247. package/cjs/internal/ThemePlayground/ShowcaseGroup.js.map +1 -1
  248. package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  249. package/cjs/internal/ZIndex/ZIndex.d.ts +3 -3
  250. package/cjs/internal/ZIndex/ZIndex.js +5 -1
  251. package/cjs/internal/ZIndex/ZIndex.js.map +1 -1
  252. package/cjs/internal/icons2022/UiMenuDots3HIcon/UiMenuDots3HIcon16Regular.d.ts +2 -0
  253. package/cjs/internal/icons2022/UiMenuDots3HIcon/UiMenuDots3HIcon16Regular.js +16 -0
  254. package/cjs/internal/icons2022/UiMenuDots3HIcon/UiMenuDots3HIcon16Regular.js.map +1 -0
  255. package/cjs/internal/themes/BasicTheme.d.ts +112 -20
  256. package/cjs/internal/themes/BasicTheme.js +149 -18
  257. package/cjs/internal/themes/BasicTheme.js.map +1 -1
  258. package/cjs/internal/themes/DarkTheme5_2.js +1 -1
  259. package/cjs/internal/themes/DarkTheme5_2.js.map +1 -1
  260. package/cjs/internal/themes/DarkTheme5_3.d.ts +1 -0
  261. package/cjs/internal/themes/DarkTheme5_3.js +13 -0
  262. package/cjs/internal/themes/DarkTheme5_3.js.map +1 -0
  263. package/cjs/internal/themes/LightTheme5_3.d.ts +1 -0
  264. package/cjs/internal/themes/LightTheme5_3.js +13 -0
  265. package/cjs/internal/themes/LightTheme5_3.js.map +1 -0
  266. package/cjs/lib/delay.mts +3 -0
  267. package/cjs/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +5 -0
  268. package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +5 -0
  269. package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js +11 -1
  270. package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
  271. package/cjs/lib/forwardRefAndName.d.ts +1 -1
  272. package/cjs/lib/forwardRefAndName.js +0 -1
  273. package/cjs/lib/forwardRefAndName.js.map +1 -1
  274. package/cjs/lib/rootNode/rootNodeDecorator.d.ts +2 -1
  275. package/cjs/lib/rootNode/rootNodeDecorator.js +1 -0
  276. package/cjs/lib/rootNode/rootNodeDecorator.js.map +1 -1
  277. package/cjs/lib/theming/ThemeVersions.d.ts +1 -1
  278. package/cjs/lib/theming/ThemeVersions.js.map +1 -1
  279. package/cjs/lib/theming/themes/DarkTheme.d.ts +1 -0
  280. package/cjs/lib/theming/themes/DarkTheme.js +4 -2
  281. package/cjs/lib/theming/themes/DarkTheme.js.map +1 -1
  282. package/cjs/lib/theming/themes/LightTheme.d.ts +1 -0
  283. package/cjs/lib/theming/themes/LightTheme.js +4 -2
  284. package/cjs/lib/theming/themes/LightTheme.js.map +1 -1
  285. package/cjs/lib/utils.d.ts +4 -0
  286. package/cjs/lib/utils.js +5 -1
  287. package/cjs/lib/utils.js.map +1 -1
  288. package/components/Autocomplete/Autocomplete/Autocomplete.js +49 -45
  289. package/components/Autocomplete/Autocomplete/Autocomplete.js.map +1 -1
  290. package/components/Autocomplete/Autocomplete.d.ts +6 -23
  291. package/components/Button/Button/Button.js +26 -5
  292. package/components/Button/Button/Button.js.map +1 -1
  293. package/components/Button/Button.d.ts +2 -0
  294. package/components/Button/Button.styles/Button.styles.js +78 -60
  295. package/components/Button/Button.styles/Button.styles.js.map +1 -1
  296. package/components/Button/Button.styles.d.ts +6 -0
  297. package/components/Calendar/Calendar/Calendar.js.map +1 -1
  298. package/components/Calendar/Calendar.d.ts +2 -0
  299. package/components/Center/Center/Center.js.map +1 -1
  300. package/components/Center/Center.d.ts +2 -0
  301. package/components/Checkbox/Checkbox/Checkbox.js +0 -11
  302. package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
  303. package/components/Checkbox/Checkbox.d.ts +2 -12
  304. package/components/ComboBox/ComboBox/ComboBox.js.map +1 -1
  305. package/components/ComboBox/ComboBox.d.ts +2 -0
  306. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js +12 -36
  307. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js.map +1 -1
  308. package/components/CurrencyInput/CurrencyInput.d.ts +6 -24
  309. package/components/CurrencyInput/constants/constants.js +0 -1
  310. package/components/CurrencyInput/constants/constants.js.map +1 -1
  311. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js +10 -22
  312. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js.map +1 -1
  313. package/components/DateInput/DateInput/DateInput.js.map +1 -1
  314. package/components/DateInput/DateInput.d.ts +2 -0
  315. package/components/DatePicker/DatePicker/DatePicker.js +1 -32
  316. package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
  317. package/components/DatePicker/DatePicker.d.ts +6 -33
  318. package/components/Dropdown/Dropdown/Dropdown.js +1 -47
  319. package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
  320. package/components/Dropdown/Dropdown.d.ts +2 -47
  321. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
  322. package/components/DropdownMenu/DropdownMenu.d.ts +4 -2
  323. package/components/FxInput/FxInput/FxInput.js +1 -5
  324. package/components/FxInput/FxInput/FxInput.js.map +1 -1
  325. package/components/FxInput/FxInput.d.ts +2 -5
  326. package/components/Gapped/Gapped/Gapped.js +1 -15
  327. package/components/Gapped/Gapped/Gapped.js.map +1 -1
  328. package/components/Gapped/Gapped.d.ts +2 -15
  329. package/components/GlobalLoader/GlobalLoader/GlobalLoader.js.map +1 -1
  330. package/components/GlobalLoader/GlobalLoader.d.ts +2 -0
  331. package/components/Group/Group/Group.js +64 -28
  332. package/components/Group/Group/Group.js.map +1 -1
  333. package/components/Group/Group.d.ts +5 -4
  334. package/components/Group/Group.styles/Group.styles.js +9 -6
  335. package/components/Group/Group.styles/Group.styles.js.map +1 -1
  336. package/components/Group/Group.styles.d.ts +1 -0
  337. package/components/Hint/Hint/Hint.js.map +1 -1
  338. package/components/Hint/Hint.d.ts +2 -0
  339. package/components/Input/Input/Input.js.map +1 -1
  340. package/components/Input/Input.d.ts +2 -0
  341. package/components/Kebab/Kebab/Kebab.js +2 -20
  342. package/components/Kebab/Kebab/Kebab.js.map +1 -1
  343. package/components/Kebab/Kebab.d.ts +2 -1
  344. package/components/Link/Link/Link.js.map +1 -1
  345. package/components/Link/Link.d.ts +2 -0
  346. package/components/Loader/Loader/Loader.js +0 -33
  347. package/components/Loader/Loader/Loader.js.map +1 -1
  348. package/components/Loader/Loader.d.ts +6 -36
  349. package/components/MaskedInput/MaskedInput/MaskedInput.js +14 -0
  350. package/components/MaskedInput/MaskedInput/MaskedInput.js.map +1 -1
  351. package/components/MaskedInput/MaskedInput.d.ts +1 -0
  352. package/components/MenuItem/MenuItem/MenuItem.js +1 -12
  353. package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
  354. package/components/MenuItem/MenuItem.d.ts +2 -12
  355. package/components/MiniModal/MiniModal.styles/MiniModal.styles.js +10 -7
  356. package/components/MiniModal/MiniModal.styles/MiniModal.styles.js.map +1 -1
  357. package/components/MiniModal/MiniModal.styles.d.ts +1 -0
  358. package/components/MiniModal/MiniModalBody/MiniModalBody.js +13 -5
  359. package/components/MiniModal/MiniModalBody/MiniModalBody.js.map +1 -1
  360. package/components/Modal/Modal.styles/Modal.styles.js +31 -28
  361. package/components/Modal/Modal.styles/Modal.styles.js.map +1 -1
  362. package/components/Modal/Modal.styles.d.ts +1 -0
  363. package/components/Modal/ModalBody/ModalBody.js.map +1 -1
  364. package/components/Modal/ModalBody.d.ts +2 -0
  365. package/components/Modal/ModalHeader/ModalHeader.js +3 -1
  366. package/components/Modal/ModalHeader/ModalHeader.js.map +1 -1
  367. package/components/Modal/ModalHeader.d.ts +5 -0
  368. package/components/Paging/DotsIcon/DotsIcon.js +14 -0
  369. package/components/Paging/DotsIcon/DotsIcon.js.map +1 -0
  370. package/components/Paging/DotsIcon/package.json +6 -0
  371. package/components/Paging/DotsIcon.d.ts +3 -0
  372. package/components/Paging/ForwardIcon/ForwardIcon.js +15 -1
  373. package/components/Paging/ForwardIcon/ForwardIcon.js.map +1 -1
  374. package/components/Paging/ForwardIcon.d.ts +3 -0
  375. package/components/Paging/NavigationHelper/NavigationHelper.js +9 -8
  376. package/components/Paging/NavigationHelper/NavigationHelper.js.map +1 -1
  377. package/components/Paging/NavigationHelper.d.ts +3 -2
  378. package/components/Paging/Paging/Paging.js +96 -47
  379. package/components/Paging/Paging/Paging.js.map +1 -1
  380. package/components/Paging/Paging.d.ts +13 -2
  381. package/components/Paging/Paging.styles/Paging.styles.js +77 -16
  382. package/components/Paging/Paging.styles/Paging.styles.js.map +1 -1
  383. package/components/Paging/Paging.styles.d.ts +24 -1
  384. package/components/Paging/PagingHelper/PagingHelper.js +16 -8
  385. package/components/Paging/PagingHelper/PagingHelper.js.map +1 -1
  386. package/components/Paging/PagingHelper.d.ts +1 -1
  387. package/components/PasswordInput/PasswordInput/PasswordInput.js +1 -7
  388. package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
  389. package/components/PasswordInput/PasswordInput.d.ts +2 -7
  390. package/components/Radio/Radio/Radio.js.map +1 -1
  391. package/components/Radio/Radio.d.ts +2 -0
  392. package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
  393. package/components/RadioGroup/RadioGroup.d.ts +2 -0
  394. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +1 -9
  395. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
  396. package/components/ScrollContainer/ScrollContainer.d.ts +2 -9
  397. package/components/Select/Select/Select.js +2 -2
  398. package/components/Select/Select/Select.js.map +1 -1
  399. package/components/Select/Select.d.ts +2 -0
  400. package/components/SidePage/SidePage.styles/SidePage.styles.js +41 -35
  401. package/components/SidePage/SidePage.styles/SidePage.styles.js.map +1 -1
  402. package/components/SidePage/SidePage.styles.d.ts +3 -1
  403. package/components/SidePage/SidePageBody/SidePageBody.js.map +1 -1
  404. package/components/SidePage/SidePageBody.d.ts +2 -0
  405. package/components/SidePage/SidePageContainer/SidePageContainer.js.map +1 -1
  406. package/components/SidePage/SidePageContainer.d.ts +2 -0
  407. package/components/SidePage/SidePageFooter/SidePageFooter.js.map +1 -1
  408. package/components/SidePage/SidePageFooter.d.ts +2 -0
  409. package/components/SidePage/SidePageHeader/SidePageHeader.js +61 -39
  410. package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
  411. package/components/SidePage/SidePageHeader.d.ts +12 -2
  412. package/components/Spinner/Spinner/Spinner.js +1 -18
  413. package/components/Spinner/Spinner/Spinner.js.map +1 -1
  414. package/components/Spinner/Spinner.d.ts +2 -18
  415. package/components/Sticky/Sticky/Sticky.js +1 -13
  416. package/components/Sticky/Sticky/Sticky.js.map +1 -1
  417. package/components/Sticky/Sticky.d.ts +2 -13
  418. package/components/Switcher/Switcher/Switcher.js +19 -16
  419. package/components/Switcher/Switcher/Switcher.js.map +1 -1
  420. package/components/Switcher/Switcher.d.ts +6 -21
  421. package/components/Switcher/Switcher.styles/Switcher.styles.js +12 -9
  422. package/components/Switcher/Switcher.styles/Switcher.styles.js.map +1 -1
  423. package/components/Switcher/Switcher.styles.d.ts +1 -0
  424. package/components/Tabs/Indicator/Indicator.js.map +1 -1
  425. package/components/Tabs/Indicator.d.ts +2 -0
  426. package/components/Tabs/Tab/Tab.js.map +1 -1
  427. package/components/Tabs/Tab.d.ts +2 -0
  428. package/components/Tabs/Tabs/Tabs.js.map +1 -1
  429. package/components/Tabs/Tabs.d.ts +2 -0
  430. package/components/Textarea/Textarea/Textarea.js +1 -44
  431. package/components/Textarea/Textarea/Textarea.js.map +1 -1
  432. package/components/Textarea/Textarea.d.ts +2 -44
  433. package/components/Textarea/TextareaCounter/TextareaCounter.js +1 -11
  434. package/components/Textarea/TextareaCounter/TextareaCounter.js.map +1 -1
  435. package/components/Toast/Toast/Toast.js.map +1 -1
  436. package/components/Toast/Toast.d.ts +2 -0
  437. package/components/Toast/ToastView/ToastView.js +3 -17
  438. package/components/Toast/ToastView/ToastView.js.map +1 -1
  439. package/components/Toast/ToastView.d.ts +2 -14
  440. package/components/Toggle/Toggle/Toggle.js +1 -10
  441. package/components/Toggle/Toggle/Toggle.js.map +1 -1
  442. package/components/Toggle/Toggle.d.ts +2 -10
  443. package/components/Token/Token/Token.js.map +1 -1
  444. package/components/Token/Token.d.ts +2 -0
  445. package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
  446. package/components/TokenInput/TokenInput.d.ts +2 -0
  447. package/components/Tooltip/Tooltip/Tooltip.js +67 -20
  448. package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
  449. package/components/Tooltip/Tooltip.d.ts +14 -9
  450. package/components/Tooltip/Tooltip.styles/Tooltip.styles.js +22 -4
  451. package/components/Tooltip/Tooltip.styles/Tooltip.styles.js.map +1 -1
  452. package/components/Tooltip/Tooltip.styles.d.ts +7 -1
  453. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
  454. package/components/TooltipMenu/TooltipMenu.d.ts +4 -2
  455. package/index.d.ts +1 -0
  456. package/index.js +1 -0
  457. package/index.js.map +1 -1
  458. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
  459. package/internal/CommonWrapper/CommonWrapper.d.ts +2 -0
  460. package/internal/ComponentTable/ComponentTable.js +0 -2
  461. package/internal/ComponentTable/ComponentTable.js.map +1 -1
  462. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
  463. package/internal/CustomComboBox/ComboBoxView.d.ts +2 -0
  464. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js.map +1 -1
  465. package/internal/CustomComboBox/CustomComboBox.d.ts +2 -0
  466. package/internal/DateSelect/DateSelect/DateSelect.js +1 -10
  467. package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
  468. package/internal/DateSelect/DateSelect.d.ts +0 -10
  469. package/internal/FocusTrap/FocusTrap/FocusTrap.js.map +1 -1
  470. package/internal/FocusTrap/FocusTrap.d.ts +2 -0
  471. package/internal/IgnoreLayerClick/IgnoreLayerClick/IgnoreLayerClick.js.map +1 -1
  472. package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
  473. package/internal/InputLikeText/InputLikeText.d.ts +2 -0
  474. package/internal/Menu/Menu/Menu.js.map +1 -1
  475. package/internal/Menu/Menu.d.ts +2 -0
  476. package/internal/MobilePopup/MobilePopup/MobilePopup.js.map +1 -1
  477. package/internal/MobilePopup/MobilePopup.d.ts +2 -0
  478. package/internal/Popup/Popup/Popup.js +14 -64
  479. package/internal/Popup/Popup/Popup.js.map +1 -1
  480. package/internal/Popup/Popup.d.ts +41 -59
  481. package/internal/Popup/PopupPin/PopupPin.js +1 -34
  482. package/internal/Popup/PopupPin/PopupPin.js.map +1 -1
  483. package/internal/Popup/PopupPin.d.ts +23 -33
  484. package/internal/Popup/PopupPinNew/PopupPinNew.js +146 -0
  485. package/internal/Popup/PopupPinNew/PopupPinNew.js.map +1 -0
  486. package/internal/Popup/PopupPinNew/package.json +6 -0
  487. package/internal/Popup/PopupPinNew.d.ts +31 -0
  488. package/internal/Popup/PopupPinNew.styles/PopupPinNew.styles.js +20 -0
  489. package/internal/Popup/PopupPinNew.styles/PopupPinNew.styles.js.map +1 -0
  490. package/internal/Popup/PopupPinNew.styles/package.json +6 -0
  491. package/internal/Popup/PopupPinNew.styles.d.ts +7 -0
  492. package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
  493. package/internal/PopupMenu/PopupMenu.d.ts +2 -0
  494. package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js +0 -8
  495. package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js.map +1 -1
  496. package/internal/RenderContainer/RenderInnerContainer.d.ts +0 -6
  497. package/internal/RenderLayer/RenderLayer/RenderLayer.js +3 -11
  498. package/internal/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
  499. package/internal/RenderLayer/RenderLayer.d.ts +2 -3
  500. package/internal/ThemePlayground/Playground/Playground.js +4 -3
  501. package/internal/ThemePlayground/Playground/Playground.js.map +1 -1
  502. package/internal/ThemePlayground/Playground.styles/Playground.styles.js +4 -4
  503. package/internal/ThemePlayground/Playground.styles/Playground.styles.js.map +1 -1
  504. package/internal/ThemePlayground/ShowcaseGroup/ShowcaseGroup.js +6 -1
  505. package/internal/ThemePlayground/ShowcaseGroup/ShowcaseGroup.js.map +1 -1
  506. package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  507. package/internal/ZIndex/ZIndex/ZIndex.js +8 -10
  508. package/internal/ZIndex/ZIndex/ZIndex.js.map +1 -1
  509. package/internal/ZIndex/ZIndex.d.ts +3 -3
  510. package/internal/icons2022/UiMenuDots3HIcon/UiMenuDots3HIcon16Regular/UiMenuDots3HIcon16Regular.js +21 -0
  511. package/internal/icons2022/UiMenuDots3HIcon/UiMenuDots3HIcon16Regular/UiMenuDots3HIcon16Regular.js.map +1 -0
  512. package/internal/icons2022/UiMenuDots3HIcon/UiMenuDots3HIcon16Regular/package.json +6 -0
  513. package/internal/icons2022/UiMenuDots3HIcon/UiMenuDots3HIcon16Regular.d.ts +2 -0
  514. package/internal/themes/BasicTheme/BasicTheme.js +170 -26
  515. package/internal/themes/BasicTheme/BasicTheme.js.map +1 -1
  516. package/internal/themes/BasicTheme.d.ts +112 -20
  517. package/internal/themes/DarkTheme5_2/DarkTheme5_2.js +3 -3
  518. package/internal/themes/DarkTheme5_2/DarkTheme5_2.js.map +1 -1
  519. package/internal/themes/DarkTheme5_3/DarkTheme5_3.js +16 -0
  520. package/internal/themes/DarkTheme5_3/DarkTheme5_3.js.map +1 -0
  521. package/internal/themes/DarkTheme5_3/package.json +6 -0
  522. package/internal/themes/DarkTheme5_3.d.ts +1 -0
  523. package/internal/themes/LightTheme5_3/LightTheme5_3.js +16 -0
  524. package/internal/themes/LightTheme5_3/LightTheme5_3.js.map +1 -0
  525. package/internal/themes/LightTheme5_3/package.json +6 -0
  526. package/internal/themes/LightTheme5_3.d.ts +1 -0
  527. package/lib/delay.d.mts +1 -0
  528. package/lib/delay.mts +3 -0
  529. package/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +5 -0
  530. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js +6 -1
  531. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
  532. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +5 -0
  533. package/lib/forwardRefAndName/forwardRefAndName.js.map +1 -1
  534. package/lib/forwardRefAndName.d.ts +1 -1
  535. package/lib/rootNode/rootNodeDecorator/rootNodeDecorator.js.map +1 -1
  536. package/lib/rootNode/rootNodeDecorator.d.ts +2 -1
  537. package/lib/theming/ThemeVersions/ThemeVersions.js.map +1 -1
  538. package/lib/theming/ThemeVersions.d.ts +1 -1
  539. package/lib/theming/themes/DarkTheme/DarkTheme.js +3 -1
  540. package/lib/theming/themes/DarkTheme/DarkTheme.js.map +1 -1
  541. package/lib/theming/themes/DarkTheme.d.ts +1 -0
  542. package/lib/theming/themes/LightTheme/LightTheme.js +3 -1
  543. package/lib/theming/themes/LightTheme/LightTheme.js.map +1 -1
  544. package/lib/theming/themes/LightTheme.d.ts +1 -0
  545. package/lib/utils/utils.js +2 -0
  546. package/lib/utils/utils.js.map +1 -1
  547. package/lib/utils.d.ts +4 -0
  548. package/package.json +10 -13
  549. package/cjs/lib/SSRSafe.d.ts +0 -2
  550. package/cjs/lib/SSRSafe.js +0 -5
  551. package/cjs/lib/SSRSafe.js.map +0 -1
  552. package/lib/SSRSafe/SSRSafe.js +0 -4
  553. package/lib/SSRSafe/SSRSafe.js.map +0 -1
  554. package/lib/SSRSafe/package.json +0 -6
  555. package/lib/SSRSafe.d.ts +0 -2
package/CHANGELOG.md CHANGED
@@ -3,6 +3,48 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [5.3.1](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@5.3.0...@skbkontur/react-ui@5.3.1) (2025-09-01)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **select:** fix pass empty placeholder ([eb5b0ed](https://github.com/skbkontur/retail-ui/commit/eb5b0ed94c5133ab4a0a461ca656512583c292ff))
12
+
13
+
14
+
15
+
16
+
17
+ # [5.3.0](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@5.2.1...@skbkontur/react-ui@5.3.0) (2025-08-25)
18
+
19
+
20
+ ### Bug Fixes
21
+
22
+ * **Autocomplete:** fix display with percentage menuWidth ([bf66bf3](https://github.com/skbkontur/retail-ui/commit/bf66bf36f9f3021693b6fba73a86e13df578f424))
23
+ * **Button:** backless buttons theme variables work ([4ea52a2](https://github.com/skbkontur/retail-ui/commit/4ea52a2139b8126ba7f1dfad99b6baf1e361d14d))
24
+ * **Button:** fix padding for Button with rightIcon ([0ef8416](https://github.com/skbkontur/retail-ui/commit/0ef8416b03068f92cdf2d53a042a6d08266eac4f))
25
+ * **MiniModal:** change fontSize and lineHeight at description section ([edbe400](https://github.com/skbkontur/retail-ui/commit/edbe4002e5872ba088336267ecf46ed5aab3a297))
26
+ * **Tooltip:** remove extra gap between Popup and pin ([f7e7533](https://github.com/skbkontur/retail-ui/commit/f7e75338ca72db382866a3aca22083dd05093a31))
27
+ * **react-ui:** make getRootNode public ([192b23b](https://github.com/skbkontur/retail-ui/commit/192b23b1374eb5460a151879ac1cf113a82f85ff))
28
+ * export PopupMenuCaptionProps type ([3283924](https://github.com/skbkontur/retail-ui/commit/3283924fe3839524ee446243cf71bb3b75a392b2))
29
+
30
+
31
+ ### Features
32
+
33
+ * **Autocomplete:** change mask behaviour ([2ef8a58](https://github.com/skbkontur/retail-ui/commit/2ef8a586d1f24548ba907439de4624c220aa999d))
34
+ * **Group:** add Hint and Tooltip support ([8a0f130](https://github.com/skbkontur/retail-ui/commit/8a0f13013a667dc5097ae9d326f796f7b75500dc))
35
+ * mark that react 19 is not supported yet ([7a2dcc0](https://github.com/skbkontur/retail-ui/commit/7a2dcc0bdbf4e112c064abdf4c157768dcb49ce2))
36
+ * **Paging:** add `size` prop and adaptivity ([1011f0d](https://github.com/skbkontur/retail-ui/commit/1011f0d3dffce1f85a06a4d1c040367ddd3ff62a))
37
+ * **Paging:** show `⌥"` symbol in macOS ([1011f0d](https://github.com/skbkontur/retail-ui/commit/1011f0d3dffce1f85a06a4d1c040367ddd3ff62a))
38
+ * remove propTypes ([569e003](https://github.com/skbkontur/retail-ui/commit/569e00312319557883da6536622a393aee932e95))
39
+ * **SidePage, Modal:** unifiy headers behavior ([bc9e505](https://github.com/skbkontur/retail-ui/commit/bc9e505b58d5d4676f1f528144b777d312eede40))
40
+ * **SidePage:** fix SidePage header blinking ([bc9e505](https://github.com/skbkontur/retail-ui/commit/bc9e505b58d5d4676f1f528144b777d312eede40))
41
+ * **Switcher:** add `width` prop ([949ccb6](https://github.com/skbkontur/retail-ui/commit/949ccb6e9f1ada57f086e3ed58ba265ad9f84b85))
42
+ * **Tooltip:** add `size` prop ([f7e7533](https://github.com/skbkontur/retail-ui/commit/f7e75338ca72db382866a3aca22083dd05093a31))
43
+
44
+
45
+
46
+
47
+
6
48
  # [5.2.1](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@5.2.0...@skbkontur/react-ui@5.2.1) (2025-07-24)
7
49
 
8
50
 
package/README.md CHANGED
@@ -30,7 +30,7 @@ const MyApp = () => (
30
30
  использовался метод findDomNode, который в StrictMode запрещён. Теперь получение DOM-ноды реализовано в библиотеке через
31
31
  ref, из-за чего появились некоторые требования к компонентам, передаваемым в Hint, Tooltip, Popup или Tab:
32
32
 
33
- - при передаче функциональных компонентов, они должны использовать `React.ForwardRef`:
33
+ - при передаче функциональных компонентов в react <= 18, они должны использовать `React.ForwardRef`:
34
34
 
35
35
  ```js static
36
36
  import { Hint } from '@skbkontur/react-ui';
@@ -84,7 +84,7 @@ class CustomClassComponent extends React.Component {
84
84
  return <div ref={this.rootNode}>children text</div>;
85
85
  }
86
86
 
87
- getRootNode() {
87
+ getRootNode = () => {
88
88
  return this.rootNode.current;
89
89
  }
90
90
  }
@@ -104,15 +104,15 @@ export const WithClassChildren = () => (
104
104
 
105
105
  ## FAQ
106
106
 
107
- ### Выпадашки и несколько react-рутов
107
+ ### Выпадающие элементы и несколько React root
108
108
 
109
- Реакт позволяет создавать рут внутри рута. Но контекст между ними не прокидывается. Это вызывает проблемы в работе
110
- различных выпадашек, типа `Tooltip`, `Select`, `Modal` и других.
109
+ React позволяет создавать root внутри root, но контекст между ними не прокидывается. Это вызывает проблемы в работе
110
+ различных выпадашек, типа `Hint`, `Tooltip`, `Select`, `Modal` и других.
111
111
 
112
- В версии `4.26.0` появился мехнизм, который решает большинство этих проблем. Если вложенный реакт-рут является виджетом,
112
+ В версии `4.26.0` появился мехнизм, который решает большинство этих проблем. Если вложенный root является виджетом,
113
113
  то будет достаточно обновить библиотеку только в нём.
114
114
 
115
- Однако, при удалении html-элемента, который был реакт-рутом, его необходимо предварительно явно размонтировать:
115
+ Однако, при удалении HTML-элемента, который был root, его необходимо предварительно явно размонтировать:
116
116
 
117
117
  ```tsx static
118
118
  React.useLayoutEffect(
@@ -1,11 +1,12 @@
1
1
  import type { AriaAttributes } from 'react';
2
2
  import React from 'react';
3
- import PropTypes from 'prop-types';
4
3
  import type { InputProps } from '../Input';
5
4
  import type { Nullable, Override } from '../../typings/utility-types';
6
5
  import type { CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';
6
+ import type { TGetRootNode } from '../../lib/rootNode';
7
7
  import type { SizeProp } from '../../lib/types/props';
8
- export interface AutocompleteProps extends CommonProps, Pick<AriaAttributes, 'aria-label'>, Override<InputProps, {
8
+ import { type MaskedProps } from '../MaskedInput';
9
+ export interface AutocompleteProps extends CommonProps, Pick<AriaAttributes, 'aria-label'>, Pick<Partial<MaskedProps>, 'alwaysShowMask' | 'mask' | 'maskChar'>, Override<Omit<InputProps, 'alwaysShowMask' | 'mask' | 'maskChar'>, {
9
10
  /** Задает функцию, которая отрисовывает элементы меню. */
10
11
  renderItem?: (item: string) => React.ReactNode;
11
12
  /** Задает промис, который резолвит элементы меню. */
@@ -61,27 +62,6 @@ type DefaultProps = Required<Pick<AutocompleteProps, 'renderItem' | 'size' | 'di
61
62
  export declare class Autocomplete extends React.Component<AutocompleteProps, AutocompleteState> {
62
63
  static __KONTUR_REACT_UI__: string;
63
64
  static displayName: string;
64
- static propTypes: {
65
- /**
66
- * Функция для отрисовки элемента в выпадающем списке. Единственный аргумент
67
- * — *item*.
68
- */
69
- renderItem: PropTypes.Requireable<(...args: any[]) => any>;
70
- /**
71
- * Если передан массив, то совпадения ищутся по этому массиву.
72
- *
73
- * Если передается функция, то она должна возвращать thenable, который
74
- * резолвится уже отфильтрованным массивом. Возвращенный thenable может
75
- * иметь метод cancel, который будет вызван при отмене поиска (пользователь
76
- * изменил строку поиска, автокомплит потерял фокус).
77
- * ```
78
- * function(pattern) {
79
- * return service.findAll(pattern);
80
- * }
81
- * ```
82
- */
83
- source: PropTypes.Requireable<NonNullable<any[] | ((...args: any[]) => any) | null | undefined>>;
84
- };
85
65
  static defaultProps: DefaultProps;
86
66
  state: AutocompleteState;
87
67
  private theme;
@@ -93,8 +73,10 @@ export declare class Autocomplete extends React.Component<AutocompleteProps, Aut
93
73
  private menuId;
94
74
  private rootSpan;
95
75
  private mobilePopup;
76
+ private featureFlags;
96
77
  private requestId;
97
78
  private getProps;
79
+ getRootNode: TGetRootNode;
98
80
  private setRootNode;
99
81
  /**
100
82
  * @public
@@ -109,6 +91,7 @@ export declare class Autocomplete extends React.Component<AutocompleteProps, Aut
109
91
  renderMain: (props: CommonWrapperRestProps<AutocompleteProps>) => React.JSX.Element;
110
92
  private renderHints;
111
93
  private renderMenu;
94
+ private getInput;
112
95
  private renderMobileMenu;
113
96
  private getItems;
114
97
  private handleValueChange;
@@ -1,6 +1,6 @@
1
1
  "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;exports.__esModule = true;exports.AutocompleteIds = exports.AutocompleteDataTids = exports.Autocomplete = void 0;var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
2
2
  var _react = _interopRequireDefault(require("react"));
3
- var _propTypes = _interopRequireDefault(require("prop-types"));
3
+ var _globalObject = require("@skbkontur/global-object");
4
4
 
5
5
  var _MenuMessage = require("../../internal/MenuMessage");
6
6
  var _decorators = require("../../lib/locale/decorators");
@@ -28,11 +28,15 @@ var _getDOMRect = require("../../lib/dom/getDOMRect");
28
28
  var _Popup = require("../../internal/Popup");
29
29
  var _getMenuPositions = require("../../lib/getMenuPositions");
30
30
  var _ZIndex = require("../../internal/ZIndex");
31
+ var _MaskedInput = require("../MaskedInput");
32
+
33
+ var _ReactUIFeatureFlagsContext = require("../../lib/featureFlagsContext/ReactUIFeatureFlagsContext");
34
+ var _FeatureFlagsHelpers = require("../../lib/featureFlagsContext/FeatureFlagsHelpers");
31
35
 
32
36
  var _Autocomplete2 = require("./Autocomplete.styles");
33
37
 
34
38
  var _locale = require("./locale");
35
- var _getAutocompleteTheme = require("./getAutocompleteTheme");var _excluded = ["onValueChange", "onKeyDown", "onFocus", "onBlur", "renderItem", "disablePortal", "hasShadow", "menuAlign", "menuMaxHeight", "preventWindowScroll", "source", "menuPos", "width", "mobileMenuHeaderText", "aria-label"];var _dec, _class, _Autocomplete;
39
+ var _getAutocompleteTheme = require("./getAutocompleteTheme");var _excluded = ["onValueChange", "onKeyDown", "onFocus", "onBlur", "renderItem", "disablePortal", "hasShadow", "menuAlign", "menuMaxHeight", "preventWindowScroll", "source", "menuPos", "width", "mobileMenuHeaderText", "type"];var _dec, _class, _Autocomplete;
36
40
 
37
41
  function match(pattern, items) {
38
42
  if (!pattern || !items) {
@@ -108,6 +112,7 @@ function renderItem(item) {
108
112
 
109
113
 
110
114
 
115
+
111
116
 
112
117
 
113
118
  var AutocompleteDataTids = exports.AutocompleteDataTids = {
@@ -148,29 +153,6 @@ Autocomplete = exports.Autocomplete = (_dec = (0, _decorators.locale)('Autocompl
148
153
 
149
154
 
150
155
 
151
-
152
-
153
-
154
-
155
-
156
-
157
-
158
-
159
-
160
-
161
-
162
-
163
-
164
-
165
-
166
-
167
-
168
-
169
-
170
-
171
-
172
-
173
-
174
156
  state = {
175
157
  items: null,
176
158
  selected: -1,
@@ -188,6 +170,7 @@ Autocomplete = exports.Autocomplete = (_dec = (0, _decorators.locale)('Autocompl
188
170
 
189
171
 
190
172
 
173
+
191
174
  requestId = 0;_this.
192
175
 
193
176
  getProps = (0, _createPropsGetter.createPropsGetter)(Autocomplete.defaultProps);_this.
@@ -222,6 +205,14 @@ Autocomplete = exports.Autocomplete = (_dec = (0, _decorators.locale)('Autocompl
222
205
 
223
206
 
224
207
 
208
+
209
+
210
+
211
+
212
+
213
+
214
+
215
+
225
216
 
226
217
 
227
218
 
@@ -253,12 +244,13 @@ Autocomplete = exports.Autocomplete = (_dec = (0, _decorators.locale)('Autocompl
253
244
 
254
245
 
255
246
 
256
- props.onValueChange,onKeyDown = props.onKeyDown,onFocus = props.onFocus,onBlur = props.onBlur,_renderItem = props.renderItem,disablePortal = props.disablePortal,hasShadow = props.hasShadow,menuAlign = props.menuAlign,menuMaxHeight = props.menuMaxHeight,preventWindowScroll = props.preventWindowScroll,source = props.source,menuPos = props.menuPos,_props$width = props.width,width = _props$width === void 0 ? _this.theme.inputWidth : _props$width,mobileMenuHeaderText = props.mobileMenuHeaderText,ariaLabel = props['aria-label'],rest = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
247
+ props.onValueChange,onKeyDown = props.onKeyDown,onFocus = props.onFocus,onBlur = props.onBlur,_renderItem = props.renderItem,disablePortal = props.disablePortal,hasShadow = props.hasShadow,menuAlign = props.menuAlign,menuMaxHeight = props.menuMaxHeight,preventWindowScroll = props.preventWindowScroll,source = props.source,menuPos = props.menuPos,_props$width = props.width,width = _props$width === void 0 ? _this.theme.inputWidth : _props$width,mobileMenuHeaderText = props.mobileMenuHeaderText,type = props.type,rest = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
257
248
 
258
249
  var inputProps = (0, _extends2.default)({},
259
250
  rest, {
260
251
  width: '100%',
261
252
  autoComplete: 'off',
253
+ 'aria-controls': _this.menuId,
262
254
  onValueChange: _this.handleValueChange,
263
255
  onKeyDown: _this.handleKeyDown,
264
256
  onFocus: _this.handleFocus,
@@ -273,9 +265,10 @@ Autocomplete = exports.Autocomplete = (_dec = (0, _decorators.locale)('Autocompl
273
265
  _Autocomplete2.styles.noPortal()] = disablePortal, _cx)
274
266
  ),
275
267
  style: { width: width },
276
- ref: _this.refRootSpan }, /*#__PURE__*/
268
+ ref: _this.refRootSpan },
269
+
270
+ _this.getInput(inputProps),
277
271
 
278
- _react.default.createElement(_Input.Input, (0, _extends2.default)({ "aria-label": ariaLabel, "aria-controls": _this.menuId }, inputProps)),
279
272
  isMobile ? _this.renderMobileMenu() : _this.renderMenu()
280
273
  )
281
274
  ));
@@ -334,6 +327,20 @@ Autocomplete = exports.Autocomplete = (_dec = (0, _decorators.locale)('Autocompl
334
327
 
335
328
 
336
329
 
330
+
331
+
332
+ getInput = function (inputProps) {
333
+ return _this.featureFlags.autocompleteUseMaskedInput && _this.props.mask ? /*#__PURE__*/
334
+ _react.default.createElement(_MaskedInput.MaskedInput, (0, _extends2.default)({},
335
+ inputProps, {
336
+ type: (0, _MaskedInput.getSafeMaskInputType)(_this.props.type),
337
+ mask: _this.props.mask,
338
+ maskChar: _this.props.maskChar })
339
+ ) : /*#__PURE__*/
340
+
341
+ _react.default.createElement(_Input.Input, (0, _extends2.default)({}, inputProps, { mask: _this.props.mask, maskChar: _this.props.maskChar }));
342
+
343
+ };_this.
337
344
 
338
345
  renderMobileMenu = function () {var _this$mobilePopup;
339
346
  var inputProps = {
@@ -343,7 +350,11 @@ Autocomplete = exports.Autocomplete = (_dec = (0, _decorators.locale)('Autocompl
343
350
  onValueChange: _this.handleValueChange,
344
351
  onKeyPress: _this.handleKeyPressMobile,
345
352
  value: _this.props.value,
346
- placeholder: _this.locale.enterValue
353
+ placeholder: _this.locale.enterValue,
354
+ type: _this.props.type,
355
+ inputMode: _this.props.inputMode,
356
+ 'aria-label': _this.props['aria-label'],
357
+ 'aria-controls': _this.menuId
347
358
  };
348
359
 
349
360
  var items = _this.state.items;
@@ -351,7 +362,7 @@ Autocomplete = exports.Autocomplete = (_dec = (0, _decorators.locale)('Autocompl
351
362
  return /*#__PURE__*/(
352
363
  _react.default.createElement(_MobilePopup.MobilePopup, {
353
364
  id: _this.menuId,
354
- headerChildComponent: /*#__PURE__*/_react.default.createElement(_Input.Input, inputProps),
365
+ headerChildComponent: _this.getInput(inputProps),
355
366
  caption: _this.props.mobileMenuHeaderText,
356
367
  opened: _this.state.isMobileOpened,
357
368
  onCloseRequest: _this.handleCloseMobile,
@@ -530,6 +541,11 @@ Autocomplete = exports.Autocomplete = (_dec = (0, _decorators.locale)('Autocompl
530
541
 
531
542
 
532
543
 
544
+
545
+
546
+
547
+
548
+
533
549
 
534
550
 
535
551
 
@@ -554,19 +570,6 @@ Autocomplete = exports.Autocomplete = (_dec = (0, _decorators.locale)('Autocompl
554
570
  * @public
555
571
  */_proto.focus = function focus() {if (this.input) {this.input.focus();}} /**
556
572
  * @public
557
- */;_proto.blur = function blur() {this.handleBlur();};_proto.componentDidUpdate = function componentDidUpdate(prevProps) {if (prevProps.value !== this.props.value) {this.updateItems(this.props.value || '');}};_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = (0, _getAutocompleteTheme.getAutocompleteTheme)(theme);return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Provider, { value: _this2.theme }, /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: _this2.setRootNode }, _this2.getProps()), _this2.renderMain));});};_proto.renderHints = function renderHints() {var items = this.state.items;if (!this.props.value) {return /*#__PURE__*/_react.default.createElement(_MenuMessage.MenuMessage, null, this.locale.enterValue);}if ((items == null ? void 0 : items.length) === 0 && this.props.value) {return /*#__PURE__*/_react.default.createElement(_MenuMessage.MenuMessage, null, this.locale.notFound);}if ((0, _utils.isNullable)(items) && this.props.value) {return /*#__PURE__*/_react.default.createElement(_MenuMessage.MenuMessage, null, this.locale.updateValue);}return null;};_proto.renderMenu = function renderMenu() {var items = this.state.items;var _this$getProps = this.getProps(),menuPos = _this$getProps.menuPos,menuAlign = _this$getProps.menuAlign,menuMaxHeight = _this$getProps.menuMaxHeight,hasShadow = _this$getProps.hasShadow,menuWidth = _this$getProps.menuWidth,width = _this$getProps.width,preventWindowScroll = _this$getProps.preventWindowScroll,disablePortal = _this$getProps.disablePortal;var menuProps = { ref: this.refMenu, maxHeight: menuMaxHeight, hasShadow: false, hasMargin: false, width: menuWidth || width && (0, _getDOMRect.getDOMRect)(this.rootSpan).width, preventWindowScroll: preventWindowScroll };if (!items || items.length === 0) {return null;}return /*#__PURE__*/_react.default.createElement(_Popup.Popup, { opened: true, hasShadow: hasShadow, id: this.menuId, priority: _ZIndex.ZIndex.priorities.PopupMenu, "data-tid": AutocompleteDataTids.menu, anchorElement: this.getAnchor(), disablePortal: disablePortal, width: menuWidth, minWidth: menuWidth === undefined ? '100%' : undefined, positions: (0, _getMenuPositions.getMenuPositions)(menuPos, menuAlign), margin: parseInt(this.theme.menuOffsetY) - 1 }, /*#__PURE__*/_react.default.createElement(_Menu.Menu, menuProps, this.getItems()));};_proto.handleMenuItemClick = function handleMenuItemClick(i) {var _this3 = this;return function (event) {return _this3.handleItemClick(event, i);};};_proto.handleItemClick = function handleItemClick(event, index) {if (event.button) {return;}event.preventDefault();this.choose(index);};_proto.choose = function choose(index) {if (!this.state.items) {return;}var value = this.state.items[index];this.opened = false;this.setState({ selected: -1, items: null });this.fireChange(value);this.blur();};_proto.updateItems = function updateItems(value) {var _this4 = this;if (!this.opened) {return;}var pattern = value.trim();var source = this.props.source;if (!source) {return;}var promise;this.requestId += 1;var expectingId = this.requestId;if (typeof source === 'function') {promise = source(pattern);} else {promise = match(pattern, source);}promise.then(function (items) {if (_this4.opened && expectingId === _this4.requestId) {_this4.setState({ items: items, selected: -1 });}});};_proto.fireChange = function fireChange(value) {if (this.props.onValueChange) {this.props.onValueChange(value);}};return Autocomplete;}(_react.default.Component), _Autocomplete.__KONTUR_REACT_UI__ = 'Autocomplete', _Autocomplete.displayName = 'Autocomplete', _Autocomplete.propTypes = { /**
558
- * Функция для отрисовки элемента в выпадающем списке. Единственный аргумент
559
- * *item*.
560
- */renderItem: _propTypes.default.func, /**
561
- * Если передан массив, то совпадения ищутся по этому массиву.
562
- *
563
- * Если передается функция, то она должна возвращать thenable, который
564
- * резолвится уже отфильтрованным массивом. Возвращенный thenable может
565
- * иметь метод cancel, который будет вызван при отмене поиска (пользователь
566
- * изменил строку поиска, автокомплит потерял фокус).
567
- * ```
568
- * function(pattern) {
569
- * return service.findAll(pattern);
570
- * }
571
- * ```
572
- */source: _propTypes.default.oneOfType([_propTypes.default.array, _propTypes.default.func]) }, _Autocomplete.defaultProps = { renderItem: renderItem, size: 'small', disablePortal: false, hasShadow: true, menuMaxHeight: 300, preventWindowScroll: true }, _Autocomplete)) || _class) || _class) || _class);
573
+ */;_proto.blur = function blur() {this.handleBlur();};_proto.componentDidUpdate = function componentDidUpdate(prevProps) {if (prevProps.value !== this.props.value) {this.updateItems(this.props.value || '');}};_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ReactUIFeatureFlagsContext.ReactUIFeatureFlagsContext.Consumer, null, function (flags) {_this2.featureFlags = (0, _FeatureFlagsHelpers.getFullReactUIFlagsContext)(flags);return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = (0, _getAutocompleteTheme.getAutocompleteTheme)(theme);return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Provider, { value: _this2.theme }, /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: _this2.setRootNode }, _this2.getProps()), _this2.renderMain));});});};_proto.renderHints = function renderHints() {var items = this.state.items;if (!this.props.value) {return /*#__PURE__*/_react.default.createElement(_MenuMessage.MenuMessage, null, this.locale.enterValue);}if ((items == null ? void 0 : items.length) === 0 && this.props.value) {return /*#__PURE__*/_react.default.createElement(_MenuMessage.MenuMessage, null, this.locale.notFound);}if ((0, _utils.isNullable)(items) && this.props.value) {return /*#__PURE__*/_react.default.createElement(_MenuMessage.MenuMessage, null, this.locale.updateValue);}return null;};_proto.renderMenu = function renderMenu() {var items = this.state.items;var _this$getProps = this.getProps(),menuPos = _this$getProps.menuPos,menuAlign = _this$getProps.menuAlign,menuMaxHeight = _this$getProps.menuMaxHeight,hasShadow = _this$getProps.hasShadow,menuWidth = _this$getProps.menuWidth,width = _this$getProps.width,preventWindowScroll = _this$getProps.preventWindowScroll,disablePortal = _this$getProps.disablePortal;var calculatedMenuWidth = menuWidth ? '100%' : width && (0, _getDOMRect.getDOMRect)(this.rootSpan).width;var menuProps = { ref: this.refMenu, maxHeight: menuMaxHeight, hasShadow: false, hasMargin: false, width: calculatedMenuWidth, preventWindowScroll: preventWindowScroll };if (!items || items.length === 0) {return null;}return /*#__PURE__*/_react.default.createElement(_Popup.Popup, { opened: true, hasShadow: hasShadow, id: this.menuId, priority: _ZIndex.ZIndex.priorities.PopupMenu, "data-tid": AutocompleteDataTids.menu, anchorElement: this.getAnchor(), disablePortal: disablePortal, width: menuWidth, minWidth: menuWidth === undefined ? '100%' : undefined, positions: (0, _getMenuPositions.getMenuPositions)(menuPos, menuAlign), margin: parseInt(this.theme.menuOffsetY) - 1 }, /*#__PURE__*/_react.default.createElement(_Menu.Menu, menuProps, this.getItems()));};_proto.handleMenuItemClick = function handleMenuItemClick(i) {var _this3 = this;return function (event) {return _this3.handleItemClick(event, i);};};_proto.handleItemClick = function handleItemClick(event, index) {if (event.button) {return;}event.preventDefault();this.choose(index);};_proto.choose = function choose(index) {var _this4 = this;if (!this.state.items) {return;}var value = this.state.items[index];this.opened = false;this.setState({ selected: -1, items: null });this.fireChange(value); // NOTE: этот таймаут - костыль. Проблема в старом ReactInputMask, он сеттит пустой value при потере фокуса.
574
+ // Можно будет убрать после полного перехода на MaskedInput
575
+ _globalObject.globalObject.setTimeout(function () {_this4.blur();}, 0);};_proto.updateItems = function updateItems(value) {var _this5 = this;if (!this.opened) {return;}var pattern = value.trim();var source = this.props.source;if (!source) {return;}var promise;this.requestId += 1;var expectingId = this.requestId;if (typeof source === 'function') {promise = source(pattern);} else {promise = match(pattern, source);}promise.then(function (items) {if (_this5.opened && expectingId === _this5.requestId) {_this5.setState({ items: items, selected: -1 });}});};_proto.fireChange = function fireChange(value) {if (this.props.onValueChange) {this.props.onValueChange(value);}};return Autocomplete;}(_react.default.Component), _Autocomplete.__KONTUR_REACT_UI__ = 'Autocomplete', _Autocomplete.displayName = 'Autocomplete', _Autocomplete.defaultProps = { renderItem: renderItem, size: 'small', disablePortal: false, hasShadow: true, menuMaxHeight: 300, preventWindowScroll: true }, _Autocomplete)) || _class) || _class) || _class);
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_propTypes","_MenuMessage","_decorators","_utils","_ThemeContext","_Emotion","_identifiers","_Input","_Menu","_MenuItem","_RenderLayer","_createPropsGetter","_fixClickFocusIE","_CommonWrapper","_MobilePopup","_decorator","_rootNode","_getDOMRect","_Popup","_getMenuPositions","_ZIndex","_Autocomplete2","_locale","_getAutocompleteTheme","_excluded","_dec","_class","_Autocomplete","match","pattern","items","Promise","resolve","lowerCasedPattern","toLowerCase","itemsMatchingPattern","filter","item","includes","renderItem","AutocompleteDataTids","exports","root","menu","AutocompleteIds","Autocomplete","locale","AutocompleteLocaleHelper","responsiveLayout","rootNode","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","state","selected","focused","isMobileOpened","opened","input","menuId","getRandomID","requestId","getProps","createPropsGetter","defaultProps","renderMain","props","_cx","isMobile","isMobileLayout","onValueChange","onKeyDown","onFocus","onBlur","_renderItem","disablePortal","hasShadow","menuAlign","menuMaxHeight","preventWindowScroll","source","menuPos","_props$width","width","theme","inputWidth","mobileMenuHeaderText","ariaLabel","rest","_objectWithoutPropertiesLoose2","default","inputProps","_extends2","autoComplete","handleValueChange","handleKeyDown","handleFocus","ref","refInput","createElement","RenderLayer","onFocusOutside","handleBlur","onClickOutside","handleClickOutside","active","className","cx","styles","noPortal","style","refRootSpan","Input","renderMobileMenu","renderMenu","_this$mobilePopup","autoFocus","onKeyPress","handleKeyPressMobile","value","placeholder","enterValue","MobilePopup","id","headerChildComponent","caption","onCloseRequest","handleCloseMobile","refMobilePopup","Menu","refMenu","onItemClick","mobilePopup","close","disableScrollContainer","maxHeight","getItems","renderHints","map","i","MenuItem","onClick","handleMenuItemClick","key","size","fireChange","setState","e","_this$mobilePopup2","event","blur","fixClickFocusIE","isKeyEscape","preventDefault","isKeyArrowUp","up","isKeyArrowDown","down","isKeyEnter","enter","getAnchor","getRootNode","el","span","rootSpan","_inheritsLoose2","_proto","prototype","focus","componentDidUpdate","prevProps","updateItems","render","_this2","ThemeContext","Consumer","getAutocompleteTheme","Provider","CommonWrapper","rootNodeRef","setRootNode","MenuMessage","notFound","isNullable","updateValue","_this$getProps","menuWidth","menuProps","hasMargin","getDOMRect","Popup","priority","ZIndex","priorities","PopupMenu","anchorElement","minWidth","undefined","positions","getMenuPositions","margin","parseInt","menuOffsetY","_this3","handleItemClick","index","button","choose","_this4","trim","promise","expectingId","then","React","Component","__KONTUR_REACT_UI__","displayName","propTypes","PropTypes","func","oneOfType","array"],"sources":["Autocomplete.tsx"],"sourcesContent":["import type { AriaAttributes, KeyboardEvent } from 'react';\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport { MenuMessage } from '../../internal/MenuMessage';\nimport { locale } from '../../lib/locale/decorators';\nimport { getRandomID, isNullable } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport { cx } from '../../lib/theming/Emotion';\nimport { isKeyArrowDown, isKeyArrowUp, isKeyEnter, isKeyEscape } from '../../lib/events/keyboard/identifiers';\nimport type { InputProps } from '../Input';\nimport { Input } from '../Input';\nimport { Menu } from '../../internal/Menu';\nimport { MenuItem } from '../MenuItem';\nimport { RenderLayer } from '../../internal/RenderLayer';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport type { Nullable, Override } from '../../typings/utility-types';\nimport { fixClickFocusIE } from '../../lib/events/fixClickFocusIE';\nimport type { CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { MobilePopup } from '../../internal/MobilePopup';\nimport { responsiveLayout } from '../ResponsiveLayout/decorator';\nimport type { TSetRootNode } from '../../lib/rootNode';\nimport { getRootNode, rootNode } from '../../lib/rootNode';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport type { SizeProp } from '../../lib/types/props';\nimport { Popup } from '../../internal/Popup';\nimport { getMenuPositions } from '../../lib/getMenuPositions';\nimport { ZIndex } from '../../internal/ZIndex';\n\nimport { styles } from './Autocomplete.styles';\nimport type { AutocompleteLocale } from './locale';\nimport { AutocompleteLocaleHelper } from './locale';\nimport { getAutocompleteTheme } from './getAutocompleteTheme';\n\nfunction match(pattern: string, items: string[]) {\n if (!pattern || !items) {\n return Promise.resolve([]);\n }\n\n const lowerCasedPattern = pattern.toLowerCase();\n const itemsMatchingPattern = items.filter((item) => {\n return item.toLowerCase().includes(lowerCasedPattern);\n });\n\n return Promise.resolve(itemsMatchingPattern);\n}\n\nfunction renderItem(item: any) {\n return item;\n}\n\nexport interface AutocompleteProps\n extends CommonProps,\n Pick<AriaAttributes, 'aria-label'>,\n Override<\n InputProps,\n {\n /** Задает функцию, которая отрисовывает элементы меню. */\n renderItem?: (item: string) => React.ReactNode;\n\n /** Задает промис, который резолвит элементы меню. */\n source?: string[] | ((patter: string) => Promise<string[]>);\n\n /** Отключает использование портала. */\n disablePortal?: boolean;\n\n /** Определяет, нужно ли показывать тень у выпадающего меню. */\n hasShadow?: boolean;\n\n /** Задает выравнивание выпадающего меню. */\n menuAlign?: 'left' | 'right';\n\n /** Задает максимальную высоту выпадающего меню. */\n menuMaxHeight?: number | string;\n\n /** Задает ширину выпадающего меню. */\n menuWidth?: number | string;\n\n /** Отключает скролл окна, когда меню открыто. */\n preventWindowScroll?: boolean;\n\n /** Задает функцию, которая вызывается при изменении value. */\n onValueChange: (value: string) => void;\n\n /** Задает функцию, которая вызывается при потере автокомплитом фокуса. */\n onBlur?: () => void;\n\n /** Задаёт размер инпута. */\n size?: SizeProp;\n\n /** Задает значение автокомплита. */\n value: string;\n\n /** Задает текст заголовка выпадающего меню в мобильной версии. */\n mobileMenuHeaderText?: string;\n }\n > {\n /**\n * Позволяет вручную задать текущую позицию выпадающего окна\n */\n menuPos?: 'top' | 'bottom';\n}\n\nexport interface AutocompleteState {\n items: Nullable<string[]>;\n selected: number;\n focused: boolean;\n isMobileOpened: boolean;\n}\n\nexport const AutocompleteDataTids = {\n root: 'Autocomplete__root',\n menu: 'Autocomplete__menu',\n} as const;\n\nexport const AutocompleteIds = {\n menu: AutocompleteDataTids.menu,\n} as const;\n\ntype DefaultProps = Required<\n Pick<\n AutocompleteProps,\n 'renderItem' | 'size' | 'disablePortal' | 'hasShadow' | 'menuMaxHeight' | 'preventWindowScroll'\n >\n>;\n\n/**\n * `Autocomplete` — стандартный инпут с подсказками.\n *\n * Подсказки определяются в пропе `source`.\n * Все свойства передаются во внутренний `Input`.\n */\n@responsiveLayout\n@rootNode\n@locale('Autocomplete', AutocompleteLocaleHelper)\nexport class Autocomplete extends React.Component<AutocompleteProps, AutocompleteState> {\n public static __KONTUR_REACT_UI__ = 'Autocomplete';\n public static displayName = 'Autocomplete';\n\n public static propTypes = {\n /**\n * Функция для отрисовки элемента в выпадающем списке. Единственный аргумент\n * — *item*.\n */\n renderItem: PropTypes.func,\n\n /**\n * Если передан массив, то совпадения ищутся по этому массиву.\n *\n * Если передается функция, то она должна возвращать thenable, который\n * резолвится уже отфильтрованным массивом. Возвращенный thenable может\n * иметь метод cancel, который будет вызван при отмене поиска (пользователь\n * изменил строку поиска, автокомплит потерял фокус).\n * ```\n * function(pattern) {\n * return service.findAll(pattern);\n * }\n * ```\n */\n source: PropTypes.oneOfType([PropTypes.array, PropTypes.func]),\n };\n\n public static defaultProps: DefaultProps = {\n renderItem,\n size: 'small',\n disablePortal: false,\n hasShadow: true,\n menuMaxHeight: 300,\n preventWindowScroll: true,\n };\n\n public state: AutocompleteState = {\n items: null,\n selected: -1,\n focused: false,\n isMobileOpened: false,\n };\n\n private theme!: Theme;\n private readonly locale!: AutocompleteLocale;\n private isMobileLayout!: boolean;\n private opened = false;\n private input: Nullable<Input> = null;\n private menu: Nullable<Menu>;\n private menuId = AutocompleteIds.menu + getRandomID();\n private rootSpan: Nullable<HTMLSpanElement>;\n private mobilePopup: Nullable<MobilePopup>;\n\n private requestId = 0;\n\n private getProps = createPropsGetter(Autocomplete.defaultProps);\n private setRootNode!: TSetRootNode;\n\n /**\n * @public\n */\n public focus() {\n if (this.input) {\n this.input.focus();\n }\n }\n\n /**\n * @public\n */\n public blur() {\n this.handleBlur();\n }\n\n public componentDidUpdate(prevProps: AutocompleteProps) {\n if (prevProps.value !== this.props.value) {\n this.updateItems(this.props.value || '');\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = getAutocompleteTheme(theme);\n return (\n <ThemeContext.Provider value={this.theme}>\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.getProps()}>\n {this.renderMain}\n </CommonWrapper>\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n public renderMain = (props: CommonWrapperRestProps<AutocompleteProps>) => {\n const { focused } = this.state;\n\n const isMobile = this.isMobileLayout;\n\n const {\n onValueChange,\n onKeyDown,\n onFocus,\n onBlur,\n renderItem: _renderItem,\n disablePortal,\n hasShadow,\n menuAlign,\n menuMaxHeight,\n preventWindowScroll,\n source,\n menuPos,\n width = this.theme.inputWidth,\n mobileMenuHeaderText,\n 'aria-label': ariaLabel,\n ...rest\n } = props;\n\n const inputProps = {\n ...rest,\n width: '100%',\n autoComplete: 'off',\n onValueChange: this.handleValueChange,\n onKeyDown: this.handleKeyDown,\n onFocus: this.handleFocus,\n ref: this.refInput,\n };\n\n return (\n <RenderLayer onFocusOutside={this.handleBlur} onClickOutside={this.handleClickOutside} active={focused}>\n <span\n data-tid={AutocompleteDataTids.root}\n className={cx(styles.root(this.theme), {\n [styles.noPortal()]: disablePortal,\n })}\n style={{ width }}\n ref={this.refRootSpan}\n >\n <Input aria-label={ariaLabel} aria-controls={this.menuId} {...inputProps} />\n {isMobile ? this.renderMobileMenu() : this.renderMenu()}\n </span>\n </RenderLayer>\n );\n };\n\n private renderHints(): React.ReactNode {\n const items = this.state.items;\n\n if (!this.props.value) {\n return <MenuMessage>{this.locale.enterValue}</MenuMessage>;\n }\n\n if (items?.length === 0 && this.props.value) {\n return <MenuMessage>{this.locale.notFound}</MenuMessage>;\n }\n\n if (isNullable(items) && this.props.value) {\n return <MenuMessage>{this.locale.updateValue}</MenuMessage>;\n }\n\n return null;\n }\n\n private renderMenu(): React.ReactNode {\n const items = this.state.items;\n const { menuPos, menuAlign, menuMaxHeight, hasShadow, menuWidth, width, preventWindowScroll, disablePortal } =\n this.getProps();\n const menuProps = {\n ref: this.refMenu,\n maxHeight: menuMaxHeight,\n hasShadow: false,\n hasMargin: false,\n width: menuWidth || (width && getDOMRect(this.rootSpan).width),\n preventWindowScroll,\n };\n if (!items || items.length === 0) {\n return null;\n }\n\n return (\n <Popup\n opened\n hasShadow={hasShadow}\n id={this.menuId}\n priority={ZIndex.priorities.PopupMenu}\n data-tid={AutocompleteDataTids.menu}\n anchorElement={this.getAnchor()}\n disablePortal={disablePortal}\n width={menuWidth}\n minWidth={menuWidth === undefined ? '100%' : undefined}\n positions={getMenuPositions(menuPos, menuAlign)}\n margin={parseInt(this.theme.menuOffsetY) - 1}\n >\n <Menu {...menuProps}>{this.getItems()}</Menu>\n </Popup>\n );\n }\n\n private renderMobileMenu = () => {\n const inputProps: InputProps = {\n autoComplete: 'off',\n autoFocus: true,\n width: '100%',\n onValueChange: this.handleValueChange,\n onKeyPress: this.handleKeyPressMobile,\n value: this.props.value,\n placeholder: this.locale.enterValue,\n };\n\n const items = this.state.items;\n\n return (\n <MobilePopup\n id={this.menuId}\n headerChildComponent={<Input {...inputProps} />}\n caption={this.props.mobileMenuHeaderText}\n opened={this.state.isMobileOpened}\n onCloseRequest={this.handleCloseMobile}\n ref={this.refMobilePopup}\n >\n <Menu ref={this.refMenu} onItemClick={this.mobilePopup?.close} disableScrollContainer maxHeight={'auto'}>\n {items && items.length > 0 && this.getItems()}\n {this.renderHints()}\n </Menu>\n </MobilePopup>\n );\n };\n\n private getItems = () => {\n const items = this.state.items;\n const isMobile = this.isMobileLayout;\n\n return items\n ? items.map((item, i) => {\n return (\n <MenuItem onClick={this.handleMenuItemClick(i)} key={i} isMobile={isMobile} size={this.props.size}>\n {this.getProps().renderItem(item)}\n </MenuItem>\n );\n })\n : null;\n };\n\n private handleValueChange = (value: string) => {\n this.opened = true;\n\n this.fireChange(value);\n };\n\n private handleCloseMobile = () => {\n this.setState({\n isMobileOpened: false,\n });\n\n this.handleBlur();\n };\n\n private handleKeyPressMobile = (e: KeyboardEvent) => {\n if (e.key === 'Enter') {\n this.mobilePopup?.close();\n }\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n if (this.isMobileLayout) {\n this.setState({ isMobileOpened: true });\n }\n\n if (this.state.focused) {\n return;\n }\n\n this.setState({ focused: true });\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleBlur = () => {\n if (!this.state.focused) {\n return;\n }\n\n this.opened = false;\n this.setState({ items: null, focused: false });\n\n if (this.input) {\n this.input.blur();\n }\n\n if (this.props.onBlur) {\n this.props.onBlur();\n }\n };\n\n private handleClickOutside = (e: Event) => {\n fixClickFocusIE(e);\n this.handleBlur();\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n switch (true) {\n case isKeyEscape(e):\n e.preventDefault();\n this.setState({ items: null });\n return;\n case isKeyArrowUp(e):\n e.preventDefault();\n if (this.menu) {\n this.menu.up();\n }\n return;\n case isKeyArrowDown(e):\n e.preventDefault();\n if (this.menu) {\n this.menu.down();\n }\n return;\n case isKeyEnter(e):\n e.preventDefault(); // To prevent form submission.\n if (this.menu) {\n this.menu.enter(e);\n }\n return;\n }\n };\n\n private handleMenuItemClick(i: number) {\n return (event: React.SyntheticEvent<HTMLElement>) => this.handleItemClick(event, i);\n }\n\n private getAnchor = () => {\n return getRootNode(this);\n };\n\n private handleItemClick(event: React.SyntheticEvent<HTMLElement> | React.MouseEvent<HTMLElement>, index: number) {\n if ((event as React.MouseEvent<HTMLElement>).button) {\n return;\n }\n\n event.preventDefault();\n this.choose(index);\n }\n\n private choose(index: number) {\n if (!this.state.items) {\n return;\n }\n\n const value = this.state.items[index];\n this.opened = false;\n this.setState({\n selected: -1,\n items: null,\n });\n\n this.fireChange(value);\n this.blur();\n }\n\n private updateItems(value: string) {\n if (!this.opened) {\n return;\n }\n const pattern = value.trim();\n const source = this.props.source;\n\n if (!source) {\n return;\n }\n\n let promise;\n this.requestId += 1;\n const expectingId = this.requestId;\n if (typeof source === 'function') {\n promise = source(pattern);\n } else {\n promise = match(pattern, source);\n }\n promise.then((items) => {\n if (this.opened && expectingId === this.requestId) {\n this.setState({\n items,\n selected: -1,\n });\n }\n });\n }\n\n private fireChange(value: string) {\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n }\n\n private refInput = (el: Input | null) => {\n this.input = el;\n };\n\n private refMenu = (menu: Menu | null) => {\n this.menu = menu;\n };\n\n private refRootSpan = (span: HTMLSpanElement) => {\n this.rootSpan = span;\n };\n\n private refMobilePopup = (mobilePopup: MobilePopup | null) => {\n this.mobilePopup = mobilePopup;\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_globalObject","_MenuMessage","_decorators","_utils","_ThemeContext","_Emotion","_identifiers","_Input","_Menu","_MenuItem","_RenderLayer","_createPropsGetter","_fixClickFocusIE","_CommonWrapper","_MobilePopup","_decorator","_rootNode","_getDOMRect","_Popup","_getMenuPositions","_ZIndex","_MaskedInput","_ReactUIFeatureFlagsContext","_FeatureFlagsHelpers","_Autocomplete2","_locale","_getAutocompleteTheme","_excluded","_dec","_class","_Autocomplete","match","pattern","items","Promise","resolve","lowerCasedPattern","toLowerCase","itemsMatchingPattern","filter","item","includes","renderItem","AutocompleteDataTids","exports","root","menu","AutocompleteIds","Autocomplete","locale","AutocompleteLocaleHelper","responsiveLayout","rootNode","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","state","selected","focused","isMobileOpened","opened","input","menuId","getRandomID","requestId","getProps","createPropsGetter","defaultProps","renderMain","props","_cx","isMobile","isMobileLayout","onValueChange","onKeyDown","onFocus","onBlur","_renderItem","disablePortal","hasShadow","menuAlign","menuMaxHeight","preventWindowScroll","source","menuPos","_props$width","width","theme","inputWidth","mobileMenuHeaderText","type","rest","_objectWithoutPropertiesLoose2","default","inputProps","_extends2","autoComplete","handleValueChange","handleKeyDown","handleFocus","ref","refInput","createElement","RenderLayer","onFocusOutside","handleBlur","onClickOutside","handleClickOutside","active","className","cx","styles","noPortal","style","refRootSpan","getInput","renderMobileMenu","renderMenu","featureFlags","autocompleteUseMaskedInput","mask","MaskedInput","getSafeMaskInputType","maskChar","Input","_this$mobilePopup","autoFocus","onKeyPress","handleKeyPressMobile","value","placeholder","enterValue","inputMode","MobilePopup","id","headerChildComponent","caption","onCloseRequest","handleCloseMobile","refMobilePopup","Menu","refMenu","onItemClick","mobilePopup","close","disableScrollContainer","maxHeight","getItems","renderHints","map","i","MenuItem","onClick","handleMenuItemClick","key","size","fireChange","setState","e","_this$mobilePopup2","event","blur","fixClickFocusIE","isKeyEscape","preventDefault","isKeyArrowUp","up","isKeyArrowDown","down","isKeyEnter","enter","getAnchor","getRootNode","el","span","rootSpan","_inheritsLoose2","_proto","prototype","focus","componentDidUpdate","prevProps","updateItems","render","_this2","ReactUIFeatureFlagsContext","Consumer","flags","getFullReactUIFlagsContext","ThemeContext","getAutocompleteTheme","Provider","CommonWrapper","rootNodeRef","setRootNode","MenuMessage","notFound","isNullable","updateValue","_this$getProps","menuWidth","calculatedMenuWidth","getDOMRect","menuProps","hasMargin","Popup","priority","ZIndex","priorities","PopupMenu","anchorElement","minWidth","undefined","positions","getMenuPositions","margin","parseInt","menuOffsetY","_this3","handleItemClick","index","button","choose","_this4","globalObject","setTimeout","_this5","trim","promise","expectingId","then","React","Component","__KONTUR_REACT_UI__","displayName"],"sources":["Autocomplete.tsx"],"sourcesContent":["import type { AriaAttributes, KeyboardEvent } from 'react';\nimport React from 'react';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { MenuMessage } from '../../internal/MenuMessage';\nimport { locale } from '../../lib/locale/decorators';\nimport { getRandomID, isNullable } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport { cx } from '../../lib/theming/Emotion';\nimport { isKeyArrowDown, isKeyArrowUp, isKeyEnter, isKeyEscape } from '../../lib/events/keyboard/identifiers';\nimport type { InputProps } from '../Input';\nimport { Input } from '../Input';\nimport { Menu } from '../../internal/Menu';\nimport { MenuItem } from '../MenuItem';\nimport { RenderLayer } from '../../internal/RenderLayer';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport type { Nullable, Override } from '../../typings/utility-types';\nimport { fixClickFocusIE } from '../../lib/events/fixClickFocusIE';\nimport type { CommonProps, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { MobilePopup } from '../../internal/MobilePopup';\nimport { responsiveLayout } from '../ResponsiveLayout/decorator';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getRootNode, rootNode } from '../../lib/rootNode';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport type { SizeProp } from '../../lib/types/props';\nimport { Popup } from '../../internal/Popup';\nimport { getMenuPositions } from '../../lib/getMenuPositions';\nimport { ZIndex } from '../../internal/ZIndex';\nimport { getSafeMaskInputType, MaskedInput, type MaskedProps } from '../MaskedInput';\nimport type { ReactUIFeatureFlags } from '../../lib/featureFlagsContext/ReactUIFeatureFlagsContext';\nimport { ReactUIFeatureFlagsContext } from '../../lib/featureFlagsContext/ReactUIFeatureFlagsContext';\nimport { getFullReactUIFlagsContext } from '../../lib/featureFlagsContext/FeatureFlagsHelpers';\n\nimport { styles } from './Autocomplete.styles';\nimport type { AutocompleteLocale } from './locale';\nimport { AutocompleteLocaleHelper } from './locale';\nimport { getAutocompleteTheme } from './getAutocompleteTheme';\n\nfunction match(pattern: string, items: string[]) {\n if (!pattern || !items) {\n return Promise.resolve([]);\n }\n\n const lowerCasedPattern = pattern.toLowerCase();\n const itemsMatchingPattern = items.filter((item) => {\n return item.toLowerCase().includes(lowerCasedPattern);\n });\n\n return Promise.resolve(itemsMatchingPattern);\n}\n\nfunction renderItem(item: any) {\n return item;\n}\n\nexport interface AutocompleteProps\n extends CommonProps,\n Pick<AriaAttributes, 'aria-label'>,\n Pick<Partial<MaskedProps>, 'alwaysShowMask' | 'mask' | 'maskChar'>,\n Override<\n Omit<InputProps, 'alwaysShowMask' | 'mask' | 'maskChar'>,\n {\n /** Задает функцию, которая отрисовывает элементы меню. */\n renderItem?: (item: string) => React.ReactNode;\n\n /** Задает промис, который резолвит элементы меню. */\n source?: string[] | ((patter: string) => Promise<string[]>);\n\n /** Отключает использование портала. */\n disablePortal?: boolean;\n\n /** Определяет, нужно ли показывать тень у выпадающего меню. */\n hasShadow?: boolean;\n\n /** Задает выравнивание выпадающего меню. */\n menuAlign?: 'left' | 'right';\n\n /** Задает максимальную высоту выпадающего меню. */\n menuMaxHeight?: number | string;\n\n /** Задает ширину выпадающего меню. */\n menuWidth?: number | string;\n\n /** Отключает скролл окна, когда меню открыто. */\n preventWindowScroll?: boolean;\n\n /** Задает функцию, которая вызывается при изменении value. */\n onValueChange: (value: string) => void;\n\n /** Задает функцию, которая вызывается при потере автокомплитом фокуса. */\n onBlur?: () => void;\n\n /** Задаёт размер инпута. */\n size?: SizeProp;\n\n /** Задает значение автокомплита. */\n value: string;\n\n /** Задает текст заголовка выпадающего меню в мобильной версии. */\n mobileMenuHeaderText?: string;\n }\n > {\n /**\n * Позволяет вручную задать текущую позицию выпадающего окна\n */\n menuPos?: 'top' | 'bottom';\n}\n\nexport interface AutocompleteState {\n items: Nullable<string[]>;\n selected: number;\n focused: boolean;\n isMobileOpened: boolean;\n}\n\nexport const AutocompleteDataTids = {\n root: 'Autocomplete__root',\n menu: 'Autocomplete__menu',\n} as const;\n\nexport const AutocompleteIds = {\n menu: AutocompleteDataTids.menu,\n} as const;\n\ntype DefaultProps = Required<\n Pick<\n AutocompleteProps,\n 'renderItem' | 'size' | 'disablePortal' | 'hasShadow' | 'menuMaxHeight' | 'preventWindowScroll'\n >\n>;\n\n/**\n * `Autocomplete` — стандартный инпут с подсказками.\n *\n * Подсказки определяются в пропе `source`.\n * Все свойства передаются во внутренний `Input`.\n */\n@responsiveLayout\n@rootNode\n@locale('Autocomplete', AutocompleteLocaleHelper)\nexport class Autocomplete extends React.Component<AutocompleteProps, AutocompleteState> {\n public static __KONTUR_REACT_UI__ = 'Autocomplete';\n public static displayName = 'Autocomplete';\n\n public static defaultProps: DefaultProps = {\n renderItem,\n size: 'small',\n disablePortal: false,\n hasShadow: true,\n menuMaxHeight: 300,\n preventWindowScroll: true,\n };\n\n public state: AutocompleteState = {\n items: null,\n selected: -1,\n focused: false,\n isMobileOpened: false,\n };\n\n private theme!: Theme;\n private readonly locale!: AutocompleteLocale;\n private isMobileLayout!: boolean;\n private opened = false;\n private input: Nullable<Input> = null;\n private menu: Nullable<Menu>;\n private menuId = AutocompleteIds.menu + getRandomID();\n private rootSpan: Nullable<HTMLSpanElement>;\n private mobilePopup: Nullable<MobilePopup>;\n private featureFlags!: ReactUIFeatureFlags;\n\n private requestId = 0;\n\n private getProps = createPropsGetter(Autocomplete.defaultProps);\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n /**\n * @public\n */\n public focus() {\n if (this.input) {\n this.input.focus();\n }\n }\n\n /**\n * @public\n */\n public blur() {\n this.handleBlur();\n }\n\n public componentDidUpdate(prevProps: AutocompleteProps) {\n if (prevProps.value !== this.props.value) {\n this.updateItems(this.props.value || '');\n }\n }\n\n public render() {\n return (\n <ReactUIFeatureFlagsContext.Consumer>\n {(flags) => {\n this.featureFlags = getFullReactUIFlagsContext(flags);\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = getAutocompleteTheme(theme);\n return (\n <ThemeContext.Provider value={this.theme}>\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.getProps()}>\n {this.renderMain}\n </CommonWrapper>\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }}\n </ReactUIFeatureFlagsContext.Consumer>\n );\n }\n public renderMain = (props: CommonWrapperRestProps<AutocompleteProps>) => {\n const { focused } = this.state;\n\n const isMobile = this.isMobileLayout;\n\n const {\n onValueChange,\n onKeyDown,\n onFocus,\n onBlur,\n renderItem: _renderItem,\n disablePortal,\n hasShadow,\n menuAlign,\n menuMaxHeight,\n preventWindowScroll,\n source,\n menuPos,\n width = this.theme.inputWidth,\n mobileMenuHeaderText,\n type,\n ...rest\n } = props;\n\n const inputProps = {\n ...rest,\n width: '100%',\n autoComplete: 'off',\n 'aria-controls': this.menuId,\n onValueChange: this.handleValueChange,\n onKeyDown: this.handleKeyDown,\n onFocus: this.handleFocus,\n ref: this.refInput,\n };\n\n return (\n <RenderLayer onFocusOutside={this.handleBlur} onClickOutside={this.handleClickOutside} active={focused}>\n <span\n data-tid={AutocompleteDataTids.root}\n className={cx(styles.root(this.theme), {\n [styles.noPortal()]: disablePortal,\n })}\n style={{ width }}\n ref={this.refRootSpan}\n >\n {this.getInput(inputProps)}\n\n {isMobile ? this.renderMobileMenu() : this.renderMenu()}\n </span>\n </RenderLayer>\n );\n };\n\n private renderHints(): React.ReactNode {\n const items = this.state.items;\n\n if (!this.props.value) {\n return <MenuMessage>{this.locale.enterValue}</MenuMessage>;\n }\n\n if (items?.length === 0 && this.props.value) {\n return <MenuMessage>{this.locale.notFound}</MenuMessage>;\n }\n\n if (isNullable(items) && this.props.value) {\n return <MenuMessage>{this.locale.updateValue}</MenuMessage>;\n }\n\n return null;\n }\n\n private renderMenu(): React.ReactNode {\n const items = this.state.items;\n const { menuPos, menuAlign, menuMaxHeight, hasShadow, menuWidth, width, preventWindowScroll, disablePortal } =\n this.getProps();\n const calculatedMenuWidth = menuWidth ? '100%' : width && getDOMRect(this.rootSpan).width;\n const menuProps = {\n ref: this.refMenu,\n maxHeight: menuMaxHeight,\n hasShadow: false,\n hasMargin: false,\n width: calculatedMenuWidth,\n preventWindowScroll,\n };\n if (!items || items.length === 0) {\n return null;\n }\n\n return (\n <Popup\n opened\n hasShadow={hasShadow}\n id={this.menuId}\n priority={ZIndex.priorities.PopupMenu}\n data-tid={AutocompleteDataTids.menu}\n anchorElement={this.getAnchor()}\n disablePortal={disablePortal}\n width={menuWidth}\n minWidth={menuWidth === undefined ? '100%' : undefined}\n positions={getMenuPositions(menuPos, menuAlign)}\n margin={parseInt(this.theme.menuOffsetY) - 1}\n >\n <Menu {...menuProps}>{this.getItems()}</Menu>\n </Popup>\n );\n }\n\n private getInput = (inputProps: InputProps) => {\n return this.featureFlags.autocompleteUseMaskedInput && this.props.mask ? (\n <MaskedInput\n {...inputProps}\n type={getSafeMaskInputType(this.props.type)}\n mask={this.props.mask}\n maskChar={this.props.maskChar}\n />\n ) : (\n <Input {...inputProps} mask={this.props.mask} maskChar={this.props.maskChar} />\n );\n };\n\n private renderMobileMenu = () => {\n const inputProps: InputProps = {\n autoComplete: 'off',\n autoFocus: true,\n width: '100%',\n onValueChange: this.handleValueChange,\n onKeyPress: this.handleKeyPressMobile,\n value: this.props.value,\n placeholder: this.locale.enterValue,\n type: this.props.type,\n inputMode: this.props.inputMode,\n 'aria-label': this.props['aria-label'],\n 'aria-controls': this.menuId,\n };\n\n const items = this.state.items;\n\n return (\n <MobilePopup\n id={this.menuId}\n headerChildComponent={this.getInput(inputProps)}\n caption={this.props.mobileMenuHeaderText}\n opened={this.state.isMobileOpened}\n onCloseRequest={this.handleCloseMobile}\n ref={this.refMobilePopup}\n >\n <Menu ref={this.refMenu} onItemClick={this.mobilePopup?.close} disableScrollContainer maxHeight={'auto'}>\n {items && items.length > 0 && this.getItems()}\n {this.renderHints()}\n </Menu>\n </MobilePopup>\n );\n };\n\n private getItems = () => {\n const items = this.state.items;\n const isMobile = this.isMobileLayout;\n\n return items\n ? items.map((item, i) => {\n return (\n <MenuItem onClick={this.handleMenuItemClick(i)} key={i} isMobile={isMobile} size={this.props.size}>\n {this.getProps().renderItem(item)}\n </MenuItem>\n );\n })\n : null;\n };\n\n private handleValueChange = (value: string) => {\n this.opened = true;\n\n this.fireChange(value);\n };\n\n private handleCloseMobile = () => {\n this.setState({\n isMobileOpened: false,\n });\n\n this.handleBlur();\n };\n\n private handleKeyPressMobile = (e: KeyboardEvent) => {\n if (e.key === 'Enter') {\n this.mobilePopup?.close();\n }\n };\n\n private handleFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n if (this.isMobileLayout) {\n this.setState({ isMobileOpened: true });\n }\n\n if (this.state.focused) {\n return;\n }\n\n this.setState({ focused: true });\n\n if (this.props.onFocus) {\n this.props.onFocus(event);\n }\n };\n\n private handleBlur = () => {\n if (!this.state.focused) {\n return;\n }\n\n this.opened = false;\n this.setState({ items: null, focused: false });\n\n if (this.input) {\n this.input.blur();\n }\n\n if (this.props.onBlur) {\n this.props.onBlur();\n }\n };\n\n private handleClickOutside = (e: Event) => {\n fixClickFocusIE(e);\n this.handleBlur();\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n switch (true) {\n case isKeyEscape(e):\n e.preventDefault();\n this.setState({ items: null });\n return;\n case isKeyArrowUp(e):\n e.preventDefault();\n if (this.menu) {\n this.menu.up();\n }\n return;\n case isKeyArrowDown(e):\n e.preventDefault();\n if (this.menu) {\n this.menu.down();\n }\n return;\n case isKeyEnter(e):\n e.preventDefault(); // To prevent form submission.\n if (this.menu) {\n this.menu.enter(e);\n }\n return;\n }\n };\n\n private handleMenuItemClick(i: number) {\n return (event: React.SyntheticEvent<HTMLElement>) => this.handleItemClick(event, i);\n }\n\n private getAnchor = () => {\n return getRootNode(this);\n };\n\n private handleItemClick(event: React.SyntheticEvent<HTMLElement> | React.MouseEvent<HTMLElement>, index: number) {\n if ((event as React.MouseEvent<HTMLElement>).button) {\n return;\n }\n\n event.preventDefault();\n this.choose(index);\n }\n\n private choose(index: number) {\n if (!this.state.items) {\n return;\n }\n\n const value = this.state.items[index];\n this.opened = false;\n this.setState({\n selected: -1,\n items: null,\n });\n\n this.fireChange(value);\n\n // NOTE: этот таймаут - костыль. Проблема в старом ReactInputMask, он сеттит пустой value при потере фокуса.\n // Можно будет убрать после полного перехода на MaskedInput\n globalObject.setTimeout(() => {\n this.blur();\n }, 0);\n }\n\n private updateItems(value: string) {\n if (!this.opened) {\n return;\n }\n const pattern = value.trim();\n const source = this.props.source;\n\n if (!source) {\n return;\n }\n\n let promise;\n this.requestId += 1;\n const expectingId = this.requestId;\n if (typeof source === 'function') {\n promise = source(pattern);\n } else {\n promise = match(pattern, source);\n }\n promise.then((items) => {\n if (this.opened && expectingId === this.requestId) {\n this.setState({\n items,\n selected: -1,\n });\n }\n });\n }\n\n private fireChange(value: string) {\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n }\n\n private refInput = (el: Input | null) => {\n this.input = el;\n };\n\n private refMenu = (menu: Menu | null) => {\n this.menu = menu;\n };\n\n private refRootSpan = (span: HTMLSpanElement) => {\n this.rootSpan = span;\n };\n\n private refMobilePopup = (mobilePopup: MobilePopup | null) => {\n this.mobilePopup = mobilePopup;\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -2,6 +2,7 @@ import React from 'react';
2
2
  import type { ButtonLinkAllowedValues } from '../../lib/types/button-link';
3
3
  import type { ThemeIn } from '../../lib/theming/Theme';
4
4
  import type { CommonProps } from '../../internal/CommonWrapper';
5
+ import type { TGetRootNode } from '../../lib/rootNode';
5
6
  import type { SizeProp } from '../../lib/types/props';
6
7
  import type { PolymorphicPropsWithoutRef } from '../../lib/types/polymorphic-component';
7
8
  export type ButtonType = 'button' | 'submit' | 'reset';
@@ -83,6 +84,7 @@ export declare class Button<C extends ButtonLinkAllowedValues = typeof BUTTON_DE
83
84
  };
84
85
  private theme;
85
86
  private node;
87
+ getRootNode: TGetRootNode;
86
88
  private setRootNode;
87
89
  componentDidMount(): void;
88
90
  static getDerivedStateFromProps(props: ButtonProps): {
@@ -7,6 +7,7 @@ var _utils = require("../../lib/utils");
7
7
  var _client = require("../../lib/client");
8
8
  var _keyListener = require("../../lib/events/keyListener");
9
9
 
10
+ var _ThemeHelpers = require("../../lib/theming/ThemeHelpers");
10
11
  var _ThemeContext = require("../../lib/theming/ThemeContext");
11
12
 
12
13
  var _CommonWrapper = require("../../internal/CommonWrapper");
@@ -216,6 +217,7 @@ Button = exports.Button = (0, _rootNode.rootNode)(_class = (_Button = /*#__PURE_
216
217
 
217
218
 
218
219
 
220
+
219
221
 
220
222
 
221
223
  renderMain = function (props) {var _cx, _cx4, _cx5;
@@ -435,6 +437,32 @@ Button = exports.Button = (0, _rootNode.rootNode)(_class = (_Button = /*#__PURE_
435
437
 
436
438
 
437
439
 
440
+
441
+
442
+
443
+
444
+
445
+
446
+
447
+
448
+
449
+
450
+
451
+
452
+
453
+
454
+
455
+
456
+
457
+
458
+
459
+
460
+
461
+
462
+
463
+
464
+
465
+
438
466
 
439
467
 
440
468
 
@@ -486,7 +514,7 @@ Button = exports.Button = (0, _rootNode.rootNode)(_class = (_Button = /*#__PURE_
486
514
  * @public
487
515
  */;_proto.focus = function focus() {var _this$node;(_this$node = this.node) == null || _this$node.focus();} /**
488
516
  * @public
489
- */;_proto.blur = function blur() {var _this$node2;(_this$node2 = this.node) == null || _this$node2.blur();};_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = _this2.props.theme ? _ThemeFactory.ThemeFactory.create(_this2.props.theme, theme) : theme;return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: _this2.setRootNode }, _this2.props), _this2.renderMain);});};_proto.getTabIndex = function getTabIndex(_ref2) {var disableFocus = _ref2.disableFocus,disabled = _ref2.disabled,_ref2$tabIndex = _ref2.tabIndex,tabIndex = _ref2$tabIndex === void 0 ? 0 : _ref2$tabIndex;if (disableFocus || disabled) {return -1;}return tabIndex;};_proto.renderIcon2022 = function renderIcon2022(icon) {if (icon && (0, _utils.isKonturIcon)(icon)) {var _icon$props$size;var sizes = (0, _ButtonIcon.getButtonIconSizes)(this.theme);return /*#__PURE__*/_react.default.cloneElement(icon, { size: (_icon$props$size = icon.props.size) != null ? _icon$props$size : sizes[this.getProps().size] });}return icon;};_proto.getSizeClassName = function getSizeClassName() {var _cx6, _cx7, _cx8;switch (this.getProps().size) {case 'large':return (0, _Emotion.cx)(_Button2.styles.sizeLarge(this.theme), (_cx6 = {}, _cx6[_Button2.styles.sizeLargeIE11(this.theme)] = _client.isIE11 || _client.isEdge, _cx6[_Button2.styles.sizeLargeWithIcon(this.theme)] = !!this.props.icon, _cx6[_Button2.styles.sizeLargeWithIconWithoutText(this.theme)] = !!this.props.icon && !this.props.children, _cx6));case 'medium':return (0, _Emotion.cx)(_Button2.styles.sizeMedium(this.theme), (_cx7 = {}, _cx7[_Button2.styles.sizeMediumIE11(this.theme)] = _client.isIE11 || _client.isEdge, _cx7[_Button2.styles.sizeMediumWithIcon(this.theme)] = !!this.props.icon, _cx7[_Button2.styles.sizeMediumWithIconWithoutText(this.theme)] = !!this.props.icon && !this.props.children, _cx7));case 'small':default:return (0, _Emotion.cx)(_Button2.styles.sizeSmall(this.theme), (_cx8 = {}, _cx8[_Button2.styles.sizeSmallIE11(this.theme)] = _client.isIE11 || _client.isEdge, _cx8[_Button2.styles.sizeSmallWithIcon(this.theme)] = !!this.props.icon, _cx8[_Button2.styles.sizeSmallWithIconWithoutText(this.theme)] = !!this.props.icon && !this.props.children, _cx8));}};_proto.getSizeWrapClassName = function getSizeWrapClassName() {switch (this.getProps().size) {case 'large':return _Button2.styles.wrapLarge(this.theme);case 'medium':return _Button2.styles.wrapMedium(this.theme);case 'small':default:return _Button2.styles.wrapSmall(this.theme);}};return Button;}(_react.default.Component), _Button.__KONTUR_REACT_UI__ = 'Button', _Button.displayName = 'Button', _Button.__BUTTON__ = true, _Button.defaultProps = { use: 'default', size: 'small', // By default the type attribute is 'submit'. IE8 will fire a click event
517
+ */;_proto.blur = function blur() {var _this$node2;(_this$node2 = this.node) == null || _this$node2.blur();};_proto.render = function render() {var _this2 = this;return /*#__PURE__*/_react.default.createElement(_ThemeContext.ThemeContext.Consumer, null, function (theme) {_this2.theme = _this2.props.theme ? _ThemeFactory.ThemeFactory.create(_this2.props.theme, theme) : theme;return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, (0, _extends2.default)({ rootNodeRef: _this2.setRootNode }, _this2.props), _this2.renderMain);});};_proto.getTabIndex = function getTabIndex(_ref2) {var disableFocus = _ref2.disableFocus,disabled = _ref2.disabled,_ref2$tabIndex = _ref2.tabIndex,tabIndex = _ref2$tabIndex === void 0 ? 0 : _ref2$tabIndex;if (disableFocus || disabled) {return -1;}return tabIndex;};_proto.renderIcon2022 = function renderIcon2022(icon) {if (icon && (0, _utils.isKonturIcon)(icon)) {var _icon$props$size;var sizes = (0, _ButtonIcon.getButtonIconSizes)(this.theme);return /*#__PURE__*/_react.default.cloneElement(icon, { size: (_icon$props$size = icon.props.size) != null ? _icon$props$size : sizes[this.getProps().size] });}return icon;};_proto.getSizeClassName = function getSizeClassName() {var _this$getProps2 = this.getProps(),icon = _this$getProps2.icon,rightIcon = _this$getProps2.rightIcon,children = _this$getProps2.children,size = _this$getProps2.size;var isThemeGTE_5_3 = (0, _ThemeHelpers.isThemeGTE)(this.theme, '5.3');switch (size) {case 'large':{var _commonClasses, _themeSpecificClasses;var commonClasses = (_commonClasses = {}, _commonClasses[_Button2.styles.sizeLargeIE11(this.theme)] = _client.isIE11 || _client.isEdge, _commonClasses[_Button2.styles.sizeLargeWithIcon(this.theme)] = !!icon, _commonClasses[_Button2.styles.sizeLargeWithIconWithoutText(this.theme)] = !!icon && !children, _commonClasses);var themeSpecificClasses = (_themeSpecificClasses = {}, _themeSpecificClasses[_Button2.styles.sizeLargeWithRightIcon(this.theme)] = !!rightIcon, _themeSpecificClasses[_Button2.styles.sizeLargeWithIconWithoutText5_3(this.theme)] = (!!icon || !!rightIcon) && !children, _themeSpecificClasses);return (0, _Emotion.cx)(_Button2.styles.sizeLarge(this.theme), commonClasses, isThemeGTE_5_3 && themeSpecificClasses);}case 'medium':{var _commonClasses3, _themeSpecificClasses3;var _commonClasses2 = (_commonClasses3 = {}, _commonClasses3[_Button2.styles.sizeMediumIE11(this.theme)] = _client.isIE11 || _client.isEdge, _commonClasses3[_Button2.styles.sizeMediumWithIcon(this.theme)] = !!icon, _commonClasses3[_Button2.styles.sizeMediumWithIconWithoutText(this.theme)] = !!icon && !children, _commonClasses3);var _themeSpecificClasses2 = (_themeSpecificClasses3 = {}, _themeSpecificClasses3[_Button2.styles.sizeMediumWithRightIcon(this.theme)] = !!rightIcon, _themeSpecificClasses3[_Button2.styles.sizeMediumWithIconWithoutText5_3(this.theme)] = (!!icon || !!rightIcon) && !children, _themeSpecificClasses3);return (0, _Emotion.cx)(_Button2.styles.sizeMedium(this.theme), _commonClasses2, isThemeGTE_5_3 && _themeSpecificClasses2);}case 'small':default:{var _commonClasses5, _themeSpecificClasses5;var _commonClasses4 = (_commonClasses5 = {}, _commonClasses5[_Button2.styles.sizeSmallIE11(this.theme)] = _client.isIE11 || _client.isEdge, _commonClasses5[_Button2.styles.sizeSmallWithIcon(this.theme)] = !!icon, _commonClasses5[_Button2.styles.sizeSmallWithIconWithoutText(this.theme)] = !!icon && !children, _commonClasses5);var _themeSpecificClasses4 = (_themeSpecificClasses5 = {}, _themeSpecificClasses5[_Button2.styles.sizeSmallWithRightIcon(this.theme)] = !!rightIcon, _themeSpecificClasses5[_Button2.styles.sizeSmallWithIconWithoutText5_3(this.theme)] = (!!icon || !!rightIcon) && !children, _themeSpecificClasses5);return (0, _Emotion.cx)(_Button2.styles.sizeSmall(this.theme), _commonClasses4, isThemeGTE_5_3 && _themeSpecificClasses4);}}};_proto.getSizeWrapClassName = function getSizeWrapClassName() {switch (this.getProps().size) {case 'large':return _Button2.styles.wrapLarge(this.theme);case 'medium':return _Button2.styles.wrapMedium(this.theme);case 'small':default:return _Button2.styles.wrapSmall(this.theme);}};return Button;}(_react.default.Component), _Button.__KONTUR_REACT_UI__ = 'Button', _Button.displayName = 'Button', _Button.__BUTTON__ = true, _Button.defaultProps = { use: 'default', size: 'small', // By default the type attribute is 'submit'. IE8 will fire a click event
490
518
  // on this button if somewhere on the page user presses Enter while some
491
519
  // input is focused. So we set type to 'button' by default.
492
520
  type: 'button', component: BUTTON_DEFAULT_COMPONENT }, _Button)) || _class;