@skbkontur/react-ui 0.0.0-2ac4c133dd → 0.0.0-2dd5039746

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 (1102) hide show
  1. package/CHANGELOG.md +309 -0
  2. package/README.md +29 -25
  3. package/cjs/components/Autocomplete/Autocomplete.d.ts +13 -18
  4. package/cjs/components/Autocomplete/Autocomplete.js +47 -10
  5. package/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
  6. package/cjs/components/Autocomplete/Autocomplete.md +15 -1
  7. package/cjs/components/Autocomplete/locale/index.d.ts +4 -0
  8. package/cjs/components/Autocomplete/locale/index.js +11 -0
  9. package/cjs/components/Autocomplete/locale/index.js.map +1 -0
  10. package/cjs/components/Autocomplete/locale/locales/en.d.ts +2 -0
  11. package/cjs/components/Autocomplete/locale/locales/en.js +6 -0
  12. package/cjs/components/Autocomplete/locale/locales/en.js.map +1 -0
  13. package/cjs/components/Autocomplete/locale/locales/ru.d.ts +2 -0
  14. package/cjs/components/Autocomplete/locale/locales/ru.js +6 -0
  15. package/cjs/components/Autocomplete/locale/locales/ru.js.map +1 -0
  16. package/cjs/components/Autocomplete/locale/types.d.ts +5 -0
  17. package/cjs/components/Autocomplete/locale/types.js +1 -0
  18. package/cjs/components/Autocomplete/locale/types.js.map +1 -0
  19. package/cjs/components/Button/Button.d.ts +9 -6
  20. package/cjs/components/Button/Button.js +14 -3
  21. package/cjs/components/Button/Button.js.map +1 -1
  22. package/cjs/components/Button/Button.mixins.js +1 -1
  23. package/cjs/components/Button/Button.mixins.js.map +1 -1
  24. package/cjs/components/Button/Button.styles.js +18 -18
  25. package/cjs/components/Button/Button.styles.js.map +1 -1
  26. package/cjs/components/Center/Center.d.ts +4 -3
  27. package/cjs/components/Center/Center.js +9 -3
  28. package/cjs/components/Center/Center.js.map +1 -1
  29. package/cjs/components/Checkbox/Checkbox.d.ts +5 -1
  30. package/cjs/components/Checkbox/Checkbox.js +12 -5
  31. package/cjs/components/Checkbox/Checkbox.js.map +1 -1
  32. package/cjs/components/Checkbox/Checkbox.md +49 -1
  33. package/cjs/components/Checkbox/Checkbox.styles.d.ts +1 -1
  34. package/cjs/components/Checkbox/Checkbox.styles.js +1 -1
  35. package/cjs/components/Checkbox/Checkbox.styles.js.map +1 -1
  36. package/cjs/components/ComboBox/ComboBox.d.ts +30 -15
  37. package/cjs/components/ComboBox/ComboBox.js +34 -2
  38. package/cjs/components/ComboBox/ComboBox.js.map +1 -1
  39. package/cjs/components/ComboBox/ComboBox.md +84 -1
  40. package/cjs/components/CurrencyInput/CurrencyHelper.js +1 -1
  41. package/cjs/components/CurrencyInput/CurrencyHelper.js.map +1 -1
  42. package/cjs/components/CurrencyInput/CurrencyInput.d.ts +6 -9
  43. package/cjs/components/CurrencyInput/CurrencyInput.js +29 -11
  44. package/cjs/components/CurrencyInput/CurrencyInput.js.map +1 -1
  45. package/cjs/components/CurrencyInput/CurrencyInput.md +13 -0
  46. package/cjs/components/CurrencyInput/CurrencyInputKeyboardActions.d.ts +3 -1
  47. package/cjs/components/CurrencyInput/CurrencyInputKeyboardActions.js +14 -2
  48. package/cjs/components/CurrencyInput/CurrencyInputKeyboardActions.js.map +1 -1
  49. package/cjs/components/CurrencyInput/constants.d.ts +3 -0
  50. package/cjs/components/CurrencyInput/constants.js +6 -2
  51. package/cjs/components/CurrencyInput/constants.js.map +1 -1
  52. package/cjs/components/CurrencyLabel/CurrencyLabel.d.ts +5 -9
  53. package/cjs/components/CurrencyLabel/CurrencyLabel.js +18 -15
  54. package/cjs/components/CurrencyLabel/CurrencyLabel.js.map +1 -1
  55. package/cjs/components/CurrencyLabel/CurrencyLabel.md +6 -0
  56. package/cjs/components/DateInput/DateFragmentsView.d.ts +1 -1
  57. package/cjs/components/DateInput/DateFragmentsView.js +10 -1
  58. package/cjs/components/DateInput/DateFragmentsView.js.map +1 -1
  59. package/cjs/components/DateInput/DateInput.d.ts +9 -12
  60. package/cjs/components/DateInput/DateInput.js +11 -3
  61. package/cjs/components/DateInput/DateInput.js.map +1 -1
  62. package/cjs/components/DateInput/helpers/DateInputKeyboardActions.js +1 -2
  63. package/cjs/components/DateInput/helpers/DateInputKeyboardActions.js.map +1 -1
  64. package/cjs/components/DateInput/helpers/SelectionHelpers.js +2 -2
  65. package/cjs/components/DateInput/helpers/SelectionHelpers.js.map +1 -1
  66. package/cjs/components/DatePicker/DatePicker.d.ts +14 -16
  67. package/cjs/components/DatePicker/DatePicker.js +24 -11
  68. package/cjs/components/DatePicker/DatePicker.js.map +1 -1
  69. package/cjs/components/DatePicker/DatePicker.md +18 -0
  70. package/cjs/components/DatePicker/Picker.js +5 -1
  71. package/cjs/components/DatePicker/Picker.js.map +1 -1
  72. package/cjs/components/Dropdown/Dropdown.d.ts +8 -2
  73. package/cjs/components/Dropdown/Dropdown.js +30 -4
  74. package/cjs/components/Dropdown/Dropdown.js.map +1 -1
  75. package/cjs/components/DropdownMenu/DropdownMenu.d.ts +7 -7
  76. package/cjs/components/DropdownMenu/DropdownMenu.js +9 -3
  77. package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
  78. package/cjs/components/DropdownMenu/DropdownMenu.md +68 -1
  79. package/cjs/components/FileUploader/FileUploader.d.ts +11 -2
  80. package/cjs/components/FileUploader/FileUploader.js +83 -20
  81. package/cjs/components/FileUploader/FileUploader.js.map +1 -1
  82. package/cjs/components/FileUploader/FileUploader.md +13 -1
  83. package/cjs/components/FileUploader/FileUploader.mixins.d.ts +1 -0
  84. package/cjs/components/FileUploader/FileUploader.mixins.js +10 -0
  85. package/cjs/components/FileUploader/FileUploader.mixins.js.map +1 -0
  86. package/cjs/components/FileUploader/FileUploader.styles.d.ts +12 -1
  87. package/cjs/components/FileUploader/FileUploader.styles.js +119 -22
  88. package/cjs/components/FileUploader/FileUploader.styles.js.map +1 -1
  89. package/cjs/components/FxInput/FxInput.d.ts +6 -6
  90. package/cjs/components/FxInput/FxInput.js +16 -11
  91. package/cjs/components/FxInput/FxInput.js.map +1 -1
  92. package/cjs/components/FxInput/FxInput.md +13 -0
  93. package/cjs/components/Gapped/Gapped.d.ts +7 -8
  94. package/cjs/components/Gapped/Gapped.js +12 -6
  95. package/cjs/components/Gapped/Gapped.js.map +1 -1
  96. package/cjs/components/GlobalLoader/GlobalLoader.d.ts +7 -14
  97. package/cjs/components/GlobalLoader/GlobalLoader.js +13 -9
  98. package/cjs/components/GlobalLoader/GlobalLoader.js.map +1 -1
  99. package/cjs/components/GlobalLoader/GlobalLoaderView.d.ts +2 -2
  100. package/cjs/components/GlobalLoader/GlobalLoaderView.js.map +1 -1
  101. package/cjs/components/Group/Group.d.ts +1 -0
  102. package/cjs/components/Group/Group.js +7 -11
  103. package/cjs/components/Group/Group.js.map +1 -1
  104. package/cjs/components/Hint/Hint.d.ts +9 -15
  105. package/cjs/components/Hint/Hint.js +14 -25
  106. package/cjs/components/Hint/Hint.js.map +1 -1
  107. package/cjs/components/Hint/Hint.md +43 -0
  108. package/cjs/components/Hint/Hint.styles.d.ts +0 -1
  109. package/cjs/components/Hint/Hint.styles.js +2 -10
  110. package/cjs/components/Hint/Hint.styles.js.map +1 -1
  111. package/cjs/components/Input/Input.d.ts +9 -4
  112. package/cjs/components/Input/Input.js +26 -9
  113. package/cjs/components/Input/Input.js.map +1 -1
  114. package/cjs/components/Input/Input.md +17 -1
  115. package/cjs/components/Input/Input.styles.d.ts +1 -0
  116. package/cjs/components/Input/Input.styles.js +17 -10
  117. package/cjs/components/Input/Input.styles.js.map +1 -1
  118. package/cjs/components/Kebab/Kebab.d.ts +13 -16
  119. package/cjs/components/Kebab/Kebab.js +20 -6
  120. package/cjs/components/Kebab/Kebab.js.map +1 -1
  121. package/cjs/components/Link/Link.d.ts +5 -7
  122. package/cjs/components/Link/Link.js +12 -5
  123. package/cjs/components/Link/Link.js.map +1 -1
  124. package/cjs/components/Loader/Loader.d.ts +20 -7
  125. package/cjs/components/Loader/Loader.js +25 -5
  126. package/cjs/components/Loader/Loader.js.map +1 -1
  127. package/cjs/components/Loader/Loader.md +30 -23
  128. package/cjs/components/Loader/__stories__/LoaderAndButton.js +6 -0
  129. package/cjs/components/Loader/__stories__/LoaderAndButton.js.map +1 -1
  130. package/cjs/components/MenuHeader/MenuHeader.d.ts +1 -1
  131. package/cjs/components/MenuHeader/MenuHeader.js +1 -1
  132. package/cjs/components/MenuHeader/MenuHeader.js.map +1 -1
  133. package/cjs/components/MenuItem/MenuItem.d.ts +19 -3
  134. package/cjs/components/MenuItem/MenuItem.js +75 -28
  135. package/cjs/components/MenuItem/MenuItem.js.map +1 -1
  136. package/cjs/components/MenuItem/MenuItem.styles.d.ts +5 -0
  137. package/cjs/components/MenuItem/MenuItem.styles.js +34 -14
  138. package/cjs/components/MenuItem/MenuItem.styles.js.map +1 -1
  139. package/cjs/components/MenuSeparator/MenuSeparator.d.ts +1 -1
  140. package/cjs/components/MenuSeparator/MenuSeparator.js +13 -2
  141. package/cjs/components/MenuSeparator/MenuSeparator.js.map +1 -1
  142. package/cjs/components/MenuSeparator/MenuSeparator.styles.d.ts +1 -0
  143. package/cjs/components/MenuSeparator/MenuSeparator.styles.js +8 -1
  144. package/cjs/components/MenuSeparator/MenuSeparator.styles.js.map +1 -1
  145. package/cjs/components/Modal/Modal.d.ts +4 -3
  146. package/cjs/components/Modal/Modal.js +9 -8
  147. package/cjs/components/Modal/Modal.js.map +1 -1
  148. package/cjs/components/Modal/Modal.styles.d.ts +2 -2
  149. package/cjs/components/Modal/Modal.styles.js +3 -3
  150. package/cjs/components/Modal/Modal.styles.js.map +1 -1
  151. package/cjs/components/Modal/ModalBody.js +2 -2
  152. package/cjs/components/Modal/ModalBody.js.map +1 -1
  153. package/cjs/components/Modal/ModalFooter.d.ts +14 -0
  154. package/cjs/components/Modal/ModalFooter.js +23 -2
  155. package/cjs/components/Modal/ModalFooter.js.map +1 -1
  156. package/cjs/components/Modal/ModalHeader.js +1 -1
  157. package/cjs/components/Modal/ModalHeader.js.map +1 -1
  158. package/cjs/components/Paging/Paging.d.ts +7 -10
  159. package/cjs/components/Paging/Paging.js +34 -19
  160. package/cjs/components/Paging/Paging.js.map +1 -1
  161. package/cjs/components/Paging/Paging.md +13 -0
  162. package/cjs/components/Paging/Paging.styles.d.ts +6 -2
  163. package/cjs/components/Paging/Paging.styles.js +41 -15
  164. package/cjs/components/Paging/Paging.styles.js.map +1 -1
  165. package/cjs/components/Paging/PagingDefaultComponent.d.ts +3 -3
  166. package/cjs/components/Paging/PagingDefaultComponent.js.map +1 -1
  167. package/cjs/components/PasswordInput/PasswordInput.d.ts +4 -3
  168. package/cjs/components/PasswordInput/PasswordInput.js +14 -7
  169. package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
  170. package/cjs/components/Radio/Radio.d.ts +4 -3
  171. package/cjs/components/Radio/Radio.js +11 -4
  172. package/cjs/components/Radio/Radio.js.map +1 -1
  173. package/cjs/components/RadioGroup/RadioGroup.d.ts +7 -19
  174. package/cjs/components/RadioGroup/RadioGroup.js +19 -20
  175. package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
  176. package/cjs/components/ResponsiveLayout/ResponsiveLayout.d.ts +6 -5
  177. package/cjs/components/ResponsiveLayout/ResponsiveLayout.js +5 -9
  178. package/cjs/components/ResponsiveLayout/ResponsiveLayout.js.map +1 -1
  179. package/cjs/components/ResponsiveLayout/ResponsiveLayout.md +31 -0
  180. package/cjs/components/ResponsiveLayout/ResponsiveLayoutEvents.js +16 -13
  181. package/cjs/components/ResponsiveLayout/ResponsiveLayoutEvents.js.map +1 -1
  182. package/cjs/components/ResponsiveLayout/decorator.d.ts +1 -1
  183. package/cjs/components/ResponsiveLayout/types.d.ts +9 -1
  184. package/cjs/components/ResponsiveLayout/useResponsiveLayout.d.ts +2 -2
  185. package/cjs/components/ResponsiveLayout/useResponsiveLayout.js +31 -15
  186. package/cjs/components/ResponsiveLayout/useResponsiveLayout.js.map +1 -1
  187. package/cjs/components/ScrollContainer/ScrollBar.d.ts +12 -2
  188. package/cjs/components/ScrollContainer/ScrollBar.js +67 -10
  189. package/cjs/components/ScrollContainer/ScrollBar.js.map +1 -1
  190. package/cjs/components/ScrollContainer/ScrollContainer.constants.js +3 -2
  191. package/cjs/components/ScrollContainer/ScrollContainer.constants.js.map +1 -1
  192. package/cjs/components/ScrollContainer/ScrollContainer.d.ts +29 -8
  193. package/cjs/components/ScrollContainer/ScrollContainer.helpers.js +8 -4
  194. package/cjs/components/ScrollContainer/ScrollContainer.helpers.js.map +1 -1
  195. package/cjs/components/ScrollContainer/ScrollContainer.js +56 -11
  196. package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
  197. package/cjs/components/ScrollContainer/ScrollContainer.md +52 -0
  198. package/cjs/components/ScrollContainer/ScrollContainer.styles.d.ts +9 -0
  199. package/cjs/components/ScrollContainer/ScrollContainer.styles.js +48 -21
  200. package/cjs/components/ScrollContainer/ScrollContainer.styles.js.map +1 -1
  201. package/cjs/components/Select/Item.d.ts +4 -2
  202. package/cjs/components/Select/Item.js +3 -0
  203. package/cjs/components/Select/Item.js.map +1 -1
  204. package/cjs/components/Select/Select.d.ts +13 -38
  205. package/cjs/components/Select/Select.js +21 -22
  206. package/cjs/components/Select/Select.js.map +1 -1
  207. package/cjs/components/Select/Select.md +14 -0
  208. package/cjs/components/Select/Select.styles.js +4 -4
  209. package/cjs/components/Select/Select.styles.js.map +1 -1
  210. package/cjs/components/Select/selectTheme.js +2 -0
  211. package/cjs/components/Select/selectTheme.js.map +1 -1
  212. package/cjs/components/SidePage/SidePage.d.ts +9 -6
  213. package/cjs/components/SidePage/SidePage.js +12 -1
  214. package/cjs/components/SidePage/SidePage.js.map +1 -1
  215. package/cjs/components/SidePage/SidePageFooter.d.ts +15 -5
  216. package/cjs/components/SidePage/SidePageFooter.js +20 -1
  217. package/cjs/components/SidePage/SidePageFooter.js.map +1 -1
  218. package/cjs/components/SidePage/SidePageHeader.d.ts +1 -1
  219. package/cjs/components/SidePage/SidePageHeader.js +1 -1
  220. package/cjs/components/SidePage/SidePageHeader.js.map +1 -1
  221. package/cjs/components/Spinner/Spinner.d.ts +15 -4
  222. package/cjs/components/Spinner/Spinner.js +20 -5
  223. package/cjs/components/Spinner/Spinner.js.map +1 -1
  224. package/cjs/components/Spinner/Spinner.styles.d.ts +1 -1
  225. package/cjs/components/Spinner/Spinner.styles.js +7 -7
  226. package/cjs/components/Spinner/Spinner.styles.js.map +1 -1
  227. package/cjs/components/Sticky/Sticky.d.ts +7 -6
  228. package/cjs/components/Sticky/Sticky.js +10 -3
  229. package/cjs/components/Sticky/Sticky.js.map +1 -1
  230. package/cjs/components/Switcher/Switcher.d.ts +12 -3
  231. package/cjs/components/Switcher/Switcher.js +69 -35
  232. package/cjs/components/Switcher/Switcher.js.map +1 -1
  233. package/cjs/components/Switcher/Switcher.md +97 -0
  234. package/cjs/components/Switcher/helpers.d.ts +1 -0
  235. package/cjs/components/Switcher/helpers.js +1 -0
  236. package/cjs/components/Switcher/helpers.js.map +1 -0
  237. package/cjs/components/Tabs/Indicator.d.ts +1 -1
  238. package/cjs/components/Tabs/Indicator.js +1 -1
  239. package/cjs/components/Tabs/Indicator.js.map +1 -1
  240. package/cjs/components/Tabs/Tab.d.ts +9 -13
  241. package/cjs/components/Tabs/Tab.js +14 -19
  242. package/cjs/components/Tabs/Tab.js.map +1 -1
  243. package/cjs/components/Tabs/Tabs.d.ts +9 -13
  244. package/cjs/components/Tabs/Tabs.js +17 -10
  245. package/cjs/components/Tabs/Tabs.js.map +1 -1
  246. package/cjs/components/Textarea/Textarea.d.ts +9 -10
  247. package/cjs/components/Textarea/Textarea.js +14 -7
  248. package/cjs/components/Textarea/Textarea.js.map +1 -1
  249. package/cjs/components/Textarea/Textarea.md +19 -0
  250. package/cjs/components/Textarea/TextareaCounter.d.ts +2 -2
  251. package/cjs/components/Textarea/TextareaCounter.js +5 -1
  252. package/cjs/components/Textarea/TextareaCounter.js.map +1 -1
  253. package/cjs/components/Toast/Toast.d.ts +6 -3
  254. package/cjs/components/Toast/Toast.js +16 -9
  255. package/cjs/components/Toast/Toast.js.map +1 -1
  256. package/cjs/components/Toast/Toast.md +129 -0
  257. package/cjs/components/Toast/ToastStatic.d.ts +3 -2
  258. package/cjs/components/Toast/ToastStatic.js +5 -5
  259. package/cjs/components/Toast/ToastStatic.js.map +1 -1
  260. package/cjs/components/Toggle/Toggle.d.ts +10 -7
  261. package/cjs/components/Toggle/Toggle.js +16 -4
  262. package/cjs/components/Toggle/Toggle.js.map +1 -1
  263. package/cjs/components/Token/Token.d.ts +6 -1
  264. package/cjs/components/Token/Token.js +13 -2
  265. package/cjs/components/Token/Token.js.map +1 -1
  266. package/cjs/components/Token/Token.styles.js +2 -1
  267. package/cjs/components/Token/Token.styles.js.map +1 -1
  268. package/cjs/components/TokenInput/TokenInput.d.ts +27 -17
  269. package/cjs/components/TokenInput/TokenInput.js +141 -68
  270. package/cjs/components/TokenInput/TokenInput.js.map +1 -1
  271. package/cjs/components/TokenInput/TokenInput.md +26 -0
  272. package/cjs/components/TokenInput/TokenInput.styles.js +2 -1
  273. package/cjs/components/TokenInput/TokenInput.styles.js.map +1 -1
  274. package/cjs/components/TokenInput/TokenInputMenu.d.ts +2 -1
  275. package/cjs/components/TokenInput/TokenInputMenu.js +1 -1
  276. package/cjs/components/TokenInput/TokenInputMenu.js.map +1 -1
  277. package/cjs/components/Tooltip/Tooltip.d.ts +14 -21
  278. package/cjs/components/Tooltip/Tooltip.js +26 -38
  279. package/cjs/components/Tooltip/Tooltip.js.map +1 -1
  280. package/cjs/components/TooltipMenu/TooltipMenu.d.ts +8 -7
  281. package/cjs/components/TooltipMenu/TooltipMenu.js +11 -5
  282. package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
  283. package/cjs/components/TooltipMenu/TooltipMenu.md +28 -1
  284. package/cjs/hooks/useEffectWithoutInitCall.d.ts +2 -2
  285. package/cjs/hooks/useEffectWithoutInitCall.js +2 -2
  286. package/cjs/hooks/useEffectWithoutInitCall.js.map +1 -1
  287. package/cjs/hooks/useMemoObject.d.ts +2 -1
  288. package/cjs/hooks/useMemoObject.js +2 -0
  289. package/cjs/hooks/useMemoObject.js.map +1 -1
  290. package/cjs/index.d.ts +2 -0
  291. package/cjs/index.js +54 -54
  292. package/cjs/index.js.map +1 -1
  293. package/cjs/internal/BGRuler.d.ts +13 -15
  294. package/cjs/internal/BGRuler.js +16 -8
  295. package/cjs/internal/BGRuler.js.map +1 -1
  296. package/cjs/internal/Calendar/Calendar.d.ts +4 -13
  297. package/cjs/internal/Calendar/Calendar.js +10 -5
  298. package/cjs/internal/Calendar/Calendar.js.map +1 -1
  299. package/cjs/internal/Calendar/DayCellView.styles.js +1 -1
  300. package/cjs/internal/Calendar/DayCellView.styles.js.map +1 -1
  301. package/cjs/internal/Calendar/Month.js +16 -11
  302. package/cjs/internal/Calendar/Month.js.map +1 -1
  303. package/cjs/internal/Calendar/MonthViewModel.d.ts +1 -1
  304. package/cjs/internal/Calendar/config.d.ts +1 -8
  305. package/cjs/internal/CommonWrapper/CommonWrapper.d.ts +1 -1
  306. package/cjs/internal/CommonWrapper/CommonWrapper.js +5 -4
  307. package/cjs/internal/CommonWrapper/CommonWrapper.js.map +1 -1
  308. package/cjs/internal/ComponentCombinator.d.ts +6 -8
  309. package/cjs/internal/ComponentCombinator.js +6 -2
  310. package/cjs/internal/ComponentCombinator.js.map +1 -1
  311. package/cjs/internal/ComponentTable.d.ts +7 -8
  312. package/cjs/internal/ComponentTable.js +14 -3
  313. package/cjs/internal/ComponentTable.js.map +1 -1
  314. package/cjs/internal/CustomComboBox/ComboBoxMenu.d.ts +7 -6
  315. package/cjs/internal/CustomComboBox/ComboBoxMenu.js +16 -9
  316. package/cjs/internal/CustomComboBox/ComboBoxMenu.js.map +1 -1
  317. package/cjs/internal/CustomComboBox/ComboBoxView.d.ts +9 -14
  318. package/cjs/internal/CustomComboBox/ComboBoxView.js +26 -12
  319. package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  320. package/cjs/internal/CustomComboBox/CustomComboBox.d.ts +5 -2
  321. package/cjs/internal/CustomComboBox/CustomComboBox.js +7 -1
  322. package/cjs/internal/CustomComboBox/CustomComboBox.js.map +1 -1
  323. package/cjs/internal/CustomComboBox/CustomComboBoxReducer.js +8 -6
  324. package/cjs/internal/CustomComboBox/CustomComboBoxReducer.js.map +1 -1
  325. package/cjs/internal/DataTids/DataTids.d.ts +5 -5
  326. package/cjs/internal/DataTids/DataTids.js +4 -0
  327. package/cjs/internal/DataTids/DataTids.js.map +1 -1
  328. package/cjs/internal/DateSelect/DateSelect.d.ts +4 -6
  329. package/cjs/internal/DateSelect/DateSelect.js +16 -10
  330. package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
  331. package/cjs/internal/DropdownContainer/DropdownContainer.d.ts +8 -7
  332. package/cjs/internal/DropdownContainer/DropdownContainer.js +19 -11
  333. package/cjs/internal/DropdownContainer/DropdownContainer.js.map +1 -1
  334. package/cjs/internal/DropdownContainer/getManualPosition.d.ts +19 -0
  335. package/cjs/internal/DropdownContainer/getManualPosition.js +41 -0
  336. package/cjs/internal/DropdownContainer/getManualPosition.js.map +1 -0
  337. package/cjs/internal/FileUploaderControl/FileUploaderControlContext.d.ts +2 -0
  338. package/cjs/internal/FileUploaderControl/FileUploaderControlContext.js +2 -0
  339. package/cjs/internal/FileUploaderControl/FileUploaderControlContext.js.map +1 -1
  340. package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.js +4 -1
  341. package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.js.map +1 -1
  342. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +3 -0
  343. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js +48 -11
  344. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.js.map +1 -1
  345. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles.d.ts +7 -0
  346. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles.js +49 -7
  347. package/cjs/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles.js.map +1 -1
  348. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +2 -0
  349. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js +15 -3
  350. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.js.map +1 -1
  351. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles.d.ts +3 -0
  352. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles.js +19 -1
  353. package/cjs/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles.js.map +1 -1
  354. package/cjs/internal/FileUploaderControl/hooks/useFileUploaderSize.d.ts +2 -0
  355. package/cjs/internal/FileUploaderControl/hooks/useFileUploaderSize.js +18 -0
  356. package/cjs/internal/FileUploaderControl/hooks/useFileUploaderSize.js.map +1 -0
  357. package/cjs/internal/FileUploaderControl/withFileUploaderControlProvider.d.ts +1 -1
  358. package/cjs/internal/FileUploaderControl/withFileUploaderControlProvider.js.map +1 -1
  359. package/cjs/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.js +2 -1
  360. package/cjs/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.js.map +1 -1
  361. package/cjs/internal/InputLikeText/InputLikeText.d.ts +5 -3
  362. package/cjs/internal/InputLikeText/InputLikeText.js +23 -8
  363. package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
  364. package/cjs/internal/InternalMenu/InternalMenu.d.ts +4 -9
  365. package/cjs/internal/InternalMenu/InternalMenu.js +60 -22
  366. package/cjs/internal/InternalMenu/InternalMenu.js.map +1 -1
  367. package/cjs/internal/InternalMenu/InternalMenu.styles.d.ts +5 -4
  368. package/cjs/internal/InternalMenu/InternalMenu.styles.js +15 -18
  369. package/cjs/internal/InternalMenu/InternalMenu.styles.js.map +1 -1
  370. package/cjs/internal/MaskedInput/MaskedInput.d.ts +5 -2
  371. package/cjs/internal/MaskedInput/MaskedInput.js +20 -7
  372. package/cjs/internal/MaskedInput/MaskedInput.js.map +1 -1
  373. package/cjs/internal/Menu/Menu.d.ts +5 -7
  374. package/cjs/internal/Menu/Menu.js +32 -10
  375. package/cjs/internal/Menu/Menu.js.map +1 -1
  376. package/cjs/internal/Menu/Menu.styles.d.ts +2 -0
  377. package/cjs/internal/Menu/Menu.styles.js +21 -7
  378. package/cjs/internal/Menu/Menu.styles.js.map +1 -1
  379. package/cjs/internal/MenuMessage/MenuMessage.d.ts +10 -0
  380. package/cjs/internal/MenuMessage/MenuMessage.js +43 -0
  381. package/cjs/internal/MenuMessage/MenuMessage.js.map +1 -0
  382. package/cjs/internal/MenuMessage/MenuMessage.styles.d.ts +5 -0
  383. package/cjs/internal/MenuMessage/MenuMessage.styles.js +33 -0
  384. package/cjs/internal/MenuMessage/MenuMessage.styles.js.map +1 -0
  385. package/cjs/internal/MenuMessage/index.d.ts +1 -0
  386. package/cjs/internal/MenuMessage/index.js +1 -0
  387. package/cjs/internal/MenuMessage/index.js.map +1 -0
  388. package/cjs/internal/MobilePopup/MobilePopup.d.ts +13 -12
  389. package/cjs/internal/MobilePopup/MobilePopup.js +6 -60
  390. package/cjs/internal/MobilePopup/MobilePopup.js.map +1 -1
  391. package/cjs/internal/MobilePopup/MobilePopup.styles.d.ts +3 -3
  392. package/cjs/internal/MobilePopup/MobilePopup.styles.js +22 -24
  393. package/cjs/internal/MobilePopup/MobilePopup.styles.js.map +1 -1
  394. package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.d.ts +3 -4
  395. package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js +26 -37
  396. package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.js.map +1 -1
  397. package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.d.ts +2 -4
  398. package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.js +8 -32
  399. package/cjs/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.js.map +1 -1
  400. package/cjs/internal/PerformanceMetrics/PerformanceMetrics.js.map +1 -1
  401. package/cjs/internal/Popup/Popup.d.ts +18 -18
  402. package/cjs/internal/Popup/Popup.js +60 -22
  403. package/cjs/internal/Popup/Popup.js.map +1 -1
  404. package/cjs/internal/Popup/PopupHelper.d.ts +1 -1
  405. package/cjs/internal/Popup/PopupHelper.js.map +1 -1
  406. package/cjs/internal/Popup/PopupPin.d.ts +1 -1
  407. package/cjs/internal/Popup/PopupPin.js.map +1 -1
  408. package/cjs/internal/PopupMenu/PopupMenu.d.ts +8 -11
  409. package/cjs/internal/PopupMenu/PopupMenu.js +8 -1
  410. package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
  411. package/cjs/internal/RenderLayer/RenderLayer.d.ts +5 -4
  412. package/cjs/internal/RenderLayer/RenderLayer.js +12 -2
  413. package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
  414. package/cjs/internal/ThemePlayground/AnotherInputsPlayground.d.ts +11 -6
  415. package/cjs/internal/ThemePlayground/AnotherInputsPlayground.js +7 -0
  416. package/cjs/internal/ThemePlayground/AnotherInputsPlayground.js.map +1 -1
  417. package/cjs/internal/ThemePlayground/CurrencyInputPlayground.d.ts +7 -6
  418. package/cjs/internal/ThemePlayground/CurrencyInputPlayground.js +2 -3
  419. package/cjs/internal/ThemePlayground/CurrencyInputPlayground.js.map +1 -1
  420. package/cjs/internal/ThemePlayground/FxInputPlayground.d.ts +6 -4
  421. package/cjs/internal/ThemePlayground/FxInputPlayground.js +5 -5
  422. package/cjs/internal/ThemePlayground/FxInputPlayground.js.map +1 -1
  423. package/cjs/internal/ThemePlayground/HintPlayground.d.ts +1 -1
  424. package/cjs/internal/ThemePlayground/HintPlayground.js.map +1 -1
  425. package/cjs/internal/ThemePlayground/PagingPlayground.d.ts +6 -6
  426. package/cjs/internal/ThemePlayground/PagingPlayground.js +5 -2
  427. package/cjs/internal/ThemePlayground/PagingPlayground.js.map +1 -1
  428. package/cjs/internal/ThemePlayground/Playground.d.ts +1 -1
  429. package/cjs/internal/ThemePlayground/Playground.js.map +1 -1
  430. package/cjs/internal/ThemePlayground/SelectPlayground.d.ts +9 -6
  431. package/cjs/internal/ThemePlayground/SelectPlayground.js +6 -0
  432. package/cjs/internal/ThemePlayground/SelectPlayground.js.map +1 -1
  433. package/cjs/internal/ThemePlayground/SizesGroup.d.ts +2 -2
  434. package/cjs/internal/ThemePlayground/SizesGroup.js +2 -0
  435. package/cjs/internal/ThemePlayground/SizesGroup.js.map +1 -1
  436. package/cjs/internal/ThemePlayground/SwitcherPlayground.d.ts +9 -8
  437. package/cjs/internal/ThemePlayground/SwitcherPlayground.js +6 -1
  438. package/cjs/internal/ThemePlayground/SwitcherPlayground.js.map +1 -1
  439. package/cjs/internal/ThemePlayground/ThemeContextPlayground.js +14 -4
  440. package/cjs/internal/ThemePlayground/ThemeContextPlayground.js.map +1 -1
  441. package/cjs/internal/ThemePlayground/ThemeEditor.d.ts +1 -4
  442. package/cjs/internal/ThemePlayground/ThemeEditor.js.map +1 -1
  443. package/cjs/internal/ThemePlayground/TogglePlayground.d.ts +2 -7
  444. package/cjs/internal/ThemePlayground/TogglePlayground.js +4 -10
  445. package/cjs/internal/ThemePlayground/TogglePlayground.js.map +1 -1
  446. package/cjs/internal/ThemePlayground/TokenInputPlayground.d.ts +6 -4
  447. package/cjs/internal/ThemePlayground/TokenInputPlayground.js +3 -0
  448. package/cjs/internal/ThemePlayground/TokenInputPlayground.js.map +1 -1
  449. package/cjs/internal/ThemePlayground/VariableValue.d.ts +6 -8
  450. package/cjs/internal/ThemePlayground/VariableValue.js +6 -1
  451. package/cjs/internal/ThemePlayground/VariableValue.js.map +1 -1
  452. package/cjs/internal/ThemePlayground/helpers.d.ts +1 -1
  453. package/cjs/internal/ThemePlayground/helpers.js +4 -2
  454. package/cjs/internal/ThemePlayground/helpers.js.map +1 -1
  455. package/cjs/internal/ThemeShowcase/ThemeShowcase.js.map +1 -1
  456. package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  457. package/cjs/internal/ZIndex/ZIndex.d.ts +22 -12
  458. package/cjs/internal/ZIndex/ZIndex.js +54 -13
  459. package/cjs/internal/ZIndex/ZIndex.js.map +1 -1
  460. package/cjs/internal/icons/16px/index.js +2 -1
  461. package/cjs/internal/icons/16px/index.js.map +1 -1
  462. package/cjs/internal/icons/20px/svg.js +2 -1
  463. package/cjs/internal/icons/20px/svg.js.map +1 -1
  464. package/cjs/internal/icons/CloudIcon.js +1 -1
  465. package/cjs/internal/icons/CloudIcon.js.map +1 -1
  466. package/cjs/internal/icons/CrossIcon.js +2 -1
  467. package/cjs/internal/icons/CrossIcon.js.map +1 -1
  468. package/cjs/internal/icons/SpinnerIcon.js +3 -1
  469. package/cjs/internal/icons/SpinnerIcon.js.map +1 -1
  470. package/cjs/internal/themes/DarkTheme.d.ts +1 -0
  471. package/cjs/internal/themes/DarkTheme.js +2 -1
  472. package/cjs/internal/themes/DarkTheme.js.map +1 -1
  473. package/cjs/internal/themes/DefaultTheme.d.ts +43 -3
  474. package/cjs/internal/themes/DefaultTheme.js +106 -10
  475. package/cjs/internal/themes/DefaultTheme.js.map +1 -1
  476. package/cjs/internal/themes/Theme2022.d.ts +1 -0
  477. package/cjs/internal/themes/Theme2022.js +1 -0
  478. package/cjs/internal/themes/Theme2022.js.map +1 -1
  479. package/cjs/lib/ConditionalHandler.js.map +1 -1
  480. package/cjs/lib/InstanceWithAnchorElement.d.ts +1 -1
  481. package/cjs/lib/InstanceWithAnchorElement.js.map +1 -1
  482. package/cjs/lib/ModalStack.js +2 -2
  483. package/cjs/lib/ModalStack.js.map +1 -1
  484. package/cjs/lib/SSRSafe.d.ts +3 -1
  485. package/cjs/lib/SSRSafe.js +15 -1
  486. package/cjs/lib/SSRSafe.js.map +1 -1
  487. package/cjs/lib/Upgrades.js +5 -0
  488. package/cjs/lib/Upgrades.js.map +1 -1
  489. package/cjs/lib/animation/index.js +1 -0
  490. package/cjs/lib/animation/index.js.map +1 -1
  491. package/cjs/lib/callChildRef/callChildRef.js +1 -1
  492. package/cjs/lib/callChildRef/callChildRef.js.map +1 -1
  493. package/cjs/lib/createPropsGetter.d.ts +2 -1
  494. package/cjs/lib/createPropsGetter.js +3 -0
  495. package/cjs/lib/createPropsGetter.js.map +1 -1
  496. package/cjs/lib/currentEnvironment.js +33 -12
  497. package/cjs/lib/currentEnvironment.js.map +1 -1
  498. package/cjs/lib/date/InternalDateCalculator.d.ts +1 -1
  499. package/cjs/lib/date/InternalDateCalculator.js +1 -1
  500. package/cjs/lib/date/InternalDateCalculator.js.map +1 -1
  501. package/cjs/lib/date/InternalDateValidator.d.ts +1 -1
  502. package/cjs/lib/date/InternalDateValidator.js +9 -2
  503. package/cjs/lib/date/InternalDateValidator.js.map +1 -1
  504. package/cjs/lib/extractKeyboardAction.d.ts +1 -1
  505. package/cjs/lib/extractKeyboardAction.js.map +1 -1
  506. package/cjs/lib/filterProps.js +0 -1
  507. package/cjs/lib/filterProps.js.map +1 -1
  508. package/cjs/lib/listenFocusOutside.d.ts +1 -1
  509. package/cjs/lib/listenFocusOutside.js.map +1 -1
  510. package/cjs/lib/locale/LOCALECONTEXT.md +1 -0
  511. package/cjs/lib/locale/useLocaleForControl.d.ts +1 -1
  512. package/cjs/lib/locale/useLocaleForControl.js.map +1 -1
  513. package/cjs/lib/memo.d.ts +3 -1
  514. package/cjs/lib/memo.js +3 -3
  515. package/cjs/lib/memo.js.map +1 -1
  516. package/cjs/lib/net/fetch.js +2 -2
  517. package/cjs/lib/net/fetch.js.map +1 -1
  518. package/cjs/lib/reactGetTextContent.js +0 -1
  519. package/cjs/lib/reactGetTextContent.js.map +1 -1
  520. package/cjs/lib/rootNode/getRootNode.d.ts +3 -3
  521. package/cjs/lib/rootNode/getRootNode.js +40 -15
  522. package/cjs/lib/rootNode/getRootNode.js.map +1 -1
  523. package/cjs/lib/rootNode/rootNodeDecorator.d.ts +9 -9
  524. package/cjs/lib/rootNode/rootNodeDecorator.js.map +1 -1
  525. package/cjs/lib/styles/ColorFactory.js +2 -2
  526. package/cjs/lib/styles/ColorFactory.js.map +1 -1
  527. package/cjs/lib/styles/ColorFunctions.js.map +1 -1
  528. package/cjs/lib/theming/AnimationKeyframes.d.ts +3 -5
  529. package/cjs/lib/theming/AnimationKeyframes.js +8 -22
  530. package/cjs/lib/theming/AnimationKeyframes.js.map +1 -1
  531. package/cjs/lib/theming/Emotion.js +1 -0
  532. package/cjs/lib/theming/Emotion.js.map +1 -1
  533. package/cjs/lib/theming/ThemeContext.md +26 -18
  534. package/cjs/lib/theming/ThemeFactory.d.ts +1 -1
  535. package/cjs/lib/theming/ThemeFactory.js +10 -1
  536. package/cjs/lib/theming/ThemeFactory.js.map +1 -1
  537. package/cjs/lib/theming/ThemeHelpers.d.ts +13 -4
  538. package/cjs/lib/theming/ThemeHelpers.js +25 -6
  539. package/cjs/lib/theming/ThemeHelpers.js.map +1 -1
  540. package/cjs/lib/theming/themes/DarkTheme.js +1 -1
  541. package/cjs/lib/theming/themes/DarkTheme.js.map +1 -1
  542. package/cjs/lib/theming/themes/Theme2022Dark.d.ts +1 -1
  543. package/cjs/lib/theming/themes/Theme2022Dark.js +4 -3
  544. package/cjs/lib/theming/themes/Theme2022Dark.js.map +1 -1
  545. package/cjs/lib/utils.d.ts +6 -5
  546. package/cjs/lib/utils.js +8 -7
  547. package/cjs/lib/utils.js.map +1 -1
  548. package/cjs/lib/withClassWrapper.js +1 -4
  549. package/cjs/lib/withClassWrapper.js.map +1 -1
  550. package/cjs/typings/event-types.d.ts +2 -2
  551. package/cjs/typings/{html-props.d.ts → html.d.ts} +2 -2
  552. package/components/Autocomplete/Autocomplete/Autocomplete.js +53 -17
  553. package/components/Autocomplete/Autocomplete/Autocomplete.js.map +1 -1
  554. package/components/Autocomplete/Autocomplete.d.ts +13 -18
  555. package/components/Autocomplete/Autocomplete.md +15 -1
  556. package/components/Autocomplete/locale/index/index.js +8 -0
  557. package/components/Autocomplete/locale/index/index.js.map +1 -0
  558. package/components/Autocomplete/locale/index/package.json +6 -0
  559. package/components/Autocomplete/locale/index.d.ts +4 -0
  560. package/components/Autocomplete/locale/locales/en/en.js +5 -0
  561. package/components/Autocomplete/locale/locales/en/en.js.map +1 -0
  562. package/components/Autocomplete/locale/locales/en/package.json +6 -0
  563. package/components/Autocomplete/locale/locales/en.d.ts +2 -0
  564. package/components/Autocomplete/locale/locales/ru/package.json +6 -0
  565. package/components/Autocomplete/locale/locales/ru/ru.js +5 -0
  566. package/components/Autocomplete/locale/locales/ru/ru.js.map +1 -0
  567. package/components/Autocomplete/locale/locales/ru.d.ts +2 -0
  568. package/components/Autocomplete/locale/package.json +6 -0
  569. package/components/Autocomplete/locale/types/package.json +6 -0
  570. package/components/Autocomplete/locale/types/types.js +1 -0
  571. package/components/Autocomplete/locale/types/types.js.map +1 -0
  572. package/components/Autocomplete/locale/types.d.ts +5 -0
  573. package/components/Button/Button/Button.js +16 -7
  574. package/components/Button/Button/Button.js.map +1 -1
  575. package/components/Button/Button.d.ts +9 -6
  576. package/components/Button/Button.mixins/Button.mixins.js +1 -1
  577. package/components/Button/Button.mixins/Button.mixins.js.map +1 -1
  578. package/components/Button/Button.styles/Button.styles.js +18 -18
  579. package/components/Button/Button.styles/Button.styles.js.map +1 -1
  580. package/components/Center/Center/Center.js +7 -5
  581. package/components/Center/Center/Center.js.map +1 -1
  582. package/components/Center/Center.d.ts +4 -3
  583. package/components/Checkbox/Checkbox/Checkbox.js +10 -4
  584. package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
  585. package/components/Checkbox/Checkbox.d.ts +5 -1
  586. package/components/Checkbox/Checkbox.md +49 -1
  587. package/components/Checkbox/Checkbox.styles/Checkbox.styles.js +1 -1
  588. package/components/Checkbox/Checkbox.styles/Checkbox.styles.js.map +1 -1
  589. package/components/Checkbox/Checkbox.styles.d.ts +1 -1
  590. package/components/ComboBox/ComboBox/ComboBox.js +3 -1
  591. package/components/ComboBox/ComboBox/ComboBox.js.map +1 -1
  592. package/components/ComboBox/ComboBox.d.ts +30 -15
  593. package/components/ComboBox/ComboBox.md +84 -1
  594. package/components/CurrencyInput/CurrencyHelper/CurrencyHelper.js +3 -3
  595. package/components/CurrencyInput/CurrencyHelper/CurrencyHelper.js.map +1 -1
  596. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js +43 -22
  597. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js.map +1 -1
  598. package/components/CurrencyInput/CurrencyInput.d.ts +6 -9
  599. package/components/CurrencyInput/CurrencyInput.md +13 -0
  600. package/components/CurrencyInput/CurrencyInputKeyboardActions/CurrencyInputKeyboardActions.js +4 -2
  601. package/components/CurrencyInput/CurrencyInputKeyboardActions/CurrencyInputKeyboardActions.js.map +1 -1
  602. package/components/CurrencyInput/CurrencyInputKeyboardActions.d.ts +3 -1
  603. package/components/CurrencyInput/constants/constants.js +4 -1
  604. package/components/CurrencyInput/constants/constants.js.map +1 -1
  605. package/components/CurrencyInput/constants.d.ts +3 -0
  606. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js +25 -16
  607. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js.map +1 -1
  608. package/components/CurrencyLabel/CurrencyLabel.d.ts +5 -9
  609. package/components/CurrencyLabel/CurrencyLabel.md +6 -0
  610. package/components/DateInput/DateFragmentsView/DateFragmentsView.js +11 -1
  611. package/components/DateInput/DateFragmentsView/DateFragmentsView.js.map +1 -1
  612. package/components/DateInput/DateFragmentsView.d.ts +1 -1
  613. package/components/DateInput/DateInput/DateInput.js +18 -5
  614. package/components/DateInput/DateInput/DateInput.js.map +1 -1
  615. package/components/DateInput/DateInput.d.ts +9 -12
  616. package/components/DateInput/helpers/DateInputKeyboardActions/DateInputKeyboardActions.js +0 -1
  617. package/components/DateInput/helpers/DateInputKeyboardActions/DateInputKeyboardActions.js.map +1 -1
  618. package/components/DateInput/helpers/SelectionHelpers/SelectionHelpers.js +2 -2
  619. package/components/DateInput/helpers/SelectionHelpers/SelectionHelpers.js.map +1 -1
  620. package/components/DatePicker/DatePicker/DatePicker.js +26 -21
  621. package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
  622. package/components/DatePicker/DatePicker.d.ts +14 -16
  623. package/components/DatePicker/DatePicker.md +18 -0
  624. package/components/DatePicker/Picker/Picker.js +5 -1
  625. package/components/DatePicker/Picker/Picker.js.map +1 -1
  626. package/components/Dropdown/Dropdown/Dropdown.js +21 -6
  627. package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
  628. package/components/Dropdown/Dropdown.d.ts +8 -2
  629. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js +8 -2
  630. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
  631. package/components/DropdownMenu/DropdownMenu.d.ts +7 -7
  632. package/components/DropdownMenu/DropdownMenu.md +68 -1
  633. package/components/FileUploader/FileUploader/FileUploader.js +62 -23
  634. package/components/FileUploader/FileUploader/FileUploader.js.map +1 -1
  635. package/components/FileUploader/FileUploader.d.ts +11 -2
  636. package/components/FileUploader/FileUploader.md +13 -1
  637. package/components/FileUploader/FileUploader.mixins/FileUploader.mixins.js +8 -0
  638. package/components/FileUploader/FileUploader.mixins/FileUploader.mixins.js.map +1 -0
  639. package/components/FileUploader/FileUploader.mixins/package.json +6 -0
  640. package/components/FileUploader/FileUploader.mixins.d.ts +1 -0
  641. package/components/FileUploader/FileUploader.styles/FileUploader.styles.js +51 -17
  642. package/components/FileUploader/FileUploader.styles/FileUploader.styles.js.map +1 -1
  643. package/components/FileUploader/FileUploader.styles.d.ts +12 -1
  644. package/components/FxInput/FxInput/FxInput.js +15 -10
  645. package/components/FxInput/FxInput/FxInput.js.map +1 -1
  646. package/components/FxInput/FxInput.d.ts +6 -6
  647. package/components/FxInput/FxInput.md +13 -0
  648. package/components/Gapped/Gapped/Gapped.js +17 -8
  649. package/components/Gapped/Gapped/Gapped.js.map +1 -1
  650. package/components/Gapped/Gapped.d.ts +7 -8
  651. package/components/GlobalLoader/GlobalLoader/GlobalLoader.js +35 -16
  652. package/components/GlobalLoader/GlobalLoader/GlobalLoader.js.map +1 -1
  653. package/components/GlobalLoader/GlobalLoader.d.ts +7 -14
  654. package/components/GlobalLoader/GlobalLoaderView/GlobalLoaderView.js.map +1 -1
  655. package/components/GlobalLoader/GlobalLoaderView.d.ts +2 -2
  656. package/components/Group/Group/Group.js +5 -5
  657. package/components/Group/Group/Group.js.map +1 -1
  658. package/components/Group/Group.d.ts +1 -0
  659. package/components/Hint/Hint/Hint.js +42 -39
  660. package/components/Hint/Hint/Hint.js.map +1 -1
  661. package/components/Hint/Hint.d.ts +9 -15
  662. package/components/Hint/Hint.md +43 -0
  663. package/components/Hint/Hint.styles/Hint.styles.js +2 -5
  664. package/components/Hint/Hint.styles/Hint.styles.js.map +1 -1
  665. package/components/Hint/Hint.styles.d.ts +0 -1
  666. package/components/Input/Input/Input.js +36 -16
  667. package/components/Input/Input/Input.js.map +1 -1
  668. package/components/Input/Input.d.ts +9 -4
  669. package/components/Input/Input.md +17 -1
  670. package/components/Input/Input.styles/Input.styles.js +13 -10
  671. package/components/Input/Input.styles/Input.styles.js.map +1 -1
  672. package/components/Input/Input.styles.d.ts +1 -0
  673. package/components/Kebab/Kebab/Kebab.js +21 -9
  674. package/components/Kebab/Kebab/Kebab.js.map +1 -1
  675. package/components/Kebab/Kebab.d.ts +13 -16
  676. package/components/Link/Link/Link.js +10 -7
  677. package/components/Link/Link/Link.js.map +1 -1
  678. package/components/Link/Link.d.ts +5 -7
  679. package/components/Loader/Loader/Loader.js +24 -17
  680. package/components/Loader/Loader/Loader.js.map +1 -1
  681. package/components/Loader/Loader.d.ts +20 -7
  682. package/components/Loader/Loader.md +30 -23
  683. package/components/Loader/__stories__/LoaderAndButton/LoaderAndButton.js.map +1 -1
  684. package/components/MenuHeader/MenuHeader/MenuHeader.js +1 -1
  685. package/components/MenuHeader/MenuHeader/MenuHeader.js.map +1 -1
  686. package/components/MenuHeader/MenuHeader.d.ts +1 -1
  687. package/components/MenuItem/MenuItem/MenuItem.js +51 -15
  688. package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
  689. package/components/MenuItem/MenuItem.d.ts +19 -3
  690. package/components/MenuItem/MenuItem.styles/MenuItem.styles.js +31 -9
  691. package/components/MenuItem/MenuItem.styles/MenuItem.styles.js.map +1 -1
  692. package/components/MenuItem/MenuItem.styles.d.ts +5 -0
  693. package/components/MenuSeparator/MenuSeparator/MenuSeparator.js +11 -4
  694. package/components/MenuSeparator/MenuSeparator/MenuSeparator.js.map +1 -1
  695. package/components/MenuSeparator/MenuSeparator.d.ts +1 -1
  696. package/components/MenuSeparator/MenuSeparator.styles/MenuSeparator.styles.js +4 -1
  697. package/components/MenuSeparator/MenuSeparator.styles/MenuSeparator.styles.js.map +1 -1
  698. package/components/MenuSeparator/MenuSeparator.styles.d.ts +1 -0
  699. package/components/Modal/Modal/Modal.js +5 -3
  700. package/components/Modal/Modal/Modal.js.map +1 -1
  701. package/components/Modal/Modal.d.ts +4 -3
  702. package/components/Modal/Modal.styles/Modal.styles.js +3 -3
  703. package/components/Modal/Modal.styles/Modal.styles.js.map +1 -1
  704. package/components/Modal/Modal.styles.d.ts +2 -2
  705. package/components/Modal/ModalBody/ModalBody.js +2 -2
  706. package/components/Modal/ModalBody/ModalBody.js.map +1 -1
  707. package/components/Modal/ModalFooter/ModalFooter.js +9 -3
  708. package/components/Modal/ModalFooter/ModalFooter.js.map +1 -1
  709. package/components/Modal/ModalFooter.d.ts +14 -0
  710. package/components/Modal/ModalHeader/ModalHeader.js +2 -2
  711. package/components/Modal/ModalHeader/ModalHeader.js.map +1 -1
  712. package/components/Paging/Paging/Paging.js +36 -23
  713. package/components/Paging/Paging/Paging.js.map +1 -1
  714. package/components/Paging/Paging.d.ts +7 -10
  715. package/components/Paging/Paging.md +13 -0
  716. package/components/Paging/Paging.styles/Paging.styles.js +27 -15
  717. package/components/Paging/Paging.styles/Paging.styles.js.map +1 -1
  718. package/components/Paging/Paging.styles.d.ts +6 -2
  719. package/components/Paging/PagingDefaultComponent/PagingDefaultComponent.js.map +1 -1
  720. package/components/Paging/PagingDefaultComponent.d.ts +3 -3
  721. package/components/PasswordInput/PasswordInput/PasswordInput.js +14 -13
  722. package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
  723. package/components/PasswordInput/PasswordInput.d.ts +4 -3
  724. package/components/Radio/Radio/Radio.js +11 -6
  725. package/components/Radio/Radio/Radio.js.map +1 -1
  726. package/components/Radio/Radio.d.ts +4 -3
  727. package/components/RadioGroup/RadioGroup/RadioGroup.js +21 -28
  728. package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
  729. package/components/RadioGroup/RadioGroup.d.ts +7 -19
  730. package/components/ResponsiveLayout/ResponsiveLayout/ResponsiveLayout.js +5 -8
  731. package/components/ResponsiveLayout/ResponsiveLayout/ResponsiveLayout.js.map +1 -1
  732. package/components/ResponsiveLayout/ResponsiveLayout.d.ts +6 -5
  733. package/components/ResponsiveLayout/ResponsiveLayout.md +31 -0
  734. package/components/ResponsiveLayout/ResponsiveLayoutEvents/ResponsiveLayoutEvents.js +20 -12
  735. package/components/ResponsiveLayout/ResponsiveLayoutEvents/ResponsiveLayoutEvents.js.map +1 -1
  736. package/components/ResponsiveLayout/decorator.d.ts +1 -1
  737. package/components/ResponsiveLayout/types.d.ts +9 -1
  738. package/components/ResponsiveLayout/useResponsiveLayout/useResponsiveLayout.js +42 -17
  739. package/components/ResponsiveLayout/useResponsiveLayout/useResponsiveLayout.js.map +1 -1
  740. package/components/ResponsiveLayout/useResponsiveLayout.d.ts +2 -2
  741. package/components/ScrollContainer/ScrollBar/ScrollBar.js +67 -10
  742. package/components/ScrollContainer/ScrollBar/ScrollBar.js.map +1 -1
  743. package/components/ScrollContainer/ScrollBar.d.ts +12 -2
  744. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +34 -12
  745. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
  746. package/components/ScrollContainer/ScrollContainer.constants/ScrollContainer.constants.js +3 -2
  747. package/components/ScrollContainer/ScrollContainer.constants/ScrollContainer.constants.js.map +1 -1
  748. package/components/ScrollContainer/ScrollContainer.d.ts +29 -8
  749. package/components/ScrollContainer/ScrollContainer.helpers/ScrollContainer.helpers.js +8 -5
  750. package/components/ScrollContainer/ScrollContainer.helpers/ScrollContainer.helpers.js.map +1 -1
  751. package/components/ScrollContainer/ScrollContainer.md +52 -0
  752. package/components/ScrollContainer/ScrollContainer.styles/ScrollContainer.styles.js +30 -7
  753. package/components/ScrollContainer/ScrollContainer.styles/ScrollContainer.styles.js.map +1 -1
  754. package/components/ScrollContainer/ScrollContainer.styles.d.ts +9 -0
  755. package/components/Select/Item/Item.js.map +1 -1
  756. package/components/Select/Item.d.ts +4 -2
  757. package/components/Select/Select/Select.js +35 -54
  758. package/components/Select/Select/Select.js.map +1 -1
  759. package/components/Select/Select.d.ts +13 -38
  760. package/components/Select/Select.md +14 -0
  761. package/components/Select/Select.styles/Select.styles.js +4 -4
  762. package/components/Select/Select.styles/Select.styles.js.map +1 -1
  763. package/components/Select/selectTheme/selectTheme.js +1 -0
  764. package/components/Select/selectTheme/selectTheme.js.map +1 -1
  765. package/components/SidePage/SidePage/SidePage.js +14 -6
  766. package/components/SidePage/SidePage/SidePage.js.map +1 -1
  767. package/components/SidePage/SidePage.d.ts +9 -6
  768. package/components/SidePage/SidePageFooter/SidePageFooter.js +6 -1
  769. package/components/SidePage/SidePageFooter/SidePageFooter.js.map +1 -1
  770. package/components/SidePage/SidePageFooter.d.ts +15 -5
  771. package/components/SidePage/SidePageHeader/SidePageHeader.js +1 -1
  772. package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
  773. package/components/SidePage/SidePageHeader.d.ts +1 -1
  774. package/components/Spinner/Spinner/Spinner.js +8 -6
  775. package/components/Spinner/Spinner/Spinner.js.map +1 -1
  776. package/components/Spinner/Spinner.d.ts +15 -4
  777. package/components/Spinner/Spinner.styles/Spinner.styles.js +3 -3
  778. package/components/Spinner/Spinner.styles/Spinner.styles.js.map +1 -1
  779. package/components/Spinner/Spinner.styles.d.ts +1 -1
  780. package/components/Sticky/Sticky/Sticky.js +8 -5
  781. package/components/Sticky/Sticky/Sticky.js.map +1 -1
  782. package/components/Sticky/Sticky.d.ts +7 -6
  783. package/components/Switcher/Switcher/Switcher.js +77 -38
  784. package/components/Switcher/Switcher/Switcher.js.map +1 -1
  785. package/components/Switcher/Switcher.d.ts +12 -3
  786. package/components/Switcher/Switcher.md +97 -0
  787. package/components/Switcher/helpers/helpers.js +3 -0
  788. package/components/Switcher/helpers/helpers.js.map +1 -0
  789. package/components/Switcher/helpers/package.json +6 -0
  790. package/components/Switcher/helpers.d.ts +1 -0
  791. package/components/Tabs/Indicator/Indicator.js +1 -1
  792. package/components/Tabs/Indicator/Indicator.js.map +1 -1
  793. package/components/Tabs/Indicator.d.ts +1 -1
  794. package/components/Tabs/Tab/Tab.js +18 -15
  795. package/components/Tabs/Tab/Tab.js.map +1 -1
  796. package/components/Tabs/Tab.d.ts +9 -13
  797. package/components/Tabs/Tabs/Tabs.js +15 -18
  798. package/components/Tabs/Tabs/Tabs.js.map +1 -1
  799. package/components/Tabs/Tabs.d.ts +9 -13
  800. package/components/Textarea/Textarea/Textarea.js +25 -16
  801. package/components/Textarea/Textarea/Textarea.js.map +1 -1
  802. package/components/Textarea/Textarea.d.ts +9 -10
  803. package/components/Textarea/Textarea.md +19 -0
  804. package/components/Textarea/TextareaCounter/TextareaCounter.js +2 -1
  805. package/components/Textarea/TextareaCounter/TextareaCounter.js.map +1 -1
  806. package/components/Textarea/TextareaCounter.d.ts +2 -2
  807. package/components/Toast/Toast/Toast.js +16 -9
  808. package/components/Toast/Toast/Toast.js.map +1 -1
  809. package/components/Toast/Toast.d.ts +6 -3
  810. package/components/Toast/Toast.md +129 -0
  811. package/components/Toast/ToastStatic/ToastStatic.js +5 -5
  812. package/components/Toast/ToastStatic/ToastStatic.js.map +1 -1
  813. package/components/Toast/ToastStatic.d.ts +3 -2
  814. package/components/Toggle/Toggle/Toggle.js +17 -9
  815. package/components/Toggle/Toggle/Toggle.js.map +1 -1
  816. package/components/Toggle/Toggle.d.ts +10 -7
  817. package/components/Token/Token/Token.js +6 -2
  818. package/components/Token/Token/Token.js.map +1 -1
  819. package/components/Token/Token.d.ts +6 -1
  820. package/components/Token/Token.styles/Token.styles.js +1 -1
  821. package/components/Token/Token.styles/Token.styles.js.map +1 -1
  822. package/components/TokenInput/TokenInput/TokenInput.js +180 -132
  823. package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
  824. package/components/TokenInput/TokenInput.d.ts +27 -17
  825. package/components/TokenInput/TokenInput.md +26 -0
  826. package/components/TokenInput/TokenInput.styles/TokenInput.styles.js +1 -1
  827. package/components/TokenInput/TokenInput.styles/TokenInput.styles.js.map +1 -1
  828. package/components/TokenInput/TokenInputMenu/TokenInputMenu.js +1 -1
  829. package/components/TokenInput/TokenInputMenu/TokenInputMenu.js.map +1 -1
  830. package/components/TokenInput/TokenInputMenu.d.ts +2 -1
  831. package/components/Tooltip/Tooltip/Tooltip.js +65 -70
  832. package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
  833. package/components/Tooltip/Tooltip.d.ts +14 -21
  834. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js +15 -13
  835. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
  836. package/components/TooltipMenu/TooltipMenu.d.ts +8 -7
  837. package/components/TooltipMenu/TooltipMenu.md +28 -1
  838. package/hooks/useEffectWithoutInitCall/useEffectWithoutInitCall.js +2 -2
  839. package/hooks/useEffectWithoutInitCall/useEffectWithoutInitCall.js.map +1 -1
  840. package/hooks/useEffectWithoutInitCall.d.ts +2 -2
  841. package/hooks/useMemoObject/useMemoObject.js.map +1 -1
  842. package/hooks/useMemoObject.d.ts +2 -1
  843. package/index.d.ts +2 -0
  844. package/index.js +3 -1
  845. package/index.js.map +1 -1
  846. package/internal/BGRuler/BGRuler.js +11 -6
  847. package/internal/BGRuler/BGRuler.js.map +1 -1
  848. package/internal/BGRuler.d.ts +13 -15
  849. package/internal/Calendar/Calendar/Calendar.js +11 -5
  850. package/internal/Calendar/Calendar/Calendar.js.map +1 -1
  851. package/internal/Calendar/Calendar.d.ts +4 -13
  852. package/internal/Calendar/DayCellView.styles/DayCellView.styles.js +1 -1
  853. package/internal/Calendar/DayCellView.styles/DayCellView.styles.js.map +1 -1
  854. package/internal/Calendar/Month/Month.js +20 -11
  855. package/internal/Calendar/Month/Month.js.map +1 -1
  856. package/internal/Calendar/MonthViewModel.d.ts +1 -1
  857. package/internal/Calendar/config.d.ts +1 -8
  858. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js +3 -2
  859. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
  860. package/internal/CommonWrapper/CommonWrapper.d.ts +1 -1
  861. package/internal/ComponentCombinator/ComponentCombinator.js +8 -5
  862. package/internal/ComponentCombinator/ComponentCombinator.js.map +1 -1
  863. package/internal/ComponentCombinator.d.ts +6 -8
  864. package/internal/ComponentTable/ComponentTable.js +16 -4
  865. package/internal/ComponentTable/ComponentTable.js.map +1 -1
  866. package/internal/ComponentTable.d.ts +7 -8
  867. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js +30 -35
  868. package/internal/CustomComboBox/ComboBoxMenu/ComboBoxMenu.js.map +1 -1
  869. package/internal/CustomComboBox/ComboBoxMenu.d.ts +7 -6
  870. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +32 -15
  871. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
  872. package/internal/CustomComboBox/ComboBoxView.d.ts +9 -14
  873. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js +3 -0
  874. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js.map +1 -1
  875. package/internal/CustomComboBox/CustomComboBox.d.ts +5 -2
  876. package/internal/CustomComboBox/CustomComboBoxReducer/CustomComboBoxReducer.js +9 -6
  877. package/internal/CustomComboBox/CustomComboBoxReducer/CustomComboBoxReducer.js.map +1 -1
  878. package/internal/DataTids/DataTids/DataTids.js.map +1 -1
  879. package/internal/DataTids/DataTids.d.ts +5 -5
  880. package/internal/DateSelect/DateSelect/DateSelect.js +15 -12
  881. package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
  882. package/internal/DateSelect/DateSelect.d.ts +4 -6
  883. package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js +23 -14
  884. package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js.map +1 -1
  885. package/internal/DropdownContainer/DropdownContainer.d.ts +8 -7
  886. package/internal/DropdownContainer/getManualPosition/getManualPosition.js +36 -0
  887. package/internal/DropdownContainer/getManualPosition/getManualPosition.js.map +1 -0
  888. package/internal/DropdownContainer/getManualPosition/package.json +6 -0
  889. package/internal/DropdownContainer/getManualPosition.d.ts +19 -0
  890. package/internal/FileUploaderControl/FileUploaderControlContext/FileUploaderControlContext.js.map +1 -1
  891. package/internal/FileUploaderControl/FileUploaderControlContext.d.ts +2 -0
  892. package/internal/FileUploaderControl/FileUploaderControlProvider/FileUploaderControlProvider.js +7 -1
  893. package/internal/FileUploaderControl/FileUploaderControlProvider/FileUploaderControlProvider.js.map +1 -1
  894. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js +40 -13
  895. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile/FileUploaderFile.js.map +1 -1
  896. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.d.ts +3 -0
  897. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles/FileUploaderFile.styles.js +26 -5
  898. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles/FileUploaderFile.styles.js.map +1 -1
  899. package/internal/FileUploaderControl/FileUploaderFile/FileUploaderFile.styles.d.ts +7 -0
  900. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js +13 -3
  901. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList/FileUploaderFileList.js.map +1 -1
  902. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.d.ts +2 -0
  903. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles/FileUploaderFileList.styles.js +10 -1
  904. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles/FileUploaderFileList.styles.js.map +1 -1
  905. package/internal/FileUploaderControl/FileUploaderFileList/FileUploaderFileList.styles.d.ts +3 -0
  906. package/internal/FileUploaderControl/hooks/useFileUploaderSize/package.json +6 -0
  907. package/internal/FileUploaderControl/hooks/useFileUploaderSize/useFileUploaderSize.js +21 -0
  908. package/internal/FileUploaderControl/hooks/useFileUploaderSize/useFileUploaderSize.js.map +1 -0
  909. package/internal/FileUploaderControl/hooks/useFileUploaderSize.d.ts +2 -0
  910. package/internal/FileUploaderControl/withFileUploaderControlProvider/withFileUploaderControlProvider.js.map +1 -1
  911. package/internal/FileUploaderControl/withFileUploaderControlProvider.d.ts +1 -1
  912. package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll/HideBodyVerticalScroll.js +2 -1
  913. package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll/HideBodyVerticalScroll.js.map +1 -1
  914. package/internal/InputLikeText/InputLikeText/InputLikeText.js +17 -7
  915. package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
  916. package/internal/InputLikeText/InputLikeText.d.ts +5 -3
  917. package/internal/InternalMenu/InternalMenu/InternalMenu.js +62 -23
  918. package/internal/InternalMenu/InternalMenu/InternalMenu.js.map +1 -1
  919. package/internal/InternalMenu/InternalMenu.d.ts +4 -9
  920. package/internal/InternalMenu/InternalMenu.styles/InternalMenu.styles.js +13 -10
  921. package/internal/InternalMenu/InternalMenu.styles/InternalMenu.styles.js.map +1 -1
  922. package/internal/InternalMenu/InternalMenu.styles.d.ts +5 -4
  923. package/internal/MaskedInput/MaskedInput/MaskedInput.js +16 -7
  924. package/internal/MaskedInput/MaskedInput/MaskedInput.js.map +1 -1
  925. package/internal/MaskedInput/MaskedInput.d.ts +5 -2
  926. package/internal/Menu/Menu/Menu.js +24 -10
  927. package/internal/Menu/Menu/Menu.js.map +1 -1
  928. package/internal/Menu/Menu.d.ts +5 -7
  929. package/internal/Menu/Menu.styles/Menu.styles.js +13 -7
  930. package/internal/Menu/Menu.styles/Menu.styles.js.map +1 -1
  931. package/internal/Menu/Menu.styles.d.ts +2 -0
  932. package/internal/MenuMessage/MenuMessage/MenuMessage.js +31 -0
  933. package/internal/MenuMessage/MenuMessage/MenuMessage.js.map +1 -0
  934. package/internal/MenuMessage/MenuMessage/package.json +6 -0
  935. package/internal/MenuMessage/MenuMessage.d.ts +10 -0
  936. package/internal/MenuMessage/MenuMessage.styles/MenuMessage.styles.js +23 -0
  937. package/internal/MenuMessage/MenuMessage.styles/MenuMessage.styles.js.map +1 -0
  938. package/internal/MenuMessage/MenuMessage.styles/package.json +6 -0
  939. package/internal/MenuMessage/MenuMessage.styles.d.ts +5 -0
  940. package/internal/MenuMessage/index/index.js +1 -0
  941. package/internal/MenuMessage/index/index.js.map +1 -0
  942. package/internal/MenuMessage/index/package.json +6 -0
  943. package/internal/MenuMessage/index.d.ts +1 -0
  944. package/internal/MenuMessage/package.json +6 -0
  945. package/internal/MobilePopup/MobilePopup/MobilePopup.js +23 -53
  946. package/internal/MobilePopup/MobilePopup/MobilePopup.js.map +1 -1
  947. package/internal/MobilePopup/MobilePopup.d.ts +13 -12
  948. package/internal/MobilePopup/MobilePopup.styles/MobilePopup.styles.js +11 -11
  949. package/internal/MobilePopup/MobilePopup.styles/MobilePopup.styles.js.map +1 -1
  950. package/internal/MobilePopup/MobilePopup.styles.d.ts +3 -3
  951. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader/MobilePopupHeader.js +11 -35
  952. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader/MobilePopupHeader.js.map +1 -1
  953. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.d.ts +3 -4
  954. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles/MobilePopupHeader.styles.js +6 -12
  955. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles/MobilePopupHeader.styles.js.map +1 -1
  956. package/internal/MobilePopup/MobilePopupHeader/MobilePopupHeader.styles.d.ts +2 -4
  957. package/internal/PerformanceMetrics/PerformanceMetrics/PerformanceMetrics.js.map +1 -1
  958. package/internal/Popup/Popup/Popup.js +69 -38
  959. package/internal/Popup/Popup/Popup.js.map +1 -1
  960. package/internal/Popup/Popup.d.ts +18 -18
  961. package/internal/Popup/PopupHelper/PopupHelper.js.map +1 -1
  962. package/internal/Popup/PopupHelper.d.ts +1 -1
  963. package/internal/Popup/PopupPin/PopupPin.js.map +1 -1
  964. package/internal/Popup/PopupPin.d.ts +1 -1
  965. package/internal/PopupMenu/PopupMenu/PopupMenu.js +12 -4
  966. package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
  967. package/internal/PopupMenu/PopupMenu.d.ts +8 -11
  968. package/internal/RenderLayer/RenderLayer/RenderLayer.js +10 -6
  969. package/internal/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
  970. package/internal/RenderLayer/RenderLayer.d.ts +5 -4
  971. package/internal/ThemePlayground/AnotherInputsPlayground/AnotherInputsPlayground.js.map +1 -1
  972. package/internal/ThemePlayground/AnotherInputsPlayground.d.ts +11 -6
  973. package/internal/ThemePlayground/CurrencyInputPlayground/CurrencyInputPlayground.js.map +1 -1
  974. package/internal/ThemePlayground/CurrencyInputPlayground.d.ts +7 -6
  975. package/internal/ThemePlayground/FxInputPlayground/FxInputPlayground.js +10 -6
  976. package/internal/ThemePlayground/FxInputPlayground/FxInputPlayground.js.map +1 -1
  977. package/internal/ThemePlayground/FxInputPlayground.d.ts +6 -4
  978. package/internal/ThemePlayground/HintPlayground/HintPlayground.js.map +1 -1
  979. package/internal/ThemePlayground/HintPlayground.d.ts +1 -1
  980. package/internal/ThemePlayground/PagingPlayground/PagingPlayground.js +2 -2
  981. package/internal/ThemePlayground/PagingPlayground/PagingPlayground.js.map +1 -1
  982. package/internal/ThemePlayground/PagingPlayground.d.ts +6 -6
  983. package/internal/ThemePlayground/Playground/Playground.js.map +1 -1
  984. package/internal/ThemePlayground/Playground.d.ts +1 -1
  985. package/internal/ThemePlayground/SelectPlayground/SelectPlayground.js.map +1 -1
  986. package/internal/ThemePlayground/SelectPlayground.d.ts +9 -6
  987. package/internal/ThemePlayground/SizesGroup/SizesGroup.js.map +1 -1
  988. package/internal/ThemePlayground/SizesGroup.d.ts +2 -2
  989. package/internal/ThemePlayground/SwitcherPlayground/SwitcherPlayground.js.map +1 -1
  990. package/internal/ThemePlayground/SwitcherPlayground.d.ts +9 -8
  991. package/internal/ThemePlayground/ThemeContextPlayground/ThemeContextPlayground.js +13 -3
  992. package/internal/ThemePlayground/ThemeContextPlayground/ThemeContextPlayground.js.map +1 -1
  993. package/internal/ThemePlayground/ThemeEditor/ThemeEditor.js.map +1 -1
  994. package/internal/ThemePlayground/ThemeEditor.d.ts +1 -4
  995. package/internal/ThemePlayground/TogglePlayground/TogglePlayground.js +5 -17
  996. package/internal/ThemePlayground/TogglePlayground/TogglePlayground.js.map +1 -1
  997. package/internal/ThemePlayground/TogglePlayground.d.ts +2 -7
  998. package/internal/ThemePlayground/TokenInputPlayground/TokenInputPlayground.js.map +1 -1
  999. package/internal/ThemePlayground/TokenInputPlayground.d.ts +6 -4
  1000. package/internal/ThemePlayground/VariableValue/VariableValue.js +4 -2
  1001. package/internal/ThemePlayground/VariableValue/VariableValue.js.map +1 -1
  1002. package/internal/ThemePlayground/VariableValue.d.ts +6 -8
  1003. package/internal/ThemePlayground/helpers/helpers.js +0 -1
  1004. package/internal/ThemePlayground/helpers/helpers.js.map +1 -1
  1005. package/internal/ThemePlayground/helpers.d.ts +1 -1
  1006. package/internal/ThemeShowcase/ThemeShowcase/ThemeShowcase.js.map +1 -1
  1007. package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  1008. package/internal/ZIndex/ZIndex/ZIndex.js +48 -24
  1009. package/internal/ZIndex/ZIndex/ZIndex.js.map +1 -1
  1010. package/internal/ZIndex/ZIndex.d.ts +22 -12
  1011. package/internal/icons/16px/index/index.js +2 -1
  1012. package/internal/icons/16px/index/index.js.map +1 -1
  1013. package/internal/icons/20px/svg/svg.js +2 -1
  1014. package/internal/icons/20px/svg/svg.js.map +1 -1
  1015. package/internal/icons/CloudIcon/CloudIcon.js +3 -1
  1016. package/internal/icons/CloudIcon/CloudIcon.js.map +1 -1
  1017. package/internal/icons/CrossIcon/CrossIcon.js +2 -1
  1018. package/internal/icons/CrossIcon/CrossIcon.js.map +1 -1
  1019. package/internal/icons/SpinnerIcon/SpinnerIcon.js +3 -1
  1020. package/internal/icons/SpinnerIcon/SpinnerIcon.js.map +1 -1
  1021. package/internal/themes/DarkTheme/DarkTheme.js +1 -0
  1022. package/internal/themes/DarkTheme/DarkTheme.js.map +1 -1
  1023. package/internal/themes/DarkTheme.d.ts +1 -0
  1024. package/internal/themes/DefaultTheme/DefaultTheme.js +166 -17
  1025. package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
  1026. package/internal/themes/DefaultTheme.d.ts +43 -3
  1027. package/internal/themes/Theme2022/Theme2022.js +1 -0
  1028. package/internal/themes/Theme2022/Theme2022.js.map +1 -1
  1029. package/internal/themes/Theme2022.d.ts +1 -0
  1030. package/lib/ConditionalHandler/ConditionalHandler.js.map +1 -1
  1031. package/lib/InstanceWithAnchorElement/InstanceWithAnchorElement.js.map +1 -1
  1032. package/lib/InstanceWithAnchorElement.d.ts +1 -1
  1033. package/lib/ModalStack/ModalStack.js +2 -2
  1034. package/lib/ModalStack/ModalStack.js.map +1 -1
  1035. package/lib/SSRSafe/SSRSafe.js +12 -0
  1036. package/lib/SSRSafe/SSRSafe.js.map +1 -1
  1037. package/lib/SSRSafe.d.ts +3 -1
  1038. package/lib/Upgrades/Upgrades.js +4 -1
  1039. package/lib/Upgrades/Upgrades.js.map +1 -1
  1040. package/lib/animation/index/index.js +1 -1
  1041. package/lib/animation/index/index.js.map +1 -1
  1042. package/lib/callChildRef/callChildRef/callChildRef.js +1 -1
  1043. package/lib/callChildRef/callChildRef/callChildRef.js.map +1 -1
  1044. package/lib/createPropsGetter/createPropsGetter.js +1 -0
  1045. package/lib/createPropsGetter/createPropsGetter.js.map +1 -1
  1046. package/lib/createPropsGetter.d.ts +2 -1
  1047. package/lib/currentEnvironment/currentEnvironment.js +34 -14
  1048. package/lib/currentEnvironment/currentEnvironment.js.map +1 -1
  1049. package/lib/date/InternalDateCalculator/InternalDateCalculator.js +1 -2
  1050. package/lib/date/InternalDateCalculator/InternalDateCalculator.js.map +1 -1
  1051. package/lib/date/InternalDateCalculator.d.ts +1 -1
  1052. package/lib/date/InternalDateValidator/InternalDateValidator.js +8 -2
  1053. package/lib/date/InternalDateValidator/InternalDateValidator.js.map +1 -1
  1054. package/lib/date/InternalDateValidator.d.ts +1 -1
  1055. package/lib/extractKeyboardAction/extractKeyboardAction.js.map +1 -1
  1056. package/lib/extractKeyboardAction.d.ts +1 -1
  1057. package/lib/filterProps/filterProps.js +0 -1
  1058. package/lib/filterProps/filterProps.js.map +1 -1
  1059. package/lib/listenFocusOutside/listenFocusOutside.js.map +1 -1
  1060. package/lib/listenFocusOutside.d.ts +1 -1
  1061. package/lib/locale/LOCALECONTEXT.md +1 -0
  1062. package/lib/locale/useLocaleForControl/useLocaleForControl.js.map +1 -1
  1063. package/lib/locale/useLocaleForControl.d.ts +1 -1
  1064. package/lib/memo/memo.js +2 -4
  1065. package/lib/memo/memo.js.map +1 -1
  1066. package/lib/memo.d.ts +3 -1
  1067. package/lib/net/fetch/fetch.js +2 -2
  1068. package/lib/net/fetch/fetch.js.map +1 -1
  1069. package/lib/reactGetTextContent/reactGetTextContent.js +0 -1
  1070. package/lib/reactGetTextContent/reactGetTextContent.js.map +1 -1
  1071. package/lib/rootNode/getRootNode/getRootNode.js +32 -14
  1072. package/lib/rootNode/getRootNode/getRootNode.js.map +1 -1
  1073. package/lib/rootNode/getRootNode.d.ts +3 -3
  1074. package/lib/rootNode/rootNodeDecorator/rootNodeDecorator.js.map +1 -1
  1075. package/lib/rootNode/rootNodeDecorator.d.ts +9 -9
  1076. package/lib/styles/ColorFactory/ColorFactory.js +3 -1
  1077. package/lib/styles/ColorFactory/ColorFactory.js.map +1 -1
  1078. package/lib/styles/ColorFunctions/ColorFunctions.js.map +1 -1
  1079. package/lib/theming/AnimationKeyframes/AnimationKeyframes.js +8 -14
  1080. package/lib/theming/AnimationKeyframes/AnimationKeyframes.js.map +1 -1
  1081. package/lib/theming/AnimationKeyframes.d.ts +3 -5
  1082. package/lib/theming/Emotion/Emotion.js.map +1 -1
  1083. package/lib/theming/ThemeContext.md +26 -18
  1084. package/lib/theming/ThemeFactory/ThemeFactory.js +11 -2
  1085. package/lib/theming/ThemeFactory/ThemeFactory.js.map +1 -1
  1086. package/lib/theming/ThemeFactory.d.ts +1 -1
  1087. package/lib/theming/ThemeHelpers/ThemeHelpers.js +19 -5
  1088. package/lib/theming/ThemeHelpers/ThemeHelpers.js.map +1 -1
  1089. package/lib/theming/ThemeHelpers.d.ts +13 -4
  1090. package/lib/theming/themes/DarkTheme/DarkTheme.js +2 -2
  1091. package/lib/theming/themes/DarkTheme/DarkTheme.js.map +1 -1
  1092. package/lib/theming/themes/Theme2022Dark/Theme2022Dark.js +2 -1
  1093. package/lib/theming/themes/Theme2022Dark/Theme2022Dark.js.map +1 -1
  1094. package/lib/theming/themes/Theme2022Dark.d.ts +1 -1
  1095. package/lib/utils/utils.js +2 -3
  1096. package/lib/utils/utils.js.map +1 -1
  1097. package/lib/utils.d.ts +6 -5
  1098. package/lib/withClassWrapper/withClassWrapper.js +1 -4
  1099. package/lib/withClassWrapper/withClassWrapper.js.map +1 -1
  1100. package/package.json +9 -25
  1101. package/typings/event-types.d.ts +2 -2
  1102. package/typings/{html-props.d.ts → html.d.ts} +2 -2
@@ -1,32 +1,53 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
- import { useCallback, useContext, useEffect, useRef, useState } from 'react';
2
+ import { createRef, useCallback, useContext, useEffect, useState } from 'react';
3
3
  import { ThemeContext } from "../../../lib/theming/ThemeContext";
4
4
  import { addResponsiveLayoutListener, checkMatches } from "../ResponsiveLayoutEvents";
5
- export function useResponsiveLayout() {
6
- var theme = useContext(ThemeContext);
5
+ export function useResponsiveLayout(_temp) {
6
+ var _ref = _temp === void 0 ? {} : _temp,
7
+ customMediaQueries = _ref.customMediaQueries;
7
8
 
8
- var getLayoutFromGlobal = function getLayoutFromGlobal() {
9
- var isMobile = checkMatches(theme.mobileMediaQuery);
9
+ var theme = useContext(ThemeContext);
10
+ var allMediaQueries = Object.entries(_extends({
11
+ isMobile: theme.mobileMediaQuery
12
+ }, customMediaQueries)).map(function (_ref2) {
13
+ var key = _ref2[0],
14
+ value = _ref2[1];
10
15
  return {
11
- isMobile: !!isMobile
16
+ flag: key,
17
+ query: value,
18
+ ref: /*#__PURE__*/createRef()
12
19
  };
20
+ });
21
+
22
+ var getLayoutFromGlobal = function getLayoutFromGlobal() {
23
+ return allMediaQueries.reduce(function (result, mediaQuery) {
24
+ var _Object$assign;
25
+
26
+ return Object.assign(result, (_Object$assign = {}, _Object$assign[mediaQuery.flag] = checkMatches(mediaQuery.query), _Object$assign));
27
+ }, {});
13
28
  };
14
29
 
15
30
  var _useState = useState(getLayoutFromGlobal()),
16
31
  state = _useState[0],
17
32
  setState = _useState[1];
18
33
 
19
- var mobileListener = useRef(null);
20
34
  var prepareMediaQueries = useCallback(function () {
21
35
  if (!theme) {
22
36
  return;
23
37
  }
24
38
 
25
- mobileListener.current = addResponsiveLayoutListener(theme.mobileMediaQuery, checkLayoutsMediaQueries); // Checking for SSR use case
39
+ allMediaQueries.forEach(function (mediaQuery) {
40
+ return mediaQuery.ref.current = addResponsiveLayoutListener(mediaQuery.query, checkLayoutsMediaQueries);
41
+ }); // Checking for SSR use case
26
42
 
27
43
  var globalLayout = getLayoutFromGlobal();
44
+ var hasChangedQuery = Object.entries(globalLayout).find(function (_ref3) {
45
+ var key = _ref3[0],
46
+ value = _ref3[1];
47
+ return state[key] !== value;
48
+ });
28
49
 
29
- if (globalLayout.isMobile !== state.isMobile) {
50
+ if (hasChangedQuery) {
30
51
  setState(globalLayout);
31
52
  }
32
53
  }, [theme]);
@@ -35,20 +56,24 @@ export function useResponsiveLayout() {
35
56
  return;
36
57
  }
37
58
 
38
- if (e.media === theme.mobileMediaQuery) {
39
- setState(function (prevState) {
40
- return _extends({}, prevState, {
41
- isMobile: e.matches
59
+ allMediaQueries.forEach(function (mediaQuery) {
60
+ if (e.media === mediaQuery.query) {
61
+ setState(function (prevState) {
62
+ var _extends2;
63
+
64
+ return _extends({}, prevState, (_extends2 = {}, _extends2[mediaQuery.flag] = e.matches, _extends2));
42
65
  });
43
- });
44
- }
66
+ }
67
+ });
45
68
  }, [theme]);
46
69
  useEffect(function () {
47
70
  prepareMediaQueries();
48
71
  return function () {
49
- var _mobileListener$curre;
72
+ allMediaQueries.forEach(function (mediaQuery) {
73
+ var _mediaQuery$ref$curre;
50
74
 
51
- (_mobileListener$curre = mobileListener.current) == null ? void 0 : _mobileListener$curre.remove();
75
+ return (_mediaQuery$ref$curre = mediaQuery.ref.current) == null ? void 0 : _mediaQuery$ref$curre.remove();
76
+ });
52
77
  };
53
78
  }, []);
54
79
  return state;
@@ -1 +1 @@
1
- {"version":3,"sources":["useResponsiveLayout.ts"],"names":["useCallback","useContext","useEffect","useRef","useState","ThemeContext","addResponsiveLayoutListener","checkMatches","useResponsiveLayout","theme","getLayoutFromGlobal","isMobile","mobileMediaQuery","state","setState","mobileListener","prepareMediaQueries","current","checkLayoutsMediaQueries","globalLayout","e","media","prevState","matches","remove"],"mappings":"0DAAA,SAAgBA,WAAhB,EAA6BC,UAA7B,EAAyCC,SAAzC,EAAoDC,MAApD,EAA4DC,QAA5D,QAA4E,OAA5E;;AAEA,SAASC,YAAT,QAA6B,gCAA7B;;;AAGA,SAASC,2BAAT,EAAsCC,YAAtC,QAA0D,0BAA1D;;AAEA,OAAO,SAASC,mBAAT,GAA+B;AACpC,MAAMC,KAAK,GAAGR,UAAU,CAACI,YAAD,CAAxB;;AAEA,MAAMK,mBAAmB,GAAG,SAAtBA,mBAAsB,GAA6B;AACvD,QAAMC,QAAQ,GAAGJ,YAAY,CAACE,KAAK,CAACG,gBAAP,CAA7B;;AAEA,WAAO,EAAED,QAAQ,EAAE,CAAC,CAACA,QAAd,EAAP;AACD,GAJD;;AAMA,kBAA0BP,QAAQ,CAACM,mBAAmB,EAApB,CAAlC,CAAOG,KAAP,gBAAcC,QAAd;;AAEA,MAAMC,cAAqE,GAAGZ,MAAM,CAAC,IAAD,CAApF;;AAEA,MAAMa,mBAAmB,GAAGhB,WAAW,CAAC,YAAM;AAC5C,QAAI,CAACS,KAAL,EAAY;AACV;AACD;;AAEDM,IAAAA,cAAc,CAACE,OAAf,GAAyBX,2BAA2B,CAACG,KAAK,CAACG,gBAAP,EAAyBM,wBAAzB,CAApD;;AAEA;AACA,QAAMC,YAAY,GAAGT,mBAAmB,EAAxC;;AAEA,QAAIS,YAAY,CAACR,QAAb,KAA0BE,KAAK,CAACF,QAApC,EAA8C;AAC5CG,MAAAA,QAAQ,CAACK,YAAD,CAAR;AACD;AACF,GAbsC,EAapC,CAACV,KAAD,CAboC,CAAvC;;AAeA,MAAMS,wBAAwB,GAAGlB,WAAW;AAC1C,YAACoB,CAAD,EAA4B;AAC1B,QAAI,CAACX,KAAL,EAAY;AACV;AACD;;AAED,QAAIW,CAAC,CAACC,KAAF,KAAYZ,KAAK,CAACG,gBAAtB,EAAwC;AACtCE,MAAAA,QAAQ,CAAC,UAACQ,SAAD;AACJA,QAAAA,SADI;AAEPX,UAAAA,QAAQ,EAAES,CAAC,CAACG,OAFL,KAAD,CAAR;;AAID;AACF,GAZyC;AAa1C,GAACd,KAAD,CAb0C,CAA5C;;;AAgBAP,EAAAA,SAAS,CAAC,YAAM;AACdc,IAAAA,mBAAmB;;AAEnB,WAAO,YAAM;AACX,+BAAAD,cAAc,CAACE,OAAf,2CAAwBO,MAAxB;AACD,KAFD;AAGD,GANQ,EAMN,EANM,CAAT;;AAQA,SAAOX,KAAP;AACD","sourcesContent":["import React, { useCallback, useContext, useEffect, useRef, useState } from 'react';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\n\nimport { ResponsiveLayoutFlags } from './types';\nimport { addResponsiveLayoutListener, checkMatches } from './ResponsiveLayoutEvents';\n\nexport function useResponsiveLayout() {\n const theme = useContext(ThemeContext);\n\n const getLayoutFromGlobal = (): ResponsiveLayoutFlags => {\n const isMobile = checkMatches(theme.mobileMediaQuery);\n\n return { isMobile: !!isMobile };\n };\n\n const [state, setState] = useState(getLayoutFromGlobal());\n\n const mobileListener: React.MutableRefObject<{ remove: () => void } | null> = useRef(null);\n\n const prepareMediaQueries = useCallback(() => {\n if (!theme) {\n return;\n }\n\n mobileListener.current = addResponsiveLayoutListener(theme.mobileMediaQuery, checkLayoutsMediaQueries);\n\n // Checking for SSR use case\n const globalLayout = getLayoutFromGlobal();\n\n if (globalLayout.isMobile !== state.isMobile) {\n setState(globalLayout);\n }\n }, [theme]);\n\n const checkLayoutsMediaQueries = useCallback(\n (e: MediaQueryListEvent) => {\n if (!theme) {\n return;\n }\n\n if (e.media === theme.mobileMediaQuery) {\n setState((prevState: ResponsiveLayoutFlags) => ({\n ...prevState,\n isMobile: e.matches,\n }));\n }\n },\n [theme],\n );\n\n useEffect(() => {\n prepareMediaQueries();\n\n return () => {\n mobileListener.current?.remove();\n };\n }, []);\n\n return state;\n}\n"]}
1
+ {"version":3,"sources":["useResponsiveLayout.ts"],"names":["createRef","useCallback","useContext","useEffect","useState","ThemeContext","addResponsiveLayoutListener","checkMatches","useResponsiveLayout","customMediaQueries","theme","allMediaQueries","Object","entries","isMobile","mobileMediaQuery","map","key","value","flag","query","ref","getLayoutFromGlobal","reduce","result","mediaQuery","assign","state","setState","prepareMediaQueries","forEach","current","checkLayoutsMediaQueries","globalLayout","hasChangedQuery","find","e","media","prevState","matches","remove"],"mappings":"0DAAA,SAAgBA,SAAhB,EAA2BC,WAA3B,EAAwCC,UAAxC,EAAoDC,SAApD,EAA+DC,QAA/D,QAA+E,OAA/E;;AAEA,SAASC,YAAT,QAA6B,gCAA7B;;;AAGA,SAASC,2BAAT,EAAsCC,YAAtC,QAA0D,0BAA1D;;AAEA,OAAO,SAASC,mBAAT;;AAE6B,+BAAJ,EAAI,SADlCC,kBACkC,QADlCA,kBACkC;AAClC,MAAMC,KAAK,GAAGR,UAAU,CAACG,YAAD,CAAxB;;AAEA,MAAMM,eAAe,GAAGC,MAAM,CAACC,OAAP;AACtBC,IAAAA,QAAQ,EAAEJ,KAAK,CAACK,gBADM;AAEnBN,EAAAA,kBAFmB;AAGrBO,EAAAA,GAHqB,CAGjB,sBAAEC,GAAF,YAAOC,KAAP,mBAAmB;AACxBC,MAAAA,IAAI,EAAEF,GADkB;AAExBG,MAAAA,KAAK,EAAEF,KAFiB;AAGxBG,MAAAA,GAAG,eAAErB,SAAS,EAHU,EAAnB,EAHiB,CAAxB;;;AASA,MAAMsB,mBAAmB,GAAG,SAAtBA,mBAAsB,GAAgC;AAC1D,WAAOX,eAAe,CAACY,MAAhB;AACL,cAACC,MAAD,EAASC,UAAT,6BAAwBb,MAAM,CAACc,MAAP,CAAcF,MAAd,uCAAyBC,UAAU,CAACN,IAApC,IAA2CZ,YAAY,CAACkB,UAAU,CAACL,KAAZ,CAAvD,kBAAxB,EADK;AAEL,MAFK,CAAP;;AAID,GALD;;AAOA,kBAA0BhB,QAAQ,CAACkB,mBAAmB,EAApB,CAAlC,CAAOK,KAAP,gBAAcC,QAAd;;AAEA,MAAMC,mBAAmB,GAAG5B,WAAW,CAAC,YAAM;AAC5C,QAAI,CAACS,KAAL,EAAY;AACV;AACD;;AAEDC,IAAAA,eAAe,CAACmB,OAAhB;AACE,cAACL,UAAD;AACGA,QAAAA,UAAU,CAACJ,GAAX,CAAeU,OAAf,GAAyBzB,2BAA2B,CAACmB,UAAU,CAACL,KAAZ,EAAmBY,wBAAnB,CADvD,GADF;;;AAKA;AACA,QAAMC,YAAY,GAAGX,mBAAmB,EAAxC;AACA,QAAMY,eAAe,GAAGtB,MAAM,CAACC,OAAP,CAAeoB,YAAf,EAA6BE,IAA7B,CAAkC,sBAAElB,GAAF,YAAOC,KAAP,mBAAkBS,KAAK,CAACV,GAAD,CAAL,KAAeC,KAAjC,EAAlC,CAAxB;;AAEA,QAAIgB,eAAJ,EAAqB;AACnBN,MAAAA,QAAQ,CAACK,YAAD,CAAR;AACD;AACF,GAjBsC,EAiBpC,CAACvB,KAAD,CAjBoC,CAAvC;;AAmBA,MAAMsB,wBAAwB,GAAG/B,WAAW;AAC1C,YAACmC,CAAD,EAA4B;AAC1B,QAAI,CAAC1B,KAAL,EAAY;AACV;AACD;;AAEDC,IAAAA,eAAe,CAACmB,OAAhB,CAAwB,UAACL,UAAD,EAAgB;AACtC,UAAIW,CAAC,CAACC,KAAF,KAAYZ,UAAU,CAACL,KAA3B,EAAkC;AAChCQ,QAAAA,QAAQ,CAAC,UAACU,SAAD;AACJA,UAAAA,SADI;AAENb,UAAAA,UAAU,CAACN,IAFL,IAEYiB,CAAC,CAACG,OAFd,eAAD,CAAR;;AAID;AACF,KAPD;AAQD,GAdyC;AAe1C,GAAC7B,KAAD,CAf0C,CAA5C;;;AAkBAP,EAAAA,SAAS,CAAC,YAAM;AACd0B,IAAAA,mBAAmB;;AAEnB,WAAO,YAAM;AACXlB,MAAAA,eAAe,CAACmB,OAAhB,CAAwB,UAACL,UAAD,6DAAgBA,UAAU,CAACJ,GAAX,CAAeU,OAA/B,qBAAgB,sBAAwBS,MAAxB,EAAhB,EAAxB;AACD,KAFD;AAGD,GANQ,EAMN,EANM,CAAT;;AAQA,SAAOb,KAAP;AACD","sourcesContent":["import React, { createRef, useCallback, useContext, useEffect, useState } from 'react';\n\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\n\nimport { EmptyObject, MediaQueriesType, ResponsiveLayoutFlags, ResponsiveLayoutOptions } from './types';\nimport { addResponsiveLayoutListener, checkMatches } from './ResponsiveLayoutEvents';\n\nexport function useResponsiveLayout<T extends MediaQueriesType = EmptyObject>({\n customMediaQueries,\n}: ResponsiveLayoutOptions<T> = {}) {\n const theme = useContext(ThemeContext);\n\n const allMediaQueries = Object.entries({\n isMobile: theme.mobileMediaQuery,\n ...customMediaQueries,\n }).map(([key, value]) => ({\n flag: key,\n query: value,\n ref: createRef() as React.MutableRefObject<{ remove: () => void } | null>,\n }));\n\n const getLayoutFromGlobal = (): ResponsiveLayoutFlags<T> => {\n return allMediaQueries.reduce(\n (result, mediaQuery) => Object.assign(result, { [mediaQuery.flag]: checkMatches(mediaQuery.query) }),\n {},\n ) as ResponsiveLayoutFlags<T>;\n };\n\n const [state, setState] = useState(getLayoutFromGlobal());\n\n const prepareMediaQueries = useCallback(() => {\n if (!theme) {\n return;\n }\n\n allMediaQueries.forEach(\n (mediaQuery) =>\n (mediaQuery.ref.current = addResponsiveLayoutListener(mediaQuery.query, checkLayoutsMediaQueries)),\n );\n\n // Checking for SSR use case\n const globalLayout = getLayoutFromGlobal();\n const hasChangedQuery = Object.entries(globalLayout).find(([key, value]) => state[key] !== value);\n\n if (hasChangedQuery) {\n setState(globalLayout);\n }\n }, [theme]);\n\n const checkLayoutsMediaQueries = useCallback(\n (e: MediaQueryListEvent) => {\n if (!theme) {\n return;\n }\n\n allMediaQueries.forEach((mediaQuery) => {\n if (e.media === mediaQuery.query) {\n setState((prevState: ResponsiveLayoutFlags<T>) => ({\n ...prevState,\n [mediaQuery.flag]: e.matches,\n }));\n }\n });\n },\n [theme],\n );\n\n useEffect(() => {\n prepareMediaQueries();\n\n return () => {\n allMediaQueries.forEach((mediaQuery) => mediaQuery.ref.current?.remove());\n };\n }, []);\n\n return state;\n}\n"]}
@@ -1,2 +1,2 @@
1
- import { ResponsiveLayoutFlags } from './types';
2
- export declare function useResponsiveLayout(): ResponsiveLayoutFlags;
1
+ import { EmptyObject, MediaQueriesType, ResponsiveLayoutFlags, ResponsiveLayoutOptions } from './types';
2
+ export declare function useResponsiveLayout<T extends MediaQueriesType = EmptyObject>({ customMediaQueries, }?: ResponsiveLayoutOptions<T>): ResponsiveLayoutFlags<T>;
@@ -2,6 +2,8 @@ import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _createClass from "@babel/runtime/helpers/esm/createClass";
3
3
  import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
4
4
  import React from 'react';
5
+ import { CSSTransition } from 'react-transition-group';
6
+ import debounce from 'lodash.debounce';
5
7
  import { ThemeContext } from "../../../lib/theming/ThemeContext";
6
8
  import { cx } from "../../../lib/theming/Emotion";
7
9
  import { defaultScrollbarState, scrollSizeParametersNames } from "../ScrollContainer.constants";
@@ -18,6 +20,7 @@ export var ScrollBar = /*#__PURE__*/function (_React$Component) {
18
20
  }
19
21
 
20
22
  _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;
23
+ _this.containerRef = /*#__PURE__*/React.createRef();
21
24
  _this.state = _extends({}, defaultScrollbarState);
22
25
 
23
26
  _this.renderMain = function () {
@@ -33,18 +36,36 @@ export var ScrollBar = /*#__PURE__*/function (_React$Component) {
33
36
  var _scrollSizeParameters = scrollSizeParametersNames[_this.props.axis],
34
37
  customScrollPos = _scrollSizeParameters.customScrollPos,
35
38
  customScrollSize = _scrollSizeParameters.customScrollSize;
36
- var classNames = cx(props.className, styles.scrollBar(_this.theme), _this.scrollBarStyles, (_cx = {}, _cx[styles.scrollBarInvert(_this.theme)] = props.invert, _cx));
37
- var inlineStyles = (_inlineStyles = {}, _inlineStyles[customScrollPos] = state.pos, _inlineStyles[customScrollSize] = state.size, _inlineStyles);
39
+ var classNames = cx(props.className, styles.scrollBar(_this.theme), _this.scrollBarStyles, (_cx = {}, _cx[styles.scrollBarInvert(_this.theme)] = props.invert, _cx[styles.visibleScrollBar()] = _this.state.scrollingByMouseWheel || !_this.props.hideScrollBar, _cx));
40
+ var inlineStyles = (_inlineStyles = {}, _inlineStyles[customScrollPos] = state.pos + "%", _inlineStyles[customScrollSize] = state.size + "%", _inlineStyles);
38
41
  return /*#__PURE__*/React.createElement("div", {
42
+ ref: _this.containerRef,
43
+ className: _this.scrollBarContainerClassNames,
44
+ style: props.offset
45
+ }, /*#__PURE__*/React.createElement(CSSTransition, {
46
+ appear: !props.disableAnimations,
47
+ exit: !props.disableAnimations,
48
+ "in": _this.state.scrollingByMouseWheel,
49
+ classNames: {
50
+ enter: styles.transition(),
51
+ enterActive: styles.transitionActive(),
52
+ exit: styles.transitionLeave(),
53
+ exitActive: styles.transitionLeaveActive()
54
+ },
55
+ timeout: {
56
+ enter: 100,
57
+ exit: 300
58
+ }
59
+ }, /*#__PURE__*/React.createElement("div", {
39
60
  ref: _this.refScroll,
40
61
  style: inlineStyles,
41
62
  className: classNames,
42
63
  onMouseDown: _this.handleScrollMouseDown,
43
64
  "data-tid": "ScrollContainer__ScrollBar-" + props.axis
44
- });
65
+ })));
45
66
  };
46
67
 
47
- _this.reflow = function () {
68
+ _this.reflow = function (event) {
48
69
  if (!_this.inner) {
49
70
  return;
50
71
  }
@@ -74,6 +95,8 @@ export var ScrollBar = /*#__PURE__*/function (_React$Component) {
74
95
  pos: scrollPos,
75
96
  scrollState: scrollState
76
97
  }));
98
+
99
+ event && event.type === 'scroll' && props.hideScrollBar && _this.setScrollingByMouseWheel();
77
100
  }
78
101
  };
79
102
 
@@ -117,11 +140,13 @@ export var ScrollBar = /*#__PURE__*/function (_React$Component) {
117
140
  var state = _this.state;
118
141
 
119
142
  var mouseMove = function mouseMove(mouseMoveEvent) {
120
- if (!_this.inner) {
143
+ if (!_this.inner || !_this.containerRef.current) {
121
144
  return;
122
145
  }
123
146
 
124
- var ratio = (_this.inner[size] - _this.inner[offset]) / (_this.inner[offset] - state.size);
147
+ var remainingScrollingContent = _this.inner[size] - _this.inner[offset];
148
+ var remainingScrollingSpace = _this.containerRef.current[offset] / 100 * (100 - state.size);
149
+ var ratio = remainingScrollingContent / remainingScrollingSpace;
125
150
  var delta = (mouseMoveEvent[coord] - initialCoord) * ratio;
126
151
  _this.inner[pos] = initialScrollPos + delta;
127
152
 
@@ -139,15 +164,17 @@ export var ScrollBar = /*#__PURE__*/function (_React$Component) {
139
164
  target.removeEventListener('mouseup', mouseUp);
140
165
 
141
166
  _this.setState(_extends({}, _this.state, {
142
- scrolling: false
167
+ scrollingByMouseDrag: false
143
168
  }));
169
+
170
+ _this.hideScrollBar();
144
171
  };
145
172
 
146
173
  target.addEventListener('mousemove', mouseMove);
147
174
  target.addEventListener('mouseup', mouseUp);
148
175
 
149
176
  _this.setState(_extends({}, _this.state, {
150
- scrolling: true
177
+ scrollingByMouseDrag: true
151
178
  }));
152
179
 
153
180
  event.preventDefault();
@@ -199,6 +226,21 @@ export var ScrollBar = /*#__PURE__*/function (_React$Component) {
199
226
  return 'middle';
200
227
  };
201
228
 
229
+ _this.setScrollingByMouseWheel = function () {
230
+ if (!_this.state.scrollingByMouseWheel) {
231
+ _this.setState({
232
+ scrollingByMouseWheel: true
233
+ });
234
+ }
235
+
236
+ _this.hideScrollBar();
237
+ };
238
+
239
+ _this.hideScrollBar = debounce(function () {
240
+ !_this.state.scrollingByMouseDrag && !_this.state.hover && _this.setState({
241
+ scrollingByMouseWheel: false
242
+ });
243
+ }, _this.props.hideScrollBarDelay);
202
244
  return _this;
203
245
  }
204
246
 
@@ -226,6 +268,10 @@ export var ScrollBar = /*#__PURE__*/function (_React$Component) {
226
268
  this.setState(_extends({}, this.state, {
227
269
  hover: hover
228
270
  }));
271
+
272
+ if (!hover) {
273
+ this.props.hideScrollBar && this.hideScrollBar();
274
+ }
229
275
  }
230
276
  };
231
277
 
@@ -244,10 +290,21 @@ export var ScrollBar = /*#__PURE__*/function (_React$Component) {
244
290
  if (this.props.axis === 'x') {
245
291
  var _cx2;
246
292
 
247
- return cx(styles.scrollBarX(this.theme), globalClasses.scrollbarX, (_cx2 = {}, _cx2[styles.scrollBarXHover(this.theme)] = state.hover || state.scrolling, _cx2));
293
+ return cx(styles.scrollBarX(this.theme), globalClasses.scrollbarX, (_cx2 = {}, _cx2[styles.scrollBarXHover(this.theme)] = state.hover || state.scrollingByMouseDrag, _cx2));
294
+ }
295
+
296
+ return cx(styles.scrollBarY(this.theme), globalClasses.scrollbarY, (_cx3 = {}, _cx3[styles.scrollBarYHover(this.theme)] = state.hover || state.scrollingByMouseDrag, _cx3));
297
+ }
298
+ }, {
299
+ key: "scrollBarContainerClassNames",
300
+ get: function get() {
301
+ var axis = this.props.axis;
302
+
303
+ if (axis === 'x') {
304
+ return cx(globalClasses.scrollbarContainerX, styles.scrollBarContainerX(this.theme));
248
305
  }
249
306
 
250
- return cx(styles.scrollBarY(this.theme), globalClasses.scrollbarY, (_cx3 = {}, _cx3[styles.scrollBarYHover(this.theme)] = state.hover || state.scrolling, _cx3));
307
+ return cx(globalClasses.scrollbarContainerY, styles.scrollBarContainerY());
251
308
  }
252
309
  }]);
253
310
 
@@ -1 +1 @@
1
- {"version":3,"sources":["ScrollBar.tsx"],"names":["React","ThemeContext","cx","defaultScrollbarState","scrollSizeParametersNames","styles","globalClasses","getScrollSizeParams","ScrollBar","state","renderMain","props","active","axis","customScrollPos","customScrollSize","classNames","className","scrollBar","theme","scrollBarStyles","scrollBarInvert","invert","inlineStyles","pos","size","refScroll","handleScrollMouseDown","reflow","inner","scrollSize","scrollPos","scrollActive","scrollState","getImmediateScrollState","onScrollStateChange","setState","setInnerElement","element","handleScrollWheel","event","node","addEventListener","passive","removeEventListener","offset","coord","initialCoord","target","window","document","initialScrollPos","mouseMove","mouseMoveEvent","ratio","delta","preventDefault","Object","prototype","hasOwnProperty","call","returnValue","mouseUp","scrolling","WheelEvent","shiftKey","offsetHeight","deltaY","clientSize","maxScrollPos","Math","abs","componentDidMount","componentDidUpdate","render","setHover","hover","scrollBarX","scrollbarX","scrollBarXHover","scrollBarY","scrollbarY","scrollBarYHover","Component"],"mappings":"kMAAA,OAAOA,KAAP,MAAkB,OAAlB;;;;AAIA,SAASC,YAAT,QAA6B,gCAA7B;AACA,SAASC,EAAT,QAAmB,2BAAnB;;AAEA,SAASC,qBAAT,EAAgCC,yBAAhC,QAAiE,6BAAjE;AACA,SAASC,MAAT,EAAiBC,aAAjB,QAAsC,0BAAtC;AACA,SAASC,mBAAT,QAAoC,2BAApC;;;;;;;;;;;;;;;;;;;;;AAqBA,WAAaC,SAAb;;;;;AAKSC,IAAAA,KALT;AAMON,IAAAA,qBANP;;;;;;;;;;;;;;;;;;;;;;AA4BUO,IAAAA,UA5BV,GA4BuB,YAAM;AACzB,UAAMD,KAAK,GAAG,MAAKA,KAAnB;AACA,UAAME,KAAK,GAAG,MAAKA,KAAnB;;AAEA,UAAI,CAACF,KAAK,CAACG,MAAX,EAAmB;AACjB,eAAO,IAAP;AACD;;AAED,kCAA8CR,yBAAyB,CAAC,MAAKO,KAAL,CAAWE,IAAZ,CAAvE,CAAQC,eAAR,yBAAQA,eAAR,CAAyBC,gBAAzB,yBAAyBA,gBAAzB;;AAEA,UAAMC,UAAU,GAAGd,EAAE,CAACS,KAAK,CAACM,SAAP,EAAkBZ,MAAM,CAACa,SAAP,CAAiB,MAAKC,KAAtB,CAAlB,EAAgD,MAAKC,eAArD;AAClBf,MAAAA,MAAM,CAACgB,eAAP,CAAuB,MAAKF,KAA5B,CADkB,IACmBR,KAAK,CAACW,MADzB,OAArB;;;AAIA,UAAMC,YAAiC;AACpCT,MAAAA,eADoC,IAClBL,KAAK,CAACe,GADY;AAEpCT,MAAAA,gBAFoC,IAEjBN,KAAK,CAACgB,IAFW,gBAAvC;;;AAKA;AACE;AACE,UAAA,GAAG,EAAE,MAAKC,SADZ;AAEE,UAAA,KAAK,EAAEH,YAFT;AAGE,UAAA,SAAS,EAAEP,UAHb;AAIE,UAAA,WAAW,EAAE,MAAKW,qBAJpB;AAKE,sDAAwChB,KAAK,CAACE,IALhD,GADF;;;AASD,KAxDH;;AA0DSe,IAAAA,MA1DT,GA0DkB,YAAM;AACpB,UAAI,CAAC,MAAKC,KAAV,EAAiB;AACf;AACD;;AAED,UAAMlB,KAAK,GAAG,MAAKA,KAAnB;AACA,UAAMF,KAAK,GAAG,MAAKA,KAAnB;;AAEA,iCAAgDF,mBAAmB,CAAC,MAAKsB,KAAN,EAAalB,KAAK,CAACE,IAAnB,CAAnE,CAAQiB,UAAR,wBAAQA,UAAR,CAAoBC,SAApB,wBAAoBA,SAApB,CAA+BC,YAA/B,wBAA+BA,YAA/B;;AAEA,UAAI,CAACA,YAAD,IAAiB,CAACvB,KAAK,CAACG,MAA5B,EAAoC;AAClC;AACD;;AAED,UAAIH,KAAK,CAACG,MAAN,KAAiBoB,YAAjB,IAAiCvB,KAAK,CAACgB,IAAN,KAAeK,UAAhD,IAA8DrB,KAAK,CAACe,GAAN,KAAcO,SAAhF,EAA2F;AACzF,YAAME,WAAW,GAAG,MAAKC,uBAAL,EAApB;;AAEA,YAAID,WAAW,KAAKxB,KAAK,CAACwB,WAA1B,EAAuC;AACrC,gBAAKtB,KAAL,CAAWwB,mBAAX,0BAAKxB,KAAL,CAAWwB,mBAAX,CAAiCF,WAAjC,EAA8CtB,KAAK,CAACE,IAApD;AACD;;AAED,cAAKuB,QAAL;AACK,cAAK3B,KADV;AAEEG,UAAAA,MAAM,EAAEoB,YAFV;AAGEP,UAAAA,IAAI,EAAEK,UAHR;AAIEN,UAAAA,GAAG,EAAEO,SAJP;AAKEE,UAAAA,WAAW,EAAXA,WALF;;AAOD;AACF,KAvFH;;AAyFSI,IAAAA,eAzFT,GAyF2B,UAACR,KAAD,EAAkC;AACzD,YAAKA,KAAL,GAAaA,KAAb;AACA,YAAKD,MAAL;AACD,KA5FH;;;;;;;;;;;;;;;;;;;;;;;;;;AAsHUF,IAAAA,SAtHV,GAsHsB,UAACY,OAAD,EAAiC;AACnD,UAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,CAACC,KAAD,UAAkB,MAAKD,iBAAL,CAAuBC,KAAvB,EAA8B,MAAK7B,KAAL,CAAWE,IAAzC,CAAlB,EAA1B;;AAEA,UAAI,CAAC,MAAK4B,IAAN,IAAcH,OAAlB,EAA2B;AACzBA,QAAAA,OAAO,CAACI,gBAAR,CAAyB,OAAzB,EAAkCH,iBAAlC,EAAqD,EAAEI,OAAO,EAAE,KAAX,EAArD;AACD;AACD,UAAI,MAAKF,IAAL,IAAa,CAACH,OAAlB,EAA2B;AACzB,cAAKG,IAAL,CAAUG,mBAAV,CAA8B,OAA9B,EAAuCL,iBAAvC;AACD;AACD,YAAKE,IAAL,GAAYH,OAAZ;AACD,KAhIH;;AAkIUX,IAAAA,qBAlIV,GAkIkC,UAACa,KAAD,EAA6C;AAC3E,UAAI,CAAC,MAAKX,KAAV,EAAiB;AACf;AACD;;AAED,mCAAqCzB,yBAAyB,CAAC,MAAKO,KAAL,CAAWE,IAAZ,CAA9D,CAAQgC,MAAR,0BAAQA,MAAR,CAAgBpB,IAAhB,0BAAgBA,IAAhB,CAAsBD,GAAtB,0BAAsBA,GAAtB,CAA2BsB,KAA3B,0BAA2BA,KAA3B;;AAEA,UAAMC,YAAY,GAAGP,KAAK,CAACM,KAAD,CAA1B;AACA,UAAME,MAAgB,GAAGC,MAAM,CAACC,QAAhC;AACA,UAAMC,gBAAgB,GAAG,MAAKtB,KAAL,CAAWL,GAAX,CAAzB;AACA,UAAMf,KAAK,GAAG,MAAKA,KAAnB;;AAEA,UAAM2C,SAAS,GAAG,SAAZA,SAAY,CAACC,cAAD,EAAgC;AAChD,YAAI,CAAC,MAAKxB,KAAV,EAAiB;AACf;AACD;;AAED,YAAMyB,KAAK,GAAG,CAAC,MAAKzB,KAAL,CAAWJ,IAAX,IAAmB,MAAKI,KAAL,CAAWgB,MAAX,CAApB,KAA2C,MAAKhB,KAAL,CAAWgB,MAAX,IAAqBpC,KAAK,CAACgB,IAAtE,CAAd;AACA,YAAM8B,KAAK,GAAG,CAACF,cAAc,CAACP,KAAD,CAAd,GAAwBC,YAAzB,IAAyCO,KAAvD;;AAEA,cAAKzB,KAAL,CAAWL,GAAX,IAAkB2B,gBAAgB,GAAGI,KAArC;;AAEA,YAAIF,cAAc,CAACG,cAAnB,EAAmC;AACjCH,UAAAA,cAAc,CAACG,cAAf;AACD;;AAED,YAAIC,MAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCP,cAArC,EAAqD,aAArD,CAAJ,EAAyE;;AAErEA,UAAAA,cADF;;;AAIEQ,UAAAA,WAJF,GAIgB,KAJhB;AAKD;AACF,OArBD;;AAuBA,UAAMC,OAAO,GAAG,SAAVA,OAAU,GAAM;AACpBd,QAAAA,MAAM,CAACJ,mBAAP,CAA2B,WAA3B,EAAwCQ,SAAxC;AACAJ,QAAAA,MAAM,CAACJ,mBAAP,CAA2B,SAA3B,EAAsCkB,OAAtC;AACA,cAAK1B,QAAL,cAAmB,MAAK3B,KAAxB,IAA+BsD,SAAS,EAAE,KAA1C;AACD,OAJD;;AAMAf,MAAAA,MAAM,CAACN,gBAAP,CAAwB,WAAxB,EAAqCU,SAArC;AACAJ,MAAAA,MAAM,CAACN,gBAAP,CAAwB,SAAxB,EAAmCoB,OAAnC;AACA,YAAK1B,QAAL,cAAmB,MAAK3B,KAAxB,IAA+BsD,SAAS,EAAE,IAA1C;;AAEAvB,MAAAA,KAAK,CAACgB,cAAN;AACD,KAhLH;;AAkLUjB,IAAAA,iBAlLV,GAkL8B,UAACC,KAAD,EAAe3B,IAAf,EAAoC;AAC9D,UAAI,CAAC,MAAKgB,KAAN,IAAe,EAAEW,KAAK,YAAYwB,UAAnB,CAAf,IAAkDnD,IAAI,KAAK,GAAT,IAAgB,CAAC2B,KAAK,CAACyB,QAA7E,EAAwF;AACtF;AACD;;AAED,mCAA8B7D,yBAAyB,CAACS,IAAD,CAAvD,CAAQgC,MAAR,0BAAQA,MAAR,CAAgBpB,IAAhB,0BAAgBA,IAAhB,CAAsBD,GAAtB,0BAAsBA,GAAtB;;AAEA,UAAMM,UAAU,GAAG,MAAKD,KAAL,CAAWJ,IAAX,CAAnB;AACA,UAAMM,SAAS,GAAG,MAAKF,KAAL,CAAWL,GAAX,CAAlB;AACA,UAAM0C,YAAY,GAAG,MAAKrC,KAAL,CAAWgB,MAAX,CAArB;;AAEA,UAAIL,KAAK,CAAC2B,MAAN,GAAe,CAAf,IAAoBrC,UAAU,IAAIC,SAAS,GAAGmC,YAAlD,EAAgE;AAC9D;AACD;AACD,UAAI1B,KAAK,CAAC2B,MAAN,GAAe,CAAf,IAAoBpC,SAAS,IAAI,CAArC,EAAwC;AACtC;AACD;;AAED,YAAKF,KAAL,CAAWL,GAAX,KAAmBgB,KAAK,CAAC2B,MAAzB;;AAEA3B,MAAAA,KAAK,CAACgB,cAAN;AACD,KAvMH;;AAyMUtB,IAAAA,uBAzMV,GAyMoC,YAA4B;AAC5D,mCAAkC9B,yBAAyB,CAAC,MAAKO,KAAL,CAAWE,IAAZ,CAA3D,CAAQW,GAAR,0BAAQA,GAAR,CAAaC,IAAb,0BAAaA,IAAb,CAAmB2C,UAAnB,0BAAmBA,UAAnB;;AAEA,UAAI,CAAC,MAAKvC,KAAN,IAAe,MAAKA,KAAL,CAAWL,GAAX,MAAoB,CAAvC,EAA0C;AACxC,eAAO,OAAP;AACD;AACD;AACA;AACA,UAAM6C,YAAY,GAAG,MAAKxC,KAAL,CAAWJ,IAAX,IAAmB,MAAKI,KAAL,CAAWuC,UAAX,CAAxC;AACA,UAAIE,IAAI,CAACC,GAAL,CAASF,YAAY,GAAG,MAAKxC,KAAL,CAAWL,GAAX,CAAxB,KAA4C,CAAhD,EAAmD;AACjD,eAAO,KAAP;AACD;;AAED,aAAO,QAAP;AACD,KAvNH,uDASSgD,iBATT,GASE,6BAA2B,CACzB,KAAK5C,MAAL,GACD,CAXH,QAaS6C,kBAbT,GAaE,8BAA4B,CAC1B,KAAK7C,MAAL,GACD,CAfH,QAiBS8C,MAjBT,GAiBE,kBAAgB,mBACd,oBACE,oBAAC,YAAD,CAAc,QAAd,QACG,UAACvD,KAAD,EAAW,CACV,MAAI,CAACA,KAAL,GAAaA,KAAb,CACA,OAAO,MAAI,CAACT,UAAL,EAAP,CACD,CAJH,CADF,CAQD,CA1BH,QA8FSiE,QA9FT,GA8FE,kBAAgBC,KAAhB,EAAgC,CAC9B,IAAI,KAAKnE,KAAL,CAAWG,MAAX,IAAqB,KAAKH,KAAL,CAAWmE,KAAX,KAAqBA,KAA9C,EAAqD,CACnD,KAAKxC,QAAL,cAAmB,KAAK3B,KAAxB,IAA+BmE,KAAK,EAALA,KAA/B,KACD,CACF,CAlGH,wDAoGE,eAA4B,CAC1B,OAAO,KAAKnE,KAAL,CAAWwB,WAAlB,CACD,CAtGH,mCAwGE,eAA8B,UAC5B,IAAMxB,KAAK,GAAG,KAAKA,KAAnB,CAEA,IAAI,KAAKE,KAAL,CAAWE,IAAX,KAAoB,GAAxB,EAA6B,UAC3B,OAAOX,EAAE,CAACG,MAAM,CAACwE,UAAP,CAAkB,KAAK1D,KAAvB,CAAD,EAAgCb,aAAa,CAACwE,UAA9C,mBACNzE,MAAM,CAAC0E,eAAP,CAAuB,KAAK5D,KAA5B,CADM,IAC+BV,KAAK,CAACmE,KAAN,IAAenE,KAAK,CAACsD,SADpD,QAAT,CAGD,CAED,OAAO7D,EAAE,CAACG,MAAM,CAAC2E,UAAP,CAAkB,KAAK7D,KAAvB,CAAD,EAAgCb,aAAa,CAAC2E,UAA9C,mBACN5E,MAAM,CAAC6E,eAAP,CAAuB,KAAK/D,KAA5B,CADM,IAC+BV,KAAK,CAACmE,KAAN,IAAenE,KAAK,CAACsD,SADpD,QAAT,CAGD,CApHH,wBAA+B/D,KAAK,CAACmF,SAArC","sourcesContent":["import React from 'react';\n\nimport { Nullable } from '../../typings/utility-types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { defaultScrollbarState, scrollSizeParametersNames } from './ScrollContainer.constants';\nimport { styles, globalClasses } from './ScrollContainer.styles';\nimport { getScrollSizeParams } from './ScrollContainer.helpers';\n\nexport type ScrollAxis = 'x' | 'y';\nexport type ScrollBarScrollState = 'begin' | 'middle' | 'end';\n\nexport interface ScrollBarState {\n active: boolean;\n hover: boolean;\n scrolling: boolean;\n size: number;\n pos: number;\n scrollState: ScrollBarScrollState;\n}\n\nexport interface ScrollBarProps {\n invert: boolean;\n axis: ScrollAxis;\n className?: string;\n onScrollStateChange?: (state: ScrollBarScrollState, axis: ScrollAxis) => void;\n}\n\nexport class ScrollBar extends React.Component<ScrollBarProps, ScrollBarState> {\n private inner: Nullable<HTMLElement>;\n private theme!: Theme;\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 <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\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\n const classNames = cx(props.className, styles.scrollBar(this.theme), this.scrollBarStyles, {\n [styles.scrollBarInvert(this.theme)]: props.invert,\n });\n\n const inlineStyles: React.CSSProperties = {\n [customScrollPos]: state.pos,\n [customScrollSize]: state.size,\n };\n\n return (\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 );\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 (scrollState !== state.scrollState) {\n this.props.onScrollStateChange?.(scrollState, props.axis);\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 get scrollBarState() {\n return this.state.scrollState;\n }\n\n private get scrollBarStyles() {\n const state = this.state;\n\n if (this.props.axis === 'x') {\n return cx(styles.scrollBarX(this.theme), globalClasses.scrollbarX, {\n [styles.scrollBarXHover(this.theme)]: state.hover || state.scrolling,\n });\n }\n\n return cx(styles.scrollBarY(this.theme), globalClasses.scrollbarY, {\n [styles.scrollBarYHover(this.theme)]: state.hover || state.scrolling,\n });\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: Document = window.document;\n const initialScrollPos = this.inner[pos];\n const state = this.state;\n\n const mouseMove = (mouseMoveEvent: MouseEvent) => {\n if (!this.inner) {\n return;\n }\n\n const ratio = (this.inner[size] - this.inner[offset]) / (this.inner[offset] - state.size);\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, scrolling: false });\n };\n\n target.addEventListener('mousemove', mouseMove);\n target.addEventListener('mouseup', mouseUp);\n this.setState({ ...this.state, scrolling: true });\n\n event.preventDefault();\n };\n\n private handleScrollWheel = (event: Event, axis: ScrollAxis) => {\n if (!this.inner || !(event instanceof 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","CSSTransition","debounce","ThemeContext","cx","defaultScrollbarState","scrollSizeParametersNames","styles","globalClasses","getScrollSizeParams","ScrollBar","containerRef","createRef","state","renderMain","props","active","axis","customScrollPos","customScrollSize","classNames","className","scrollBar","theme","scrollBarStyles","scrollBarInvert","invert","visibleScrollBar","scrollingByMouseWheel","hideScrollBar","inlineStyles","pos","size","scrollBarContainerClassNames","offset","disableAnimations","enter","transition","enterActive","transitionActive","exit","transitionLeave","exitActive","transitionLeaveActive","refScroll","handleScrollMouseDown","reflow","event","inner","scrollSize","scrollPos","scrollActive","scrollState","getImmediateScrollState","onScrollStateChange","setState","type","setScrollingByMouseWheel","setInnerElement","element","handleScrollWheel","node","addEventListener","passive","removeEventListener","coord","initialCoord","target","window","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","hover","hideScrollBarDelay","componentDidMount","componentDidUpdate","render","setHover","scrollBarX","scrollbarX","scrollBarXHover","scrollBarY","scrollbarY","scrollBarYHover","scrollbarContainerX","scrollBarContainerX","scrollbarContainerY","scrollBarContainerY","Component"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport debounce from 'lodash.debounce';\n\nimport { Nullable } from '../../typings/utility-types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { defaultScrollbarState, scrollSizeParametersNames } from './ScrollContainer.constants';\nimport { styles, 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 scrollingByMouseWheel: boolean;\n}\n\nexport interface ScrollBarProps {\n invert: boolean;\n axis: ScrollAxis;\n className?: string;\n onScrollStateChange?: (state: ScrollBarScrollState, axis: ScrollAxis) => void;\n offset: ScrollContainerProps['offsetY'] | ScrollContainerProps['offsetX'];\n hideScrollBar?: boolean;\n hideScrollBarDelay?: number;\n disableAnimations?: 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\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 <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\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\n const classNames = cx(props.className, styles.scrollBar(this.theme), this.scrollBarStyles, {\n [styles.scrollBarInvert(this.theme)]: props.invert,\n [styles.visibleScrollBar()]: this.state.scrollingByMouseWheel || !this.props.hideScrollBar,\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 <CSSTransition\n appear={!props.disableAnimations}\n exit={!props.disableAnimations}\n in={this.state.scrollingByMouseWheel}\n classNames={{\n enter: styles.transition(),\n enterActive: styles.transitionActive(),\n exit: styles.transitionLeave(),\n exitActive: styles.transitionLeaveActive(),\n }}\n timeout={{\n enter: 100,\n exit: 300,\n }}\n >\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 </CSSTransition>\n </div>\n );\n };\n\n public reflow = (event?: React.UIEvent<HTMLDivElement>) => {\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 (scrollState !== state.scrollState) {\n this.props.onScrollStateChange?.(scrollState, props.axis);\n }\n\n this.setState({\n ...this.state,\n active: scrollActive,\n size: scrollSize,\n pos: scrollPos,\n scrollState,\n });\n event && event.type === 'scroll' && props.hideScrollBar && this.setScrollingByMouseWheel();\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 if (!hover) {\n this.props.hideScrollBar && this.hideScrollBar();\n }\n }\n }\n\n public get scrollBarState() {\n return this.state.scrollState;\n }\n\n private get scrollBarStyles() {\n const state = this.state;\n\n if (this.props.axis === 'x') {\n return cx(styles.scrollBarX(this.theme), globalClasses.scrollbarX, {\n [styles.scrollBarXHover(this.theme)]: state.hover || state.scrollingByMouseDrag,\n });\n }\n\n return 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\n if (axis === 'x') {\n return cx(globalClasses.scrollbarContainerX, styles.scrollBarContainerX(this.theme));\n }\n\n return 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: Document = window.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 this.hideScrollBar();\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 || !(event instanceof 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 private setScrollingByMouseWheel = () => {\n if (!this.state.scrollingByMouseWheel) {\n this.setState({ scrollingByMouseWheel: true });\n }\n this.hideScrollBar();\n };\n\n private readonly hideScrollBar = debounce(() => {\n !this.state.scrollingByMouseDrag && !this.state.hover && this.setState({ scrollingByMouseWheel: false });\n }, this.props.hideScrollBarDelay);\n}\n"]}
@@ -1,23 +1,30 @@
1
1
  import React from 'react';
2
2
  import { Nullable } from '../../typings/utility-types';
3
+ import { ScrollContainerProps } from './ScrollContainer';
3
4
  export declare type ScrollAxis = 'x' | 'y';
4
5
  export declare type ScrollBarScrollState = 'begin' | 'middle' | 'end';
5
6
  export interface ScrollBarState {
6
7
  active: boolean;
7
8
  hover: boolean;
8
- scrolling: boolean;
9
+ scrollingByMouseDrag: boolean;
9
10
  size: number;
10
11
  pos: number;
11
12
  scrollState: ScrollBarScrollState;
13
+ scrollingByMouseWheel: boolean;
12
14
  }
13
15
  export interface ScrollBarProps {
14
16
  invert: boolean;
15
17
  axis: ScrollAxis;
16
18
  className?: string;
17
19
  onScrollStateChange?: (state: ScrollBarScrollState, axis: ScrollAxis) => void;
20
+ offset: ScrollContainerProps['offsetY'] | ScrollContainerProps['offsetX'];
21
+ hideScrollBar?: boolean;
22
+ hideScrollBarDelay?: number;
23
+ disableAnimations?: boolean;
18
24
  }
19
25
  export declare class ScrollBar extends React.Component<ScrollBarProps, ScrollBarState> {
20
26
  private inner;
27
+ private containerRef;
21
28
  private theme;
22
29
  node: Nullable<HTMLElement>;
23
30
  state: ScrollBarState;
@@ -25,13 +32,16 @@ export declare class ScrollBar extends React.Component<ScrollBarProps, ScrollBar
25
32
  componentDidUpdate(): void;
26
33
  render(): JSX.Element;
27
34
  private renderMain;
28
- reflow: () => void;
35
+ reflow: (event?: React.UIEvent<HTMLDivElement, UIEvent> | undefined) => void;
29
36
  setInnerElement: (inner: Nullable<HTMLElement>) => void;
30
37
  setHover(hover: boolean): void;
31
38
  get scrollBarState(): ScrollBarScrollState;
32
39
  private get scrollBarStyles();
40
+ private get scrollBarContainerClassNames();
33
41
  private refScroll;
34
42
  private handleScrollMouseDown;
35
43
  private handleScrollWheel;
36
44
  private getImmediateScrollState;
45
+ private setScrollingByMouseWheel;
46
+ private readonly hideScrollBar;
37
47
  }
@@ -11,6 +11,8 @@ import { cx } from "../../../lib/theming/Emotion";
11
11
  import { isIE11 } from "../../../lib/client";
12
12
  import { rootNode } from "../../../lib/rootNode";
13
13
  import { getDOMRect } from "../../../lib/dom/getDOMRect";
14
+ import { createPropsGetter } from "../../../lib/createPropsGetter";
15
+ import { isTestEnv } from "../../../lib/currentEnvironment";
14
16
  import { styles, globalClasses } from "../ScrollContainer.styles";
15
17
  import { scrollSizeParametersNames } from "../ScrollContainer.constants";
16
18
  import { getScrollYOffset, convertScrollbarXScrollState, convertScrollbarYScrollState } from "../ScrollContainer.helpers";
@@ -30,6 +32,7 @@ export var ScrollContainer = rootNode(_class = (_temp = _class2 = /*#__PURE__*/f
30
32
  }
31
33
 
32
34
  _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;
35
+ _this.getProps = createPropsGetter(ScrollContainer.defaultProps);
33
36
 
34
37
  _this.render = function () {
35
38
  var props = _this.props;
@@ -39,7 +42,7 @@ export var ScrollContainer = rootNode(_class = (_temp = _class2 = /*#__PURE__*/f
39
42
  }
40
43
 
41
44
  var innerStyle = {
42
- scrollBehavior: props.scrollBehaviour,
45
+ scrollBehavior: _this.getProps().scrollBehaviour,
43
46
  maxHeight: props.maxHeight,
44
47
  maxWidth: props.maxWidth
45
48
  };
@@ -66,11 +69,25 @@ export var ScrollContainer = rootNode(_class = (_temp = _class2 = /*#__PURE__*/f
66
69
 
67
70
  _this.renderScrollbar = function (axis) {
68
71
  var refScrollBar = axis === 'x' ? _this.refScrollBarX : _this.refScrollBarY;
72
+
73
+ var _this$getProps = _this.getProps(),
74
+ offsetY = _this$getProps.offsetY,
75
+ offsetX = _this$getProps.offsetX,
76
+ invert = _this$getProps.invert,
77
+ hideScrollBar = _this$getProps.hideScrollBar,
78
+ disableAnimations = _this$getProps.disableAnimations,
79
+ hideScrollBarDelay = _this$getProps.hideScrollBarDelay;
80
+
81
+ var offset = axis === 'x' ? offsetX : offsetY;
69
82
  return /*#__PURE__*/React.createElement(ScrollBar, {
70
83
  axis: axis,
71
84
  ref: refScrollBar,
72
- invert: _this.props.invert,
73
- onScrollStateChange: _this.handleScrollStateChange
85
+ invert: invert,
86
+ onScrollStateChange: _this.handleScrollStateChange,
87
+ offset: offset,
88
+ hideScrollBar: hideScrollBar,
89
+ disableAnimations: disableAnimations,
90
+ hideScrollBarDelay: hideScrollBarDelay
74
91
  });
75
92
  };
76
93
 
@@ -99,7 +116,7 @@ export var ScrollContainer = rootNode(_class = (_temp = _class2 = /*#__PURE__*/f
99
116
  };
100
117
 
101
118
  _this.refInner = function (element) {
102
- if (!_this.inner && element && _this.props.preventWindowScroll) {
119
+ if (!_this.inner && element && _this.getProps().preventWindowScroll) {
103
120
  element.addEventListener('wheel', _this.handleInnerScrollWheel, {
104
121
  passive: false
105
122
  });
@@ -113,13 +130,13 @@ export var ScrollContainer = rootNode(_class = (_temp = _class2 = /*#__PURE__*/f
113
130
  };
114
131
 
115
132
  _this.handleNativeScroll = function (event) {
116
- var _this$scrollX, _this$scrollY;
133
+ var _this$scrollY, _this$scrollX;
117
134
 
118
- (_this$scrollX = _this.scrollX) == null ? void 0 : _this$scrollX.reflow();
119
- (_this$scrollY = _this.scrollY) == null ? void 0 : _this$scrollY.reflow();
135
+ (_this$scrollY = _this.scrollY) == null ? void 0 : _this$scrollY.reflow(event);
136
+ (_this$scrollX = _this.scrollX) == null ? void 0 : _this$scrollX.reflow(event);
120
137
  _this.props.onScroll == null ? void 0 : _this.props.onScroll(event);
121
138
 
122
- if (_this.props.preventWindowScroll) {
139
+ if (_this.getProps().preventWindowScroll) {
123
140
  event.preventDefault();
124
141
  return;
125
142
  }
@@ -181,12 +198,14 @@ export var ScrollContainer = rootNode(_class = (_temp = _class2 = /*#__PURE__*/f
181
198
  };
182
199
 
183
200
  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {
201
+ var preventWindowScroll = this.getProps().preventWindowScroll;
202
+
184
203
  if (this.inner) {
185
- if (prevProps.preventWindowScroll && !this.props.preventWindowScroll) {
204
+ if (prevProps.preventWindowScroll && !preventWindowScroll) {
186
205
  this.inner.removeEventListener('wheel', this.handleInnerScrollWheel);
187
206
  }
188
207
 
189
- if (!prevProps.preventWindowScroll && this.props.preventWindowScroll) {
208
+ if (!prevProps.preventWindowScroll && preventWindowScroll) {
190
209
  this.inner.addEventListener('wheel', this.handleInnerScrollWheel, {
191
210
  passive: false
192
211
  });
@@ -195,7 +214,7 @@ export var ScrollContainer = rootNode(_class = (_temp = _class2 = /*#__PURE__*/f
195
214
  };
196
215
  /**
197
216
  * @public
198
- * @param {HTMLElement} element
217
+ * @param {Element} element
199
218
  */
200
219
 
201
220
 
@@ -275,5 +294,8 @@ export var ScrollContainer = rootNode(_class = (_temp = _class2 = /*#__PURE__*/f
275
294
  }, _class2.defaultProps = {
276
295
  invert: false,
277
296
  scrollBehaviour: 'auto',
278
- preventWindowScroll: false
297
+ preventWindowScroll: false,
298
+ hideScrollBar: false,
299
+ disableAnimations: isTestEnv,
300
+ hideScrollBarDelay: 500
279
301
  }, _temp)) || _class;
@@ -1 +1 @@
1
- {"version":3,"sources":["ScrollContainer.tsx"],"names":["React","PropTypes","LayoutEvents","CommonWrapper","cx","isIE11","rootNode","getDOMRect","styles","globalClasses","scrollSizeParametersNames","getScrollYOffset","convertScrollbarXScrollState","convertScrollbarYScrollState","ScrollBar","ScrollContainerDataTids","root","inner","ScrollContainer","render","props","disabled","children","innerStyle","scrollBehavior","scrollBehaviour","maxHeight","maxWidth","scrollbarY","renderScrollbar","scrollbarX","setRootNode","handleMouseMove","handleMouseLeave","refInner","innerIE11","handleNativeScroll","axis","refScrollBar","refScrollBarX","refScrollBarY","invert","handleScrollStateChange","scrollState","scrollY","scrollX","scrollXState","onScrollStateChangeX","scrollYState","onScrollStateChange","onScrollStateChangeY","scrollbar","element","preventWindowScroll","addEventListener","handleInnerScrollWheel","passive","removeEventListener","event","reflow","onScroll","preventDefault","emit","WheelEvent","shiftKey","hasScrollBar","pos","size","offset","deltaY","right","currentTarget","pageX","bottom","pageY","setHover","componentDidMount","setInnerElement","componentDidUpdate","prevProps","scrollTo","scrollLeft","offsetLeft","scrollTop","scrollToTop","scrollToBottom","scrollHeight","offsetHeight","scrollToLeft","scrollToRight","scrollWidth","offsetWidth","Component","__KONTUR_REACT_UI__","propTypes","bool","oneOfType","string","number","oneOf","func","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { Nullable } from '../../typings/utility-types';\nimport { cx } from '../../lib/theming/Emotion';\nimport { isIE11 } from '../../lib/client';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\n\nimport { styles, globalClasses } from './ScrollContainer.styles';\nimport { scrollSizeParametersNames } from './ScrollContainer.constants';\nimport {\n getScrollYOffset,\n convertScrollbarXScrollState,\n convertScrollbarYScrollState,\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\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\nexport const ScrollContainerDataTids = {\n root: 'ScrollContainer__root',\n inner: 'ScrollContainer__inner',\n} as const;\n\n@rootNode\nexport class ScrollContainer extends React.Component<ScrollContainerProps> {\n public static __KONTUR_REACT_UI__ = 'ScrollContainer';\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 = {\n invert: false,\n scrollBehaviour: 'auto',\n preventWindowScroll: false,\n };\n\n private scrollX: Nullable<ScrollBar>;\n private scrollY: Nullable<ScrollBar>;\n private inner: Nullable<HTMLElement>;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n this.scrollX?.setInnerElement(this.inner);\n this.scrollY?.setInnerElement(this.inner);\n }\n\n public componentDidUpdate(prevProps: ScrollContainerProps) {\n if (this.inner) {\n if (prevProps.preventWindowScroll && !this.props.preventWindowScroll) {\n this.inner.removeEventListener('wheel', this.handleInnerScrollWheel);\n }\n if (!prevProps.preventWindowScroll && this.props.preventWindowScroll) {\n this.inner.addEventListener('wheel', this.handleInnerScrollWheel, { passive: false });\n }\n }\n }\n\n public render = () => {\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: props.scrollBehaviour,\n maxHeight: props.maxHeight,\n maxWidth: props.maxWidth,\n };\n\n const scrollbarY = this.renderScrollbar('y');\n const scrollbarX = this.renderScrollbar('x');\n\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={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 {HTMLElement} 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 private 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 refScrollBar = axis === 'x' ? this.refScrollBarX : this.refScrollBarY;\n\n return (\n <ScrollBar\n axis={axis}\n ref={refScrollBar}\n invert={this.props.invert}\n onScrollStateChange={this.handleScrollStateChange}\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 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.props.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.scrollX?.reflow();\n this.scrollY?.reflow();\n\n this.props.onScroll?.(event);\n if (this.props.preventWindowScroll) {\n event.preventDefault();\n return;\n }\n LayoutEvents.emit();\n };\n\n private handleInnerScrollWheel = (event: Event) => {\n if (!this.inner || !(event instanceof 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\n private handleMouseLeave = () => {\n this.scrollY?.setHover(false);\n this.scrollX?.setHover(false);\n };\n}\n"]}
1
+ {"version":3,"sources":["ScrollContainer.tsx"],"names":["React","PropTypes","LayoutEvents","CommonWrapper","cx","isIE11","rootNode","getDOMRect","createPropsGetter","isTestEnv","styles","globalClasses","scrollSizeParametersNames","getScrollYOffset","convertScrollbarXScrollState","convertScrollbarYScrollState","ScrollBar","ScrollContainerDataTids","root","inner","ScrollContainer","getProps","defaultProps","render","props","disabled","children","innerStyle","scrollBehavior","scrollBehaviour","maxHeight","maxWidth","scrollbarY","renderScrollbar","scrollbarX","setRootNode","handleMouseMove","handleMouseLeave","refInner","innerIE11","handleNativeScroll","axis","refScrollBar","refScrollBarX","refScrollBarY","offsetY","offsetX","invert","hideScrollBar","disableAnimations","hideScrollBarDelay","offset","handleScrollStateChange","scrollState","scrollY","scrollX","scrollXState","onScrollStateChangeX","scrollYState","onScrollStateChange","onScrollStateChangeY","scrollbar","element","preventWindowScroll","addEventListener","handleInnerScrollWheel","passive","removeEventListener","event","reflow","onScroll","preventDefault","emit","WheelEvent","shiftKey","hasScrollBar","pos","size","deltaY","right","currentTarget","pageX","bottom","pageY","setHover","componentDidMount","setInnerElement","componentDidUpdate","prevProps","scrollTo","scrollLeft","offsetLeft","scrollTop","scrollToTop","scrollToBottom","scrollHeight","offsetHeight","scrollToLeft","scrollToRight","scrollWidth","offsetWidth","Component","__KONTUR_REACT_UI__","propTypes","bool","oneOfType","string","number","oneOf","func"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { Nullable } from '../../typings/utility-types';\nimport { cx } from '../../lib/theming/Emotion';\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';\n\nimport { styles, globalClasses } from './ScrollContainer.styles';\nimport { scrollSizeParametersNames } from './ScrollContainer.constants';\nimport {\n getScrollYOffset,\n convertScrollbarXScrollState,\n convertScrollbarYScrollState,\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 */\n hideScrollBar?: boolean;\n /**\n * Задержка перед скрытием скроллбара, ms. Работает только если `hideScrollBar = true`\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' | 'scrollBehaviour' | 'preventWindowScroll' | 'hideScrollBar' | 'disableAnimations' | 'hideScrollBarDelay'\n >\n>;\n\n@rootNode\nexport class ScrollContainer extends React.Component<ScrollContainerProps> {\n public static __KONTUR_REACT_UI__ = 'ScrollContainer';\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 };\n\n private getProps = createPropsGetter(ScrollContainer.defaultProps);\n\n private scrollX: Nullable<ScrollBar>;\n private scrollY: Nullable<ScrollBar>;\n private inner: Nullable<HTMLElement>;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n this.scrollX?.setInnerElement(this.inner);\n this.scrollY?.setInnerElement(this.inner);\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\n public render = () => {\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\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={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 private 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 refScrollBar = axis === 'x' ? this.refScrollBarX : this.refScrollBarY;\n const { offsetY, offsetX, invert, hideScrollBar, disableAnimations, hideScrollBarDelay } = this.getProps();\n\n const offset = axis === 'x' ? offsetX : offsetY;\n\n return (\n <ScrollBar\n axis={axis}\n ref={refScrollBar}\n invert={invert}\n onScrollStateChange={this.handleScrollStateChange}\n offset={offset}\n hideScrollBar={hideScrollBar}\n disableAnimations={disableAnimations}\n hideScrollBarDelay={hideScrollBarDelay}\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 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(event);\n this.scrollX?.reflow(event);\n\n this.props.onScroll?.(event);\n if (this.getProps().preventWindowScroll) {\n event.preventDefault();\n return;\n }\n LayoutEvents.emit();\n };\n\n private handleInnerScrollWheel = (event: Event) => {\n if (!this.inner || !(event instanceof 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\n private handleMouseLeave = () => {\n this.scrollY?.setHover(false);\n this.scrollX?.setHover(false);\n };\n}\n"]}