@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,254 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+ import _createClass from "@babel/runtime/helpers/esm/createClass";
3
+ import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
4
+ import React from 'react';
5
+ import { ThemeContext } from "../../../lib/theming/ThemeContext";
6
+ import { cx } from "../../../lib/theming/Emotion";
7
+ import { defaultScrollbarState, scrollSizeParametersNames } from "../ScrollContainer.constants";
8
+ import { styles, globalClasses } from "../ScrollContainer.styles";
9
+ import { getScrollSizeParams } from "../ScrollContainer.helpers";
10
+ export var ScrollBar = /*#__PURE__*/function (_React$Component) {
11
+ _inheritsLoose(ScrollBar, _React$Component);
12
+
13
+ function ScrollBar() {
14
+ var _this;
15
+
16
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
17
+ args[_key] = arguments[_key];
18
+ }
19
+
20
+ _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;
21
+ _this.inner = void 0;
22
+ _this.theme = void 0;
23
+ _this.node = void 0;
24
+ _this.state = _extends({}, defaultScrollbarState);
25
+
26
+ _this.renderMain = function () {
27
+ var _cx, _inlineStyles;
28
+
29
+ var state = _this.state;
30
+ var props = _this.props;
31
+
32
+ if (!state.active) {
33
+ return null;
34
+ }
35
+
36
+ var _scrollSizeParameters = scrollSizeParametersNames[_this.props.axis],
37
+ customScrollPos = _scrollSizeParameters.customScrollPos,
38
+ customScrollSize = _scrollSizeParameters.customScrollSize;
39
+ var classNames = cx(props.className, styles.scrollBar(_this.theme), _this.scrollBarStyles, (_cx = {}, _cx[styles.scrollBarInvert(_this.theme)] = props.invert, _cx));
40
+ var inlineStyles = (_inlineStyles = {}, _inlineStyles[customScrollPos] = state.pos, _inlineStyles[customScrollSize] = state.size, _inlineStyles);
41
+ return /*#__PURE__*/React.createElement("div", {
42
+ ref: _this.refScroll,
43
+ style: inlineStyles,
44
+ className: classNames,
45
+ onMouseDown: _this.handleScrollMouseDown,
46
+ "data-tid": "ScrollContainer__ScrollBar-" + props.axis
47
+ });
48
+ };
49
+
50
+ _this.reflow = function () {
51
+ if (!_this.inner) {
52
+ return;
53
+ }
54
+
55
+ var props = _this.props;
56
+ var state = _this.state;
57
+
58
+ var _getScrollSizeParams = getScrollSizeParams(_this.inner, props.axis),
59
+ scrollSize = _getScrollSizeParams.scrollSize,
60
+ scrollPos = _getScrollSizeParams.scrollPos,
61
+ scrollActive = _getScrollSizeParams.scrollActive;
62
+
63
+ if (!scrollActive && !state.active) {
64
+ return;
65
+ }
66
+
67
+ if (state.active !== scrollActive || state.size !== scrollSize || state.pos !== scrollPos) {
68
+ var scrollState = _this.getImmediateScrollState();
69
+
70
+ if (scrollState !== state.scrollState) {
71
+ _this.props.onScrollStateChange == null ? void 0 : _this.props.onScrollStateChange(scrollState, props.axis);
72
+ }
73
+
74
+ _this.setState(_extends({}, _this.state, {
75
+ active: scrollActive,
76
+ size: scrollSize,
77
+ pos: scrollPos,
78
+ scrollState: scrollState
79
+ }));
80
+ }
81
+ };
82
+
83
+ _this.setInnerElement = function (inner) {
84
+ _this.inner = inner;
85
+
86
+ _this.reflow();
87
+ };
88
+
89
+ _this.refScroll = function (element) {
90
+ var handleScrollWheel = function handleScrollWheel(event) {
91
+ return _this.handleScrollWheel(event, _this.props.axis);
92
+ };
93
+
94
+ if (!_this.node && element) {
95
+ element.addEventListener('wheel', handleScrollWheel, {
96
+ passive: false
97
+ });
98
+ }
99
+
100
+ if (_this.node && !element) {
101
+ _this.node.removeEventListener('wheel', handleScrollWheel);
102
+ }
103
+
104
+ _this.node = element;
105
+ };
106
+
107
+ _this.handleScrollMouseDown = function (event) {
108
+ if (!_this.inner) {
109
+ return;
110
+ }
111
+
112
+ var _scrollSizeParameters2 = scrollSizeParametersNames[_this.props.axis],
113
+ offset = _scrollSizeParameters2.offset,
114
+ size = _scrollSizeParameters2.size,
115
+ pos = _scrollSizeParameters2.pos,
116
+ coord = _scrollSizeParameters2.coord;
117
+ var initialCoord = event[coord];
118
+ var target = window.document;
119
+ var initialScrollPos = _this.inner[pos];
120
+ var state = _this.state;
121
+
122
+ var mouseMove = function mouseMove(mouseMoveEvent) {
123
+ if (!_this.inner) {
124
+ return;
125
+ }
126
+
127
+ var ratio = (_this.inner[size] - _this.inner[offset]) / (_this.inner[offset] - state.size);
128
+ var delta = (mouseMoveEvent[coord] - initialCoord) * ratio;
129
+ _this.inner[pos] = initialScrollPos + delta;
130
+
131
+ if (mouseMoveEvent.preventDefault) {
132
+ mouseMoveEvent.preventDefault();
133
+ }
134
+
135
+ if (Object.prototype.hasOwnProperty.call(mouseMoveEvent, 'returnValue')) {
136
+ mouseMoveEvent.returnValue = false;
137
+ }
138
+ };
139
+
140
+ var mouseUp = function mouseUp() {
141
+ target.removeEventListener('mousemove', mouseMove);
142
+ target.removeEventListener('mouseup', mouseUp);
143
+
144
+ _this.setState(_extends({}, _this.state, {
145
+ scrolling: false
146
+ }));
147
+ };
148
+
149
+ target.addEventListener('mousemove', mouseMove);
150
+ target.addEventListener('mouseup', mouseUp);
151
+
152
+ _this.setState(_extends({}, _this.state, {
153
+ scrolling: true
154
+ }));
155
+
156
+ event.preventDefault();
157
+ };
158
+
159
+ _this.handleScrollWheel = function (event, axis) {
160
+ if (!_this.inner || !(event instanceof WheelEvent) || axis === 'x' && !event.shiftKey) {
161
+ return;
162
+ }
163
+
164
+ var _scrollSizeParameters3 = scrollSizeParametersNames[axis],
165
+ offset = _scrollSizeParameters3.offset,
166
+ size = _scrollSizeParameters3.size,
167
+ pos = _scrollSizeParameters3.pos;
168
+ var scrollSize = _this.inner[size];
169
+ var scrollPos = _this.inner[pos];
170
+ var offsetHeight = _this.inner[offset];
171
+
172
+ if (event.deltaY > 0 && scrollSize <= scrollPos + offsetHeight) {
173
+ return;
174
+ }
175
+
176
+ if (event.deltaY < 0 && scrollPos <= 0) {
177
+ return;
178
+ }
179
+
180
+ _this.inner[pos] += event.deltaY;
181
+ event.preventDefault();
182
+ };
183
+
184
+ _this.getImmediateScrollState = function () {
185
+ var _scrollSizeParameters4 = scrollSizeParametersNames[_this.props.axis],
186
+ pos = _scrollSizeParameters4.pos,
187
+ size = _scrollSizeParameters4.size,
188
+ clientSize = _scrollSizeParameters4.clientSize;
189
+
190
+ if (!_this.inner || _this.inner[pos] === 0) {
191
+ return 'begin';
192
+ }
193
+
194
+ if (_this.inner[pos] === _this.inner[size] - _this.inner[clientSize]) {
195
+ return 'end';
196
+ }
197
+
198
+ return 'middle';
199
+ };
200
+
201
+ return _this;
202
+ }
203
+
204
+ var _proto = ScrollBar.prototype;
205
+
206
+ _proto.componentDidMount = function componentDidMount() {
207
+ this.reflow();
208
+ };
209
+
210
+ _proto.componentDidUpdate = function componentDidUpdate() {
211
+ this.reflow();
212
+ };
213
+
214
+ _proto.render = function render() {
215
+ var _this2 = this;
216
+
217
+ return /*#__PURE__*/React.createElement(ThemeContext.Consumer, null, function (theme) {
218
+ _this2.theme = theme;
219
+ return _this2.renderMain();
220
+ });
221
+ };
222
+
223
+ _proto.setHover = function setHover(hover) {
224
+ if (this.state.active && this.state.hover !== hover) {
225
+ this.setState(_extends({}, this.state, {
226
+ hover: hover
227
+ }));
228
+ }
229
+ };
230
+
231
+ _createClass(ScrollBar, [{
232
+ key: "scrollBarState",
233
+ get: function get() {
234
+ return this.state.scrollState;
235
+ }
236
+ }, {
237
+ key: "scrollBarStyles",
238
+ get: function get() {
239
+ var _cx3;
240
+
241
+ var state = this.state;
242
+
243
+ if (this.props.axis === 'x') {
244
+ var _cx2;
245
+
246
+ return cx(styles.scrollBarX(this.theme), globalClasses.scrollbarX, (_cx2 = {}, _cx2[styles.scrollBarXHover(this.theme)] = state.hover || state.scrolling, _cx2));
247
+ }
248
+
249
+ return cx(styles.scrollBarY(this.theme), globalClasses.scrollbarY, (_cx3 = {}, _cx3[styles.scrollBarYHover(this.theme)] = state.hover || state.scrolling, _cx3));
250
+ }
251
+ }]);
252
+
253
+ return ScrollBar;
254
+ }(React.Component);
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["ScrollBar.tsx"],"names":["React","ThemeContext","cx","defaultScrollbarState","scrollSizeParametersNames","styles","globalClasses","getScrollSizeParams","ScrollBar","inner","theme","node","state","renderMain","props","active","axis","customScrollPos","customScrollSize","classNames","className","scrollBar","scrollBarStyles","scrollBarInvert","invert","inlineStyles","pos","size","refScroll","handleScrollMouseDown","reflow","scrollSize","scrollPos","scrollActive","scrollState","getImmediateScrollState","onScrollStateChange","setState","setInnerElement","element","handleScrollWheel","event","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","componentDidMount","componentDidUpdate","render","setHover","hover","scrollBarX","scrollbarX","scrollBarXHover","scrollBarY","scrollbarY","scrollBarYHover","Component"],"mappings":"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","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\n if (this.inner[pos] === this.inner[size] - this.inner[clientSize]) {\n return 'end';\n }\n\n return 'middle';\n };\n}\n"]}
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../../../cjs/components/ScrollContainer/ScrollBar.js",
3
+ "module": "ScrollBar",
4
+ "types": "../ScrollBar.d.ts",
5
+ "sideEffects": false
6
+ }
@@ -0,0 +1,37 @@
1
+ import React from 'react';
2
+ import { Nullable } from '../../typings/utility-types';
3
+ export declare type ScrollAxis = 'x' | 'y';
4
+ export declare type ScrollBarScrollState = 'begin' | 'middle' | 'end';
5
+ export interface ScrollBarState {
6
+ active: boolean;
7
+ hover: boolean;
8
+ scrolling: boolean;
9
+ size: number;
10
+ pos: number;
11
+ scrollState: ScrollBarScrollState;
12
+ }
13
+ export interface ScrollBarProps {
14
+ invert: boolean;
15
+ axis: ScrollAxis;
16
+ className?: string;
17
+ onScrollStateChange?: (state: ScrollBarScrollState, axis: ScrollAxis) => void;
18
+ }
19
+ export declare class ScrollBar extends React.Component<ScrollBarProps, ScrollBarState> {
20
+ private inner;
21
+ private theme;
22
+ node: Nullable<HTMLElement>;
23
+ state: ScrollBarState;
24
+ componentDidMount(): void;
25
+ componentDidUpdate(): void;
26
+ render(): JSX.Element;
27
+ private renderMain;
28
+ reflow: () => void;
29
+ setInnerElement: (inner: Nullable<HTMLElement>) => void;
30
+ setHover(hover: boolean): void;
31
+ get scrollBarState(): ScrollBarScrollState;
32
+ private get scrollBarStyles();
33
+ private refScroll;
34
+ private handleScrollMouseDown;
35
+ private handleScrollWheel;
36
+ private getImmediateScrollState;
37
+ }