@skbkontur/react-ui 3.10.0 → 3.11.0-select-right

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 (214) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/LICENSE +21 -21
  3. package/cjs/components/Autocomplete/Autocomplete.md +7 -7
  4. package/cjs/components/Button/Button.d.ts +1 -1
  5. package/cjs/components/Button/Button.js +4 -3
  6. package/cjs/components/Button/Button.js.map +1 -1
  7. package/cjs/components/Button/Button.styles.d.ts +1 -0
  8. package/cjs/components/Button/Button.styles.js +38 -28
  9. package/cjs/components/Button/Button.styles.js.map +1 -1
  10. package/cjs/components/CurrencyInput/CurrencyInput.md +24 -24
  11. package/cjs/components/CurrencyLabel/CurrencyLabel.md +23 -23
  12. package/cjs/components/DateInput/DateInput.md +106 -106
  13. package/cjs/components/DatePicker/DatePicker.md +307 -307
  14. package/cjs/components/DropdownMenu/DropdownMenu.d.ts +2 -2
  15. package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
  16. package/cjs/components/FxInput/FxInput.md +16 -16
  17. package/cjs/components/Gapped/Gapped.md +43 -43
  18. package/cjs/components/Group/Group.md +18 -18
  19. package/cjs/components/Hint/Hint.d.ts +2 -1
  20. package/cjs/components/Hint/Hint.js +0 -16
  21. package/cjs/components/Hint/Hint.js.map +1 -1
  22. package/cjs/components/Input/Input.md +13 -13
  23. package/cjs/components/Kebab/Kebab.d.ts +2 -2
  24. package/cjs/components/Kebab/Kebab.js.map +1 -1
  25. package/cjs/components/MenuItem/MenuItem.d.ts +1 -1
  26. package/cjs/components/MenuItem/MenuItem.js +1 -4
  27. package/cjs/components/MenuItem/MenuItem.js.map +1 -1
  28. package/cjs/components/Paging/Paging.md +43 -43
  29. package/cjs/components/PasswordInput/PasswordInput.md +9 -9
  30. package/cjs/components/RadioGroup/RadioGroup.md +43 -43
  31. package/cjs/components/ScrollContainer/ScrollBar.js +4 -2
  32. package/cjs/components/ScrollContainer/ScrollBar.js.map +1 -1
  33. package/cjs/components/ScrollContainer/ScrollContainer.js +2 -1
  34. package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
  35. package/cjs/components/ScrollContainer/ScrollContainer.styles.d.ts +1 -0
  36. package/cjs/components/ScrollContainer/ScrollContainer.styles.js +12 -8
  37. package/cjs/components/ScrollContainer/ScrollContainer.styles.js.map +1 -1
  38. package/cjs/components/Select/Select.js +2 -1
  39. package/cjs/components/Select/Select.js.map +1 -1
  40. package/cjs/components/SidePage/SidePage.d.ts +1 -0
  41. package/cjs/components/SidePage/SidePage.js +14 -1
  42. package/cjs/components/SidePage/SidePage.js.map +1 -1
  43. package/cjs/components/Spinner/Spinner.d.ts +8 -0
  44. package/cjs/components/Spinner/Spinner.js +21 -3
  45. package/cjs/components/Spinner/Spinner.js.map +1 -1
  46. package/cjs/components/Spinner/Spinner.md +1 -0
  47. package/cjs/components/Spinner/Spinner.styles.d.ts +2 -1
  48. package/cjs/components/Spinner/Spinner.styles.js +13 -10
  49. package/cjs/components/Spinner/Spinner.styles.js.map +1 -1
  50. package/cjs/components/Switcher/Switcher.styles.js +4 -2
  51. package/cjs/components/Switcher/Switcher.styles.js.map +1 -1
  52. package/cjs/components/Tabs/Tabs.md +36 -36
  53. package/cjs/components/Textarea/Textarea.md +25 -25
  54. package/cjs/components/Token/Token.md +112 -112
  55. package/cjs/components/TokenInput/TokenInput.md +79 -79
  56. package/cjs/components/Tooltip/Tooltip.d.ts +8 -21
  57. package/cjs/components/Tooltip/Tooltip.js +14 -27
  58. package/cjs/components/Tooltip/Tooltip.js.map +1 -1
  59. package/cjs/components/TooltipMenu/TooltipMenu.d.ts +2 -2
  60. package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
  61. package/cjs/index.d.ts +1 -0
  62. package/cjs/index.js +2 -1
  63. package/cjs/index.js.map +1 -1
  64. package/cjs/internal/DropdownContainer/DropdownContainer.js +10 -2
  65. package/cjs/internal/DropdownContainer/DropdownContainer.js.map +1 -1
  66. package/cjs/internal/DropdownContainer/DropdownContainer.styles.d.ts +3 -0
  67. package/cjs/internal/DropdownContainer/DropdownContainer.styles.js +9 -0
  68. package/cjs/internal/DropdownContainer/DropdownContainer.styles.js.map +1 -0
  69. package/cjs/internal/Menu/Menu.d.ts +2 -0
  70. package/cjs/internal/Menu/Menu.js +26 -2
  71. package/cjs/internal/Menu/Menu.js.map +1 -1
  72. package/cjs/internal/Menu/Menu.styles.d.ts +3 -0
  73. package/cjs/internal/Menu/Menu.styles.js +22 -3
  74. package/cjs/internal/Menu/Menu.styles.js.map +1 -1
  75. package/cjs/internal/Popup/Popup.d.ts +5 -4
  76. package/cjs/internal/Popup/Popup.js +13 -24
  77. package/cjs/internal/Popup/Popup.js.map +1 -1
  78. package/cjs/internal/Popup/PopupHelper.d.ts +2 -2
  79. package/cjs/internal/Popup/PopupHelper.js.map +1 -1
  80. package/cjs/internal/Popup/types.d.ts +1 -0
  81. package/cjs/internal/Popup/types.js +1 -0
  82. package/cjs/internal/Popup/types.js.map +1 -0
  83. package/cjs/internal/PopupMenu/PopupMenu.d.ts +3 -3
  84. package/cjs/internal/PopupMenu/PopupMenu.js +17 -3
  85. package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
  86. package/cjs/internal/PopupMenu/validatePositions.d.ts +2 -2
  87. package/cjs/internal/PopupMenu/validatePositions.js +2 -4
  88. package/cjs/internal/PopupMenu/validatePositions.js.map +1 -1
  89. package/cjs/internal/ThemeShowcase/ThemeShowcase.md +13 -13
  90. package/cjs/internal/icons/SpinnerIcon.d.ts +4 -1
  91. package/cjs/internal/icons/SpinnerIcon.js +5 -2
  92. package/cjs/internal/icons/SpinnerIcon.js.map +1 -1
  93. package/cjs/lib/ModalStack.js +16 -17
  94. package/cjs/lib/ModalStack.js.map +1 -1
  95. package/cjs/lib/theming/AnimationKeyframes.js +1 -1
  96. package/cjs/lib/theming/AnimationKeyframes.js.map +1 -1
  97. package/cjs/lib/theming/useTheme.d.ts +1 -0
  98. package/cjs/lib/theming/useTheme.js +7 -0
  99. package/cjs/lib/theming/useTheme.js.map +1 -0
  100. package/cjs/lib/utils.d.ts +32 -0
  101. package/cjs/lib/utils.js +62 -2
  102. package/cjs/lib/utils.js.map +1 -1
  103. package/cjs/typings/html-props.d.ts +123 -0
  104. package/components/Autocomplete/Autocomplete.md +7 -7
  105. package/components/Button/Button/Button.js +3 -7
  106. package/components/Button/Button/Button.js.map +1 -1
  107. package/components/Button/Button.d.ts +1 -1
  108. package/components/Button/Button.styles/Button.styles.js +31 -28
  109. package/components/Button/Button.styles/Button.styles.js.map +1 -1
  110. package/components/Button/Button.styles.d.ts +1 -0
  111. package/components/CurrencyInput/CurrencyInput.md +24 -24
  112. package/components/CurrencyLabel/CurrencyLabel.md +23 -23
  113. package/components/DateInput/DateInput.md +106 -106
  114. package/components/DatePicker/DatePicker.md +307 -307
  115. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
  116. package/components/DropdownMenu/DropdownMenu.d.ts +2 -2
  117. package/components/FxInput/FxInput.md +16 -16
  118. package/components/Gapped/Gapped.md +43 -43
  119. package/components/Group/Group.md +18 -18
  120. package/components/Hint/Hint/Hint.js.map +1 -1
  121. package/components/Hint/Hint.d.ts +2 -1
  122. package/components/Input/Input.md +13 -13
  123. package/components/Kebab/Kebab/Kebab.js.map +1 -1
  124. package/components/Kebab/Kebab.d.ts +2 -2
  125. package/components/MenuItem/MenuItem/MenuItem.js +2 -7
  126. package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
  127. package/components/MenuItem/MenuItem.d.ts +1 -1
  128. package/components/Paging/Paging.md +43 -43
  129. package/components/PasswordInput/PasswordInput.md +9 -9
  130. package/components/RadioGroup/RadioGroup.md +43 -43
  131. package/components/ScrollContainer/ScrollBar/ScrollBar.js +6 -2
  132. package/components/ScrollContainer/ScrollBar/ScrollBar.js.map +1 -1
  133. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +2 -1
  134. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
  135. package/components/ScrollContainer/ScrollContainer.styles/ScrollContainer.styles.js +11 -8
  136. package/components/ScrollContainer/ScrollContainer.styles/ScrollContainer.styles.js.map +1 -1
  137. package/components/ScrollContainer/ScrollContainer.styles.d.ts +1 -0
  138. package/components/Select/Select/Select.js +2 -1
  139. package/components/Select/Select/Select.js.map +1 -1
  140. package/components/SidePage/SidePage/SidePage.js +19 -0
  141. package/components/SidePage/SidePage/SidePage.js.map +1 -1
  142. package/components/SidePage/SidePage.d.ts +1 -0
  143. package/components/Spinner/Spinner/Spinner.js +6 -3
  144. package/components/Spinner/Spinner/Spinner.js.map +1 -1
  145. package/components/Spinner/Spinner.d.ts +8 -0
  146. package/components/Spinner/Spinner.md +1 -0
  147. package/components/Spinner/Spinner.styles/Spinner.styles.js +12 -9
  148. package/components/Spinner/Spinner.styles/Spinner.styles.js.map +1 -1
  149. package/components/Spinner/Spinner.styles.d.ts +2 -1
  150. package/components/Switcher/Switcher.styles/Switcher.styles.js +3 -1
  151. package/components/Switcher/Switcher.styles/Switcher.styles.js.map +1 -1
  152. package/components/Tabs/Tabs.md +36 -36
  153. package/components/Textarea/Textarea.md +25 -25
  154. package/components/Token/Token.md +112 -112
  155. package/components/TokenInput/TokenInput.md +79 -79
  156. package/components/Tooltip/Tooltip/Tooltip.js +2 -2
  157. package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
  158. package/components/Tooltip/Tooltip.d.ts +8 -21
  159. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
  160. package/components/TooltipMenu/TooltipMenu.d.ts +2 -2
  161. package/index.d.ts +1 -0
  162. package/index.js +2 -1
  163. package/index.js.map +1 -1
  164. package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js +6 -1
  165. package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js.map +1 -1
  166. package/internal/DropdownContainer/DropdownContainer.styles/DropdownContainer.styles.js +10 -0
  167. package/internal/DropdownContainer/DropdownContainer.styles/DropdownContainer.styles.js.map +1 -0
  168. package/internal/DropdownContainer/DropdownContainer.styles/package.json +6 -0
  169. package/internal/DropdownContainer/DropdownContainer.styles.d.ts +3 -0
  170. package/internal/Menu/Menu/Menu.js +14 -5
  171. package/internal/Menu/Menu/Menu.js.map +1 -1
  172. package/internal/Menu/Menu.d.ts +2 -0
  173. package/internal/Menu/Menu.styles/Menu.styles.js +12 -3
  174. package/internal/Menu/Menu.styles/Menu.styles.js.map +1 -1
  175. package/internal/Menu/Menu.styles.d.ts +3 -0
  176. package/internal/Popup/Popup/Popup.js +3 -2
  177. package/internal/Popup/Popup/Popup.js.map +1 -1
  178. package/internal/Popup/Popup.d.ts +5 -4
  179. package/internal/Popup/PopupHelper/PopupHelper.js.map +1 -1
  180. package/internal/Popup/PopupHelper.d.ts +2 -2
  181. package/internal/Popup/types/package.json +6 -0
  182. package/internal/Popup/types/types.js +0 -0
  183. package/internal/Popup/types/types.js.map +1 -0
  184. package/internal/Popup/types.d.ts +1 -0
  185. package/internal/PopupMenu/PopupMenu/PopupMenu.js +3 -3
  186. package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
  187. package/internal/PopupMenu/PopupMenu.d.ts +3 -3
  188. package/internal/PopupMenu/validatePositions/validatePositions.js +2 -2
  189. package/internal/PopupMenu/validatePositions/validatePositions.js.map +1 -1
  190. package/internal/PopupMenu/validatePositions.d.ts +2 -2
  191. package/internal/ThemeShowcase/ThemeShowcase.md +13 -13
  192. package/internal/icons/SpinnerIcon/SpinnerIcon.js +5 -2
  193. package/internal/icons/SpinnerIcon/SpinnerIcon.js.map +1 -1
  194. package/internal/icons/SpinnerIcon.d.ts +4 -1
  195. package/lib/ModalStack/ModalStack.js +9 -13
  196. package/lib/ModalStack/ModalStack.js.map +1 -1
  197. package/lib/theming/AnimationKeyframes/AnimationKeyframes.js +1 -1
  198. package/lib/theming/AnimationKeyframes/AnimationKeyframes.js.map +1 -1
  199. package/lib/theming/useTheme/package.json +6 -0
  200. package/lib/theming/useTheme/useTheme.js +5 -0
  201. package/lib/theming/useTheme/useTheme.js.map +1 -0
  202. package/lib/theming/useTheme.d.ts +1 -0
  203. package/lib/utils/utils.js +66 -0
  204. package/lib/utils/utils.js.map +1 -1
  205. package/lib/utils.d.ts +32 -0
  206. package/package.json +5 -5
  207. package/typings/html-props.d.ts +123 -0
  208. package/cjs/internal/PopupMenu/PopupMenuPositions.d.ts +0 -2
  209. package/cjs/internal/PopupMenu/PopupMenuPositions.js +0 -15
  210. package/cjs/internal/PopupMenu/PopupMenuPositions.js.map +0 -1
  211. package/internal/PopupMenu/PopupMenuPositions/PopupMenuPositions.js +0 -1
  212. package/internal/PopupMenu/PopupMenuPositions/PopupMenuPositions.js.map +0 -1
  213. package/internal/PopupMenu/PopupMenuPositions/package.json +0 -6
  214. package/internal/PopupMenu/PopupMenuPositions.d.ts +0 -2
@@ -1,43 +1,43 @@
1
- ```jsx harmony
2
- import { Gapped, Radio } from '@skbkontur/react-ui';
3
-
4
- let items = ['One', 'Two', 'Three', 'Four'];
5
-
6
- let simpleRadioGroup = (
7
- <div>
8
- <h2>Numbers</h2>
9
- <RadioGroup name="number-simple" items={items} defaultValue="One" />
10
- </div>
11
- );
12
-
13
- let complexRadioGroup = (
14
- <div>
15
- <h2>Numbers</h2>
16
- <RadioGroup name="number-complex" defaultValue="3">
17
- <Gapped gap={40}>
18
- <Gapped vertical gap={0}>
19
- <b>Odd</b>
20
- <Radio value="1">One</Radio>
21
- <Radio value="3">Three</Radio>
22
- <Radio value="5" disabled>
23
- Five
24
- </Radio>
25
- <Radio value="7">Seven</Radio>
26
- </Gapped>
27
- <Gapped vertical gap={0}>
28
- <b>Even</b>
29
- <Radio value="2">Two</Radio>
30
- <Radio value="4">Four</Radio>
31
- <Radio value="6">Six</Radio>
32
- <Radio value="8">Eight</Radio>
33
- </Gapped>
34
- </Gapped>
35
- </RadioGroup>
36
- </div>
37
- );
38
-
39
- <div>
40
- {simpleRadioGroup}
41
- {complexRadioGroup}
42
- </div>;
43
- ```
1
+ ```jsx harmony
2
+ import { Gapped, Radio } from '@skbkontur/react-ui';
3
+
4
+ let items = ['One', 'Two', 'Three', 'Four'];
5
+
6
+ let simpleRadioGroup = (
7
+ <div>
8
+ <h2>Numbers</h2>
9
+ <RadioGroup name="number-simple" items={items} defaultValue="One" />
10
+ </div>
11
+ );
12
+
13
+ let complexRadioGroup = (
14
+ <div>
15
+ <h2>Numbers</h2>
16
+ <RadioGroup name="number-complex" defaultValue="3">
17
+ <Gapped gap={40}>
18
+ <Gapped vertical gap={0}>
19
+ <b>Odd</b>
20
+ <Radio value="1">One</Radio>
21
+ <Radio value="3">Three</Radio>
22
+ <Radio value="5" disabled>
23
+ Five
24
+ </Radio>
25
+ <Radio value="7">Seven</Radio>
26
+ </Gapped>
27
+ <Gapped vertical gap={0}>
28
+ <b>Even</b>
29
+ <Radio value="2">Two</Radio>
30
+ <Radio value="4">Four</Radio>
31
+ <Radio value="6">Six</Radio>
32
+ <Radio value="8">Eight</Radio>
33
+ </Gapped>
34
+ </Gapped>
35
+ </RadioGroup>
36
+ </div>
37
+ );
38
+
39
+ <div>
40
+ {simpleRadioGroup}
41
+ {complexRadioGroup}
42
+ </div>;
43
+ ```
@@ -189,9 +189,13 @@ export var ScrollBar = /*#__PURE__*/function (_React$Component) {
189
189
 
190
190
  if (!_this.inner || _this.inner[pos] === 0) {
191
191
  return 'begin';
192
- }
192
+ } // Zoom in Chrome causes problems
193
+ // https://github.com/skbkontur/retail-ui/pull/2705#issue-806286945
194
+
195
+
196
+ var maxScrollPos = _this.inner[size] - _this.inner[clientSize];
193
197
 
194
- if (_this.inner[pos] === _this.inner[size] - _this.inner[clientSize]) {
198
+ if (Math.abs(maxScrollPos - _this.inner[pos]) <= 1) {
195
199
  return 'end';
196
200
  }
197
201
 
@@ -1 +1 @@
1
- {"version":3,"sources":["ScrollBar.tsx"],"names":["React","ThemeContext","cx","defaultScrollbarState","scrollSizeParametersNames","styles","globalClasses","getScrollSizeParams","ScrollBar","inner","theme","node","state","renderMain","props","active","axis","customScrollPos","customScrollSize","classNames","className","scrollBar","scrollBarStyles","scrollBarInvert","invert","inlineStyles","pos","size","refScroll","handleScrollMouseDown","reflow","scrollSize","scrollPos","scrollActive","scrollState","getImmediateScrollState","onScrollStateChange","setState","setInnerElement","element","handleScrollWheel","event","addEventListener","passive","removeEventListener","offset","coord","initialCoord","target","window","document","initialScrollPos","mouseMove","mouseMoveEvent","ratio","delta","preventDefault","Object","prototype","hasOwnProperty","call","returnValue","mouseUp","scrolling","WheelEvent","shiftKey","offsetHeight","deltaY","clientSize","componentDidMount","componentDidUpdate","render","setHover","hover","scrollBarX","scrollbarX","scrollBarXHover","scrollBarY","scrollbarY","scrollBarYHover","Component"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { Nullable } from '../../typings/utility-types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { defaultScrollbarState, scrollSizeParametersNames } from './ScrollContainer.constants';\nimport { styles, globalClasses } from './ScrollContainer.styles';\nimport { getScrollSizeParams } from './ScrollContainer.helpers';\n\nexport type ScrollAxis = 'x' | 'y';\nexport type ScrollBarScrollState = 'begin' | 'middle' | 'end';\n\nexport interface ScrollBarState {\n active: boolean;\n hover: boolean;\n scrolling: boolean;\n size: number;\n pos: number;\n scrollState: ScrollBarScrollState;\n}\n\nexport interface ScrollBarProps {\n invert: boolean;\n axis: ScrollAxis;\n className?: string;\n onScrollStateChange?: (state: ScrollBarScrollState, axis: ScrollAxis) => void;\n}\n\nexport class ScrollBar extends React.Component<ScrollBarProps, ScrollBarState> {\n private inner: Nullable<HTMLElement>;\n private theme!: Theme;\n\n public node: Nullable<HTMLElement>;\n public state: ScrollBarState = {\n ...defaultScrollbarState,\n };\n\n public componentDidMount() {\n this.reflow();\n }\n\n public componentDidUpdate() {\n this.reflow();\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain = () => {\n const state = this.state;\n const props = this.props;\n\n if (!state.active) {\n return null;\n }\n\n const { customScrollPos, customScrollSize } = scrollSizeParametersNames[this.props.axis];\n\n const classNames = cx(props.className, styles.scrollBar(this.theme), this.scrollBarStyles, {\n [styles.scrollBarInvert(this.theme)]: props.invert,\n });\n\n const inlineStyles: React.CSSProperties = {\n [customScrollPos]: state.pos,\n [customScrollSize]: state.size,\n };\n\n return (\n <div\n ref={this.refScroll}\n style={inlineStyles}\n className={classNames}\n onMouseDown={this.handleScrollMouseDown}\n data-tid={`ScrollContainer__ScrollBar-${props.axis}`}\n />\n );\n };\n\n public reflow = () => {\n if (!this.inner) {\n return;\n }\n\n const props = this.props;\n const state = this.state;\n\n const { scrollSize, scrollPos, scrollActive } = getScrollSizeParams(this.inner, props.axis);\n\n if (!scrollActive && !state.active) {\n return;\n }\n\n if (state.active !== scrollActive || state.size !== scrollSize || state.pos !== scrollPos) {\n const scrollState = this.getImmediateScrollState();\n\n if (scrollState !== state.scrollState) {\n this.props.onScrollStateChange?.(scrollState, props.axis);\n }\n\n this.setState({\n ...this.state,\n active: scrollActive,\n size: scrollSize,\n pos: scrollPos,\n scrollState,\n });\n }\n };\n\n public setInnerElement = (inner: Nullable<HTMLElement>) => {\n this.inner = inner;\n this.reflow();\n };\n\n public setHover(hover: boolean) {\n if (this.state.active && this.state.hover !== hover) {\n this.setState({ ...this.state, hover });\n }\n }\n\n public get scrollBarState() {\n return this.state.scrollState;\n }\n\n private get scrollBarStyles() {\n const state = this.state;\n\n if (this.props.axis === 'x') {\n return cx(styles.scrollBarX(this.theme), globalClasses.scrollbarX, {\n [styles.scrollBarXHover(this.theme)]: state.hover || state.scrolling,\n });\n }\n\n return cx(styles.scrollBarY(this.theme), globalClasses.scrollbarY, {\n [styles.scrollBarYHover(this.theme)]: state.hover || state.scrolling,\n });\n }\n\n private refScroll = (element: HTMLElement | null) => {\n const handleScrollWheel = (event: Event) => this.handleScrollWheel(event, this.props.axis);\n\n if (!this.node && element) {\n element.addEventListener('wheel', handleScrollWheel, { passive: false });\n }\n if (this.node && !element) {\n this.node.removeEventListener('wheel', handleScrollWheel);\n }\n this.node = element;\n };\n\n private handleScrollMouseDown = (event: React.MouseEvent<HTMLDivElement>) => {\n if (!this.inner) {\n return;\n }\n\n const { offset, size, pos, coord } = scrollSizeParametersNames[this.props.axis];\n\n const initialCoord = event[coord];\n const target: Document = window.document;\n const initialScrollPos = this.inner[pos];\n const state = this.state;\n\n const mouseMove = (mouseMoveEvent: MouseEvent) => {\n if (!this.inner) {\n return;\n }\n\n const ratio = (this.inner[size] - this.inner[offset]) / (this.inner[offset] - state.size);\n const delta = (mouseMoveEvent[coord] - initialCoord) * ratio;\n\n this.inner[pos] = initialScrollPos + delta;\n\n if (mouseMoveEvent.preventDefault) {\n mouseMoveEvent.preventDefault();\n }\n\n if (Object.prototype.hasOwnProperty.call(mouseMoveEvent, 'returnValue')) {\n (\n mouseMoveEvent as MouseEvent & {\n returnValue: boolean;\n }\n ).returnValue = false;\n }\n };\n\n const mouseUp = () => {\n target.removeEventListener('mousemove', mouseMove);\n target.removeEventListener('mouseup', mouseUp);\n this.setState({ ...this.state, scrolling: false });\n };\n\n target.addEventListener('mousemove', mouseMove);\n target.addEventListener('mouseup', mouseUp);\n this.setState({ ...this.state, scrolling: true });\n\n event.preventDefault();\n };\n\n private handleScrollWheel = (event: Event, axis: ScrollAxis) => {\n if (!this.inner || !(event instanceof WheelEvent) || (axis === 'x' && !event.shiftKey)) {\n return;\n }\n\n const { offset, size, pos } = scrollSizeParametersNames[axis];\n\n const scrollSize = this.inner[size];\n const scrollPos = this.inner[pos];\n const offsetHeight = this.inner[offset];\n\n if (event.deltaY > 0 && scrollSize <= scrollPos + offsetHeight) {\n return;\n }\n if (event.deltaY < 0 && scrollPos <= 0) {\n return;\n }\n\n this.inner[pos] += event.deltaY;\n\n event.preventDefault();\n };\n\n private getImmediateScrollState = (): ScrollBarScrollState => {\n const { pos, size, clientSize } = scrollSizeParametersNames[this.props.axis];\n\n if (!this.inner || this.inner[pos] === 0) {\n return 'begin';\n }\n\n if (this.inner[pos] === this.inner[size] - this.inner[clientSize]) {\n return 'end';\n }\n\n return 'middle';\n };\n}\n"]}
1
+ {"version":3,"sources":["ScrollBar.tsx"],"names":["React","ThemeContext","cx","defaultScrollbarState","scrollSizeParametersNames","styles","globalClasses","getScrollSizeParams","ScrollBar","inner","theme","node","state","renderMain","props","active","axis","customScrollPos","customScrollSize","classNames","className","scrollBar","scrollBarStyles","scrollBarInvert","invert","inlineStyles","pos","size","refScroll","handleScrollMouseDown","reflow","scrollSize","scrollPos","scrollActive","scrollState","getImmediateScrollState","onScrollStateChange","setState","setInnerElement","element","handleScrollWheel","event","addEventListener","passive","removeEventListener","offset","coord","initialCoord","target","window","document","initialScrollPos","mouseMove","mouseMoveEvent","ratio","delta","preventDefault","Object","prototype","hasOwnProperty","call","returnValue","mouseUp","scrolling","WheelEvent","shiftKey","offsetHeight","deltaY","clientSize","maxScrollPos","Math","abs","componentDidMount","componentDidUpdate","render","setHover","hover","scrollBarX","scrollbarX","scrollBarXHover","scrollBarY","scrollbarY","scrollBarYHover","Component"],"mappings":"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","sourcesContent":["import React from 'react';\n\nimport { Nullable } from '../../typings/utility-types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport { defaultScrollbarState, scrollSizeParametersNames } from './ScrollContainer.constants';\nimport { styles, globalClasses } from './ScrollContainer.styles';\nimport { getScrollSizeParams } from './ScrollContainer.helpers';\n\nexport type ScrollAxis = 'x' | 'y';\nexport type ScrollBarScrollState = 'begin' | 'middle' | 'end';\n\nexport interface ScrollBarState {\n active: boolean;\n hover: boolean;\n scrolling: boolean;\n size: number;\n pos: number;\n scrollState: ScrollBarScrollState;\n}\n\nexport interface ScrollBarProps {\n invert: boolean;\n axis: ScrollAxis;\n className?: string;\n onScrollStateChange?: (state: ScrollBarScrollState, axis: ScrollAxis) => void;\n}\n\nexport class ScrollBar extends React.Component<ScrollBarProps, ScrollBarState> {\n private inner: Nullable<HTMLElement>;\n private theme!: Theme;\n\n public node: Nullable<HTMLElement>;\n public state: ScrollBarState = {\n ...defaultScrollbarState,\n };\n\n public componentDidMount() {\n this.reflow();\n }\n\n public componentDidUpdate() {\n this.reflow();\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain = () => {\n const state = this.state;\n const props = this.props;\n\n if (!state.active) {\n return null;\n }\n\n const { customScrollPos, customScrollSize } = scrollSizeParametersNames[this.props.axis];\n\n const classNames = cx(props.className, styles.scrollBar(this.theme), this.scrollBarStyles, {\n [styles.scrollBarInvert(this.theme)]: props.invert,\n });\n\n const inlineStyles: React.CSSProperties = {\n [customScrollPos]: state.pos,\n [customScrollSize]: state.size,\n };\n\n return (\n <div\n ref={this.refScroll}\n style={inlineStyles}\n className={classNames}\n onMouseDown={this.handleScrollMouseDown}\n data-tid={`ScrollContainer__ScrollBar-${props.axis}`}\n />\n );\n };\n\n public reflow = () => {\n if (!this.inner) {\n return;\n }\n\n const props = this.props;\n const state = this.state;\n\n const { scrollSize, scrollPos, scrollActive } = getScrollSizeParams(this.inner, props.axis);\n\n if (!scrollActive && !state.active) {\n return;\n }\n\n if (state.active !== scrollActive || state.size !== scrollSize || state.pos !== scrollPos) {\n const scrollState = this.getImmediateScrollState();\n\n if (scrollState !== state.scrollState) {\n this.props.onScrollStateChange?.(scrollState, props.axis);\n }\n\n this.setState({\n ...this.state,\n active: scrollActive,\n size: scrollSize,\n pos: scrollPos,\n scrollState,\n });\n }\n };\n\n public setInnerElement = (inner: Nullable<HTMLElement>) => {\n this.inner = inner;\n this.reflow();\n };\n\n public setHover(hover: boolean) {\n if (this.state.active && this.state.hover !== hover) {\n this.setState({ ...this.state, hover });\n }\n }\n\n public get scrollBarState() {\n return this.state.scrollState;\n }\n\n private get scrollBarStyles() {\n const state = this.state;\n\n if (this.props.axis === 'x') {\n return cx(styles.scrollBarX(this.theme), globalClasses.scrollbarX, {\n [styles.scrollBarXHover(this.theme)]: state.hover || state.scrolling,\n });\n }\n\n return cx(styles.scrollBarY(this.theme), globalClasses.scrollbarY, {\n [styles.scrollBarYHover(this.theme)]: state.hover || state.scrolling,\n });\n }\n\n private refScroll = (element: HTMLElement | null) => {\n const handleScrollWheel = (event: Event) => this.handleScrollWheel(event, this.props.axis);\n\n if (!this.node && element) {\n element.addEventListener('wheel', handleScrollWheel, { passive: false });\n }\n if (this.node && !element) {\n this.node.removeEventListener('wheel', handleScrollWheel);\n }\n this.node = element;\n };\n\n private handleScrollMouseDown = (event: React.MouseEvent<HTMLDivElement>) => {\n if (!this.inner) {\n return;\n }\n\n const { offset, size, pos, coord } = scrollSizeParametersNames[this.props.axis];\n\n const initialCoord = event[coord];\n const target: Document = window.document;\n const initialScrollPos = this.inner[pos];\n const state = this.state;\n\n const mouseMove = (mouseMoveEvent: MouseEvent) => {\n if (!this.inner) {\n return;\n }\n\n const ratio = (this.inner[size] - this.inner[offset]) / (this.inner[offset] - state.size);\n const delta = (mouseMoveEvent[coord] - initialCoord) * ratio;\n\n this.inner[pos] = initialScrollPos + delta;\n\n if (mouseMoveEvent.preventDefault) {\n mouseMoveEvent.preventDefault();\n }\n\n if (Object.prototype.hasOwnProperty.call(mouseMoveEvent, 'returnValue')) {\n (\n mouseMoveEvent as MouseEvent & {\n returnValue: boolean;\n }\n ).returnValue = false;\n }\n };\n\n const mouseUp = () => {\n target.removeEventListener('mousemove', mouseMove);\n target.removeEventListener('mouseup', mouseUp);\n this.setState({ ...this.state, scrolling: false });\n };\n\n target.addEventListener('mousemove', mouseMove);\n target.addEventListener('mouseup', mouseUp);\n this.setState({ ...this.state, scrolling: true });\n\n event.preventDefault();\n };\n\n private handleScrollWheel = (event: Event, axis: ScrollAxis) => {\n if (!this.inner || !(event instanceof WheelEvent) || (axis === 'x' && !event.shiftKey)) {\n return;\n }\n\n const { offset, size, pos } = scrollSizeParametersNames[axis];\n\n const scrollSize = this.inner[size];\n const scrollPos = this.inner[pos];\n const offsetHeight = this.inner[offset];\n\n if (event.deltaY > 0 && scrollSize <= scrollPos + offsetHeight) {\n return;\n }\n if (event.deltaY < 0 && scrollPos <= 0) {\n return;\n }\n\n this.inner[pos] += event.deltaY;\n\n event.preventDefault();\n };\n\n private getImmediateScrollState = (): ScrollBarScrollState => {\n const { pos, size, clientSize } = scrollSizeParametersNames[this.props.axis];\n\n if (!this.inner || this.inner[pos] === 0) {\n return 'begin';\n }\n // 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"]}
@@ -8,6 +8,7 @@ import PropTypes from 'prop-types';
8
8
  import * as LayoutEvents from "../../../lib/LayoutEvents";
9
9
  import { CommonWrapper } from "../../../internal/CommonWrapper";
10
10
  import { cx } from "../../../lib/theming/Emotion";
11
+ import { isIE11 } from "../../../lib/client";
11
12
  import { rootNode } from "../../../lib/rootNode";
12
13
  import { styles, globalClasses } from "../ScrollContainer.styles";
13
14
  import { scrollSizeParametersNames } from "../ScrollContainer.constants";
@@ -50,7 +51,7 @@ export var ScrollContainer = rootNode(_class = (_temp = _class2 = /*#__PURE__*/f
50
51
  }, scrollbarY, scrollbarX, /*#__PURE__*/React.createElement("div", {
51
52
  style: innerStyle,
52
53
  ref: _this.refInner,
53
- className: cx(styles.inner(), globalClasses.inner),
54
+ className: cx(styles.inner(), globalClasses.inner, isIE11 && styles.innerIE11()),
54
55
  "data-tid": "ScrollContainer__inner",
55
56
  onScroll: _this.handleNativeScroll
56
57
  }, props.children)));
@@ -1 +1 @@
1
- {"version":3,"sources":["ScrollContainer.tsx"],"names":["React","PropTypes","LayoutEvents","CommonWrapper","cx","rootNode","styles","globalClasses","scrollSizeParametersNames","getScrollYOffset","convertScrollbarXScrollState","convertScrollbarYScrollState","ScrollBar","ScrollContainer","scrollX","scrollY","inner","setRootNode","render","props","innerStyle","scrollBehavior","scrollBehaviour","maxHeight","maxWidth","scrollbarY","renderScrollbar","scrollbarX","root","handleMouseMove","handleMouseLeave","refInner","handleNativeScroll","children","axis","refScrollBar","refScrollBarX","refScrollBarY","invert","handleScrollStateChange","scrollState","scrollXState","onScrollStateChangeX","scrollYState","onScrollStateChange","onScrollStateChangeY","scrollbar","element","preventWindowScroll","addEventListener","handleInnerScrollWheel","passive","removeEventListener","event","reflow","onScroll","preventDefault","emit","WheelEvent","shiftKey","hasScrollBar","pos","size","offset","deltaY","right","currentTarget","getBoundingClientRect","pageX","bottom","pageY","setHover","componentDidMount","setInnerElement","componentDidUpdate","prevProps","scrollTo","scrollLeft","offsetLeft","scrollTop","scrollToTop","scrollToBottom","scrollHeight","offsetHeight","scrollToLeft","scrollToRight","scrollWidth","offsetWidth","Component","__KONTUR_REACT_UI__","propTypes","bool","oneOfType","string","number","oneOf","func","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { Nullable } from '../../typings/utility-types';\nimport { cx } from '../../lib/theming/Emotion';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\n\nimport { styles, globalClasses } from './ScrollContainer.styles';\nimport { scrollSizeParametersNames } from './ScrollContainer.constants';\nimport {\n getScrollYOffset,\n convertScrollbarXScrollState,\n convertScrollbarYScrollState,\n} from './ScrollContainer.helpers';\nimport { ScrollAxis, ScrollBar, ScrollBarScrollState } from './ScrollBar';\n\nexport type ScrollContainerScrollStateX = 'left' | 'scroll' | 'right';\nexport type ScrollContainerScrollStateY = 'top' | 'scroll' | 'bottom';\nexport type ScrollContainerScrollState = ScrollContainerScrollStateY; // deprecated\nexport type ScrollBehaviour = 'auto' | 'smooth';\n\nexport interface ScrollContainerProps extends CommonProps {\n /**\n * Инвертировать цвет скроллбара\n * @default false\n */\n invert: boolean;\n maxHeight?: React.CSSProperties['maxHeight'];\n maxWidth?: React.CSSProperties['maxWidth'];\n /**\n * @default false\n */\n preventWindowScroll: boolean;\n /**\n * Поведение скролла (https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-behavior)\n * @default 'auto'\n */\n scrollBehaviour?: ScrollBehaviour;\n onScrollStateChangeX?: (scrollState: ScrollContainerScrollStateX) => void;\n onScrollStateChangeY?: (scrollState: ScrollContainerScrollStateY) => void;\n onScrollStateChange?: (scrollYState: ScrollContainerScrollState) => void; // deprecated\n onScroll?: (e: React.UIEvent<HTMLDivElement>) => void;\n}\n\n@rootNode\nexport class ScrollContainer extends React.Component<ScrollContainerProps> {\n public static __KONTUR_REACT_UI__ = 'ScrollContainer';\n\n public static propTypes = {\n invert: PropTypes.bool,\n maxWidth: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n maxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n scrollBehaviour: PropTypes.oneOf(['auto', 'smooth']),\n preventWindowScroll: PropTypes.bool,\n onScrollStateChange: PropTypes.func,\n };\n\n public static defaultProps = {\n invert: false,\n scrollBehaviour: 'auto',\n preventWindowScroll: false,\n };\n\n private scrollX: Nullable<ScrollBar>;\n private scrollY: Nullable<ScrollBar>;\n private inner: Nullable<HTMLElement>;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n this.scrollX?.setInnerElement(this.inner);\n this.scrollY?.setInnerElement(this.inner);\n }\n\n public componentDidUpdate(prevProps: ScrollContainerProps) {\n if (this.inner) {\n if (prevProps.preventWindowScroll && !this.props.preventWindowScroll) {\n this.inner.removeEventListener('wheel', this.handleInnerScrollWheel);\n }\n if (!prevProps.preventWindowScroll && this.props.preventWindowScroll) {\n this.inner.addEventListener('wheel', this.handleInnerScrollWheel, { passive: false });\n }\n }\n }\n\n public render = () => {\n const props = this.props;\n\n const innerStyle: React.CSSProperties = {\n scrollBehavior: props.scrollBehaviour,\n maxHeight: props.maxHeight,\n maxWidth: props.maxWidth,\n };\n\n const scrollbarY = this.renderScrollbar('y');\n const scrollbarX = this.renderScrollbar('x');\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div className={styles.root()} onMouseMove={this.handleMouseMove} onMouseLeave={this.handleMouseLeave}>\n {scrollbarY}\n {scrollbarX}\n <div\n style={innerStyle}\n ref={this.refInner}\n className={cx(styles.inner(), globalClasses.inner)}\n data-tid=\"ScrollContainer__inner\"\n onScroll={this.handleNativeScroll}\n >\n {props.children}\n </div>\n </div>\n </CommonWrapper>\n );\n };\n\n /**\n * @public\n * @param {HTMLElement} element\n */\n public scrollTo(element: Nullable<HTMLElement>) {\n if (!element || !this.inner) {\n return;\n }\n\n this.inner.scrollLeft = element.offsetLeft;\n this.inner.scrollTop = getScrollYOffset(element, this.inner);\n }\n\n /**\n * @public\n */\n public scrollToTop() {\n if (!this.inner) {\n return;\n }\n this.inner.scrollTop = 0;\n }\n\n /**\n * @public\n */\n public scrollToBottom() {\n if (!this.inner) {\n return;\n }\n this.inner.scrollTop = this.inner.scrollHeight - this.inner.offsetHeight;\n }\n\n /**\n * @public\n */\n public scrollToLeft() {\n if (!this.inner) {\n return;\n }\n this.inner.scrollLeft = 0;\n }\n\n /**\n * @public\n */\n public scrollToRight() {\n if (!this.inner) {\n return;\n }\n\n this.inner.scrollLeft = this.inner.scrollWidth - this.inner.offsetWidth;\n }\n\n private hasScrollBar(axis: ScrollAxis) {\n if (!this.inner) {\n return false;\n }\n\n return axis === 'x'\n ? this.inner.offsetWidth < this.inner.scrollWidth\n : this.inner.offsetHeight < this.inner.scrollHeight;\n }\n\n private renderScrollbar = (axis: ScrollAxis) => {\n const refScrollBar = axis === 'x' ? this.refScrollBarX : this.refScrollBarY;\n\n return (\n <ScrollBar\n axis={axis}\n ref={refScrollBar}\n invert={this.props.invert}\n onScrollStateChange={this.handleScrollStateChange}\n />\n );\n };\n\n private handleScrollStateChange = (scrollState: ScrollBarScrollState, axis: ScrollAxis) => {\n if (!this.scrollY || !this.scrollX) {\n return;\n }\n\n if (axis === 'x') {\n const scrollXState = convertScrollbarXScrollState(scrollState);\n\n this.props.onScrollStateChangeX?.(scrollXState);\n return;\n }\n\n const scrollYState = convertScrollbarYScrollState(scrollState);\n\n this.props.onScrollStateChange?.(scrollYState);\n this.props.onScrollStateChangeY?.(scrollYState);\n };\n\n private refScrollBarY = (scrollbar: Nullable<ScrollBar>) => {\n this.scrollY = scrollbar;\n };\n\n private refScrollBarX = (scrollbar: Nullable<ScrollBar>) => {\n this.scrollX = scrollbar;\n };\n\n private refInner = (element: HTMLElement | null) => {\n if (!this.inner && element && this.props.preventWindowScroll) {\n element.addEventListener('wheel', this.handleInnerScrollWheel, { passive: false });\n }\n if (this.inner && !element) {\n this.inner.removeEventListener('wheel', this.handleInnerScrollWheel);\n }\n this.inner = element;\n };\n\n private handleNativeScroll = (event: React.UIEvent<HTMLDivElement>) => {\n this.scrollX?.reflow();\n this.scrollY?.reflow();\n\n this.props.onScroll?.(event);\n if (this.props.preventWindowScroll) {\n event.preventDefault();\n return;\n }\n LayoutEvents.emit();\n };\n\n private handleInnerScrollWheel = (event: Event) => {\n if (!this.inner || !(event instanceof WheelEvent)) {\n return;\n }\n\n const axis: ScrollAxis = event.shiftKey ? 'x' : 'y';\n\n if (this.hasScrollBar(axis)) {\n const { pos, size, offset } = scrollSizeParametersNames[axis];\n\n if (event.deltaY > 0 && this.inner[size] <= this.inner[pos] + this.inner[offset]) {\n event.preventDefault();\n return false;\n }\n if (event.deltaY < 0 && this.inner[pos] <= 0) {\n event.preventDefault();\n return false;\n }\n }\n };\n\n private handleMouseMove = (event: React.MouseEvent<HTMLDivElement>) => {\n const right = event.currentTarget.getBoundingClientRect().right - event.pageX;\n const bottom = event.currentTarget.getBoundingClientRect().bottom - event.pageY;\n\n this.scrollY?.setHover(right <= 12);\n this.scrollX?.setHover(right >= 12 && bottom <= 12);\n };\n\n private handleMouseLeave = () => {\n this.scrollY?.setHover(false);\n this.scrollX?.setHover(false);\n };\n}\n"]}
1
+ {"version":3,"sources":["ScrollContainer.tsx"],"names":["React","PropTypes","LayoutEvents","CommonWrapper","cx","isIE11","rootNode","styles","globalClasses","scrollSizeParametersNames","getScrollYOffset","convertScrollbarXScrollState","convertScrollbarYScrollState","ScrollBar","ScrollContainer","scrollX","scrollY","inner","setRootNode","render","props","innerStyle","scrollBehavior","scrollBehaviour","maxHeight","maxWidth","scrollbarY","renderScrollbar","scrollbarX","root","handleMouseMove","handleMouseLeave","refInner","innerIE11","handleNativeScroll","children","axis","refScrollBar","refScrollBarX","refScrollBarY","invert","handleScrollStateChange","scrollState","scrollXState","onScrollStateChangeX","scrollYState","onScrollStateChange","onScrollStateChangeY","scrollbar","element","preventWindowScroll","addEventListener","handleInnerScrollWheel","passive","removeEventListener","event","reflow","onScroll","preventDefault","emit","WheelEvent","shiftKey","hasScrollBar","pos","size","offset","deltaY","right","currentTarget","getBoundingClientRect","pageX","bottom","pageY","setHover","componentDidMount","setInnerElement","componentDidUpdate","prevProps","scrollTo","scrollLeft","offsetLeft","scrollTop","scrollToTop","scrollToBottom","scrollHeight","offsetHeight","scrollToLeft","scrollToRight","scrollWidth","offsetWidth","Component","__KONTUR_REACT_UI__","propTypes","bool","oneOfType","string","number","oneOf","func","defaultProps"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { Nullable } from '../../typings/utility-types';\nimport { cx } from '../../lib/theming/Emotion';\nimport { isIE11 } from '../../lib/client';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\n\nimport { styles, globalClasses } from './ScrollContainer.styles';\nimport { scrollSizeParametersNames } from './ScrollContainer.constants';\nimport {\n getScrollYOffset,\n convertScrollbarXScrollState,\n convertScrollbarYScrollState,\n} from './ScrollContainer.helpers';\nimport { ScrollAxis, ScrollBar, ScrollBarScrollState } from './ScrollBar';\n\nexport type ScrollContainerScrollStateX = 'left' | 'scroll' | 'right';\nexport type ScrollContainerScrollStateY = 'top' | 'scroll' | 'bottom';\nexport type ScrollContainerScrollState = ScrollContainerScrollStateY; // deprecated\nexport type ScrollBehaviour = 'auto' | 'smooth';\n\nexport interface ScrollContainerProps extends CommonProps {\n /**\n * Инвертировать цвет скроллбара\n * @default false\n */\n invert: boolean;\n maxHeight?: React.CSSProperties['maxHeight'];\n maxWidth?: React.CSSProperties['maxWidth'];\n /**\n * @default false\n */\n preventWindowScroll: boolean;\n /**\n * Поведение скролла (https://developer.mozilla.org/en-US/docs/Web/CSS/scroll-behavior)\n * @default 'auto'\n */\n scrollBehaviour?: ScrollBehaviour;\n onScrollStateChangeX?: (scrollState: ScrollContainerScrollStateX) => void;\n onScrollStateChangeY?: (scrollState: ScrollContainerScrollStateY) => void;\n onScrollStateChange?: (scrollYState: ScrollContainerScrollState) => void; // deprecated\n onScroll?: (e: React.UIEvent<HTMLDivElement>) => void;\n}\n\n@rootNode\nexport class ScrollContainer extends React.Component<ScrollContainerProps> {\n public static __KONTUR_REACT_UI__ = 'ScrollContainer';\n\n public static propTypes = {\n invert: PropTypes.bool,\n maxWidth: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n maxHeight: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n scrollBehaviour: PropTypes.oneOf(['auto', 'smooth']),\n preventWindowScroll: PropTypes.bool,\n onScrollStateChange: PropTypes.func,\n };\n\n public static defaultProps = {\n invert: false,\n scrollBehaviour: 'auto',\n preventWindowScroll: false,\n };\n\n private scrollX: Nullable<ScrollBar>;\n private scrollY: Nullable<ScrollBar>;\n private inner: Nullable<HTMLElement>;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n this.scrollX?.setInnerElement(this.inner);\n this.scrollY?.setInnerElement(this.inner);\n }\n\n public componentDidUpdate(prevProps: ScrollContainerProps) {\n if (this.inner) {\n if (prevProps.preventWindowScroll && !this.props.preventWindowScroll) {\n this.inner.removeEventListener('wheel', this.handleInnerScrollWheel);\n }\n if (!prevProps.preventWindowScroll && this.props.preventWindowScroll) {\n this.inner.addEventListener('wheel', this.handleInnerScrollWheel, { passive: false });\n }\n }\n }\n\n public render = () => {\n const props = this.props;\n\n const innerStyle: React.CSSProperties = {\n scrollBehavior: props.scrollBehaviour,\n maxHeight: props.maxHeight,\n maxWidth: props.maxWidth,\n };\n\n const scrollbarY = this.renderScrollbar('y');\n const scrollbarX = this.renderScrollbar('x');\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div className={styles.root()} onMouseMove={this.handleMouseMove} onMouseLeave={this.handleMouseLeave}>\n {scrollbarY}\n {scrollbarX}\n <div\n style={innerStyle}\n ref={this.refInner}\n className={cx(styles.inner(), globalClasses.inner, isIE11 && styles.innerIE11())}\n data-tid=\"ScrollContainer__inner\"\n onScroll={this.handleNativeScroll}\n >\n {props.children}\n </div>\n </div>\n </CommonWrapper>\n );\n };\n\n /**\n * @public\n * @param {HTMLElement} element\n */\n public scrollTo(element: Nullable<HTMLElement>) {\n if (!element || !this.inner) {\n return;\n }\n\n this.inner.scrollLeft = element.offsetLeft;\n this.inner.scrollTop = getScrollYOffset(element, this.inner);\n }\n\n /**\n * @public\n */\n public scrollToTop() {\n if (!this.inner) {\n return;\n }\n this.inner.scrollTop = 0;\n }\n\n /**\n * @public\n */\n public scrollToBottom() {\n if (!this.inner) {\n return;\n }\n this.inner.scrollTop = this.inner.scrollHeight - this.inner.offsetHeight;\n }\n\n /**\n * @public\n */\n public scrollToLeft() {\n if (!this.inner) {\n return;\n }\n this.inner.scrollLeft = 0;\n }\n\n /**\n * @public\n */\n public scrollToRight() {\n if (!this.inner) {\n return;\n }\n\n this.inner.scrollLeft = this.inner.scrollWidth - this.inner.offsetWidth;\n }\n\n private hasScrollBar(axis: ScrollAxis) {\n if (!this.inner) {\n return false;\n }\n\n return axis === 'x'\n ? this.inner.offsetWidth < this.inner.scrollWidth\n : this.inner.offsetHeight < this.inner.scrollHeight;\n }\n\n private renderScrollbar = (axis: ScrollAxis) => {\n const refScrollBar = axis === 'x' ? this.refScrollBarX : this.refScrollBarY;\n\n return (\n <ScrollBar\n axis={axis}\n ref={refScrollBar}\n invert={this.props.invert}\n onScrollStateChange={this.handleScrollStateChange}\n />\n );\n };\n\n private handleScrollStateChange = (scrollState: ScrollBarScrollState, axis: ScrollAxis) => {\n if (!this.scrollY || !this.scrollX) {\n return;\n }\n\n if (axis === 'x') {\n const scrollXState = convertScrollbarXScrollState(scrollState);\n\n this.props.onScrollStateChangeX?.(scrollXState);\n return;\n }\n\n const scrollYState = convertScrollbarYScrollState(scrollState);\n\n this.props.onScrollStateChange?.(scrollYState);\n this.props.onScrollStateChangeY?.(scrollYState);\n };\n\n private refScrollBarY = (scrollbar: Nullable<ScrollBar>) => {\n this.scrollY = scrollbar;\n };\n\n private refScrollBarX = (scrollbar: Nullable<ScrollBar>) => {\n this.scrollX = scrollbar;\n };\n\n private refInner = (element: HTMLElement | null) => {\n if (!this.inner && element && this.props.preventWindowScroll) {\n element.addEventListener('wheel', this.handleInnerScrollWheel, { passive: false });\n }\n if (this.inner && !element) {\n this.inner.removeEventListener('wheel', this.handleInnerScrollWheel);\n }\n this.inner = element;\n };\n\n private handleNativeScroll = (event: React.UIEvent<HTMLDivElement>) => {\n this.scrollX?.reflow();\n this.scrollY?.reflow();\n\n this.props.onScroll?.(event);\n if (this.props.preventWindowScroll) {\n event.preventDefault();\n return;\n }\n LayoutEvents.emit();\n };\n\n private handleInnerScrollWheel = (event: Event) => {\n if (!this.inner || !(event instanceof WheelEvent)) {\n return;\n }\n\n const axis: ScrollAxis = event.shiftKey ? 'x' : 'y';\n\n if (this.hasScrollBar(axis)) {\n const { pos, size, offset } = scrollSizeParametersNames[axis];\n\n if (event.deltaY > 0 && this.inner[size] <= this.inner[pos] + this.inner[offset]) {\n event.preventDefault();\n return false;\n }\n if (event.deltaY < 0 && this.inner[pos] <= 0) {\n event.preventDefault();\n return false;\n }\n }\n };\n\n private handleMouseMove = (event: React.MouseEvent<HTMLDivElement>) => {\n const right = event.currentTarget.getBoundingClientRect().right - event.pageX;\n const bottom = event.currentTarget.getBoundingClientRect().bottom - event.pageY;\n\n this.scrollY?.setHover(right <= 12);\n this.scrollX?.setHover(right >= 12 && bottom <= 12);\n };\n\n private handleMouseLeave = () => {\n this.scrollY?.setHover(false);\n this.scrollX?.setHover(false);\n };\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import _taggedTemplateLiteralLoose from "@babel/runtime/helpers/esm/taggedTemplateLiteralLoose";
2
2
 
3
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8;
3
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9;
4
4
 
5
5
  import { css, memoizeStyle, prefix } from "../../../lib/theming/Emotion";
6
6
  export var globalClasses = prefix('scroll-container')({
@@ -13,24 +13,27 @@ export var styles = memoizeStyle({
13
13
  return css(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n height: 100%;\n overflow: hidden;\n position: relative;\n "])));
14
14
  },
15
15
  inner: function inner() {
16
- return css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n position: relative;\n overflow: scroll;\n max-height: 100%;\n max-width: 100%;\n\n /* IE sometimes enabled scroll: http://codepen.io/anon/pen/RRrLNX */\n margin-bottom: -1px;\n padding-bottom: 1px;\n margin-right: -1px;\n padding-right: 1px;\n\n /* Hide scrobars without losing functionality */\n scrollbar-width: none;\n -ms-overflow-style: none;\n &::-webkit-scrollbar {\n width: 0;\n height: 0;\n }\n "])));
16
+ return css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n position: relative;\n overflow: scroll;\n max-height: 100%;\n max-width: 100%;\n\n /* Hide scrobars without losing functionality */\n scrollbar-width: none;\n -ms-overflow-style: none;\n &::-webkit-scrollbar {\n width: 0;\n height: 0;\n }\n "])));
17
+ },
18
+ innerIE11: function innerIE11() {
19
+ return css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteralLoose(["\n /* IE sometimes enabled scroll: http://codepen.io/anon/pen/RRrLNX */\n margin-bottom: -1px;\n padding-bottom: 1px;\n margin-right: -1px;\n padding-right: 1px;\n "])));
17
20
  },
18
21
  scrollBar: function scrollBar(t) {
19
- return css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteralLoose(["\n position: absolute;\n z-index: 200;\n\n &::after {\n content: '';\n display: block;\n border-radius: 5px;\n position: absolute;\n background: ", ";\n }\n "])), t.scrollContainerScrollBarColor);
22
+ return css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteralLoose(["\n position: absolute;\n z-index: 200;\n\n &::after {\n content: '';\n display: block;\n border-radius: 5px;\n position: absolute;\n background: ", ";\n }\n "])), t.scrollContainerScrollBarColor);
20
23
  },
21
24
  scrollBarInvert: function scrollBarInvert(t) {
22
- return css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteralLoose(["\n &::after {\n background: #ccc;\n background: ", ";\n }\n "])), t.scrollContainerScrollBarInvertColor);
25
+ return css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteralLoose(["\n &::after {\n background: #ccc;\n background: ", ";\n }\n "])), t.scrollContainerScrollBarInvertColor);
23
26
  },
24
27
  scrollBarY: function scrollBarY(t) {
25
- return css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteralLoose(["\n right: 2px;\n transition: width 0.2s;\n width: ", ";\n\n &::after {\n bottom: 1px;\n left: 0;\n right: 0;\n top: 1px;\n }\n "])), t.scrollContainerScrollBarSize);
28
+ return css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteralLoose(["\n right: 2px;\n transition: width 0.2s;\n width: ", ";\n\n &::after {\n bottom: 1px;\n left: 0;\n right: 0;\n top: 1px;\n }\n "])), t.scrollContainerScrollBarSize);
26
29
  },
27
30
  scrollBarYHover: function scrollBarYHover(t) {
28
- return css(_templateObject6 || (_templateObject6 = _taggedTemplateLiteralLoose(["\n width: ", ";\n "])), t.scrollContainerScrollBarHoverSize);
31
+ return css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteralLoose(["\n width: ", ";\n "])), t.scrollContainerScrollBarHoverSize);
29
32
  },
30
33
  scrollBarX: function scrollBarX(t) {
31
- return css(_templateObject7 || (_templateObject7 = _taggedTemplateLiteralLoose(["\n bottom: 1px;\n transition: height 0.2s;\n height: ", ";\n\n &::after {\n bottom: 0px;\n left: 1px;\n right: 1px;\n top: 0;\n }\n\n .", " ~ & {\n &::after {\n right: calc(", " + 4px) !important;\n }\n }\n\n & ~ .", " {\n &::after {\n content: ' ';\n width: 100%;\n display: block;\n height: calc(", " + 2px);\n }\n }\n "])), t.scrollContainerScrollBarSize, globalClasses.scrollbarY, t.scrollContainerScrollBarHoverSize, globalClasses.inner, t.scrollContainerScrollBarHoverSize);
34
+ return css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteralLoose(["\n bottom: 1px;\n transition: height 0.2s;\n height: ", ";\n\n &::after {\n bottom: 0px;\n left: 1px;\n right: 1px;\n top: 0;\n }\n\n .", " ~ & {\n &::after {\n right: calc(", " + 4px) !important;\n }\n }\n\n & ~ .", " {\n &::after {\n content: ' ';\n width: 100%;\n display: block;\n height: calc(", " + 2px);\n }\n }\n "])), t.scrollContainerScrollBarSize, globalClasses.scrollbarY, t.scrollContainerScrollBarHoverSize, globalClasses.inner, t.scrollContainerScrollBarHoverSize);
32
35
  },
33
36
  scrollBarXHover: function scrollBarXHover(t) {
34
- return css(_templateObject8 || (_templateObject8 = _taggedTemplateLiteralLoose(["\n height: ", ";\n "])), t.scrollContainerScrollBarHoverSize);
37
+ return css(_templateObject9 || (_templateObject9 = _taggedTemplateLiteralLoose(["\n height: ", ";\n "])), t.scrollContainerScrollBarHoverSize);
35
38
  }
36
39
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["ScrollContainer.styles.ts"],"names":["css","memoizeStyle","prefix","globalClasses","scrollbarX","scrollbarY","inner","styles","root","scrollBar","t","scrollContainerScrollBarColor","scrollBarInvert","scrollContainerScrollBarInvertColor","scrollBarY","scrollContainerScrollBarSize","scrollBarYHover","scrollContainerScrollBarHoverSize","scrollBarX","scrollBarXHover"],"mappings":"kPAAA,SAASA,GAAT,EAAcC,YAAd,EAA4BC,MAA5B,QAA0C,2BAA1C;;;AAGA,OAAO,IAAMC,aAAa,GAAGD,MAAM,CAAC,kBAAD,CAAN,CAA2B;AACtDE,EAAAA,UAAU,EAAE,aAD0C;AAEtDC,EAAAA,UAAU,EAAE,aAF0C;AAGtDC,EAAAA,KAAK,EAAE,OAH+C,EAA3B,CAAtB;;;AAMP,OAAO,IAAMC,MAAM,GAAGN,YAAY,CAAC;AACjCO,EAAAA,IADiC,kBAC1B;AACL,WAAOR,GAAP;;;;;AAKD,GAPgC;;AASjCM,EAAAA,KATiC,mBASzB;AACN,WAAON,GAAP;;;;;;;;;;;;;;;;;;;;AAoBD,GA9BgC;;AAgCjCS,EAAAA,SAhCiC,qBAgCvBC,CAhCuB,EAgCb;AAClB,WAAOV,GAAP;;;;;;;;;AASkBU,IAAAA,CAAC,CAACC,6BATpB;;;AAYD,GA7CgC;;AA+CjCC,EAAAA,eA/CiC,2BA+CjBF,CA/CiB,EA+CP;AACxB,WAAOV,GAAP;;;AAGkBU,IAAAA,CAAC,CAACG,mCAHpB;;;AAMD,GAtDgC;;AAwDjCC,EAAAA,UAxDiC,sBAwDtBJ,CAxDsB,EAwDZ;AACnB,WAAOV,GAAP;;;AAGWU,IAAAA,CAAC,CAACK,4BAHb;;;;;;;;;AAYD,GArEgC;;AAuEjCC,EAAAA,eAvEiC,2BAuEjBN,CAvEiB,EAuEP;AACxB,WAAOV,GAAP;AACWU,IAAAA,CAAC,CAACO,iCADb;;AAGD,GA3EgC;;AA6EjCC,EAAAA,UA7EiC,sBA6EtBR,CA7EsB,EA6EZ;AACnB,WAAOV,GAAP;;;AAGYU,IAAAA,CAAC,CAACK,4BAHd;;;;;;;;;AAYKZ,IAAAA,aAAa,CAACE,UAZnB;;AAcoBK,IAAAA,CAAC,CAACO,iCAdtB;;;;AAkBSd,IAAAA,aAAa,CAACG,KAlBvB;;;;;AAuBqBI,IAAAA,CAAC,CAACO,iCAvBvB;;;;AA2BD,GAzGgC;;AA2GjCE,EAAAA,eA3GiC,2BA2GjBT,CA3GiB,EA2GP;AACxB,WAAOV,GAAP;AACYU,IAAAA,CAAC,CAACO,iCADd;;AAGD,GA/GgC,EAAD,CAA3B","sourcesContent":["import { css, memoizeStyle, prefix } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const globalClasses = prefix('scroll-container')({\n scrollbarX: 'scrollbar-x',\n scrollbarY: 'scrollbar-y',\n inner: 'inner',\n});\n\nexport const styles = memoizeStyle({\n root() {\n return css`\n height: 100%;\n overflow: hidden;\n position: relative;\n `;\n },\n\n inner() {\n return css`\n position: relative;\n overflow: scroll;\n max-height: 100%;\n max-width: 100%;\n\n /* IE sometimes enabled scroll: http://codepen.io/anon/pen/RRrLNX */\n margin-bottom: -1px;\n padding-bottom: 1px;\n margin-right: -1px;\n padding-right: 1px;\n\n /* Hide scrobars without losing functionality */\n scrollbar-width: none;\n -ms-overflow-style: none;\n &::-webkit-scrollbar {\n width: 0;\n height: 0;\n }\n `;\n },\n\n scrollBar(t: Theme) {\n return css`\n position: absolute;\n z-index: 200;\n\n &::after {\n content: '';\n display: block;\n border-radius: 5px;\n position: absolute;\n background: ${t.scrollContainerScrollBarColor};\n }\n `;\n },\n\n scrollBarInvert(t: Theme) {\n return css`\n &::after {\n background: #ccc;\n background: ${t.scrollContainerScrollBarInvertColor};\n }\n `;\n },\n\n scrollBarY(t: Theme) {\n return css`\n right: 2px;\n transition: width 0.2s;\n width: ${t.scrollContainerScrollBarSize};\n\n &::after {\n bottom: 1px;\n left: 0;\n right: 0;\n top: 1px;\n }\n `;\n },\n\n scrollBarYHover(t: Theme) {\n return css`\n width: ${t.scrollContainerScrollBarHoverSize};\n `;\n },\n\n scrollBarX(t: Theme) {\n return css`\n bottom: 1px;\n transition: height 0.2s;\n height: ${t.scrollContainerScrollBarSize};\n\n &::after {\n bottom: 0px;\n left: 1px;\n right: 1px;\n top: 0;\n }\n\n .${globalClasses.scrollbarY} ~ & {\n &::after {\n right: calc(${t.scrollContainerScrollBarHoverSize} + 4px) !important;\n }\n }\n\n & ~ .${globalClasses.inner} {\n &::after {\n content: ' ';\n width: 100%;\n display: block;\n height: calc(${t.scrollContainerScrollBarHoverSize} + 2px);\n }\n }\n `;\n },\n\n scrollBarXHover(t: Theme) {\n return css`\n height: ${t.scrollContainerScrollBarHoverSize};\n `;\n },\n});\n"]}
1
+ {"version":3,"sources":["ScrollContainer.styles.ts"],"names":["css","memoizeStyle","prefix","globalClasses","scrollbarX","scrollbarY","inner","styles","root","innerIE11","scrollBar","t","scrollContainerScrollBarColor","scrollBarInvert","scrollContainerScrollBarInvertColor","scrollBarY","scrollContainerScrollBarSize","scrollBarYHover","scrollContainerScrollBarHoverSize","scrollBarX","scrollBarXHover"],"mappings":"oQAAA,SAASA,GAAT,EAAcC,YAAd,EAA4BC,MAA5B,QAA0C,2BAA1C;;;AAGA,OAAO,IAAMC,aAAa,GAAGD,MAAM,CAAC,kBAAD,CAAN,CAA2B;AACtDE,EAAAA,UAAU,EAAE,aAD0C;AAEtDC,EAAAA,UAAU,EAAE,aAF0C;AAGtDC,EAAAA,KAAK,EAAE,OAH+C,EAA3B,CAAtB;;;AAMP,OAAO,IAAMC,MAAM,GAAGN,YAAY,CAAC;AACjCO,EAAAA,IADiC,kBAC1B;AACL,WAAOR,GAAP;;;;;AAKD,GAPgC;;AASjCM,EAAAA,KATiC,mBASzB;AACN,WAAON,GAAP;;;;;;;;;;;;;;AAcD,GAxBgC;;AA0BjCS,EAAAA,SA1BiC,uBA0BrB;AACV,WAAOT,GAAP;;;;;;;AAOD,GAlCgC;;AAoCjCU,EAAAA,SApCiC,qBAoCvBC,CApCuB,EAoCb;AAClB,WAAOX,GAAP;;;;;;;;;AASkBW,IAAAA,CAAC,CAACC,6BATpB;;;AAYD,GAjDgC;;AAmDjCC,EAAAA,eAnDiC,2BAmDjBF,CAnDiB,EAmDP;AACxB,WAAOX,GAAP;;;AAGkBW,IAAAA,CAAC,CAACG,mCAHpB;;;AAMD,GA1DgC;;AA4DjCC,EAAAA,UA5DiC,sBA4DtBJ,CA5DsB,EA4DZ;AACnB,WAAOX,GAAP;;;AAGWW,IAAAA,CAAC,CAACK,4BAHb;;;;;;;;;AAYD,GAzEgC;;AA2EjCC,EAAAA,eA3EiC,2BA2EjBN,CA3EiB,EA2EP;AACxB,WAAOX,GAAP;AACWW,IAAAA,CAAC,CAACO,iCADb;;AAGD,GA/EgC;;AAiFjCC,EAAAA,UAjFiC,sBAiFtBR,CAjFsB,EAiFZ;AACnB,WAAOX,GAAP;;;AAGYW,IAAAA,CAAC,CAACK,4BAHd;;;;;;;;;AAYKb,IAAAA,aAAa,CAACE,UAZnB;;AAcoBM,IAAAA,CAAC,CAACO,iCAdtB;;;;AAkBSf,IAAAA,aAAa,CAACG,KAlBvB;;;;;AAuBqBK,IAAAA,CAAC,CAACO,iCAvBvB;;;;AA2BD,GA7GgC;;AA+GjCE,EAAAA,eA/GiC,2BA+GjBT,CA/GiB,EA+GP;AACxB,WAAOX,GAAP;AACYW,IAAAA,CAAC,CAACO,iCADd;;AAGD,GAnHgC,EAAD,CAA3B","sourcesContent":["import { css, memoizeStyle, prefix } from '../../lib/theming/Emotion';\nimport { Theme } from '../../lib/theming/Theme';\n\nexport const globalClasses = prefix('scroll-container')({\n scrollbarX: 'scrollbar-x',\n scrollbarY: 'scrollbar-y',\n inner: 'inner',\n});\n\nexport const styles = memoizeStyle({\n root() {\n return css`\n height: 100%;\n overflow: hidden;\n position: relative;\n `;\n },\n\n inner() {\n return css`\n position: relative;\n overflow: scroll;\n max-height: 100%;\n max-width: 100%;\n\n /* Hide scrobars without losing functionality */\n scrollbar-width: none;\n -ms-overflow-style: none;\n &::-webkit-scrollbar {\n width: 0;\n height: 0;\n }\n `;\n },\n\n innerIE11() {\n return css`\n /* IE sometimes enabled scroll: http://codepen.io/anon/pen/RRrLNX */\n margin-bottom: -1px;\n padding-bottom: 1px;\n margin-right: -1px;\n padding-right: 1px;\n `;\n },\n\n scrollBar(t: Theme) {\n return css`\n position: absolute;\n z-index: 200;\n\n &::after {\n content: '';\n display: block;\n border-radius: 5px;\n position: absolute;\n background: ${t.scrollContainerScrollBarColor};\n }\n `;\n },\n\n scrollBarInvert(t: Theme) {\n return css`\n &::after {\n background: #ccc;\n background: ${t.scrollContainerScrollBarInvertColor};\n }\n `;\n },\n\n scrollBarY(t: Theme) {\n return css`\n right: 2px;\n transition: width 0.2s;\n width: ${t.scrollContainerScrollBarSize};\n\n &::after {\n bottom: 1px;\n left: 0;\n right: 0;\n top: 1px;\n }\n `;\n },\n\n scrollBarYHover(t: Theme) {\n return css`\n width: ${t.scrollContainerScrollBarHoverSize};\n `;\n },\n\n scrollBarX(t: Theme) {\n return css`\n bottom: 1px;\n transition: height 0.2s;\n height: ${t.scrollContainerScrollBarSize};\n\n &::after {\n bottom: 0px;\n left: 1px;\n right: 1px;\n top: 0;\n }\n\n .${globalClasses.scrollbarY} ~ & {\n &::after {\n right: calc(${t.scrollContainerScrollBarHoverSize} + 4px) !important;\n }\n }\n\n & ~ .${globalClasses.inner} {\n &::after {\n content: ' ';\n width: 100%;\n display: block;\n height: calc(${t.scrollContainerScrollBarHoverSize} + 2px);\n }\n }\n `;\n },\n\n scrollBarXHover(t: Theme) {\n return css`\n height: ${t.scrollContainerScrollBarHoverSize};\n `;\n },\n});\n"]}
@@ -7,6 +7,7 @@ export declare const globalClasses: {
7
7
  export declare const styles: {
8
8
  root(): string;
9
9
  inner(): string;
10
+ innerIE11(): string;
10
11
  scrollBar(t: Theme): string;
11
12
  scrollBarInvert(t: Theme): string;
12
13
  scrollBarY(t: Theme): string;
@@ -398,7 +398,8 @@ export var Select = (_dec = locale('Select', SelectLocaleHelper), rootNode(_clas
398
398
  ref: this.refMenu,
399
399
  width: this.props.menuWidth,
400
400
  onItemClick: this.close,
401
- maxHeight: this.props.maxMenuHeight
401
+ maxHeight: this.props.maxMenuHeight,
402
+ align: this.props.menuAlign
402
403
  }, search, this.mapItems(function (iValue, item, i, comment) {
403
404
  if (isFunction(item)) {
404
405
  var element = item();
@@ -1 +1 @@
1
- {"version":3,"sources":["Select.tsx"],"names":["React","PropTypes","invariant","isKeyArrowDown","isKeyArrowUp","isKeyArrowVertical","isKeyEnter","isKeyEscape","isKeySpace","locale","reactGetTextContent","Button","DropdownContainer","filterProps","Input","Menu","MenuItem","MenuSeparator","RenderLayer","createPropsGetter","isFunction","ThemeContext","CommonWrapper","ArrowChevronDownIcon","cx","getRootNode","rootNode","Item","SelectLocaleHelper","styles","getSelectTheme","PASS_BUTTON_PROPS","disabled","error","use","size","warning","onMouseEnter","onMouseLeave","onMouseOver","Select","state","opened","value","props","defaultValue","searchPattern","theme","menu","buttonElement","getProps","defaultProps","setRootNode","open","setState","onOpen","close","onClose","focus","dropdownContainerGetParent","focusInput","input","setTimeout","refMenu","toggle","handleKey","e","preventDefault","up","down","enter","onKeyDown","handleSearch","highlightItem","buttonRef","element","getButton","buttonParams","button","_renderButton","renderDefaultButton","Children","only","isValidElement","cloneElement","ref","onFocus","onBlur","componentDidUpdate","_prevProps","prevState","window","addEventListener","removeEventListener","render","renderMain","renderLabel","label","isPlaceholder","onClick","style","width","maxWidth","undefined","root","renderMenu","getValue","item","getItemByValue","renderValue","placeholder","getLeftIconClass","leftIconLink","leftIconLarge","leftIconMedium","leftIconSmall","params","buttonProps","align","active","labelProps","className","customUsePlaceholder","placeholderDisabled","paddingRight","getSelectIconGap","useIsCustom","selectButtonContainer","_icon","arrowWrap","arrowDisabled","customUseArrow","getArrowPadding","selectIconGapLarge","selectIconGapMedium","selectIconGapSmall","arrowLeftPadding","parseFloat","search","menuAlign","disablePortal","menuWidth","maxMenuHeight","mapItems","iValue","i","comment","key","areValuesEqual","select","bind","renderItem","onValueChange","fn","items","pattern","toLowerCase","result","index","entry","normalizeEntry","filterItem","push","itemValue","Component","__KONTUR_REACT_UI__","propTypes","func","any","bool","oneOfType","array","object","number","string","node","SEP","value1","value2","Array","isArray","toString","indexOf"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport invariant from 'invariant';\n\nimport {\n isKeyArrowDown,\n isKeyArrowUp,\n isKeyArrowVertical,\n isKeyEnter,\n isKeyEscape,\n isKeySpace,\n} from '../../lib/events/keyboard/identifiers';\nimport { locale } from '../../lib/locale/decorators';\nimport { reactGetTextContent } from '../../lib/reactGetTextContent';\nimport { Button, ButtonProps, ButtonSize, ButtonUse } from '../Button';\nimport { DropdownContainer } from '../../internal/DropdownContainer';\nimport { filterProps } from '../../lib/filterProps';\nimport { Input } from '../Input';\nimport { Menu } from '../../internal/Menu';\nimport { MenuItem } from '../MenuItem';\nimport { MenuSeparator } from '../MenuSeparator';\nimport { RenderLayer } from '../../internal/RenderLayer';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Nullable } from '../../typings/utility-types';\nimport { isFunction } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { ArrowChevronDownIcon } from '../../internal/icons/16px';\nimport { cx } from '../../lib/theming/Emotion';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\n\nimport { Item } from './Item';\nimport { SelectLocale, SelectLocaleHelper } from './locale';\nimport { styles } from './Select.styles';\nimport { getSelectTheme } from './selectTheme';\n\nexport interface ButtonParams {\n disabled?: boolean;\n label: React.ReactNode;\n onClick: () => void;\n onKeyDown: (event: React.KeyboardEvent<HTMLElement>) => void;\n opened: boolean;\n isPlaceholder: boolean;\n}\n\nconst PASS_BUTTON_PROPS = {\n disabled: true,\n error: true,\n use: true,\n size: true,\n warning: true,\n\n onMouseEnter: true,\n onMouseLeave: true,\n onMouseOver: true,\n};\n\nexport interface SelectProps<TValue, TItem> extends CommonProps {\n /** @ignore */\n _icon?: React.ReactNode;\n /** @ignore */\n _renderButton?: (params: ButtonParams) => React.ReactNode;\n defaultValue?: TValue;\n /**\n * Отключает использование портала\n */\n disablePortal?: boolean;\n disabled?: boolean;\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n filterItem?: (value: TValue, item: TItem, pattern: string) => boolean;\n /**\n * Набор значений. Поддерживаются любые перечисляемые типы, в том числе\n * `Array`, `Map`, `Immutable.Map`.\n *\n * Элементы воспринимаются следующим образом: если элемент — это массив, то\n * первый элемент является значением, второй — отображается в списке,\n * а третий – комментарий;\n * если элемент не является массивом, то он используется и для отображения,\n * и для значения.\n *\n * Для вставки разделителя можно использовать `Select.SEP`.\n *\n * Вставить невыделяемый элемент со своей разметкой можно так:\n * ```\n * <Select ...\n * items={[Select.static(() => <div>My Element</div>)]}\n * />\n * ```\n *\n * Чтобы добавить стандартный отступ для статического элемента:\n * ```\n * <Select.Item>My Element</Select.Item>\n * ```\n */\n items?: Array<[TValue, TItem, React.ReactNode?] | TItem | React.ReactElement | (() => React.ReactElement)>;\n maxMenuHeight?: number;\n maxWidth?: React.CSSProperties['maxWidth'];\n menuAlign?: 'left' | 'right';\n menuWidth?: React.CSSProperties['width'];\n onValueChange?: (value: TValue) => void;\n onClose?: () => void;\n onMouseEnter?: (e: React.MouseEvent<HTMLElement>) => void;\n onMouseLeave?: (e: React.MouseEvent<HTMLElement>) => void;\n onMouseOver?: (e: React.MouseEvent<HTMLElement>) => void;\n onKeyDown?: (e: React.KeyboardEvent<HTMLElement>) => void;\n onOpen?: () => void;\n placeholder?: React.ReactNode;\n /**\n * Функция для отрисовки элемента в выпадающем списке. Аргументы — *value*,\n * *item*.\n */\n renderItem?: (value: TValue, item?: TItem) => React.ReactNode;\n /**\n * Функция для отрисовки выбранного элемента. Аргументы — *value*, *item*.\n */\n renderValue?: (value: TValue, item?: TItem) => React.ReactNode;\n /**\n * Функция для сравнения `value` с элементом из `items`\n */\n areValuesEqual?: (value1: TValue, value2: TValue) => boolean;\n /**\n * Показывать строку поиска в списке.\n */\n search?: boolean;\n value?: TValue;\n width?: number | string;\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n use?: ButtonUse;\n size?: ButtonSize;\n onFocus?: React.FocusEventHandler<HTMLElement>;\n onBlur?: React.FocusEventHandler<HTMLElement>;\n}\n\nexport interface SelectState<TValue> {\n opened: boolean;\n searchPattern: string;\n value: Nullable<TValue>;\n}\n\ninterface FocusableReactElement extends React.ReactElement<any> {\n focus: (event?: any) => void;\n}\n\n@rootNode\n@locale('Select', SelectLocaleHelper)\nexport class Select<TValue = {}, TItem = {}> extends React.Component<SelectProps<TValue, TItem>, SelectState<TValue>> {\n public static __KONTUR_REACT_UI__ = 'Select';\n\n public static propTypes = {\n areValuesEqual: PropTypes.func,\n defaultValue: PropTypes.any,\n disablePortal: PropTypes.bool,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n filterItem: PropTypes.func,\n items: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),\n maxMenuHeight: PropTypes.number,\n maxWidth: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n placeholder: PropTypes.node,\n renderItem: PropTypes.func,\n renderValue: PropTypes.func,\n search: PropTypes.bool,\n value: PropTypes.any,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n onValueChange: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseOver: PropTypes.func,\n onKeyDown: PropTypes.func,\n };\n\n public static defaultProps = {\n renderValue,\n renderItem,\n areValuesEqual,\n filterItem,\n use: 'default',\n };\n\n public static Item = Item;\n public static SEP = () => <MenuSeparator />;\n\n public static static = (element: React.ReactElement | (() => React.ReactElement)) => {\n invariant(\n React.isValidElement(element) || typeof element === 'function',\n 'Select.static(element) expects element to be a valid react element.',\n );\n return element;\n };\n\n public state: SelectState<TValue> = {\n opened: false,\n value: this.props.defaultValue,\n searchPattern: '',\n };\n\n private theme!: Theme;\n private readonly locale!: SelectLocale;\n private menu: Nullable<Menu>;\n private buttonElement: FocusableReactElement | null = null;\n private getProps = createPropsGetter(Select.defaultProps);\n private setRootNode!: TSetRootNode;\n\n public componentDidUpdate(_prevProps: SelectProps<TValue, TItem>, prevState: SelectState<TValue>) {\n if (!prevState.opened && this.state.opened) {\n window.addEventListener('popstate', this.close);\n }\n if (prevState.opened && !this.state.opened) {\n window.removeEventListener('popstate', this.close);\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider value={getSelectTheme(theme, this.props)}>{this.renderMain()}</ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * @public\n */\n public open = () => {\n if (!this.state.opened) {\n this.setState({ opened: true });\n\n if (this.props.onOpen) {\n this.props.onOpen();\n }\n }\n };\n\n /**\n * @public\n */\n public close = () => {\n if (this.state.opened) {\n this.setState({ opened: false, searchPattern: '' });\n\n if (this.props.onClose) {\n this.props.onClose();\n }\n }\n };\n\n /**\n * @public\n */\n public focus = () => {\n if (this.buttonElement && this.buttonElement.focus) {\n this.buttonElement.focus();\n }\n };\n\n private renderMain() {\n const { label, isPlaceholder } = this.renderLabel();\n\n const buttonParams: ButtonParams = {\n opened: this.state.opened,\n label,\n isPlaceholder,\n onClick: this.toggle,\n onKeyDown: this.handleKey,\n };\n\n const style = {\n width: this.props.width,\n maxWidth: this.props.maxWidth || undefined,\n };\n\n const button = this.getButton(buttonParams);\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <RenderLayer onClickOutside={this.close} onFocusOutside={this.close} active={this.state.opened}>\n <span className={styles.root()} style={style}>\n {button}\n {!this.props.disabled && this.state.opened && this.renderMenu()}\n </span>\n </RenderLayer>\n </CommonWrapper>\n );\n }\n\n private renderLabel() {\n const value = this.getValue();\n const item = this.getItemByValue(value);\n\n if (item != null || value != null) {\n return {\n label: this.getProps().renderValue(value, item),\n isPlaceholder: false,\n };\n }\n\n return {\n label: <span>{this.props.placeholder || this.locale.placeholder}</span>,\n isPlaceholder: true,\n };\n }\n\n private getLeftIconClass(size: ButtonSize | undefined) {\n if (this.props.use === 'link') {\n return styles.leftIconLink(this.theme);\n }\n\n switch (size) {\n case 'large':\n return styles.leftIconLarge(this.theme);\n case 'medium':\n return styles.leftIconMedium(this.theme);\n case 'small':\n default:\n return styles.leftIconSmall(this.theme);\n }\n }\n\n private renderDefaultButton(params: ButtonParams) {\n const buttonProps: ButtonProps = {\n ...filterProps(this.props, PASS_BUTTON_PROPS),\n align: 'left' as React.CSSProperties['textAlign'],\n disabled: this.props.disabled,\n width: '100%',\n onClick: params.onClick,\n onKeyDown: params.onKeyDown,\n active: params.opened,\n };\n\n const labelProps = {\n className: cx({\n [styles.label()]: this.props.use !== 'link',\n [styles.placeholder(this.theme)]: params.isPlaceholder,\n [styles.customUsePlaceholder()]: params.isPlaceholder && this.props.use !== 'default',\n [styles.placeholderDisabled(this.theme)]: params.isPlaceholder && this.props.disabled,\n }),\n style: {\n paddingRight: this.getSelectIconGap(),\n },\n };\n\n const useIsCustom = this.props.use !== 'default';\n\n return (\n <Button {...buttonProps}>\n <div className={styles.selectButtonContainer()}>\n {this.props._icon && <div className={this.getLeftIconClass(this.props.size)}>{this.props._icon}</div>}\n <span {...labelProps}>{params.label}</span>\n\n <div\n className={cx(styles.arrowWrap(this.theme), {\n [styles.arrowDisabled(this.theme)]: this.props.disabled,\n [styles.customUseArrow()]: useIsCustom,\n })}\n >\n <ArrowChevronDownIcon />\n </div>\n </div>\n </Button>\n );\n }\n\n private getSelectIconGap(): number {\n const getArrowPadding = () => {\n switch (this.props.size) {\n case 'large':\n return this.theme.selectIconGapLarge;\n case 'medium':\n return this.theme.selectIconGapMedium;\n case 'small':\n default:\n return this.theme.selectIconGapSmall;\n }\n };\n const arrowLeftPadding = parseFloat(getArrowPadding()) || 0;\n\n return arrowLeftPadding;\n }\n\n private renderMenu(): React.ReactNode {\n const search = this.props.search ? (\n <div className={styles.search()} onKeyDown={this.handleKey}>\n <Input ref={this.focusInput} onValueChange={this.handleSearch} width=\"100%\" />\n </div>\n ) : null;\n\n const value = this.getValue();\n\n return (\n <DropdownContainer\n getParent={this.dropdownContainerGetParent}\n offsetY={-1}\n align={this.props.menuAlign}\n disablePortal={this.props.disablePortal}\n >\n <Menu\n ref={this.refMenu}\n width={this.props.menuWidth}\n onItemClick={this.close}\n maxHeight={this.props.maxMenuHeight}\n >\n {search}\n {this.mapItems(\n (iValue: TValue, item: TItem | (() => React.ReactNode), i: number, comment: Nullable<React.ReactNode>) => {\n if (isFunction(item)) {\n const element = item();\n\n if (React.isValidElement(element)) {\n return React.cloneElement(element, { key: i });\n }\n\n return null;\n }\n\n if (React.isValidElement(item)) {\n return React.cloneElement(item, { key: i });\n }\n\n return (\n <MenuItem\n key={i}\n state={this.getProps().areValuesEqual(iValue, value) ? 'selected' : null}\n onClick={this.select.bind(this, iValue)}\n comment={comment}\n >\n {this.getProps().renderItem(iValue, item)}\n </MenuItem>\n );\n },\n )}\n </Menu>\n </DropdownContainer>\n );\n }\n\n private dropdownContainerGetParent = () => {\n return getRootNode(this);\n };\n\n private focusInput = (input: Input) => {\n // fix cases when an Input is rendered in portal\n setTimeout(() => input?.focus(), 0);\n };\n\n private refMenu = (menu: Menu) => {\n this.menu = menu;\n };\n\n private toggle = () => {\n if (this.state.opened) {\n this.close();\n } else {\n this.open();\n }\n };\n\n private handleKey = (e: React.KeyboardEvent<HTMLElement>) => {\n if (!this.state.opened) {\n if (isKeySpace(e) || isKeyArrowVertical(e)) {\n e.preventDefault();\n this.open();\n }\n } else {\n switch (true) {\n case isKeyEscape(e):\n this.focus();\n this.close();\n break;\n case isKeyArrowUp(e):\n e.preventDefault();\n if (this.menu) {\n this.menu.up();\n }\n break;\n case isKeyArrowDown(e):\n e.preventDefault();\n if (this.menu) {\n this.menu.down();\n }\n break;\n case isKeyEnter(e):\n e.preventDefault(); // To prevent form submission.\n if (this.menu) {\n this.menu.enter(e);\n }\n break;\n }\n }\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n };\n\n private handleSearch = (value: string) => {\n this.setState({ searchPattern: value });\n this.menu?.highlightItem(1);\n };\n\n private select(value: TValue) {\n this.focus();\n this.setState({ opened: false, value });\n\n if (this.props.onValueChange && !this.getProps().areValuesEqual(this.getValue(), value)) {\n this.props.onValueChange(value);\n }\n }\n\n private getValue() {\n if (this.props.value !== undefined) {\n return this.props.value;\n }\n return this.state.value;\n }\n\n private mapItems(fn: (value: TValue, item: TItem, index: number, comment?: string) => React.ReactNode) {\n const { items } = this.props;\n if (!items) {\n return [];\n }\n const pattern = this.state.searchPattern && this.state.searchPattern.toLowerCase();\n\n const result: React.ReactNodeArray = [];\n let index = 0;\n for (const entry of items) {\n const [value, item, comment] = normalizeEntry(entry as TItem);\n\n if (!pattern || this.getProps().filterItem(value, item, pattern)) {\n result.push(fn(value, item, index, comment));\n ++index;\n }\n }\n\n return result;\n }\n\n private getItemByValue(value?: Nullable<TValue>) {\n if (value === null || value === undefined) {\n return null;\n }\n\n const items = this.props.items || [];\n\n for (const entry of items) {\n const [itemValue, item] = normalizeEntry(entry);\n\n if (this.getProps().areValuesEqual(itemValue, value)) {\n return item;\n }\n }\n return null;\n }\n\n private buttonRef = (element: FocusableReactElement | null) => {\n this.buttonElement = element;\n };\n\n private getButton = (buttonParams: ButtonParams) => {\n const button = this.props._renderButton\n ? this.props._renderButton(buttonParams)\n : this.renderDefaultButton(buttonParams);\n\n const buttonElement = React.Children.only(button);\n\n return React.isValidElement(buttonElement)\n ? React.cloneElement(buttonElement as React.ReactElement, {\n ref: this.buttonRef,\n onFocus: this.props.onFocus,\n onBlur: this.props.onBlur,\n })\n : buttonElement;\n };\n}\n\nfunction renderValue(value: any, item: any) {\n return item;\n}\n\nfunction renderItem(value: any, item: any) {\n return item;\n}\n\nfunction areValuesEqual(value1: any, value2: any) {\n return value1 === value2;\n}\n\nfunction normalizeEntry(entry: any) {\n if (Array.isArray(entry)) {\n return entry;\n } else {\n return [entry, entry, undefined];\n }\n}\n\nfunction filterItem(value: any, item: any, pattern: string) {\n if (item === Select.SEP) {\n return false;\n }\n if (React.isValidElement(item) || (isFunction(item) && React.isValidElement((item = item())))) {\n item = reactGetTextContent(item);\n }\n if (typeof item === 'number') {\n item = item.toString(10);\n }\n if (typeof item !== 'string') {\n return false;\n }\n return item.toLowerCase().indexOf(pattern) !== -1;\n}\n"]}
1
+ {"version":3,"sources":["Select.tsx"],"names":["React","PropTypes","invariant","isKeyArrowDown","isKeyArrowUp","isKeyArrowVertical","isKeyEnter","isKeyEscape","isKeySpace","locale","reactGetTextContent","Button","DropdownContainer","filterProps","Input","Menu","MenuItem","MenuSeparator","RenderLayer","createPropsGetter","isFunction","ThemeContext","CommonWrapper","ArrowChevronDownIcon","cx","getRootNode","rootNode","Item","SelectLocaleHelper","styles","getSelectTheme","PASS_BUTTON_PROPS","disabled","error","use","size","warning","onMouseEnter","onMouseLeave","onMouseOver","Select","state","opened","value","props","defaultValue","searchPattern","theme","menu","buttonElement","getProps","defaultProps","setRootNode","open","setState","onOpen","close","onClose","focus","dropdownContainerGetParent","focusInput","input","setTimeout","refMenu","toggle","handleKey","e","preventDefault","up","down","enter","onKeyDown","handleSearch","highlightItem","buttonRef","element","getButton","buttonParams","button","_renderButton","renderDefaultButton","Children","only","isValidElement","cloneElement","ref","onFocus","onBlur","componentDidUpdate","_prevProps","prevState","window","addEventListener","removeEventListener","render","renderMain","renderLabel","label","isPlaceholder","onClick","style","width","maxWidth","undefined","root","renderMenu","getValue","item","getItemByValue","renderValue","placeholder","getLeftIconClass","leftIconLink","leftIconLarge","leftIconMedium","leftIconSmall","params","buttonProps","align","active","labelProps","className","customUsePlaceholder","placeholderDisabled","paddingRight","getSelectIconGap","useIsCustom","selectButtonContainer","_icon","arrowWrap","arrowDisabled","customUseArrow","getArrowPadding","selectIconGapLarge","selectIconGapMedium","selectIconGapSmall","arrowLeftPadding","parseFloat","search","menuAlign","disablePortal","menuWidth","maxMenuHeight","mapItems","iValue","i","comment","key","areValuesEqual","select","bind","renderItem","onValueChange","fn","items","pattern","toLowerCase","result","index","entry","normalizeEntry","filterItem","push","itemValue","Component","__KONTUR_REACT_UI__","propTypes","func","any","bool","oneOfType","array","object","number","string","node","SEP","value1","value2","Array","isArray","toString","indexOf"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport invariant from 'invariant';\n\nimport {\n isKeyArrowDown,\n isKeyArrowUp,\n isKeyArrowVertical,\n isKeyEnter,\n isKeyEscape,\n isKeySpace,\n} from '../../lib/events/keyboard/identifiers';\nimport { locale } from '../../lib/locale/decorators';\nimport { reactGetTextContent } from '../../lib/reactGetTextContent';\nimport { Button, ButtonProps, ButtonSize, ButtonUse } from '../Button';\nimport { DropdownContainer } from '../../internal/DropdownContainer';\nimport { filterProps } from '../../lib/filterProps';\nimport { Input } from '../Input';\nimport { Menu } from '../../internal/Menu';\nimport { MenuItem } from '../MenuItem';\nimport { MenuSeparator } from '../MenuSeparator';\nimport { RenderLayer } from '../../internal/RenderLayer';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Nullable } from '../../typings/utility-types';\nimport { isFunction } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { ArrowChevronDownIcon } from '../../internal/icons/16px';\nimport { cx } from '../../lib/theming/Emotion';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\n\nimport { Item } from './Item';\nimport { SelectLocale, SelectLocaleHelper } from './locale';\nimport { styles } from './Select.styles';\nimport { getSelectTheme } from './selectTheme';\n\nexport interface ButtonParams {\n disabled?: boolean;\n label: React.ReactNode;\n onClick: () => void;\n onKeyDown: (event: React.KeyboardEvent<HTMLElement>) => void;\n opened: boolean;\n isPlaceholder: boolean;\n}\n\nconst PASS_BUTTON_PROPS = {\n disabled: true,\n error: true,\n use: true,\n size: true,\n warning: true,\n\n onMouseEnter: true,\n onMouseLeave: true,\n onMouseOver: true,\n};\n\nexport interface SelectProps<TValue, TItem> extends CommonProps {\n /** @ignore */\n _icon?: React.ReactNode;\n /** @ignore */\n _renderButton?: (params: ButtonParams) => React.ReactNode;\n defaultValue?: TValue;\n /**\n * Отключает использование портала\n */\n disablePortal?: boolean;\n disabled?: boolean;\n /**\n * Cостояние валидации при ошибке.\n */\n error?: boolean;\n filterItem?: (value: TValue, item: TItem, pattern: string) => boolean;\n /**\n * Набор значений. Поддерживаются любые перечисляемые типы, в том числе\n * `Array`, `Map`, `Immutable.Map`.\n *\n * Элементы воспринимаются следующим образом: если элемент — это массив, то\n * первый элемент является значением, второй — отображается в списке,\n * а третий – комментарий;\n * если элемент не является массивом, то он используется и для отображения,\n * и для значения.\n *\n * Для вставки разделителя можно использовать `Select.SEP`.\n *\n * Вставить невыделяемый элемент со своей разметкой можно так:\n * ```\n * <Select ...\n * items={[Select.static(() => <div>My Element</div>)]}\n * />\n * ```\n *\n * Чтобы добавить стандартный отступ для статического элемента:\n * ```\n * <Select.Item>My Element</Select.Item>\n * ```\n */\n items?: Array<[TValue, TItem, React.ReactNode?] | TItem | React.ReactElement | (() => React.ReactElement)>;\n maxMenuHeight?: number;\n maxWidth?: React.CSSProperties['maxWidth'];\n menuAlign?: 'left' | 'right';\n menuWidth?: React.CSSProperties['width'];\n onValueChange?: (value: TValue) => void;\n onClose?: () => void;\n onMouseEnter?: (e: React.MouseEvent<HTMLElement>) => void;\n onMouseLeave?: (e: React.MouseEvent<HTMLElement>) => void;\n onMouseOver?: (e: React.MouseEvent<HTMLElement>) => void;\n onKeyDown?: (e: React.KeyboardEvent<HTMLElement>) => void;\n onOpen?: () => void;\n placeholder?: React.ReactNode;\n /**\n * Функция для отрисовки элемента в выпадающем списке. Аргументы — *value*,\n * *item*.\n */\n renderItem?: (value: TValue, item?: TItem) => React.ReactNode;\n /**\n * Функция для отрисовки выбранного элемента. Аргументы — *value*, *item*.\n */\n renderValue?: (value: TValue, item?: TItem) => React.ReactNode;\n /**\n * Функция для сравнения `value` с элементом из `items`\n */\n areValuesEqual?: (value1: TValue, value2: TValue) => boolean;\n /**\n * Показывать строку поиска в списке.\n */\n search?: boolean;\n value?: TValue;\n width?: number | string;\n /**\n * Cостояние валидации при предупреждении.\n */\n warning?: boolean;\n use?: ButtonUse;\n size?: ButtonSize;\n onFocus?: React.FocusEventHandler<HTMLElement>;\n onBlur?: React.FocusEventHandler<HTMLElement>;\n}\n\nexport interface SelectState<TValue> {\n opened: boolean;\n searchPattern: string;\n value: Nullable<TValue>;\n}\n\ninterface FocusableReactElement extends React.ReactElement<any> {\n focus: (event?: any) => void;\n}\n\n@rootNode\n@locale('Select', SelectLocaleHelper)\nexport class Select<TValue = {}, TItem = {}> extends React.Component<SelectProps<TValue, TItem>, SelectState<TValue>> {\n public static __KONTUR_REACT_UI__ = 'Select';\n\n public static propTypes = {\n areValuesEqual: PropTypes.func,\n defaultValue: PropTypes.any,\n disablePortal: PropTypes.bool,\n disabled: PropTypes.bool,\n error: PropTypes.bool,\n filterItem: PropTypes.func,\n items: PropTypes.oneOfType([PropTypes.array, PropTypes.object]),\n maxMenuHeight: PropTypes.number,\n maxWidth: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n placeholder: PropTypes.node,\n renderItem: PropTypes.func,\n renderValue: PropTypes.func,\n search: PropTypes.bool,\n value: PropTypes.any,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n onValueChange: PropTypes.func,\n onMouseEnter: PropTypes.func,\n onMouseLeave: PropTypes.func,\n onMouseOver: PropTypes.func,\n onKeyDown: PropTypes.func,\n };\n\n public static defaultProps = {\n renderValue,\n renderItem,\n areValuesEqual,\n filterItem,\n use: 'default',\n };\n\n public static Item = Item;\n public static SEP = () => <MenuSeparator />;\n\n public static static = (element: React.ReactElement | (() => React.ReactElement)) => {\n invariant(\n React.isValidElement(element) || typeof element === 'function',\n 'Select.static(element) expects element to be a valid react element.',\n );\n return element;\n };\n\n public state: SelectState<TValue> = {\n opened: false,\n value: this.props.defaultValue,\n searchPattern: '',\n };\n\n private theme!: Theme;\n private readonly locale!: SelectLocale;\n private menu: Nullable<Menu>;\n private buttonElement: FocusableReactElement | null = null;\n private getProps = createPropsGetter(Select.defaultProps);\n private setRootNode!: TSetRootNode;\n\n public componentDidUpdate(_prevProps: SelectProps<TValue, TItem>, prevState: SelectState<TValue>) {\n if (!prevState.opened && this.state.opened) {\n window.addEventListener('popstate', this.close);\n }\n if (prevState.opened && !this.state.opened) {\n window.removeEventListener('popstate', this.close);\n }\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider value={getSelectTheme(theme, this.props)}>{this.renderMain()}</ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n /**\n * @public\n */\n public open = () => {\n if (!this.state.opened) {\n this.setState({ opened: true });\n\n if (this.props.onOpen) {\n this.props.onOpen();\n }\n }\n };\n\n /**\n * @public\n */\n public close = () => {\n if (this.state.opened) {\n this.setState({ opened: false, searchPattern: '' });\n\n if (this.props.onClose) {\n this.props.onClose();\n }\n }\n };\n\n /**\n * @public\n */\n public focus = () => {\n if (this.buttonElement && this.buttonElement.focus) {\n this.buttonElement.focus();\n }\n };\n\n private renderMain() {\n const { label, isPlaceholder } = this.renderLabel();\n\n const buttonParams: ButtonParams = {\n opened: this.state.opened,\n label,\n isPlaceholder,\n onClick: this.toggle,\n onKeyDown: this.handleKey,\n };\n\n const style = {\n width: this.props.width,\n maxWidth: this.props.maxWidth || undefined,\n };\n\n const button = this.getButton(buttonParams);\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <RenderLayer onClickOutside={this.close} onFocusOutside={this.close} active={this.state.opened}>\n <span className={styles.root()} style={style}>\n {button}\n {!this.props.disabled && this.state.opened && this.renderMenu()}\n </span>\n </RenderLayer>\n </CommonWrapper>\n );\n }\n\n private renderLabel() {\n const value = this.getValue();\n const item = this.getItemByValue(value);\n\n if (item != null || value != null) {\n return {\n label: this.getProps().renderValue(value, item),\n isPlaceholder: false,\n };\n }\n\n return {\n label: <span>{this.props.placeholder || this.locale.placeholder}</span>,\n isPlaceholder: true,\n };\n }\n\n private getLeftIconClass(size: ButtonSize | undefined) {\n if (this.props.use === 'link') {\n return styles.leftIconLink(this.theme);\n }\n\n switch (size) {\n case 'large':\n return styles.leftIconLarge(this.theme);\n case 'medium':\n return styles.leftIconMedium(this.theme);\n case 'small':\n default:\n return styles.leftIconSmall(this.theme);\n }\n }\n\n private renderDefaultButton(params: ButtonParams) {\n const buttonProps: ButtonProps = {\n ...filterProps(this.props, PASS_BUTTON_PROPS),\n align: 'left' as React.CSSProperties['textAlign'],\n disabled: this.props.disabled,\n width: '100%',\n onClick: params.onClick,\n onKeyDown: params.onKeyDown,\n active: params.opened,\n };\n\n const labelProps = {\n className: cx({\n [styles.label()]: this.props.use !== 'link',\n [styles.placeholder(this.theme)]: params.isPlaceholder,\n [styles.customUsePlaceholder()]: params.isPlaceholder && this.props.use !== 'default',\n [styles.placeholderDisabled(this.theme)]: params.isPlaceholder && this.props.disabled,\n }),\n style: {\n paddingRight: this.getSelectIconGap(),\n },\n };\n\n const useIsCustom = this.props.use !== 'default';\n\n return (\n <Button {...buttonProps}>\n <div className={styles.selectButtonContainer()}>\n {this.props._icon && <div className={this.getLeftIconClass(this.props.size)}>{this.props._icon}</div>}\n <span {...labelProps}>{params.label}</span>\n\n <div\n className={cx(styles.arrowWrap(this.theme), {\n [styles.arrowDisabled(this.theme)]: this.props.disabled,\n [styles.customUseArrow()]: useIsCustom,\n })}\n >\n <ArrowChevronDownIcon />\n </div>\n </div>\n </Button>\n );\n }\n\n private getSelectIconGap(): number {\n const getArrowPadding = () => {\n switch (this.props.size) {\n case 'large':\n return this.theme.selectIconGapLarge;\n case 'medium':\n return this.theme.selectIconGapMedium;\n case 'small':\n default:\n return this.theme.selectIconGapSmall;\n }\n };\n const arrowLeftPadding = parseFloat(getArrowPadding()) || 0;\n\n return arrowLeftPadding;\n }\n\n private renderMenu(): React.ReactNode {\n const search = this.props.search ? (\n <div className={styles.search()} onKeyDown={this.handleKey}>\n <Input ref={this.focusInput} onValueChange={this.handleSearch} width=\"100%\" />\n </div>\n ) : null;\n\n const value = this.getValue();\n\n return (\n <DropdownContainer\n getParent={this.dropdownContainerGetParent}\n offsetY={-1}\n align={this.props.menuAlign}\n disablePortal={this.props.disablePortal}\n >\n <Menu\n ref={this.refMenu}\n width={this.props.menuWidth}\n onItemClick={this.close}\n maxHeight={this.props.maxMenuHeight}\n align={this.props.menuAlign}\n >\n {search}\n {this.mapItems(\n (iValue: TValue, item: TItem | (() => React.ReactNode), i: number, comment: Nullable<React.ReactNode>) => {\n if (isFunction(item)) {\n const element = item();\n\n if (React.isValidElement(element)) {\n return React.cloneElement(element, { key: i });\n }\n\n return null;\n }\n\n if (React.isValidElement(item)) {\n return React.cloneElement(item, { key: i });\n }\n\n return (\n <MenuItem\n key={i}\n state={this.getProps().areValuesEqual(iValue, value) ? 'selected' : null}\n onClick={this.select.bind(this, iValue)}\n comment={comment}\n >\n {this.getProps().renderItem(iValue, item)}\n </MenuItem>\n );\n },\n )}\n </Menu>\n </DropdownContainer>\n );\n }\n\n private dropdownContainerGetParent = () => {\n return getRootNode(this);\n };\n\n private focusInput = (input: Input) => {\n // fix cases when an Input is rendered in portal\n setTimeout(() => input?.focus(), 0);\n };\n\n private refMenu = (menu: Menu) => {\n this.menu = menu;\n };\n\n private toggle = () => {\n if (this.state.opened) {\n this.close();\n } else {\n this.open();\n }\n };\n\n private handleKey = (e: React.KeyboardEvent<HTMLElement>) => {\n if (!this.state.opened) {\n if (isKeySpace(e) || isKeyArrowVertical(e)) {\n e.preventDefault();\n this.open();\n }\n } else {\n switch (true) {\n case isKeyEscape(e):\n this.focus();\n this.close();\n break;\n case isKeyArrowUp(e):\n e.preventDefault();\n if (this.menu) {\n this.menu.up();\n }\n break;\n case isKeyArrowDown(e):\n e.preventDefault();\n if (this.menu) {\n this.menu.down();\n }\n break;\n case isKeyEnter(e):\n e.preventDefault(); // To prevent form submission.\n if (this.menu) {\n this.menu.enter(e);\n }\n break;\n }\n }\n if (this.props.onKeyDown) {\n this.props.onKeyDown(e);\n }\n };\n\n private handleSearch = (value: string) => {\n this.setState({ searchPattern: value });\n this.menu?.highlightItem(1);\n };\n\n private select(value: TValue) {\n this.focus();\n this.setState({ opened: false, value });\n\n if (this.props.onValueChange && !this.getProps().areValuesEqual(this.getValue(), value)) {\n this.props.onValueChange(value);\n }\n }\n\n private getValue() {\n if (this.props.value !== undefined) {\n return this.props.value;\n }\n return this.state.value;\n }\n\n private mapItems(fn: (value: TValue, item: TItem, index: number, comment?: string) => React.ReactNode) {\n const { items } = this.props;\n if (!items) {\n return [];\n }\n const pattern = this.state.searchPattern && this.state.searchPattern.toLowerCase();\n\n const result: React.ReactNodeArray = [];\n let index = 0;\n for (const entry of items) {\n const [value, item, comment] = normalizeEntry(entry as TItem);\n\n if (!pattern || this.getProps().filterItem(value, item, pattern)) {\n result.push(fn(value, item, index, comment));\n ++index;\n }\n }\n\n return result;\n }\n\n private getItemByValue(value?: Nullable<TValue>) {\n if (value === null || value === undefined) {\n return null;\n }\n\n const items = this.props.items || [];\n\n for (const entry of items) {\n const [itemValue, item] = normalizeEntry(entry);\n\n if (this.getProps().areValuesEqual(itemValue, value)) {\n return item;\n }\n }\n return null;\n }\n\n private buttonRef = (element: FocusableReactElement | null) => {\n this.buttonElement = element;\n };\n\n private getButton = (buttonParams: ButtonParams) => {\n const button = this.props._renderButton\n ? this.props._renderButton(buttonParams)\n : this.renderDefaultButton(buttonParams);\n\n const buttonElement = React.Children.only(button);\n\n return React.isValidElement(buttonElement)\n ? React.cloneElement(buttonElement as React.ReactElement, {\n ref: this.buttonRef,\n onFocus: this.props.onFocus,\n onBlur: this.props.onBlur,\n })\n : buttonElement;\n };\n}\n\nfunction renderValue(value: any, item: any) {\n return item;\n}\n\nfunction renderItem(value: any, item: any) {\n return item;\n}\n\nfunction areValuesEqual(value1: any, value2: any) {\n return value1 === value2;\n}\n\nfunction normalizeEntry(entry: any) {\n if (Array.isArray(entry)) {\n return entry;\n } else {\n return [entry, entry, undefined];\n }\n}\n\nfunction filterItem(value: any, item: any, pattern: string) {\n if (item === Select.SEP) {\n return false;\n }\n if (React.isValidElement(item) || (isFunction(item) && React.isValidElement((item = item())))) {\n item = reactGetTextContent(item);\n }\n if (typeof item === 'number') {\n item = item.toString(10);\n }\n if (typeof item !== 'string') {\n return false;\n }\n return item.toLowerCase().indexOf(pattern) !== -1;\n}\n"]}
@@ -60,6 +60,17 @@ export var SidePage = /*#__PURE__*/function (_React$Component) {
60
60
  }
61
61
  };
62
62
 
63
+ _this.disablePageScroll = function (e) {
64
+ var layout = _this.layoutRef;
65
+ if (!layout) return;
66
+ var reachedTop = layout.scrollTop <= 0 && e.deltaY < 0;
67
+ var reachedBottom = layout.scrollTop >= layout.scrollHeight - layout.offsetHeight && e.deltaY > 0;
68
+
69
+ if (!_this.props.blockBackground && (reachedTop || reachedBottom)) {
70
+ e.preventDefault();
71
+ }
72
+ };
73
+
63
74
  _this.getSidePageContextProps = function () {
64
75
  return {
65
76
  hasHeader: _this.state.hasHeader,
@@ -173,12 +184,20 @@ export var SidePage = /*#__PURE__*/function (_React$Component) {
173
184
  var _proto = SidePage.prototype;
174
185
 
175
186
  _proto.componentDidMount = function componentDidMount() {
187
+ var _this$rootRef$current;
188
+
176
189
  window.addEventListener('keydown', this.handleKeyDown);
190
+ (_this$rootRef$current = this.rootRef.current) == null ? void 0 : _this$rootRef$current.addEventListener('wheel', this.disablePageScroll, {
191
+ passive: false
192
+ });
177
193
  this.stackSubscription = ModalStack.add(this, this.handleStackChange);
178
194
  };
179
195
 
180
196
  _proto.componentWillUnmount = function componentWillUnmount() {
197
+ var _this$rootRef$current2;
198
+
181
199
  window.removeEventListener('keydown', this.handleKeyDown);
200
+ (_this$rootRef$current2 = this.rootRef.current) == null ? void 0 : _this$rootRef$current2.removeEventListener('wheel', this.disablePageScroll);
182
201
 
183
202
  if (this.stackSubscription != null) {
184
203
  this.stackSubscription.remove();