@skbkontur/react-ui 0.0.0-95a1dbe516 → 0.0.0-9ab4f802f3

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 (647) hide show
  1. package/CHANGELOG.md +120 -0
  2. package/README.md +41 -13
  3. package/cjs/components/Autocomplete/Autocomplete.js +12 -6
  4. package/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
  5. package/cjs/components/Autocomplete/Autocomplete.md +76 -3
  6. package/cjs/components/Autocomplete/Autocomplete.styles.d.ts +1 -0
  7. package/cjs/components/Autocomplete/Autocomplete.styles.js +7 -1
  8. package/cjs/components/Autocomplete/Autocomplete.styles.js.map +1 -1
  9. package/cjs/components/Button/Button.js +2 -2
  10. package/cjs/components/Button/Button.js.map +1 -1
  11. package/cjs/components/Button/Button.md +38 -11
  12. package/cjs/components/Calendar/Calendar.d.ts +28 -5
  13. package/cjs/components/Calendar/Calendar.js +80 -36
  14. package/cjs/components/Calendar/Calendar.js.map +1 -1
  15. package/cjs/components/Calendar/Calendar.md +82 -1
  16. package/cjs/components/Calendar/Calendar.styles.js +1 -1
  17. package/cjs/components/Calendar/Calendar.styles.js.map +1 -1
  18. package/cjs/components/Calendar/CalendarContext.d.ts +12 -0
  19. package/cjs/components/Calendar/CalendarContext.js +16 -0
  20. package/cjs/components/Calendar/CalendarContext.js.map +1 -0
  21. package/cjs/components/Calendar/CalendarDateShape.d.ts +4 -2
  22. package/cjs/components/Calendar/CalendarDateShape.js +13 -3
  23. package/cjs/components/Calendar/CalendarDateShape.js.map +1 -1
  24. package/cjs/components/Calendar/CalendarDay.d.ts +12 -0
  25. package/cjs/components/Calendar/CalendarDay.js +79 -0
  26. package/cjs/components/Calendar/CalendarDay.js.map +1 -0
  27. package/cjs/components/Calendar/CalendarDay.md +70 -0
  28. package/cjs/components/Calendar/CalendarUtils.d.ts +2 -1
  29. package/cjs/components/Calendar/CalendarUtils.js +4 -6
  30. package/cjs/components/Calendar/CalendarUtils.js.map +1 -1
  31. package/cjs/components/Calendar/DayCellView.d.ts +4 -12
  32. package/cjs/components/Calendar/DayCellView.js +20 -42
  33. package/cjs/components/Calendar/DayCellView.js.map +1 -1
  34. package/cjs/components/Calendar/DayCellView.styles.d.ts +2 -5
  35. package/cjs/components/Calendar/DayCellView.styles.js +37 -43
  36. package/cjs/components/Calendar/DayCellView.styles.js.map +1 -1
  37. package/cjs/components/Calendar/Month.d.ts +0 -10
  38. package/cjs/components/Calendar/Month.js +36 -88
  39. package/cjs/components/Calendar/Month.js.map +1 -1
  40. package/cjs/components/Calendar/MonthView.d.ts +3 -2
  41. package/cjs/components/Calendar/MonthView.js +47 -37
  42. package/cjs/components/Calendar/MonthView.js.map +1 -1
  43. package/cjs/components/Calendar/MonthView.styles.d.ts +3 -0
  44. package/cjs/components/Calendar/MonthView.styles.js +45 -7
  45. package/cjs/components/Calendar/MonthView.styles.js.map +1 -1
  46. package/cjs/components/Calendar/MonthViewModel.js +24 -6
  47. package/cjs/components/Calendar/MonthViewModel.js.map +1 -1
  48. package/cjs/components/Calendar/config.js +12 -6
  49. package/cjs/components/Calendar/config.js.map +1 -1
  50. package/cjs/components/Calendar/index.d.ts +1 -0
  51. package/cjs/components/Calendar/index.js +2 -1
  52. package/cjs/components/Calendar/index.js.map +1 -1
  53. package/cjs/components/Checkbox/Checkbox.js +1 -1
  54. package/cjs/components/Checkbox/Checkbox.js.map +1 -1
  55. package/cjs/components/DateInput/DateFragmentsView.js +1 -1
  56. package/cjs/components/DateInput/DateFragmentsView.js.map +1 -1
  57. package/cjs/components/DateInput/DateInput.js +1 -1
  58. package/cjs/components/DateInput/DateInput.js.map +1 -1
  59. package/cjs/components/DatePicker/DatePicker.d.ts +4 -1
  60. package/cjs/components/DatePicker/DatePicker.js +72 -45
  61. package/cjs/components/DatePicker/DatePicker.js.map +1 -1
  62. package/cjs/components/DatePicker/DatePicker.md +29 -1
  63. package/cjs/components/DatePicker/DatePickerHelpers.js +2 -1
  64. package/cjs/components/DatePicker/DatePickerHelpers.js.map +1 -1
  65. package/cjs/components/DatePicker/MobilePicker.d.ts +10 -0
  66. package/cjs/components/DatePicker/MobilePicker.js +118 -0
  67. package/cjs/components/DatePicker/MobilePicker.js.map +1 -0
  68. package/cjs/components/DatePicker/MobilePicker.styles.d.ts +3 -0
  69. package/cjs/components/DatePicker/MobilePicker.styles.js +8 -0
  70. package/cjs/components/DatePicker/MobilePicker.styles.js.map +1 -0
  71. package/cjs/components/DatePicker/Picker.js +1 -1
  72. package/cjs/components/DatePicker/Picker.js.map +1 -1
  73. package/cjs/components/DatePicker/getMobilePickerTheme.d.ts +2 -0
  74. package/cjs/components/DatePicker/getMobilePickerTheme.js +19 -0
  75. package/cjs/components/DatePicker/getMobilePickerTheme.js.map +1 -0
  76. package/cjs/components/Dropdown/Dropdown.js +1 -1
  77. package/cjs/components/Dropdown/Dropdown.js.map +1 -1
  78. package/cjs/components/DropdownMenu/DropdownMenu.js +1 -1
  79. package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
  80. package/cjs/components/DropdownMenu/DropdownMenu.md +39 -0
  81. package/cjs/components/FileUploader/FileUploader.d.ts +2 -0
  82. package/cjs/components/FileUploader/FileUploader.js +32 -9
  83. package/cjs/components/FileUploader/FileUploader.js.map +1 -1
  84. package/cjs/components/FileUploader/FileUploader.md +29 -0
  85. package/cjs/components/FxInput/FxInput.js +1 -1
  86. package/cjs/components/FxInput/FxInput.js.map +1 -1
  87. package/cjs/components/Group/Group.js +1 -1
  88. package/cjs/components/Group/Group.js.map +1 -1
  89. package/cjs/components/Hint/Hint.d.ts +4 -3
  90. package/cjs/components/Hint/Hint.js +9 -8
  91. package/cjs/components/Hint/Hint.js.map +1 -1
  92. package/cjs/components/Input/Input.js +1 -1
  93. package/cjs/components/Input/Input.js.map +1 -1
  94. package/cjs/components/Input/Input.styles.d.ts +1 -1
  95. package/cjs/components/Input/Input.styles.js +3 -2
  96. package/cjs/components/Input/Input.styles.js.map +1 -1
  97. package/cjs/components/Input/InputLayout/InputLayout.styles.d.ts +1 -1
  98. package/cjs/components/Input/InputLayout/InputLayout.styles.js +3 -2
  99. package/cjs/components/Input/InputLayout/InputLayout.styles.js.map +1 -1
  100. package/cjs/components/Input/InputLayout/InputLayoutAsideIcon.js +1 -1
  101. package/cjs/components/Input/InputLayout/InputLayoutAsideIcon.js.map +1 -1
  102. package/cjs/components/Kebab/Kebab.js +6 -1
  103. package/cjs/components/Kebab/Kebab.js.map +1 -1
  104. package/cjs/components/Link/Link.js +3 -2
  105. package/cjs/components/Link/Link.js.map +1 -1
  106. package/cjs/components/Loader/Loader.js +1 -1
  107. package/cjs/components/Loader/Loader.js.map +1 -1
  108. package/cjs/components/MenuItem/MenuItem.js +2 -2
  109. package/cjs/components/MenuItem/MenuItem.js.map +1 -1
  110. package/cjs/components/MiniModal/MiniModal.js +1 -1
  111. package/cjs/components/MiniModal/MiniModal.js.map +1 -1
  112. package/cjs/components/Modal/Modal.js +1 -1
  113. package/cjs/components/Modal/Modal.js.map +1 -1
  114. package/cjs/components/Modal/ModalBody.js +1 -1
  115. package/cjs/components/Modal/ModalBody.js.map +1 -1
  116. package/cjs/components/Paging/Paging.js +8 -3
  117. package/cjs/components/Paging/Paging.js.map +1 -1
  118. package/cjs/components/PasswordInput/PasswordInput.js +1 -1
  119. package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
  120. package/cjs/components/Radio/Radio.js +1 -1
  121. package/cjs/components/Radio/Radio.js.map +1 -1
  122. package/cjs/components/RadioGroup/RadioGroup.js +10 -1
  123. package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
  124. package/cjs/components/ScrollContainer/ScrollBar.js +1 -1
  125. package/cjs/components/ScrollContainer/ScrollBar.js.map +1 -1
  126. package/cjs/components/ScrollContainer/ScrollContainer.d.ts +1 -0
  127. package/cjs/components/ScrollContainer/ScrollContainer.js +6 -0
  128. package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
  129. package/cjs/components/Select/Select.js +6 -3
  130. package/cjs/components/Select/Select.js.map +1 -1
  131. package/cjs/components/SidePage/SidePage.js +1 -1
  132. package/cjs/components/SidePage/SidePage.js.map +1 -1
  133. package/cjs/components/SidePage/SidePageBody.js +1 -1
  134. package/cjs/components/SidePage/SidePageBody.js.map +1 -1
  135. package/cjs/components/SidePage/SidePageContainer.js +1 -1
  136. package/cjs/components/SidePage/SidePageContainer.js.map +1 -1
  137. package/cjs/components/SidePage/SidePageFooter.js +1 -1
  138. package/cjs/components/SidePage/SidePageFooter.js.map +1 -1
  139. package/cjs/components/SidePage/SidePageHeader.js +1 -1
  140. package/cjs/components/SidePage/SidePageHeader.js.map +1 -1
  141. package/cjs/components/Spinner/Spinner.js +1 -1
  142. package/cjs/components/Spinner/Spinner.js.map +1 -1
  143. package/cjs/components/Switcher/Switcher.js +1 -1
  144. package/cjs/components/Switcher/Switcher.js.map +1 -1
  145. package/cjs/components/Tabs/Indicator.js +1 -1
  146. package/cjs/components/Tabs/Indicator.js.map +1 -1
  147. package/cjs/components/Tabs/Tab.js +2 -2
  148. package/cjs/components/Tabs/Tab.js.map +1 -1
  149. package/cjs/components/Tabs/Tabs.js +1 -1
  150. package/cjs/components/Tabs/Tabs.js.map +1 -1
  151. package/cjs/components/Textarea/Textarea.js +1 -1
  152. package/cjs/components/Textarea/Textarea.js.map +1 -1
  153. package/cjs/components/Toast/Toast.js +1 -1
  154. package/cjs/components/Toast/Toast.js.map +1 -1
  155. package/cjs/components/Toast/ToastView.js +1 -1
  156. package/cjs/components/Toast/ToastView.js.map +1 -1
  157. package/cjs/components/Toggle/Toggle.js +1 -1
  158. package/cjs/components/Toggle/Toggle.js.map +1 -1
  159. package/cjs/components/Token/Token.js +2 -1
  160. package/cjs/components/Token/Token.js.map +1 -1
  161. package/cjs/components/TokenInput/TokenInput.js +1 -1
  162. package/cjs/components/TokenInput/TokenInput.js.map +1 -1
  163. package/cjs/components/TokenInput/TokenInputMenu.js +2 -2
  164. package/cjs/components/TokenInput/TokenInputMenu.js.map +1 -1
  165. package/cjs/components/Tooltip/Tooltip.d.ts +10 -5
  166. package/cjs/components/Tooltip/Tooltip.js +59 -20
  167. package/cjs/components/Tooltip/Tooltip.js.map +1 -1
  168. package/cjs/components/TooltipMenu/TooltipMenu.js +4 -4
  169. package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
  170. package/cjs/hooks/useDrop.d.ts +1 -1
  171. package/cjs/hooks/useDrop.js.map +1 -1
  172. package/cjs/index.d.ts +2 -0
  173. package/cjs/index.js +2 -0
  174. package/cjs/index.js.map +1 -1
  175. package/cjs/internal/CommonWrapper/CommonWrapper.js +2 -2
  176. package/cjs/internal/CommonWrapper/CommonWrapper.js.map +1 -1
  177. package/cjs/internal/CommonWrapper/{extractCommonProps.d.ts → utils/extractCommonProps.d.ts} +2 -2
  178. package/cjs/internal/CommonWrapper/utils/extractCommonProps.js.map +1 -0
  179. package/cjs/internal/CommonWrapper/{getCommonVisualStateDataAttributes.js → utils/getCommonVisualStateDataAttributes.js} +3 -4
  180. package/cjs/internal/CommonWrapper/utils/getCommonVisualStateDataAttributes.js.map +1 -0
  181. package/cjs/internal/CommonWrapper/{getVisualStateDataAttributes.d.ts → utils/getVisualStateDataAttributes.d.ts} +1 -1
  182. package/cjs/internal/CommonWrapper/{getVisualStateDataAttributes.js → utils/getVisualStateDataAttributes.js} +3 -3
  183. package/cjs/internal/CommonWrapper/utils/getVisualStateDataAttributes.js.map +1 -0
  184. package/cjs/internal/CommonWrapper/utils/tryGetBoolean.d.ts +1 -0
  185. package/cjs/internal/CommonWrapper/utils/tryGetBoolean.js +1 -0
  186. package/cjs/internal/CommonWrapper/utils/tryGetBoolean.js.map +1 -0
  187. package/cjs/internal/CustomComboBox/ComboBoxMenu.js +2 -3
  188. package/cjs/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
  189. package/cjs/internal/CustomComboBox/ComboBoxView.js +3 -1
  190. package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  191. package/cjs/internal/DateSelect/DateSelect.d.ts +2 -0
  192. package/cjs/internal/DateSelect/DateSelect.js +51 -4
  193. package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
  194. package/cjs/internal/DateSelect/DateSelect.styles.d.ts +1 -0
  195. package/cjs/internal/DateSelect/DateSelect.styles.js +15 -1
  196. package/cjs/internal/DateSelect/DateSelect.styles.js.map +1 -1
  197. package/cjs/internal/DateSelect/locale/locales/en.js +2 -1
  198. package/cjs/internal/DateSelect/locale/locales/en.js.map +1 -1
  199. package/cjs/internal/DateSelect/locale/locales/ru.js +2 -1
  200. package/cjs/internal/DateSelect/locale/locales/ru.js.map +1 -1
  201. package/cjs/internal/DateSelect/locale/types.d.ts +1 -0
  202. package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.d.ts +5 -2
  203. package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.js +16 -3
  204. package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.js.map +1 -1
  205. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +1 -0
  206. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js +4 -2
  207. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js.map +1 -1
  208. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +1 -0
  209. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js +3 -2
  210. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js.map +1 -1
  211. package/cjs/internal/InputLikeText/InputLikeText.js +2 -2
  212. package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
  213. package/cjs/internal/InternalMaskedInput/InternalMaskedInput.js +1 -1
  214. package/cjs/internal/InternalMaskedInput/InternalMaskedInput.js.map +1 -1
  215. package/cjs/internal/InternalMenu/InternalMenu.js +2 -2
  216. package/cjs/internal/InternalMenu/InternalMenu.js.map +1 -1
  217. package/cjs/internal/Menu/Menu.js +2 -2
  218. package/cjs/internal/Menu/Menu.js.map +1 -1
  219. package/cjs/internal/MobilePopup/MobilePopup.d.ts +4 -0
  220. package/cjs/internal/MobilePopup/MobilePopup.js +7 -1
  221. package/cjs/internal/MobilePopup/MobilePopup.js.map +1 -1
  222. package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.d.ts +7 -0
  223. package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js +32 -0
  224. package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.js.map +1 -0
  225. package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.d.ts +4 -0
  226. package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js +15 -0
  227. package/cjs/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.js.map +1 -0
  228. package/cjs/internal/MobilePopup/MobilePopupFooter/index.d.ts +1 -0
  229. package/cjs/internal/MobilePopup/MobilePopupFooter/index.js +1 -0
  230. package/cjs/internal/MobilePopup/MobilePopupFooter/index.js.map +1 -0
  231. package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js +1 -1
  232. package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js.map +1 -1
  233. package/cjs/internal/NativeDateInput/utils.js +3 -2
  234. package/cjs/internal/NativeDateInput/utils.js.map +1 -1
  235. package/cjs/internal/Popup/Popup.d.ts +15 -4
  236. package/cjs/internal/Popup/Popup.js +67 -4
  237. package/cjs/internal/Popup/Popup.js.map +1 -1
  238. package/cjs/internal/PopupMenu/PopupMenu.js +1 -1
  239. package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
  240. package/cjs/internal/RenderContainer/RenderContainer.d.ts +3 -0
  241. package/cjs/internal/RenderContainer/RenderContainer.js +34 -24
  242. package/cjs/internal/RenderContainer/RenderContainer.js.map +1 -1
  243. package/cjs/internal/RenderContainer/RenderInnerContainer.js +8 -4
  244. package/cjs/internal/RenderContainer/RenderInnerContainer.js.map +1 -1
  245. package/cjs/internal/RenderLayer/RenderLayer.js +5 -1
  246. package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
  247. package/cjs/internal/ThemePlayground/Playground.js +1 -1
  248. package/cjs/internal/ThemePlayground/Playground.js.map +1 -1
  249. package/cjs/internal/ThemePlayground/ThemeContextPlayground.js +9 -6
  250. package/cjs/internal/ThemePlayground/ThemeContextPlayground.js.map +1 -1
  251. package/cjs/internal/ThemePlayground/constants.js +2 -1
  252. package/cjs/internal/ThemePlayground/constants.js.map +1 -1
  253. package/cjs/internal/ThemeShowcase/ThemeShowcase.js +1 -1
  254. package/cjs/internal/ThemeShowcase/ThemeShowcase.js.map +1 -1
  255. package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  256. package/cjs/internal/ZIndex/ZIndex.d.ts +7 -3
  257. package/cjs/internal/ZIndex/ZIndex.js +41 -3
  258. package/cjs/internal/ZIndex/ZIndex.js.map +1 -1
  259. package/cjs/internal/themes/DarkTheme.d.ts +2 -0
  260. package/cjs/internal/themes/DarkTheme.js +6 -1
  261. package/cjs/internal/themes/DarkTheme.js.map +1 -1
  262. package/cjs/internal/themes/DefaultTheme.d.ts +18 -0
  263. package/cjs/internal/themes/DefaultTheme.js +32 -4
  264. package/cjs/internal/themes/DefaultTheme.js.map +1 -1
  265. package/cjs/lib/date/InternalDate.d.ts +2 -0
  266. package/cjs/lib/date/InternalDate.js +8 -1
  267. package/cjs/lib/date/InternalDate.js.map +1 -1
  268. package/cjs/lib/date/InternalDateTransformer.d.ts +3 -0
  269. package/cjs/lib/date/InternalDateTransformer.js +23 -0
  270. package/cjs/lib/date/InternalDateTransformer.js.map +1 -1
  271. package/cjs/lib/date/InternalDateValidator.js +2 -1
  272. package/cjs/lib/date/InternalDateValidator.js.map +1 -1
  273. package/cjs/lib/date/comparison.d.ts +6 -0
  274. package/cjs/lib/date/comparison.js +44 -0
  275. package/cjs/lib/date/comparison.js.map +1 -0
  276. package/cjs/lib/featureFlagsContext/FEATUREFLAGSCONTEXT.md +24 -0
  277. package/cjs/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +1 -0
  278. package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +1 -0
  279. package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js +3 -1
  280. package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
  281. package/cjs/lib/listenFocusOutside.js +4 -2
  282. package/cjs/lib/listenFocusOutside.js.map +1 -1
  283. package/cjs/lib/locale/constants.d.ts +3 -0
  284. package/cjs/lib/locale/constants.js +6 -2
  285. package/cjs/lib/locale/constants.js.map +1 -1
  286. package/cjs/lib/taskWithDelayAndMinimalDuration.js +1 -0
  287. package/cjs/lib/taskWithDelayAndMinimalDuration.js.map +1 -1
  288. package/cjs/lib/theming/Emotion.d.ts +7 -1
  289. package/cjs/lib/theming/Emotion.js +6 -3
  290. package/cjs/lib/theming/Emotion.js.map +1 -1
  291. package/cjs/lib/theming/ThemeContext.d.ts +0 -2
  292. package/cjs/lib/theming/ThemeContext.js +1 -3
  293. package/cjs/lib/theming/ThemeContext.js.map +1 -1
  294. package/cjs/lib/theming/ThemeContext.md +3 -1
  295. package/cjs/lib/theming/themes/Theme2022DarkUpdate2024.d.ts +30 -0
  296. package/cjs/lib/theming/themes/Theme2022DarkUpdate2024.js +50 -0
  297. package/cjs/lib/theming/themes/Theme2022DarkUpdate2024.js.map +1 -0
  298. package/cjs/lib/theming/themes/Theme2022Update2024.d.ts +46 -0
  299. package/cjs/lib/theming/themes/Theme2022Update2024.js +75 -0
  300. package/cjs/lib/theming/themes/Theme2022Update2024.js.map +1 -0
  301. package/cjs/lib/widgets/StylesContainer.d.ts +13 -0
  302. package/cjs/lib/widgets/StylesContainer.js +70 -0
  303. package/cjs/lib/widgets/StylesContainer.js.map +1 -0
  304. package/cjs/lib/widgets/index.d.ts +1 -0
  305. package/cjs/lib/widgets/index.js +1 -0
  306. package/cjs/lib/widgets/index.js.map +1 -0
  307. package/components/Autocomplete/Autocomplete/Autocomplete.js +11 -5
  308. package/components/Autocomplete/Autocomplete/Autocomplete.js.map +1 -1
  309. package/components/Autocomplete/Autocomplete.md +76 -3
  310. package/components/Autocomplete/Autocomplete.styles/Autocomplete.styles.js +4 -1
  311. package/components/Autocomplete/Autocomplete.styles/Autocomplete.styles.js.map +1 -1
  312. package/components/Autocomplete/Autocomplete.styles.d.ts +1 -0
  313. package/components/Button/Button/Button.js +3 -3
  314. package/components/Button/Button/Button.js.map +1 -1
  315. package/components/Button/Button.md +38 -11
  316. package/components/Calendar/Calendar/Calendar.js +83 -66
  317. package/components/Calendar/Calendar/Calendar.js.map +1 -1
  318. package/components/Calendar/Calendar.d.ts +28 -5
  319. package/components/Calendar/Calendar.md +82 -1
  320. package/components/Calendar/Calendar.styles/Calendar.styles.js +1 -1
  321. package/components/Calendar/Calendar.styles/Calendar.styles.js.map +1 -1
  322. package/components/Calendar/CalendarContext/CalendarContext.js +2 -0
  323. package/components/Calendar/CalendarContext/CalendarContext.js.map +1 -0
  324. package/components/Calendar/CalendarContext/package.json +6 -0
  325. package/components/Calendar/CalendarContext.d.ts +12 -0
  326. package/components/Calendar/CalendarDateShape/CalendarDateShape.js +23 -1
  327. package/components/Calendar/CalendarDateShape/CalendarDateShape.js.map +1 -1
  328. package/components/Calendar/CalendarDateShape.d.ts +4 -2
  329. package/components/Calendar/CalendarDay/CalendarDay.js +64 -0
  330. package/components/Calendar/CalendarDay/CalendarDay.js.map +1 -0
  331. package/components/Calendar/CalendarDay/package.json +6 -0
  332. package/components/Calendar/CalendarDay.d.ts +12 -0
  333. package/components/Calendar/CalendarDay.md +70 -0
  334. package/components/Calendar/CalendarUtils/CalendarUtils.js +5 -4
  335. package/components/Calendar/CalendarUtils/CalendarUtils.js.map +1 -1
  336. package/components/Calendar/CalendarUtils.d.ts +2 -1
  337. package/components/Calendar/DayCellView/DayCellView.js +33 -46
  338. package/components/Calendar/DayCellView/DayCellView.js.map +1 -1
  339. package/components/Calendar/DayCellView.d.ts +4 -12
  340. package/components/Calendar/DayCellView.styles/DayCellView.styles.js +10 -14
  341. package/components/Calendar/DayCellView.styles/DayCellView.styles.js.map +1 -1
  342. package/components/Calendar/DayCellView.styles.d.ts +2 -5
  343. package/components/Calendar/Month/Month.js +50 -84
  344. package/components/Calendar/Month/Month.js.map +1 -1
  345. package/components/Calendar/Month.d.ts +0 -10
  346. package/components/Calendar/MonthView/MonthView.js +50 -45
  347. package/components/Calendar/MonthView/MonthView.js.map +1 -1
  348. package/components/Calendar/MonthView.d.ts +3 -2
  349. package/components/Calendar/MonthView.styles/MonthView.styles.js +20 -6
  350. package/components/Calendar/MonthView.styles/MonthView.styles.js.map +1 -1
  351. package/components/Calendar/MonthView.styles.d.ts +3 -0
  352. package/components/Calendar/MonthViewModel/MonthViewModel.js +9 -6
  353. package/components/Calendar/MonthViewModel/MonthViewModel.js.map +1 -1
  354. package/components/Calendar/config/config.js +6 -4
  355. package/components/Calendar/config/config.js.map +1 -1
  356. package/components/Calendar/index/index.js +2 -1
  357. package/components/Calendar/index/index.js.map +1 -1
  358. package/components/Calendar/index.d.ts +1 -0
  359. package/components/Checkbox/Checkbox/Checkbox.js +2 -2
  360. package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
  361. package/components/DateInput/DateFragmentsView/DateFragmentsView.js +2 -2
  362. package/components/DateInput/DateFragmentsView/DateFragmentsView.js.map +1 -1
  363. package/components/DateInput/DateInput/DateInput.js +2 -2
  364. package/components/DateInput/DateInput/DateInput.js.map +1 -1
  365. package/components/DatePicker/DatePicker/DatePicker.js +62 -41
  366. package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
  367. package/components/DatePicker/DatePicker.d.ts +4 -1
  368. package/components/DatePicker/DatePicker.md +29 -1
  369. package/components/DatePicker/DatePickerHelpers/DatePickerHelpers.js +2 -1
  370. package/components/DatePicker/DatePickerHelpers/DatePickerHelpers.js.map +1 -1
  371. package/components/DatePicker/MobilePicker/MobilePicker.js +91 -0
  372. package/components/DatePicker/MobilePicker/MobilePicker.js.map +1 -0
  373. package/components/DatePicker/MobilePicker/package.json +6 -0
  374. package/components/DatePicker/MobilePicker.d.ts +10 -0
  375. package/components/DatePicker/MobilePicker.styles/MobilePicker.styles.js +10 -0
  376. package/components/DatePicker/MobilePicker.styles/MobilePicker.styles.js.map +1 -0
  377. package/components/DatePicker/MobilePicker.styles/package.json +6 -0
  378. package/components/DatePicker/MobilePicker.styles.d.ts +3 -0
  379. package/components/DatePicker/Picker/Picker.js +3 -3
  380. package/components/DatePicker/Picker/Picker.js.map +1 -1
  381. package/components/DatePicker/getMobilePickerTheme/getMobilePickerTheme.js +14 -0
  382. package/components/DatePicker/getMobilePickerTheme/getMobilePickerTheme.js.map +1 -0
  383. package/components/DatePicker/getMobilePickerTheme/package.json +6 -0
  384. package/components/DatePicker/getMobilePickerTheme.d.ts +2 -0
  385. package/components/Dropdown/Dropdown/Dropdown.js +3 -3
  386. package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
  387. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js +3 -3
  388. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
  389. package/components/DropdownMenu/DropdownMenu.md +39 -0
  390. package/components/FileUploader/FileUploader/FileUploader.js +30 -8
  391. package/components/FileUploader/FileUploader/FileUploader.js.map +1 -1
  392. package/components/FileUploader/FileUploader.d.ts +2 -0
  393. package/components/FileUploader/FileUploader.md +29 -0
  394. package/components/FxInput/FxInput/FxInput.js +2 -2
  395. package/components/FxInput/FxInput/FxInput.js.map +1 -1
  396. package/components/Group/Group/Group.js +2 -2
  397. package/components/Group/Group/Group.js.map +1 -1
  398. package/components/Hint/Hint/Hint.js +53 -48
  399. package/components/Hint/Hint/Hint.js.map +1 -1
  400. package/components/Hint/Hint.d.ts +4 -3
  401. package/components/Input/Input/Input.js +3 -3
  402. package/components/Input/Input/Input.js.map +1 -1
  403. package/components/Input/Input.styles/Input.styles.js +2 -2
  404. package/components/Input/Input.styles/Input.styles.js.map +1 -1
  405. package/components/Input/Input.styles.d.ts +1 -1
  406. package/components/Input/InputLayout/InputLayout.styles/InputLayout.styles.js +2 -2
  407. package/components/Input/InputLayout/InputLayout.styles/InputLayout.styles.js.map +1 -1
  408. package/components/Input/InputLayout/InputLayout.styles.d.ts +1 -1
  409. package/components/Input/InputLayout/InputLayoutAsideIcon/InputLayoutAsideIcon.js +1 -1
  410. package/components/Input/InputLayout/InputLayoutAsideIcon/InputLayoutAsideIcon.js.map +1 -1
  411. package/components/Kebab/Kebab/Kebab.js +7 -4
  412. package/components/Kebab/Kebab/Kebab.js.map +1 -1
  413. package/components/Link/Link/Link.js +6 -3
  414. package/components/Link/Link/Link.js.map +1 -1
  415. package/components/Loader/Loader/Loader.js +2 -2
  416. package/components/Loader/Loader/Loader.js.map +1 -1
  417. package/components/MenuItem/MenuItem/MenuItem.js +3 -3
  418. package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
  419. package/components/MiniModal/MiniModal/MiniModal.js +2 -2
  420. package/components/MiniModal/MiniModal/MiniModal.js.map +1 -1
  421. package/components/Modal/Modal/Modal.js +3 -3
  422. package/components/Modal/Modal/Modal.js.map +1 -1
  423. package/components/Modal/ModalBody/ModalBody.js +3 -3
  424. package/components/Modal/ModalBody/ModalBody.js.map +1 -1
  425. package/components/Paging/Paging/Paging.js +10 -6
  426. package/components/Paging/Paging/Paging.js.map +1 -1
  427. package/components/PasswordInput/PasswordInput/PasswordInput.js +2 -2
  428. package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
  429. package/components/Radio/Radio/Radio.js +2 -2
  430. package/components/Radio/Radio/Radio.js.map +1 -1
  431. package/components/RadioGroup/RadioGroup/RadioGroup.js +8 -4
  432. package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
  433. package/components/ScrollContainer/ScrollBar/ScrollBar.js +2 -2
  434. package/components/ScrollContainer/ScrollBar/ScrollBar.js.map +1 -1
  435. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +5 -0
  436. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
  437. package/components/ScrollContainer/ScrollContainer.d.ts +1 -0
  438. package/components/Select/Select/Select.js +6 -5
  439. package/components/Select/Select/Select.js.map +1 -1
  440. package/components/SidePage/SidePage/SidePage.js +2 -2
  441. package/components/SidePage/SidePage/SidePage.js.map +1 -1
  442. package/components/SidePage/SidePageBody/SidePageBody.js +2 -2
  443. package/components/SidePage/SidePageBody/SidePageBody.js.map +1 -1
  444. package/components/SidePage/SidePageContainer/SidePageContainer.js +2 -2
  445. package/components/SidePage/SidePageContainer/SidePageContainer.js.map +1 -1
  446. package/components/SidePage/SidePageFooter/SidePageFooter.js +2 -2
  447. package/components/SidePage/SidePageFooter/SidePageFooter.js.map +1 -1
  448. package/components/SidePage/SidePageHeader/SidePageHeader.js +2 -2
  449. package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
  450. package/components/Spinner/Spinner/Spinner.js +2 -2
  451. package/components/Spinner/Spinner/Spinner.js.map +1 -1
  452. package/components/Switcher/Switcher/Switcher.js +3 -3
  453. package/components/Switcher/Switcher/Switcher.js.map +1 -1
  454. package/components/Tabs/Indicator/Indicator.js +2 -2
  455. package/components/Tabs/Indicator/Indicator.js.map +1 -1
  456. package/components/Tabs/Tab/Tab.js +3 -3
  457. package/components/Tabs/Tab/Tab.js.map +1 -1
  458. package/components/Tabs/Tabs/Tabs.js +2 -2
  459. package/components/Tabs/Tabs/Tabs.js.map +1 -1
  460. package/components/Textarea/Textarea/Textarea.js +2 -2
  461. package/components/Textarea/Textarea/Textarea.js.map +1 -1
  462. package/components/Toast/Toast/Toast.js +3 -3
  463. package/components/Toast/Toast/Toast.js.map +1 -1
  464. package/components/Toast/ToastView/ToastView.js +2 -2
  465. package/components/Toast/ToastView/ToastView.js.map +1 -1
  466. package/components/Toggle/Toggle/Toggle.js +2 -2
  467. package/components/Toggle/Toggle/Toggle.js.map +1 -1
  468. package/components/Token/Token/Token.js +6 -3
  469. package/components/Token/Token/Token.js.map +1 -1
  470. package/components/TokenInput/TokenInput/TokenInput.js +2 -2
  471. package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
  472. package/components/TokenInput/TokenInputMenu/TokenInputMenu.js +3 -3
  473. package/components/TokenInput/TokenInputMenu/TokenInputMenu.js.map +1 -1
  474. package/components/Tooltip/Tooltip/Tooltip.js +67 -46
  475. package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
  476. package/components/Tooltip/Tooltip.d.ts +10 -5
  477. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js +3 -3
  478. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
  479. package/hooks/useDrop/useDrop.js.map +1 -1
  480. package/hooks/useDrop.d.ts +1 -1
  481. package/index.d.ts +2 -0
  482. package/index.js +2 -0
  483. package/index.js.map +1 -1
  484. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js +2 -2
  485. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
  486. package/internal/CommonWrapper/utils/extractCommonProps/extractCommonProps.js.map +1 -0
  487. package/internal/CommonWrapper/{extractCommonProps → utils/extractCommonProps}/package.json +1 -1
  488. package/internal/CommonWrapper/{extractCommonProps.d.ts → utils/extractCommonProps.d.ts} +2 -2
  489. package/internal/CommonWrapper/{getCommonVisualStateDataAttributes → utils/getCommonVisualStateDataAttributes}/getCommonVisualStateDataAttributes.js +1 -5
  490. package/internal/CommonWrapper/utils/getCommonVisualStateDataAttributes/getCommonVisualStateDataAttributes.js.map +1 -0
  491. package/internal/CommonWrapper/{getCommonVisualStateDataAttributes → utils/getCommonVisualStateDataAttributes}/package.json +1 -1
  492. package/internal/CommonWrapper/{getVisualStateDataAttributes → utils/getVisualStateDataAttributes}/getVisualStateDataAttributes.js +3 -3
  493. package/internal/CommonWrapper/utils/getVisualStateDataAttributes/getVisualStateDataAttributes.js.map +1 -0
  494. package/internal/CommonWrapper/{getVisualStateDataAttributes → utils/getVisualStateDataAttributes}/package.json +1 -1
  495. package/internal/CommonWrapper/{getVisualStateDataAttributes.d.ts → utils/getVisualStateDataAttributes.d.ts} +1 -1
  496. package/internal/CommonWrapper/utils/tryGetBoolean/package.json +6 -0
  497. package/internal/CommonWrapper/utils/tryGetBoolean/tryGetBoolean.js +3 -0
  498. package/internal/CommonWrapper/utils/tryGetBoolean/tryGetBoolean.js.map +1 -0
  499. package/internal/CommonWrapper/utils/tryGetBoolean.d.ts +1 -0
  500. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js +3 -3
  501. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js.map +1 -1
  502. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +5 -3
  503. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
  504. package/internal/DateSelect/DateSelect/DateSelect.js +59 -6
  505. package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
  506. package/internal/DateSelect/DateSelect.d.ts +2 -0
  507. package/internal/DateSelect/DateSelect.styles/DateSelect.styles.js +4 -1
  508. package/internal/DateSelect/DateSelect.styles/DateSelect.styles.js.map +1 -1
  509. package/internal/DateSelect/DateSelect.styles.d.ts +1 -0
  510. package/internal/DateSelect/locale/locales/en/en.js +2 -1
  511. package/internal/DateSelect/locale/locales/en/en.js.map +1 -1
  512. package/internal/DateSelect/locale/locales/ru/ru.js +2 -1
  513. package/internal/DateSelect/locale/locales/ru/ru.js.map +1 -1
  514. package/internal/DateSelect/locale/types.d.ts +1 -0
  515. package/internal/FileUploaderControl/FileUploaderControlProvider/FileUploaderControlProvider.js +12 -3
  516. package/internal/FileUploaderControl/FileUploaderControlProvider/FileUploaderControlProvider.js.map +1 -1
  517. package/internal/FileUploaderControl/FileUploaderControlProvider.d.ts +5 -2
  518. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js +4 -2
  519. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js.map +1 -1
  520. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +1 -0
  521. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js +4 -2
  522. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js.map +1 -1
  523. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +1 -0
  524. package/internal/InputLikeText/InputLikeText/InputLikeText.js +3 -3
  525. package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
  526. package/internal/InternalMaskedInput/InternalMaskedInput/InternalMaskedInput.js +2 -2
  527. package/internal/InternalMaskedInput/InternalMaskedInput/InternalMaskedInput.js.map +1 -1
  528. package/internal/InternalMenu/InternalMenu/InternalMenu.js +3 -3
  529. package/internal/InternalMenu/InternalMenu/InternalMenu.js.map +1 -1
  530. package/internal/Menu/Menu/Menu.js +3 -3
  531. package/internal/Menu/Menu/Menu.js.map +1 -1
  532. package/internal/MobilePopup/MobilePopup/MobilePopup.js +4 -3
  533. package/internal/MobilePopup/MobilePopup/MobilePopup.js.map +1 -1
  534. package/internal/MobilePopup/MobilePopup.d.ts +4 -0
  535. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter/MobilePopupFooter.js +37 -0
  536. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter/MobilePopupFooter.js.map +1 -0
  537. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter/package.json +6 -0
  538. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.d.ts +7 -0
  539. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles/MobilePopupFooter.styles.js +11 -0
  540. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles/MobilePopupFooter.styles.js.map +1 -0
  541. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles/package.json +6 -0
  542. package/internal/MobilePopup/MobilePopupFooter/MobilePopupFooter.styles.d.ts +4 -0
  543. package/internal/MobilePopup/MobilePopupFooter/index/index.js +1 -0
  544. package/internal/MobilePopup/MobilePopupFooter/index/index.js.map +1 -0
  545. package/internal/MobilePopup/MobilePopupFooter/index/package.json +6 -0
  546. package/internal/MobilePopup/MobilePopupFooter/index.d.ts +1 -0
  547. package/internal/MobilePopup/MobilePopupFooter/package.json +6 -0
  548. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader/MobilePopupHeader.js +2 -2
  549. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader/MobilePopupHeader.js.map +1 -1
  550. package/internal/NativeDateInput/utils/utils.js +2 -1
  551. package/internal/NativeDateInput/utils/utils.js.map +1 -1
  552. package/internal/Popup/Popup/Popup.js +53 -10
  553. package/internal/Popup/Popup/Popup.js.map +1 -1
  554. package/internal/Popup/Popup.d.ts +15 -4
  555. package/internal/PopupMenu/PopupMenu/PopupMenu.js +3 -3
  556. package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
  557. package/internal/RenderContainer/RenderContainer/RenderContainer.js +19 -12
  558. package/internal/RenderContainer/RenderContainer/RenderContainer.js.map +1 -1
  559. package/internal/RenderContainer/RenderContainer.d.ts +3 -0
  560. package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js +11 -5
  561. package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js.map +1 -1
  562. package/internal/RenderLayer/RenderLayer/RenderLayer.js +2 -2
  563. package/internal/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
  564. package/internal/ThemePlayground/Playground/Playground.js +2 -2
  565. package/internal/ThemePlayground/Playground/Playground.js.map +1 -1
  566. package/internal/ThemePlayground/ThemeContextPlayground/ThemeContextPlayground.js +10 -7
  567. package/internal/ThemePlayground/ThemeContextPlayground/ThemeContextPlayground.js.map +1 -1
  568. package/internal/ThemePlayground/constants/constants.js +3 -0
  569. package/internal/ThemePlayground/constants/constants.js.map +1 -1
  570. package/internal/ThemeShowcase/ThemeShowcase/ThemeShowcase.js +2 -2
  571. package/internal/ThemeShowcase/ThemeShowcase/ThemeShowcase.js.map +1 -1
  572. package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  573. package/internal/ZIndex/ZIndex/ZIndex.js +55 -7
  574. package/internal/ZIndex/ZIndex/ZIndex.js.map +1 -1
  575. package/internal/ZIndex/ZIndex.d.ts +7 -3
  576. package/internal/themes/DarkTheme/DarkTheme.js +2 -0
  577. package/internal/themes/DarkTheme/DarkTheme.js.map +1 -1
  578. package/internal/themes/DarkTheme.d.ts +2 -0
  579. package/internal/themes/DefaultTheme/DefaultTheme.js +32 -1
  580. package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
  581. package/internal/themes/DefaultTheme.d.ts +18 -0
  582. package/lib/date/InternalDate/InternalDate.js +7 -1
  583. package/lib/date/InternalDate/InternalDate.js.map +1 -1
  584. package/lib/date/InternalDate.d.ts +2 -0
  585. package/lib/date/InternalDateTransformer/InternalDateTransformer.js +30 -0
  586. package/lib/date/InternalDateTransformer/InternalDateTransformer.js.map +1 -1
  587. package/lib/date/InternalDateTransformer.d.ts +3 -0
  588. package/lib/date/InternalDateValidator/InternalDateValidator.js +6 -1
  589. package/lib/date/InternalDateValidator/InternalDateValidator.js.map +1 -1
  590. package/lib/date/comparison/comparison.js +45 -0
  591. package/lib/date/comparison/comparison.js.map +1 -0
  592. package/lib/date/comparison/package.json +6 -0
  593. package/lib/date/comparison.d.ts +6 -0
  594. package/lib/featureFlagsContext/FEATUREFLAGSCONTEXT.md +24 -0
  595. package/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +1 -0
  596. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js +2 -1
  597. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
  598. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +1 -0
  599. package/lib/listenFocusOutside/listenFocusOutside.js +3 -2
  600. package/lib/listenFocusOutside/listenFocusOutside.js.map +1 -1
  601. package/lib/locale/constants/constants.js +4 -1
  602. package/lib/locale/constants/constants.js.map +1 -1
  603. package/lib/locale/constants.d.ts +3 -0
  604. package/lib/taskWithDelayAndMinimalDuration/taskWithDelayAndMinimalDuration.js +2 -0
  605. package/lib/taskWithDelayAndMinimalDuration/taskWithDelayAndMinimalDuration.js.map +1 -1
  606. package/lib/theming/Emotion/Emotion.js +12 -3
  607. package/lib/theming/Emotion/Emotion.js.map +1 -1
  608. package/lib/theming/Emotion.d.ts +7 -1
  609. package/lib/theming/ThemeContext/ThemeContext.js +0 -2
  610. package/lib/theming/ThemeContext/ThemeContext.js.map +1 -1
  611. package/lib/theming/ThemeContext.d.ts +0 -2
  612. package/lib/theming/ThemeContext.md +3 -1
  613. package/lib/theming/themes/Theme2022DarkUpdate2024/Theme2022DarkUpdate2024.js +33 -0
  614. package/lib/theming/themes/Theme2022DarkUpdate2024/Theme2022DarkUpdate2024.js.map +1 -0
  615. package/lib/theming/themes/Theme2022DarkUpdate2024/package.json +6 -0
  616. package/lib/theming/themes/Theme2022DarkUpdate2024.d.ts +30 -0
  617. package/lib/theming/themes/Theme2022Update2024/Theme2022Update2024.js +50 -0
  618. package/lib/theming/themes/Theme2022Update2024/Theme2022Update2024.js.map +1 -0
  619. package/lib/theming/themes/Theme2022Update2024/package.json +6 -0
  620. package/lib/theming/themes/Theme2022Update2024.d.ts +46 -0
  621. package/lib/widgets/StylesContainer/StylesContainer.js +65 -0
  622. package/lib/widgets/StylesContainer/StylesContainer.js.map +1 -0
  623. package/lib/widgets/StylesContainer/package.json +6 -0
  624. package/lib/widgets/StylesContainer.d.ts +13 -0
  625. package/lib/widgets/index/index.js +1 -0
  626. package/lib/widgets/index/index.js.map +1 -0
  627. package/lib/widgets/index/package.json +6 -0
  628. package/lib/widgets/index.d.ts +1 -0
  629. package/lib/widgets/package.json +6 -0
  630. package/package.json +3 -2
  631. package/cjs/internal/CommonWrapper/extractCommonProps.js.map +0 -1
  632. package/cjs/internal/CommonWrapper/getCommonVisualStateDataAttributes.js.map +0 -1
  633. package/cjs/internal/CommonWrapper/getVisualStateDataAttributes.js.map +0 -1
  634. package/cjs/lib/theming/StyleContainer.d.ts +0 -4
  635. package/cjs/lib/theming/StyleContainer.js +0 -21
  636. package/cjs/lib/theming/StyleContainer.js.map +0 -1
  637. package/internal/CommonWrapper/extractCommonProps/extractCommonProps.js.map +0 -1
  638. package/internal/CommonWrapper/getCommonVisualStateDataAttributes/getCommonVisualStateDataAttributes.js.map +0 -1
  639. package/internal/CommonWrapper/getVisualStateDataAttributes/getVisualStateDataAttributes.js.map +0 -1
  640. package/lib/theming/StyleContainer/StyleContainer.js +0 -21
  641. package/lib/theming/StyleContainer/StyleContainer.js.map +0 -1
  642. package/lib/theming/StyleContainer/package.json +0 -6
  643. package/lib/theming/StyleContainer.d.ts +0 -4
  644. /package/cjs/internal/CommonWrapper/{extractCommonProps.js → utils/extractCommonProps.js} +0 -0
  645. /package/cjs/internal/CommonWrapper/{getCommonVisualStateDataAttributes.d.ts → utils/getCommonVisualStateDataAttributes.d.ts} +0 -0
  646. /package/internal/CommonWrapper/{extractCommonProps → utils/extractCommonProps}/extractCommonProps.js +0 -0
  647. /package/internal/CommonWrapper/{getCommonVisualStateDataAttributes.d.ts → utils/getCommonVisualStateDataAttributes.d.ts} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["Radio.tsx"],"names":["React","globalObject","ThemeConsumer","CommonWrapper","EmotionConsumer","keyListener","rootNode","fixFirefoxModifiedClickOnLabel","isEdge","isIE11","RadioGroupContext","createPropsGetter","FocusControlWrapper","getStyles","globalClasses","RadioDataTids","root","Radio","state","focusedByKeyboard","getProps","defaultProps","context","inputEl","createRef","renderMain","props","disabled","warning","error","size","focused","onMouseOver","onMouseEnter","onMouseLeave","onValueChange","rest","styles","emotion","radioProps","className","cx","circle","theme","getCircleSizeClassName","checked","getCheckedSizeClassName","focus","checkedDisabled","value","inputProps","type","input","tabIndex","ref","onChange","handleChange","onFocus","handleFocus","onBlur","handleBlur","labelProps","getRootSizeClassName","rootChecked","rootIE11","handleMouseOver","handleMouseEnter","handleMouseLeave","onClick","_isInRadioGroup","activeItem","name","suppressHydrationWarning","resetFocus","placeholder","children","renderCaption","Boolean","e","onSelect","requestAnimationFrame","isArrowPressed","isTabPressed","setState","rootLarge","rootMedium","rootSmall","circleLarge","circleMedium","circleSmall","checkedLarge","checkedMedium","checkedSmall","render","setRootNode","current","blur","captionClassNames","caption","captionDisabled","captionIE11","Component","__KONTUR_REACT_UI__","displayName","contextType"],"mappings":"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","sourcesContent":["// TODO: Enable this rule in functional components.\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport React, { AriaAttributes } from 'react';\nimport { globalObject } from '@skbkontur/global-object';\nimport type { Emotion } from '@emotion/css/create-instance';\n\nimport { Override } from '../../typings/utility-types';\nimport { ThemeConsumer } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { EmotionConsumer } from '../../lib/theming/Emotion';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { fixFirefoxModifiedClickOnLabel } from '../../lib/events/fixFirefoxModifiedClickOnLabel';\nimport { isEdge, isIE11 } from '../../lib/client';\nimport { RadioGroupContext, RadioGroupContextType } from '../RadioGroup/RadioGroupContext';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { SizeProp } from '../../lib/types/props';\nimport { FocusControlWrapper } from '../../internal/FocusControlWrapper';\n\nimport { getStyles, globalClasses } from './Radio.styles';\n\n/**\n * @deprecated use SizeProp\n */\nexport type RadioSize = SizeProp;\n\nexport interface RadioProps<T>\n extends Pick<AriaAttributes, 'aria-label'>,\n CommonProps,\n Override<\n React.InputHTMLAttributes<HTMLInputElement>,\n {\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n /**\n * Размер\n */\n size?: SizeProp;\n /**\n * Состояние фокуса.\n */\n focused?: boolean;\n /**\n * Функция, вызываемая при изменении `value`.\n */\n onValueChange?: (value: T) => void;\n /**\n * HTML-событие `onmouseenter`\n */\n onMouseEnter?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * HTML-событие `mouseleave`\n */\n onMouseLeave?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * HTML-событие `onmouseover`\n */\n onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * HTML-атрибут `value`.\n */\n value: T;\n }\n > {}\n\nexport interface RadioState {\n focusedByKeyboard: boolean;\n}\n\nexport const RadioDataTids = {\n root: 'Radio__root',\n} as const;\n\ntype DefaultProps = Required<Pick<RadioProps<any>, 'focused' | 'size'>>;\n\n/**\n * Радио-кнопки используются, когда может быть выбран только один вариант из нескольких.\n */\n@rootNode\nexport class Radio<T> extends React.Component<RadioProps<T>, RadioState> {\n public static __KONTUR_REACT_UI__ = 'Radio';\n public static displayName = 'Radio';\n\n public state = {\n focusedByKeyboard: false,\n };\n\n public static defaultProps: DefaultProps = {\n focused: false,\n size: 'small',\n };\n\n private getProps = createPropsGetter(Radio.defaultProps);\n\n public static contextType = RadioGroupContext;\n public context: RadioGroupContextType<T> = this.context;\n\n private inputEl = React.createRef<HTMLInputElement>();\n private setRootNode!: TSetRootNode;\n private theme!: Theme;\n private emotion!: Emotion;\n\n private getRootSizeClassName() {\n const styles = getStyles(this.emotion);\n switch (this.getProps().size) {\n case 'large':\n return styles.rootLarge(this.theme);\n case 'medium':\n return styles.rootMedium(this.theme);\n case 'small':\n default:\n return styles.rootSmall(this.theme);\n }\n }\n\n private getCircleSizeClassName() {\n const styles = getStyles(this.emotion);\n switch (this.getProps().size) {\n case 'large':\n return styles.circleLarge(this.theme);\n case 'medium':\n return styles.circleMedium(this.theme);\n case 'small':\n default:\n return styles.circleSmall(this.theme);\n }\n }\n\n private getCheckedSizeClassName() {\n const styles = getStyles(this.emotion);\n switch (this.getProps().size) {\n case 'large':\n return styles.checkedLarge(this.theme);\n case 'medium':\n return styles.checkedMedium(this.theme);\n case 'small':\n default:\n return styles.checkedSmall(this.theme);\n }\n }\n\n public render() {\n return (\n <EmotionConsumer>\n {(emotion) => {\n this.emotion = emotion;\n return (\n <ThemeConsumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeConsumer>\n );\n }}\n </EmotionConsumer>\n );\n }\n\n /**\n * @public\n */\n public focus() {\n keyListener.isTabPressed = true;\n this.inputEl.current?.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n this.inputEl.current?.blur();\n }\n\n public renderMain = (props: CommonWrapperRestProps<RadioProps<T>>) => {\n const {\n disabled = this.context.disabled,\n warning = this.context.warning,\n error = this.context.error,\n size,\n focused,\n onMouseOver,\n onMouseEnter,\n onMouseLeave,\n onValueChange,\n ...rest\n } = props;\n const styles = getStyles(this.emotion);\n\n const radioProps = {\n className: this.emotion.cx({\n [styles.circle(this.theme)]: true,\n [this.getCircleSizeClassName()]: true,\n [styles.checked(this.theme)]: this.props.checked,\n [this.getCheckedSizeClassName()]: this.props.checked,\n [styles.focus(this.theme)]: this.getProps().focused || this.state.focusedByKeyboard,\n [styles.error(this.theme)]: error,\n [styles.warning(this.theme)]: warning,\n [styles.disabled(this.theme)]: disabled,\n [styles.checkedDisabled(this.theme)]: this.props.checked && disabled,\n [globalClasses.circle]: true,\n }),\n };\n\n let value: string | number | undefined;\n if (typeof this.props.value === 'string' || typeof this.props.value === 'number') {\n value = this.props.value;\n }\n\n const inputProps = {\n ...rest,\n type: 'radio',\n className: styles.input(),\n disabled,\n tabIndex: this.props.tabIndex,\n value,\n ref: this.inputEl,\n onChange: this.handleChange,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n };\n\n const labelProps = {\n className: this.emotion.cx(styles.root(this.theme), this.getRootSizeClassName(), {\n [styles.rootChecked(this.theme)]: this.props.checked,\n [styles.rootIE11()]: isIE11 || isEdge,\n }),\n onMouseOver: this.handleMouseOver,\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n onClick: fixFirefoxModifiedClickOnLabel(this.inputEl),\n };\n\n if (this._isInRadioGroup()) {\n const checked = this.props.value === this.context.activeItem;\n inputProps.checked = checked;\n inputProps.name = this.context.name;\n inputProps.suppressHydrationWarning = true;\n labelProps.className = this.emotion.cx(styles.root(this.theme), this.getRootSizeClassName(), {\n [styles.rootChecked(this.theme)]: checked,\n [styles.rootIE11()]: isIE11 || isEdge,\n });\n radioProps.className = this.emotion.cx(radioProps.className, {\n [styles.checked(this.theme)]: checked,\n [this.getCheckedSizeClassName()]: checked,\n [styles.checkedDisabled(this.theme)]: checked && disabled,\n });\n }\n\n return (\n <label data-tid={RadioDataTids.root} {...labelProps}>\n <FocusControlWrapper onBlurWhenDisabled={this.resetFocus}>\n <input {...inputProps} />\n </FocusControlWrapper>\n <span {...radioProps}>\n <span className={styles.placeholder()} />\n </span>\n {this.props.children && this.renderCaption()}\n </label>\n );\n };\n\n private _isInRadioGroup = () => Boolean(this.context.name);\n\n private renderCaption() {\n const styles = getStyles(this.emotion);\n const captionClassNames = this.emotion.cx({\n [styles.caption(this.theme)]: true,\n [styles.captionDisabled(this.theme)]: !!(this.props.disabled || this.context.disabled),\n [styles.captionIE11()]: isIE11 || isEdge,\n });\n\n return <div className={captionClassNames}>{this.props.children}</div>;\n }\n\n private handleChange: React.ChangeEventHandler<HTMLInputElement> = (e) => {\n this.props.onValueChange?.(this.props.value);\n\n if (this._isInRadioGroup()) {\n this.context.onSelect(this.props.value);\n }\n\n this.props.onChange?.(e);\n };\n\n private handleMouseOver: React.MouseEventHandler<HTMLLabelElement> = (e) => {\n this.props.onMouseOver?.(e);\n };\n\n private handleMouseEnter: React.MouseEventHandler<HTMLLabelElement> = (e) => {\n this.props.onMouseEnter?.(e);\n };\n\n private handleMouseLeave: React.MouseEventHandler<HTMLLabelElement> = (e) => {\n this.props.onMouseLeave?.(e);\n };\n\n private handleFocus = (e: React.FocusEvent<any>) => {\n if (!this.context.disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n globalObject.requestAnimationFrame?.(() => {\n if (keyListener.isArrowPressed || keyListener.isTabPressed) {\n this.setState({ focusedByKeyboard: true });\n }\n });\n\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n }\n };\n\n private resetFocus = () => this.setState({ focusedByKeyboard: false });\n\n private handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n this.resetFocus();\n this.props.onBlur?.(e);\n };\n}\n"]}
1
+ {"version":3,"sources":["Radio.tsx"],"names":["React","globalObject","ThemeContext","CommonWrapper","EmotionConsumer","keyListener","rootNode","fixFirefoxModifiedClickOnLabel","isEdge","isIE11","RadioGroupContext","createPropsGetter","FocusControlWrapper","getStyles","globalClasses","RadioDataTids","root","Radio","state","focusedByKeyboard","getProps","defaultProps","context","inputEl","createRef","renderMain","props","disabled","warning","error","size","focused","onMouseOver","onMouseEnter","onMouseLeave","onValueChange","rest","styles","emotion","radioProps","className","cx","circle","theme","getCircleSizeClassName","checked","getCheckedSizeClassName","focus","checkedDisabled","value","inputProps","type","input","tabIndex","ref","onChange","handleChange","onFocus","handleFocus","onBlur","handleBlur","labelProps","getRootSizeClassName","rootChecked","rootIE11","handleMouseOver","handleMouseEnter","handleMouseLeave","onClick","_isInRadioGroup","activeItem","name","suppressHydrationWarning","resetFocus","placeholder","children","renderCaption","Boolean","e","onSelect","requestAnimationFrame","isArrowPressed","isTabPressed","setState","rootLarge","rootMedium","rootSmall","circleLarge","circleMedium","circleSmall","checkedLarge","checkedMedium","checkedSmall","render","setRootNode","current","blur","captionClassNames","caption","captionDisabled","captionIE11","Component","__KONTUR_REACT_UI__","displayName","contextType"],"mappings":"oYAAA;AACA;AACA,OAAOA,KAAP,MAAsC,OAAtC;AACA,SAASC,YAAT,QAA6B,0BAA7B;;;;AAIA,SAASC,YAAT,QAA6B,gCAA7B;;AAEA,SAAsBC,aAAtB,QAAmE,8BAAnE;AACA,SAASC,eAAT,QAAgC,2BAAhC;AACA,SAASC,WAAT,QAA4B,8BAA5B;AACA,SAASC,QAAT,QAAuC,oBAAvC;AACA,SAASC,8BAAT,QAA+C,iDAA/C;AACA,SAASC,MAAT,EAAiBC,MAAjB,QAA+B,kBAA/B;AACA,SAASC,iBAAT,QAAyD,iCAAzD;AACA,SAASC,iBAAT,QAAkC,6BAAlC;;AAEA,SAASC,mBAAT,QAAoC,oCAApC;;AAEA,SAASC,SAAT,EAAoBC,aAApB,QAAyC,gBAAzC;;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoDA,OAAO,IAAMC,aAAa,GAAG;AAC3BC,EAAAA,IAAI,EAAE,aADqB,EAAtB;;;;;;;;;AAUP,OAJA;AACA;AACA,GAEA,IAAaC,KAAb,GADCX,QACD;;AAISY,IAAAA,KAJT,GAIiB;AACbC,MAAAA,iBAAiB,EAAE,KADN,EAJjB;;;;;;;;AAaUC,IAAAA,QAbV,GAaqBT,iBAAiB,CAACM,KAAK,CAACI,YAAP,CAbtC;;;AAgBSC,IAAAA,OAhBT,GAgB6C,MAAKA,OAhBlD;;AAkBUC,IAAAA,OAlBV,gBAkBoBvB,KAAK,CAACwB,SAAN,EAlBpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmGSC,IAAAA,UAnGT,GAmGsB,UAACC,KAAD,EAAkD;AACpE;;;;;;;;;;;AAWIA,MAAAA,KAXJ,CACEC,QADF,CACEA,QADF,gCACa,MAAKL,OAAL,CAAaK,QAD1B,oCAWID,KAXJ,CAEEE,OAFF,CAEEA,OAFF,+BAEY,MAAKN,OAAL,CAAaM,OAFzB,iCAWIF,KAXJ,CAGEG,KAHF,CAGEA,KAHF,6BAGU,MAAKP,OAAL,CAAaO,KAHvB,gBAIEC,IAJF,GAWIJ,KAXJ,CAIEI,IAJF,CAKEC,OALF,GAWIL,KAXJ,CAKEK,OALF,CAMEC,WANF,GAWIN,KAXJ,CAMEM,WANF,CAOEC,YAPF,GAWIP,KAXJ,CAOEO,YAPF,CAQEC,YARF,GAWIR,KAXJ,CAQEQ,YARF,CASEC,aATF,GAWIT,KAXJ,CASES,aATF,CAUKC,IAVL,iCAWIV,KAXJ;AAYA,UAAMW,MAAM,GAAGxB,SAAS,CAAC,MAAKyB,OAAN,CAAxB;;AAEA,UAAMC,UAAU,GAAG;AACjBC,QAAAA,SAAS,EAAE,MAAKF,OAAL,CAAaG,EAAb;AACRJ,QAAAA,MAAM,CAACK,MAAP,CAAc,MAAKC,KAAnB,CADQ,IACoB,IADpB;AAER,cAAKC,sBAAL,EAFQ,IAEwB,IAFxB;AAGRP,QAAAA,MAAM,CAACQ,OAAP,CAAe,MAAKF,KAApB,CAHQ,IAGqB,MAAKjB,KAAL,CAAWmB,OAHhC;AAIR,cAAKC,uBAAL,EAJQ,IAIyB,MAAKpB,KAAL,CAAWmB,OAJpC;AAKRR,QAAAA,MAAM,CAACU,KAAP,CAAa,MAAKJ,KAAlB,CALQ,IAKmB,MAAKvB,QAAL,GAAgBW,OAAhB,IAA2B,MAAKb,KAAL,CAAWC,iBALzD;AAMRkB,QAAAA,MAAM,CAACR,KAAP,CAAa,MAAKc,KAAlB,CANQ,IAMmBd,KANnB;AAORQ,QAAAA,MAAM,CAACT,OAAP,CAAe,MAAKe,KAApB,CAPQ,IAOqBf,OAPrB;AAQRS,QAAAA,MAAM,CAACV,QAAP,CAAgB,MAAKgB,KAArB,CARQ,IAQsBhB,QARtB;AASRU,QAAAA,MAAM,CAACW,eAAP,CAAuB,MAAKL,KAA5B,CATQ,IAS6B,MAAKjB,KAAL,CAAWmB,OAAX,IAAsBlB,QATnD;AAURb,QAAAA,aAAa,CAAC4B,MAVN,IAUe,IAVf,oBADM,EAAnB;;;;AAeA,UAAIO,KAAJ;AACA,UAAI,OAAO,MAAKvB,KAAL,CAAWuB,KAAlB,KAA4B,QAA5B,IAAwC,OAAO,MAAKvB,KAAL,CAAWuB,KAAlB,KAA4B,QAAxE,EAAkF;AAChFA,QAAAA,KAAK,GAAG,MAAKvB,KAAL,CAAWuB,KAAnB;AACD;;AAED,UAAMC,UAAU;AACXd,MAAAA,IADW;AAEde,QAAAA,IAAI,EAAE,OAFQ;AAGdX,QAAAA,SAAS,EAAEH,MAAM,CAACe,KAAP,EAHG;AAIdzB,QAAAA,QAAQ,EAARA,QAJc;AAKd0B,QAAAA,QAAQ,EAAE,MAAK3B,KAAL,CAAW2B,QALP;AAMdJ,QAAAA,KAAK,EAALA,KANc;AAOdK,QAAAA,GAAG,EAAE,MAAK/B,OAPI;AAQdgC,QAAAA,QAAQ,EAAE,MAAKC,YARD;AASdC,QAAAA,OAAO,EAAE,MAAKC,WATA;AAUdC,QAAAA,MAAM,EAAE,MAAKC,UAVC,GAAhB;;;AAaA,UAAMC,UAAU,GAAG;AACjBrB,QAAAA,SAAS,EAAE,MAAKF,OAAL,CAAaG,EAAb,CAAgBJ,MAAM,CAACrB,IAAP,CAAY,MAAK2B,KAAjB,CAAhB,EAAyC,MAAKmB,oBAAL,EAAzC;AACRzB,QAAAA,MAAM,CAAC0B,WAAP,CAAmB,MAAKpB,KAAxB,CADQ,IACyB,MAAKjB,KAAL,CAAWmB,OADpC;AAERR,QAAAA,MAAM,CAAC2B,QAAP,EAFQ,IAEYvD,MAAM,IAAID,MAFtB,qBADM;;AAKjBwB,QAAAA,WAAW,EAAE,MAAKiC,eALD;AAMjBhC,QAAAA,YAAY,EAAE,MAAKiC,gBANF;AAOjBhC,QAAAA,YAAY,EAAE,MAAKiC,gBAPF;AAQjBC,QAAAA,OAAO,EAAE7D,8BAA8B,CAAC,MAAKgB,OAAN,CARtB,EAAnB;;;AAWA,UAAI,MAAK8C,eAAL,EAAJ,EAA4B;AAC1B,YAAMxB,OAAO,GAAG,MAAKnB,KAAL,CAAWuB,KAAX,KAAqB,MAAK3B,OAAL,CAAagD,UAAlD;AACApB,QAAAA,UAAU,CAACL,OAAX,GAAqBA,OAArB;AACAK,QAAAA,UAAU,CAACqB,IAAX,GAAkB,MAAKjD,OAAL,CAAaiD,IAA/B;AACArB,QAAAA,UAAU,CAACsB,wBAAX,GAAsC,IAAtC;AACAX,QAAAA,UAAU,CAACrB,SAAX,GAAuB,MAAKF,OAAL,CAAaG,EAAb,CAAgBJ,MAAM,CAACrB,IAAP,CAAY,MAAK2B,KAAjB,CAAhB,EAAyC,MAAKmB,oBAAL,EAAzC;AACpBzB,QAAAA,MAAM,CAAC0B,WAAP,CAAmB,MAAKpB,KAAxB,CADoB,IACaE,OADb;AAEpBR,QAAAA,MAAM,CAAC2B,QAAP,EAFoB,IAEAvD,MAAM,IAAID,MAFV,qBAAvB;;AAIA+B,QAAAA,UAAU,CAACC,SAAX,GAAuB,MAAKF,OAAL,CAAaG,EAAb,CAAgBF,UAAU,CAACC,SAA3B;AACpBH,QAAAA,MAAM,CAACQ,OAAP,CAAe,MAAKF,KAApB,CADoB,IACSE,OADT;AAEpB,cAAKC,uBAAL,EAFoB,IAEaD,OAFb;AAGpBR,QAAAA,MAAM,CAACW,eAAP,CAAuB,MAAKL,KAA5B,CAHoB,IAGiBE,OAAO,IAAIlB,QAH5B,qBAAvB;;AAKD;;AAED;AACE,gDAAO,YAAUZ,aAAa,CAACC,IAA/B,IAAyC6C,UAAzC;AACE,4BAAC,mBAAD,IAAqB,kBAAkB,EAAE,MAAKY,UAA9C;AACE,qCAAWvB,UAAX,CADF,CADF;;AAIE,oCAAUX,UAAV;AACE,sCAAM,SAAS,EAAEF,MAAM,CAACqC,WAAP,EAAjB,GADF,CAJF;;AAOG,cAAKhD,KAAL,CAAWiD,QAAX,IAAuB,MAAKC,aAAL,EAP1B,CADF;;;AAWD,KAzLH;;AA2LUP,IAAAA,eA3LV,GA2L4B,oBAAMQ,OAAO,CAAC,MAAKvD,OAAL,CAAaiD,IAAd,CAAb,EA3L5B;;;;;;;;;;;;;AAwMUf,IAAAA,YAxMV,GAwMqE,UAACsB,CAAD,EAAO;AACxE,YAAKpD,KAAL,CAAWS,aAAX,0BAAKT,KAAL,CAAWS,aAAX,CAA2B,MAAKT,KAAL,CAAWuB,KAAtC;;AAEA,UAAI,MAAKoB,eAAL,EAAJ,EAA4B;AAC1B,cAAK/C,OAAL,CAAayD,QAAb,CAAsB,MAAKrD,KAAL,CAAWuB,KAAjC;AACD;;AAED,YAAKvB,KAAL,CAAW6B,QAAX,0BAAK7B,KAAL,CAAW6B,QAAX,CAAsBuB,CAAtB;AACD,KAhNH;;AAkNUb,IAAAA,eAlNV,GAkNuE,UAACa,CAAD,EAAO;AAC1E,YAAKpD,KAAL,CAAWM,WAAX,0BAAKN,KAAL,CAAWM,WAAX,CAAyB8C,CAAzB;AACD,KApNH;;AAsNUZ,IAAAA,gBAtNV,GAsNwE,UAACY,CAAD,EAAO;AAC3E,YAAKpD,KAAL,CAAWO,YAAX,0BAAKP,KAAL,CAAWO,YAAX,CAA0B6C,CAA1B;AACD,KAxNH;;AA0NUX,IAAAA,gBA1NV,GA0NwE,UAACW,CAAD,EAAO;AAC3E,YAAKpD,KAAL,CAAWQ,YAAX,0BAAKR,KAAL,CAAWQ,YAAX,CAA0B4C,CAA1B;AACD,KA5NH;;AA8NUpB,IAAAA,WA9NV,GA8NwB,UAACoB,CAAD,EAA8B;AAClD,UAAI,CAAC,MAAKxD,OAAL,CAAaK,QAAlB,EAA4B;AAC1B;AACA;AACA1B,QAAAA,YAAY,CAAC+E,qBAAb,oBAAA/E,YAAY,CAAC+E,qBAAb,CAAqC,YAAM;AACzC,cAAI3E,WAAW,CAAC4E,cAAZ,IAA8B5E,WAAW,CAAC6E,YAA9C,EAA4D;AAC1D,kBAAKC,QAAL,CAAc,EAAEhE,iBAAiB,EAAE,IAArB,EAAd;AACD;AACF,SAJD;;AAMA,YAAI,MAAKO,KAAL,CAAW+B,OAAf,EAAwB;AACtB,gBAAK/B,KAAL,CAAW+B,OAAX,CAAmBqB,CAAnB;AACD;AACF;AACF,KA5OH;;AA8OUL,IAAAA,UA9OV,GA8OuB,oBAAM,MAAKU,QAAL,CAAc,EAAEhE,iBAAiB,EAAE,KAArB,EAAd,CAAN,EA9OvB;;AAgPUyC,IAAAA,UAhPV,GAgPuB,UAACkB,CAAD,EAA2C;AAC9D,YAAKL,UAAL;AACA,YAAK/C,KAAL,CAAWiC,MAAX,0BAAKjC,KAAL,CAAWiC,MAAX,CAAoBmB,CAApB;AACD,KAnPH,mDAuBUhB,oBAvBV,GAuBE,gCAA+B,CAC7B,IAAMzB,MAAM,GAAGxB,SAAS,CAAC,KAAKyB,OAAN,CAAxB,CACA,QAAQ,KAAKlB,QAAL,GAAgBU,IAAxB,GACE,KAAK,OAAL,CACE,OAAOO,MAAM,CAAC+C,SAAP,CAAiB,KAAKzC,KAAtB,CAAP,CACF,KAAK,QAAL,CACE,OAAON,MAAM,CAACgD,UAAP,CAAkB,KAAK1C,KAAvB,CAAP,CACF,KAAK,OAAL,CACA,QACE,OAAON,MAAM,CAACiD,SAAP,CAAiB,KAAK3C,KAAtB,CAAP,CAPJ,CASD,CAlCH,QAoCUC,sBApCV,GAoCE,kCAAiC,CAC/B,IAAMP,MAAM,GAAGxB,SAAS,CAAC,KAAKyB,OAAN,CAAxB,CACA,QAAQ,KAAKlB,QAAL,GAAgBU,IAAxB,GACE,KAAK,OAAL,CACE,OAAOO,MAAM,CAACkD,WAAP,CAAmB,KAAK5C,KAAxB,CAAP,CACF,KAAK,QAAL,CACE,OAAON,MAAM,CAACmD,YAAP,CAAoB,KAAK7C,KAAzB,CAAP,CACF,KAAK,OAAL,CACA,QACE,OAAON,MAAM,CAACoD,WAAP,CAAmB,KAAK9C,KAAxB,CAAP,CAPJ,CASD,CA/CH,QAiDUG,uBAjDV,GAiDE,mCAAkC,CAChC,IAAMT,MAAM,GAAGxB,SAAS,CAAC,KAAKyB,OAAN,CAAxB,CACA,QAAQ,KAAKlB,QAAL,GAAgBU,IAAxB,GACE,KAAK,OAAL,CACE,OAAOO,MAAM,CAACqD,YAAP,CAAoB,KAAK/C,KAAzB,CAAP,CACF,KAAK,QAAL,CACE,OAAON,MAAM,CAACsD,aAAP,CAAqB,KAAKhD,KAA1B,CAAP,CACF,KAAK,OAAL,CACA,QACE,OAAON,MAAM,CAACuD,YAAP,CAAoB,KAAKjD,KAAzB,CAAP,CAPJ,CASD,CA5DH,QA8DSkD,MA9DT,GA8DE,kBAAgB,mBACd,oBACE,oBAAC,eAAD,QACG,UAACvD,OAAD,EAAa,CACZ,MAAI,CAACA,OAAL,GAAeA,OAAf,CACA,oBACE,oBAAC,YAAD,CAAc,QAAd,QACG,UAACK,KAAD,EAAW,CACV,MAAI,CAACA,KAAL,GAAaA,KAAb,CACA,oBACE,oBAAC,aAAD,aAAe,WAAW,EAAE,MAAI,CAACmD,WAAjC,IAAkD,MAAI,CAACpE,KAAvD,GACG,MAAI,CAACD,UADR,CADF,CAKD,CARH,CADF,CAYD,CAfH,CADF,CAmBD,CAlFH,CAoFE;AACF;AACA,KAtFA,QAuFSsB,KAvFT,GAuFE,iBAAe,2BACb1C,WAAW,CAAC6E,YAAZ,GAA2B,IAA3B,CACA,8BAAK3D,OAAL,CAAawE,OAAb,2CAAsBhD,KAAtB,GACD,CA1FH,CA4FE;AACF;AACA,KA9FA,QA+FSiD,IA/FT,GA+FE,gBAAc,4BACZ,+BAAKzE,OAAL,CAAawE,OAAb,4CAAsBC,IAAtB,GACD,CAjGH,QA6LUpB,aA7LV,GA6LE,yBAAwB,uBACtB,IAAMvC,MAAM,GAAGxB,SAAS,CAAC,KAAKyB,OAAN,CAAxB,CACA,IAAM2D,iBAAiB,GAAG,KAAK3D,OAAL,CAAaG,EAAb,4CACvBJ,MAAM,CAAC6D,OAAP,CAAe,KAAKvD,KAApB,CADuB,IACM,IADN,oBAEvBN,MAAM,CAAC8D,eAAP,CAAuB,KAAKxD,KAA5B,CAFuB,IAEc,CAAC,EAAE,KAAKjB,KAAL,CAAWC,QAAX,IAAuB,KAAKL,OAAL,CAAaK,QAAtC,CAFf,oBAGvBU,MAAM,CAAC+D,WAAP,EAHuB,IAGA3F,MAAM,IAAID,MAHV,qBAA1B,CAMA,oBAAO,6BAAK,SAAS,EAAEyF,iBAAhB,IAAoC,KAAKvE,KAAL,CAAWiD,QAA/C,CAAP,CACD,CAtMH,gBAA8B3E,KAAK,CAACqG,SAApC,WACgBC,mBADhB,GACsC,OADtC,UAEgBC,WAFhB,GAE8B,OAF9B,UAQgBlF,YARhB,GAQ6C,EACzCU,OAAO,EAAE,KADgC,EAEzCD,IAAI,EAAE,OAFmC,EAR7C,UAegB0E,WAfhB,GAe8B9F,iBAf9B","sourcesContent":["// TODO: Enable this rule in functional components.\n/* eslint-disable @typescript-eslint/no-unused-vars */\nimport React, { AriaAttributes } from 'react';\nimport { globalObject } from '@skbkontur/global-object';\nimport type { Emotion } from '@emotion/css/create-instance';\n\nimport { Override } from '../../typings/utility-types';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper, CommonWrapperRestProps } from '../../internal/CommonWrapper';\nimport { EmotionConsumer } from '../../lib/theming/Emotion';\nimport { keyListener } from '../../lib/events/keyListener';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { fixFirefoxModifiedClickOnLabel } from '../../lib/events/fixFirefoxModifiedClickOnLabel';\nimport { isEdge, isIE11 } from '../../lib/client';\nimport { RadioGroupContext, RadioGroupContextType } from '../RadioGroup/RadioGroupContext';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { SizeProp } from '../../lib/types/props';\nimport { FocusControlWrapper } from '../../internal/FocusControlWrapper';\n\nimport { getStyles, globalClasses } from './Radio.styles';\n\n/**\n * @deprecated use SizeProp\n */\nexport type RadioSize = SizeProp;\n\nexport interface RadioProps<T>\n extends Pick<AriaAttributes, 'aria-label'>,\n CommonProps,\n Override<\n React.InputHTMLAttributes<HTMLInputElement>,\n {\n /**\n * Состояние валидации при ошибке.\n */\n error?: boolean;\n /**\n * Состояние валидации при предупреждении.\n */\n warning?: boolean;\n /**\n * Размер\n */\n size?: SizeProp;\n /**\n * Состояние фокуса.\n */\n focused?: boolean;\n /**\n * Функция, вызываемая при изменении `value`.\n */\n onValueChange?: (value: T) => void;\n /**\n * HTML-событие `onmouseenter`\n */\n onMouseEnter?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * HTML-событие `mouseleave`\n */\n onMouseLeave?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * HTML-событие `onmouseover`\n */\n onMouseOver?: React.MouseEventHandler<HTMLLabelElement>;\n /**\n * HTML-атрибут `value`.\n */\n value: T;\n }\n > {}\n\nexport interface RadioState {\n focusedByKeyboard: boolean;\n}\n\nexport const RadioDataTids = {\n root: 'Radio__root',\n} as const;\n\ntype DefaultProps = Required<Pick<RadioProps<any>, 'focused' | 'size'>>;\n\n/**\n * Радио-кнопки используются, когда может быть выбран только один вариант из нескольких.\n */\n@rootNode\nexport class Radio<T> extends React.Component<RadioProps<T>, RadioState> {\n public static __KONTUR_REACT_UI__ = 'Radio';\n public static displayName = 'Radio';\n\n public state = {\n focusedByKeyboard: false,\n };\n\n public static defaultProps: DefaultProps = {\n focused: false,\n size: 'small',\n };\n\n private getProps = createPropsGetter(Radio.defaultProps);\n\n public static contextType = RadioGroupContext;\n public context: RadioGroupContextType<T> = this.context;\n\n private inputEl = React.createRef<HTMLInputElement>();\n private setRootNode!: TSetRootNode;\n private theme!: Theme;\n private emotion!: Emotion;\n\n private getRootSizeClassName() {\n const styles = getStyles(this.emotion);\n switch (this.getProps().size) {\n case 'large':\n return styles.rootLarge(this.theme);\n case 'medium':\n return styles.rootMedium(this.theme);\n case 'small':\n default:\n return styles.rootSmall(this.theme);\n }\n }\n\n private getCircleSizeClassName() {\n const styles = getStyles(this.emotion);\n switch (this.getProps().size) {\n case 'large':\n return styles.circleLarge(this.theme);\n case 'medium':\n return styles.circleMedium(this.theme);\n case 'small':\n default:\n return styles.circleSmall(this.theme);\n }\n }\n\n private getCheckedSizeClassName() {\n const styles = getStyles(this.emotion);\n switch (this.getProps().size) {\n case 'large':\n return styles.checkedLarge(this.theme);\n case 'medium':\n return styles.checkedMedium(this.theme);\n case 'small':\n default:\n return styles.checkedSmall(this.theme);\n }\n }\n\n public render() {\n return (\n <EmotionConsumer>\n {(emotion) => {\n this.emotion = emotion;\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {this.renderMain}\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }}\n </EmotionConsumer>\n );\n }\n\n /**\n * @public\n */\n public focus() {\n keyListener.isTabPressed = true;\n this.inputEl.current?.focus();\n }\n\n /**\n * @public\n */\n public blur() {\n this.inputEl.current?.blur();\n }\n\n public renderMain = (props: CommonWrapperRestProps<RadioProps<T>>) => {\n const {\n disabled = this.context.disabled,\n warning = this.context.warning,\n error = this.context.error,\n size,\n focused,\n onMouseOver,\n onMouseEnter,\n onMouseLeave,\n onValueChange,\n ...rest\n } = props;\n const styles = getStyles(this.emotion);\n\n const radioProps = {\n className: this.emotion.cx({\n [styles.circle(this.theme)]: true,\n [this.getCircleSizeClassName()]: true,\n [styles.checked(this.theme)]: this.props.checked,\n [this.getCheckedSizeClassName()]: this.props.checked,\n [styles.focus(this.theme)]: this.getProps().focused || this.state.focusedByKeyboard,\n [styles.error(this.theme)]: error,\n [styles.warning(this.theme)]: warning,\n [styles.disabled(this.theme)]: disabled,\n [styles.checkedDisabled(this.theme)]: this.props.checked && disabled,\n [globalClasses.circle]: true,\n }),\n };\n\n let value: string | number | undefined;\n if (typeof this.props.value === 'string' || typeof this.props.value === 'number') {\n value = this.props.value;\n }\n\n const inputProps = {\n ...rest,\n type: 'radio',\n className: styles.input(),\n disabled,\n tabIndex: this.props.tabIndex,\n value,\n ref: this.inputEl,\n onChange: this.handleChange,\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n };\n\n const labelProps = {\n className: this.emotion.cx(styles.root(this.theme), this.getRootSizeClassName(), {\n [styles.rootChecked(this.theme)]: this.props.checked,\n [styles.rootIE11()]: isIE11 || isEdge,\n }),\n onMouseOver: this.handleMouseOver,\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n onClick: fixFirefoxModifiedClickOnLabel(this.inputEl),\n };\n\n if (this._isInRadioGroup()) {\n const checked = this.props.value === this.context.activeItem;\n inputProps.checked = checked;\n inputProps.name = this.context.name;\n inputProps.suppressHydrationWarning = true;\n labelProps.className = this.emotion.cx(styles.root(this.theme), this.getRootSizeClassName(), {\n [styles.rootChecked(this.theme)]: checked,\n [styles.rootIE11()]: isIE11 || isEdge,\n });\n radioProps.className = this.emotion.cx(radioProps.className, {\n [styles.checked(this.theme)]: checked,\n [this.getCheckedSizeClassName()]: checked,\n [styles.checkedDisabled(this.theme)]: checked && disabled,\n });\n }\n\n return (\n <label data-tid={RadioDataTids.root} {...labelProps}>\n <FocusControlWrapper onBlurWhenDisabled={this.resetFocus}>\n <input {...inputProps} />\n </FocusControlWrapper>\n <span {...radioProps}>\n <span className={styles.placeholder()} />\n </span>\n {this.props.children && this.renderCaption()}\n </label>\n );\n };\n\n private _isInRadioGroup = () => Boolean(this.context.name);\n\n private renderCaption() {\n const styles = getStyles(this.emotion);\n const captionClassNames = this.emotion.cx({\n [styles.caption(this.theme)]: true,\n [styles.captionDisabled(this.theme)]: !!(this.props.disabled || this.context.disabled),\n [styles.captionIE11()]: isIE11 || isEdge,\n });\n\n return <div className={captionClassNames}>{this.props.children}</div>;\n }\n\n private handleChange: React.ChangeEventHandler<HTMLInputElement> = (e) => {\n this.props.onValueChange?.(this.props.value);\n\n if (this._isInRadioGroup()) {\n this.context.onSelect(this.props.value);\n }\n\n this.props.onChange?.(e);\n };\n\n private handleMouseOver: React.MouseEventHandler<HTMLLabelElement> = (e) => {\n this.props.onMouseOver?.(e);\n };\n\n private handleMouseEnter: React.MouseEventHandler<HTMLLabelElement> = (e) => {\n this.props.onMouseEnter?.(e);\n };\n\n private handleMouseLeave: React.MouseEventHandler<HTMLLabelElement> = (e) => {\n this.props.onMouseLeave?.(e);\n };\n\n private handleFocus = (e: React.FocusEvent<any>) => {\n if (!this.context.disabled) {\n // focus event fires before keyDown eventlistener\n // so we should check tabPressed in async way\n globalObject.requestAnimationFrame?.(() => {\n if (keyListener.isArrowPressed || keyListener.isTabPressed) {\n this.setState({ focusedByKeyboard: true });\n }\n });\n\n if (this.props.onFocus) {\n this.props.onFocus(e);\n }\n }\n };\n\n private resetFocus = () => this.setState({ focusedByKeyboard: false });\n\n private handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n this.resetFocus();\n this.props.onBlur?.(e);\n };\n}\n"]}
@@ -12,7 +12,8 @@ import { createPropsGetter } from "../../../lib/createPropsGetter";
12
12
  import { FocusTrap } from "../../../internal/FocusTrap";
13
13
  import { CommonWrapper } from "../../../internal/CommonWrapper";
14
14
  import { rootNode } from "../../../lib/rootNode";
15
- import { ThemeConsumer } from "../../../lib/theming/ThemeContext";
15
+ import { getVisualStateDataAttributes } from "../../../internal/CommonWrapper/utils/getVisualStateDataAttributes";
16
+ import { ThemeContext } from "../../../lib/theming/ThemeContext";
16
17
  import { EmotionConsumer } from "../../../lib/theming/Emotion";
17
18
  import { getStyles } from "../RadioGroup.styles";
18
19
  import { Prevent } from "../Prevent";
@@ -115,7 +116,7 @@ var RadioGroup = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Re
115
116
 
116
117
  return /*#__PURE__*/React.createElement(EmotionConsumer, null, function (emotion) {
117
118
  _this2.emotion = emotion;
118
- return /*#__PURE__*/React.createElement(ThemeConsumer, null, function (theme) {
119
+ return /*#__PURE__*/React.createElement(ThemeContext.Consumer, null, function (theme) {
119
120
  _this2.theme = theme;
120
121
  return _this2.renderMain();
121
122
  });
@@ -129,7 +130,8 @@ var RadioGroup = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Re
129
130
  onMouseOver = _this$props.onMouseOver,
130
131
  onMouseEnter = _this$props.onMouseEnter,
131
132
  onBlur = _this$props.onBlur,
132
- ariaDescribedby = _this$props['aria-describedby'];
133
+ ariaDescribedby = _this$props['aria-describedby'],
134
+ disabled = _this$props.disabled;
133
135
  var style = {
134
136
  width: width != null ? width : 'auto'
135
137
  };
@@ -141,7 +143,9 @@ var RadioGroup = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_Re
141
143
  var styles = getStyles(this.emotion);
142
144
  return /*#__PURE__*/React.createElement(CommonWrapper, _extends({
143
145
  rootNodeRef: this.setRootNode
144
- }, this.props), /*#__PURE__*/React.createElement(FocusTrap, {
146
+ }, this.props, getVisualStateDataAttributes({
147
+ disabled: disabled
148
+ })), /*#__PURE__*/React.createElement(FocusTrap, {
145
149
  onBlur: onBlur
146
150
  }, /*#__PURE__*/React.createElement("span", _extends({
147
151
  "data-tid": RadioGroupDataTids.root,
@@ -1 +1 @@
1
- {"version":3,"sources":["RadioGroup.tsx"],"names":["React","invariant","getRandomID","isNonNullable","Radio","createPropsGetter","FocusTrap","CommonWrapper","rootNode","ThemeConsumer","EmotionConsumer","getStyles","Prevent","RadioGroupContext","RadioGroupDataTids","root","RadioGroup","props","name","getProps","defaultProps","getRadioGroupContextValue","activeItem","getValue","onSelect","handleSelect","getName","disabled","error","warning","isControlled","value","state","setState","onValueChange","renderRadio","itemValue","data","index","styles","emotion","itemProps","key","getKeyByItem","className","cx","item","theme","itemFirst","itemInline","inline","renderItem","toKey","undefined","ref","element","node","defaultValue","render","renderMain","width","onMouseLeave","onMouseOver","onMouseEnter","onBlur","ariaDescribedby","style","handlers","setRootNode","renderChildren","focus","radio","querySelector","items","children","mapItems","Component","__KONTUR_REACT_UI__","displayName","_value","fn","result","entry","normalizeEntry","push","Array","isArray"],"mappings":"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","sourcesContent":["import React, { AriaAttributes } from 'react';\nimport invariant from 'invariant';\nimport type { Emotion } from '@emotion/css/create-instance';\n\nimport { getRandomID, isNonNullable } from '../../lib/utils';\nimport { Radio } from '../Radio';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Nullable } from '../../typings/utility-types';\nimport { FocusTrap } from '../../internal/FocusTrap';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { ThemeConsumer } from '../../lib/theming/ThemeContext';\nimport { EmotionConsumer } from '../../lib/theming/Emotion';\n\nimport { getStyles } from './RadioGroup.styles';\nimport { Prevent } from './Prevent';\nimport { RadioGroupContext, RadioGroupContextType } from './RadioGroupContext';\n\nexport interface RadioGroupProps<T = string | number> extends CommonProps {\n /**\n * Значение по умолчанию. Должно быть одним из значений дочерних радиокнопок\n * или значений из параметра `items`\n */\n defaultValue?: T;\n /**\n * Значение радиогруппы. Должно быть одним из значений радиокнопок.\n * Если не указано, то компонент будет работать, как неконтролируемый\n */\n value?: T;\n /**\n * Может быть использовано, если не передан параметр `children`\n *\n * Массив параметров радиокнопок. Может быть типа `Array<Value>` или\n * `Array<[Value, Data]>`, где тип `Value` — значение радиокнопки, а `Data`\n * — значение которое будет использовано вторым параметром в `renderItem`.\n * Если тип `items: Array<Value>`, то он будет приведен к типу\n * `Array<[Value, Value]>`\n */\n items?: T[] | Array<[T, React.ReactNode]>;\n /**\n * Аттрибут name для вложенных радиокнопок. Если не указан, то сгенерируется\n * случайное имя\n */\n name?: string;\n\n /**\n * Метод получения уникального ключа по элементу\n * @param item\n */\n toKey?: (item: T) => string | number;\n /**\n * Дизейблит все радиокнопки\n */\n disabled?: boolean;\n /**\n * Переводит все радиокнопки в состояние валидации: предупреждение.\n */\n warning?: boolean;\n /**\n * Переводит все радиокнопки в состояние валидации: ошибка.\n */\n error?: boolean;\n /**\n * Выравнивает элементы в строку. Не работает с `children`\n */\n inline?: boolean;\n /**\n * Ширина радиогруппы. Не работает с `children`\n */\n width?: React.CSSProperties['width'];\n /**\n * Метод отрисовки контента радиокнопки. Не работает с `children`.\n *\n * Принимает два аргумента: `(value: Value, data: Data) => React.Node`\n */\n renderItem?: (itemValue: T, data: React.ReactNode) => React.ReactNode;\n /**\n * Атрибут для указания id элемента(-ов), описывающих его\n */\n 'aria-describedby'?: AriaAttributes['aria-describedby'];\n /** Вызывается при изменении `value` */\n onValueChange?: (value: T) => void;\n onBlur?: (event: FocusEvent) => void;\n onMouseLeave?: () => any;\n onMouseOver?: () => any;\n onMouseEnter?: () => any;\n}\n\nexport interface RadioGroupState<T> {\n activeItem?: T;\n}\n\nexport const RadioGroupDataTids = {\n root: 'RadioGroup__root',\n} as const;\n\ntype DefaultProps = Required<Pick<RadioGroupProps<unknown>, 'renderItem'>>;\n\n/**\n *\n * `children` может содержать любую разметку с компонентами Radio,\n * если не передан параметр `items`.\n * Каждому компоненту Radio нужно указать параметр `value`, такого же типа\n * как и параметр `value` самой радиогруппы.\n *\n * Значения активного элемента сравниваются по строгому равенству `===`\n */\n@rootNode\nexport class RadioGroup<T> extends React.Component<RadioGroupProps<T>, RadioGroupState<T>> {\n public static __KONTUR_REACT_UI__ = 'RadioGroup';\n public static displayName = 'RadioGroup';\n\n public static defaultProps: DefaultProps = {\n renderItem,\n };\n\n public static Prevent = Prevent;\n\n private theme!: Theme;\n private emotion!: Emotion;\n\n private node: Nullable<HTMLSpanElement>;\n private name = getRandomID();\n private getProps = createPropsGetter(RadioGroup.defaultProps);\n private setRootNode!: TSetRootNode;\n\n constructor(props: RadioGroupProps<T>) {\n super(props);\n\n this.state = {\n activeItem: this.props.defaultValue,\n };\n }\n\n private getRadioGroupContextValue = (): RadioGroupContextType<T> => {\n return {\n activeItem: this.getValue(),\n onSelect: this.handleSelect,\n name: this.getName(),\n disabled: this.props.disabled,\n error: this.props.error,\n warning: this.props.warning,\n };\n };\n\n public render() {\n return (\n <EmotionConsumer>\n {(emotion) => {\n this.emotion = emotion;\n return (\n <ThemeConsumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeConsumer>\n );\n }}\n </EmotionConsumer>\n );\n }\n\n public renderMain() {\n const { width, onMouseLeave, onMouseOver, onMouseEnter, onBlur, 'aria-describedby': ariaDescribedby } = this.props;\n const style = {\n width: width ?? 'auto',\n };\n const handlers = {\n onMouseOver,\n onMouseEnter,\n onMouseLeave,\n };\n const styles = getStyles(this.emotion);\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <FocusTrap onBlur={onBlur}>\n <span\n data-tid={RadioGroupDataTids.root}\n ref={this.ref}\n style={style}\n className={styles.root()}\n role=\"radiogroup\"\n {...handlers}\n aria-describedby={ariaDescribedby}\n >\n <RadioGroupContext.Provider value={this.getRadioGroupContextValue()}>\n {this.renderChildren()}\n </RadioGroupContext.Provider>\n </span>\n </FocusTrap>\n </CommonWrapper>\n );\n }\n\n /**\n * @public\n */\n public focus() {\n const node = this.node;\n if (!node) {\n return;\n }\n\n let radio = node.querySelector('input[type=\"radio\"]:checked') as Nullable<HTMLInputElement>;\n\n // If no checked radios, try get first radio\n if (!radio || radio.disabled) {\n radio = node.querySelector('input[type=\"radio\"]:not([disabled])') as Nullable<HTMLInputElement>;\n }\n\n if (radio) {\n radio.focus();\n }\n }\n\n private getValue = () => (this.isControlled() ? this.props.value : this.state.activeItem);\n\n private getName = () => this.props.name || this.name;\n\n private isControlled = () => isNonNullable(this.props.value);\n\n private handleSelect = (value: T) => {\n if (!this.isControlled()) {\n this.setState({ activeItem: value });\n }\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n\n private renderChildren() {\n const { items, children } = this.props;\n invariant((!items && children) || (items && !children), 'Either items or children must be passed, not both');\n return items ? mapItems<T>(this.renderRadio, items) : children;\n }\n\n private renderRadio = (itemValue: T, data: React.ReactNode, index: number): JSX.Element => {\n const styles = getStyles(this.emotion);\n const itemProps = {\n key: this.getKeyByItem(itemValue),\n className: this.emotion.cx({\n [styles.item(this.theme)]: true,\n [styles.itemFirst()]: index === 0,\n [styles.itemInline()]: !!this.props.inline,\n }),\n };\n\n return (\n <span {...itemProps} role=\"presentation\">\n <Radio value={itemValue}>{this.getProps().renderItem(itemValue, data)}</Radio>\n </span>\n );\n };\n\n private getKeyByItem = (itemValue: T) => {\n if (this.props.toKey) {\n return this.props.toKey(itemValue);\n }\n return typeof itemValue === 'string' || typeof itemValue === 'number' ? itemValue : undefined;\n };\n\n private ref = (element: HTMLSpanElement) => {\n this.node = element;\n };\n}\n\nfunction renderItem<T>(_value: T, data: React.ReactNode) {\n return data;\n}\n\nfunction mapItems<T>(\n fn: (value: T, data: React.ReactNode, index: number) => React.ReactNode,\n items: T[] | Array<[T, React.ReactNode]>,\n) {\n const result: React.ReactNode[] = [];\n let index = 0;\n for (const entry of items) {\n const [value, data] = normalizeEntry<T>(entry);\n result.push(fn(value, data, index));\n ++index;\n }\n return result;\n}\n\nfunction normalizeEntry<T>(entry: T | [T, React.ReactNode]): [T, React.ReactNode] {\n if (!Array.isArray(entry)) {\n return [entry, entry];\n }\n return entry;\n}\n"]}
1
+ {"version":3,"sources":["RadioGroup.tsx"],"names":["React","invariant","getRandomID","isNonNullable","Radio","createPropsGetter","FocusTrap","CommonWrapper","rootNode","getVisualStateDataAttributes","ThemeContext","EmotionConsumer","getStyles","Prevent","RadioGroupContext","RadioGroupDataTids","root","RadioGroup","props","name","getProps","defaultProps","getRadioGroupContextValue","activeItem","getValue","onSelect","handleSelect","getName","disabled","error","warning","isControlled","value","state","setState","onValueChange","renderRadio","itemValue","data","index","styles","emotion","itemProps","key","getKeyByItem","className","cx","item","theme","itemFirst","itemInline","inline","renderItem","toKey","undefined","ref","element","node","defaultValue","render","renderMain","width","onMouseLeave","onMouseOver","onMouseEnter","onBlur","ariaDescribedby","style","handlers","setRootNode","renderChildren","focus","radio","querySelector","items","children","mapItems","Component","__KONTUR_REACT_UI__","displayName","_value","fn","result","entry","normalizeEntry","push","Array","isArray"],"mappings":"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","sourcesContent":["import React, { AriaAttributes } from 'react';\nimport invariant from 'invariant';\nimport type { Emotion } from '@emotion/css/create-instance';\n\nimport { getRandomID, isNonNullable } from '../../lib/utils';\nimport { Radio } from '../Radio';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Nullable } from '../../typings/utility-types';\nimport { FocusTrap } from '../../internal/FocusTrap';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getVisualStateDataAttributes } from '../../internal/CommonWrapper/utils/getVisualStateDataAttributes';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { EmotionConsumer } from '../../lib/theming/Emotion';\n\nimport { getStyles } from './RadioGroup.styles';\nimport { Prevent } from './Prevent';\nimport { RadioGroupContext, RadioGroupContextType } from './RadioGroupContext';\n\nexport interface RadioGroupProps<T = string | number> extends CommonProps {\n /**\n * Значение по умолчанию. Должно быть одним из значений дочерних радиокнопок\n * или значений из параметра `items`\n */\n defaultValue?: T;\n /**\n * Значение радиогруппы. Должно быть одним из значений радиокнопок.\n * Если не указано, то компонент будет работать, как неконтролируемый\n */\n value?: T;\n /**\n * Может быть использовано, если не передан параметр `children`\n *\n * Массив параметров радиокнопок. Может быть типа `Array<Value>` или\n * `Array<[Value, Data]>`, где тип `Value` — значение радиокнопки, а `Data`\n * — значение которое будет использовано вторым параметром в `renderItem`.\n * Если тип `items: Array<Value>`, то он будет приведен к типу\n * `Array<[Value, Value]>`\n */\n items?: T[] | Array<[T, React.ReactNode]>;\n /**\n * Аттрибут name для вложенных радиокнопок. Если не указан, то сгенерируется\n * случайное имя\n */\n name?: string;\n\n /**\n * Метод получения уникального ключа по элементу\n * @param item\n */\n toKey?: (item: T) => string | number;\n /**\n * Дизейблит все радиокнопки\n */\n disabled?: boolean;\n /**\n * Переводит все радиокнопки в состояние валидации: предупреждение.\n */\n warning?: boolean;\n /**\n * Переводит все радиокнопки в состояние валидации: ошибка.\n */\n error?: boolean;\n /**\n * Выравнивает элементы в строку. Не работает с `children`\n */\n inline?: boolean;\n /**\n * Ширина радиогруппы. Не работает с `children`\n */\n width?: React.CSSProperties['width'];\n /**\n * Метод отрисовки контента радиокнопки. Не работает с `children`.\n *\n * Принимает два аргумента: `(value: Value, data: Data) => React.Node`\n */\n renderItem?: (itemValue: T, data: React.ReactNode) => React.ReactNode;\n /**\n * Атрибут для указания id элемента(-ов), описывающих его\n */\n 'aria-describedby'?: AriaAttributes['aria-describedby'];\n /** Вызывается при изменении `value` */\n onValueChange?: (value: T) => void;\n onBlur?: (event: FocusEvent) => void;\n onMouseLeave?: () => any;\n onMouseOver?: () => any;\n onMouseEnter?: () => any;\n}\n\nexport interface RadioGroupState<T> {\n activeItem?: T;\n}\n\nexport const RadioGroupDataTids = {\n root: 'RadioGroup__root',\n} as const;\n\ntype DefaultProps = Required<Pick<RadioGroupProps<unknown>, 'renderItem'>>;\n\n/**\n *\n * `children` может содержать любую разметку с компонентами Radio,\n * если не передан параметр `items`.\n * Каждому компоненту Radio нужно указать параметр `value`, такого же типа\n * как и параметр `value` самой радиогруппы.\n *\n * Значения активного элемента сравниваются по строгому равенству `===`\n */\n@rootNode\nexport class RadioGroup<T> extends React.Component<RadioGroupProps<T>, RadioGroupState<T>> {\n public static __KONTUR_REACT_UI__ = 'RadioGroup';\n public static displayName = 'RadioGroup';\n\n public static defaultProps: DefaultProps = {\n renderItem,\n };\n\n public static Prevent = Prevent;\n\n private theme!: Theme;\n private emotion!: Emotion;\n\n private node: Nullable<HTMLSpanElement>;\n private name = getRandomID();\n private getProps = createPropsGetter(RadioGroup.defaultProps);\n private setRootNode!: TSetRootNode;\n\n constructor(props: RadioGroupProps<T>) {\n super(props);\n\n this.state = {\n activeItem: this.props.defaultValue,\n };\n }\n\n private getRadioGroupContextValue = (): RadioGroupContextType<T> => {\n return {\n activeItem: this.getValue(),\n onSelect: this.handleSelect,\n name: this.getName(),\n disabled: this.props.disabled,\n error: this.props.error,\n warning: this.props.warning,\n };\n };\n\n public render() {\n return (\n <EmotionConsumer>\n {(emotion) => {\n this.emotion = emotion;\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }}\n </EmotionConsumer>\n );\n }\n\n public renderMain() {\n const {\n width,\n onMouseLeave,\n onMouseOver,\n onMouseEnter,\n onBlur,\n 'aria-describedby': ariaDescribedby,\n disabled,\n } = this.props;\n const style = {\n width: width ?? 'auto',\n };\n const handlers = {\n onMouseOver,\n onMouseEnter,\n onMouseLeave,\n };\n const styles = getStyles(this.emotion);\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props} {...getVisualStateDataAttributes({ disabled })}>\n <FocusTrap onBlur={onBlur}>\n <span\n data-tid={RadioGroupDataTids.root}\n ref={this.ref}\n style={style}\n className={styles.root()}\n role=\"radiogroup\"\n {...handlers}\n aria-describedby={ariaDescribedby}\n >\n <RadioGroupContext.Provider value={this.getRadioGroupContextValue()}>\n {this.renderChildren()}\n </RadioGroupContext.Provider>\n </span>\n </FocusTrap>\n </CommonWrapper>\n );\n }\n\n /**\n * @public\n */\n public focus() {\n const node = this.node;\n if (!node) {\n return;\n }\n\n let radio = node.querySelector('input[type=\"radio\"]:checked') as Nullable<HTMLInputElement>;\n\n // If no checked radios, try get first radio\n if (!radio || radio.disabled) {\n radio = node.querySelector('input[type=\"radio\"]:not([disabled])') as Nullable<HTMLInputElement>;\n }\n\n if (radio) {\n radio.focus();\n }\n }\n\n private getValue = () => (this.isControlled() ? this.props.value : this.state.activeItem);\n\n private getName = () => this.props.name || this.name;\n\n private isControlled = () => isNonNullable(this.props.value);\n\n private handleSelect = (value: T) => {\n if (!this.isControlled()) {\n this.setState({ activeItem: value });\n }\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n };\n\n private renderChildren() {\n const { items, children } = this.props;\n invariant((!items && children) || (items && !children), 'Either items or children must be passed, not both');\n return items ? mapItems<T>(this.renderRadio, items) : children;\n }\n\n private renderRadio = (itemValue: T, data: React.ReactNode, index: number): JSX.Element => {\n const styles = getStyles(this.emotion);\n const itemProps = {\n key: this.getKeyByItem(itemValue),\n className: this.emotion.cx({\n [styles.item(this.theme)]: true,\n [styles.itemFirst()]: index === 0,\n [styles.itemInline()]: !!this.props.inline,\n }),\n };\n\n return (\n <span {...itemProps} role=\"presentation\">\n <Radio value={itemValue}>{this.getProps().renderItem(itemValue, data)}</Radio>\n </span>\n );\n };\n\n private getKeyByItem = (itemValue: T) => {\n if (this.props.toKey) {\n return this.props.toKey(itemValue);\n }\n return typeof itemValue === 'string' || typeof itemValue === 'number' ? itemValue : undefined;\n };\n\n private ref = (element: HTMLSpanElement) => {\n this.node = element;\n };\n}\n\nfunction renderItem<T>(_value: T, data: React.ReactNode) {\n return data;\n}\n\nfunction mapItems<T>(\n fn: (value: T, data: React.ReactNode, index: number) => React.ReactNode,\n items: T[] | Array<[T, React.ReactNode]>,\n) {\n const result: React.ReactNode[] = [];\n let index = 0;\n for (const entry of items) {\n const [value, data] = normalizeEntry<T>(entry);\n result.push(fn(value, data, index));\n ++index;\n }\n return result;\n}\n\nfunction normalizeEntry<T>(entry: T | [T, React.ReactNode]): [T, React.ReactNode] {\n if (!Array.isArray(entry)) {\n return [entry, entry];\n }\n return entry;\n}\n"]}
@@ -5,7 +5,7 @@ import React from 'react';
5
5
  import { globalObject } from '@skbkontur/global-object';
6
6
  import { isInstanceOf } from "../../../lib/isInstanceOf";
7
7
  import { EmotionConsumer } from "../../../lib/theming/Emotion";
8
- import { ThemeConsumer } from "../../../lib/theming/ThemeContext";
8
+ import { ThemeContext } from "../../../lib/theming/ThemeContext";
9
9
  import { defaultScrollbarState, scrollSizeParametersNames } from "../ScrollContainer.constants";
10
10
  import { getStyles, globalClasses } from "../ScrollContainer.styles";
11
11
  import { getScrollSizeParams } from "../ScrollContainer.helpers";
@@ -229,7 +229,7 @@ export var ScrollBar = /*#__PURE__*/function (_React$Component) {
229
229
 
230
230
  return /*#__PURE__*/React.createElement(EmotionConsumer, null, function (emotion) {
231
231
  _this2.emotion = emotion;
232
- return /*#__PURE__*/React.createElement(ThemeConsumer, null, function (theme) {
232
+ return /*#__PURE__*/React.createElement(ThemeContext.Consumer, null, function (theme) {
233
233
  _this2.theme = theme;
234
234
  return _this2.renderMain();
235
235
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["ScrollBar.tsx"],"names":["React","globalObject","isInstanceOf","EmotionConsumer","ThemeConsumer","defaultScrollbarState","scrollSizeParametersNames","getStyles","globalClasses","getScrollSizeParams","ScrollBar","containerRef","createRef","state","renderMain","props","active","axis","customScrollPos","customScrollSize","styles","emotion","classNames","cx","className","scrollBar","theme","scrollBarStyles","scrollBarInvert","invert","visibleScrollBar","isVisible","inlineStyles","pos","size","scrollBarContainerClassNames","offset","refScroll","handleScrollMouseDown","reflow","inner","scrollSize","scrollPos","scrollActive","scrollState","getImmediateScrollState","onScroll","setState","setInnerElement","element","handleScrollWheel","event","node","addEventListener","passive","removeEventListener","coord","initialCoord","target","document","initialScrollPos","mouseMove","mouseMoveEvent","current","remainingScrollingContent","remainingScrollingSpace","ratio","delta","preventDefault","Object","prototype","hasOwnProperty","call","returnValue","mouseUp","scrollingByMouseDrag","WheelEvent","shiftKey","offsetHeight","deltaY","clientSize","maxScrollPos","Math","abs","componentDidMount","componentDidUpdate","render","setHover","hover","getHover","scrollBarX","scrollbarX","scrollBarXHover","scrollBarY","scrollbarY","scrollBarYHover","scrollbarContainerX","scrollBarContainerX","scrollbarContainerY","scrollBarContainerY","Component"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { globalObject } from '@skbkontur/global-object';\nimport type { Emotion } from '@emotion/css/create-instance';\n\nimport { Nullable } from '../../typings/utility-types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { isInstanceOf } from '../../lib/isInstanceOf';\nimport { EmotionConsumer } from '../../lib/theming/Emotion';\nimport { ThemeConsumer } from '../../lib/theming/ThemeContext';\n\nimport { defaultScrollbarState, scrollSizeParametersNames } from './ScrollContainer.constants';\nimport { getStyles, globalClasses } from './ScrollContainer.styles';\nimport { getScrollSizeParams } from './ScrollContainer.helpers';\nimport { ScrollContainerProps } from './ScrollContainer';\n\nexport type ScrollAxis = 'x' | 'y';\nexport type ScrollBarScrollState = 'begin' | 'middle' | 'end';\n\nexport interface ScrollBarState {\n active: boolean;\n hover: boolean;\n scrollingByMouseDrag: boolean;\n size: number; // in percentages\n pos: number; // in percentages\n scrollState: ScrollBarScrollState;\n}\n\nexport interface ScrollBarProps {\n invert: boolean;\n axis: ScrollAxis;\n className?: string;\n onScroll?: (axis: ScrollAxis, state: ScrollBarScrollState, prevState: ScrollBarScrollState) => void;\n offset: ScrollContainerProps['offsetY'] | ScrollContainerProps['offsetX'];\n disableAnimations?: boolean;\n isVisible: boolean;\n}\n\nexport class ScrollBar extends React.Component<ScrollBarProps, ScrollBarState> {\n private inner: Nullable<HTMLElement>;\n private containerRef = React.createRef<HTMLDivElement>();\n private theme!: Theme;\n private emotion!: Emotion;\n\n public node: Nullable<HTMLElement>;\n public state: ScrollBarState = {\n ...defaultScrollbarState,\n };\n\n public componentDidMount() {\n this.reflow();\n }\n\n public componentDidUpdate() {\n this.reflow();\n }\n\n public render() {\n return (\n <EmotionConsumer>\n {(emotion) => {\n this.emotion = emotion;\n return (\n <ThemeConsumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeConsumer>\n );\n }}\n </EmotionConsumer>\n );\n }\n\n private renderMain = () => {\n const state = this.state;\n const props = this.props;\n\n if (!state.active) {\n return null;\n }\n\n const { customScrollPos, customScrollSize } = scrollSizeParametersNames[this.props.axis];\n const styles = getStyles(this.emotion);\n const classNames = this.emotion.cx(props.className, styles.scrollBar(this.theme), this.scrollBarStyles, {\n [styles.scrollBarInvert(this.theme)]: props.invert,\n [styles.visibleScrollBar()]: props.isVisible,\n });\n\n const inlineStyles: React.CSSProperties = {\n [customScrollPos]: `${state.pos}%`,\n [customScrollSize]: `${state.size}%`,\n };\n\n return (\n <div ref={this.containerRef} className={this.scrollBarContainerClassNames} style={props.offset}>\n <div\n ref={this.refScroll}\n style={inlineStyles}\n className={classNames}\n onMouseDown={this.handleScrollMouseDown}\n data-tid={`ScrollContainer__ScrollBar-${props.axis}`}\n />\n </div>\n );\n };\n\n public reflow = () => {\n if (!this.inner) {\n return;\n }\n\n const props = this.props;\n const state = this.state;\n\n const { scrollSize, scrollPos, scrollActive } = getScrollSizeParams(this.inner, props.axis);\n\n if (!scrollActive && !state.active) {\n return;\n }\n\n if (state.active !== scrollActive || state.size !== scrollSize || state.pos !== scrollPos) {\n const scrollState = this.getImmediateScrollState();\n\n if (state.pos !== scrollPos) {\n this.props.onScroll?.(props.axis, scrollState, state.scrollState);\n }\n\n this.setState({\n ...this.state,\n active: scrollActive,\n size: scrollSize,\n pos: scrollPos,\n scrollState,\n });\n }\n };\n\n public setInnerElement = (inner: Nullable<HTMLElement>) => {\n this.inner = inner;\n this.reflow();\n };\n\n public setHover(hover: boolean) {\n if (this.state.active && this.state.hover !== hover) {\n this.setState({ ...this.state, hover });\n }\n }\n\n public getHover() {\n return this.state.hover;\n }\n\n public get scrollBarState() {\n return this.state.scrollState;\n }\n\n private get scrollBarStyles() {\n const state = this.state;\n const styles = getStyles(this.emotion);\n if (this.props.axis === 'x') {\n return this.emotion.cx(styles.scrollBarX(this.theme), globalClasses.scrollbarX, {\n [styles.scrollBarXHover(this.theme)]: state.hover || state.scrollingByMouseDrag,\n });\n }\n\n return this.emotion.cx(styles.scrollBarY(this.theme), globalClasses.scrollbarY, {\n [styles.scrollBarYHover(this.theme)]: state.hover || state.scrollingByMouseDrag,\n });\n }\n\n private get scrollBarContainerClassNames() {\n const { axis } = this.props;\n const styles = getStyles(this.emotion);\n if (axis === 'x') {\n return this.emotion.cx(globalClasses.scrollbarContainerX, styles.scrollBarContainerX(this.theme));\n }\n\n return this.emotion.cx(globalClasses.scrollbarContainerY, styles.scrollBarContainerY());\n }\n\n private refScroll = (element: HTMLElement | null) => {\n const handleScrollWheel = (event: Event) => this.handleScrollWheel(event, this.props.axis);\n\n if (!this.node && element) {\n element.addEventListener('wheel', handleScrollWheel, { passive: false });\n }\n if (this.node && !element) {\n this.node.removeEventListener('wheel', handleScrollWheel);\n }\n this.node = element;\n };\n\n private handleScrollMouseDown = (event: React.MouseEvent<HTMLDivElement>) => {\n if (!this.inner) {\n return;\n }\n\n const { offset, size, pos, coord } = scrollSizeParametersNames[this.props.axis];\n\n const initialCoord = event[coord];\n const target = globalObject.document;\n const initialScrollPos = this.inner[pos];\n const state = this.state;\n\n const mouseMove = (mouseMoveEvent: MouseEvent) => {\n if (!this.inner || !this.containerRef.current) {\n return;\n }\n\n const remainingScrollingContent = this.inner[size] - this.inner[offset];\n const remainingScrollingSpace = (this.containerRef.current[offset] / 100) * (100 - state.size);\n\n const ratio = remainingScrollingContent / remainingScrollingSpace;\n const delta = (mouseMoveEvent[coord] - initialCoord) * ratio;\n\n this.inner[pos] = initialScrollPos + delta;\n\n if (mouseMoveEvent.preventDefault) {\n mouseMoveEvent.preventDefault();\n }\n\n if (Object.prototype.hasOwnProperty.call(mouseMoveEvent, 'returnValue')) {\n (\n mouseMoveEvent as MouseEvent & {\n returnValue: boolean;\n }\n ).returnValue = false;\n }\n };\n\n const mouseUp = () => {\n target?.removeEventListener('mousemove', mouseMove);\n target?.removeEventListener('mouseup', mouseUp);\n this.setState({ ...this.state, scrollingByMouseDrag: false });\n };\n\n target?.addEventListener('mousemove', mouseMove);\n target?.addEventListener('mouseup', mouseUp);\n this.setState({ ...this.state, scrollingByMouseDrag: true });\n\n event.preventDefault();\n };\n\n private handleScrollWheel = (event: Event, axis: ScrollAxis) => {\n if (!this.inner || !isInstanceOf(event, globalObject.WheelEvent) || (axis === 'x' && !event.shiftKey)) {\n return;\n }\n\n const { offset, size, pos } = scrollSizeParametersNames[axis];\n\n const scrollSize = this.inner[size];\n const scrollPos = this.inner[pos];\n const offsetHeight = this.inner[offset];\n\n if (event.deltaY > 0 && scrollSize <= scrollPos + offsetHeight) {\n return;\n }\n if (event.deltaY < 0 && scrollPos <= 0) {\n return;\n }\n\n this.inner[pos] += event.deltaY;\n\n event.preventDefault();\n };\n\n private getImmediateScrollState = (): ScrollBarScrollState => {\n const { pos, size, clientSize } = scrollSizeParametersNames[this.props.axis];\n\n if (!this.inner || this.inner[pos] === 0) {\n return 'begin';\n }\n // Zoom in Chrome causes problems\n // https://github.com/skbkontur/retail-ui/pull/2705#issue-806286945\n const maxScrollPos = this.inner[size] - this.inner[clientSize];\n if (Math.abs(maxScrollPos - this.inner[pos]) <= 1) {\n return 'end';\n }\n\n return 'middle';\n };\n}\n"]}
1
+ {"version":3,"sources":["ScrollBar.tsx"],"names":["React","globalObject","isInstanceOf","EmotionConsumer","ThemeContext","defaultScrollbarState","scrollSizeParametersNames","getStyles","globalClasses","getScrollSizeParams","ScrollBar","containerRef","createRef","state","renderMain","props","active","axis","customScrollPos","customScrollSize","styles","emotion","classNames","cx","className","scrollBar","theme","scrollBarStyles","scrollBarInvert","invert","visibleScrollBar","isVisible","inlineStyles","pos","size","scrollBarContainerClassNames","offset","refScroll","handleScrollMouseDown","reflow","inner","scrollSize","scrollPos","scrollActive","scrollState","getImmediateScrollState","onScroll","setState","setInnerElement","element","handleScrollWheel","event","node","addEventListener","passive","removeEventListener","coord","initialCoord","target","document","initialScrollPos","mouseMove","mouseMoveEvent","current","remainingScrollingContent","remainingScrollingSpace","ratio","delta","preventDefault","Object","prototype","hasOwnProperty","call","returnValue","mouseUp","scrollingByMouseDrag","WheelEvent","shiftKey","offsetHeight","deltaY","clientSize","maxScrollPos","Math","abs","componentDidMount","componentDidUpdate","render","setHover","hover","getHover","scrollBarX","scrollbarX","scrollBarXHover","scrollBarY","scrollbarY","scrollBarYHover","scrollbarContainerX","scrollBarContainerX","scrollbarContainerY","scrollBarContainerY","Component"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { globalObject } from '@skbkontur/global-object';\nimport type { Emotion } from '@emotion/css/create-instance';\n\nimport { Nullable } from '../../typings/utility-types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { isInstanceOf } from '../../lib/isInstanceOf';\nimport { EmotionConsumer } from '../../lib/theming/Emotion';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\n\nimport { defaultScrollbarState, scrollSizeParametersNames } from './ScrollContainer.constants';\nimport { getStyles, globalClasses } from './ScrollContainer.styles';\nimport { getScrollSizeParams } from './ScrollContainer.helpers';\nimport { ScrollContainerProps } from './ScrollContainer';\n\nexport type ScrollAxis = 'x' | 'y';\nexport type ScrollBarScrollState = 'begin' | 'middle' | 'end';\n\nexport interface ScrollBarState {\n active: boolean;\n hover: boolean;\n scrollingByMouseDrag: boolean;\n size: number; // in percentages\n pos: number; // in percentages\n scrollState: ScrollBarScrollState;\n}\n\nexport interface ScrollBarProps {\n invert: boolean;\n axis: ScrollAxis;\n className?: string;\n onScroll?: (axis: ScrollAxis, state: ScrollBarScrollState, prevState: ScrollBarScrollState) => void;\n offset: ScrollContainerProps['offsetY'] | ScrollContainerProps['offsetX'];\n disableAnimations?: boolean;\n isVisible: boolean;\n}\n\nexport class ScrollBar extends React.Component<ScrollBarProps, ScrollBarState> {\n private inner: Nullable<HTMLElement>;\n private containerRef = React.createRef<HTMLDivElement>();\n private theme!: Theme;\n private emotion!: Emotion;\n\n public node: Nullable<HTMLElement>;\n public state: ScrollBarState = {\n ...defaultScrollbarState,\n };\n\n public componentDidMount() {\n this.reflow();\n }\n\n public componentDidUpdate() {\n this.reflow();\n }\n\n public render() {\n return (\n <EmotionConsumer>\n {(emotion) => {\n this.emotion = emotion;\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }}\n </EmotionConsumer>\n );\n }\n\n private renderMain = () => {\n const state = this.state;\n const props = this.props;\n\n if (!state.active) {\n return null;\n }\n\n const { customScrollPos, customScrollSize } = scrollSizeParametersNames[this.props.axis];\n const styles = getStyles(this.emotion);\n const classNames = this.emotion.cx(props.className, styles.scrollBar(this.theme), this.scrollBarStyles, {\n [styles.scrollBarInvert(this.theme)]: props.invert,\n [styles.visibleScrollBar()]: props.isVisible,\n });\n\n const inlineStyles: React.CSSProperties = {\n [customScrollPos]: `${state.pos}%`,\n [customScrollSize]: `${state.size}%`,\n };\n\n return (\n <div ref={this.containerRef} className={this.scrollBarContainerClassNames} style={props.offset}>\n <div\n ref={this.refScroll}\n style={inlineStyles}\n className={classNames}\n onMouseDown={this.handleScrollMouseDown}\n data-tid={`ScrollContainer__ScrollBar-${props.axis}`}\n />\n </div>\n );\n };\n\n public reflow = () => {\n if (!this.inner) {\n return;\n }\n\n const props = this.props;\n const state = this.state;\n\n const { scrollSize, scrollPos, scrollActive } = getScrollSizeParams(this.inner, props.axis);\n\n if (!scrollActive && !state.active) {\n return;\n }\n\n if (state.active !== scrollActive || state.size !== scrollSize || state.pos !== scrollPos) {\n const scrollState = this.getImmediateScrollState();\n\n if (state.pos !== scrollPos) {\n this.props.onScroll?.(props.axis, scrollState, state.scrollState);\n }\n\n this.setState({\n ...this.state,\n active: scrollActive,\n size: scrollSize,\n pos: scrollPos,\n scrollState,\n });\n }\n };\n\n public setInnerElement = (inner: Nullable<HTMLElement>) => {\n this.inner = inner;\n this.reflow();\n };\n\n public setHover(hover: boolean) {\n if (this.state.active && this.state.hover !== hover) {\n this.setState({ ...this.state, hover });\n }\n }\n\n public getHover() {\n return this.state.hover;\n }\n\n public get scrollBarState() {\n return this.state.scrollState;\n }\n\n private get scrollBarStyles() {\n const state = this.state;\n const styles = getStyles(this.emotion);\n if (this.props.axis === 'x') {\n return this.emotion.cx(styles.scrollBarX(this.theme), globalClasses.scrollbarX, {\n [styles.scrollBarXHover(this.theme)]: state.hover || state.scrollingByMouseDrag,\n });\n }\n\n return this.emotion.cx(styles.scrollBarY(this.theme), globalClasses.scrollbarY, {\n [styles.scrollBarYHover(this.theme)]: state.hover || state.scrollingByMouseDrag,\n });\n }\n\n private get scrollBarContainerClassNames() {\n const { axis } = this.props;\n const styles = getStyles(this.emotion);\n if (axis === 'x') {\n return this.emotion.cx(globalClasses.scrollbarContainerX, styles.scrollBarContainerX(this.theme));\n }\n\n return this.emotion.cx(globalClasses.scrollbarContainerY, styles.scrollBarContainerY());\n }\n\n private refScroll = (element: HTMLElement | null) => {\n const handleScrollWheel = (event: Event) => this.handleScrollWheel(event, this.props.axis);\n\n if (!this.node && element) {\n element.addEventListener('wheel', handleScrollWheel, { passive: false });\n }\n if (this.node && !element) {\n this.node.removeEventListener('wheel', handleScrollWheel);\n }\n this.node = element;\n };\n\n private handleScrollMouseDown = (event: React.MouseEvent<HTMLDivElement>) => {\n if (!this.inner) {\n return;\n }\n\n const { offset, size, pos, coord } = scrollSizeParametersNames[this.props.axis];\n\n const initialCoord = event[coord];\n const target = globalObject.document;\n const initialScrollPos = this.inner[pos];\n const state = this.state;\n\n const mouseMove = (mouseMoveEvent: MouseEvent) => {\n if (!this.inner || !this.containerRef.current) {\n return;\n }\n\n const remainingScrollingContent = this.inner[size] - this.inner[offset];\n const remainingScrollingSpace = (this.containerRef.current[offset] / 100) * (100 - state.size);\n\n const ratio = remainingScrollingContent / remainingScrollingSpace;\n const delta = (mouseMoveEvent[coord] - initialCoord) * ratio;\n\n this.inner[pos] = initialScrollPos + delta;\n\n if (mouseMoveEvent.preventDefault) {\n mouseMoveEvent.preventDefault();\n }\n\n if (Object.prototype.hasOwnProperty.call(mouseMoveEvent, 'returnValue')) {\n (\n mouseMoveEvent as MouseEvent & {\n returnValue: boolean;\n }\n ).returnValue = false;\n }\n };\n\n const mouseUp = () => {\n target?.removeEventListener('mousemove', mouseMove);\n target?.removeEventListener('mouseup', mouseUp);\n this.setState({ ...this.state, scrollingByMouseDrag: false });\n };\n\n target?.addEventListener('mousemove', mouseMove);\n target?.addEventListener('mouseup', mouseUp);\n this.setState({ ...this.state, scrollingByMouseDrag: true });\n\n event.preventDefault();\n };\n\n private handleScrollWheel = (event: Event, axis: ScrollAxis) => {\n if (!this.inner || !isInstanceOf(event, globalObject.WheelEvent) || (axis === 'x' && !event.shiftKey)) {\n return;\n }\n\n const { offset, size, pos } = scrollSizeParametersNames[axis];\n\n const scrollSize = this.inner[size];\n const scrollPos = this.inner[pos];\n const offsetHeight = this.inner[offset];\n\n if (event.deltaY > 0 && scrollSize <= scrollPos + offsetHeight) {\n return;\n }\n if (event.deltaY < 0 && scrollPos <= 0) {\n return;\n }\n\n this.inner[pos] += event.deltaY;\n\n event.preventDefault();\n };\n\n private getImmediateScrollState = (): ScrollBarScrollState => {\n const { pos, size, clientSize } = scrollSizeParametersNames[this.props.axis];\n\n if (!this.inner || this.inner[pos] === 0) {\n return 'begin';\n }\n // Zoom in Chrome causes problems\n // https://github.com/skbkontur/retail-ui/pull/2705#issue-806286945\n const maxScrollPos = this.inner[size] - this.inner[clientSize];\n if (Math.abs(maxScrollPos - this.inner[pos]) <= 1) {\n return 'end';\n }\n\n return 'middle';\n };\n}\n"]}
@@ -15,6 +15,7 @@ import { rootNode } from "../../../lib/rootNode";
15
15
  import { getDOMRect } from "../../../lib/dom/getDOMRect";
16
16
  import { createPropsGetter } from "../../../lib/createPropsGetter";
17
17
  import { isTestEnv } from "../../../lib/currentEnvironment";
18
+ import { callChildRef } from "../../../lib/callChildRef/callChildRef";
18
19
  import { EmotionConsumer } from "../../../lib/theming/Emotion";
19
20
  import { getStyles, globalClasses } from "../ScrollContainer.styles";
20
21
  import { scrollSizeParametersNames } from "../ScrollContainer.constants";
@@ -147,6 +148,10 @@ export var ScrollContainer = rootNode(_class = (_temp = _class2 = /*#__PURE__*/f
147
148
  }
148
149
 
149
150
  _this.inner = element;
151
+
152
+ if (_this.props.scrollRef) {
153
+ callChildRef(_this.props.scrollRef, element);
154
+ }
150
155
  };
151
156
 
152
157
  _this.handleNativeScroll = function (event) {
@@ -1 +1 @@
1
- {"version":3,"sources":["ScrollContainer.tsx"],"names":["React","PropTypes","globalObject","debounce","isInstanceOf","LayoutEvents","CommonWrapper","isIE11","rootNode","getDOMRect","createPropsGetter","isTestEnv","EmotionConsumer","getStyles","globalClasses","scrollSizeParametersNames","convertScrollbarXScrollState","convertScrollbarYScrollState","getScrollYOffset","ScrollBar","ScrollContainerDataTids","root","inner","ScrollContainer","getProps","defaultProps","initialIsScrollBarVisible","hideScrollBar","showScrollBar","state","isScrollBarXVisible","isScrollBarYVisible","isHovered","renderMain","props","disabled","children","innerStyle","scrollBehavior","scrollBehaviour","maxHeight","maxWidth","scrollbarY","renderScrollbar","scrollbarX","styles","emotion","setRootNode","handleMouseMove","handleMouseLeave","refInner","cx","innerIE11","handleNativeScroll","axis","offsetY","offsetX","invert","disableAnimations","isAxisX","refScrollBar","refScrollBarX","refScrollBarY","offset","isVisible","handleScroll","handleScrollStateChange","scrollState","scrollY","scrollX","scrollXState","onScrollStateChangeX","scrollYState","onScrollStateChange","onScrollStateChangeY","prevScrollState","showScrollBarOnMouseWheel","scrollbar","element","preventWindowScroll","addEventListener","handleInnerScrollWheel","passive","removeEventListener","event","reflow","onScroll","preventDefault","emit","isScrollBarVisible","setState","isScrollBarXHovered","getHover","isScrollBarYHovered","hideScrollBarDelay","WheelEvent","shiftKey","hasScrollBar","pos","size","deltaY","right","currentTarget","pageX","bottom","pageY","setHover","updateInnerElement","setInnerElement","componentDidMount","componentDidUpdate","prevProps","render","scrollTo","scrollLeft","offsetLeft","scrollTop","scrollToTop","scrollToBottom","scrollHeight","offsetHeight","scrollToLeft","scrollToRight","scrollWidth","offsetWidth","Component","__KONTUR_REACT_UI__","displayName","propTypes","bool","oneOfType","string","number","oneOf","func"],"mappings":"2JAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,SAAP,MAAsB,YAAtB;AACA,SAASC,YAAT,QAA6B,0BAA7B;AACA,OAAOC,QAAP,MAAqB,iBAArB;;;AAGA,SAASC,YAAT,QAA6B,wBAA7B;AACA,OAAO,KAAKC,YAAZ,MAA8B,wBAA9B;AACA,SAAsBC,aAAtB,QAA2C,8BAA3C;;AAEA,SAASC,MAAT,QAAuB,kBAAvB;AACA,SAASC,QAAT,QAAuC,oBAAvC;AACA,SAASC,UAAT,QAA2B,0BAA3B;AACA,SAASC,iBAAT,QAAkC,6BAAlC;AACA,SAASC,SAAT,QAA0B,8BAA1B;AACA,SAASC,eAAT,QAAgC,2BAAhC;;AAEA,SAASC,SAAT,EAAoBC,aAApB,QAAyC,0BAAzC;AACA,SAASC,yBAAT,QAA0C,6BAA1C;AACA;AACEC,4BADF;AAEEC,4BAFF;AAGEC,gBAHF;AAIO,2BAJP;AAKA,SAAqBC,SAArB,QAA4D,aAA5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8DA,OAAO,IAAMC,uBAAuB,GAAG;AACrCC,EAAAA,IAAI,EAAE,uBAD+B;AAErCC,EAAAA,KAAK,EAAE,wBAF8B,EAAhC;;;;;;;;;;;;;;;;;;;;;;;AAyBP,WAAaC,eAAb,GADCf,QACD;;;;;;;;;;;;;;;;;;;;;;;;;AAyBUgB,IAAAA,QAzBV,GAyBqBd,iBAAiB,CAACa,eAAe,CAACE,YAAjB,CAzBtC;;;;;AA8BUC,IAAAA,yBA9BV,GA8BsC,CAAC,MAAKF,QAAL,GAAgBG,aAAjB,IAAkC,MAAKH,QAAL,GAAgBI,aAAhB,KAAkC,QA9B1G;;;AAiCSC,IAAAA,KAjCT,GAiCuC;AACnCC,MAAAA,mBAAmB,EAAE,MAAKJ,yBADS;AAEnCK,MAAAA,mBAAmB,EAAE,MAAKL,yBAFS;AAGnCM,MAAAA,SAAS,EAAE,KAHwB,EAjCvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8ESC,IAAAA,UA9ET,GA8EsB,YAAM;AACxB,UAAMC,KAAK,GAAG,MAAKA,KAAnB;;AAEA,UAAI,MAAKA,KAAL,CAAWC,QAAf,EAAyB;AACvB,eAAO,MAAKD,KAAL,CAAWE,QAAlB;AACD;;AAED,UAAMC,UAA+B,GAAG;AACtCC,QAAAA,cAAc,EAAE,MAAKd,QAAL,GAAgBe,eADM;AAEtCC,QAAAA,SAAS,EAAEN,KAAK,CAACM,SAFqB;AAGtCC,QAAAA,QAAQ,EAAEP,KAAK,CAACO,QAHsB,EAAxC;;;AAMA,UAAMC,UAAU,GAAG,MAAKC,eAAL,CAAqB,GAArB,CAAnB;AACA,UAAMC,UAAU,GAAG,MAAKD,eAAL,CAAqB,GAArB,CAAnB;AACA,UAAME,MAAM,GAAGhC,SAAS,CAAC,MAAKiC,OAAN,CAAxB;AACA;AACE,4BAAC,aAAD,aAAe,WAAW,EAAE,MAAKC,WAAjC,IAAkD,MAAKb,KAAvD;AACE;AACE,sBAAUd,uBAAuB,CAACC,IADpC;AAEE,UAAA,SAAS,EAAEwB,MAAM,CAACxB,IAAP,EAFb;AAGE,UAAA,WAAW,EAAE,MAAK2B,eAHpB;AAIE,UAAA,YAAY,EAAE,MAAKC,gBAJrB;;AAMGP,QAAAA,UANH;AAOGE,QAAAA,UAPH;AAQE;AACE,UAAA,KAAK,EAAEP,UADT;AAEE,UAAA,GAAG,EAAE,MAAKa,QAFZ;AAGE,UAAA,SAAS,EAAE,MAAKJ,OAAL,CAAaK,EAAb,CAAgBN,MAAM,CAACvB,KAAP,EAAhB,EAAgCR,aAAa,CAACQ,KAA9C,EAAqDf,MAAM,IAAIsC,MAAM,CAACO,SAAP,EAA/D,CAHb;AAIE,sBAAUhC,uBAAuB,CAACE,KAJpC;AAKE,UAAA,QAAQ,EAAE,MAAK+B,kBALjB;;AAOGnB,QAAAA,KAAK,CAACE,QAPT,CARF,CADF,CADF;;;;;AAsBD,KApHH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsLUO,IAAAA,eAtLV,GAsL4B,UAACW,IAAD,EAAsB;AAC9C,2BAAwD,MAAK9B,QAAL,EAAxD,CAAQ+B,OAAR,kBAAQA,OAAR,CAAiBC,OAAjB,kBAAiBA,OAAjB,CAA0BC,MAA1B,kBAA0BA,MAA1B,CAAkCC,iBAAlC,kBAAkCA,iBAAlC;AACA,UAAMC,OAAO,GAAGL,IAAI,KAAK,GAAzB;AACA,UAAMM,YAAY,GAAGD,OAAO,GAAG,MAAKE,aAAR,GAAwB,MAAKC,aAAzD;AACA,UAAMC,MAAM,GAAGJ,OAAO,GAAGH,OAAH,GAAaD,OAAnC;AACA,UAAMS,SAAS,GAAGL,OAAO,GAAG,MAAK9B,KAAL,CAAWC,mBAAd,GAAoC,MAAKD,KAAL,CAAWE,mBAAxE;;AAEA;AACE,4BAAC,SAAD;AACE,UAAA,IAAI,EAAEuB,IADR;AAEE,UAAA,GAAG,EAAEM,YAFP;AAGE,UAAA,MAAM,EAAEH,MAHV;AAIE,UAAA,QAAQ,EAAE,MAAKQ,YAJjB;AAKE,UAAA,MAAM,EAAEF,MALV;AAME,UAAA,iBAAiB,EAAEL,iBANrB;AAOE,UAAA,SAAS,EAAEM,SAPb,GADF;;;AAWD,KAxMH;;AA0MUE,IAAAA,uBA1MV,GA0MoC,UAACC,WAAD,EAAoCb,IAApC,EAAyD;AACzF,UAAI,CAAC,MAAKc,OAAN,IAAiB,CAAC,MAAKC,OAA3B,EAAoC;AAClC;AACD;;AAED,UAAIf,IAAI,KAAK,GAAb,EAAkB;AAChB,YAAMgB,YAAY,GAAGtD,4BAA4B,CAACmD,WAAD,CAAjD;;AAEA,cAAKjC,KAAL,CAAWqC,oBAAX,0BAAKrC,KAAL,CAAWqC,oBAAX,CAAkCD,YAAlC;AACA;AACD;;AAED,UAAME,YAAY,GAAGvD,4BAA4B,CAACkD,WAAD,CAAjD;;AAEA,YAAKjC,KAAL,CAAWuC,mBAAX,0BAAKvC,KAAL,CAAWuC,mBAAX,CAAiCD,YAAjC;AACA,YAAKtC,KAAL,CAAWwC,oBAAX,0BAAKxC,KAAL,CAAWwC,oBAAX,CAAkCF,YAAlC;AACD,KA1NH;;AA4NUP,IAAAA,YA5NV,GA4NyB;AACrBX,IAAAA,IADqB;AAErBa,IAAAA,WAFqB;AAGrBQ,IAAAA,eAHqB;AAIlB;AACH,UAAIR,WAAW,KAAKQ,eAApB,EAAqC;AACnC,cAAKT,uBAAL,CAA6BC,WAA7B,EAA0Cb,IAA1C;AACD;AACD,4BAAyC,MAAK9B,QAAL,EAAzC,CAAQG,aAAR,mBAAQA,aAAR,CAAuBC,aAAvB,mBAAuBA,aAAvB;AACA,OAACD,aAAa,IAAIC,aAAa,KAAK,QAApC,KAAiD,MAAKgD,yBAAL,CAA+BtB,IAA/B,CAAjD;AACD,KAtOH;;AAwOUQ,IAAAA,aAxOV,GAwO0B,UAACe,SAAD,EAAoC;AAC1D,YAAKT,OAAL,GAAeS,SAAf;AACD,KA1OH;;AA4OUhB,IAAAA,aA5OV,GA4O0B,UAACgB,SAAD,EAAoC;AAC1D,YAAKR,OAAL,GAAeQ,SAAf;AACD,KA9OH;;AAgPU3B,IAAAA,QAhPV,GAgPqB,UAAC4B,OAAD,EAAiC;AAClD,UAAI,CAAC,MAAKxD,KAAN,IAAewD,OAAf,IAA0B,MAAKtD,QAAL,GAAgBuD,mBAA9C,EAAmE;AACjED,QAAAA,OAAO,CAACE,gBAAR,CAAyB,OAAzB,EAAkC,MAAKC,sBAAvC,EAA+D,EAAEC,OAAO,EAAE,KAAX,EAA/D;AACD;AACD,UAAI,MAAK5D,KAAL,IAAc,CAACwD,OAAnB,EAA4B;AAC1B,cAAKxD,KAAL,CAAW6D,mBAAX,CAA+B,OAA/B,EAAwC,MAAKF,sBAA7C;AACD;AACD,YAAK3D,KAAL,GAAawD,OAAb;AACD,KAxPH;;AA0PUzB,IAAAA,kBA1PV,GA0P+B,UAAC+B,KAAD,EAA0C;AACrE,6BAAKhB,OAAL,mCAAciB,MAAd;AACA,6BAAKhB,OAAL,mCAAcgB,MAAd;;AAEA,YAAKnD,KAAL,CAAWoD,QAAX,0BAAKpD,KAAL,CAAWoD,QAAX,CAAsBF,KAAtB;AACA,UAAI,MAAK5D,QAAL,GAAgBuD,mBAApB,EAAyC;AACvCK,QAAAA,KAAK,CAACG,cAAN;AACA;AACD;AACDlF,MAAAA,YAAY,CAACmF,IAAb;AACD,KApQH;;AAsQUZ,IAAAA,yBAtQV,GAsQsC,UAACtB,IAAD,EAAsB;AACxD,UAAMmC,kBAAkB,GAAGnC,IAAI,KAAK,GAAT,GAAe,MAAKzB,KAAL,CAAWC,mBAA1B,GAAgD,MAAKD,KAAL,CAAWE,mBAAtF;AACA,UAAI,CAAC0D,kBAAL,EAAyB;AACvBnC,QAAAA,IAAI,KAAK,GAAT,GAAe,MAAKoC,QAAL,CAAc,EAAE5D,mBAAmB,EAAE,IAAvB,EAAd,CAAf,GAA8D,MAAK4D,QAAL,CAAc,EAAE3D,mBAAmB,EAAE,IAAvB,EAAd,CAA9D;AACD;AACD,YAAKJ,aAAL,CAAmB2B,IAAnB;AACD,KA5QH;;AA8QmB3B,IAAAA,aA9QnB,GA8QmCxB,QAAQ,CAAC,UAACmD,IAAD,EAA+B;AACvE,UAAI,MAAKzB,KAAL,CAAWG,SAAf,EAA0B;AACxB;AACD;AACD,UAAM2D,mBAAmB,qBAAG,MAAKtB,OAAR,qBAAG,eAAcuB,QAAd,EAA5B;AACA,UAAMC,mBAAmB,qBAAG,MAAKzB,OAAR,qBAAG,eAAcwB,QAAd,EAA5B;AACA,UAAItC,IAAI,KAAK,MAAb,EAAqB;AACnB,SAACqC,mBAAD,IAAwB,CAACE,mBAAzB;AACI,cAAKH,QAAL,CAAc,EAAE5D,mBAAmB,EAAE,KAAvB,EAA8BC,mBAAmB,EAAE,KAAnD,EAAd,CADJ;AAEI,cAAKJ,aAAL,CAAmB,MAAnB,CAFJ;AAGD,OAJD,MAIO,IAAI2B,IAAI,KAAK,GAAb,EAAkB;AACvB,SAACqC,mBAAD,GAAuB,MAAKD,QAAL,CAAc,EAAE5D,mBAAmB,EAAE,KAAvB,EAAd,CAAvB,GAAuE,MAAKH,aAAL,CAAmB,GAAnB,CAAvE;AACD,OAFM,MAEA;AACL,SAACkE,mBAAD,GAAuB,MAAKH,QAAL,CAAc,EAAE3D,mBAAmB,EAAE,KAAvB,EAAd,CAAvB,GAAuE,MAAKJ,aAAL,CAAmB,GAAnB,CAAvE;AACD;AACF,KAfwC,EAetC,MAAKH,QAAL,GAAgBsE,kBAfsB,CA9Q3C;;AA+RUb,IAAAA,sBA/RV,GA+RmC,UAACG,KAAD,EAAkB;AACjD,UAAI,CAAC,MAAK9D,KAAN,IAAe,CAAClB,YAAY,CAACgF,KAAD,EAAQlF,YAAY,CAAC6F,UAArB,CAAhC,EAAkE;AAChE;AACD;;AAED,UAAMzC,IAAgB,GAAG8B,KAAK,CAACY,QAAN,GAAiB,GAAjB,GAAuB,GAAhD;;AAEA,UAAI,MAAKC,YAAL,CAAkB3C,IAAlB,CAAJ,EAA6B;AAC3B,oCAA8BvC,yBAAyB,CAACuC,IAAD,CAAvD,CAAQ4C,GAAR,yBAAQA,GAAR,CAAaC,IAAb,yBAAaA,IAAb,CAAmBpC,MAAnB,yBAAmBA,MAAnB;;AAEA,YAAIqB,KAAK,CAACgB,MAAN,GAAe,CAAf,IAAoB,MAAK9E,KAAL,CAAW6E,IAAX,KAAoB,MAAK7E,KAAL,CAAW4E,GAAX,IAAkB,MAAK5E,KAAL,CAAWyC,MAAX,CAA9D,EAAkF;AAChFqB,UAAAA,KAAK,CAACG,cAAN;AACA,iBAAO,KAAP;AACD;AACD,YAAIH,KAAK,CAACgB,MAAN,GAAe,CAAf,IAAoB,MAAK9E,KAAL,CAAW4E,GAAX,KAAmB,CAA3C,EAA8C;AAC5Cd,UAAAA,KAAK,CAACG,cAAN;AACA,iBAAO,KAAP;AACD;AACF;AACF,KAlTH;;AAoTUvC,IAAAA,eApTV,GAoT4B,UAACoC,KAAD,EAA6C;AACrE,UAAMiB,KAAK,GAAG5F,UAAU,CAAC2E,KAAK,CAACkB,aAAP,CAAV,CAAgCD,KAAhC,GAAwCjB,KAAK,CAACmB,KAA5D;AACA,UAAMC,MAAM,GAAG/F,UAAU,CAAC2E,KAAK,CAACkB,aAAP,CAAV,CAAgCE,MAAhC,GAAyCpB,KAAK,CAACqB,KAA9D;;AAEA,8BAAKrC,OAAL,oCAAcsC,QAAd,CAAuBL,KAAK,IAAI,EAAhC;AACA,8BAAKhC,OAAL,oCAAcqC,QAAd,CAAuBL,KAAK,IAAI,EAAT,IAAeG,MAAM,IAAI,EAAhD;;AAEA,YAAKhF,QAAL,GAAgBI,aAAhB,KAAkC,OAAlC;AACE,OAAC,MAAKC,KAAL,CAAWG,SADd;AAEE,YAAK0D,QAAL,CAAc,EAAE5D,mBAAmB,EAAE,IAAvB,EAA6BC,mBAAmB,EAAE,IAAlD,EAAwDC,SAAS,EAAE,IAAnE,EAAd,CAFF;AAGD,KA9TH;;AAgUUiB,IAAAA,gBAhUV,GAgU6B,YAAM;AAC/B,8BAAKmB,OAAL,oCAAcsC,QAAd,CAAuB,KAAvB;AACA,8BAAKrC,OAAL,oCAAcqC,QAAd,CAAuB,KAAvB;AACA,UAAI,MAAKlF,QAAL,GAAgBI,aAAhB,KAAkC,OAAtC,EAA+C;AAC7C,cAAK8D,QAAL,CAAc,EAAE1D,SAAS,EAAE,KAAb,EAAd;AACA,cAAKL,aAAL,CAAmB,MAAnB;AACD;AACF,KAvUH;;AAyUUgF,IAAAA,kBAzUV,GAyU+B,YAAM;AACjC,8BAAKtC,OAAL,oCAAcuC,eAAd,CAA8B,MAAKtF,KAAnC;AACA,8BAAK8C,OAAL,oCAAcwC,eAAd,CAA8B,MAAKtF,KAAnC;AACD,KA5UH,6DAuCSuF,iBAvCT,GAuCE,6BAA2B,CACzB,KAAKF,kBAAL,GACD,CAzCH,QA2CSG,kBA3CT,GA2CE,4BAA0BC,SAA1B,EAA2D,CACzD,IAAMhC,mBAAmB,GAAG,KAAKvD,QAAL,GAAgBuD,mBAA5C,CACA,IAAI,KAAKzD,KAAT,EAAgB,CACd,IAAIyF,SAAS,CAAChC,mBAAV,IAAiC,CAACA,mBAAtC,EAA2D,CACzD,KAAKzD,KAAL,CAAW6D,mBAAX,CAA+B,OAA/B,EAAwC,KAAKF,sBAA7C,EACD,CACD,IAAI,CAAC8B,SAAS,CAAChC,mBAAX,IAAkCA,mBAAtC,EAA2D,CACzD,KAAKzD,KAAL,CAAW0D,gBAAX,CAA4B,OAA5B,EAAqC,KAAKC,sBAA1C,EAAkE,EAAEC,OAAO,EAAE,KAAX,EAAlE,EACD,CACF,CAED,IAAI6B,SAAS,CAAC5E,QAAV,KAAuB,KAAKD,KAAL,CAAWC,QAAlC,IAA8C,CAAC,KAAKD,KAAL,CAAWC,QAA9D,EAAwE,CACtE,KAAKwE,kBAAL,GACD,CAED,IAAII,SAAS,CAACnF,aAAV,KAA4B,KAAKM,KAAL,CAAWN,aAA3C,EAA0D,CACxD,IAAI,KAAKM,KAAL,CAAWN,aAAX,KAA6B,QAAjC,EAA2C,CACzC,KAAK8D,QAAL,CAAc,EAAE5D,mBAAmB,EAAE,IAAvB,EAA6BC,mBAAmB,EAAE,IAAlD,EAAd,EACD,CAFD,MAEO,IAAI,KAAKG,KAAL,CAAWN,aAAX,KAA6B,OAAjC,EAA0C,CAC/C,KAAK8D,QAAL,CAAc,EAAE5D,mBAAmB,EAAE,KAAvB,EAA8BC,mBAAmB,EAAE,KAAnD,EAAd,EACD,CACF,CACF,CAjEH,QAmESiF,MAnET,GAmEE,kBAAgB,mBACd,oBACE,oBAAC,eAAD,QACG,UAAClE,OAAD,EAAa,CACZ,MAAI,CAACA,OAAL,GAAeA,OAAf,CACA,OAAO,MAAI,CAACb,UAAL,EAAP,CACD,CAJH,CADF,CAQD,CA5EH,EAsHE;AACF;AACA;AACA,KAzHA,OA0HSgF,QA1HT,GA0HE,kBAAgBnC,OAAhB,EAAgD,CAC9C,IAAI,CAACA,OAAD,IAAY,CAAC,KAAKxD,KAAtB,EAA6B,CAC3B,OACD,CAED,KAAKA,KAAL,CAAW4F,UAAX,GAAwBpC,OAAO,CAACqC,UAAhC,CACA,KAAK7F,KAAL,CAAW8F,SAAX,GAAuBlG,gBAAgB,CAAC4D,OAAD,EAAU,KAAKxD,KAAf,CAAvC,CACD,CAjIH,CAmIE;AACF;AACA,KArIA,QAsIS+F,WAtIT,GAsIE,uBAAqB,CACnB,IAAI,CAAC,KAAK/F,KAAV,EAAiB,CACf,OACD,CACD,KAAKA,KAAL,CAAW8F,SAAX,GAAuB,CAAvB,CACD,CA3IH,CA6IE;AACF;AACA,KA/IA,QAgJSE,cAhJT,GAgJE,0BAAwB,CACtB,IAAI,CAAC,KAAKhG,KAAV,EAAiB,CACf,OACD,CACD,KAAKA,KAAL,CAAW8F,SAAX,GAAuB,KAAK9F,KAAL,CAAWiG,YAAX,GAA0B,KAAKjG,KAAL,CAAWkG,YAA5D,CACD,CArJH,CAuJE;AACF;AACA,KAzJA,QA0JSC,YA1JT,GA0JE,wBAAsB,CACpB,IAAI,CAAC,KAAKnG,KAAV,EAAiB,CACf,OACD,CACD,KAAKA,KAAL,CAAW4F,UAAX,GAAwB,CAAxB,CACD,CA/JH,CAiKE;AACF;AACA,KAnKA,QAoKSQ,aApKT,GAoKE,yBAAuB,CACrB,IAAI,CAAC,KAAKpG,KAAV,EAAiB,CACf,OACD,CAED,KAAKA,KAAL,CAAW4F,UAAX,GAAwB,KAAK5F,KAAL,CAAWqG,WAAX,GAAyB,KAAKrG,KAAL,CAAWsG,WAA5D,CACD,CA1KH,QA4KS3B,YA5KT,GA4KE,sBAAoB3C,IAApB,EAAsC,CACpC,IAAI,CAAC,KAAKhC,KAAV,EAAiB,CACf,OAAO,KAAP,CACD,CAED,OAAOgC,IAAI,KAAK,GAAT,GACH,KAAKhC,KAAL,CAAWsG,WAAX,GAAyB,KAAKtG,KAAL,CAAWqG,WADjC,GAEH,KAAKrG,KAAL,CAAWkG,YAAX,GAA0B,KAAKlG,KAAL,CAAWiG,YAFzC,CAGD,CApLH,0BAAqCvH,KAAK,CAAC6H,SAA3C,WACgBC,mBADhB,GACsC,iBADtC,UAEgBC,WAFhB,GAE8B,iBAF9B,UAMgBC,SANhB,GAM4B,EACxBvE,MAAM,EAAExD,SAAS,CAACgI,IADM,EAExBxF,QAAQ,EAAExC,SAAS,CAACiI,SAAV,CAAoB,CAACjI,SAAS,CAACkI,MAAX,EAAmBlI,SAAS,CAACmI,MAA7B,CAApB,CAFc,EAGxB5F,SAAS,EAAEvC,SAAS,CAACiI,SAAV,CAAoB,CAACjI,SAAS,CAACkI,MAAX,EAAmBlI,SAAS,CAACmI,MAA7B,CAApB,CAHa,EAIxB7F,eAAe,EAAEtC,SAAS,CAACoI,KAAV,CAAgB,CAAC,MAAD,EAAS,QAAT,CAAhB,CAJO,EAKxBtD,mBAAmB,EAAE9E,SAAS,CAACgI,IALP,EAMxBxD,mBAAmB,EAAExE,SAAS,CAACqI,IANP,EAN5B,UAegB7G,YAfhB,GAe6C,EACzCgC,MAAM,EAAE,KADiC,EAEzClB,eAAe,EAAE,MAFwB,EAGzCwC,mBAAmB,EAAE,KAHoB,EAIzCpD,aAAa,EAAE,KAJ0B,EAKzC+B,iBAAiB,EAAE/C,SALsB,EAMzCmF,kBAAkB,EAAE,GANqB,EAOzClE,aAAa,EAAE,QAP0B,EAf7C","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { globalObject } from '@skbkontur/global-object';\nimport debounce from 'lodash.debounce';\nimport type { Emotion } from '@emotion/css/create-instance';\n\nimport { isInstanceOf } from '../../lib/isInstanceOf';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { Nullable } from '../../typings/utility-types';\nimport { isIE11 } from '../../lib/client';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { EmotionConsumer } from '../../lib/theming/Emotion';\n\nimport { getStyles, globalClasses } from './ScrollContainer.styles';\nimport { scrollSizeParametersNames } from './ScrollContainer.constants';\nimport {\n convertScrollbarXScrollState,\n convertScrollbarYScrollState,\n getScrollYOffset,\n} from './ScrollContainer.helpers';\nimport { ScrollAxis, ScrollBar, ScrollBarScrollState } from './ScrollBar';\n\nexport type ScrollContainerScrollStateX = 'left' | 'scroll' | 'right';\nexport type ScrollContainerScrollStateY = 'top' | 'scroll' | 'bottom';\nexport type ScrollContainerScrollState = ScrollContainerScrollStateY; // deprecated\nexport type ScrollBehaviour = 'auto' | 'smooth';\n\ntype OffsetCSSPropsY = 'top' | 'right' | 'bottom';\ntype OffsetCSSPropsX = 'right' | 'bottom' | 'left';\n\nexport interface ScrollContainerProps extends CommonProps {\n /**\n * Инвертировать цвет скроллбара\n * @default false\n */\n invert?: boolean;\n maxHeight?: React.CSSProperties['maxHeight'];\n maxWidth?: React.CSSProperties['maxWidth'];\n /**\n * @default false\n */\n preventWindowScroll?: boolean;\n /**\n * Поведение скролла (https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-behavior)\n * @default 'auto'\n */\n scrollBehaviour?: ScrollBehaviour;\n onScrollStateChangeX?: (scrollState: ScrollContainerScrollStateX) => void;\n onScrollStateChangeY?: (scrollState: ScrollContainerScrollStateY) => void;\n onScrollStateChange?: (scrollYState: ScrollContainerScrollState) => void; // deprecated\n onScroll?: (e: React.UIEvent<HTMLDivElement>) => void;\n /**\n * Отключение кастомного скролла\n */\n disabled?: boolean;\n /**\n * Смещение вертикального скроллбара\n */\n offsetY?: Partial<Record<OffsetCSSPropsY, React.CSSProperties[OffsetCSSPropsY]>>;\n /**\n * Смещение горизонтального скроллбара\n */\n offsetX?: Partial<Record<OffsetCSSPropsX, React.CSSProperties[OffsetCSSPropsX]>>;\n /**\n * Скрывать скроллбар при отсутствии активности пользователя\n * @deprecated use showScrollBar\n */\n hideScrollBar?: boolean;\n /**\n * Показывать скроллбар\n */\n showScrollBar?: 'always' | 'scroll' | 'hover' | 'never';\n /**\n * Задержка перед скрытием скроллбара, ms. Работает только если `hideScrollBar = true` или `showScrollBar = 'scroll' | 'hover'`\n */\n hideScrollBarDelay?: number;\n /**\n * Отключить анимации\n */\n disableAnimations?: boolean;\n}\n\nexport const ScrollContainerDataTids = {\n root: 'ScrollContainer__root',\n inner: 'ScrollContainer__inner',\n} as const;\n\ntype DefaultProps = Required<\n Pick<\n ScrollContainerProps,\n | 'invert'\n | 'scrollBehaviour'\n | 'preventWindowScroll'\n | 'hideScrollBar'\n | 'disableAnimations'\n | 'hideScrollBarDelay'\n | 'showScrollBar'\n >\n>;\n\ninterface ScrollContainerState {\n isScrollBarXVisible: boolean;\n isScrollBarYVisible: boolean;\n isHovered: boolean;\n}\n\n@rootNode\nexport class ScrollContainer extends React.Component<ScrollContainerProps, ScrollContainerState> {\n public static __KONTUR_REACT_UI__ = 'ScrollContainer';\n public static displayName = 'ScrollContainer';\n\n public inner: Nullable<HTMLElement>;\n\n public static propTypes = {\n invert: PropTypes.bool,\n maxWidth: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n maxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n scrollBehaviour: PropTypes.oneOf(['auto', 'smooth']),\n preventWindowScroll: PropTypes.bool,\n onScrollStateChange: PropTypes.func,\n };\n\n public static defaultProps: DefaultProps = {\n invert: false,\n scrollBehaviour: 'auto',\n preventWindowScroll: false,\n hideScrollBar: false,\n disableAnimations: isTestEnv,\n hideScrollBarDelay: 500,\n showScrollBar: 'always',\n };\n\n private getProps = createPropsGetter(ScrollContainer.defaultProps);\n\n private scrollX: Nullable<ScrollBar>;\n private scrollY: Nullable<ScrollBar>;\n private setRootNode!: TSetRootNode;\n private initialIsScrollBarVisible = !this.getProps().hideScrollBar && this.getProps().showScrollBar === 'always';\n private emotion!: Emotion;\n\n public state: ScrollContainerState = {\n isScrollBarXVisible: this.initialIsScrollBarVisible,\n isScrollBarYVisible: this.initialIsScrollBarVisible,\n isHovered: false,\n };\n\n public componentDidMount() {\n this.updateInnerElement();\n }\n\n public componentDidUpdate(prevProps: ScrollContainerProps) {\n const preventWindowScroll = this.getProps().preventWindowScroll;\n if (this.inner) {\n if (prevProps.preventWindowScroll && !preventWindowScroll) {\n this.inner.removeEventListener('wheel', this.handleInnerScrollWheel);\n }\n if (!prevProps.preventWindowScroll && preventWindowScroll) {\n this.inner.addEventListener('wheel', this.handleInnerScrollWheel, { passive: false });\n }\n }\n\n if (prevProps.disabled !== this.props.disabled && !this.props.disabled) {\n this.updateInnerElement();\n }\n\n if (prevProps.showScrollBar !== this.props.showScrollBar) {\n if (this.props.showScrollBar === 'always') {\n this.setState({ isScrollBarXVisible: true, isScrollBarYVisible: true });\n } else if (this.props.showScrollBar === 'never') {\n this.setState({ isScrollBarXVisible: false, isScrollBarYVisible: false });\n }\n }\n }\n\n public render() {\n return (\n <EmotionConsumer>\n {(emotion) => {\n this.emotion = emotion;\n return this.renderMain();\n }}\n </EmotionConsumer>\n );\n }\n\n public renderMain = () => {\n const props = this.props;\n\n if (this.props.disabled) {\n return this.props.children;\n }\n\n const innerStyle: React.CSSProperties = {\n scrollBehavior: this.getProps().scrollBehaviour,\n maxHeight: props.maxHeight,\n maxWidth: props.maxWidth,\n };\n\n const scrollbarY = this.renderScrollbar('y');\n const scrollbarX = this.renderScrollbar('x');\n const styles = getStyles(this.emotion);\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div\n data-tid={ScrollContainerDataTids.root}\n className={styles.root()}\n onMouseMove={this.handleMouseMove}\n onMouseLeave={this.handleMouseLeave}\n >\n {scrollbarY}\n {scrollbarX}\n <div\n style={innerStyle}\n ref={this.refInner}\n className={this.emotion.cx(styles.inner(), globalClasses.inner, isIE11 && styles.innerIE11())}\n data-tid={ScrollContainerDataTids.inner}\n onScroll={this.handleNativeScroll}\n >\n {props.children}\n </div>\n </div>\n </CommonWrapper>\n );\n };\n\n /**\n * @public\n * @param {Element} element\n */\n public scrollTo(element: Nullable<HTMLElement>) {\n if (!element || !this.inner) {\n return;\n }\n\n this.inner.scrollLeft = element.offsetLeft;\n this.inner.scrollTop = getScrollYOffset(element, this.inner);\n }\n\n /**\n * @public\n */\n public scrollToTop() {\n if (!this.inner) {\n return;\n }\n this.inner.scrollTop = 0;\n }\n\n /**\n * @public\n */\n public scrollToBottom() {\n if (!this.inner) {\n return;\n }\n this.inner.scrollTop = this.inner.scrollHeight - this.inner.offsetHeight;\n }\n\n /**\n * @public\n */\n public scrollToLeft() {\n if (!this.inner) {\n return;\n }\n this.inner.scrollLeft = 0;\n }\n\n /**\n * @public\n */\n public scrollToRight() {\n if (!this.inner) {\n return;\n }\n\n this.inner.scrollLeft = this.inner.scrollWidth - this.inner.offsetWidth;\n }\n\n public hasScrollBar(axis: ScrollAxis) {\n if (!this.inner) {\n return false;\n }\n\n return axis === 'x'\n ? this.inner.offsetWidth < this.inner.scrollWidth\n : this.inner.offsetHeight < this.inner.scrollHeight;\n }\n\n private renderScrollbar = (axis: ScrollAxis) => {\n const { offsetY, offsetX, invert, disableAnimations } = this.getProps();\n const isAxisX = axis === 'x';\n const refScrollBar = isAxisX ? this.refScrollBarX : this.refScrollBarY;\n const offset = isAxisX ? offsetX : offsetY;\n const isVisible = isAxisX ? this.state.isScrollBarXVisible : this.state.isScrollBarYVisible;\n\n return (\n <ScrollBar\n axis={axis}\n ref={refScrollBar}\n invert={invert}\n onScroll={this.handleScroll}\n offset={offset}\n disableAnimations={disableAnimations}\n isVisible={isVisible}\n />\n );\n };\n\n private handleScrollStateChange = (scrollState: ScrollBarScrollState, axis: ScrollAxis) => {\n if (!this.scrollY || !this.scrollX) {\n return;\n }\n\n if (axis === 'x') {\n const scrollXState = convertScrollbarXScrollState(scrollState);\n\n this.props.onScrollStateChangeX?.(scrollXState);\n return;\n }\n\n const scrollYState = convertScrollbarYScrollState(scrollState);\n\n this.props.onScrollStateChange?.(scrollYState);\n this.props.onScrollStateChangeY?.(scrollYState);\n };\n\n private handleScroll = (\n axis: ScrollAxis,\n scrollState: ScrollBarScrollState,\n prevScrollState: ScrollBarScrollState,\n ) => {\n if (scrollState !== prevScrollState) {\n this.handleScrollStateChange(scrollState, axis);\n }\n const { hideScrollBar, showScrollBar } = this.getProps();\n (hideScrollBar || showScrollBar === 'scroll') && this.showScrollBarOnMouseWheel(axis);\n };\n\n private refScrollBarY = (scrollbar: Nullable<ScrollBar>) => {\n this.scrollY = scrollbar;\n };\n\n private refScrollBarX = (scrollbar: Nullable<ScrollBar>) => {\n this.scrollX = scrollbar;\n };\n\n private refInner = (element: HTMLElement | null) => {\n if (!this.inner && element && this.getProps().preventWindowScroll) {\n element.addEventListener('wheel', this.handleInnerScrollWheel, { passive: false });\n }\n if (this.inner && !element) {\n this.inner.removeEventListener('wheel', this.handleInnerScrollWheel);\n }\n this.inner = element;\n };\n\n private handleNativeScroll = (event: React.UIEvent<HTMLDivElement>) => {\n this.scrollY?.reflow();\n this.scrollX?.reflow();\n\n this.props.onScroll?.(event);\n if (this.getProps().preventWindowScroll) {\n event.preventDefault();\n return;\n }\n LayoutEvents.emit();\n };\n\n private showScrollBarOnMouseWheel = (axis: ScrollAxis) => {\n const isScrollBarVisible = axis === 'x' ? this.state.isScrollBarXVisible : this.state.isScrollBarYVisible;\n if (!isScrollBarVisible) {\n axis === 'x' ? this.setState({ isScrollBarXVisible: true }) : this.setState({ isScrollBarYVisible: true });\n }\n this.hideScrollBar(axis);\n };\n\n private readonly hideScrollBar = debounce((axis: ScrollAxis | 'both') => {\n if (this.state.isHovered) {\n return;\n }\n const isScrollBarXHovered = this.scrollX?.getHover();\n const isScrollBarYHovered = this.scrollY?.getHover();\n if (axis === 'both') {\n !isScrollBarXHovered && !isScrollBarYHovered\n ? this.setState({ isScrollBarXVisible: false, isScrollBarYVisible: false })\n : this.hideScrollBar('both');\n } else if (axis === 'x') {\n !isScrollBarXHovered ? this.setState({ isScrollBarXVisible: false }) : this.hideScrollBar('x');\n } else {\n !isScrollBarYHovered ? this.setState({ isScrollBarYVisible: false }) : this.hideScrollBar('y');\n }\n }, this.getProps().hideScrollBarDelay);\n\n private handleInnerScrollWheel = (event: Event) => {\n if (!this.inner || !isInstanceOf(event, globalObject.WheelEvent)) {\n return;\n }\n\n const axis: ScrollAxis = event.shiftKey ? 'x' : 'y';\n\n if (this.hasScrollBar(axis)) {\n const { pos, size, offset } = scrollSizeParametersNames[axis];\n\n if (event.deltaY > 0 && this.inner[size] <= this.inner[pos] + this.inner[offset]) {\n event.preventDefault();\n return false;\n }\n if (event.deltaY < 0 && this.inner[pos] <= 0) {\n event.preventDefault();\n return false;\n }\n }\n };\n\n private handleMouseMove = (event: React.MouseEvent<HTMLDivElement>) => {\n const right = getDOMRect(event.currentTarget).right - event.pageX;\n const bottom = getDOMRect(event.currentTarget).bottom - event.pageY;\n\n this.scrollY?.setHover(right <= 12);\n this.scrollX?.setHover(right >= 12 && bottom <= 12);\n\n this.getProps().showScrollBar === 'hover' &&\n !this.state.isHovered &&\n this.setState({ isScrollBarXVisible: true, isScrollBarYVisible: true, isHovered: true });\n };\n\n private handleMouseLeave = () => {\n this.scrollY?.setHover(false);\n this.scrollX?.setHover(false);\n if (this.getProps().showScrollBar === 'hover') {\n this.setState({ isHovered: false });\n this.hideScrollBar('both');\n }\n };\n\n private updateInnerElement = () => {\n this.scrollX?.setInnerElement(this.inner);\n this.scrollY?.setInnerElement(this.inner);\n };\n}\n"]}
1
+ {"version":3,"sources":["ScrollContainer.tsx"],"names":["React","PropTypes","globalObject","debounce","isInstanceOf","LayoutEvents","CommonWrapper","isIE11","rootNode","getDOMRect","createPropsGetter","isTestEnv","callChildRef","EmotionConsumer","getStyles","globalClasses","scrollSizeParametersNames","convertScrollbarXScrollState","convertScrollbarYScrollState","getScrollYOffset","ScrollBar","ScrollContainerDataTids","root","inner","ScrollContainer","getProps","defaultProps","initialIsScrollBarVisible","hideScrollBar","showScrollBar","state","isScrollBarXVisible","isScrollBarYVisible","isHovered","renderMain","props","disabled","children","innerStyle","scrollBehavior","scrollBehaviour","maxHeight","maxWidth","scrollbarY","renderScrollbar","scrollbarX","styles","emotion","setRootNode","handleMouseMove","handleMouseLeave","refInner","cx","innerIE11","handleNativeScroll","axis","offsetY","offsetX","invert","disableAnimations","isAxisX","refScrollBar","refScrollBarX","refScrollBarY","offset","isVisible","handleScroll","handleScrollStateChange","scrollState","scrollY","scrollX","scrollXState","onScrollStateChangeX","scrollYState","onScrollStateChange","onScrollStateChangeY","prevScrollState","showScrollBarOnMouseWheel","scrollbar","element","preventWindowScroll","addEventListener","handleInnerScrollWheel","passive","removeEventListener","scrollRef","event","reflow","onScroll","preventDefault","emit","isScrollBarVisible","setState","isScrollBarXHovered","getHover","isScrollBarYHovered","hideScrollBarDelay","WheelEvent","shiftKey","hasScrollBar","pos","size","deltaY","right","currentTarget","pageX","bottom","pageY","setHover","updateInnerElement","setInnerElement","componentDidMount","componentDidUpdate","prevProps","render","scrollTo","scrollLeft","offsetLeft","scrollTop","scrollToTop","scrollToBottom","scrollHeight","offsetHeight","scrollToLeft","scrollToRight","scrollWidth","offsetWidth","Component","__KONTUR_REACT_UI__","displayName","propTypes","bool","oneOfType","string","number","oneOf","func"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { globalObject } from '@skbkontur/global-object';\nimport debounce from 'lodash.debounce';\nimport type { Emotion } from '@emotion/css/create-instance';\n\nimport { isInstanceOf } from '../../lib/isInstanceOf';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { Nullable } from '../../typings/utility-types';\nimport { isIE11 } from '../../lib/client';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { callChildRef } from '../../lib/callChildRef/callChildRef';\nimport { EmotionConsumer } from '../../lib/theming/Emotion';\n\nimport { getStyles, globalClasses } from './ScrollContainer.styles';\nimport { scrollSizeParametersNames } from './ScrollContainer.constants';\nimport {\n convertScrollbarXScrollState,\n convertScrollbarYScrollState,\n getScrollYOffset,\n} from './ScrollContainer.helpers';\nimport { ScrollAxis, ScrollBar, ScrollBarScrollState } from './ScrollBar';\n\nexport type ScrollContainerScrollStateX = 'left' | 'scroll' | 'right';\nexport type ScrollContainerScrollStateY = 'top' | 'scroll' | 'bottom';\nexport type ScrollContainerScrollState = ScrollContainerScrollStateY; // deprecated\nexport type ScrollBehaviour = 'auto' | 'smooth';\n\ntype OffsetCSSPropsY = 'top' | 'right' | 'bottom';\ntype OffsetCSSPropsX = 'right' | 'bottom' | 'left';\n\nexport interface ScrollContainerProps extends CommonProps {\n /**\n * Инвертировать цвет скроллбара\n * @default false\n */\n invert?: boolean;\n maxHeight?: React.CSSProperties['maxHeight'];\n maxWidth?: React.CSSProperties['maxWidth'];\n /**\n * @default false\n */\n preventWindowScroll?: boolean;\n /**\n * Поведение скролла (https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-behavior)\n * @default 'auto'\n */\n scrollBehaviour?: ScrollBehaviour;\n onScrollStateChangeX?: (scrollState: ScrollContainerScrollStateX) => void;\n onScrollStateChangeY?: (scrollState: ScrollContainerScrollStateY) => void;\n onScrollStateChange?: (scrollYState: ScrollContainerScrollState) => void; // deprecated\n onScroll?: (e: React.UIEvent<HTMLDivElement>) => void;\n /**\n * Отключение кастомного скролла\n */\n disabled?: boolean;\n /**\n * Смещение вертикального скроллбара\n */\n offsetY?: Partial<Record<OffsetCSSPropsY, React.CSSProperties[OffsetCSSPropsY]>>;\n /**\n * Смещение горизонтального скроллбара\n */\n offsetX?: Partial<Record<OffsetCSSPropsX, React.CSSProperties[OffsetCSSPropsX]>>;\n /**\n * Скрывать скроллбар при отсутствии активности пользователя\n * @deprecated use showScrollBar\n */\n hideScrollBar?: boolean;\n /**\n * Показывать скроллбар\n */\n showScrollBar?: 'always' | 'scroll' | 'hover' | 'never';\n /**\n * Задержка перед скрытием скроллбара, ms. Работает только если `hideScrollBar = true` или `showScrollBar = 'scroll' | 'hover'`\n */\n hideScrollBarDelay?: number;\n /**\n * Отключить анимации\n */\n disableAnimations?: boolean;\n scrollRef?: React.Ref<HTMLDivElement | null>;\n}\n\nexport const ScrollContainerDataTids = {\n root: 'ScrollContainer__root',\n inner: 'ScrollContainer__inner',\n} as const;\n\ntype DefaultProps = Required<\n Pick<\n ScrollContainerProps,\n | 'invert'\n | 'scrollBehaviour'\n | 'preventWindowScroll'\n | 'hideScrollBar'\n | 'disableAnimations'\n | 'hideScrollBarDelay'\n | 'showScrollBar'\n >\n>;\n\ninterface ScrollContainerState {\n isScrollBarXVisible: boolean;\n isScrollBarYVisible: boolean;\n isHovered: boolean;\n}\n\n@rootNode\nexport class ScrollContainer extends React.Component<ScrollContainerProps, ScrollContainerState> {\n public static __KONTUR_REACT_UI__ = 'ScrollContainer';\n public static displayName = 'ScrollContainer';\n\n public inner: Nullable<HTMLElement>;\n\n public static propTypes = {\n invert: PropTypes.bool,\n maxWidth: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n maxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n scrollBehaviour: PropTypes.oneOf(['auto', 'smooth']),\n preventWindowScroll: PropTypes.bool,\n onScrollStateChange: PropTypes.func,\n };\n\n public static defaultProps: DefaultProps = {\n invert: false,\n scrollBehaviour: 'auto',\n preventWindowScroll: false,\n hideScrollBar: false,\n disableAnimations: isTestEnv,\n hideScrollBarDelay: 500,\n showScrollBar: 'always',\n };\n\n private getProps = createPropsGetter(ScrollContainer.defaultProps);\n\n private scrollX: Nullable<ScrollBar>;\n private scrollY: Nullable<ScrollBar>;\n private setRootNode!: TSetRootNode;\n private initialIsScrollBarVisible = !this.getProps().hideScrollBar && this.getProps().showScrollBar === 'always';\n private emotion!: Emotion;\n\n public state: ScrollContainerState = {\n isScrollBarXVisible: this.initialIsScrollBarVisible,\n isScrollBarYVisible: this.initialIsScrollBarVisible,\n isHovered: false,\n };\n\n public componentDidMount() {\n this.updateInnerElement();\n }\n\n public componentDidUpdate(prevProps: ScrollContainerProps) {\n const preventWindowScroll = this.getProps().preventWindowScroll;\n if (this.inner) {\n if (prevProps.preventWindowScroll && !preventWindowScroll) {\n this.inner.removeEventListener('wheel', this.handleInnerScrollWheel);\n }\n if (!prevProps.preventWindowScroll && preventWindowScroll) {\n this.inner.addEventListener('wheel', this.handleInnerScrollWheel, { passive: false });\n }\n }\n\n if (prevProps.disabled !== this.props.disabled && !this.props.disabled) {\n this.updateInnerElement();\n }\n\n if (prevProps.showScrollBar !== this.props.showScrollBar) {\n if (this.props.showScrollBar === 'always') {\n this.setState({ isScrollBarXVisible: true, isScrollBarYVisible: true });\n } else if (this.props.showScrollBar === 'never') {\n this.setState({ isScrollBarXVisible: false, isScrollBarYVisible: false });\n }\n }\n }\n\n public render() {\n return (\n <EmotionConsumer>\n {(emotion) => {\n this.emotion = emotion;\n return this.renderMain();\n }}\n </EmotionConsumer>\n );\n }\n\n public renderMain = () => {\n const props = this.props;\n\n if (this.props.disabled) {\n return this.props.children;\n }\n\n const innerStyle: React.CSSProperties = {\n scrollBehavior: this.getProps().scrollBehaviour,\n maxHeight: props.maxHeight,\n maxWidth: props.maxWidth,\n };\n\n const scrollbarY = this.renderScrollbar('y');\n const scrollbarX = this.renderScrollbar('x');\n const styles = getStyles(this.emotion);\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div\n data-tid={ScrollContainerDataTids.root}\n className={styles.root()}\n onMouseMove={this.handleMouseMove}\n onMouseLeave={this.handleMouseLeave}\n >\n {scrollbarY}\n {scrollbarX}\n <div\n style={innerStyle}\n ref={this.refInner}\n className={this.emotion.cx(styles.inner(), globalClasses.inner, isIE11 && styles.innerIE11())}\n data-tid={ScrollContainerDataTids.inner}\n onScroll={this.handleNativeScroll}\n >\n {props.children}\n </div>\n </div>\n </CommonWrapper>\n );\n };\n\n /**\n * @public\n * @param {Element} element\n */\n public scrollTo(element: Nullable<HTMLElement>) {\n if (!element || !this.inner) {\n return;\n }\n\n this.inner.scrollLeft = element.offsetLeft;\n this.inner.scrollTop = getScrollYOffset(element, this.inner);\n }\n\n /**\n * @public\n */\n public scrollToTop() {\n if (!this.inner) {\n return;\n }\n this.inner.scrollTop = 0;\n }\n\n /**\n * @public\n */\n public scrollToBottom() {\n if (!this.inner) {\n return;\n }\n this.inner.scrollTop = this.inner.scrollHeight - this.inner.offsetHeight;\n }\n\n /**\n * @public\n */\n public scrollToLeft() {\n if (!this.inner) {\n return;\n }\n this.inner.scrollLeft = 0;\n }\n\n /**\n * @public\n */\n public scrollToRight() {\n if (!this.inner) {\n return;\n }\n\n this.inner.scrollLeft = this.inner.scrollWidth - this.inner.offsetWidth;\n }\n\n public hasScrollBar(axis: ScrollAxis) {\n if (!this.inner) {\n return false;\n }\n\n return axis === 'x'\n ? this.inner.offsetWidth < this.inner.scrollWidth\n : this.inner.offsetHeight < this.inner.scrollHeight;\n }\n\n private renderScrollbar = (axis: ScrollAxis) => {\n const { offsetY, offsetX, invert, disableAnimations } = this.getProps();\n const isAxisX = axis === 'x';\n const refScrollBar = isAxisX ? this.refScrollBarX : this.refScrollBarY;\n const offset = isAxisX ? offsetX : offsetY;\n const isVisible = isAxisX ? this.state.isScrollBarXVisible : this.state.isScrollBarYVisible;\n\n return (\n <ScrollBar\n axis={axis}\n ref={refScrollBar}\n invert={invert}\n onScroll={this.handleScroll}\n offset={offset}\n disableAnimations={disableAnimations}\n isVisible={isVisible}\n />\n );\n };\n\n private handleScrollStateChange = (scrollState: ScrollBarScrollState, axis: ScrollAxis) => {\n if (!this.scrollY || !this.scrollX) {\n return;\n }\n\n if (axis === 'x') {\n const scrollXState = convertScrollbarXScrollState(scrollState);\n\n this.props.onScrollStateChangeX?.(scrollXState);\n return;\n }\n\n const scrollYState = convertScrollbarYScrollState(scrollState);\n\n this.props.onScrollStateChange?.(scrollYState);\n this.props.onScrollStateChangeY?.(scrollYState);\n };\n\n private handleScroll = (\n axis: ScrollAxis,\n scrollState: ScrollBarScrollState,\n prevScrollState: ScrollBarScrollState,\n ) => {\n if (scrollState !== prevScrollState) {\n this.handleScrollStateChange(scrollState, axis);\n }\n const { hideScrollBar, showScrollBar } = this.getProps();\n (hideScrollBar || showScrollBar === 'scroll') && this.showScrollBarOnMouseWheel(axis);\n };\n\n private refScrollBarY = (scrollbar: Nullable<ScrollBar>) => {\n this.scrollY = scrollbar;\n };\n\n private refScrollBarX = (scrollbar: Nullable<ScrollBar>) => {\n this.scrollX = scrollbar;\n };\n\n private refInner = (element: HTMLElement | null) => {\n if (!this.inner && element && this.getProps().preventWindowScroll) {\n element.addEventListener('wheel', this.handleInnerScrollWheel, { passive: false });\n }\n if (this.inner && !element) {\n this.inner.removeEventListener('wheel', this.handleInnerScrollWheel);\n }\n this.inner = element;\n\n if (this.props.scrollRef) {\n callChildRef(this.props.scrollRef, element);\n }\n };\n\n private handleNativeScroll = (event: React.UIEvent<HTMLDivElement>) => {\n this.scrollY?.reflow();\n this.scrollX?.reflow();\n\n this.props.onScroll?.(event);\n if (this.getProps().preventWindowScroll) {\n event.preventDefault();\n return;\n }\n LayoutEvents.emit();\n };\n\n private showScrollBarOnMouseWheel = (axis: ScrollAxis) => {\n const isScrollBarVisible = axis === 'x' ? this.state.isScrollBarXVisible : this.state.isScrollBarYVisible;\n if (!isScrollBarVisible) {\n axis === 'x' ? this.setState({ isScrollBarXVisible: true }) : this.setState({ isScrollBarYVisible: true });\n }\n this.hideScrollBar(axis);\n };\n\n private readonly hideScrollBar = debounce((axis: ScrollAxis | 'both') => {\n if (this.state.isHovered) {\n return;\n }\n const isScrollBarXHovered = this.scrollX?.getHover();\n const isScrollBarYHovered = this.scrollY?.getHover();\n if (axis === 'both') {\n !isScrollBarXHovered && !isScrollBarYHovered\n ? this.setState({ isScrollBarXVisible: false, isScrollBarYVisible: false })\n : this.hideScrollBar('both');\n } else if (axis === 'x') {\n !isScrollBarXHovered ? this.setState({ isScrollBarXVisible: false }) : this.hideScrollBar('x');\n } else {\n !isScrollBarYHovered ? this.setState({ isScrollBarYVisible: false }) : this.hideScrollBar('y');\n }\n }, this.getProps().hideScrollBarDelay);\n\n private handleInnerScrollWheel = (event: Event) => {\n if (!this.inner || !isInstanceOf(event, globalObject.WheelEvent)) {\n return;\n }\n\n const axis: ScrollAxis = event.shiftKey ? 'x' : 'y';\n\n if (this.hasScrollBar(axis)) {\n const { pos, size, offset } = scrollSizeParametersNames[axis];\n\n if (event.deltaY > 0 && this.inner[size] <= this.inner[pos] + this.inner[offset]) {\n event.preventDefault();\n return false;\n }\n if (event.deltaY < 0 && this.inner[pos] <= 0) {\n event.preventDefault();\n return false;\n }\n }\n };\n\n private handleMouseMove = (event: React.MouseEvent<HTMLDivElement>) => {\n const right = getDOMRect(event.currentTarget).right - event.pageX;\n const bottom = getDOMRect(event.currentTarget).bottom - event.pageY;\n\n this.scrollY?.setHover(right <= 12);\n this.scrollX?.setHover(right >= 12 && bottom <= 12);\n\n this.getProps().showScrollBar === 'hover' &&\n !this.state.isHovered &&\n this.setState({ isScrollBarXVisible: true, isScrollBarYVisible: true, isHovered: true });\n };\n\n private handleMouseLeave = () => {\n this.scrollY?.setHover(false);\n this.scrollX?.setHover(false);\n if (this.getProps().showScrollBar === 'hover') {\n this.setState({ isHovered: false });\n this.hideScrollBar('both');\n }\n };\n\n private updateInnerElement = () => {\n this.scrollX?.setInnerElement(this.inner);\n this.scrollY?.setInnerElement(this.inner);\n };\n}\n"]}
@@ -59,6 +59,7 @@ export interface ScrollContainerProps extends CommonProps {
59
59
  * Отключить анимации
60
60
  */
61
61
  disableAnimations?: boolean;
62
+ scrollRef?: React.Ref<HTMLDivElement | null>;
62
63
  }
63
64
  export declare const ScrollContainerDataTids: {
64
65
  readonly root: "ScrollContainer__root";
@@ -31,7 +31,7 @@ import { getRootNode, rootNode } from "../../../lib/rootNode";
31
31
  import { isTheme2022 } from "../../../lib/theming/ThemeHelpers";
32
32
  import { ThemeFactory } from "../../../lib/theming/ThemeFactory";
33
33
  import { getFullReactUIFlagsContext, ReactUIFeatureFlagsContext } from "../../../lib/featureFlagsContext";
34
- import { ThemeConsumer, ThemeProvider } from "../../../lib/theming/ThemeContext";
34
+ import { ThemeContext } from "../../../lib/theming/ThemeContext";
35
35
  import { ArrowDownIcon } from "../ArrowDownIcon";
36
36
  import { Item } from "../Item";
37
37
  import { SelectLocaleHelper } from "../locale";
@@ -117,7 +117,8 @@ export var Select = (_dec = locale('Select', SelectLocaleHelper), responsiveLayo
117
117
  isPlaceholder: isPlaceholder,
118
118
  onClick: _this.toggle,
119
119
  onKeyDown: _this.handleKey,
120
- size: _this.getProps().size
120
+ size: _this.getProps().size,
121
+ disabled: _this.getProps().disabled
121
122
  };
122
123
  return buttonParams;
123
124
  };
@@ -320,11 +321,11 @@ export var Select = (_dec = locale('Select', SelectLocaleHelper), responsiveLayo
320
321
  _this2.featureFlags = getFullReactUIFlagsContext(flags);
321
322
  return /*#__PURE__*/React.createElement(EmotionConsumer, null, function (emotion) {
322
323
  _this2.emotion = emotion;
323
- return /*#__PURE__*/React.createElement(ThemeConsumer, null, function (theme) {
324
+ return /*#__PURE__*/React.createElement(ThemeContext.Consumer, null, function (theme) {
324
325
  _this2.theme = ThemeFactory.create({
325
326
  menuOffsetY: theme.selectMenuOffsetY
326
327
  }, theme);
327
- return /*#__PURE__*/React.createElement(ThemeProvider, {
328
+ return /*#__PURE__*/React.createElement(ThemeContext.Provider, {
328
329
  value: _this2.theme
329
330
  }, _this2.renderMain());
330
331
  });
@@ -356,7 +357,7 @@ export var Select = (_dec = locale('Select', SelectLocaleHelper), responsiveLayo
356
357
  var _this$emotion$cx;
357
358
 
358
359
  var buttonParams = this.getDefaultButtonParams();
359
- var button = /*#__PURE__*/React.createElement(ThemeProvider, {
360
+ var button = /*#__PURE__*/React.createElement(ThemeContext.Provider, {
360
361
  value: getSelectTheme(this.theme, this.props)
361
362
  }, this.getButton(buttonParams));
362
363
  var isMobile = this.isMobileLayout;