@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
|
@@ -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
|
-
|
|
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
|
-
|
|
10
|
+
/**
|
|
11
|
+
* Инвертировать цвет скроллбара
|
|
12
|
+
* @default false
|
|
13
|
+
*/
|
|
14
|
+
invert: boolean;
|
|
8
15
|
maxHeight?: React.CSSProperties['maxHeight'];
|
|
9
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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()
|
|
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,55 @@
|
|
|
1
|
+
import { MIN_SCROLL_SIZE, scrollSizeParametersNames } from "../ScrollContainer.constants";
|
|
2
|
+
export var getScrollSizeParams = function getScrollSizeParams(inner, axis) {
|
|
3
|
+
var _scrollSizeParameters = scrollSizeParametersNames[axis],
|
|
4
|
+
offset = _scrollSizeParameters.offset,
|
|
5
|
+
size = _scrollSizeParameters.size,
|
|
6
|
+
pos = _scrollSizeParameters.pos;
|
|
7
|
+
var contentSize = inner[size];
|
|
8
|
+
var scrollOffset = inner[pos];
|
|
9
|
+
var containerSize = inner[offset];
|
|
10
|
+
var scrollActive = containerSize < contentSize;
|
|
11
|
+
var scrollSize = 0;
|
|
12
|
+
var scrollPos = 0;
|
|
13
|
+
|
|
14
|
+
if (scrollActive) {
|
|
15
|
+
scrollSize = Math.max(containerSize / contentSize * containerSize, MIN_SCROLL_SIZE);
|
|
16
|
+
scrollPos = scrollOffset / (contentSize - containerSize) * (containerSize - scrollSize);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
return {
|
|
20
|
+
scrollActive: scrollActive,
|
|
21
|
+
scrollSize: scrollSize,
|
|
22
|
+
scrollPos: scrollPos
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
export var getScrollYOffset = function getScrollYOffset(element, container) {
|
|
26
|
+
var elementOffset = element.offsetTop;
|
|
27
|
+
|
|
28
|
+
if (container.scrollTop > elementOffset) {
|
|
29
|
+
return elementOffset;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
var offset = elementOffset + element.scrollHeight - container.offsetHeight;
|
|
33
|
+
|
|
34
|
+
if (container.scrollTop < offset) {
|
|
35
|
+
return offset;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return container.scrollTop;
|
|
39
|
+
};
|
|
40
|
+
export var convertScrollbarXScrollState = function convertScrollbarXScrollState(state) {
|
|
41
|
+
var scrollBarState = {
|
|
42
|
+
begin: 'left',
|
|
43
|
+
end: 'right',
|
|
44
|
+
middle: 'scroll'
|
|
45
|
+
};
|
|
46
|
+
return scrollBarState[state];
|
|
47
|
+
};
|
|
48
|
+
export var convertScrollbarYScrollState = function convertScrollbarYScrollState(state) {
|
|
49
|
+
var scrollBarState = {
|
|
50
|
+
begin: 'top',
|
|
51
|
+
end: 'bottom',
|
|
52
|
+
middle: 'scroll'
|
|
53
|
+
};
|
|
54
|
+
return scrollBarState[state];
|
|
55
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["ScrollContainer.helpers.ts"],"names":["MIN_SCROLL_SIZE","scrollSizeParametersNames","getScrollSizeParams","inner","axis","offset","size","pos","contentSize","scrollOffset","containerSize","scrollActive","scrollSize","scrollPos","Math","max","getScrollYOffset","element","container","elementOffset","offsetTop","scrollTop","scrollHeight","offsetHeight","convertScrollbarXScrollState","state","scrollBarState","begin","end","middle","convertScrollbarYScrollState"],"mappings":"AAAA,SAASA,eAAT,EAA0BC,yBAA1B,QAA2D,6BAA3D;;;;AAIA,OAAO,IAAMC,mBAAmB,GAAG,SAAtBA,mBAAsB,CAACC,KAAD,EAAqBC,IAArB,EAAyC;AAC5CH,EAAAA,yBAAyB,CAACG,IAAD,CADmB,CAClEC,MADkE,yBAClEA,MADkE,CAC1DC,IAD0D,yBAC1DA,IAD0D,CACpDC,GADoD,yBACpDA,GADoD;;AAG1E,MAAMC,WAAW,GAAGL,KAAK,CAACG,IAAD,CAAzB;AACA,MAAMG,YAAY,GAAGN,KAAK,CAACI,GAAD,CAA1B;AACA,MAAMG,aAAa,GAAGP,KAAK,CAACE,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,EAAwDV,eAAxD,CAAb;AACAa,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;;AAwBP,OAAO,IAAMG,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,MAAMd,MAAM,GAAGc,aAAa,GAAGF,OAAO,CAACK,YAAxB,GAAuCJ,SAAS,CAACK,YAAhE;AACA,MAAIL,SAAS,CAACG,SAAV,GAAsBhB,MAA1B,EAAkC;AAChC,WAAOA,MAAP;AACD;;AAED,SAAOa,SAAS,CAACG,SAAjB;AACD,CAbM;;AAeP,OAAO,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;;AAUP,OAAO,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","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"]}
|
|
@@ -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;
|
|
@@ -26,14 +26,14 @@ var absStyle = {
|
|
|
26
26
|
<div>
|
|
27
27
|
<div style={divStyle}>
|
|
28
28
|
<ScrollContainer>
|
|
29
|
-
{items(20).map(i => (
|
|
29
|
+
{items(20).map((i) => (
|
|
30
30
|
<div key={i}>{i}</div>
|
|
31
31
|
))}
|
|
32
32
|
</ScrollContainer>
|
|
33
33
|
</div>
|
|
34
34
|
<div style={{ ...divStyle, background: '#888' }}>
|
|
35
35
|
<ScrollContainer invert>
|
|
36
|
-
{items(20).map(i => (
|
|
36
|
+
{items(20).map((i) => (
|
|
37
37
|
<div key={i}>{i}</div>
|
|
38
38
|
))}
|
|
39
39
|
</ScrollContainer>
|
|
@@ -41,7 +41,7 @@ var absStyle = {
|
|
|
41
41
|
<div style={divStyle}>
|
|
42
42
|
<div style={absStyle}>
|
|
43
43
|
<ScrollContainer>
|
|
44
|
-
{items(3).map(i => (
|
|
44
|
+
{items(3).map((i) => (
|
|
45
45
|
<div key={i}>{i}</div>
|
|
46
46
|
))}
|
|
47
47
|
</ScrollContainer>
|
|
@@ -50,7 +50,7 @@ var absStyle = {
|
|
|
50
50
|
<div style={divStyle}>
|
|
51
51
|
<div style={absStyle}>
|
|
52
52
|
<ScrollContainer maxHeight={150}>
|
|
53
|
-
{items(30).map(i => (
|
|
53
|
+
{items(30).map((i) => (
|
|
54
54
|
<div key={i}>{i}</div>
|
|
55
55
|
))}
|
|
56
56
|
</ScrollContainer>
|
|
@@ -59,9 +59,25 @@ var absStyle = {
|
|
|
59
59
|
</div>;
|
|
60
60
|
```
|
|
61
61
|
|
|
62
|
-
|
|
62
|
+
Горизонтальный scrollbar.
|
|
63
63
|
|
|
64
64
|
```jsx harmony
|
|
65
|
+
var divStyle = {
|
|
66
|
+
display: 'inline-block',
|
|
67
|
+
border: '1px solid #f99',
|
|
68
|
+
height: 200,
|
|
69
|
+
margin: 1,
|
|
70
|
+
position: 'relative',
|
|
71
|
+
verticalAlign: 'top',
|
|
72
|
+
width: 200,
|
|
73
|
+
};
|
|
74
|
+
var absStyle = {
|
|
75
|
+
border: '1px solid #000',
|
|
76
|
+
boxSizing: 'border-box',
|
|
77
|
+
position: 'absolute',
|
|
78
|
+
width: '100%',
|
|
79
|
+
};
|
|
80
|
+
|
|
65
81
|
function items(count) {
|
|
66
82
|
var items = [];
|
|
67
83
|
for (var i = 0; i < count; ++i) {
|
|
@@ -82,13 +98,46 @@ var innerStyle = {
|
|
|
82
98
|
width: 400,
|
|
83
99
|
};
|
|
84
100
|
|
|
85
|
-
<div
|
|
86
|
-
<
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
{i}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
101
|
+
<div>
|
|
102
|
+
<div style={divStyle}>
|
|
103
|
+
<ScrollContainer>
|
|
104
|
+
{items(5).map((i) => (
|
|
105
|
+
<div style={innerStyle} key={i}>
|
|
106
|
+
{i}
|
|
107
|
+
</div>
|
|
108
|
+
))}
|
|
109
|
+
</ScrollContainer>
|
|
110
|
+
</div>
|
|
111
|
+
<div style={{ ...divStyle, background: '#888' }}>
|
|
112
|
+
<ScrollContainer invert>
|
|
113
|
+
{items(20).map((i) => (
|
|
114
|
+
<div style={innerStyle} key={i}>
|
|
115
|
+
{i}
|
|
116
|
+
</div>
|
|
117
|
+
))}
|
|
118
|
+
</ScrollContainer>
|
|
119
|
+
</div>
|
|
120
|
+
<div style={divStyle}>
|
|
121
|
+
<div style={absStyle}>
|
|
122
|
+
<ScrollContainer maxHeight={150}>
|
|
123
|
+
{items(3).map((i) => (
|
|
124
|
+
<div style={innerStyle} key={i}>
|
|
125
|
+
{i}
|
|
126
|
+
</div>
|
|
127
|
+
))}
|
|
128
|
+
</ScrollContainer>
|
|
129
|
+
</div>
|
|
130
|
+
</div>
|
|
131
|
+
<div style={divStyle}>
|
|
132
|
+
<div style={absStyle}>
|
|
133
|
+
<ScrollContainer maxHeight={150} maxWidth={200}>
|
|
134
|
+
{items(30).map((i) => (
|
|
135
|
+
<div style={innerStyle} key={i}>
|
|
136
|
+
{i}
|
|
137
|
+
</div>
|
|
138
|
+
))}
|
|
139
|
+
</ScrollContainer>
|
|
140
|
+
</div>
|
|
141
|
+
</div>
|
|
93
142
|
</div>;
|
|
94
143
|
```
|
|
@@ -1,22 +1,36 @@
|
|
|
1
1
|
import _taggedTemplateLiteralLoose from "@babel/runtime/helpers/esm/taggedTemplateLiteralLoose";
|
|
2
2
|
|
|
3
|
-
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
|
|
3
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8;
|
|
4
4
|
|
|
5
|
-
import { css, memoizeStyle } from "../../../lib/theming/Emotion";
|
|
5
|
+
import { css, memoizeStyle, prefix } from "../../../lib/theming/Emotion";
|
|
6
|
+
export var globalClasses = prefix('scroll-container')({
|
|
7
|
+
scrollbarX: 'scrollbar-x',
|
|
8
|
+
scrollbarY: 'scrollbar-y',
|
|
9
|
+
inner: 'inner'
|
|
10
|
+
});
|
|
6
11
|
export var styles = memoizeStyle({
|
|
7
12
|
root: function root() {
|
|
8
13
|
return css(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n height: 100%;\n overflow: hidden;\n position: relative;\n "])));
|
|
9
14
|
},
|
|
10
15
|
inner: function inner() {
|
|
11
|
-
return css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n
|
|
16
|
+
return css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n position: relative;\n overflow: scroll;\n max-height: 100%;\n max-width: 100%;\n\n /* IE sometimes enabled scroll: http://codepen.io/anon/pen/RRrLNX */\n margin-bottom: -1px;\n padding-bottom: 1px;\n margin-right: -1px;\n padding-right: 1px;\n\n /* Hide scrobars without losing functionality */\n scrollbar-width: none;\n -ms-overflow-style: none;\n &::-webkit-scrollbar {\n width: 0;\n height: 0;\n }\n "])));
|
|
12
17
|
},
|
|
13
|
-
|
|
14
|
-
return css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteralLoose(["\n position: absolute;\n
|
|
18
|
+
scrollBar: function scrollBar(t) {
|
|
19
|
+
return css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteralLoose(["\n position: absolute;\n z-index: 200;\n\n &::after {\n content: '';\n display: block;\n border-radius: 5px;\n position: absolute;\n background: ", ";\n }\n "])), t.scrollContainerScrollBarColor);
|
|
15
20
|
},
|
|
16
|
-
|
|
17
|
-
return css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteralLoose(["\n
|
|
21
|
+
scrollBarInvert: function scrollBarInvert(t) {
|
|
22
|
+
return css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteralLoose(["\n &::after {\n background: #ccc;\n background: ", ";\n }\n "])), t.scrollContainerScrollBarInvertColor);
|
|
18
23
|
},
|
|
19
|
-
|
|
20
|
-
return css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteralLoose(["\n &::after {\n
|
|
24
|
+
scrollBarY: function scrollBarY(t) {
|
|
25
|
+
return css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteralLoose(["\n right: 2px;\n transition: width 0.2s;\n width: ", ";\n\n &::after {\n bottom: 1px;\n left: 0;\n right: 0;\n top: 1px;\n }\n "])), t.scrollContainerScrollBarSize);
|
|
26
|
+
},
|
|
27
|
+
scrollBarYHover: function scrollBarYHover(t) {
|
|
28
|
+
return css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteralLoose(["\n width: ", ";\n "])), t.scrollContainerScrollBarHoverSize);
|
|
29
|
+
},
|
|
30
|
+
scrollBarX: function scrollBarX(t) {
|
|
31
|
+
return css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteralLoose(["\n bottom: 1px;\n transition: height 0.2s;\n height: ", ";\n\n &::after {\n bottom: 0px;\n left: 1px;\n right: 1px;\n top: 0;\n }\n\n .", " ~ & {\n &::after {\n right: calc(", " + 4px) !important;\n }\n }\n\n & ~ .", " {\n &::after {\n content: ' ';\n width: 100%;\n display: block;\n height: calc(", " + 2px);\n }\n }\n "])), t.scrollContainerScrollBarSize, globalClasses.scrollbarY, t.scrollContainerScrollBarHoverSize, globalClasses.inner, t.scrollContainerScrollBarHoverSize);
|
|
32
|
+
},
|
|
33
|
+
scrollBarXHover: function scrollBarXHover(t) {
|
|
34
|
+
return css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteralLoose(["\n height: ", ";\n "])), t.scrollContainerScrollBarHoverSize);
|
|
21
35
|
}
|
|
22
36
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ScrollContainer.styles.ts"],"names":["css","memoizeStyle","styles","root","
|
|
1
|
+
{"version":3,"sources":["ScrollContainer.styles.ts"],"names":["css","memoizeStyle","prefix","globalClasses","scrollbarX","scrollbarY","inner","styles","root","scrollBar","t","scrollContainerScrollBarColor","scrollBarInvert","scrollContainerScrollBarInvertColor","scrollBarY","scrollContainerScrollBarSize","scrollBarYHover","scrollContainerScrollBarHoverSize","scrollBarX","scrollBarXHover"],"mappings":"kPAAA,SAASA,GAAT,EAAcC,YAAd,EAA4BC,MAA5B,QAA0C,2BAA1C;;;AAGA,OAAO,IAAMC,aAAa,GAAGD,MAAM,CAAC,kBAAD,CAAN,CAA2B;AACtDE,EAAAA,UAAU,EAAE,aAD0C;AAEtDC,EAAAA,UAAU,EAAE,aAF0C;AAGtDC,EAAAA,KAAK,EAAE,OAH+C,EAA3B,CAAtB;;;AAMP,OAAO,IAAMC,MAAM,GAAGN,YAAY,CAAC;AACjCO,EAAAA,IADiC,kBAC1B;AACL,WAAOR,GAAP;;;;;AAKD,GAPgC;;AASjCM,EAAAA,KATiC,mBASzB;AACN,WAAON,GAAP;;;;;;;;;;;;;;;;;;;;AAoBD,GA9BgC;;AAgCjCS,EAAAA,SAhCiC,qBAgCvBC,CAhCuB,EAgCb;AAClB,WAAOV,GAAP;;;;;;;;;AASkBU,IAAAA,CAAC,CAACC,6BATpB;;;AAYD,GA7CgC;;AA+CjCC,EAAAA,eA/CiC,2BA+CjBF,CA/CiB,EA+CP;AACxB,WAAOV,GAAP;;;AAGkBU,IAAAA,CAAC,CAACG,mCAHpB;;;AAMD,GAtDgC;;AAwDjCC,EAAAA,UAxDiC,sBAwDtBJ,CAxDsB,EAwDZ;AACnB,WAAOV,GAAP;;;AAGWU,IAAAA,CAAC,CAACK,4BAHb;;;;;;;;;AAYD,GArEgC;;AAuEjCC,EAAAA,eAvEiC,2BAuEjBN,CAvEiB,EAuEP;AACxB,WAAOV,GAAP;AACWU,IAAAA,CAAC,CAACO,iCADb;;AAGD,GA3EgC;;AA6EjCC,EAAAA,UA7EiC,sBA6EtBR,CA7EsB,EA6EZ;AACnB,WAAOV,GAAP;;;AAGYU,IAAAA,CAAC,CAACK,4BAHd;;;;;;;;;AAYKZ,IAAAA,aAAa,CAACE,UAZnB;;AAcoBK,IAAAA,CAAC,CAACO,iCAdtB;;;;AAkBSd,IAAAA,aAAa,CAACG,KAlBvB;;;;;AAuBqBI,IAAAA,CAAC,CAACO,iCAvBvB;;;;AA2BD,GAzGgC;;AA2GjCE,EAAAA,eA3GiC,2BA2GjBT,CA3GiB,EA2GP;AACxB,WAAOV,GAAP;AACYU,IAAAA,CAAC,CAACO,iCADd;;AAGD,GA/GgC,EAAD,CAA3B","sourcesContent":["import { css, memoizeStyle, prefix } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const globalClasses = prefix('scroll-container')({\n scrollbarX: 'scrollbar-x',\n scrollbarY: 'scrollbar-y',\n inner: 'inner',\n});\n\nexport const styles = memoizeStyle({\n root() {\n return css`\n height: 100%;\n overflow: hidden;\n position: relative;\n `;\n },\n\n inner() {\n return css`\n position: relative;\n overflow: scroll;\n max-height: 100%;\n max-width: 100%;\n\n /* IE sometimes enabled scroll: http://codepen.io/anon/pen/RRrLNX */\n margin-bottom: -1px;\n padding-bottom: 1px;\n margin-right: -1px;\n padding-right: 1px;\n\n /* Hide scrobars without losing functionality */\n scrollbar-width: none;\n -ms-overflow-style: none;\n &::-webkit-scrollbar {\n width: 0;\n height: 0;\n }\n `;\n },\n\n scrollBar(t: Theme) {\n return css`\n position: absolute;\n z-index: 200;\n\n &::after {\n content: '';\n display: block;\n border-radius: 5px;\n position: absolute;\n background: ${t.scrollContainerScrollBarColor};\n }\n `;\n },\n\n scrollBarInvert(t: Theme) {\n return css`\n &::after {\n background: #ccc;\n background: ${t.scrollContainerScrollBarInvertColor};\n }\n `;\n },\n\n scrollBarY(t: Theme) {\n return css`\n right: 2px;\n transition: width 0.2s;\n width: ${t.scrollContainerScrollBarSize};\n\n &::after {\n bottom: 1px;\n left: 0;\n right: 0;\n top: 1px;\n }\n `;\n },\n\n scrollBarYHover(t: Theme) {\n return css`\n width: ${t.scrollContainerScrollBarHoverSize};\n `;\n },\n\n scrollBarX(t: Theme) {\n return css`\n bottom: 1px;\n transition: height 0.2s;\n height: ${t.scrollContainerScrollBarSize};\n\n &::after {\n bottom: 0px;\n left: 1px;\n right: 1px;\n top: 0;\n }\n\n .${globalClasses.scrollbarY} ~ & {\n &::after {\n right: calc(${t.scrollContainerScrollBarHoverSize} + 4px) !important;\n }\n }\n\n & ~ .${globalClasses.inner} {\n &::after {\n content: ' ';\n width: 100%;\n display: block;\n height: calc(${t.scrollContainerScrollBarHoverSize} + 2px);\n }\n }\n `;\n },\n\n scrollBarXHover(t: Theme) {\n return css`\n height: ${t.scrollContainerScrollBarHoverSize};\n `;\n },\n});\n"]}
|
|
@@ -1,7 +1,16 @@
|
|
|
1
|
+
import { Theme } from '../../lib/theming/Theme';
|
|
2
|
+
export declare const globalClasses: {
|
|
3
|
+
scrollbarX: string;
|
|
4
|
+
scrollbarY: string;
|
|
5
|
+
inner: string;
|
|
6
|
+
};
|
|
1
7
|
export declare const styles: {
|
|
2
8
|
root(): string;
|
|
3
9
|
inner(): string;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
10
|
+
scrollBar(t: Theme): string;
|
|
11
|
+
scrollBarInvert(t: Theme): string;
|
|
12
|
+
scrollBarY(t: Theme): string;
|
|
13
|
+
scrollBarYHover(t: Theme): string;
|
|
14
|
+
scrollBarX(t: Theme): string;
|
|
15
|
+
scrollBarXHover(t: Theme): string;
|
|
7
16
|
};
|
|
@@ -13,7 +13,6 @@ import { RenderLayer } from "../../../internal/RenderLayer";
|
|
|
13
13
|
import { ZIndex } from "../../../internal/ZIndex";
|
|
14
14
|
import { ThemeContext } from "../../../lib/theming/ThemeContext";
|
|
15
15
|
import { CommonWrapper } from "../../../internal/CommonWrapper";
|
|
16
|
-
import { isIE11 } from "../../../lib/client";
|
|
17
16
|
import { cx } from "../../../lib/theming/Emotion";
|
|
18
17
|
import { SidePageBody } from "../SidePageBody";
|
|
19
18
|
import { SidePageContainer } from "../SidePageContainer";
|
|
@@ -244,7 +243,7 @@ export var SidePage = /*#__PURE__*/function (_React$Component) {
|
|
|
244
243
|
className: cx(styles.wrapper(this.theme), (_cx2 = {}, _cx2[styles.shadow(this.theme)] = this.state.hasShadow, _cx2[styles.wrapperLeft()] = fromLeft, _cx2)),
|
|
245
244
|
style: this.getSidebarStyle()
|
|
246
245
|
}, /*#__PURE__*/React.createElement(FocusLock, {
|
|
247
|
-
disabled: disableFocusLock,
|
|
246
|
+
disabled: disableFocusLock || !blockBackground,
|
|
248
247
|
autoFocus: false
|
|
249
248
|
}, /*#__PURE__*/React.createElement("div", {
|
|
250
249
|
ref: function ref(_) {
|
|
@@ -305,6 +304,5 @@ SidePage.Body = SidePageBody;
|
|
|
305
304
|
SidePage.Footer = SidePageFooter;
|
|
306
305
|
SidePage.Container = SidePageContainer;
|
|
307
306
|
SidePage.defaultProps = {
|
|
308
|
-
|
|
309
|
-
disableFocusLock: isIE11
|
|
307
|
+
disableFocusLock: true
|
|
310
308
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["SidePage.tsx"],"names":["React","CSSTransition","FocusLock","isKeyEscape","LayoutEvents","stopPropagation","HideBodyVerticalScroll","ModalStack","RenderContainer","RenderLayer","ZIndex","ThemeContext","CommonWrapper","isIE11","cx","SidePageBody","SidePageContainer","SidePageContext","SidePageFooter","SidePageHeader","styles","TRANSITION_TIMEOUT","SidePage","state","hasHeader","hasFooter","hasPanel","theme","stackSubscription","layoutRef","footer","updateLayout","update","getSidePageContextProps","requestClose","getWidth","footerRef","setHasHeader","setHasFooter","setHasPanel","getBoundingClientRect","width","handleStackChange","stack","sidePages","filter","x","props","fromLeft","currentSidePagePosition","indexOf","hasMargin","length","hasShadow","hasBackground","isBlocking","setState","stackPosition","handleClickOutside","e","ignoreBackgroundClick","MouseEvent","clientX","document","documentElement","clientWidth","handleKeyDown","disableClose","onClose","ref","componentDidMount","window","addEventListener","add","componentWillUnmount","removeEventListener","remove","render","renderMain","blockBackground","disableAnimations","renderShadow","getTransitionNames","enter","exit","renderContainer","disableFocusLock","root","leftSide","Boolean","emit","wrapper","shadow","wrapperLeft","getSidebarStyle","_","layout","children","overlay","background","backgroundGray","sidePageStyle","marginLeft","marginRight","transition","transitionRight","transitionLeft","enterActive","transitionActive","transitionLeave","exitActive","transitionLeaveActive","appear","appearActive","Component","__KONTUR_REACT_UI__","Header","Body","Footer","Container","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport FocusLock from 'react-focus-lock';\n\nimport { isKeyEscape } from '../../lib/events/keyboard/identifiers';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { stopPropagation } from '../../lib/events/stopPropagation';\nimport { HideBodyVerticalScroll } from '../../internal/HideBodyVerticalScroll';\nimport { ModalStack, ModalStackSubscription } from '../../lib/ModalStack';\nimport { RenderContainer } from '../../internal/RenderContainer';\nimport { RenderLayer } from '../../internal/RenderLayer';\nimport { ZIndex } from '../../internal/ZIndex';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { isIE11 } from '../../lib/client';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { SidePageBody } from './SidePageBody';\nimport { SidePageContainer } from './SidePageContainer';\nimport { SidePageContext, SidePageContextType } from './SidePageContext';\nimport { SidePageFooter } from './SidePageFooter';\nimport { SidePageHeader } from './SidePageHeader';\nimport { styles } from './SidePage.styles';\n\nexport interface SidePageProps extends CommonProps {\n /**\n * Добавить блокирующий фон, когда сайдпейдж открыт\n */\n blockBackground?: boolean;\n\n /**\n * Отключает событие onClose, также дизейблит кнопку закрытия сайдпейджа\n */\n disableClose?: boolean;\n\n /**\n * Не закрывать сайдпейдж при клике на фон.\n */\n ignoreBackgroundClick?: boolean;\n\n /**\n * Задать ширину сайдпейджа\n */\n width?: number | string;\n\n /**\n * Вызывается, когда пользователь запросил закрытие сайдпейджа (нажал на фон, на\n * Escape или на крестик).\n */\n onClose?: () => void;\n\n /**\n * Показывать сайдпэйдж слева\n *\n */\n fromLeft?: boolean;\n\n /**\n * Отключить анимации\n *\n */\n disableAnimations?: boolean;\n\n /**\n * Не использовать фокус-лок внутри сайдпейджа.\n * По умолчанию true для IE11.\n */\n disableFocusLock: boolean;\n}\n\nexport interface SidePageState {\n stackPosition?: number;\n hasMargin?: boolean;\n hasShadow?: boolean;\n hasBackground?: boolean;\n hasHeader: boolean;\n hasFooter: boolean;\n hasPanel: boolean;\n}\n\nconst TRANSITION_TIMEOUT = 200;\n\n/**\n * Сайдпейдж\n *\n * Содержит в себе три компоненты: **SidePage.Header**,\n * **SidePage.Body** и **SidePage.Footer**\n *\n * Для отображения серой плашки в футере в компонент\n * **Footer** необходимо передать пропс **panel**\n */\nexport class SidePage extends React.Component<SidePageProps, SidePageState> {\n public static __KONTUR_REACT_UI__ = 'SidePage';\n\n public static Header = SidePageHeader;\n public static Body = SidePageBody;\n public static Footer = SidePageFooter;\n public static Container = SidePageContainer;\n public state: SidePageState = {\n hasHeader: false,\n hasFooter: false,\n hasPanel: false,\n };\n private theme!: Theme;\n private stackSubscription: ModalStackSubscription | null = null;\n private layoutRef: HTMLElement | null = null;\n private footer: SidePageFooter | null = null;\n\n public componentDidMount() {\n window.addEventListener('keydown', this.handleKeyDown);\n this.stackSubscription = ModalStack.add(this, this.handleStackChange);\n }\n\n public componentWillUnmount() {\n window.removeEventListener('keydown', this.handleKeyDown);\n if (this.stackSubscription != null) {\n this.stackSubscription.remove();\n }\n ModalStack.remove(this);\n }\n\n /**\n * Обновляет разметку компонента.\n * @public\n */\n public updateLayout = (): void => {\n if (this.footer) {\n this.footer.update();\n }\n };\n\n public static defaultProps = {\n // NOTE: в ie нормально не работает\n disableFocusLock: isIE11,\n };\n\n public render(): JSX.Element {\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 { blockBackground, disableAnimations } = this.props;\n\n return (\n <CommonWrapper {...this.props}>\n <RenderContainer>\n <div>\n {blockBackground && this.renderShadow()}\n <CSSTransition\n in\n classNames={this.getTransitionNames()}\n appear={!disableAnimations}\n enter={!disableAnimations}\n exit={false}\n timeout={{\n enter: TRANSITION_TIMEOUT,\n exit: TRANSITION_TIMEOUT,\n }}\n >\n {this.renderContainer()}\n </CSSTransition>\n </div>\n </RenderContainer>\n </CommonWrapper>\n );\n }\n\n private renderContainer(): JSX.Element {\n const { width, blockBackground, fromLeft, disableFocusLock } = this.props;\n\n return (\n <ZIndex\n priority={'Sidepage'}\n data-tid=\"SidePage__root\"\n className={cx({\n [styles.root()]: true,\n [styles.leftSide()]: Boolean(fromLeft),\n })}\n onScroll={LayoutEvents.emit}\n createStackingContext\n style={{ width: width || (blockBackground ? 800 : 500) }}\n >\n <RenderLayer onClickOutside={this.handleClickOutside} active>\n <div\n data-tid=\"SidePage__container\"\n className={cx(styles.wrapper(this.theme), {\n [styles.shadow(this.theme)]: this.state.hasShadow,\n [styles.wrapperLeft()]: fromLeft,\n })}\n style={this.getSidebarStyle()}\n >\n <FocusLock disabled={disableFocusLock} autoFocus={false}>\n <div ref={(_) => (this.layoutRef = _)} className={styles.layout()}>\n <SidePageContext.Provider value={this.getSidePageContextProps()}>\n {this.props.children}\n </SidePageContext.Provider>\n </div>\n </FocusLock>\n </div>\n </RenderLayer>\n </ZIndex>\n );\n }\n\n private getSidePageContextProps = (): SidePageContextType => {\n return {\n hasHeader: this.state.hasHeader,\n hasFooter: this.state.hasFooter,\n hasPanel: this.state.hasPanel,\n requestClose: this.requestClose,\n getWidth: this.getWidth,\n updateLayout: this.updateLayout,\n footerRef: this.footerRef,\n setHasHeader: this.setHasHeader,\n setHasFooter: this.setHasFooter,\n setHasPanel: this.setHasPanel,\n };\n };\n\n private getWidth = () => {\n if (!this.layoutRef) {\n return 'auto';\n }\n return this.layoutRef.getBoundingClientRect().width;\n };\n\n private renderShadow(): JSX.Element {\n return (\n <ZIndex priority={'Sidepage'} className={styles.overlay()} onScroll={LayoutEvents.emit}>\n <HideBodyVerticalScroll key=\"hbvs\" />\n <div\n key=\"overlay\"\n className={cx({\n [styles.background()]: true,\n [styles.backgroundGray(this.theme)]: this.state.hasBackground,\n })}\n />\n </ZIndex>\n );\n }\n\n private getSidebarStyle(): React.CSSProperties {\n const sidePageStyle: React.CSSProperties = {};\n\n if (this.state.hasMargin) {\n if (this.props.fromLeft) {\n sidePageStyle.marginLeft = 20;\n } else {\n sidePageStyle.marginRight = 20;\n }\n }\n\n return sidePageStyle;\n }\n\n private getTransitionNames(): Record<string, string> {\n const transition = this.props.fromLeft ? styles.transitionRight : styles.transitionLeft;\n\n return {\n enter: transition(),\n enterActive: styles.transitionActive(),\n exit: styles.transitionLeave(),\n exitActive: styles.transitionLeaveActive(),\n appear: transition(),\n appearActive: styles.transitionActive(),\n };\n }\n\n private handleStackChange = (stack: ReadonlyArray<React.Component>) => {\n const sidePages = stack.filter((x) => x instanceof SidePage && x.props.fromLeft === this.props.fromLeft);\n const currentSidePagePosition = sidePages.indexOf(this);\n\n const hasMargin = sidePages.length > 1 && currentSidePagePosition === sidePages.length - 1;\n const hasShadow = sidePages.length < 3 || currentSidePagePosition > sidePages.length - 3;\n const hasBackground = ModalStack.isBlocking(this);\n\n this.setState({\n stackPosition: stack.indexOf(this),\n hasMargin,\n hasShadow,\n hasBackground,\n });\n };\n\n private handleClickOutside = (e: Event) => {\n if (this.state.stackPosition === 0 && !this.props.ignoreBackgroundClick) {\n // ignore mousedown on window scrollbar\n if (e instanceof MouseEvent && e.clientX > document.documentElement.clientWidth) {\n return;\n }\n this.requestClose();\n }\n };\n\n private handleKeyDown = (e: KeyboardEvent) => {\n if (this.state.stackPosition !== 0) {\n return;\n }\n if (isKeyEscape(e)) {\n stopPropagation(e);\n this.requestClose();\n }\n };\n\n private requestClose = () => {\n if (this.props.disableClose) {\n return;\n }\n if (this.props.onClose) {\n this.props.onClose();\n }\n };\n\n private footerRef = (ref: SidePageFooter | null) => {\n this.footer = ref;\n };\n\n private setHasHeader = (hasHeader = true) => {\n this.state.hasHeader !== hasHeader && this.setState({ hasHeader });\n };\n\n private setHasFooter = (hasFooter = true) => {\n this.state.hasFooter !== hasFooter && this.setState({ hasFooter });\n };\n\n private setHasPanel = (hasPanel = false) => {\n this.state.hasPanel !== hasPanel && this.setState({ hasPanel });\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["SidePage.tsx"],"names":["React","CSSTransition","FocusLock","isKeyEscape","LayoutEvents","stopPropagation","HideBodyVerticalScroll","ModalStack","RenderContainer","RenderLayer","ZIndex","ThemeContext","CommonWrapper","cx","SidePageBody","SidePageContainer","SidePageContext","SidePageFooter","SidePageHeader","styles","TRANSITION_TIMEOUT","SidePage","state","hasHeader","hasFooter","hasPanel","theme","stackSubscription","layoutRef","footer","updateLayout","update","getSidePageContextProps","requestClose","getWidth","footerRef","setHasHeader","setHasFooter","setHasPanel","getBoundingClientRect","width","handleStackChange","stack","sidePages","filter","x","props","fromLeft","currentSidePagePosition","indexOf","hasMargin","length","hasShadow","hasBackground","isBlocking","setState","stackPosition","handleClickOutside","e","ignoreBackgroundClick","MouseEvent","clientX","document","documentElement","clientWidth","handleKeyDown","disableClose","onClose","ref","componentDidMount","window","addEventListener","add","componentWillUnmount","removeEventListener","remove","render","renderMain","blockBackground","disableAnimations","renderShadow","getTransitionNames","enter","exit","renderContainer","disableFocusLock","root","leftSide","Boolean","emit","wrapper","shadow","wrapperLeft","getSidebarStyle","_","layout","children","overlay","background","backgroundGray","sidePageStyle","marginLeft","marginRight","transition","transitionRight","transitionLeft","enterActive","transitionActive","transitionLeave","exitActive","transitionLeaveActive","appear","appearActive","Component","__KONTUR_REACT_UI__","Header","Body","Footer","Container","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport FocusLock from 'react-focus-lock';\n\nimport { isKeyEscape } from '../../lib/events/keyboard/identifiers';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { stopPropagation } from '../../lib/events/stopPropagation';\nimport { HideBodyVerticalScroll } from '../../internal/HideBodyVerticalScroll';\nimport { ModalStack, ModalStackSubscription } from '../../lib/ModalStack';\nimport { RenderContainer } from '../../internal/RenderContainer';\nimport { RenderLayer } from '../../internal/RenderLayer';\nimport { ZIndex } from '../../internal/ZIndex';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { SidePageBody } from './SidePageBody';\nimport { SidePageContainer } from './SidePageContainer';\nimport { SidePageContext, SidePageContextType } from './SidePageContext';\nimport { SidePageFooter } from './SidePageFooter';\nimport { SidePageHeader } from './SidePageHeader';\nimport { styles } from './SidePage.styles';\n\nexport interface SidePageProps extends CommonProps {\n /**\n * Добавить блокирующий фон, когда сайдпейдж открыт\n */\n blockBackground?: boolean;\n\n /**\n * Отключает событие onClose, также дизейблит кнопку закрытия сайдпейджа\n */\n disableClose?: boolean;\n\n /**\n * Не закрывать сайдпейдж при клике на фон.\n */\n ignoreBackgroundClick?: boolean;\n\n /**\n * Задать ширину сайдпейджа\n */\n width?: number | string;\n\n /**\n * Вызывается, когда пользователь запросил закрытие сайдпейджа (нажал на фон, на\n * Escape или на крестик).\n */\n onClose?: () => void;\n\n /**\n * Показывать сайдпэйдж слева\n *\n */\n fromLeft?: boolean;\n\n /**\n * Отключить анимации\n *\n */\n disableAnimations?: boolean;\n\n /**\n * Работает только при заблокированном фоне: `blockBackground = true`\n */\n disableFocusLock: boolean;\n}\n\nexport interface SidePageState {\n stackPosition?: number;\n hasMargin?: boolean;\n hasShadow?: boolean;\n hasBackground?: boolean;\n hasHeader: boolean;\n hasFooter: boolean;\n hasPanel: boolean;\n}\n\nconst TRANSITION_TIMEOUT = 200;\n\n/**\n * Сайдпейдж\n *\n * Содержит в себе три компоненты: **SidePage.Header**,\n * **SidePage.Body** и **SidePage.Footer**\n *\n * Для отображения серой плашки в футере в компонент\n * **Footer** необходимо передать пропс **panel**\n */\nexport class SidePage extends React.Component<SidePageProps, SidePageState> {\n public static __KONTUR_REACT_UI__ = 'SidePage';\n\n public static Header = SidePageHeader;\n public static Body = SidePageBody;\n public static Footer = SidePageFooter;\n public static Container = SidePageContainer;\n public state: SidePageState = {\n hasHeader: false,\n hasFooter: false,\n hasPanel: false,\n };\n private theme!: Theme;\n private stackSubscription: ModalStackSubscription | null = null;\n private layoutRef: HTMLElement | null = null;\n private footer: SidePageFooter | null = null;\n\n public componentDidMount() {\n window.addEventListener('keydown', this.handleKeyDown);\n this.stackSubscription = ModalStack.add(this, this.handleStackChange);\n }\n\n public componentWillUnmount() {\n window.removeEventListener('keydown', this.handleKeyDown);\n if (this.stackSubscription != null) {\n this.stackSubscription.remove();\n }\n ModalStack.remove(this);\n }\n\n /**\n * Обновляет разметку компонента.\n * @public\n */\n public updateLayout = (): void => {\n if (this.footer) {\n this.footer.update();\n }\n };\n\n public static defaultProps = {\n disableFocusLock: true,\n };\n\n public render(): JSX.Element {\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 { blockBackground, disableAnimations } = this.props;\n\n return (\n <CommonWrapper {...this.props}>\n <RenderContainer>\n <div>\n {blockBackground && this.renderShadow()}\n <CSSTransition\n in\n classNames={this.getTransitionNames()}\n appear={!disableAnimations}\n enter={!disableAnimations}\n exit={false}\n timeout={{\n enter: TRANSITION_TIMEOUT,\n exit: TRANSITION_TIMEOUT,\n }}\n >\n {this.renderContainer()}\n </CSSTransition>\n </div>\n </RenderContainer>\n </CommonWrapper>\n );\n }\n\n private renderContainer(): JSX.Element {\n const { width, blockBackground, fromLeft, disableFocusLock } = this.props;\n\n return (\n <ZIndex\n priority={'Sidepage'}\n data-tid=\"SidePage__root\"\n className={cx({\n [styles.root()]: true,\n [styles.leftSide()]: Boolean(fromLeft),\n })}\n onScroll={LayoutEvents.emit}\n createStackingContext\n style={{ width: width || (blockBackground ? 800 : 500) }}\n >\n <RenderLayer onClickOutside={this.handleClickOutside} active>\n <div\n data-tid=\"SidePage__container\"\n className={cx(styles.wrapper(this.theme), {\n [styles.shadow(this.theme)]: this.state.hasShadow,\n [styles.wrapperLeft()]: fromLeft,\n })}\n style={this.getSidebarStyle()}\n >\n <FocusLock disabled={disableFocusLock || !blockBackground} autoFocus={false}>\n <div ref={(_) => (this.layoutRef = _)} className={styles.layout()}>\n <SidePageContext.Provider value={this.getSidePageContextProps()}>\n {this.props.children}\n </SidePageContext.Provider>\n </div>\n </FocusLock>\n </div>\n </RenderLayer>\n </ZIndex>\n );\n }\n\n private getSidePageContextProps = (): SidePageContextType => {\n return {\n hasHeader: this.state.hasHeader,\n hasFooter: this.state.hasFooter,\n hasPanel: this.state.hasPanel,\n requestClose: this.requestClose,\n getWidth: this.getWidth,\n updateLayout: this.updateLayout,\n footerRef: this.footerRef,\n setHasHeader: this.setHasHeader,\n setHasFooter: this.setHasFooter,\n setHasPanel: this.setHasPanel,\n };\n };\n\n private getWidth = () => {\n if (!this.layoutRef) {\n return 'auto';\n }\n return this.layoutRef.getBoundingClientRect().width;\n };\n\n private renderShadow(): JSX.Element {\n return (\n <ZIndex priority={'Sidepage'} className={styles.overlay()} onScroll={LayoutEvents.emit}>\n <HideBodyVerticalScroll key=\"hbvs\" />\n <div\n key=\"overlay\"\n className={cx({\n [styles.background()]: true,\n [styles.backgroundGray(this.theme)]: this.state.hasBackground,\n })}\n />\n </ZIndex>\n );\n }\n\n private getSidebarStyle(): React.CSSProperties {\n const sidePageStyle: React.CSSProperties = {};\n\n if (this.state.hasMargin) {\n if (this.props.fromLeft) {\n sidePageStyle.marginLeft = 20;\n } else {\n sidePageStyle.marginRight = 20;\n }\n }\n\n return sidePageStyle;\n }\n\n private getTransitionNames(): Record<string, string> {\n const transition = this.props.fromLeft ? styles.transitionRight : styles.transitionLeft;\n\n return {\n enter: transition(),\n enterActive: styles.transitionActive(),\n exit: styles.transitionLeave(),\n exitActive: styles.transitionLeaveActive(),\n appear: transition(),\n appearActive: styles.transitionActive(),\n };\n }\n\n private handleStackChange = (stack: ReadonlyArray<React.Component>) => {\n const sidePages = stack.filter((x) => x instanceof SidePage && x.props.fromLeft === this.props.fromLeft);\n const currentSidePagePosition = sidePages.indexOf(this);\n\n const hasMargin = sidePages.length > 1 && currentSidePagePosition === sidePages.length - 1;\n const hasShadow = sidePages.length < 3 || currentSidePagePosition > sidePages.length - 3;\n const hasBackground = ModalStack.isBlocking(this);\n\n this.setState({\n stackPosition: stack.indexOf(this),\n hasMargin,\n hasShadow,\n hasBackground,\n });\n };\n\n private handleClickOutside = (e: Event) => {\n if (this.state.stackPosition === 0 && !this.props.ignoreBackgroundClick) {\n // ignore mousedown on window scrollbar\n if (e instanceof MouseEvent && e.clientX > document.documentElement.clientWidth) {\n return;\n }\n this.requestClose();\n }\n };\n\n private handleKeyDown = (e: KeyboardEvent) => {\n if (this.state.stackPosition !== 0) {\n return;\n }\n if (isKeyEscape(e)) {\n stopPropagation(e);\n this.requestClose();\n }\n };\n\n private requestClose = () => {\n if (this.props.disableClose) {\n return;\n }\n if (this.props.onClose) {\n this.props.onClose();\n }\n };\n\n private footerRef = (ref: SidePageFooter | null) => {\n this.footer = ref;\n };\n\n private setHasHeader = (hasHeader = true) => {\n this.state.hasHeader !== hasHeader && this.setState({ hasHeader });\n };\n\n private setHasFooter = (hasFooter = true) => {\n this.state.hasFooter !== hasFooter && this.setState({ hasFooter });\n };\n\n private setHasPanel = (hasPanel = false) => {\n this.state.hasPanel !== hasPanel && this.setState({ hasPanel });\n };\n}\n"]}
|
|
@@ -37,8 +37,7 @@ export interface SidePageProps extends CommonProps {
|
|
|
37
37
|
*/
|
|
38
38
|
disableAnimations?: boolean;
|
|
39
39
|
/**
|
|
40
|
-
*
|
|
41
|
-
* По умолчанию true для IE11.
|
|
40
|
+
* Работает только при заблокированном фоне: `blockBackground = true`
|
|
42
41
|
*/
|
|
43
42
|
disableFocusLock: boolean;
|
|
44
43
|
}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import _taggedTemplateLiteralLoose from "@babel/runtime/helpers/esm/taggedTemplateLiteralLoose";
|
|
2
2
|
|
|
3
|
-
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19, _templateObject20, _templateObject21, _templateObject22, _templateObject23, _templateObject24, _templateObject25, _templateObject26, _templateObject27, _templateObject28, _templateObject29, _templateObject30;
|
|
3
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19, _templateObject20, _templateObject21, _templateObject22, _templateObject23, _templateObject24, _templateObject25, _templateObject26, _templateObject27, _templateObject28, _templateObject29, _templateObject30, _templateObject31;
|
|
4
4
|
|
|
5
5
|
import { is8pxTheme } from "../../../lib/theming/ThemeHelpers";
|
|
6
6
|
import { css, memoizeStyle } from "../../../lib/theming/Emotion";
|
|
7
|
+
import { resetButton } from "../../../lib/styles/Mixins";
|
|
7
8
|
export var styles = memoizeStyle({
|
|
8
9
|
root: function root() {
|
|
9
10
|
return css(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n height: 100%;\n position: fixed;\n right: 0;\n top: 0;\n "])));
|
|
@@ -36,7 +37,7 @@ export var styles = memoizeStyle({
|
|
|
36
37
|
return css(_templateObject10 || (_templateObject10 = _taggedTemplateLiteralLoose(["\n align-items: stretch;\n display: flex;\n flex-direction: column;\n "])));
|
|
37
38
|
},
|
|
38
39
|
header: function header(t) {
|
|
39
|
-
return css(_templateObject11 || (_templateObject11 = _taggedTemplateLiteralLoose(["\n font-size: ", ";\n line-height: ", ";\n padding: ", " 0 ", ";\n width: 100%;\n position: relative;\n "])), t.sidePageHeaderFontSize, t.sidePageHeaderLineHeight, t.sidePageHeaderPaddingTop, t.sidePageHeaderPaddingBottom);
|
|
40
|
+
return css(_templateObject11 || (_templateObject11 = _taggedTemplateLiteralLoose(["\n font-size: ", ";\n line-height: ", ";\n padding: ", " 0 ", ";\n width: 100%;\n position: relative;\n color: ", ";\n "])), t.sidePageHeaderFontSize, t.sidePageHeaderLineHeight, t.sidePageHeaderPaddingTop, t.sidePageHeaderPaddingBottom, t.sidePageHeaderTextColor);
|
|
40
41
|
},
|
|
41
42
|
headerFixed: function headerFixed(t) {
|
|
42
43
|
return css(_templateObject12 || (_templateObject12 = _taggedTemplateLiteralLoose(["\n background: ", ";\n font-size: ", ";\n line-height: ", ";\n padding: ", " 0;\n\n &:after {\n bottom: 0px;\n content: '';\n position: absolute;\n height: 1px;\n width: 100%;\n left: 0;\n z-index: -1;\n box-shadow: ", ";\n }\n "])), t.sidePageBgDefault, t.sidePageHeaderFixedFontSize, t.sidePageHeaderFixedLineHeight, t.sidePageHeaderFixedPaddingY, t.sidePageFixedHeaderShadow);
|
|
@@ -61,39 +62,42 @@ export var styles = memoizeStyle({
|
|
|
61
62
|
return css(_templateObject18 || (_templateObject18 = _taggedTemplateLiteralLoose(["\n left: 0;\n right: auto;\n "])));
|
|
62
63
|
},
|
|
63
64
|
close: function close(t) {
|
|
64
|
-
return css(_templateObject19 || (_templateObject19 = _taggedTemplateLiteralLoose(["\n
|
|
65
|
+
return css(_templateObject19 || (_templateObject19 = _taggedTemplateLiteralLoose(["\n ", ";\n cursor: pointer;\n color: ", ";\n padding: ", ";\n margin: -", ";\n font-size: 0;\n\n &:focus,\n &:hover {\n color: ", ";\n }\n\n & > svg {\n width: ", ";\n height: ", ";\n box-sizing: content-box;\n }\n "])), resetButton(), t.sidePageCloseButtonColor, t.sidePageCloseButtonClickArea, t.sidePageCloseButtonClickArea, t.sidePageCloseButtonHoverColor, t.sidePageCloseIconSize, t.sidePageCloseIconSize);
|
|
65
66
|
},
|
|
66
|
-
|
|
67
|
-
return css(_templateObject20 || (_templateObject20 = _taggedTemplateLiteralLoose(["\n
|
|
67
|
+
closeFocus: function closeFocus(t) {
|
|
68
|
+
return css(_templateObject20 || (_templateObject20 = _taggedTemplateLiteralLoose(["\n outline: 2px solid ", ";\n "])), t.borderColorFocus);
|
|
69
|
+
},
|
|
70
|
+
wrapperClose: function wrapperClose(t) {
|
|
71
|
+
return css(_templateObject21 || (_templateObject21 = _taggedTemplateLiteralLoose(["\n box-sizing: border-box;\n height: 100%;\n line-height: ", ";\n padding: ", " 0 ", ";\n position: absolute;\n right: ", ";\n top: 0;\n "])), t.sidePageHeaderLineHeight, t.sidePageHeaderPaddingTop, t.sidePageHeaderPaddingBottom, t.sidePageCloseButtonPadding);
|
|
68
72
|
},
|
|
69
|
-
|
|
70
|
-
return css(
|
|
73
|
+
panel: function panel(t) {
|
|
74
|
+
return css(_templateObject22 || (_templateObject22 = _taggedTemplateLiteralLoose(["\n background: ", ";\n padding: ", " ", " ", "\n ", ";\n "])), t.sidePageFooterPanelBg, t.sidePageFooterPanelPaddingTop, t.sidePagePaddingRight, t.sidePageFooterPanelPaddingBottom, t.sidePagePaddingLeft);
|
|
71
75
|
},
|
|
72
76
|
fixed: function fixed(t) {
|
|
73
|
-
return css(
|
|
77
|
+
return css(_templateObject23 || (_templateObject23 = _taggedTemplateLiteralLoose(["\n line-height: ", ";\n padding: ", " 0;\n "])), t.sidePageHeaderFixedLineHeight, t.sidePageHeaderFixedPaddingY);
|
|
74
78
|
},
|
|
75
79
|
footer: function footer() {
|
|
76
|
-
return css(
|
|
80
|
+
return css(_templateObject24 || (_templateObject24 = _taggedTemplateLiteralLoose(["\n bottom: 0;\n position: fixed;\n z-index: 10;\n "])));
|
|
77
81
|
},
|
|
78
82
|
footerContent: function footerContent(t) {
|
|
79
|
-
return css(
|
|
83
|
+
return css(_templateObject25 || (_templateObject25 = _taggedTemplateLiteralLoose(["\n padding: ", " ", " ", "\n ", ";\n "])), t.sidePageFooterPaddingTop, t.sidePagePaddingRight, t.sidePageFooterPaddingBottom, t.sidePagePaddingLeft);
|
|
80
84
|
},
|
|
81
85
|
footerFixed: function footerFixed(t) {
|
|
82
|
-
return css(
|
|
86
|
+
return css(_templateObject26 || (_templateObject26 = _taggedTemplateLiteralLoose(["\n background: ", ";\n\n &:before {\n top: 0px;\n content: '';\n position: absolute;\n height: 1px;\n width: 100%;\n left: 0;\n z-index: -1;\n box-shadow: ", ";\n }\n "])), t.sidePageBgDefault, t.sidePageFixedFooterShadow);
|
|
83
87
|
},
|
|
84
88
|
transitionLeft: function transitionLeft() {
|
|
85
|
-
return css(
|
|
89
|
+
return css(_templateObject27 || (_templateObject27 = _taggedTemplateLiteralLoose(["\n transform: translateX(100px);\n "])));
|
|
86
90
|
},
|
|
87
91
|
transitionRight: function transitionRight() {
|
|
88
|
-
return css(
|
|
92
|
+
return css(_templateObject28 || (_templateObject28 = _taggedTemplateLiteralLoose(["\n transform: translateX(-100px);\n "])));
|
|
89
93
|
},
|
|
90
94
|
transitionActive: function transitionActive() {
|
|
91
|
-
return css(
|
|
95
|
+
return css(_templateObject29 || (_templateObject29 = _taggedTemplateLiteralLoose(["\n transition: transform 0.18s cubic-bezier(0.22, 0.61, 0.36, 1), opacity 0.18s cubic-bezier(0.22, 0.61, 0.36, 1);\n opacity: 1;\n transform: translate(0, 0);\n "])));
|
|
92
96
|
},
|
|
93
97
|
transitionLeave: function transitionLeave() {
|
|
94
|
-
return css(
|
|
98
|
+
return css(_templateObject30 || (_templateObject30 = _taggedTemplateLiteralLoose(["\n opacity: 1;\n "])));
|
|
95
99
|
},
|
|
96
100
|
transitionLeaveActive: function transitionLeaveActive() {
|
|
97
|
-
return css(
|
|
101
|
+
return css(_templateObject31 || (_templateObject31 = _taggedTemplateLiteralLoose(["\n opacity: 0.01;\n transition: opacity 0.15s ease-out;\n "])));
|
|
98
102
|
}
|
|
99
103
|
});
|