@skbkontur/react-ui 3.6.0 → 3.8.0

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 (281) hide show
  1. package/CHANGELOG.md +71 -0
  2. package/cjs/components/Button/Button.d.ts +1 -0
  3. package/cjs/components/Button/Button.js +7 -4
  4. package/cjs/components/Button/Button.js.map +1 -1
  5. package/cjs/components/Button/Button.styles.js +2 -2
  6. package/cjs/components/Button/Button.styles.js.map +1 -1
  7. package/cjs/components/Checkbox/Checkbox.js +9 -8
  8. package/cjs/components/Checkbox/Checkbox.js.map +1 -1
  9. package/cjs/components/Checkbox/Checkbox.styles.js +3 -2
  10. package/cjs/components/Checkbox/Checkbox.styles.js.map +1 -1
  11. package/cjs/components/CurrencyLabel/CurrencyLabel.js +14 -5
  12. package/cjs/components/CurrencyLabel/CurrencyLabel.js.map +1 -1
  13. package/cjs/components/CurrencyLabel/CurrencyLabel.styles.d.ts +4 -0
  14. package/cjs/components/CurrencyLabel/CurrencyLabel.styles.js +9 -0
  15. package/cjs/components/CurrencyLabel/CurrencyLabel.styles.js.map +1 -0
  16. package/cjs/components/FxInput/FxInput.js +1 -1
  17. package/cjs/components/FxInput/FxInput.js.map +1 -1
  18. package/cjs/components/Input/Input.styles.js +1 -1
  19. package/cjs/components/Input/Input.styles.js.map +1 -1
  20. package/cjs/components/Kebab/Kebab.js +2 -2
  21. package/cjs/components/Kebab/Kebab.js.map +1 -1
  22. package/cjs/components/Link/Link.js +2 -2
  23. package/cjs/components/Link/Link.js.map +1 -1
  24. package/cjs/components/Loader/Loader.d.ts +3 -1
  25. package/cjs/components/Loader/Loader.js +20 -1
  26. package/cjs/components/Loader/Loader.js.map +1 -1
  27. package/cjs/components/MenuItem/MenuItem.md +1 -1
  28. package/cjs/components/MenuItem/MenuItem.styles.js +3 -2
  29. package/cjs/components/MenuItem/MenuItem.styles.js.map +1 -1
  30. package/cjs/components/Modal/Modal.styles.d.ts +1 -0
  31. package/cjs/components/Modal/Modal.styles.js +24 -21
  32. package/cjs/components/Modal/Modal.styles.js.map +1 -1
  33. package/cjs/components/Modal/ModalClose.js +23 -3
  34. package/cjs/components/Modal/ModalClose.js.map +1 -1
  35. package/cjs/components/Paging/Paging.js +2 -2
  36. package/cjs/components/Paging/Paging.js.map +1 -1
  37. package/cjs/components/Paging/Paging.styles.js +2 -1
  38. package/cjs/components/Paging/Paging.styles.js.map +1 -1
  39. package/cjs/components/Radio/Radio.d.ts +9 -1
  40. package/cjs/components/Radio/Radio.js +37 -4
  41. package/cjs/components/Radio/Radio.js.map +1 -1
  42. package/cjs/components/Radio/Radio.styles.d.ts +1 -1
  43. package/cjs/components/Radio/Radio.styles.js +5 -10
  44. package/cjs/components/Radio/Radio.styles.js.map +1 -1
  45. package/cjs/components/ScrollContainer/ScrollBar.d.ts +37 -0
  46. package/cjs/components/ScrollContainer/ScrollBar.js +244 -0
  47. package/cjs/components/ScrollContainer/ScrollBar.js.map +1 -0
  48. package/cjs/components/ScrollContainer/ScrollContainer.constants.d.ts +23 -0
  49. package/cjs/components/ScrollContainer/ScrollContainer.constants.js +33 -0
  50. package/cjs/components/ScrollContainer/ScrollContainer.constants.js.map +1 -0
  51. package/cjs/components/ScrollContainer/ScrollContainer.d.ts +38 -23
  52. package/cjs/components/ScrollContainer/ScrollContainer.helpers.d.ts +10 -0
  53. package/cjs/components/ScrollContainer/ScrollContainer.helpers.js +62 -0
  54. package/cjs/components/ScrollContainer/ScrollContainer.helpers.js.map +1 -0
  55. package/cjs/components/ScrollContainer/ScrollContainer.js +81 -153
  56. package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
  57. package/cjs/components/ScrollContainer/ScrollContainer.md +62 -13
  58. package/cjs/components/ScrollContainer/ScrollContainer.styles.d.ts +12 -3
  59. package/cjs/components/ScrollContainer/ScrollContainer.styles.js +72 -9
  60. package/cjs/components/ScrollContainer/ScrollContainer.styles.js.map +1 -1
  61. package/cjs/components/SidePage/SidePage.d.ts +1 -2
  62. package/cjs/components/SidePage/SidePage.js +1 -5
  63. package/cjs/components/SidePage/SidePage.js.map +1 -1
  64. package/cjs/components/SidePage/SidePage.styles.d.ts +2 -1
  65. package/cjs/components/SidePage/SidePage.styles.js +44 -28
  66. package/cjs/components/SidePage/SidePage.styles.js.map +1 -1
  67. package/cjs/components/SidePage/SidePageHeader.d.ts +4 -1
  68. package/cjs/components/SidePage/SidePageHeader.js +33 -23
  69. package/cjs/components/SidePage/SidePageHeader.js.map +1 -1
  70. package/cjs/components/Switcher/Switcher.js +1 -1
  71. package/cjs/components/Switcher/Switcher.js.map +1 -1
  72. package/cjs/components/Switcher/Switcher.styles.d.ts +1 -1
  73. package/cjs/components/Switcher/Switcher.styles.js +3 -2
  74. package/cjs/components/Switcher/Switcher.styles.js.map +1 -1
  75. package/cjs/components/Tabs/Tab.d.ts +0 -3
  76. package/cjs/components/Tabs/Tab.js +3 -13
  77. package/cjs/components/Tabs/Tab.js.map +1 -1
  78. package/cjs/components/Tabs/Tab.styles.js +2 -2
  79. package/cjs/components/Tabs/Tab.styles.js.map +1 -1
  80. package/cjs/components/Toggle/Toggle.js +6 -5
  81. package/cjs/components/Toggle/Toggle.js.map +1 -1
  82. package/cjs/components/Toggle/Toggle.styles.d.ts +1 -0
  83. package/cjs/components/Toggle/Toggle.styles.js +26 -16
  84. package/cjs/components/Toggle/Toggle.styles.js.map +1 -1
  85. package/cjs/components/Token/Token.styles.js +8 -9
  86. package/cjs/components/Token/Token.styles.js.map +1 -1
  87. package/cjs/components/TokenInput/TokenInput.d.ts +8 -0
  88. package/cjs/components/TokenInput/TokenInput.js +24 -2
  89. package/cjs/components/TokenInput/TokenInput.js.map +1 -1
  90. package/cjs/components/Tooltip/Tooltip.styles.js +2 -1
  91. package/cjs/components/Tooltip/Tooltip.styles.js.map +1 -1
  92. package/cjs/internal/CustomComboBox/ComboBoxView.js +2 -1
  93. package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  94. package/cjs/internal/CustomComboBox/CustomComboBoxReducer.js +3 -2
  95. package/cjs/internal/CustomComboBox/CustomComboBoxReducer.js.map +1 -1
  96. package/cjs/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.js +5 -7
  97. package/cjs/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.js.map +1 -1
  98. package/cjs/internal/InputLikeText/InputLikeText.js +2 -1
  99. package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
  100. package/cjs/internal/PopupMenu/PopupMenu.js +1 -1
  101. package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
  102. package/cjs/internal/RenderContainer/RenderContainer.js +2 -1
  103. package/cjs/internal/RenderContainer/RenderContainer.js.map +1 -1
  104. package/cjs/internal/ThemePlayground/darkTheme.js +3 -3
  105. package/cjs/internal/ThemePlayground/darkTheme.js.map +1 -1
  106. package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  107. package/cjs/internal/icons/CrossIcon.js +8 -1
  108. package/cjs/internal/icons/CrossIcon.js.map +1 -1
  109. package/cjs/internal/themes/DefaultTheme.d.ts +23 -7
  110. package/cjs/internal/themes/DefaultTheme.js +77 -32
  111. package/cjs/internal/themes/DefaultTheme.js.map +1 -1
  112. package/cjs/internal/themes/FlatTheme.d.ts +4 -4
  113. package/cjs/internal/themes/FlatTheme.js +16 -8
  114. package/cjs/internal/themes/FlatTheme.js.map +1 -1
  115. package/cjs/internal/themes/Theme8px.d.ts +0 -5
  116. package/cjs/internal/themes/Theme8px.js +2 -12
  117. package/cjs/internal/themes/Theme8px.js.map +1 -1
  118. package/cjs/lib/Upgrades.d.ts +2 -0
  119. package/cjs/lib/Upgrades.js +14 -0
  120. package/cjs/lib/Upgrades.js.map +1 -1
  121. package/cjs/lib/events/keyListener.d.ts +7 -0
  122. package/cjs/lib/events/keyListener.js +22 -0
  123. package/cjs/lib/events/keyListener.js.map +1 -0
  124. package/cjs/lib/events/keyboard/identifiers.d.ts +1 -0
  125. package/cjs/lib/events/keyboard/identifiers.js +6 -1
  126. package/cjs/lib/events/keyboard/identifiers.js.map +1 -1
  127. package/cjs/lib/events/tabListener.d.ts +1 -6
  128. package/cjs/lib/events/tabListener.js +2 -15
  129. package/cjs/lib/events/tabListener.js.map +1 -1
  130. package/cjs/lib/locale/LOCALECONTEXT.md +1 -1
  131. package/cjs/lib/styles/ColorFunctions.js +1 -1
  132. package/cjs/lib/styles/ColorFunctions.js.map +1 -1
  133. package/cjs/lib/theming/Emotion.js +1 -1
  134. package/cjs/lib/theming/Emotion.js.map +1 -1
  135. package/cjs/lib/theming/ThemeContext.md +1 -1
  136. package/cjs/lib/utils.d.ts +7 -0
  137. package/cjs/lib/utils.js +12 -2
  138. package/cjs/lib/utils.js.map +1 -1
  139. package/components/Button/Button/Button.js +5 -4
  140. package/components/Button/Button/Button.js.map +1 -1
  141. package/components/Button/Button.d.ts +1 -0
  142. package/components/Button/Button.styles/Button.styles.js +1 -1
  143. package/components/Button/Button.styles/Button.styles.js.map +1 -1
  144. package/components/Checkbox/Checkbox/Checkbox.js +5 -5
  145. package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
  146. package/components/Checkbox/Checkbox.styles/Checkbox.styles.js +2 -2
  147. package/components/Checkbox/Checkbox.styles/Checkbox.styles.js.map +1 -1
  148. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js +11 -5
  149. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js.map +1 -1
  150. package/components/CurrencyLabel/CurrencyLabel.styles/CurrencyLabel.styles.js +10 -0
  151. package/components/CurrencyLabel/CurrencyLabel.styles/CurrencyLabel.styles.js.map +1 -0
  152. package/components/CurrencyLabel/CurrencyLabel.styles/package.json +6 -0
  153. package/components/CurrencyLabel/CurrencyLabel.styles.d.ts +4 -0
  154. package/components/FxInput/FxInput/FxInput.js +2 -1
  155. package/components/FxInput/FxInput/FxInput.js.map +1 -1
  156. package/components/Input/Input.styles/Input.styles.js +1 -1
  157. package/components/Input/Input.styles/Input.styles.js.map +1 -1
  158. package/components/Kebab/Kebab/Kebab.js +2 -2
  159. package/components/Kebab/Kebab/Kebab.js.map +1 -1
  160. package/components/Link/Link/Link.js +2 -2
  161. package/components/Link/Link/Link.js.map +1 -1
  162. package/components/Loader/Loader/Loader.js +34 -14
  163. package/components/Loader/Loader/Loader.js.map +1 -1
  164. package/components/Loader/Loader.d.ts +3 -1
  165. package/components/MenuItem/MenuItem.md +1 -1
  166. package/components/MenuItem/MenuItem.styles/MenuItem.styles.js +1 -1
  167. package/components/MenuItem/MenuItem.styles/MenuItem.styles.js.map +1 -1
  168. package/components/Modal/Modal.styles/Modal.styles.js +18 -15
  169. package/components/Modal/Modal.styles/Modal.styles.js.map +1 -1
  170. package/components/Modal/Modal.styles.d.ts +1 -0
  171. package/components/Modal/ModalClose/ModalClose.js +25 -2
  172. package/components/Modal/ModalClose/ModalClose.js.map +1 -1
  173. package/components/Paging/Paging/Paging.js +2 -2
  174. package/components/Paging/Paging/Paging.js.map +1 -1
  175. package/components/Paging/Paging.styles/Paging.styles.js +1 -1
  176. package/components/Paging/Paging.styles/Paging.styles.js.map +1 -1
  177. package/components/Radio/Radio/Radio.js +36 -3
  178. package/components/Radio/Radio/Radio.js.map +1 -1
  179. package/components/Radio/Radio.d.ts +9 -1
  180. package/components/Radio/Radio.styles/Radio.styles.js +3 -3
  181. package/components/Radio/Radio.styles/Radio.styles.js.map +1 -1
  182. package/components/Radio/Radio.styles.d.ts +1 -1
  183. package/components/ScrollContainer/ScrollBar/ScrollBar.js +254 -0
  184. package/components/ScrollContainer/ScrollBar/ScrollBar.js.map +1 -0
  185. package/components/ScrollContainer/ScrollBar/package.json +6 -0
  186. package/components/ScrollContainer/ScrollBar.d.ts +37 -0
  187. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +121 -205
  188. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
  189. package/components/ScrollContainer/ScrollContainer.constants/ScrollContainer.constants.js +31 -0
  190. package/components/ScrollContainer/ScrollContainer.constants/ScrollContainer.constants.js.map +1 -0
  191. package/components/ScrollContainer/ScrollContainer.constants/package.json +6 -0
  192. package/components/ScrollContainer/ScrollContainer.constants.d.ts +23 -0
  193. package/components/ScrollContainer/ScrollContainer.d.ts +38 -23
  194. package/components/ScrollContainer/ScrollContainer.helpers/ScrollContainer.helpers.js +55 -0
  195. package/components/ScrollContainer/ScrollContainer.helpers/ScrollContainer.helpers.js.map +1 -0
  196. package/components/ScrollContainer/ScrollContainer.helpers/package.json +6 -0
  197. package/components/ScrollContainer/ScrollContainer.helpers.d.ts +10 -0
  198. package/components/ScrollContainer/ScrollContainer.md +62 -13
  199. package/components/ScrollContainer/ScrollContainer.styles/ScrollContainer.styles.js +23 -9
  200. package/components/ScrollContainer/ScrollContainer.styles/ScrollContainer.styles.js.map +1 -1
  201. package/components/ScrollContainer/ScrollContainer.styles.d.ts +12 -3
  202. package/components/SidePage/SidePage/SidePage.js +2 -4
  203. package/components/SidePage/SidePage/SidePage.js.map +1 -1
  204. package/components/SidePage/SidePage.d.ts +1 -2
  205. package/components/SidePage/SidePage.styles/SidePage.styles.js +20 -16
  206. package/components/SidePage/SidePage.styles/SidePage.styles.js.map +1 -1
  207. package/components/SidePage/SidePage.styles.d.ts +2 -1
  208. package/components/SidePage/SidePageHeader/SidePageHeader.js +40 -22
  209. package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
  210. package/components/SidePage/SidePageHeader.d.ts +4 -1
  211. package/components/Switcher/Switcher/Switcher.js +1 -1
  212. package/components/Switcher/Switcher/Switcher.js.map +1 -1
  213. package/components/Switcher/Switcher.styles/Switcher.styles.js +2 -2
  214. package/components/Switcher/Switcher.styles/Switcher.styles.js.map +1 -1
  215. package/components/Switcher/Switcher.styles.d.ts +1 -1
  216. package/components/Tabs/Tab/Tab.js +2 -16
  217. package/components/Tabs/Tab/Tab.js.map +1 -1
  218. package/components/Tabs/Tab.d.ts +0 -3
  219. package/components/Tabs/Tab.styles/Tab.styles.js +1 -1
  220. package/components/Tabs/Tab.styles/Tab.styles.js.map +1 -1
  221. package/components/Toggle/Toggle/Toggle.js +5 -5
  222. package/components/Toggle/Toggle/Toggle.js.map +1 -1
  223. package/components/Toggle/Toggle.styles/Toggle.styles.js +15 -12
  224. package/components/Toggle/Toggle.styles/Toggle.styles.js.map +1 -1
  225. package/components/Toggle/Toggle.styles.d.ts +1 -0
  226. package/components/Token/Token.styles/Token.styles.js +2 -2
  227. package/components/Token/Token.styles/Token.styles.js.map +1 -1
  228. package/components/TokenInput/TokenInput/TokenInput.js +24 -2
  229. package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
  230. package/components/TokenInput/TokenInput.d.ts +8 -0
  231. package/components/Tooltip/Tooltip.styles/Tooltip.styles.js +1 -1
  232. package/components/Tooltip/Tooltip.styles/Tooltip.styles.js.map +1 -1
  233. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +2 -1
  234. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
  235. package/internal/CustomComboBox/CustomComboBoxReducer/CustomComboBoxReducer.js +3 -2
  236. package/internal/CustomComboBox/CustomComboBoxReducer/CustomComboBoxReducer.js.map +1 -1
  237. package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll/HideBodyVerticalScroll.js +4 -4
  238. package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll/HideBodyVerticalScroll.js.map +1 -1
  239. package/internal/InputLikeText/InputLikeText/InputLikeText.js +2 -1
  240. package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
  241. package/internal/PopupMenu/PopupMenu/PopupMenu.js +2 -2
  242. package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
  243. package/internal/RenderContainer/RenderContainer/RenderContainer.js +2 -1
  244. package/internal/RenderContainer/RenderContainer/RenderContainer.js.map +1 -1
  245. package/internal/ThemePlayground/darkTheme/darkTheme.js +3 -3
  246. package/internal/ThemePlayground/darkTheme/darkTheme.js.map +1 -1
  247. package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  248. package/internal/icons/CrossIcon/CrossIcon.js +2 -1
  249. package/internal/icons/CrossIcon/CrossIcon.js.map +1 -1
  250. package/internal/themes/DefaultTheme/DefaultTheme.js +100 -19
  251. package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
  252. package/internal/themes/DefaultTheme.d.ts +23 -7
  253. package/internal/themes/FlatTheme/FlatTheme.js +18 -6
  254. package/internal/themes/FlatTheme/FlatTheme.js.map +1 -1
  255. package/internal/themes/FlatTheme.d.ts +4 -4
  256. package/internal/themes/Theme8px/Theme8px.js +1 -14
  257. package/internal/themes/Theme8px/Theme8px.js.map +1 -1
  258. package/internal/themes/Theme8px.d.ts +0 -5
  259. package/lib/Upgrades/Upgrades.js +13 -0
  260. package/lib/Upgrades/Upgrades.js.map +1 -1
  261. package/lib/Upgrades.d.ts +2 -0
  262. package/lib/events/keyListener/keyListener.js +22 -0
  263. package/lib/events/keyListener/keyListener.js.map +1 -0
  264. package/lib/events/keyListener/package.json +6 -0
  265. package/lib/events/keyListener.d.ts +7 -0
  266. package/lib/events/keyboard/identifiers/identifiers.js +10 -1
  267. package/lib/events/keyboard/identifiers/identifiers.js.map +1 -1
  268. package/lib/events/keyboard/identifiers.d.ts +1 -0
  269. package/lib/events/tabListener/tabListener.js +2 -19
  270. package/lib/events/tabListener/tabListener.js.map +1 -1
  271. package/lib/events/tabListener.d.ts +1 -6
  272. package/lib/locale/LOCALECONTEXT.md +1 -1
  273. package/lib/styles/ColorFunctions/ColorFunctions.js +1 -1
  274. package/lib/styles/ColorFunctions/ColorFunctions.js.map +1 -1
  275. package/lib/theming/Emotion/Emotion.js +1 -1
  276. package/lib/theming/Emotion/Emotion.js.map +1 -1
  277. package/lib/theming/ThemeContext.md +1 -1
  278. package/lib/utils/utils.js +10 -0
  279. package/lib/utils/utils.js.map +1 -1
  280. package/lib/utils.d.ts +7 -0
  281. package/package.json +2 -2
@@ -0,0 +1,33 @@
1
+ "use strict";exports.__esModule = true;exports.scrollSizeParametersNames = exports.defaultScrollbarState = exports.MIN_SCROLL_SIZE = void 0;
2
+
3
+ var MIN_SCROLL_SIZE = 20;exports.MIN_SCROLL_SIZE = MIN_SCROLL_SIZE;
4
+
5
+ var defaultScrollbarState = {
6
+ size: 0,
7
+ pos: 0,
8
+ // Mouse is moving where big scrollbar can be located.
9
+ hover: false,
10
+ active: false,
11
+ // True when scroll is following mouse (mouse down on scroll).
12
+ scrolling: false,
13
+ scrollState: 'begin' };exports.defaultScrollbarState = defaultScrollbarState;
14
+
15
+
16
+ var scrollSizeParametersNames = {
17
+ x: {
18
+ offset: 'offsetWidth',
19
+ size: 'scrollWidth',
20
+ pos: 'scrollLeft',
21
+ coord: 'clientX',
22
+ clientSize: 'clientWidth',
23
+ customScrollPos: 'left',
24
+ customScrollSize: 'width' },
25
+
26
+ y: {
27
+ offset: 'offsetHeight',
28
+ size: 'scrollHeight',
29
+ pos: 'scrollTop',
30
+ coord: 'clientY',
31
+ clientSize: 'clientHeight',
32
+ customScrollPos: 'top',
33
+ customScrollSize: 'height' } };exports.scrollSizeParametersNames = scrollSizeParametersNames;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["ScrollContainer.constants.ts"],"names":["MIN_SCROLL_SIZE","defaultScrollbarState","size","pos","hover","active","scrolling","scrollState","scrollSizeParametersNames","x","offset","coord","clientSize","customScrollPos","customScrollSize","y"],"mappings":";;AAEO,IAAMA,eAAe,GAAG,EAAxB,C;;AAEA,IAAMC,qBAAqC,GAAG;AACnDC,EAAAA,IAAI,EAAE,CAD6C;AAEnDC,EAAAA,GAAG,EAAE,CAF8C;AAGnD;AACAC,EAAAA,KAAK,EAAE,KAJ4C;AAKnDC,EAAAA,MAAM,EAAE,KAL2C;AAMnD;AACAC,EAAAA,SAAS,EAAE,KAPwC;AAQnDC,EAAAA,WAAW,EAAE,OARsC,EAA9C,C;;;AAWA,IAAMC,yBAAyB,GAAG;AACvCC,EAAAA,CAAC,EAAE;AACDC,IAAAA,MAAM,EAAE,aADP;AAEDR,IAAAA,IAAI,EAAE,aAFL;AAGDC,IAAAA,GAAG,EAAE,YAHJ;AAIDQ,IAAAA,KAAK,EAAE,SAJN;AAKDC,IAAAA,UAAU,EAAE,aALX;AAMDC,IAAAA,eAAe,EAAE,MANhB;AAODC,IAAAA,gBAAgB,EAAE,OAPjB,EADoC;;AAUvCC,EAAAA,CAAC,EAAE;AACDL,IAAAA,MAAM,EAAE,cADP;AAEDR,IAAAA,IAAI,EAAE,cAFL;AAGDC,IAAAA,GAAG,EAAE,WAHJ;AAIDQ,IAAAA,KAAK,EAAE,SAJN;AAKDC,IAAAA,UAAU,EAAE,cALX;AAMDC,IAAAA,eAAe,EAAE,KANhB;AAODC,IAAAA,gBAAgB,EAAE,QAPjB,EAVoC,EAAlC,C","sourcesContent":["import { ScrollBarState } from './ScrollBar';\n\nexport const MIN_SCROLL_SIZE = 20;\n\nexport const defaultScrollbarState: ScrollBarState = {\n size: 0,\n pos: 0,\n // Mouse is moving where big scrollbar can be located.\n hover: false,\n active: false,\n // True when scroll is following mouse (mouse down on scroll).\n scrolling: false,\n scrollState: 'begin',\n};\n\nexport const scrollSizeParametersNames = {\n x: {\n offset: 'offsetWidth',\n size: 'scrollWidth',\n pos: 'scrollLeft',\n coord: 'clientX',\n clientSize: 'clientWidth',\n customScrollPos: 'left',\n customScrollSize: 'width',\n },\n y: {\n offset: 'offsetHeight',\n size: 'scrollHeight',\n pos: 'scrollTop',\n coord: 'clientY',\n clientSize: 'clientHeight',\n customScrollPos: 'top',\n customScrollSize: 'height',\n },\n} as const;\n"]}
@@ -1,51 +1,59 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { CommonProps } from '../../internal/CommonWrapper';
4
- export declare type ScrollContainerScrollState = 'top' | 'scroll' | 'bottom';
4
+ import { Nullable } from '../../typings/utility-types';
5
+ export declare type ScrollContainerScrollStateX = 'left' | 'scroll' | 'right';
6
+ export declare type ScrollContainerScrollStateY = 'top' | 'scroll' | 'bottom';
7
+ export declare type ScrollContainerScrollState = ScrollContainerScrollStateY;
5
8
  export declare type ScrollBehaviour = 'auto' | 'smooth';
6
9
  export interface ScrollContainerProps extends CommonProps {
7
- invert?: boolean;
10
+ /**
11
+ * Инвертировать цвет скроллбара
12
+ * @default false
13
+ */
14
+ invert: boolean;
8
15
  maxHeight?: React.CSSProperties['maxHeight'];
9
- preventWindowScroll?: boolean;
16
+ maxWidth?: React.CSSProperties['maxWidth'];
17
+ /**
18
+ * @default false
19
+ */
20
+ preventWindowScroll: boolean;
10
21
  /**
11
22
  * Поведение скролла (https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-behavior)
12
23
  * @default 'auto'
13
24
  */
14
25
  scrollBehaviour?: ScrollBehaviour;
15
- onScrollStateChange?: (scrollState: ScrollContainerScrollState) => void;
26
+ onScrollStateChangeX?: (scrollState: ScrollContainerScrollStateX) => void;
27
+ onScrollStateChangeY?: (scrollState: ScrollContainerScrollStateY) => void;
28
+ onScrollStateChange?: (scrollYState: ScrollContainerScrollState) => void;
16
29
  onScroll?: (e: React.UIEvent<HTMLDivElement>) => void;
17
30
  }
18
- export interface ScrollContainerState {
19
- scrollActive: boolean;
20
- hover: boolean;
21
- scrolling: boolean;
22
- scrollSize: number;
23
- scrollPos: number;
24
- scrollState: ScrollContainerScrollState;
25
- }
26
- export declare class ScrollContainer extends React.Component<ScrollContainerProps, ScrollContainerState> {
31
+ export declare class ScrollContainer extends React.Component<ScrollContainerProps> {
27
32
  static __KONTUR_REACT_UI__: string;
28
33
  static propTypes: {
29
34
  invert: PropTypes.Requireable<boolean>;
35
+ maxWidth: PropTypes.Requireable<string | number>;
30
36
  maxHeight: PropTypes.Requireable<string | number>;
31
37
  scrollBehaviour: PropTypes.Requireable<string>;
32
38
  preventWindowScroll: PropTypes.Requireable<boolean>;
33
39
  onScrollStateChange: PropTypes.Requireable<(...args: any[]) => any>;
34
40
  };
35
41
  static defaultProps: {
42
+ invert: boolean;
36
43
  scrollBehaviour: string;
44
+ preventWindowScroll: boolean;
37
45
  };
38
- state: ScrollContainerState;
46
+ private scrollX;
47
+ private scrollY;
39
48
  private inner;
40
- private scroll;
41
49
  componentDidMount(): void;
42
50
  componentDidUpdate(prevProps: ScrollContainerProps): void;
43
- render(): JSX.Element;
51
+ render: () => JSX.Element;
44
52
  /**
45
53
  * @public
46
54
  * @param {HTMLElement} element
47
55
  */
48
- scrollTo(element: HTMLElement): void;
56
+ scrollTo(element: Nullable<HTMLElement>): void;
49
57
  /**
50
58
  * @public
51
59
  */
@@ -54,15 +62,22 @@ export declare class ScrollContainer extends React.Component<ScrollContainerProp
54
62
  * @public
55
63
  */
56
64
  scrollToBottom(): void;
65
+ /**
66
+ * @public
67
+ */
68
+ scrollToLeft(): void;
69
+ /**
70
+ * @public
71
+ */
72
+ scrollToRight(): void;
73
+ private hasScrollBar;
74
+ private renderScrollbar;
75
+ private handleScrollStateChange;
76
+ private refScrollBarY;
77
+ private refScrollBarX;
57
78
  private refInner;
58
- private refScroll;
59
79
  private handleNativeScroll;
60
- private reflow;
61
- private handleScrollMouseDown;
62
- private handleScrollWheel;
63
80
  private handleInnerScrollWheel;
64
81
  private handleMouseMove;
65
82
  private handleMouseLeave;
66
- private setHover;
67
- private getImmediateScrollState;
68
83
  }
@@ -0,0 +1,10 @@
1
+ import { ScrollBarScrollState } from './ScrollBar';
2
+ import { ScrollContainerScrollStateX, ScrollContainerScrollStateY } from './ScrollContainer';
3
+ export declare const getScrollSizeParams: (inner: HTMLElement, axis: 'x' | 'y') => {
4
+ scrollActive: boolean;
5
+ scrollSize: number;
6
+ scrollPos: number;
7
+ };
8
+ export declare const getScrollYOffset: (element: HTMLElement, container: HTMLElement) => number;
9
+ export declare const convertScrollbarXScrollState: (state: ScrollBarScrollState) => ScrollContainerScrollStateX;
10
+ export declare const convertScrollbarYScrollState: (state: ScrollBarScrollState) => ScrollContainerScrollStateY;
@@ -0,0 +1,62 @@
1
+ "use strict";exports.__esModule = true;exports.convertScrollbarYScrollState = exports.convertScrollbarXScrollState = exports.getScrollYOffset = exports.getScrollSizeParams = void 0;var _ScrollContainer = require("./ScrollContainer.constants");
2
+
3
+
4
+
5
+ var getScrollSizeParams = function getScrollSizeParams(inner, axis) {var _scrollSizeParameters =
6
+ _ScrollContainer.scrollSizeParametersNames[axis],offset = _scrollSizeParameters.offset,size = _scrollSizeParameters.size,pos = _scrollSizeParameters.pos;
7
+
8
+ var contentSize = inner[size];
9
+ var scrollOffset = inner[pos];
10
+ var containerSize = inner[offset];
11
+
12
+ var scrollActive = containerSize < contentSize;
13
+
14
+ var scrollSize = 0;
15
+ var scrollPos = 0;
16
+
17
+ if (scrollActive) {
18
+ scrollSize = Math.max(containerSize / contentSize * containerSize, _ScrollContainer.MIN_SCROLL_SIZE);
19
+ scrollPos = scrollOffset / (contentSize - containerSize) * (containerSize - scrollSize);
20
+ }
21
+
22
+ return {
23
+ scrollActive: scrollActive,
24
+ scrollSize: scrollSize,
25
+ scrollPos: scrollPos };
26
+
27
+ };exports.getScrollSizeParams = getScrollSizeParams;
28
+
29
+ var getScrollYOffset = function getScrollYOffset(element, container) {
30
+ var elementOffset = element.offsetTop;
31
+
32
+ if (container.scrollTop > elementOffset) {
33
+ return elementOffset;
34
+ }
35
+
36
+ var offset = elementOffset + element.scrollHeight - container.offsetHeight;
37
+ if (container.scrollTop < offset) {
38
+ return offset;
39
+ }
40
+
41
+ return container.scrollTop;
42
+ };exports.getScrollYOffset = getScrollYOffset;
43
+
44
+ var convertScrollbarXScrollState = function convertScrollbarXScrollState(state) {
45
+ var scrollBarState = {
46
+ begin: 'left',
47
+ end: 'right',
48
+ middle: 'scroll' };
49
+
50
+
51
+ return scrollBarState[state];
52
+ };exports.convertScrollbarXScrollState = convertScrollbarXScrollState;
53
+
54
+ var convertScrollbarYScrollState = function convertScrollbarYScrollState(state) {
55
+ var scrollBarState = {
56
+ begin: 'top',
57
+ end: 'bottom',
58
+ middle: 'scroll' };
59
+
60
+
61
+ return scrollBarState[state];
62
+ };exports.convertScrollbarYScrollState = convertScrollbarYScrollState;
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["ScrollContainer.helpers.ts"],"names":["getScrollSizeParams","inner","axis","scrollSizeParametersNames","offset","size","pos","contentSize","scrollOffset","containerSize","scrollActive","scrollSize","scrollPos","Math","max","MIN_SCROLL_SIZE","getScrollYOffset","element","container","elementOffset","offsetTop","scrollTop","scrollHeight","offsetHeight","convertScrollbarXScrollState","state","scrollBarState","begin","end","middle","convertScrollbarYScrollState"],"mappings":"qLAAA;;;;AAIO,IAAMA,mBAAmB,GAAG,SAAtBA,mBAAsB,CAACC,KAAD,EAAqBC,IAArB,EAAyC;AAC5CC,6CAA0BD,IAA1B,CAD4C,CAClEE,MADkE,yBAClEA,MADkE,CAC1DC,IAD0D,yBAC1DA,IAD0D,CACpDC,GADoD,yBACpDA,GADoD;;AAG1E,MAAMC,WAAW,GAAGN,KAAK,CAACI,IAAD,CAAzB;AACA,MAAMG,YAAY,GAAGP,KAAK,CAACK,GAAD,CAA1B;AACA,MAAMG,aAAa,GAAGR,KAAK,CAACG,MAAD,CAA3B;;AAEA,MAAMM,YAAY,GAAGD,aAAa,GAAGF,WAArC;;AAEA,MAAII,UAAU,GAAG,CAAjB;AACA,MAAIC,SAAS,GAAG,CAAhB;;AAEA,MAAIF,YAAJ,EAAkB;AAChBC,IAAAA,UAAU,GAAGE,IAAI,CAACC,GAAL,CAAUL,aAAa,GAAGF,WAAjB,GAAgCE,aAAzC,EAAwDM,gCAAxD,CAAb;AACAH,IAAAA,SAAS,GAAIJ,YAAY,IAAID,WAAW,GAAGE,aAAlB,CAAb,IAAkDA,aAAa,GAAGE,UAAlE,CAAZ;AACD;;AAED,SAAO;AACLD,IAAAA,YAAY,EAAZA,YADK;AAELC,IAAAA,UAAU,EAAVA,UAFK;AAGLC,IAAAA,SAAS,EAATA,SAHK,EAAP;;AAKD,CAtBM,C;;AAwBA,IAAMI,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACC,OAAD,EAAuBC,SAAvB,EAAkD;AAChF,MAAMC,aAAa,GAAGF,OAAO,CAACG,SAA9B;;AAEA,MAAIF,SAAS,CAACG,SAAV,GAAsBF,aAA1B,EAAyC;AACvC,WAAOA,aAAP;AACD;;AAED,MAAMf,MAAM,GAAGe,aAAa,GAAGF,OAAO,CAACK,YAAxB,GAAuCJ,SAAS,CAACK,YAAhE;AACA,MAAIL,SAAS,CAACG,SAAV,GAAsBjB,MAA1B,EAAkC;AAChC,WAAOA,MAAP;AACD;;AAED,SAAOc,SAAS,CAACG,SAAjB;AACD,CAbM,C;;AAeA,IAAMG,4BAA4B,GAAG,SAA/BA,4BAA+B,CAACC,KAAD,EAA8D;AACxG,MAAMC,cAAyE,GAAG;AAChFC,IAAAA,KAAK,EAAE,MADyE;AAEhFC,IAAAA,GAAG,EAAE,OAF2E;AAGhFC,IAAAA,MAAM,EAAE,QAHwE,EAAlF;;;AAMA,SAAOH,cAAc,CAACD,KAAD,CAArB;AACD,CARM,C;;AAUA,IAAMK,4BAA4B,GAAG,SAA/BA,4BAA+B,CAACL,KAAD,EAA8D;AACxG,MAAMC,cAAyE,GAAG;AAChFC,IAAAA,KAAK,EAAE,KADyE;AAEhFC,IAAAA,GAAG,EAAE,QAF2E;AAGhFC,IAAAA,MAAM,EAAE,QAHwE,EAAlF;;;AAMA,SAAOH,cAAc,CAACD,KAAD,CAArB;AACD,CARM,C","sourcesContent":["import { MIN_SCROLL_SIZE, scrollSizeParametersNames } from './ScrollContainer.constants';\nimport { ScrollBarScrollState } from './ScrollBar';\nimport { ScrollContainerScrollStateX, ScrollContainerScrollStateY } from './ScrollContainer';\n\nexport const getScrollSizeParams = (inner: HTMLElement, axis: 'x' | 'y') => {\n const { offset, size, pos } = scrollSizeParametersNames[axis];\n\n const contentSize = inner[size];\n const scrollOffset = inner[pos];\n const containerSize = inner[offset];\n\n const scrollActive = containerSize < contentSize;\n\n let scrollSize = 0;\n let scrollPos = 0;\n\n if (scrollActive) {\n scrollSize = Math.max((containerSize / contentSize) * containerSize, MIN_SCROLL_SIZE);\n scrollPos = (scrollOffset / (contentSize - containerSize)) * (containerSize - scrollSize);\n }\n\n return {\n scrollActive,\n scrollSize,\n scrollPos,\n };\n};\n\nexport const getScrollYOffset = (element: HTMLElement, container: HTMLElement) => {\n const elementOffset = element.offsetTop;\n\n if (container.scrollTop > elementOffset) {\n return elementOffset;\n }\n\n const offset = elementOffset + element.scrollHeight - container.offsetHeight;\n if (container.scrollTop < offset) {\n return offset;\n }\n\n return container.scrollTop;\n};\n\nexport const convertScrollbarXScrollState = (state: ScrollBarScrollState): ScrollContainerScrollStateX => {\n const scrollBarState: Record<ScrollBarScrollState, ScrollContainerScrollStateX> = {\n begin: 'left',\n end: 'right',\n middle: 'scroll',\n };\n\n return scrollBarState[state];\n};\n\nexport const convertScrollbarYScrollState = (state: ScrollBarScrollState): ScrollContainerScrollStateY => {\n const scrollBarState: Record<ScrollBarScrollState, ScrollContainerScrollStateY> = {\n begin: 'top',\n end: 'bottom',\n middle: 'scroll',\n };\n\n return scrollBarState[state];\n};\n"]}
@@ -2,19 +2,18 @@
2
2
  var _propTypes = _interopRequireDefault(require("prop-types"));
3
3
 
4
4
  var LayoutEvents = _interopRequireWildcard(require("../../lib/LayoutEvents"));
5
- var _getScrollWidth = require("../../lib/dom/getScrollWidth");
6
-
7
5
  var _CommonWrapper = require("../../internal/CommonWrapper");
6
+
8
7
  var _Emotion = require("../../lib/theming/Emotion");
9
8
 
10
9
  var _ScrollContainer = require("./ScrollContainer.styles");
11
-
12
- var HIDE_SCROLLBAR_OFFSET = 30;
13
- var MIN_SCROLL_SIZE = 20;var
10
+ var _ScrollContainer2 = require("./ScrollContainer.constants");
11
+ var _ScrollContainer3 = require("./ScrollContainer.helpers");
14
12
 
15
13
 
16
14
 
17
15
 
16
+ var _ScrollBar = require("./ScrollBar");var
18
17
 
19
18
 
20
19
 
@@ -37,8 +36,6 @@ var MIN_SCROLL_SIZE = 20;var
37
36
 
38
37
 
39
38
 
40
-
41
- ScrollContainer = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default)(ScrollContainer, _React$Component);function ScrollContainer() {var _this;for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {args[_key] = arguments[_key];}_this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;_this.
42
39
 
43
40
 
44
41
 
@@ -46,6 +43,7 @@ ScrollContainer = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.
46
43
 
47
44
 
48
45
 
46
+ ScrollContainer = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.default)(ScrollContainer, _React$Component);function ScrollContainer() {var _this;for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {args[_key] = arguments[_key];}_this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;_this.
49
47
 
50
48
 
51
49
 
@@ -53,20 +51,9 @@ ScrollContainer = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.
53
51
 
54
52
 
55
53
 
56
- state = {
57
- scrollActive: false,
58
- scrollSize: 0,
59
- scrollPos: 0,
60
54
 
61
- // Mouse is moving where big scrollbar can be located.
62
- hover: false,
63
- // True when scroll is following mouse (mouse down on scroll).
64
- scrolling: false,
65
- scrollState: 'top' };_this.
66
55
 
67
56
 
68
- inner = void 0;_this.
69
- scroll = void 0;_this.
70
57
 
71
58
 
72
59
 
@@ -74,6 +61,9 @@ ScrollContainer = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.
74
61
 
75
62
 
76
63
 
64
+ scrollX = void 0;_this.
65
+ scrollY = void 0;_this.
66
+ inner = void 0;_this.
77
67
 
78
68
 
79
69
 
@@ -91,15 +81,36 @@ ScrollContainer = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.
91
81
 
92
82
 
93
83
 
84
+ render = function () {
85
+ var props = _this.props;
94
86
 
87
+ var innerStyle = {
88
+ scrollBehavior: props.scrollBehaviour,
89
+ maxHeight: props.maxHeight,
90
+ maxWidth: props.maxWidth };
95
91
 
96
92
 
93
+ var scrollbarY = _this.renderScrollbar('y');
94
+ var scrollbarX = _this.renderScrollbar('x');
97
95
 
96
+ return /*#__PURE__*/(
97
+ _react.default.createElement(_CommonWrapper.CommonWrapper, _this.props, /*#__PURE__*/
98
+ _react.default.createElement("div", { className: _ScrollContainer.styles.root(), onMouseMove: _this.handleMouseMove, onMouseLeave: _this.handleMouseLeave },
99
+ scrollbarY,
100
+ scrollbarX, /*#__PURE__*/
101
+ _react.default.createElement("div", {
102
+ style: innerStyle,
103
+ ref: _this.refInner,
104
+ className: (0, _Emotion.cx)(_ScrollContainer.styles.inner(), _ScrollContainer.globalClasses.inner),
105
+ "data-tid": "ScrollContainer__inner",
106
+ onScroll: _this.handleNativeScroll },
98
107
 
108
+ props.children))));
99
109
 
100
110
 
101
111
 
102
112
 
113
+ };_this.
103
114
 
104
115
 
105
116
 
@@ -165,16 +176,44 @@ ScrollContainer = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.
165
176
 
166
177
 
167
178
 
179
+ renderScrollbar = function (axis) {
180
+ var refScrollBar = axis === 'x' ? _this.refScrollBarX : _this.refScrollBarY;
168
181
 
182
+ return /*#__PURE__*/(
183
+ _react.default.createElement(_ScrollBar.ScrollBar, {
184
+ axis: axis,
185
+ ref: refScrollBar,
186
+ invert: _this.props.invert,
187
+ onScrollStateChange: _this.handleScrollStateChange }));
169
188
 
170
189
 
190
+ };_this.
171
191
 
192
+ handleScrollStateChange = function (scrollState, axis) {
193
+ if (!_this.scrollY || !_this.scrollX) {
194
+ return;
195
+ }
172
196
 
197
+ if (axis === 'x') {
198
+ var scrollXState = (0, _ScrollContainer3.convertScrollbarXScrollState)(scrollState);
173
199
 
200
+ _this.props.onScrollStateChangeX == null ? void 0 : _this.props.onScrollStateChangeX(scrollXState);
201
+ return;
202
+ }
174
203
 
204
+ var scrollYState = (0, _ScrollContainer3.convertScrollbarYScrollState)(scrollState);
175
205
 
206
+ _this.props.onScrollStateChange == null ? void 0 : _this.props.onScrollStateChange(scrollYState);
207
+ _this.props.onScrollStateChangeY == null ? void 0 : _this.props.onScrollStateChangeY(scrollYState);
208
+ };_this.
176
209
 
210
+ refScrollBarY = function (scrollbar) {
211
+ _this.scrollY = scrollbar;
212
+ };_this.
177
213
 
214
+ refScrollBarX = function (scrollbar) {
215
+ _this.scrollX = scrollbar;
216
+ };_this.
178
217
 
179
218
  refInner = function (element) {
180
219
  if (!_this.inner && element && _this.props.preventWindowScroll) {
@@ -186,18 +225,10 @@ ScrollContainer = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.
186
225
  _this.inner = element;
187
226
  };_this.
188
227
 
189
- refScroll = function (element) {
190
- if (!_this.scroll && element) {
191
- element.addEventListener('wheel', _this.handleScrollWheel, { passive: false });
192
- }
193
- if (_this.scroll && !element) {
194
- _this.scroll.removeEventListener('wheel', _this.handleScrollWheel);
195
- }
196
- _this.scroll = element;
197
- };_this.
228
+ handleNativeScroll = function (event) {var _this$scrollX, _this$scrollY;
229
+ (_this$scrollX = _this.scrollX) == null ? void 0 : _this$scrollX.reflow();
230
+ (_this$scrollY = _this.scrollY) == null ? void 0 : _this$scrollY.reflow();
198
231
 
199
- handleNativeScroll = function (event) {
200
- _this.reflow();
201
232
  _this.props.onScroll == null ? void 0 : _this.props.onScroll(event);
202
233
  if (_this.props.preventWindowScroll) {
203
234
  event.preventDefault();
@@ -206,150 +237,47 @@ ScrollContainer = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.
206
237
  LayoutEvents.emit();
207
238
  };_this.
208
239
 
209
- reflow = function () {
210
- if (!_this.inner) {
211
- return;
212
- }
213
-
214
- var containerHeight = _this.inner.offsetHeight;
215
- var contentHeight = _this.inner.scrollHeight;
216
- var scrollTop = _this.inner.scrollTop;
217
-
218
- var scrollActive = containerHeight < contentHeight;
219
-
220
- if (!scrollActive && !_this.state.scrollActive) {
221
- return;
222
- }
223
-
224
- var scrollSize = 0;
225
- var scrollPos = 0;
226
- var scrollState = _this.state.scrollState;
227
-
228
- if (scrollActive) {
229
- scrollSize = Math.max(containerHeight / contentHeight * containerHeight, MIN_SCROLL_SIZE);
230
- scrollPos = scrollTop / (contentHeight - containerHeight) * (containerHeight - scrollSize);
231
- }
232
-
233
- if (
234
- _this.state.scrollActive !== scrollActive ||
235
- _this.state.scrollSize !== scrollSize ||
236
- _this.state.scrollPos !== scrollPos)
237
- {
238
- scrollState = _this.getImmediateScrollState();
239
-
240
- if (scrollState !== _this.state.scrollState) {
241
- _this.props.onScrollStateChange == null ? void 0 : _this.props.onScrollStateChange(scrollState);
242
- }
243
-
244
- _this.setState({
245
- scrollActive: scrollActive,
246
- scrollSize: scrollSize,
247
- scrollPos: scrollPos,
248
- scrollState: scrollState });
249
-
250
- }
251
- };_this.
252
-
253
- handleScrollMouseDown = function (event) {
254
- if (!_this.inner) {
255
- return;
256
- }
257
-
258
- var target = window.document;
259
- var initialY = event.clientY;
260
- var initialScrollTop = _this.inner.scrollTop;
261
-
262
- var mouseMove = function mouseMove(mouseMoveEvent) {
263
- if (!_this.inner) {
264
- return;
265
- }
266
-
267
- var ratio =
268
- (_this.inner.scrollHeight - _this.inner.offsetHeight) / (_this.inner.offsetHeight - _this.state.scrollSize);
269
- var deltaY = (mouseMoveEvent.clientY - initialY) * ratio;
270
-
271
- _this.inner.scrollTop = initialScrollTop + deltaY;
272
-
273
- if (mouseMoveEvent.preventDefault) {
274
- mouseMoveEvent.preventDefault();
275
- }
276
-
277
- if (Object.prototype.hasOwnProperty.call(mouseMoveEvent, 'returnValue')) {
278
-
279
- mouseMoveEvent.
280
-
281
-
282
- returnValue = false;
283
- }
284
- };
285
-
286
- var mouseUp = function mouseUp() {
287
- target.removeEventListener('mousemove', mouseMove);
288
- target.removeEventListener('mouseup', mouseUp);
289
- _this.setState({ scrolling: false });
290
- };
291
-
292
- target.addEventListener('mousemove', mouseMove);
293
- target.addEventListener('mouseup', mouseUp);
294
- _this.setState({ scrolling: true });
295
-
296
- event.preventDefault();
297
- };_this.
298
-
299
- handleScrollWheel = function (event) {
240
+ handleInnerScrollWheel = function (event) {
300
241
  if (!_this.inner || !(event instanceof WheelEvent)) {
301
242
  return;
302
243
  }
303
244
 
304
- if (event.deltaY > 0 && _this.inner.scrollHeight <= _this.inner.scrollTop + _this.inner.offsetHeight) {
305
- return;
306
- }
307
- if (event.deltaY < 0 && _this.inner.scrollTop <= 0) {
308
- return;
309
- }
245
+ var axis = event.shiftKey ? 'x' : 'y';
310
246
 
311
- _this.inner.scrollTop += event.deltaY;
312
- event.preventDefault();
313
- };_this.
247
+ if (_this.hasScrollBar(axis)) {var _scrollSizeParameters =
248
+ _ScrollContainer2.scrollSizeParametersNames[axis],pos = _scrollSizeParameters.pos,size = _scrollSizeParameters.size,offset = _scrollSizeParameters.offset;
314
249
 
315
- handleInnerScrollWheel = function (event) {
316
- if (!_this.inner || !(event instanceof WheelEvent)) {
317
- return;
318
- }
319
-
320
- if (_this.state.scrollActive) {
321
- if (event.deltaY > 0 && _this.inner.scrollHeight <= _this.inner.scrollTop + _this.inner.offsetHeight) {
250
+ if (event.deltaY > 0 && _this.inner[size] <= _this.inner[pos] + _this.inner[offset]) {
322
251
  event.preventDefault();
323
252
  return false;
324
253
  }
325
- if (event.deltaY < 0 && _this.inner.scrollTop <= 0) {
254
+ if (event.deltaY < 0 && _this.inner[pos] <= 0) {
326
255
  event.preventDefault();
327
256
  return false;
328
257
  }
329
258
  }
330
259
  };_this.
331
260
 
332
- handleMouseMove = function (event) {
261
+ handleMouseMove = function (event) {var _this$scrollY2, _this$scrollX2;
333
262
  var right = event.currentTarget.getBoundingClientRect().right - event.pageX;
334
- _this.setHover(right <= 12);
263
+ var bottom = event.currentTarget.getBoundingClientRect().bottom - event.pageY;
264
+
265
+ (_this$scrollY2 = _this.scrollY) == null ? void 0 : _this$scrollY2.setHover(right <= 12);
266
+ (_this$scrollX2 = _this.scrollX) == null ? void 0 : _this$scrollX2.setHover(right >= 12 && bottom <= 12);
335
267
  };_this.
336
268
 
337
- handleMouseLeave = function () {
338
- _this.setHover(false);
339
- };return _this;}var _proto = ScrollContainer.prototype;_proto.componentDidMount = function componentDidMount() {this.reflow();};_proto.componentDidUpdate = function componentDidUpdate(prevProps) {if (this.inner) {if (prevProps.preventWindowScroll && !this.props.preventWindowScroll) {this.inner.removeEventListener('wheel', this.handleInnerScrollWheel);}if (!prevProps.preventWindowScroll && this.props.preventWindowScroll) {this.inner.addEventListener('wheel', this.handleInnerScrollWheel, { passive: false });}}this.reflow();};_proto.render = function render() {var state = this.state;var props = this.props;var scroll = null;if (state.scrollActive) {var _cx;var scrollClass = (0, _Emotion.cx)((_cx = {}, _cx[_ScrollContainer.styles.scroll()] = true, _cx[_ScrollContainer.styles.scrollInvert()] = Boolean(props.invert), _cx[_ScrollContainer.styles.scrollHover()] = state.hover || state.scrolling, _cx));var scrollStyle = { top: state.scrollPos, height: state.scrollSize };scroll = /*#__PURE__*/_react.default.createElement("div", { ref: this.refScroll, className: scrollClass, style: scrollStyle, onMouseDown: this.handleScrollMouseDown });}var innerStyle = { // hide vertical scrollbar with a little extra space
340
- marginRight: -1 * HIDE_SCROLLBAR_OFFSET, paddingRight: HIDE_SCROLLBAR_OFFSET - (0, _getScrollWidth.getScrollWidth)(), maxHeight: props.maxHeight, scrollBehavior: props.scrollBehaviour };return /*#__PURE__*/_react.default.createElement(_CommonWrapper.CommonWrapper, this.props, /*#__PURE__*/_react.default.createElement("div", { className: _ScrollContainer.styles.root(), onMouseMove: this.handleMouseMove, onMouseLeave: this.handleMouseLeave }, scroll, /*#__PURE__*/_react.default.createElement("div", { "data-tid": "ScrollContainer__inner", className: _ScrollContainer.styles.inner(), style: innerStyle, ref: this.refInner, onScroll: this.handleNativeScroll }, props.children)));} /**
269
+ handleMouseLeave = function () {var _this$scrollY3, _this$scrollX3;
270
+ (_this$scrollY3 = _this.scrollY) == null ? void 0 : _this$scrollY3.setHover(false);
271
+ (_this$scrollX3 = _this.scrollX) == null ? void 0 : _this$scrollX3.setHover(false);
272
+ };return _this;}var _proto = ScrollContainer.prototype;_proto.componentDidMount = function componentDidMount() {var _this$scrollX4, _this$scrollY4;(_this$scrollX4 = this.scrollX) == null ? void 0 : _this$scrollX4.setInnerElement(this.inner);(_this$scrollY4 = this.scrollY) == null ? void 0 : _this$scrollY4.setInnerElement(this.inner);};_proto.componentDidUpdate = function componentDidUpdate(prevProps) {if (this.inner) {if (prevProps.preventWindowScroll && !this.props.preventWindowScroll) {this.inner.removeEventListener('wheel', this.handleInnerScrollWheel);}if (!prevProps.preventWindowScroll && this.props.preventWindowScroll) {this.inner.addEventListener('wheel', this.handleInnerScrollWheel, { passive: false });}}}; /**
341
273
  * @public
342
274
  * @param {HTMLElement} element
343
- */;_proto.scrollTo = function scrollTo(element) {if (!element || !this.inner) {return;}var maxScroll = element.offsetTop;if (this.inner.scrollTop > maxScroll) {this.inner.scrollTop = maxScroll;return;}var minScroll = element.offsetTop + element.scrollHeight - this.inner.offsetHeight;if (this.inner.scrollTop < minScroll) {this.inner.scrollTop = minScroll;}} /**
275
+ */_proto.scrollTo = function scrollTo(element) {if (!element || !this.inner) {return;}this.inner.scrollLeft = element.offsetLeft;this.inner.scrollTop = (0, _ScrollContainer3.getScrollYOffset)(element, this.inner);} /**
344
276
  * @public
345
277
  */;_proto.scrollToTop = function scrollToTop() {if (!this.inner) {return;}this.inner.scrollTop = 0;} /**
346
278
  * @public
347
- */;_proto.scrollToBottom = function scrollToBottom() {if (!this.inner) {return;}this.inner.scrollTop = this.inner.scrollHeight - this.inner.offsetHeight;};_proto.setHover = function setHover(hover) {if (this.state.hover !== hover) {this.setState({ hover: hover });}};_proto.getImmediateScrollState = function getImmediateScrollState() {
348
- if (!this.inner || this.inner.scrollTop === 0) {
349
- return 'top';
350
- } else if (this.inner.scrollTop === this.inner.scrollHeight - this.inner.clientHeight) {
351
- return 'bottom';
352
- } else {
353
- return 'scroll';
354
- }
355
- };return ScrollContainer;}(_react.default.Component);exports.ScrollContainer = ScrollContainer;ScrollContainer.__KONTUR_REACT_UI__ = 'ScrollContainer';ScrollContainer.propTypes = { invert: _propTypes.default.bool, maxHeight: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]), scrollBehaviour: _propTypes.default.oneOf(['auto', 'smooth']), preventWindowScroll: _propTypes.default.bool, onScrollStateChange: _propTypes.default.func };ScrollContainer.defaultProps = { scrollBehaviour: 'auto' };
279
+ */;_proto.scrollToBottom = function scrollToBottom() {if (!this.inner) {return;}this.inner.scrollTop = this.inner.scrollHeight - this.inner.offsetHeight;} /**
280
+ * @public
281
+ */;_proto.scrollToLeft = function scrollToLeft() {if (!this.inner) {return;}this.inner.scrollLeft = 0;} /**
282
+ * @public
283
+ */;_proto.scrollToRight = function scrollToRight() {if (!this.inner) {return;}this.inner.scrollLeft = this.inner.scrollWidth - this.inner.offsetWidth;};_proto.hasScrollBar = function hasScrollBar(axis) {if (!this.inner) {return false;}return axis === 'x' ? this.inner.offsetWidth < this.inner.scrollWidth : this.inner.offsetHeight < this.inner.scrollHeight;};return ScrollContainer;}(_react.default.Component);exports.ScrollContainer = ScrollContainer;ScrollContainer.__KONTUR_REACT_UI__ = 'ScrollContainer';ScrollContainer.propTypes = { invert: _propTypes.default.bool, maxWidth: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]), maxHeight: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number]), scrollBehaviour: _propTypes.default.oneOf(['auto', 'smooth']), preventWindowScroll: _propTypes.default.bool, onScrollStateChange: _propTypes.default.func };ScrollContainer.defaultProps = { invert: false, scrollBehaviour: 'auto', preventWindowScroll: false };