@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.
- package/CHANGELOG.md +71 -0
- package/cjs/components/Button/Button.d.ts +1 -0
- package/cjs/components/Button/Button.js +7 -4
- package/cjs/components/Button/Button.js.map +1 -1
- package/cjs/components/Button/Button.styles.js +2 -2
- package/cjs/components/Button/Button.styles.js.map +1 -1
- package/cjs/components/Checkbox/Checkbox.js +9 -8
- package/cjs/components/Checkbox/Checkbox.js.map +1 -1
- package/cjs/components/Checkbox/Checkbox.styles.js +3 -2
- package/cjs/components/Checkbox/Checkbox.styles.js.map +1 -1
- package/cjs/components/CurrencyLabel/CurrencyLabel.js +14 -5
- package/cjs/components/CurrencyLabel/CurrencyLabel.js.map +1 -1
- package/cjs/components/CurrencyLabel/CurrencyLabel.styles.d.ts +4 -0
- package/cjs/components/CurrencyLabel/CurrencyLabel.styles.js +9 -0
- package/cjs/components/CurrencyLabel/CurrencyLabel.styles.js.map +1 -0
- package/cjs/components/FxInput/FxInput.js +1 -1
- package/cjs/components/FxInput/FxInput.js.map +1 -1
- package/cjs/components/Input/Input.styles.js +1 -1
- package/cjs/components/Input/Input.styles.js.map +1 -1
- package/cjs/components/Kebab/Kebab.js +2 -2
- package/cjs/components/Kebab/Kebab.js.map +1 -1
- package/cjs/components/Link/Link.js +2 -2
- package/cjs/components/Link/Link.js.map +1 -1
- package/cjs/components/Loader/Loader.d.ts +3 -1
- package/cjs/components/Loader/Loader.js +20 -1
- package/cjs/components/Loader/Loader.js.map +1 -1
- package/cjs/components/MenuItem/MenuItem.md +1 -1
- package/cjs/components/MenuItem/MenuItem.styles.js +3 -2
- package/cjs/components/MenuItem/MenuItem.styles.js.map +1 -1
- package/cjs/components/Modal/Modal.styles.d.ts +1 -0
- package/cjs/components/Modal/Modal.styles.js +24 -21
- package/cjs/components/Modal/Modal.styles.js.map +1 -1
- package/cjs/components/Modal/ModalClose.js +23 -3
- package/cjs/components/Modal/ModalClose.js.map +1 -1
- package/cjs/components/Paging/Paging.js +2 -2
- package/cjs/components/Paging/Paging.js.map +1 -1
- package/cjs/components/Paging/Paging.styles.js +2 -1
- package/cjs/components/Paging/Paging.styles.js.map +1 -1
- package/cjs/components/Radio/Radio.d.ts +9 -1
- package/cjs/components/Radio/Radio.js +37 -4
- package/cjs/components/Radio/Radio.js.map +1 -1
- package/cjs/components/Radio/Radio.styles.d.ts +1 -1
- package/cjs/components/Radio/Radio.styles.js +5 -10
- package/cjs/components/Radio/Radio.styles.js.map +1 -1
- package/cjs/components/ScrollContainer/ScrollBar.d.ts +37 -0
- package/cjs/components/ScrollContainer/ScrollBar.js +244 -0
- package/cjs/components/ScrollContainer/ScrollBar.js.map +1 -0
- package/cjs/components/ScrollContainer/ScrollContainer.constants.d.ts +23 -0
- package/cjs/components/ScrollContainer/ScrollContainer.constants.js +33 -0
- package/cjs/components/ScrollContainer/ScrollContainer.constants.js.map +1 -0
- package/cjs/components/ScrollContainer/ScrollContainer.d.ts +38 -23
- package/cjs/components/ScrollContainer/ScrollContainer.helpers.d.ts +10 -0
- package/cjs/components/ScrollContainer/ScrollContainer.helpers.js +62 -0
- package/cjs/components/ScrollContainer/ScrollContainer.helpers.js.map +1 -0
- package/cjs/components/ScrollContainer/ScrollContainer.js +81 -153
- package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
- package/cjs/components/ScrollContainer/ScrollContainer.md +62 -13
- package/cjs/components/ScrollContainer/ScrollContainer.styles.d.ts +12 -3
- package/cjs/components/ScrollContainer/ScrollContainer.styles.js +72 -9
- package/cjs/components/ScrollContainer/ScrollContainer.styles.js.map +1 -1
- package/cjs/components/SidePage/SidePage.d.ts +1 -2
- package/cjs/components/SidePage/SidePage.js +1 -5
- package/cjs/components/SidePage/SidePage.js.map +1 -1
- package/cjs/components/SidePage/SidePage.styles.d.ts +2 -1
- package/cjs/components/SidePage/SidePage.styles.js +44 -28
- package/cjs/components/SidePage/SidePage.styles.js.map +1 -1
- package/cjs/components/SidePage/SidePageHeader.d.ts +4 -1
- package/cjs/components/SidePage/SidePageHeader.js +33 -23
- package/cjs/components/SidePage/SidePageHeader.js.map +1 -1
- package/cjs/components/Switcher/Switcher.js +1 -1
- package/cjs/components/Switcher/Switcher.js.map +1 -1
- package/cjs/components/Switcher/Switcher.styles.d.ts +1 -1
- package/cjs/components/Switcher/Switcher.styles.js +3 -2
- package/cjs/components/Switcher/Switcher.styles.js.map +1 -1
- package/cjs/components/Tabs/Tab.d.ts +0 -3
- package/cjs/components/Tabs/Tab.js +3 -13
- package/cjs/components/Tabs/Tab.js.map +1 -1
- package/cjs/components/Tabs/Tab.styles.js +2 -2
- package/cjs/components/Tabs/Tab.styles.js.map +1 -1
- package/cjs/components/Toggle/Toggle.js +6 -5
- package/cjs/components/Toggle/Toggle.js.map +1 -1
- package/cjs/components/Toggle/Toggle.styles.d.ts +1 -0
- package/cjs/components/Toggle/Toggle.styles.js +26 -16
- package/cjs/components/Toggle/Toggle.styles.js.map +1 -1
- package/cjs/components/Token/Token.styles.js +8 -9
- package/cjs/components/Token/Token.styles.js.map +1 -1
- package/cjs/components/TokenInput/TokenInput.d.ts +8 -0
- package/cjs/components/TokenInput/TokenInput.js +24 -2
- package/cjs/components/TokenInput/TokenInput.js.map +1 -1
- package/cjs/components/Tooltip/Tooltip.styles.js +2 -1
- package/cjs/components/Tooltip/Tooltip.styles.js.map +1 -1
- package/cjs/internal/CustomComboBox/ComboBoxView.js +2 -1
- package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
- package/cjs/internal/CustomComboBox/CustomComboBoxReducer.js +3 -2
- package/cjs/internal/CustomComboBox/CustomComboBoxReducer.js.map +1 -1
- package/cjs/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.js +5 -7
- package/cjs/internal/HideBodyVerticalScroll/HideBodyVerticalScroll.js.map +1 -1
- package/cjs/internal/InputLikeText/InputLikeText.js +2 -1
- package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
- package/cjs/internal/PopupMenu/PopupMenu.js +1 -1
- package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
- package/cjs/internal/RenderContainer/RenderContainer.js +2 -1
- package/cjs/internal/RenderContainer/RenderContainer.js.map +1 -1
- package/cjs/internal/ThemePlayground/darkTheme.js +3 -3
- package/cjs/internal/ThemePlayground/darkTheme.js.map +1 -1
- package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
- package/cjs/internal/icons/CrossIcon.js +8 -1
- package/cjs/internal/icons/CrossIcon.js.map +1 -1
- package/cjs/internal/themes/DefaultTheme.d.ts +23 -7
- package/cjs/internal/themes/DefaultTheme.js +77 -32
- package/cjs/internal/themes/DefaultTheme.js.map +1 -1
- package/cjs/internal/themes/FlatTheme.d.ts +4 -4
- package/cjs/internal/themes/FlatTheme.js +16 -8
- package/cjs/internal/themes/FlatTheme.js.map +1 -1
- package/cjs/internal/themes/Theme8px.d.ts +0 -5
- package/cjs/internal/themes/Theme8px.js +2 -12
- package/cjs/internal/themes/Theme8px.js.map +1 -1
- package/cjs/lib/Upgrades.d.ts +2 -0
- package/cjs/lib/Upgrades.js +14 -0
- package/cjs/lib/Upgrades.js.map +1 -1
- package/cjs/lib/events/keyListener.d.ts +7 -0
- package/cjs/lib/events/keyListener.js +22 -0
- package/cjs/lib/events/keyListener.js.map +1 -0
- package/cjs/lib/events/keyboard/identifiers.d.ts +1 -0
- package/cjs/lib/events/keyboard/identifiers.js +6 -1
- package/cjs/lib/events/keyboard/identifiers.js.map +1 -1
- package/cjs/lib/events/tabListener.d.ts +1 -6
- package/cjs/lib/events/tabListener.js +2 -15
- package/cjs/lib/events/tabListener.js.map +1 -1
- package/cjs/lib/locale/LOCALECONTEXT.md +1 -1
- package/cjs/lib/styles/ColorFunctions.js +1 -1
- package/cjs/lib/styles/ColorFunctions.js.map +1 -1
- package/cjs/lib/theming/Emotion.js +1 -1
- package/cjs/lib/theming/Emotion.js.map +1 -1
- package/cjs/lib/theming/ThemeContext.md +1 -1
- package/cjs/lib/utils.d.ts +7 -0
- package/cjs/lib/utils.js +12 -2
- package/cjs/lib/utils.js.map +1 -1
- package/components/Button/Button/Button.js +5 -4
- package/components/Button/Button/Button.js.map +1 -1
- package/components/Button/Button.d.ts +1 -0
- package/components/Button/Button.styles/Button.styles.js +1 -1
- package/components/Button/Button.styles/Button.styles.js.map +1 -1
- package/components/Checkbox/Checkbox/Checkbox.js +5 -5
- package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
- package/components/Checkbox/Checkbox.styles/Checkbox.styles.js +2 -2
- package/components/Checkbox/Checkbox.styles/Checkbox.styles.js.map +1 -1
- package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js +11 -5
- package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js.map +1 -1
- package/components/CurrencyLabel/CurrencyLabel.styles/CurrencyLabel.styles.js +10 -0
- package/components/CurrencyLabel/CurrencyLabel.styles/CurrencyLabel.styles.js.map +1 -0
- package/components/CurrencyLabel/CurrencyLabel.styles/package.json +6 -0
- package/components/CurrencyLabel/CurrencyLabel.styles.d.ts +4 -0
- package/components/FxInput/FxInput/FxInput.js +2 -1
- package/components/FxInput/FxInput/FxInput.js.map +1 -1
- package/components/Input/Input.styles/Input.styles.js +1 -1
- package/components/Input/Input.styles/Input.styles.js.map +1 -1
- package/components/Kebab/Kebab/Kebab.js +2 -2
- package/components/Kebab/Kebab/Kebab.js.map +1 -1
- package/components/Link/Link/Link.js +2 -2
- package/components/Link/Link/Link.js.map +1 -1
- package/components/Loader/Loader/Loader.js +34 -14
- package/components/Loader/Loader/Loader.js.map +1 -1
- package/components/Loader/Loader.d.ts +3 -1
- package/components/MenuItem/MenuItem.md +1 -1
- package/components/MenuItem/MenuItem.styles/MenuItem.styles.js +1 -1
- package/components/MenuItem/MenuItem.styles/MenuItem.styles.js.map +1 -1
- package/components/Modal/Modal.styles/Modal.styles.js +18 -15
- package/components/Modal/Modal.styles/Modal.styles.js.map +1 -1
- package/components/Modal/Modal.styles.d.ts +1 -0
- package/components/Modal/ModalClose/ModalClose.js +25 -2
- package/components/Modal/ModalClose/ModalClose.js.map +1 -1
- package/components/Paging/Paging/Paging.js +2 -2
- package/components/Paging/Paging/Paging.js.map +1 -1
- package/components/Paging/Paging.styles/Paging.styles.js +1 -1
- package/components/Paging/Paging.styles/Paging.styles.js.map +1 -1
- package/components/Radio/Radio/Radio.js +36 -3
- package/components/Radio/Radio/Radio.js.map +1 -1
- package/components/Radio/Radio.d.ts +9 -1
- package/components/Radio/Radio.styles/Radio.styles.js +3 -3
- package/components/Radio/Radio.styles/Radio.styles.js.map +1 -1
- package/components/Radio/Radio.styles.d.ts +1 -1
- package/components/ScrollContainer/ScrollBar/ScrollBar.js +254 -0
- package/components/ScrollContainer/ScrollBar/ScrollBar.js.map +1 -0
- package/components/ScrollContainer/ScrollBar/package.json +6 -0
- package/components/ScrollContainer/ScrollBar.d.ts +37 -0
- package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +121 -205
- package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
- package/components/ScrollContainer/ScrollContainer.constants/ScrollContainer.constants.js +31 -0
- package/components/ScrollContainer/ScrollContainer.constants/ScrollContainer.constants.js.map +1 -0
- package/components/ScrollContainer/ScrollContainer.constants/package.json +6 -0
- package/components/ScrollContainer/ScrollContainer.constants.d.ts +23 -0
- package/components/ScrollContainer/ScrollContainer.d.ts +38 -23
- package/components/ScrollContainer/ScrollContainer.helpers/ScrollContainer.helpers.js +55 -0
- package/components/ScrollContainer/ScrollContainer.helpers/ScrollContainer.helpers.js.map +1 -0
- package/components/ScrollContainer/ScrollContainer.helpers/package.json +6 -0
- package/components/ScrollContainer/ScrollContainer.helpers.d.ts +10 -0
- package/components/ScrollContainer/ScrollContainer.md +62 -13
- package/components/ScrollContainer/ScrollContainer.styles/ScrollContainer.styles.js +23 -9
- package/components/ScrollContainer/ScrollContainer.styles/ScrollContainer.styles.js.map +1 -1
- package/components/ScrollContainer/ScrollContainer.styles.d.ts +12 -3
- package/components/SidePage/SidePage/SidePage.js +2 -4
- package/components/SidePage/SidePage/SidePage.js.map +1 -1
- package/components/SidePage/SidePage.d.ts +1 -2
- package/components/SidePage/SidePage.styles/SidePage.styles.js +20 -16
- package/components/SidePage/SidePage.styles/SidePage.styles.js.map +1 -1
- package/components/SidePage/SidePage.styles.d.ts +2 -1
- package/components/SidePage/SidePageHeader/SidePageHeader.js +40 -22
- package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
- package/components/SidePage/SidePageHeader.d.ts +4 -1
- package/components/Switcher/Switcher/Switcher.js +1 -1
- package/components/Switcher/Switcher/Switcher.js.map +1 -1
- package/components/Switcher/Switcher.styles/Switcher.styles.js +2 -2
- package/components/Switcher/Switcher.styles/Switcher.styles.js.map +1 -1
- package/components/Switcher/Switcher.styles.d.ts +1 -1
- package/components/Tabs/Tab/Tab.js +2 -16
- package/components/Tabs/Tab/Tab.js.map +1 -1
- package/components/Tabs/Tab.d.ts +0 -3
- package/components/Tabs/Tab.styles/Tab.styles.js +1 -1
- package/components/Tabs/Tab.styles/Tab.styles.js.map +1 -1
- package/components/Toggle/Toggle/Toggle.js +5 -5
- package/components/Toggle/Toggle/Toggle.js.map +1 -1
- package/components/Toggle/Toggle.styles/Toggle.styles.js +15 -12
- package/components/Toggle/Toggle.styles/Toggle.styles.js.map +1 -1
- package/components/Toggle/Toggle.styles.d.ts +1 -0
- package/components/Token/Token.styles/Token.styles.js +2 -2
- package/components/Token/Token.styles/Token.styles.js.map +1 -1
- package/components/TokenInput/TokenInput/TokenInput.js +24 -2
- package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
- package/components/TokenInput/TokenInput.d.ts +8 -0
- package/components/Tooltip/Tooltip.styles/Tooltip.styles.js +1 -1
- package/components/Tooltip/Tooltip.styles/Tooltip.styles.js.map +1 -1
- package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js +2 -1
- package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
- package/internal/CustomComboBox/CustomComboBoxReducer/CustomComboBoxReducer.js +3 -2
- package/internal/CustomComboBox/CustomComboBoxReducer/CustomComboBoxReducer.js.map +1 -1
- package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll/HideBodyVerticalScroll.js +4 -4
- package/internal/HideBodyVerticalScroll/HideBodyVerticalScroll/HideBodyVerticalScroll.js.map +1 -1
- package/internal/InputLikeText/InputLikeText/InputLikeText.js +2 -1
- package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
- package/internal/PopupMenu/PopupMenu/PopupMenu.js +2 -2
- package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
- package/internal/RenderContainer/RenderContainer/RenderContainer.js +2 -1
- package/internal/RenderContainer/RenderContainer/RenderContainer.js.map +1 -1
- package/internal/ThemePlayground/darkTheme/darkTheme.js +3 -3
- package/internal/ThemePlayground/darkTheme/darkTheme.js.map +1 -1
- package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
- package/internal/icons/CrossIcon/CrossIcon.js +2 -1
- package/internal/icons/CrossIcon/CrossIcon.js.map +1 -1
- package/internal/themes/DefaultTheme/DefaultTheme.js +100 -19
- package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
- package/internal/themes/DefaultTheme.d.ts +23 -7
- package/internal/themes/FlatTheme/FlatTheme.js +18 -6
- package/internal/themes/FlatTheme/FlatTheme.js.map +1 -1
- package/internal/themes/FlatTheme.d.ts +4 -4
- package/internal/themes/Theme8px/Theme8px.js +1 -14
- package/internal/themes/Theme8px/Theme8px.js.map +1 -1
- package/internal/themes/Theme8px.d.ts +0 -5
- package/lib/Upgrades/Upgrades.js +13 -0
- package/lib/Upgrades/Upgrades.js.map +1 -1
- package/lib/Upgrades.d.ts +2 -0
- package/lib/events/keyListener/keyListener.js +22 -0
- package/lib/events/keyListener/keyListener.js.map +1 -0
- package/lib/events/keyListener/package.json +6 -0
- package/lib/events/keyListener.d.ts +7 -0
- package/lib/events/keyboard/identifiers/identifiers.js +10 -1
- package/lib/events/keyboard/identifiers/identifiers.js.map +1 -1
- package/lib/events/keyboard/identifiers.d.ts +1 -0
- package/lib/events/tabListener/tabListener.js +2 -19
- package/lib/events/tabListener/tabListener.js.map +1 -1
- package/lib/events/tabListener.d.ts +1 -6
- package/lib/locale/LOCALECONTEXT.md +1 -1
- package/lib/styles/ColorFunctions/ColorFunctions.js +1 -1
- package/lib/styles/ColorFunctions/ColorFunctions.js.map +1 -1
- package/lib/theming/Emotion/Emotion.js +1 -1
- package/lib/theming/Emotion/Emotion.js.map +1 -1
- package/lib/theming/ThemeContext.md +1 -1
- package/lib/utils/utils.js +10 -0
- package/lib/utils/utils.js.map +1 -1
- package/lib/utils.d.ts +7 -0
- 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,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
|
+
}
|