@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.
Files changed (102) hide show
  1. package/CHANGELOG.md +81 -0
  2. package/cjs/components/GlobalLoader/GlobalLoader.d.ts +1 -1
  3. package/cjs/components/GlobalLoader/GlobalLoader.js.map +1 -1
  4. package/cjs/components/GlobalLoader/GlobalLoader.md +13 -3
  5. package/cjs/components/GlobalLoader/GlobalLoaderView.js +6 -3
  6. package/cjs/components/GlobalLoader/GlobalLoaderView.js.map +1 -1
  7. package/cjs/components/GlobalLoader/GlobalLoaderView.styles.d.ts +3 -2
  8. package/cjs/components/GlobalLoader/GlobalLoaderView.styles.js +59 -12
  9. package/cjs/components/GlobalLoader/GlobalLoaderView.styles.js.map +1 -1
  10. package/cjs/components/GlobalLoader/useParams.d.ts +1 -0
  11. package/cjs/components/GlobalLoader/useParams.js +3 -2
  12. package/cjs/components/GlobalLoader/useParams.js.map +1 -1
  13. package/cjs/components/ScrollContainer/ScrollBar.js +4 -2
  14. package/cjs/components/ScrollContainer/ScrollBar.js.map +1 -1
  15. package/cjs/components/ScrollContainer/ScrollContainer.js +2 -1
  16. package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
  17. package/cjs/components/ScrollContainer/ScrollContainer.styles.d.ts +1 -0
  18. package/cjs/components/ScrollContainer/ScrollContainer.styles.js +12 -8
  19. package/cjs/components/ScrollContainer/ScrollContainer.styles.js.map +1 -1
  20. package/cjs/components/Select/Select.js +4 -1
  21. package/cjs/components/Select/Select.js.map +1 -1
  22. package/cjs/components/SidePage/SidePage.d.ts +5 -1
  23. package/cjs/components/SidePage/SidePage.js +31 -9
  24. package/cjs/components/SidePage/SidePage.js.map +1 -1
  25. package/cjs/components/SidePage/SidePageContext.d.ts +2 -0
  26. package/cjs/components/SidePage/SidePageContext.js +3 -0
  27. package/cjs/components/SidePage/SidePageContext.js.map +1 -1
  28. package/cjs/components/SidePage/SidePageHeader.d.ts +3 -0
  29. package/cjs/components/SidePage/SidePageHeader.js +36 -26
  30. package/cjs/components/SidePage/SidePageHeader.js.map +1 -1
  31. package/cjs/components/Sticky/Sticky.d.ts +6 -1
  32. package/cjs/components/Sticky/Sticky.js +5 -0
  33. package/cjs/components/Sticky/Sticky.js.map +1 -1
  34. package/cjs/internal/DropdownContainer/DropdownContainer.d.ts +1 -0
  35. package/cjs/internal/DropdownContainer/DropdownContainer.js +15 -2
  36. package/cjs/internal/DropdownContainer/DropdownContainer.js.map +1 -1
  37. package/cjs/internal/DropdownContainer/DropdownContainer.styles.d.ts +3 -0
  38. package/cjs/internal/DropdownContainer/DropdownContainer.styles.js +9 -0
  39. package/cjs/internal/DropdownContainer/DropdownContainer.styles.js.map +1 -0
  40. package/cjs/internal/Menu/Menu.d.ts +2 -0
  41. package/cjs/internal/Menu/Menu.js +33 -3
  42. package/cjs/internal/Menu/Menu.js.map +1 -1
  43. package/cjs/internal/Menu/Menu.styles.d.ts +3 -0
  44. package/cjs/internal/Menu/Menu.styles.js +23 -3
  45. package/cjs/internal/Menu/Menu.styles.js.map +1 -1
  46. package/cjs/internal/Popup/Popup.js +3 -1
  47. package/cjs/internal/Popup/Popup.js.map +1 -1
  48. package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  49. package/cjs/internal/themes/DefaultTheme.d.ts +3 -1
  50. package/cjs/internal/themes/DefaultTheme.js +3 -1
  51. package/cjs/internal/themes/DefaultTheme.js.map +1 -1
  52. package/components/GlobalLoader/GlobalLoader/GlobalLoader.js.map +1 -1
  53. package/components/GlobalLoader/GlobalLoader.d.ts +1 -1
  54. package/components/GlobalLoader/GlobalLoader.md +13 -3
  55. package/components/GlobalLoader/GlobalLoaderView/GlobalLoaderView.js +8 -3
  56. package/components/GlobalLoader/GlobalLoaderView/GlobalLoaderView.js.map +1 -1
  57. package/components/GlobalLoader/GlobalLoaderView.styles/GlobalLoaderView.styles.js +19 -10
  58. package/components/GlobalLoader/GlobalLoaderView.styles/GlobalLoaderView.styles.js.map +1 -1
  59. package/components/GlobalLoader/GlobalLoaderView.styles.d.ts +3 -2
  60. package/components/GlobalLoader/useParams/useParams.js +5 -1
  61. package/components/GlobalLoader/useParams/useParams.js.map +1 -1
  62. package/components/GlobalLoader/useParams.d.ts +1 -0
  63. package/components/ScrollContainer/ScrollBar/ScrollBar.js +6 -2
  64. package/components/ScrollContainer/ScrollBar/ScrollBar.js.map +1 -1
  65. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +2 -1
  66. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
  67. package/components/ScrollContainer/ScrollContainer.styles/ScrollContainer.styles.js +11 -8
  68. package/components/ScrollContainer/ScrollContainer.styles/ScrollContainer.styles.js.map +1 -1
  69. package/components/ScrollContainer/ScrollContainer.styles.d.ts +1 -0
  70. package/components/Select/Select/Select.js +5 -2
  71. package/components/Select/Select/Select.js.map +1 -1
  72. package/components/SidePage/SidePage/SidePage.js +37 -11
  73. package/components/SidePage/SidePage/SidePage.js.map +1 -1
  74. package/components/SidePage/SidePage.d.ts +5 -1
  75. package/components/SidePage/SidePageContext/SidePageContext.js +3 -0
  76. package/components/SidePage/SidePageContext/SidePageContext.js.map +1 -1
  77. package/components/SidePage/SidePageContext.d.ts +2 -0
  78. package/components/SidePage/SidePageHeader/SidePageHeader.js +26 -13
  79. package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
  80. package/components/SidePage/SidePageHeader.d.ts +3 -0
  81. package/components/Sticky/Sticky/Sticky.js.map +1 -1
  82. package/components/Sticky/Sticky.d.ts +6 -1
  83. package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js +9 -2
  84. package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js.map +1 -1
  85. package/internal/DropdownContainer/DropdownContainer.d.ts +1 -0
  86. package/internal/DropdownContainer/DropdownContainer.styles/DropdownContainer.styles.js +10 -0
  87. package/internal/DropdownContainer/DropdownContainer.styles/DropdownContainer.styles.js.map +1 -0
  88. package/internal/DropdownContainer/DropdownContainer.styles/package.json +6 -0
  89. package/internal/DropdownContainer/DropdownContainer.styles.d.ts +3 -0
  90. package/internal/Menu/Menu/Menu.js +30 -6
  91. package/internal/Menu/Menu/Menu.js.map +1 -1
  92. package/internal/Menu/Menu.d.ts +2 -0
  93. package/internal/Menu/Menu.styles/Menu.styles.js +12 -3
  94. package/internal/Menu/Menu.styles/Menu.styles.js.map +1 -1
  95. package/internal/Menu/Menu.styles.d.ts +3 -0
  96. package/internal/Popup/Popup/Popup.js +2 -1
  97. package/internal/Popup/Popup/Popup.js.map +1 -1
  98. package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  99. package/internal/themes/DefaultTheme/DefaultTheme.js +3 -1
  100. package/internal/themes/DefaultTheme/DefaultTheme.js.map +1 -1
  101. package/internal/themes/DefaultTheme.d.ts +3 -1
  102. 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
- * Возвращает анимацию лоадера <br />
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={setManually}>
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={(s) => console.log('start', s)}
46
- onDone={(s) => console.log('done', s)}
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
- return _GlobalLoaderView.animations.acceptAnimation(startWidth, expectedResponseTime);
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,8BAA8B,qCAAqBL,MAArB,EAA6BG,GAA7B,CAA9B,CAAQG,KAAR,yBAAQA,KAAR,CAAeC,UAAf,yBAAeA,UAAf;AACA,8BAAiB,wCAAwBJ,GAAxB,CAAjB,CAAQK,IAAR,yBAAQA,IAAR;;AAEA,MAAMC,iBAAiB,GAAG,SAApBA,iBAAoB,CAACT,MAAD,EAA6C;AACrE,QAAI,CAACC,iBAAL,EAAwB;AACtB,cAAQD,MAAR;AACE,aAAK,SAAL;AACE,iBAAOU,6BAAWC,gBAAX,CAA4BZ,eAA5B,EAA6CO,KAA7C,EAAoDE,IAApD,CAAP;AACF,aAAK,QAAL;AACE,iBAAOE,6BAAWE,eAAX,CAA2BL,UAA3B,EAAuCT,oBAAvC,CAAP;AACF,aAAK,OAAL;AACE,iBAAOY,6BAAWG,cAAX,CAA0BT,KAA1B,CAAP;AACF,aAAK,UAAL;AACE,iBAAOM,6BAAWI,iBAAX,CAA6BhB,oBAA7B,CAAP,CARJ;;AAUD;;AAED,QAAIG,iBAAJ,EAAuB;AACrB,cAAQD,MAAR;AACE,aAAK,SAAL;AACE,iBAAOe,yBAAOC,uBAAP,EAAP;AACF,aAAK,QAAL;AACE,iBAAON,6BAAWO,sBAAX,CAAkCV,UAAlC,CAAP;AACF,aAAK,OAAL;AACE,iBAAOQ,yBAAOG,qBAAP,EAAP;AACF,aAAK,UAAL;AACE,iBAAOH,yBAAOI,wBAAP,EAAP,CARJ;;AAUD;AACF,GA1BD;;AA4BA;AACE,iCAAC,4BAAD,EAAmBjB,IAAnB;AACE,iCAAC,cAAD,IAAQ,QAAQ,EAAC,cAAjB,EAAgC,SAAS,EAAEa,yBAAOK,KAAP,CAAahB,KAAb,CAA3C;AACE,0CAAK,GAAG,EAAED,GAAV,EAAe,SAAS,EAAE,iBAAGY,yBAAOM,KAAP,CAAajB,KAAb,CAAH,EAAwBK,iBAAiB,CAACT,MAAD,CAAzC,CAA1B,GADF,CADF,CADF;;;;AAOD,CA/CM,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 } = 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 return animations.acceptAnimation(startWidth, expectedResponseTime);\n case 'error':\n return animations.errorAnimation(theme);\n case 'standard':\n return animations.standardAnimation(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"]}
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: 80%;\n "])));
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)(_templateObject9 || (_templateObject9 = (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 "])),
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.globalLoaderTransitionDuration);
115
+ var transitionDuration = parseInt(t.globalLoaderTransitionToSpinnerDuration);
112
116
  var spinnerAnimationDuration = parseInt(t.globalLoaderSpinnerAnimationDuration);
113
117
 
114
- return (0, _Emotion.css)(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteralLoose2.default)(["\n left: 0;\n width: 100%;\n animation: ", " ", "ms linear,\n ", "ms ", " ", "ms infinite alternate;\n "])),
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
- return (0, _Emotion.css)(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteralLoose2.default)(["\n width: 80%;\n animation: ", " ", "ms cubic-bezier(0, 0.4, 0.4, 1);\n "])),
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
- acceptAnimation: function acceptAnimation(startWidth, expectedTime) {
128
- return (0, _Emotion.css)(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteralLoose2.default)(["\n width: 80%;\n animation: acceptAnimation ", "ms ease-out;\n @keyframes acceptAnimation {\n from {\n width: ", "px;\n }\n to {\n width: 80%;\n }\n }\n "])),
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)(_templateObject13 || (_templateObject13 = (0, _taggedTemplateLiteralLoose2.default)(["\n width: ", ";\n "])),
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","globalLoaderTransitionDuration","spinnerAnimationDuration","globalLoaderSpinnerAnimationDuration","standardAnimation","expectedTime","acceptAnimation","startWidth","acceptWithoutAnimation"],"mappings":"iSAAA;;AAEA,oD;;;AAGO,IAAMA,MAAM,GAAG,2BAAa;AACjCC,EAAAA,KADiC,iBAC3BC,CAD2B,EACjB;AACd,eAAOC,YAAP;AACWD,IAAAA,CAAC,CAACE,iBADb;AAEYF,IAAAA,CAAC,CAACG,kBAFd;AAGsBH,IAAAA,CAAC,CAACI,2BAHxB;AAIcJ,IAAAA,CAAC,CAACK,oBAJhB;AAKUL,IAAAA,CAAC,CAACM,gBALZ;AAMSN,IAAAA,CAAC,CAACO,eANX;AAOWP,IAAAA,CAAC,CAACQ,iBAPb;AAQYR,IAAAA,CAAC,CAACS,kBARd;;;AAWD,GAbgC;AAcjCC,EAAAA,KAdiC,iBAc3BV,CAd2B,EAcjB;AACd,eAAOC,YAAP;AACsBD,IAAAA,CAAC,CAACW,iBADxB;;AAGYX,IAAAA,CAAC,CAACG,kBAHd;;;;;AAQD,GAvBgC;AAwBjCS,EAAAA,wBAxBiC,sCAwBN;AACzB,eAAOX,YAAP;;;;AAID,GA7BgC;AA8BjCY,EAAAA,uBA9BiC,qCA8BP;AACxB,eAAOZ,YAAP;;;;AAID,GAnCgC;AAoCjCa,EAAAA,qBApCiC,mCAoCT;AACtB,eAAOb,YAAP;;;;AAID,GAzCgC,EAAb,CAAf,C;;;AA4CP,IAAMc,oBAAoB,OAAGC,cAAH,uOAA1B;;;;;;;;;;;;;;AAcA,IAAMC,gBAAgB,OAAGD,cAAH,8YAAtB;;;;;;;;;;;;;AAaA,IAAME,uBAAuB,OAAGF,cAAH,wIAA7B;;;;;AAKO,IAAMG,UAAU,GAAG;AACxBC,EAAAA,gBADwB,4BACPC,eADO,EACkBC,KADlB,EACiCC,IADjC,EAC+C;AACrE,eAAOtB,YAAP;;AAEwBoB,IAAAA,eAFxB;;;AAKeC,IAAAA,KALf;AAMcC,IAAAA,IANd;;;;;;;;;;;;;;;;;;;AAyBD,GA3BuB;AA4BxBC,EAAAA,cA5BwB,0BA4BTxB,CA5BS,EA4BC;AACvB,QAAMyB,kBAAkB,GAAGC,QAAQ,CAAC1B,CAAC,CAAC2B,8BAAH,CAAnC;AACA,QAAMC,wBAAwB,GAAGF,QAAQ,CAAC1B,CAAC,CAAC6B,oCAAH,CAAzC;;AAEA,eAAO5B,YAAP;;;AAGec,IAAAA,oBAHf,EAGuCU,kBAHvC;AAIMG,IAAAA,wBAJN,EAIoCX,gBAJpC,EAIwDQ,kBAJxD;;AAMD,GAtCuB;AAuCxBK,EAAAA,iBAvCwB,6BAuCNC,YAvCM,EAuCgB;AACtC,eAAO9B,YAAP;;AAEeiB,IAAAA,uBAFf,EAE0Ca,YAF1C;;AAID,GA5CuB;AA6CxBC,EAAAA,eA7CwB,2BA6CRC,UA7CQ,EA6CYF,YA7CZ,EA6CkC;AACxD,eAAO9B,YAAP;;AAE+B8B,IAAAA,YAF/B;;;AAKeE,IAAAA,UALf;;;;;;;AAYD,GA1DuB;AA2DxBC,EAAAA,sBA3DwB,kCA2DDD,UA3DC,EA2DmB;AACzC,eAAOhC,YAAP;AACWgC,IAAAA,UADX;;AAGD,GA/DuB,EAAnB,C","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: 80%;\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`;\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.globalLoaderTransitionDuration);\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(expectedTime: number) {\n return css`\n width: 80%;\n animation: ${linearProgressAnimation} ${expectedTime}ms cubic-bezier(0, 0.4, 0.4, 1);\n `;\n },\n acceptAnimation(startWidth: number, expectedTime: number) {\n return css`\n width: 80%;\n animation: acceptAnimation ${expectedTime}ms ease-out;\n @keyframes acceptAnimation {\n from {\n width: ${startWidth}px;\n }\n to {\n width: 80%;\n }\n }\n `;\n },\n acceptWithoutAnimation(startWidth: number) {\n return css`\n width: ${startWidth};\n `;\n },\n};\n"]}
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,QAAIH,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,EAAP;AACD,CAjBM,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 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 };\n};\n"]}
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
- if (_this.inner[pos] === _this.inner[size] - _this.inner[clientSize]) {
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