@skbkontur/react-ui 4.0.0-beta.5 → 4.0.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 +81 -0
- package/cjs/components/GlobalLoader/GlobalLoader.d.ts +1 -1
- package/cjs/components/GlobalLoader/GlobalLoader.js.map +1 -1
- package/cjs/components/GlobalLoader/GlobalLoader.md +13 -3
- package/cjs/components/GlobalLoader/GlobalLoaderView.js +6 -3
- package/cjs/components/GlobalLoader/GlobalLoaderView.js.map +1 -1
- package/cjs/components/GlobalLoader/GlobalLoaderView.styles.d.ts +3 -2
- package/cjs/components/GlobalLoader/GlobalLoaderView.styles.js +59 -12
- package/cjs/components/GlobalLoader/GlobalLoaderView.styles.js.map +1 -1
- package/cjs/components/GlobalLoader/useParams.d.ts +1 -0
- package/cjs/components/GlobalLoader/useParams.js +3 -2
- package/cjs/components/GlobalLoader/useParams.js.map +1 -1
- package/cjs/components/ScrollContainer/ScrollBar.js +4 -2
- package/cjs/components/ScrollContainer/ScrollBar.js.map +1 -1
- package/cjs/components/ScrollContainer/ScrollContainer.js +2 -1
- package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
- package/cjs/components/ScrollContainer/ScrollContainer.styles.d.ts +1 -0
- package/cjs/components/ScrollContainer/ScrollContainer.styles.js +12 -8
- package/cjs/components/ScrollContainer/ScrollContainer.styles.js.map +1 -1
- package/cjs/components/Select/Select.js +4 -1
- package/cjs/components/Select/Select.js.map +1 -1
- package/cjs/components/SidePage/SidePage.d.ts +5 -1
- package/cjs/components/SidePage/SidePage.js +31 -9
- package/cjs/components/SidePage/SidePage.js.map +1 -1
- package/cjs/components/SidePage/SidePageContext.d.ts +2 -0
- package/cjs/components/SidePage/SidePageContext.js +3 -0
- package/cjs/components/SidePage/SidePageContext.js.map +1 -1
- package/cjs/components/SidePage/SidePageHeader.d.ts +3 -0
- package/cjs/components/SidePage/SidePageHeader.js +36 -26
- package/cjs/components/SidePage/SidePageHeader.js.map +1 -1
- package/cjs/components/Sticky/Sticky.d.ts +6 -1
- package/cjs/components/Sticky/Sticky.js +5 -0
- package/cjs/components/Sticky/Sticky.js.map +1 -1
- package/cjs/internal/DropdownContainer/DropdownContainer.d.ts +1 -0
- package/cjs/internal/DropdownContainer/DropdownContainer.js +15 -2
- package/cjs/internal/DropdownContainer/DropdownContainer.js.map +1 -1
- package/cjs/internal/DropdownContainer/DropdownContainer.styles.d.ts +3 -0
- package/cjs/internal/DropdownContainer/DropdownContainer.styles.js +9 -0
- package/cjs/internal/DropdownContainer/DropdownContainer.styles.js.map +1 -0
- package/cjs/internal/Menu/Menu.d.ts +2 -0
- package/cjs/internal/Menu/Menu.js +33 -3
- package/cjs/internal/Menu/Menu.js.map +1 -1
- package/cjs/internal/Menu/Menu.styles.d.ts +3 -0
- package/cjs/internal/Menu/Menu.styles.js +23 -3
- package/cjs/internal/Menu/Menu.styles.js.map +1 -1
- package/cjs/internal/Popup/Popup.js +3 -1
- package/cjs/internal/Popup/Popup.js.map +1 -1
- package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
- package/cjs/internal/themes/DefaultTheme.d.ts +3 -1
- package/cjs/internal/themes/DefaultTheme.js +3 -1
- package/cjs/internal/themes/DefaultTheme.js.map +1 -1
- package/components/GlobalLoader/GlobalLoader/GlobalLoader.js.map +1 -1
- package/components/GlobalLoader/GlobalLoader.d.ts +1 -1
- package/components/GlobalLoader/GlobalLoader.md +13 -3
- package/components/GlobalLoader/GlobalLoaderView/GlobalLoaderView.js +8 -3
- package/components/GlobalLoader/GlobalLoaderView/GlobalLoaderView.js.map +1 -1
- package/components/GlobalLoader/GlobalLoaderView.styles/GlobalLoaderView.styles.js +19 -10
- package/components/GlobalLoader/GlobalLoaderView.styles/GlobalLoaderView.styles.js.map +1 -1
- package/components/GlobalLoader/GlobalLoaderView.styles.d.ts +3 -2
- package/components/GlobalLoader/useParams/useParams.js +5 -1
- package/components/GlobalLoader/useParams/useParams.js.map +1 -1
- package/components/GlobalLoader/useParams.d.ts +1 -0
- package/components/ScrollContainer/ScrollBar/ScrollBar.js +6 -2
- package/components/ScrollContainer/ScrollBar/ScrollBar.js.map +1 -1
- package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +2 -1
- package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
- package/components/ScrollContainer/ScrollContainer.styles/ScrollContainer.styles.js +11 -8
- package/components/ScrollContainer/ScrollContainer.styles/ScrollContainer.styles.js.map +1 -1
- package/components/ScrollContainer/ScrollContainer.styles.d.ts +1 -0
- package/components/Select/Select/Select.js +5 -2
- package/components/Select/Select/Select.js.map +1 -1
- package/components/SidePage/SidePage/SidePage.js +37 -11
- package/components/SidePage/SidePage/SidePage.js.map +1 -1
- package/components/SidePage/SidePage.d.ts +5 -1
- package/components/SidePage/SidePageContext/SidePageContext.js +3 -0
- package/components/SidePage/SidePageContext/SidePageContext.js.map +1 -1
- package/components/SidePage/SidePageContext.d.ts +2 -0
- package/components/SidePage/SidePageHeader/SidePageHeader.js +26 -13
- package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
- package/components/SidePage/SidePageHeader.d.ts +3 -0
- package/components/Sticky/Sticky/Sticky.js.map +1 -1
- package/components/Sticky/Sticky.d.ts +6 -1
- package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js +9 -2
- package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js.map +1 -1
- package/internal/DropdownContainer/DropdownContainer.d.ts +1 -0
- package/internal/DropdownContainer/DropdownContainer.styles/DropdownContainer.styles.js +10 -0
- package/internal/DropdownContainer/DropdownContainer.styles/DropdownContainer.styles.js.map +1 -0
- package/internal/DropdownContainer/DropdownContainer.styles/package.json +6 -0
- package/internal/DropdownContainer/DropdownContainer.styles.d.ts +3 -0
- package/internal/Menu/Menu/Menu.js +30 -6
- package/internal/Menu/Menu/Menu.js.map +1 -1
- package/internal/Menu/Menu.d.ts +2 -0
- package/internal/Menu/Menu.styles/Menu.styles.js +12 -3
- package/internal/Menu/Menu.styles/Menu.styles.js.map +1 -1
- package/internal/Menu/Menu.styles.d.ts +3 -0
- package/internal/Popup/Popup/Popup.js +2 -1
- package/internal/Popup/Popup/Popup.js.map +1 -1
- package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
- package/internal/themes/DefaultTheme/DefaultTheme.js +3 -1
- package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
- package/internal/themes/DefaultTheme.d.ts +3 -1
- package/package.json +7 -3
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,87 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [4.0.0](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@3.12.0...@skbkontur/react-ui@4.0.0) (2022-03-01)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **Button:** use shadows instead of borders ([d400c69](https://github.com/skbkontur/retail-ui/commit/d400c6925a0493b0f8b5300dc77625ac4b3810f6)), closes [#2559](https://github.com/skbkontur/retail-ui/issues/2559)
|
|
12
|
+
* **Checkbox:** fix baseline ([3571ee3](https://github.com/skbkontur/retail-ui/commit/3571ee3877fd554201b5e901a581207b513c2f20))
|
|
13
|
+
* **GlobalLoader:** Доработали поведение и поправили мелкие баги ([#2767](https://github.com/skbkontur/retail-ui/issues/2767)) ([17a666d](https://github.com/skbkontur/retail-ui/commit/17a666d94acbcebb41c69563a8b489ca0f43da45))
|
|
14
|
+
* **Popup:** correct DOM node extraction ([#2811](https://github.com/skbkontur/retail-ui/issues/2811)) ([#2796](https://github.com/skbkontur/retail-ui/issues/2796)) ([01f951d](https://github.com/skbkontur/retail-ui/commit/01f951d872e2b59a1b049509a9882b24990bbb0e))
|
|
15
|
+
* **Radio:** fix baseline ([fcb021d](https://github.com/skbkontur/retail-ui/commit/fcb021d1ee63df6a8fecc9d5757c072c6863df28))
|
|
16
|
+
* **react-ui:** call original refs while replacing them ([#2729](https://github.com/skbkontur/retail-ui/issues/2729)) ([cd75e9f](https://github.com/skbkontur/retail-ui/commit/cd75e9f8fb03b469b783171cb74c099841b5ab6f))
|
|
17
|
+
* **react-ui:** don't depend on global line-height ([98cb4dc](https://github.com/skbkontur/retail-ui/commit/98cb4dcb8f71417c89e1fc61b4f1f45ba3119943))
|
|
18
|
+
* **ResponsiveLayout:** fallback for ie11 ([956f723](https://github.com/skbkontur/retail-ui/commit/956f7239c08bdb08d86e6056b2f6b71b540eaf22))
|
|
19
|
+
* **Spinner:** add inline type ([f7a0f35](https://github.com/skbkontur/retail-ui/commit/f7a0f3505b90777424da60d137c32ea25500c81b))
|
|
20
|
+
* **Toggle:** add vars for font-size and line-height ([911f1df](https://github.com/skbkontur/retail-ui/commit/911f1dfd89495265baa6cac2df45a1c52281ac8e))
|
|
21
|
+
* **Toggle:** fix baseline ([1d3960b](https://github.com/skbkontur/retail-ui/commit/1d3960b496fbfec9796e3eb72614b79be7436374))
|
|
22
|
+
* **Tooltip:** add vars for font-size and line-height ([3f27477](https://github.com/skbkontur/retail-ui/commit/3f274776c89ef194383de84f9cd5dbda3c0f6c1b))
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
### Features
|
|
26
|
+
|
|
27
|
+
* **FileUploader:** new component FileUploader ([#2542](https://github.com/skbkontur/retail-ui/issues/2542)) ([18d009a](https://github.com/skbkontur/retail-ui/commit/18d009a8ebeafa2379d5fb46a564ead97c3da6a5))
|
|
28
|
+
* **GlobalLoader:** new component GlobalLoader ([#2554](https://github.com/skbkontur/retail-ui/issues/2554)) ([dfeef98](https://github.com/skbkontur/retail-ui/commit/dfeef98098932ee12d8f3591536f51b5add811c6))
|
|
29
|
+
* **Hint,Tooltip,TooltipMenu,Dropdown,DropdownMenu:** add mobile version ([#2688](https://github.com/skbkontur/retail-ui/issues/2688)) ([1aa395b](https://github.com/skbkontur/retail-ui/commit/1aa395b493c65497c567c6d421eaa125a643e1e6))
|
|
30
|
+
* **Modal:** add mobile version ([#2682](https://github.com/skbkontur/retail-ui/issues/2682)) ([10324c6](https://github.com/skbkontur/retail-ui/commit/10324c69505e11c1638aab7f128e8d0537cd4289))
|
|
31
|
+
* **Radio, Switcher, Checkbox:** rename label to caption ([#2629](https://github.com/skbkontur/retail-ui/issues/2629)) ([bd1a7a7](https://github.com/skbkontur/retail-ui/commit/bd1a7a7f1ca8c6983b69e2044f182f34a627c194)), closes [#2196](https://github.com/skbkontur/retail-ui/issues/2196)
|
|
32
|
+
* **react-ui:** add lab grotesque compensation ([b1920bb](https://github.com/skbkontur/retail-ui/commit/b1920bbc5534161e686c2147979f47b7bc36b049))
|
|
33
|
+
* **react-ui:** add new theme ([#2592](https://github.com/skbkontur/retail-ui/issues/2592)) ([1aaaf17](https://github.com/skbkontur/retail-ui/commit/1aaaf17785bb624b730e26c525d019ae22acecd0))
|
|
34
|
+
* **react-ui:** dark theme ([#2698](https://github.com/skbkontur/retail-ui/issues/2698)) ([8047743](https://github.com/skbkontur/retail-ui/commit/8047743c1572e753b327a5323c9f4481b0c1db45))
|
|
35
|
+
* **react-ui:** use new theme by default ([#2707](https://github.com/skbkontur/retail-ui/issues/2707)) ([6de91d3](https://github.com/skbkontur/retail-ui/commit/6de91d3f6a44a86a8a9179f9718ab0b15256d91a))
|
|
36
|
+
* **ResponsiveLayout:** add useResponsiveLayout, a hook for getting current layout ([#2699](https://github.com/skbkontur/retail-ui/issues/2699)) ([1596e91](https://github.com/skbkontur/retail-ui/commit/1596e911ddad9d300038904baf1ed93597276c35))
|
|
37
|
+
* **Select,ComboBox,Autocomplete:** add responsive mobile layouts ([861f23a](https://github.com/skbkontur/retail-ui/commit/861f23affdc93e283a7dfdeaddd6b3af7cb27287))
|
|
38
|
+
* **SidePage:** add mobile version ([#2695](https://github.com/skbkontur/retail-ui/issues/2695)) ([46d469b](https://github.com/skbkontur/retail-ui/commit/46d469bcfa57ee2a85f9014f7fa8b56b10406062))
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
### BREAKING CHANGES
|
|
42
|
+
|
|
43
|
+
* **react-ui:** update, rename and remove some themes, see #2592
|
|
44
|
+
* **Radio, Switcher, Checkbox:** rename label to caption
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
# [3.12.0](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@3.11.0...@skbkontur/react-ui@3.12.0) (2022-02-22)
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
### Bug Fixes
|
|
54
|
+
|
|
55
|
+
* **Select:** fix menuAlign right ([#2693](https://github.com/skbkontur/retail-ui/issues/2693)) ([6428498](https://github.com/skbkontur/retail-ui/commit/6428498b8cb895f0bcfe853959b26caa41b53189))
|
|
56
|
+
* **SidePage:** Исправил ошибку `Maximum update`, когда скролишь второй SidePage ([74134d8](https://github.com/skbkontur/retail-ui/commit/74134d8bf5d8a4aaed5aa554e41bb50e44d3836d))
|
|
57
|
+
* **SidePage:** Исправил положение залипшего заголовка после закрытия второго SidePage ([76c6ff4](https://github.com/skbkontur/retail-ui/commit/76c6ff40eac3c76bb86e9118c4727b5bf6a442ae))
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
### Features
|
|
61
|
+
|
|
62
|
+
* **Sticky:** Сделал метод `ref.reflow()` публичным ([bdfc991](https://github.com/skbkontur/retail-ui/commit/bdfc991e20317d6da68191357a9ecd554990ef9b))
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
# [3.11.0](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@3.10.0...@skbkontur/react-ui@3.11.0) (2022-02-04)
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
### Bug Fixes
|
|
72
|
+
|
|
73
|
+
* **ScrollContainer:** consider scaling cases in browsers ([#2705](https://github.com/skbkontur/retail-ui/issues/2705)) ([e64d3de](https://github.com/skbkontur/retail-ui/commit/e64d3de80f12cdb7c2329d0b38d2531f84237f55))
|
|
74
|
+
* **SidePage:** change scroll behavior according to Guides ([#2756](https://github.com/skbkontur/retail-ui/issues/2756)) ([47dfb5a](https://github.com/skbkontur/retail-ui/commit/47dfb5ac895c26655edef2e08cf1f86f5b246390))
|
|
75
|
+
* **Spinner:** refactor animation for Safari ([#2748](https://github.com/skbkontur/retail-ui/issues/2748)) ([1698a4a](https://github.com/skbkontur/retail-ui/commit/1698a4a5542d9884f3e6deb833161a6219b9d72a))
|
|
76
|
+
* **Switcher:** restore border in error and checked state ([#2742](https://github.com/skbkontur/retail-ui/issues/2742)) ([6fbe8f5](https://github.com/skbkontur/retail-ui/commit/6fbe8f529cfe14f8338a79b354a1201f38b06ee2))
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
### Features
|
|
80
|
+
|
|
81
|
+
* **Spinner:** add width and color props ([4ea170d](https://github.com/skbkontur/retail-ui/commit/4ea170d4f1cc30091c30e0ee637e38494ad79f0a))
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
|
|
6
87
|
# [3.10.0](https://github.com/skbkontur/retail-ui/compare/@skbkontur/react-ui@3.9.4...@skbkontur/react-ui@3.10.0) (2022-01-27)
|
|
7
88
|
|
|
8
89
|
|
|
@@ -95,7 +95,7 @@ export declare class GlobalLoader extends React.Component<GlobalLoaderComponentP
|
|
|
95
95
|
*/
|
|
96
96
|
static reject: () => void;
|
|
97
97
|
/**
|
|
98
|
-
* Возвращает анимацию
|
|
98
|
+
* Возвращает лоадер из состояния спиннера в обычное и продолжает анимацию с того места, на котором она была прерван <br />
|
|
99
99
|
* Равносильно установке пропа `rejected = false`
|
|
100
100
|
*
|
|
101
101
|
* @public
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["GlobalLoader.tsx"],"names":["currentGlobalLoader","GlobalLoader","rootNode","props","startTask","setState","visible","onStart","delayBeforeShow","stopTask","successAnimationInProgress","started","onDone","delayBeforeHide","setActive","cancel","state","successAnimationInProgressTimeout","setTimeout","done","rejected","accept","setReject","setDone","reject","active","onReject","onAccept","kill","dead","expectedResponseTime","componentDidMount","componentDidUpdate","prevProps","componentWillUnmount","clearTimeout","render","status","setRootNode","disableAnimations","updateExpectedResponseTime","React","Component","defaultProps","isTestEnv","start"],"mappings":"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","sourcesContent":["import React from 'react';\nimport debounce from 'lodash.debounce';\n\nimport { Nullable } from '../../typings/utility-types';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\n\nimport { GlobalLoaderView, GlobalLoaderViewProps } from './GlobalLoaderView';\n\nexport interface GlobalLoaderProps extends Partial<DefaultProps> {\n /**\n * Время(ms) до появления лоадера\n */\n delayBeforeShow?: number;\n /**\n * Время(ms) до исчезновения лоадера\n */\n delayBeforeHide?: number;\n /**\n * Ожидаемое время(ms) ответа сервера\n */\n expectedResponseTime: number;\n /**\n * Анимация лоадера в виде спиннера\n */\n rejected?: boolean;\n /**\n * Показывать лоадер\n */\n active?: boolean;\n /**\n * Не показывать анимацию\n */\n disableAnimations: boolean;\n /**\n * Коллбек, вызывающийся после появления лоадера\n */\n onStart?(): void;\n /**\n * Коллбек, вызывающийся после исчезновения лоадера\n */\n onDone?(): void;\n /**\n * Коллбек, вызывающийся после вызова `GlobalLoader.reject()`.\n * Или после установки пропа `rejected = true`\n */\n onReject?(): void;\n /**\n * Коллбек, вызывающийся после вызова `GlobalLoader.accept()`.\n * Или после установки пропа `rejected = false`\n */\n onAccept?(): void;\n}\nexport interface GlobalLoaderState {\n visible: boolean;\n done: boolean;\n rejected: boolean;\n accept: boolean;\n dead: boolean;\n successAnimationInProgress: boolean;\n expectedResponseTime: number;\n started: boolean;\n}\ninterface DefaultProps {\n expectedResponseTime: number;\n delayBeforeShow: number;\n delayBeforeHide: number;\n rejected: boolean;\n active: boolean;\n disableAnimations: boolean;\n}\nexport type GlobalLoaderComponentProps = GlobalLoaderProps & DefaultProps;\n\nlet currentGlobalLoader: GlobalLoader;\n\n@rootNode\nexport class GlobalLoader extends React.Component<GlobalLoaderComponentProps, GlobalLoaderState> {\n private successAnimationInProgressTimeout: Nullable<NodeJS.Timeout>;\n private setRootNode!: TSetRootNode;\n\n private readonly startTask = debounce(() => {\n this.setState({ visible: true });\n this.props.onStart?.();\n }, this.props.delayBeforeShow);\n\n private readonly stopTask = debounce(() => {\n this.setState({ visible: false, successAnimationInProgress: false, started: false });\n this.props.onDone?.();\n }, this.props.delayBeforeHide);\n\n public static defaultProps: DefaultProps = {\n expectedResponseTime: 1000,\n delayBeforeShow: 1000,\n delayBeforeHide: 1000,\n rejected: false,\n active: false,\n disableAnimations: isTestEnv,\n };\n\n constructor(props: GlobalLoaderComponentProps) {\n super(props);\n this.state = {\n started: false,\n visible: false,\n done: false,\n rejected: false,\n accept: false,\n dead: false,\n successAnimationInProgress: false,\n expectedResponseTime: this.props.expectedResponseTime,\n };\n this.successAnimationInProgressTimeout = null;\n currentGlobalLoader?.kill();\n currentGlobalLoader = this;\n }\n componentDidMount() {\n if (this.props.active) {\n this.setActive();\n }\n if (this.props.rejected) {\n this.setReject(true);\n }\n }\n\n componentDidUpdate(prevProps: Readonly<GlobalLoaderProps>) {\n if (this.props.expectedResponseTime !== prevProps.expectedResponseTime) {\n this.setState({ expectedResponseTime: this.props.expectedResponseTime });\n }\n if (this.props.rejected !== prevProps.rejected) {\n this.setReject(!!this.props.rejected);\n }\n if (this.props.active !== prevProps.active) {\n if (this.props.active) {\n this.setActive();\n } else {\n this.setDone();\n }\n }\n }\n\n componentWillUnmount() {\n this.successAnimationInProgressTimeout && clearTimeout(this.successAnimationInProgressTimeout);\n }\n\n public render() {\n let status: GlobalLoaderViewProps['status'] = 'standard';\n if (this.state.done) {\n status = 'success';\n } else if (this.state.rejected) {\n status = 'error';\n } else if (this.state.accept) {\n status = 'accept';\n }\n return (\n !this.state.dead &&\n this.state.visible && (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <GlobalLoaderView\n expectedResponseTime={this.state.expectedResponseTime}\n delayBeforeHide={this.props.delayBeforeHide}\n status={status}\n data-tid=\"GlobalLoader\"\n disableAnimations={this.props.disableAnimations}\n />\n </CommonWrapper>\n )\n );\n }\n\n /**\n * Запускает анимацию лоадера <br />\n * Равносильно установке пропа `active = true`\n *\n * @public\n */\n public static start = (expectedResponseTime?: number) => {\n currentGlobalLoader.setActive();\n if (typeof expectedResponseTime === 'number') {\n currentGlobalLoader.updateExpectedResponseTime(expectedResponseTime);\n }\n };\n\n /**\n * Показывает анимацию успешного завершения загрузки <br />\n * Равносильно установке пропа `active = false`\n *\n * @public\n */\n public static done = () => {\n currentGlobalLoader.setDone();\n };\n\n /**\n * Переключает анимацию лоадера в состояние спиннера <br />\n * Равносильно установке пропа `rejected = true`\n *\n * @public\n */\n public static reject = () => {\n currentGlobalLoader.setReject(true);\n };\n\n /**\n * Возвращает анимацию лоадера <br />\n * Равносильно установке пропа `rejected = false`\n *\n * @public\n */\n public static accept = () => {\n currentGlobalLoader.setReject(false);\n };\n\n public setActive = () => {\n this.startTask.cancel();\n if (this.state.successAnimationInProgress) {\n this.successAnimationInProgressTimeout = setTimeout(() => {\n this.setActive();\n }, this.props.delayBeforeHide);\n } else {\n this.setState({ visible: false, done: false, rejected: false, accept: false, started: true });\n if (this.props.rejected) {\n this.setReject(true);\n } else {\n this.stopTask.cancel();\n this.startTask();\n }\n }\n };\n\n public setDone = () => {\n this.setState({ done: true, successAnimationInProgress: true });\n this.startTask.cancel();\n this.stopTask();\n };\n\n public setReject = (reject: boolean) => {\n if (!this.state.visible && (this.state.started || this.props.active)) {\n this.setState({ visible: true });\n }\n this.startTask.cancel();\n this.stopTask.cancel();\n if (reject) {\n this.props.onReject?.();\n } else {\n if (this.state.rejected) {\n this.setState({ accept: true });\n this.props.onAccept?.();\n }\n }\n this.setState({ rejected: reject });\n };\n\n public updateExpectedResponseTime(expectedResponseTime: number) {\n this.setState({ expectedResponseTime });\n }\n\n public kill = () => {\n this.stopTask.cancel();\n this.startTask.cancel();\n this.setState({\n dead: true,\n });\n };\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["GlobalLoader.tsx"],"names":["currentGlobalLoader","GlobalLoader","rootNode","props","startTask","setState","visible","onStart","delayBeforeShow","stopTask","successAnimationInProgress","started","onDone","delayBeforeHide","setActive","cancel","state","successAnimationInProgressTimeout","setTimeout","done","rejected","accept","setReject","setDone","reject","active","onReject","onAccept","kill","dead","expectedResponseTime","componentDidMount","componentDidUpdate","prevProps","componentWillUnmount","clearTimeout","render","status","setRootNode","disableAnimations","updateExpectedResponseTime","React","Component","defaultProps","isTestEnv","start"],"mappings":"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","sourcesContent":["import React from 'react';\nimport debounce from 'lodash.debounce';\n\nimport { Nullable } from '../../typings/utility-types';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\n\nimport { GlobalLoaderView, GlobalLoaderViewProps } from './GlobalLoaderView';\n\nexport interface GlobalLoaderProps extends Partial<DefaultProps> {\n /**\n * Время(ms) до появления лоадера\n */\n delayBeforeShow?: number;\n /**\n * Время(ms) до исчезновения лоадера\n */\n delayBeforeHide?: number;\n /**\n * Ожидаемое время(ms) ответа сервера\n */\n expectedResponseTime: number;\n /**\n * Анимация лоадера в виде спиннера\n */\n rejected?: boolean;\n /**\n * Показывать лоадер\n */\n active?: boolean;\n /**\n * Не показывать анимацию\n */\n disableAnimations: boolean;\n /**\n * Коллбек, вызывающийся после появления лоадера\n */\n onStart?(): void;\n /**\n * Коллбек, вызывающийся после исчезновения лоадера\n */\n onDone?(): void;\n /**\n * Коллбек, вызывающийся после вызова `GlobalLoader.reject()`.\n * Или после установки пропа `rejected = true`\n */\n onReject?(): void;\n /**\n * Коллбек, вызывающийся после вызова `GlobalLoader.accept()`.\n * Или после установки пропа `rejected = false`\n */\n onAccept?(): void;\n}\nexport interface GlobalLoaderState {\n visible: boolean;\n done: boolean;\n rejected: boolean;\n accept: boolean;\n dead: boolean;\n successAnimationInProgress: boolean;\n expectedResponseTime: number;\n started: boolean;\n}\ninterface DefaultProps {\n expectedResponseTime: number;\n delayBeforeShow: number;\n delayBeforeHide: number;\n rejected: boolean;\n active: boolean;\n disableAnimations: boolean;\n}\nexport type GlobalLoaderComponentProps = GlobalLoaderProps & DefaultProps;\n\nlet currentGlobalLoader: GlobalLoader;\n\n@rootNode\nexport class GlobalLoader extends React.Component<GlobalLoaderComponentProps, GlobalLoaderState> {\n private successAnimationInProgressTimeout: Nullable<NodeJS.Timeout>;\n private setRootNode!: TSetRootNode;\n\n private readonly startTask = debounce(() => {\n this.setState({ visible: true });\n this.props.onStart?.();\n }, this.props.delayBeforeShow);\n\n private readonly stopTask = debounce(() => {\n this.setState({ visible: false, successAnimationInProgress: false, started: false });\n this.props.onDone?.();\n }, this.props.delayBeforeHide);\n\n public static defaultProps: DefaultProps = {\n expectedResponseTime: 1000,\n delayBeforeShow: 1000,\n delayBeforeHide: 1000,\n rejected: false,\n active: false,\n disableAnimations: isTestEnv,\n };\n\n constructor(props: GlobalLoaderComponentProps) {\n super(props);\n this.state = {\n started: false,\n visible: false,\n done: false,\n rejected: false,\n accept: false,\n dead: false,\n successAnimationInProgress: false,\n expectedResponseTime: this.props.expectedResponseTime,\n };\n this.successAnimationInProgressTimeout = null;\n currentGlobalLoader?.kill();\n currentGlobalLoader = this;\n }\n componentDidMount() {\n if (this.props.active) {\n this.setActive();\n }\n if (this.props.rejected) {\n this.setReject(true);\n }\n }\n\n componentDidUpdate(prevProps: Readonly<GlobalLoaderProps>) {\n if (this.props.expectedResponseTime !== prevProps.expectedResponseTime) {\n this.setState({ expectedResponseTime: this.props.expectedResponseTime });\n }\n if (this.props.rejected !== prevProps.rejected) {\n this.setReject(!!this.props.rejected);\n }\n if (this.props.active !== prevProps.active) {\n if (this.props.active) {\n this.setActive();\n } else {\n this.setDone();\n }\n }\n }\n\n componentWillUnmount() {\n this.successAnimationInProgressTimeout && clearTimeout(this.successAnimationInProgressTimeout);\n }\n\n public render() {\n let status: GlobalLoaderViewProps['status'] = 'standard';\n if (this.state.done) {\n status = 'success';\n } else if (this.state.rejected) {\n status = 'error';\n } else if (this.state.accept) {\n status = 'accept';\n }\n return (\n !this.state.dead &&\n this.state.visible && (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <GlobalLoaderView\n expectedResponseTime={this.state.expectedResponseTime}\n delayBeforeHide={this.props.delayBeforeHide}\n status={status}\n data-tid=\"GlobalLoader\"\n disableAnimations={this.props.disableAnimations}\n />\n </CommonWrapper>\n )\n );\n }\n\n /**\n * Запускает анимацию лоадера <br />\n * Равносильно установке пропа `active = true`\n *\n * @public\n */\n public static start = (expectedResponseTime?: number) => {\n currentGlobalLoader.setActive();\n if (typeof expectedResponseTime === 'number') {\n currentGlobalLoader.updateExpectedResponseTime(expectedResponseTime);\n }\n };\n\n /**\n * Показывает анимацию успешного завершения загрузки <br />\n * Равносильно установке пропа `active = false`\n *\n * @public\n */\n public static done = () => {\n currentGlobalLoader.setDone();\n };\n\n /**\n * Переключает анимацию лоадера в состояние спиннера <br />\n * Равносильно установке пропа `rejected = true`\n *\n * @public\n */\n public static reject = () => {\n currentGlobalLoader.setReject(true);\n };\n\n /**\n * Возвращает лоадер из состояния спиннера в обычное и продолжает анимацию с того места, на котором она была прерван <br />\n * Равносильно установке пропа `rejected = false`\n *\n * @public\n */\n public static accept = () => {\n currentGlobalLoader.setReject(false);\n };\n\n public setActive = () => {\n this.startTask.cancel();\n if (this.state.successAnimationInProgress) {\n this.successAnimationInProgressTimeout = setTimeout(() => {\n this.setActive();\n }, this.props.delayBeforeHide);\n } else {\n this.setState({ visible: false, done: false, rejected: false, accept: false, started: true });\n if (this.props.rejected) {\n this.setReject(true);\n } else {\n this.stopTask.cancel();\n this.startTask();\n }\n }\n };\n\n public setDone = () => {\n this.setState({ done: true, successAnimationInProgress: true });\n this.startTask.cancel();\n this.stopTask();\n };\n\n public setReject = (reject: boolean) => {\n if (!this.state.visible && (this.state.started || this.props.active)) {\n this.setState({ visible: true });\n }\n this.startTask.cancel();\n this.stopTask.cancel();\n if (reject) {\n this.props.onReject?.();\n } else {\n if (this.state.rejected) {\n this.setState({ accept: true });\n this.props.onAccept?.();\n }\n }\n this.setState({ rejected: reject });\n };\n\n public updateExpectedResponseTime(expectedResponseTime: number) {\n this.setState({ expectedResponseTime });\n }\n\n public kill = () => {\n this.stopTask.cancel();\n this.startTask.cancel();\n this.setState({\n dead: true,\n });\n };\n}\n"]}
|
|
@@ -29,8 +29,18 @@ const [manually, setManually] = React.useState(false);
|
|
|
29
29
|
const [active, setActive] = React.useState(false);
|
|
30
30
|
const [error, setError] = React.useState(false);
|
|
31
31
|
|
|
32
|
+
const reset = () => {
|
|
33
|
+
if (manually) {
|
|
34
|
+
setManually(false);
|
|
35
|
+
setError(false);
|
|
36
|
+
setActive(false);
|
|
37
|
+
} else {
|
|
38
|
+
setManually(true);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
32
42
|
<Gapped vertical>
|
|
33
|
-
<Toggle checked={manually} onValueChange={
|
|
43
|
+
<Toggle checked={manually} onValueChange={reset}>
|
|
34
44
|
Управление пропами
|
|
35
45
|
</Toggle>
|
|
36
46
|
<Toggle checked={active} onValueChange={setActive} disabled={!manually}>
|
|
@@ -42,8 +52,8 @@ const [error, setError] = React.useState(false);
|
|
|
42
52
|
|
|
43
53
|
<ThemeContext.Provider value={myTheme}>
|
|
44
54
|
<GlobalLoader expectedResponseTime={2000} delayBeforeShow={1000} active={active} rejected={error}
|
|
45
|
-
onStart={(
|
|
46
|
-
onDone={(
|
|
55
|
+
onStart={() => console.log('start')}
|
|
56
|
+
onDone={() => console.log('done')}
|
|
47
57
|
onReject={() => console.log('reject')}
|
|
48
58
|
onAccept={() => console.log('accept')}
|
|
49
59
|
/>
|
|
@@ -29,7 +29,7 @@ var GlobalLoaderView = function GlobalLoaderView(_ref)
|
|
|
29
29
|
{var expectedResponseTime = _ref.expectedResponseTime,delayBeforeHide = _ref.delayBeforeHide,status = _ref.status,disableAnimations = _ref.disableAnimations,rest = (0, _objectWithoutPropertiesLoose2.default)(_ref, _excluded);
|
|
30
30
|
var ref = (0, _react.useRef)(null);
|
|
31
31
|
var theme = (0, _react.useContext)(_ThemeContext.ThemeContext);
|
|
32
|
-
var _useGlobalLoaderWidth = (0, _useParams.useGlobalLoaderWidth)(status, ref),width = _useGlobalLoaderWidth.width,startWidth = _useGlobalLoaderWidth.startWidth;
|
|
32
|
+
var _useGlobalLoaderWidth = (0, _useParams.useGlobalLoaderWidth)(status, ref),width = _useGlobalLoaderWidth.width,startWidth = _useGlobalLoaderWidth.startWidth,fullWidth = _useGlobalLoaderWidth.fullWidth;
|
|
33
33
|
var _useGlobalLoaderPosit = (0, _useParams.useGlobalLoaderPosition)(ref),left = _useGlobalLoaderPosit.left;
|
|
34
34
|
|
|
35
35
|
var getAnimationClass = function getAnimationClass(status) {
|
|
@@ -38,11 +38,14 @@ var GlobalLoaderView = function GlobalLoaderView(_ref)
|
|
|
38
38
|
case 'success':
|
|
39
39
|
return _GlobalLoaderView.animations.successAnimation(delayBeforeHide, width, left);
|
|
40
40
|
case 'accept':
|
|
41
|
-
|
|
41
|
+
if (startWidth < fullWidth * 0.8) {
|
|
42
|
+
return _GlobalLoaderView.animations.acceptAnimation(theme, startWidth, expectedResponseTime, width, left);
|
|
43
|
+
}
|
|
44
|
+
return _GlobalLoaderView.animations.slowAcceptAnimation(theme, startWidth, width, left);
|
|
42
45
|
case 'error':
|
|
43
46
|
return _GlobalLoaderView.animations.errorAnimation(theme);
|
|
44
47
|
case 'standard':
|
|
45
|
-
return _GlobalLoaderView.animations.standardAnimation(expectedResponseTime);}
|
|
48
|
+
return _GlobalLoaderView.animations.standardAnimation(theme, expectedResponseTime);}
|
|
46
49
|
|
|
47
50
|
}
|
|
48
51
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["GlobalLoaderView.tsx"],"names":["GlobalLoaderView","expectedResponseTime","delayBeforeHide","status","disableAnimations","rest","ref","theme","ThemeContext","width","startWidth","left","getAnimationClass","animations","successAnimation","acceptAnimation","errorAnimation","standardAnimation","styles","successWithoutAnimation","acceptWithoutAnimation","errorWithoutAnimation","standardWithoutAnimation","outer","inner"],"mappings":"0RAAA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,wC;;;;;;;;;;;;;;AAcO,IAAMA,gBAAgB,GAAG,SAAnBA,gBAAmB;;;;;;AAMH,KAL3BC,oBAK2B,QAL3BA,oBAK2B,CAJ3BC,eAI2B,QAJ3BA,eAI2B,CAH3BC,MAG2B,QAH3BA,MAG2B,CAF3BC,iBAE2B,QAF3BA,iBAE2B,CADxBC,IACwB;AAC3B,MAAMC,GAAG,GAAG,mBAAuC,IAAvC,CAAZ;AACA,MAAMC,KAAK,GAAG,uBAAWC,0BAAX,CAAd;AACA,
|
|
1
|
+
{"version":3,"sources":["GlobalLoaderView.tsx"],"names":["GlobalLoaderView","expectedResponseTime","delayBeforeHide","status","disableAnimations","rest","ref","theme","ThemeContext","width","startWidth","fullWidth","left","getAnimationClass","animations","successAnimation","acceptAnimation","slowAcceptAnimation","errorAnimation","standardAnimation","styles","successWithoutAnimation","acceptWithoutAnimation","errorWithoutAnimation","standardWithoutAnimation","outer","inner"],"mappings":"0RAAA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,wC;;;;;;;;;;;;;;AAcO,IAAMA,gBAAgB,GAAG,SAAnBA,gBAAmB;;;;;;AAMH,KAL3BC,oBAK2B,QAL3BA,oBAK2B,CAJ3BC,eAI2B,QAJ3BA,eAI2B,CAH3BC,MAG2B,QAH3BA,MAG2B,CAF3BC,iBAE2B,QAF3BA,iBAE2B,CADxBC,IACwB;AAC3B,MAAMC,GAAG,GAAG,mBAAuC,IAAvC,CAAZ;AACA,MAAMC,KAAK,GAAG,uBAAWC,0BAAX,CAAd;AACA,8BAAyC,qCAAqBL,MAArB,EAA6BG,GAA7B,CAAzC,CAAQG,KAAR,yBAAQA,KAAR,CAAeC,UAAf,yBAAeA,UAAf,CAA2BC,SAA3B,yBAA2BA,SAA3B;AACA,8BAAiB,wCAAwBL,GAAxB,CAAjB,CAAQM,IAAR,yBAAQA,IAAR;;AAEA,MAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,CAACV,MAAD,EAA6C;AACrE,QAAI,CAACC,iBAAL,EAAwB;AACtB,cAAQD,MAAR;AACE,aAAK,SAAL;AACE,iBAAOW,6BAAWC,gBAAX,CAA4Bb,eAA5B,EAA6CO,KAA7C,EAAoDG,IAApD,CAAP;AACF,aAAK,QAAL;AACE,cAAIF,UAAU,GAAGC,SAAS,GAAG,GAA7B,EAAkC;AAChC,mBAAOG,6BAAWE,eAAX,CAA2BT,KAA3B,EAAkCG,UAAlC,EAA8CT,oBAA9C,EAAoEQ,KAApE,EAA2EG,IAA3E,CAAP;AACD;AACD,iBAAOE,6BAAWG,mBAAX,CAA+BV,KAA/B,EAAsCG,UAAtC,EAAkDD,KAAlD,EAAyDG,IAAzD,CAAP;AACF,aAAK,OAAL;AACE,iBAAOE,6BAAWI,cAAX,CAA0BX,KAA1B,CAAP;AACF,aAAK,UAAL;AACE,iBAAOO,6BAAWK,iBAAX,CAA6BZ,KAA7B,EAAoCN,oBAApC,CAAP,CAXJ;;AAaD;;AAED,QAAIG,iBAAJ,EAAuB;AACrB,cAAQD,MAAR;AACE,aAAK,SAAL;AACE,iBAAOiB,yBAAOC,uBAAP,EAAP;AACF,aAAK,QAAL;AACE,iBAAOP,6BAAWQ,sBAAX,CAAkCZ,UAAlC,CAAP;AACF,aAAK,OAAL;AACE,iBAAOU,yBAAOG,qBAAP,EAAP;AACF,aAAK,UAAL;AACE,iBAAOH,yBAAOI,wBAAP,EAAP,CARJ;;AAUD;AACF,GA7BD;;AA+BA;AACE,iCAAC,4BAAD,EAAmBnB,IAAnB;AACE,iCAAC,cAAD,IAAQ,QAAQ,EAAC,cAAjB,EAAgC,SAAS,EAAEe,yBAAOK,KAAP,CAAalB,KAAb,CAA3C;AACE,0CAAK,GAAG,EAAED,GAAV,EAAe,SAAS,EAAE,iBAAGc,yBAAOM,KAAP,CAAanB,KAAb,CAAH,EAAwBM,iBAAiB,CAACV,MAAD,CAAzC,CAA1B,GADF,CADF,CADF;;;;AAOD,CAlDM,C","sourcesContent":["import React, { useContext, useRef } from 'react';\n\nimport { cx } from '../../lib/theming/Emotion';\nimport { ZIndex } from '../../internal/ZIndex';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { CommonWrapper, CommonProps } from '../../internal/CommonWrapper';\n\nimport { animations, styles } from './GlobalLoaderView.styles';\nimport { useGlobalLoaderPosition, useGlobalLoaderWidth } from './useParams';\n\nexport interface GlobalLoaderViewProps extends Pick<CommonProps, 'data-tid'> {\n expectedResponseTime: number;\n delayBeforeHide: number;\n status?: 'success' | 'error' | 'standard' | 'accept';\n disableAnimations: boolean;\n}\n\nexport type GlobalLoaderViewRef = {\n element: HTMLDivElement;\n refObject: React.RefObject<GlobalLoaderViewRef['element']>;\n};\n\nexport const GlobalLoaderView = ({\n expectedResponseTime,\n delayBeforeHide,\n status,\n disableAnimations,\n ...rest\n}: GlobalLoaderViewProps) => {\n const ref = useRef<GlobalLoaderViewRef['element']>(null);\n const theme = useContext(ThemeContext);\n const { width, startWidth, fullWidth } = useGlobalLoaderWidth(status, ref);\n const { left } = useGlobalLoaderPosition(ref);\n\n const getAnimationClass = (status: GlobalLoaderViewProps['status']) => {\n if (!disableAnimations) {\n switch (status) {\n case 'success':\n return animations.successAnimation(delayBeforeHide, width, left);\n case 'accept':\n if (startWidth < fullWidth * 0.8) {\n return animations.acceptAnimation(theme, startWidth, expectedResponseTime, width, left);\n }\n return animations.slowAcceptAnimation(theme, startWidth, width, left);\n case 'error':\n return animations.errorAnimation(theme);\n case 'standard':\n return animations.standardAnimation(theme, expectedResponseTime);\n }\n }\n\n if (disableAnimations) {\n switch (status) {\n case 'success':\n return styles.successWithoutAnimation();\n case 'accept':\n return animations.acceptWithoutAnimation(startWidth);\n case 'error':\n return styles.errorWithoutAnimation();\n case 'standard':\n return styles.standardWithoutAnimation();\n }\n }\n };\n\n return (\n <CommonWrapper {...rest}>\n <ZIndex priority=\"GlobalLoader\" className={styles.outer(theme)}>\n <div ref={ref} className={cx(styles.inner(theme), getAnimationClass(status))} />\n </ZIndex>\n </CommonWrapper>\n );\n};\n"]}
|
|
@@ -9,7 +9,8 @@ export declare const styles: {
|
|
|
9
9
|
export declare const animations: {
|
|
10
10
|
successAnimation(delayBeforeHide: number, width: number, left: number): string;
|
|
11
11
|
errorAnimation(t: Theme): string;
|
|
12
|
-
standardAnimation(expectedTime: number): string;
|
|
13
|
-
acceptAnimation(startWidth: number, expectedTime: number): string;
|
|
12
|
+
standardAnimation(t: Theme, expectedTime: number): string;
|
|
13
|
+
acceptAnimation(t: Theme, startWidth: number, expectedTime: number, width: number, left: number): string;
|
|
14
|
+
slowAcceptAnimation(t: Theme, startWidth: number, width: number, left: number): string;
|
|
14
15
|
acceptWithoutAnimation(startWidth: number): string;
|
|
15
16
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");exports.__esModule = true;exports.styles = exports.animations = void 0;var _taggedTemplateLiteralLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteralLoose"));var _css = require("@emotion/css");
|
|
2
2
|
|
|
3
|
-
var _Emotion = require("../../lib/theming/Emotion");var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13;
|
|
3
|
+
var _Emotion = require("../../lib/theming/Emotion");var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15;
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
var styles = (0, _Emotion.memoizeStyle)({
|
|
@@ -28,7 +28,7 @@ var styles = (0, _Emotion.memoizeStyle)({
|
|
|
28
28
|
|
|
29
29
|
},
|
|
30
30
|
standardWithoutAnimation: function standardWithoutAnimation() {
|
|
31
|
-
return (0, _Emotion.css)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteralLoose2.default)(["\n left: 0;\n width:
|
|
31
|
+
return (0, _Emotion.css)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteralLoose2.default)(["\n left: 0;\n width: 90%;\n "])));
|
|
32
32
|
|
|
33
33
|
|
|
34
34
|
|
|
@@ -78,10 +78,14 @@ var linearProgressAnimation = (0, _css.keyframes)(_templateObject8 || (_template
|
|
|
78
78
|
|
|
79
79
|
|
|
80
80
|
|
|
81
|
+
var slowProgressAnimation = (0, _css.keyframes)(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteralLoose2.default)(["\n from { width: 80%; }\n to { width: 90% }\n"])));
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
|
|
81
85
|
|
|
82
86
|
var animations = {
|
|
83
87
|
successAnimation: function successAnimation(delayBeforeHide, width, left) {
|
|
84
|
-
return (0, _Emotion.css)(
|
|
88
|
+
return (0, _Emotion.css)(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteralLoose2.default)(["\n animation: successAnimation;\n animation-duration: ", "ms;\n @keyframes successAnimation {\n 0% {\n width: ", "px;\n left: ", "px;\n opacity: 1;\n }\n 20% {\n width: 100%;\n left: 0;\n opacity: 1;\n }\n 80% {\n width: 100%;\n left: 0;\n opacity: 1;\n }\n 100% {\n width: 100%;\n opacity: 0;\n }\n }\n "])),
|
|
85
89
|
|
|
86
90
|
delayBeforeHide,
|
|
87
91
|
|
|
@@ -108,26 +112,69 @@ var animations = {
|
|
|
108
112
|
|
|
109
113
|
},
|
|
110
114
|
errorAnimation: function errorAnimation(t) {
|
|
111
|
-
var transitionDuration = parseInt(t.
|
|
115
|
+
var transitionDuration = parseInt(t.globalLoaderTransitionToSpinnerDuration);
|
|
112
116
|
var spinnerAnimationDuration = parseInt(t.globalLoaderSpinnerAnimationDuration);
|
|
113
117
|
|
|
114
|
-
return (0, _Emotion.css)(
|
|
118
|
+
return (0, _Emotion.css)(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteralLoose2.default)(["\n left: 0;\n width: 100%;\n animation: ", " ", "ms linear,\n ", "ms ", " ", "ms infinite alternate;\n "])),
|
|
115
119
|
|
|
116
120
|
|
|
117
121
|
moveToRightAnimation, transitionDuration,
|
|
118
122
|
spinnerAnimationDuration, spinnerAnimation, transitionDuration);
|
|
119
123
|
|
|
120
124
|
},
|
|
121
|
-
standardAnimation: function standardAnimation(expectedTime) {
|
|
122
|
-
|
|
125
|
+
standardAnimation: function standardAnimation(t, expectedTime) {
|
|
126
|
+
var slowProgressAnimationTime = parseInt(t.globalLoaderSlowAnimationDuration);
|
|
127
|
+
return (0, _Emotion.css)(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteralLoose2.default)(["\n width: 90%;\n animation: ", " ", "ms cubic-bezier(0, 0.4, 0.4, 1),\n ", "ms ", " ", "ms linear;\n "])),
|
|
128
|
+
|
|
129
|
+
linearProgressAnimation, expectedTime,
|
|
130
|
+
slowProgressAnimationTime, slowProgressAnimation, expectedTime);
|
|
131
|
+
|
|
132
|
+
},
|
|
133
|
+
acceptAnimation: function acceptAnimation(t, startWidth, expectedTime, width, left) {
|
|
134
|
+
var transitionTime = parseInt(t.globalLoaderTransitionFromSpinnerDuration);
|
|
135
|
+
var slowProgressAnimationTime = parseInt(t.globalLoaderSlowAnimationDuration);
|
|
136
|
+
return (0, _Emotion.css)(_templateObject13 || (_templateObject13 = (0, _taggedTemplateLiteralLoose2.default)(["\n width: 90%;\n animation: transitionAnimation ", "ms linear,\n ", "ms acceptAnimation ", "ms cubic-bezier(0, 0.4, 0.4, 1),\n ", "ms ", " ", "ms linear;\n @keyframes transitionAnimation {\n from {\n width: ", "px;\n left: ", "px;\n }\n to {\n width: ", "px;\n left: 0;\n }\n }\n @keyframes acceptAnimation {\n from {\n width: ", "px;\n }\n to {\n width: 80%;\n }\n }\n "])),
|
|
137
|
+
|
|
138
|
+
transitionTime,
|
|
139
|
+
expectedTime, transitionTime,
|
|
140
|
+
slowProgressAnimationTime, slowProgressAnimation, expectedTime + transitionTime,
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
width,
|
|
144
|
+
left,
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
startWidth,
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
startWidth);
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
|
|
123
158
|
|
|
124
|
-
linearProgressAnimation, expectedTime);
|
|
125
159
|
|
|
126
160
|
},
|
|
127
|
-
|
|
128
|
-
|
|
161
|
+
slowAcceptAnimation: function slowAcceptAnimation(t, startWidth, width, left) {
|
|
162
|
+
var transitionTime = parseInt(t.globalLoaderTransitionFromSpinnerDuration);
|
|
163
|
+
var slowProgressAnimationTime = parseInt(t.globalLoaderSlowAnimationDuration);
|
|
164
|
+
return (0, _Emotion.css)(_templateObject14 || (_templateObject14 = (0, _taggedTemplateLiteralLoose2.default)(["\n width: 90%;\n animation: transitionAnimation ", "ms linear,\n ", "ms acceptAnimation ", "ms linear;\n @keyframes transitionAnimation {\n from {\n width: ", "px;\n left: ", "px;\n }\n to {\n width: ", "px;\n left: 0;\n }\n }\n @keyframes acceptAnimation {\n from {\n width: ", "px;\n }\n to {\n width: 90%;\n }\n }\n "])),
|
|
165
|
+
|
|
166
|
+
transitionTime,
|
|
167
|
+
slowProgressAnimationTime, transitionTime,
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
width,
|
|
171
|
+
left,
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
startWidth,
|
|
175
|
+
|
|
176
|
+
|
|
129
177
|
|
|
130
|
-
expectedTime,
|
|
131
178
|
|
|
132
179
|
|
|
133
180
|
startWidth);
|
|
@@ -139,7 +186,7 @@ var animations = {
|
|
|
139
186
|
|
|
140
187
|
},
|
|
141
188
|
acceptWithoutAnimation: function acceptWithoutAnimation(startWidth) {
|
|
142
|
-
return (0, _Emotion.css)(
|
|
189
|
+
return (0, _Emotion.css)(_templateObject15 || (_templateObject15 = (0, _taggedTemplateLiteralLoose2.default)(["\n width: ", "px;\n "])),
|
|
143
190
|
startWidth);
|
|
144
191
|
|
|
145
192
|
} };exports.animations = animations;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["GlobalLoaderView.styles.ts"],"names":["styles","outer","t","css","globalLoaderWidth","globalLoaderHeight","globalLoaderBackgroundColor","globalLoaderPosition","globalLoaderLeft","globalLoaderTop","globalLoaderRight","globalLoaderBottom","inner","globalLoaderColor","standardWithoutAnimation","successWithoutAnimation","errorWithoutAnimation","moveToRightAnimation","keyframes","spinnerAnimation","linearProgressAnimation","animations","successAnimation","delayBeforeHide","width","left","errorAnimation","transitionDuration","parseInt","
|
|
1
|
+
{"version":3,"sources":["GlobalLoaderView.styles.ts"],"names":["styles","outer","t","css","globalLoaderWidth","globalLoaderHeight","globalLoaderBackgroundColor","globalLoaderPosition","globalLoaderLeft","globalLoaderTop","globalLoaderRight","globalLoaderBottom","inner","globalLoaderColor","standardWithoutAnimation","successWithoutAnimation","errorWithoutAnimation","moveToRightAnimation","keyframes","spinnerAnimation","linearProgressAnimation","slowProgressAnimation","animations","successAnimation","delayBeforeHide","width","left","errorAnimation","transitionDuration","parseInt","globalLoaderTransitionToSpinnerDuration","spinnerAnimationDuration","globalLoaderSpinnerAnimationDuration","standardAnimation","expectedTime","slowProgressAnimationTime","globalLoaderSlowAnimationDuration","acceptAnimation","startWidth","transitionTime","globalLoaderTransitionFromSpinnerDuration","slowAcceptAnimation","acceptWithoutAnimation"],"mappings":"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","sourcesContent":["import { keyframes } from '@emotion/css';\n\nimport { css, memoizeStyle } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const styles = memoizeStyle({\n outer(t: Theme) {\n return css`\n width: ${t.globalLoaderWidth};\n height: ${t.globalLoaderHeight};\n background-color: ${t.globalLoaderBackgroundColor};\n position: ${t.globalLoaderPosition};\n left: ${t.globalLoaderLeft};\n top: ${t.globalLoaderTop};\n right: ${t.globalLoaderRight};\n bottom: ${t.globalLoaderBottom};\n overflow: hidden;\n `;\n },\n inner(t: Theme) {\n return css`\n background-color: ${t.globalLoaderColor};\n width: 0;\n height: ${t.globalLoaderHeight};\n position: absolute;\n left: 0;\n overflow: hidden;\n `;\n },\n standardWithoutAnimation() {\n return css`\n left: 0;\n width: 90%;\n `;\n },\n successWithoutAnimation() {\n return css`\n left: 0;\n width: 100%;\n `;\n },\n errorWithoutAnimation() {\n return css`\n left: 40%;\n width: 20%;\n `;\n },\n});\n\nconst moveToRightAnimation = keyframes`\n 0% {\n left: 0;\n width: 100%;\n }\n 50% {\n left: 50%;\n width: 50%;\n }\n 100% {\n left: 99%;\n width: 1%\n }\n`;\nconst spinnerAnimation = keyframes`\n 0% {\n transform: translateX(50%) scaleX(.005);\n animation-timing-function: cubic-bezier(.895,.03,.685,.22);\n }\n 50% {\n transform: translateX(0) scaleX(.35);\n animation-timing-function: cubic-bezier(.165,.84,.44,1);\n }\n 100% {\n transform: translateX(-50%) scaleX(.005);\n }\n`;\nconst linearProgressAnimation = keyframes`\n from { width: 0; }\n to { width: 80% }\n`;\nconst slowProgressAnimation = keyframes`\n from { width: 80%; }\n to { width: 90% }\n`;\n\nexport const animations = {\n successAnimation(delayBeforeHide: number, width: number, left: number) {\n return css`\n animation: successAnimation;\n animation-duration: ${delayBeforeHide}ms;\n @keyframes successAnimation {\n 0% {\n width: ${width}px;\n left: ${left}px;\n opacity: 1;\n }\n 20% {\n width: 100%;\n left: 0;\n opacity: 1;\n }\n 80% {\n width: 100%;\n left: 0;\n opacity: 1;\n }\n 100% {\n width: 100%;\n opacity: 0;\n }\n }\n `;\n },\n errorAnimation(t: Theme) {\n const transitionDuration = parseInt(t.globalLoaderTransitionToSpinnerDuration);\n const spinnerAnimationDuration = parseInt(t.globalLoaderSpinnerAnimationDuration);\n\n return css`\n left: 0;\n width: 100%;\n animation: ${moveToRightAnimation} ${transitionDuration}ms linear,\n ${spinnerAnimationDuration}ms ${spinnerAnimation} ${transitionDuration}ms infinite alternate;\n `;\n },\n standardAnimation(t: Theme, expectedTime: number) {\n const slowProgressAnimationTime = parseInt(t.globalLoaderSlowAnimationDuration);\n return css`\n width: 90%;\n animation: ${linearProgressAnimation} ${expectedTime}ms cubic-bezier(0, 0.4, 0.4, 1),\n ${slowProgressAnimationTime}ms ${slowProgressAnimation} ${expectedTime}ms linear;\n `;\n },\n acceptAnimation(t: Theme, startWidth: number, expectedTime: number, width: number, left: number) {\n const transitionTime = parseInt(t.globalLoaderTransitionFromSpinnerDuration);\n const slowProgressAnimationTime = parseInt(t.globalLoaderSlowAnimationDuration);\n return css`\n width: 90%;\n animation: transitionAnimation ${transitionTime}ms linear,\n ${expectedTime}ms acceptAnimation ${transitionTime}ms cubic-bezier(0, 0.4, 0.4, 1),\n ${slowProgressAnimationTime}ms ${slowProgressAnimation} ${expectedTime + transitionTime}ms linear;\n @keyframes transitionAnimation {\n from {\n width: ${width}px;\n left: ${left}px;\n }\n to {\n width: ${startWidth}px;\n left: 0;\n }\n }\n @keyframes acceptAnimation {\n from {\n width: ${startWidth}px;\n }\n to {\n width: 80%;\n }\n }\n `;\n },\n slowAcceptAnimation(t: Theme, startWidth: number, width: number, left: number) {\n const transitionTime = parseInt(t.globalLoaderTransitionFromSpinnerDuration);\n const slowProgressAnimationTime = parseInt(t.globalLoaderSlowAnimationDuration);\n return css`\n width: 90%;\n animation: transitionAnimation ${transitionTime}ms linear,\n ${slowProgressAnimationTime}ms acceptAnimation ${transitionTime}ms linear;\n @keyframes transitionAnimation {\n from {\n width: ${width}px;\n left: ${left}px;\n }\n to {\n width: ${startWidth}px;\n left: 0;\n }\n }\n @keyframes acceptAnimation {\n from {\n width: ${startWidth}px;\n }\n to {\n width: 90%;\n }\n }\n `;\n },\n acceptWithoutAnimation(startWidth: number) {\n return css`\n width: ${startWidth}px;\n `;\n },\n};\n"]}
|
|
@@ -18,4 +18,5 @@ export declare const useGlobalLoaderPosition: (ref: GlobalLoaderViewRef['refObje
|
|
|
18
18
|
export declare const useGlobalLoaderWidth: (status: GlobalLoaderViewProps['status'], ref: GlobalLoaderViewRef['refObject']) => {
|
|
19
19
|
width: number;
|
|
20
20
|
startWidth: number;
|
|
21
|
+
fullWidth: number;
|
|
21
22
|
};
|
|
@@ -27,9 +27,10 @@ var useGlobalLoaderPosition = function useGlobalLoaderPosition(ref) {
|
|
|
27
27
|
var useGlobalLoaderWidth = function useGlobalLoaderWidth(
|
|
28
28
|
status,
|
|
29
29
|
ref)
|
|
30
|
-
{
|
|
30
|
+
{var _ref$current, _ref$current$parentEl;
|
|
31
31
|
var _getDOMRect2 = (0, _getDOMRect3.getDOMRect)(ref),width = _getDOMRect2.width;
|
|
32
32
|
var _useState = (0, _react.useState)(0),startWidth = _useState[0],setStartWidth = _useState[1];
|
|
33
|
+
var fullWidth = ((_ref$current = ref.current) == null ? void 0 : (_ref$current$parentEl = _ref$current.parentElement) == null ? void 0 : _ref$current$parentEl.offsetWidth) || 0;
|
|
33
34
|
(0, _react.useEffect)(function () {
|
|
34
35
|
if (status === 'error') {
|
|
35
36
|
setStartWidth(width);
|
|
@@ -40,5 +41,5 @@ ref)
|
|
|
40
41
|
}
|
|
41
42
|
}, [status]);
|
|
42
43
|
|
|
43
|
-
return { width: width, startWidth: startWidth };
|
|
44
|
+
return { width: width, startWidth: startWidth, fullWidth: fullWidth };
|
|
44
45
|
};exports.useGlobalLoaderWidth = useGlobalLoaderWidth;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["useParams.ts"],"names":["useGlobalLoaderPosition","ref","left","useGlobalLoaderWidth","status","width","startWidth","setStartWidth"],"mappings":"+GAAA;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;;AAEO,IAAMA,uBAAuB,GAAG,SAA1BA,uBAA0B,CAACC,GAAD,EAA2C;AAChF,oBAAiB,6BAAWA,GAAX,CAAjB,CAAQC,IAAR,eAAQA,IAAR;AACA,SAAO,EAAEA,IAAI,EAAJA,IAAF,EAAP;AACD,CAHM;;AAKP;AACA;AACA;AACA;AACA;AACA;AACA,G;;AAEO,IAAMC,oBAAoB,GAAG,SAAvBA,oBAAuB;AAClCC,MADkC;AAElCH,GAFkC;AAG/B;AACH,qBAAkB,6BAAWA,GAAX,CAAlB,CAAQI,KAAR,gBAAQA,KAAR;AACA,kBAAoC,qBAAS,CAAT,CAApC,CAAOC,UAAP,gBAAmBC,aAAnB;AACA,wBAAU,YAAM;AACd,
|
|
1
|
+
{"version":3,"sources":["useParams.ts"],"names":["useGlobalLoaderPosition","ref","left","useGlobalLoaderWidth","status","width","startWidth","setStartWidth","fullWidth","current","parentElement","offsetWidth"],"mappings":"+GAAA;;AAEA;;;;AAIA;AACA;AACA;AACA;AACA;AACA;;AAEO,IAAMA,uBAAuB,GAAG,SAA1BA,uBAA0B,CAACC,GAAD,EAA2C;AAChF,oBAAiB,6BAAWA,GAAX,CAAjB,CAAQC,IAAR,eAAQA,IAAR;AACA,SAAO,EAAEA,IAAI,EAAJA,IAAF,EAAP;AACD,CAHM;;AAKP;AACA;AACA;AACA;AACA;AACA;AACA,G;;AAEO,IAAMC,oBAAoB,GAAG,SAAvBA,oBAAuB;AAClCC,MADkC;AAElCH,GAFkC;AAG/B;AACH,qBAAkB,6BAAWA,GAAX,CAAlB,CAAQI,KAAR,gBAAQA,KAAR;AACA,kBAAoC,qBAAS,CAAT,CAApC,CAAOC,UAAP,gBAAmBC,aAAnB;AACA,MAAMC,SAAS,GAAG,iBAAAP,GAAG,CAACQ,OAAJ,2DAAaC,aAAb,2CAA4BC,WAA5B,KAA2C,CAA7D;AACA,wBAAU,YAAM;AACd,QAAIP,MAAM,KAAK,OAAf,EAAwB;AACtBG,MAAAA,aAAa,CAACF,KAAD,CAAb;AACD,KAFD,MAEO,IAAID,MAAM,KAAK,QAAf,EAAyB;AAC9BG,MAAAA,aAAa,CAACD,UAAD,CAAb;AACD,KAFM,MAEA;AACLC,MAAAA,aAAa,CAAC,CAAD,CAAb;AACD;AACF,GARD,EAQG,CAACH,MAAD,CARH;;AAUA,SAAO,EAAEC,KAAK,EAALA,KAAF,EAASC,UAAU,EAAVA,UAAT,EAAqBE,SAAS,EAATA,SAArB,EAAP;AACD,CAlBM,C","sourcesContent":["import { useEffect, useState } from 'react';\n\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\n\nimport { GlobalLoaderViewProps, GlobalLoaderViewRef } from './GlobalLoaderView';\n\n/**\n * Вычисляет положение `GlobalLoader`\n *\n * @param ref - ref `GlobalLoader`\n * @returns - возвращает положение полоски `GlobalLoader`\n */\n\nexport const useGlobalLoaderPosition = (ref: GlobalLoaderViewRef['refObject']) => {\n const { left } = getDOMRect(ref);\n return { left };\n};\n\n/**\n * Вычисляет ширину `GlobalLoader`\n *\n * @param status - статус `GlobalLoader`\n * @param ref - ref `GlobalLoader`\n * @returns - возвращает ширину полоски `GlobalLoader`\n */\n\nexport const useGlobalLoaderWidth = (\n status: GlobalLoaderViewProps['status'],\n ref: GlobalLoaderViewRef['refObject'],\n) => {\n const { width } = getDOMRect(ref);\n const [startWidth, setStartWidth] = useState(0);\n const fullWidth = ref.current?.parentElement?.offsetWidth || 0;\n useEffect(() => {\n if (status === 'error') {\n setStartWidth(width);\n } else if (status === 'accept') {\n setStartWidth(startWidth);\n } else {\n setStartWidth(0);\n }\n }, [status]);\n\n return { width, startWidth, fullWidth };\n};\n"]}
|
|
@@ -235,8 +235,10 @@ ScrollBar = /*#__PURE__*/function (_React$Component) {(0, _inheritsLoose2.defaul
|
|
|
235
235
|
if (!_this.inner || _this.inner[pos] === 0) {
|
|
236
236
|
return 'begin';
|
|
237
237
|
}
|
|
238
|
-
|
|
239
|
-
|
|
238
|
+
// Zoom in Chrome causes problems
|
|
239
|
+
// https://github.com/skbkontur/retail-ui/pull/2705#issue-806286945
|
|
240
|
+
var maxScrollPos = _this.inner[size] - _this.inner[clientSize];
|
|
241
|
+
if (Math.abs(maxScrollPos - _this.inner[pos]) <= 1) {
|
|
240
242
|
return 'end';
|
|
241
243
|
}
|
|
242
244
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ScrollBar.tsx"],"names":["ScrollBar","state","defaultScrollbarState","renderMain","props","active","scrollSizeParametersNames","axis","customScrollPos","customScrollSize","classNames","className","styles","scrollBar","theme","scrollBarStyles","scrollBarInvert","invert","inlineStyles","pos","size","refScroll","handleScrollMouseDown","reflow","inner","scrollSize","scrollPos","scrollActive","scrollState","getImmediateScrollState","onScrollStateChange","setState","setInnerElement","element","handleScrollWheel","event","node","addEventListener","passive","removeEventListener","offset","coord","initialCoord","target","window","document","initialScrollPos","mouseMove","mouseMoveEvent","ratio","delta","preventDefault","Object","prototype","hasOwnProperty","call","returnValue","mouseUp","scrolling","WheelEvent","shiftKey","offsetHeight","deltaY","clientSize","componentDidMount","componentDidUpdate","render","setHover","hover","scrollBarX","globalClasses","scrollbarX","scrollBarXHover","scrollBarY","scrollbarY","scrollBarYHover","React","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"]}
|
|
1
|
+
{"version":3,"sources":["ScrollBar.tsx"],"names":["ScrollBar","state","defaultScrollbarState","renderMain","props","active","scrollSizeParametersNames","axis","customScrollPos","customScrollSize","classNames","className","styles","scrollBar","theme","scrollBarStyles","scrollBarInvert","invert","inlineStyles","pos","size","refScroll","handleScrollMouseDown","reflow","inner","scrollSize","scrollPos","scrollActive","scrollState","getImmediateScrollState","onScrollStateChange","setState","setInnerElement","element","handleScrollWheel","event","node","addEventListener","passive","removeEventListener","offset","coord","initialCoord","target","window","document","initialScrollPos","mouseMove","mouseMoveEvent","ratio","delta","preventDefault","Object","prototype","hasOwnProperty","call","returnValue","mouseUp","scrolling","WheelEvent","shiftKey","offsetHeight","deltaY","clientSize","maxScrollPos","Math","abs","componentDidMount","componentDidUpdate","render","setHover","hover","scrollBarX","globalClasses","scrollbarX","scrollBarXHover","scrollBarY","scrollbarY","scrollBarYHover","React","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 // Zoom in Chrome causes problems\n // https://github.com/skbkontur/retail-ui/pull/2705#issue-806286945\n const maxScrollPos = this.inner[size] - this.inner[clientSize];\n if (Math.abs(maxScrollPos - this.inner[pos]) <= 1) {\n return 'end';\n }\n\n return 'middle';\n };\n}\n"]}
|
|
@@ -5,6 +5,7 @@ var LayoutEvents = _interopRequireWildcard(require("../../lib/LayoutEvents"));
|
|
|
5
5
|
var _CommonWrapper = require("../../internal/CommonWrapper");
|
|
6
6
|
|
|
7
7
|
var _Emotion = require("../../lib/theming/Emotion");
|
|
8
|
+
var _client = require("../../lib/client");
|
|
8
9
|
var _rootNode = require("../../lib/rootNode");
|
|
9
10
|
|
|
10
11
|
var _ScrollContainer = require("./ScrollContainer.styles");
|
|
@@ -112,7 +113,7 @@ ScrollContainer = (0, _rootNode.rootNode)(_class = (_temp = _class2 = /*#__PURE_
|
|
|
112
113
|
_react.default.createElement("div", {
|
|
113
114
|
style: innerStyle,
|
|
114
115
|
ref: _this.refInner,
|
|
115
|
-
className: (0, _Emotion.cx)(_ScrollContainer.styles.inner(), _ScrollContainer.globalClasses.inner),
|
|
116
|
+
className: (0, _Emotion.cx)(_ScrollContainer.styles.inner(), _ScrollContainer.globalClasses.inner, _client.isIE11 && _ScrollContainer.styles.innerIE11()),
|
|
116
117
|
"data-tid": "ScrollContainer__inner",
|
|
117
118
|
onScroll: _this.handleNativeScroll },
|
|
118
119
|
|