@skbkontur/react-ui 5.4.7-7ccf0.0 → 5.4.7-a27a4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (281) hide show
  1. package/cjs/components/Button/Button.d.ts +1 -0
  2. package/cjs/components/Button/Button.js.map +1 -1
  3. package/cjs/components/Calendar/Calendar.d.ts +1 -1
  4. package/cjs/components/Calendar/Calendar.js.map +1 -1
  5. package/cjs/components/DateInput/DateFragmentsView.d.ts +2 -2
  6. package/cjs/components/DateInput/DateFragmentsView.js.map +1 -1
  7. package/cjs/components/DateRangePicker/DateRangePicker.d.ts +2 -2
  8. package/cjs/components/DateRangePicker/DateRangePicker.js.map +1 -1
  9. package/cjs/components/DateRangePicker/DateRangePickerContext.d.ts +3 -3
  10. package/cjs/components/DateRangePicker/DateRangePickerContext.js.map +1 -1
  11. package/cjs/components/DateRangePicker/DateRangePickerInput.js.map +1 -1
  12. package/cjs/components/Dropdown/Dropdown.d.ts +4 -4
  13. package/cjs/components/Dropdown/Dropdown.js.map +1 -1
  14. package/cjs/components/DropdownMenu/DropdownMenu.js +3 -1
  15. package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
  16. package/cjs/components/FileUploader/FileUploader.d.ts +1 -1
  17. package/cjs/components/FileUploader/FileUploaderFile.js.map +1 -1
  18. package/cjs/components/GlobalLoader/GlobalLoaderView.d.ts +3 -2
  19. package/cjs/components/GlobalLoader/GlobalLoaderView.js +49 -50
  20. package/cjs/components/GlobalLoader/GlobalLoaderView.js.map +1 -1
  21. package/cjs/components/Input/Input.d.ts +2 -2
  22. package/cjs/components/Input/Input.js.map +1 -1
  23. package/cjs/components/Input/InputLayout/InputLayout.d.ts +3 -1
  24. package/cjs/components/Input/InputLayout/InputLayout.js +2 -1
  25. package/cjs/components/Input/InputLayout/InputLayout.js.map +1 -1
  26. package/cjs/components/Input/InputLayout/InputLayoutAsideIcon.js +6 -4
  27. package/cjs/components/Input/InputLayout/InputLayoutAsideIcon.js.map +1 -1
  28. package/cjs/components/Kebab/Kebab.d.ts +1 -1
  29. package/cjs/components/Kebab/Kebab.js.map +1 -1
  30. package/cjs/components/Link/Link.d.ts +1 -1
  31. package/cjs/components/Link/Link.js.map +1 -1
  32. package/cjs/components/MaskedInput/ColorableInputElement/ColorableInputElement.d.ts +1 -1
  33. package/cjs/components/MaskedInput/ColorableInputElement/ColorableInputElement.js +1 -1
  34. package/cjs/components/MaskedInput/ColorableInputElement/ColorableInputElement.js.map +1 -1
  35. package/cjs/components/MaskedInput/FixedIMaskInput.js +3 -1
  36. package/cjs/components/MaskedInput/FixedIMaskInput.js.map +1 -1
  37. package/cjs/components/MaskedInput/MaskedInput.js +2 -2
  38. package/cjs/components/MaskedInput/MaskedInput.js.map +1 -1
  39. package/cjs/components/MenuItem/MenuItem.d.ts +1 -1
  40. package/cjs/components/MenuItem/MenuItem.js.map +1 -1
  41. package/cjs/components/Modal/Modal.d.ts +4 -1
  42. package/cjs/components/Modal/Modal.js +8 -3
  43. package/cjs/components/Modal/Modal.js.map +1 -1
  44. package/cjs/components/Modal/ModalBody.d.ts +2 -2
  45. package/cjs/components/Modal/ModalBody.js.map +1 -1
  46. package/cjs/components/Paging/Paging.d.ts +2 -2
  47. package/cjs/components/Paging/Paging.js.map +1 -1
  48. package/cjs/components/PasswordInput/PasswordInput.d.ts +1 -1
  49. package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
  50. package/cjs/components/RadioGroup/RadioGroup.d.ts +2 -2
  51. package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
  52. package/cjs/components/ResponsiveLayout/decorator.d.ts +0 -3
  53. package/cjs/components/ScrollContainer/ScrollContainer.d.ts +1 -1
  54. package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
  55. package/cjs/components/Select/Select.d.ts +1 -1
  56. package/cjs/components/Select/Select.js.map +1 -1
  57. package/cjs/components/SidePage/SidePage.d.ts +5 -2
  58. package/cjs/components/SidePage/SidePage.js +9 -3
  59. package/cjs/components/SidePage/SidePage.js.map +1 -1
  60. package/cjs/components/SidePage/SidePageFooter.d.ts +1 -1
  61. package/cjs/components/SidePage/SidePageFooter.js.map +1 -1
  62. package/cjs/components/SidePage/SidePageHeader.d.ts +1 -1
  63. package/cjs/components/SidePage/SidePageHeader.js.map +1 -1
  64. package/cjs/components/SingleToast/SingleToast.d.ts +1 -1
  65. package/cjs/components/Sticky/Sticky.js +6 -2
  66. package/cjs/components/Sticky/Sticky.js.map +1 -1
  67. package/cjs/components/Tabs/Tabs.d.ts +1 -1
  68. package/cjs/components/Tabs/Tabs.js.map +1 -1
  69. package/cjs/components/Token/TokenView.d.ts +2 -1
  70. package/cjs/components/Token/TokenView.js +4 -4
  71. package/cjs/components/Token/TokenView.js.map +1 -1
  72. package/cjs/components/TokenInput/TextWidthHelper.js +3 -1
  73. package/cjs/components/TokenInput/TextWidthHelper.js.map +1 -1
  74. package/cjs/components/TokenInput/TokenInput.js +14 -7
  75. package/cjs/components/TokenInput/TokenInput.js.map +1 -1
  76. package/cjs/components/Tooltip/Tooltip.d.ts +4 -4
  77. package/cjs/components/Tooltip/Tooltip.js.map +1 -1
  78. package/cjs/hooks/useDrop.js +1 -1
  79. package/cjs/hooks/useDrop.js.map +1 -1
  80. package/cjs/internal/CommonWrapper/CommonWrapper.js +3 -2
  81. package/cjs/internal/CommonWrapper/CommonWrapper.js.map +1 -1
  82. package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.d.ts +3 -6
  83. package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.js +84 -83
  84. package/cjs/internal/FileUploaderControl/FileUploaderControlProvider.js.map +1 -1
  85. package/cjs/internal/FileUploaderControl/withFileUploaderControlProvider.d.ts +1 -1
  86. package/cjs/internal/FileUploaderControl/withFileUploaderControlProvider.js +11 -12
  87. package/cjs/internal/FileUploaderControl/withFileUploaderControlProvider.js.map +1 -1
  88. package/cjs/internal/FocusControlWrapper/FocusControlWrapper.d.ts +5 -6
  89. package/cjs/internal/FocusControlWrapper/FocusControlWrapper.js +28 -23
  90. package/cjs/internal/FocusControlWrapper/FocusControlWrapper.js.map +1 -1
  91. package/cjs/internal/IgnoreLayerClick/IgnoreLayerClick.d.ts +1 -1
  92. package/cjs/internal/InputLikeText/InputLikeText.d.ts +2 -2
  93. package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
  94. package/cjs/internal/Menu/Menu.js +6 -2
  95. package/cjs/internal/Menu/Menu.js.map +1 -1
  96. package/cjs/internal/Menu/MenuNavigation.d.ts +1 -1
  97. package/cjs/internal/Menu/MenuNavigation.js.map +1 -1
  98. package/cjs/internal/MobilePopup/MobilePopup.d.ts +1 -0
  99. package/cjs/internal/MobilePopup/MobilePopup.js +9 -1
  100. package/cjs/internal/MobilePopup/MobilePopup.js.map +1 -1
  101. package/cjs/internal/Popup/Popup.js +2 -4
  102. package/cjs/internal/Popup/Popup.js.map +1 -1
  103. package/cjs/internal/PopupMenu/PopupMenu.d.ts +1 -1
  104. package/cjs/internal/PopupMenu/PopupMenu.js +9 -3
  105. package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
  106. package/cjs/internal/RenderLayer/RenderLayer.d.ts +2 -2
  107. package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
  108. package/cjs/internal/TextWidthHelper/TextWidthHelper.js +3 -1
  109. package/cjs/internal/TextWidthHelper/TextWidthHelper.js.map +1 -1
  110. package/cjs/internal/ThemePlayground/FxInputPlayground.d.ts +1 -1
  111. package/cjs/internal/ThemePlayground/FxInputPlayground.js.map +1 -1
  112. package/cjs/lib/dom/getDOMRect.d.ts +1 -1
  113. package/cjs/lib/dom/getDOMRect.js +3 -1
  114. package/cjs/lib/dom/getDOMRect.js.map +1 -1
  115. package/cjs/lib/events/fixFirefoxModifiedClickOnLabel.d.ts +1 -1
  116. package/cjs/lib/events/fixFirefoxModifiedClickOnLabel.js.map +1 -1
  117. package/cjs/lib/forwardRefAndName.d.ts +3 -2
  118. package/cjs/lib/forwardRefAndName.js +2 -1
  119. package/cjs/lib/forwardRefAndName.js.map +1 -1
  120. package/cjs/lib/getElementRef.d.ts +5 -0
  121. package/cjs/lib/getElementRef.js +16 -0
  122. package/cjs/lib/getElementRef.js.map +1 -0
  123. package/cjs/lib/locale/decorators.d.ts +0 -3
  124. package/cjs/lib/mergeRefs.d.ts +2 -3
  125. package/cjs/lib/mergeRefs.js +1 -1
  126. package/cjs/lib/mergeRefs.js.map +1 -1
  127. package/cjs/lib/reactGetTextContent.js +6 -1
  128. package/cjs/lib/reactGetTextContent.js.map +1 -1
  129. package/cjs/lib/renderEnvironment/RenderEnvironmentDecorator.d.ts +0 -3
  130. package/cjs/lib/rootNode/getRootNode.js +1 -24
  131. package/cjs/lib/rootNode/getRootNode.js.map +1 -1
  132. package/cjs/lib/rootNode/rootNodeDecorator.d.ts +0 -3
  133. package/cjs/lib/size/SizeDecorator.d.ts +0 -3
  134. package/cjs/lib/types/polymorphic-component.d.ts +2 -1
  135. package/cjs/lib/types/polymorphic-component.js.map +1 -1
  136. package/cjs/lib/utils.d.ts +4 -3
  137. package/cjs/lib/utils.js +4 -3
  138. package/cjs/lib/utils.js.map +1 -1
  139. package/cjs/lib/withClassWrapper.d.ts +3 -8
  140. package/components/Button/Button/Button.js +1 -1
  141. package/components/Button/Button/Button.js.map +1 -1
  142. package/components/Button/Button.d.ts +1 -0
  143. package/components/Calendar/Calendar/Calendar.js.map +1 -1
  144. package/components/Calendar/Calendar.d.ts +1 -1
  145. package/components/DateInput/DateFragmentsView/DateFragmentsView.js.map +1 -1
  146. package/components/DateInput/DateFragmentsView.d.ts +2 -2
  147. package/components/DateRangePicker/DateRangePicker/DateRangePicker.js +1 -1
  148. package/components/DateRangePicker/DateRangePicker/DateRangePicker.js.map +1 -1
  149. package/components/DateRangePicker/DateRangePicker.d.ts +2 -2
  150. package/components/DateRangePicker/DateRangePickerContext/DateRangePickerContext.js.map +1 -1
  151. package/components/DateRangePicker/DateRangePickerContext.d.ts +3 -3
  152. package/components/DateRangePicker/DateRangePickerInput/DateRangePickerInput.js.map +1 -1
  153. package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
  154. package/components/Dropdown/Dropdown.d.ts +4 -4
  155. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js +1 -1
  156. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
  157. package/components/FileUploader/FileUploader.d.ts +1 -1
  158. package/components/FileUploader/FileUploaderFile/FileUploaderFile.js +1 -1
  159. package/components/FileUploader/FileUploaderFile/FileUploaderFile.js.map +1 -1
  160. package/components/GlobalLoader/GlobalLoaderView/GlobalLoaderView.js +5 -4
  161. package/components/GlobalLoader/GlobalLoaderView/GlobalLoaderView.js.map +1 -1
  162. package/components/GlobalLoader/GlobalLoaderView.d.ts +3 -2
  163. package/components/Input/Input/Input.js.map +1 -1
  164. package/components/Input/Input.d.ts +2 -2
  165. package/components/Input/InputLayout/InputLayout/InputLayout.js +4 -2
  166. package/components/Input/InputLayout/InputLayout/InputLayout.js.map +1 -1
  167. package/components/Input/InputLayout/InputLayout.d.ts +3 -1
  168. package/components/Input/InputLayout/InputLayoutAsideIcon/InputLayoutAsideIcon.js +2 -2
  169. package/components/Input/InputLayout/InputLayoutAsideIcon/InputLayoutAsideIcon.js.map +1 -1
  170. package/components/Kebab/Kebab/Kebab.js.map +1 -1
  171. package/components/Kebab/Kebab.d.ts +1 -1
  172. package/components/Link/Link/Link.js.map +1 -1
  173. package/components/Link/Link.d.ts +1 -1
  174. package/components/MaskedInput/ColorableInputElement/ColorableInputElement/ColorableInputElement.js +1 -1
  175. package/components/MaskedInput/ColorableInputElement/ColorableInputElement/ColorableInputElement.js.map +1 -1
  176. package/components/MaskedInput/ColorableInputElement/ColorableInputElement.d.ts +1 -1
  177. package/components/MaskedInput/FixedIMaskInput/FixedIMaskInput.js +1 -1
  178. package/components/MaskedInput/FixedIMaskInput/FixedIMaskInput.js.map +1 -1
  179. package/components/MaskedInput/MaskedInput/MaskedInput.js +2 -2
  180. package/components/MaskedInput/MaskedInput/MaskedInput.js.map +1 -1
  181. package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
  182. package/components/MenuItem/MenuItem.d.ts +1 -1
  183. package/components/Modal/Modal/Modal.js +7 -3
  184. package/components/Modal/Modal/Modal.js.map +1 -1
  185. package/components/Modal/Modal.d.ts +4 -1
  186. package/components/Modal/ModalBody/ModalBody.js.map +1 -1
  187. package/components/Modal/ModalBody.d.ts +2 -2
  188. package/components/Paging/Paging/Paging.js.map +1 -1
  189. package/components/Paging/Paging.d.ts +2 -2
  190. package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
  191. package/components/PasswordInput/PasswordInput.d.ts +1 -1
  192. package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
  193. package/components/RadioGroup/RadioGroup.d.ts +2 -2
  194. package/components/ResponsiveLayout/decorator.d.ts +0 -3
  195. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +1 -1
  196. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
  197. package/components/ScrollContainer/ScrollContainer.d.ts +1 -1
  198. package/components/Select/Select/Select.js.map +1 -1
  199. package/components/Select/Select.d.ts +1 -1
  200. package/components/SidePage/SidePage/SidePage.js +7 -3
  201. package/components/SidePage/SidePage/SidePage.js.map +1 -1
  202. package/components/SidePage/SidePage.d.ts +5 -2
  203. package/components/SidePage/SidePageFooter/SidePageFooter.js.map +1 -1
  204. package/components/SidePage/SidePageFooter.d.ts +1 -1
  205. package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
  206. package/components/SidePage/SidePageHeader.d.ts +1 -1
  207. package/components/SingleToast/SingleToast.d.ts +1 -1
  208. package/components/Sticky/Sticky/Sticky.js +2 -2
  209. package/components/Sticky/Sticky/Sticky.js.map +1 -1
  210. package/components/Tabs/Tabs/Tabs.js.map +1 -1
  211. package/components/Tabs/Tabs.d.ts +1 -1
  212. package/components/Token/TokenView/TokenView.js +6 -4
  213. package/components/Token/TokenView/TokenView.js.map +1 -1
  214. package/components/Token/TokenView.d.ts +2 -1
  215. package/components/TokenInput/TextWidthHelper/TextWidthHelper.js +1 -1
  216. package/components/TokenInput/TextWidthHelper/TextWidthHelper.js.map +1 -1
  217. package/components/TokenInput/TokenInput/TokenInput.js +5 -5
  218. package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
  219. package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
  220. package/components/Tooltip/Tooltip.d.ts +4 -4
  221. package/hooks/useDrop/useDrop.js +1 -1
  222. package/hooks/useDrop/useDrop.js.map +1 -1
  223. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js +3 -2
  224. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
  225. package/internal/FileUploaderControl/FileUploaderControlProvider/FileUploaderControlProvider.js +2 -2
  226. package/internal/FileUploaderControl/FileUploaderControlProvider/FileUploaderControlProvider.js.map +1 -1
  227. package/internal/FileUploaderControl/FileUploaderControlProvider.d.ts +3 -6
  228. package/internal/FileUploaderControl/withFileUploaderControlProvider/withFileUploaderControlProvider.js +2 -3
  229. package/internal/FileUploaderControl/withFileUploaderControlProvider/withFileUploaderControlProvider.js.map +1 -1
  230. package/internal/FileUploaderControl/withFileUploaderControlProvider.d.ts +1 -1
  231. package/internal/FocusControlWrapper/FocusControlWrapper/FocusControlWrapper.js +7 -4
  232. package/internal/FocusControlWrapper/FocusControlWrapper/FocusControlWrapper.js.map +1 -1
  233. package/internal/FocusControlWrapper/FocusControlWrapper.d.ts +5 -6
  234. package/internal/IgnoreLayerClick/IgnoreLayerClick.d.ts +1 -1
  235. package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
  236. package/internal/InputLikeText/InputLikeText.d.ts +2 -2
  237. package/internal/Menu/Menu/Menu.js +2 -2
  238. package/internal/Menu/Menu/Menu.js.map +1 -1
  239. package/internal/Menu/MenuNavigation/MenuNavigation.js.map +1 -1
  240. package/internal/Menu/MenuNavigation.d.ts +1 -1
  241. package/internal/MobilePopup/MobilePopup/MobilePopup.js +5 -2
  242. package/internal/MobilePopup/MobilePopup/MobilePopup.js.map +1 -1
  243. package/internal/MobilePopup/MobilePopup.d.ts +1 -0
  244. package/internal/Popup/Popup/Popup.js +2 -2
  245. package/internal/Popup/Popup/Popup.js.map +1 -1
  246. package/internal/PopupMenu/PopupMenu/PopupMenu.js +3 -3
  247. package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
  248. package/internal/PopupMenu/PopupMenu.d.ts +1 -1
  249. package/internal/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
  250. package/internal/RenderLayer/RenderLayer.d.ts +2 -2
  251. package/internal/TextWidthHelper/TextWidthHelper/TextWidthHelper.js +1 -1
  252. package/internal/TextWidthHelper/TextWidthHelper/TextWidthHelper.js.map +1 -1
  253. package/internal/ThemePlayground/FxInputPlayground/FxInputPlayground.js.map +1 -1
  254. package/internal/ThemePlayground/FxInputPlayground.d.ts +1 -1
  255. package/lib/dom/getDOMRect/getDOMRect.js.map +1 -1
  256. package/lib/dom/getDOMRect.d.ts +1 -1
  257. package/lib/events/fixFirefoxModifiedClickOnLabel/fixFirefoxModifiedClickOnLabel.js.map +1 -1
  258. package/lib/events/fixFirefoxModifiedClickOnLabel.d.ts +1 -1
  259. package/lib/forwardRefAndName/forwardRefAndName.js.map +1 -1
  260. package/lib/forwardRefAndName.d.ts +3 -2
  261. package/lib/getElementRef/getElementRef.js +11 -0
  262. package/lib/getElementRef/getElementRef.js.map +1 -0
  263. package/lib/getElementRef/package.json +6 -0
  264. package/lib/getElementRef.d.ts +5 -0
  265. package/lib/locale/decorators.d.ts +0 -3
  266. package/lib/mergeRefs/mergeRefs.js.map +1 -1
  267. package/lib/mergeRefs.d.ts +2 -3
  268. package/lib/reactGetTextContent/reactGetTextContent.js +1 -1
  269. package/lib/reactGetTextContent/reactGetTextContent.js.map +1 -1
  270. package/lib/renderEnvironment/RenderEnvironmentDecorator.d.ts +0 -3
  271. package/lib/rootNode/getRootNode/getRootNode.js +0 -15
  272. package/lib/rootNode/getRootNode/getRootNode.js.map +1 -1
  273. package/lib/rootNode/rootNodeDecorator.d.ts +0 -3
  274. package/lib/size/SizeDecorator.d.ts +0 -3
  275. package/lib/types/polymorphic-component/polymorphic-component.js.map +1 -1
  276. package/lib/types/polymorphic-component.d.ts +2 -1
  277. package/lib/utils/utils.js +2 -2
  278. package/lib/utils/utils.js.map +1 -1
  279. package/lib/utils.d.ts +4 -3
  280. package/lib/withClassWrapper.d.ts +3 -8
  281. package/package.json +10 -9
@@ -1,3 +1,4 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
1
2
  import _createClass from "@babel/runtime/helpers/esm/createClass";
2
3
  import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
3
4
  var _class, _SidePage;
@@ -18,6 +19,7 @@ import { isTestEnv } from "../../../lib/currentEnvironment";
18
19
  import { ResponsiveLayout } from "../../ResponsiveLayout";
19
20
  import { createPropsGetter } from "../../../lib/createPropsGetter";
20
21
  import { isInstanceOf } from "../../../lib/isInstanceOf";
22
+ import { rootNode } from "../../../lib/rootNode";
21
23
  import { withRenderEnvironment } from "../../../lib/renderEnvironment";
22
24
  import { SidePageBody } from "../SidePageBody";
23
25
  import { SidePageContainer } from "../SidePageContainer";
@@ -40,7 +42,7 @@ var TRANSITION_TIMEOUT = 200;
40
42
  *
41
43
  * Для отображения серой плашки в футере в компонент `Footer` необходимо передать пропс `panel`.
42
44
  */
43
- export var SidePage = withRenderEnvironment(_class = (_SidePage = /*#__PURE__*/function (_React$Component) {
45
+ export var SidePage = withRenderEnvironment(_class = rootNode(_class = (_SidePage = /*#__PURE__*/function (_React$Component) {
44
46
  function SidePage() {
45
47
  var _this;
46
48
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
@@ -204,7 +206,9 @@ export var SidePage = withRenderEnvironment(_class = (_SidePage = /*#__PURE__*/f
204
206
  var disableAnimations = this.getProps().disableAnimations;
205
207
  return /*#__PURE__*/React.createElement(ResponsiveLayout, null, function (_ref) {
206
208
  var isMobile = _ref.isMobile;
207
- return /*#__PURE__*/React.createElement(RenderContainer, null, /*#__PURE__*/React.createElement(CommonWrapper, _this3.props, /*#__PURE__*/React.createElement(ZIndex, {
209
+ return /*#__PURE__*/React.createElement(RenderContainer, null, /*#__PURE__*/React.createElement(CommonWrapper, _extends({
210
+ rootNodeRef: _this3.setRootNode
211
+ }, _this3.props), /*#__PURE__*/React.createElement(ZIndex, {
208
212
  priority: 'Sidepage',
209
213
  onScroll: LayoutEvents.emit,
210
214
  createStackingContext: true,
@@ -309,4 +313,4 @@ export var SidePage = withRenderEnvironment(_class = (_SidePage = /*#__PURE__*/f
309
313
  disableAnimations: isTestEnv,
310
314
  offset: 0,
311
315
  role: 'dialog'
312
- }, _SidePage)) || _class;
316
+ }, _SidePage)) || _class) || _class;
@@ -1 +1 @@
1
- {"version":3,"names":["React","CSSTransition","FocusLock","isNonNullable","isReactUIInstance","isKeyEscape","LayoutEvents","HideBodyVerticalScroll","ModalStack","RenderContainer","RenderLayer","ZIndex","ThemeContext","CommonWrapper","isTestEnv","ResponsiveLayout","createPropsGetter","isInstanceOf","withRenderEnvironment","SidePageBody","SidePageContainer","SidePageContext","SidePageFooter","SidePageHeader","getStyles","SidePageDataTids","root","container","TRANSITION_TIMEOUT","SidePage","_class","_SidePage","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","state","hasHeader","hasFooter","hasPanel","stackSubscription","layout","header","footer","rootRef","createRef","updateLayout","_this$header","_this$footer","update","getProps","defaultProps","getSidePageContextProps","requestClose","getWidth","headerRef","footerRef","setHasHeader","setHasFooter","setHasPanel","clientWidth","handleStackChange","stack","sidePages","filter","x","props","fromLeft","currentSidePagePosition","indexOf","hasMargin","hasShadow","hasBackground","isBlocking","globalObject","setState","stackPosition","handleClickOutside","e","ignoreBackgroundClick","MouseEvent","document","clientX","documentElement","handleKeyDown","stopPropagation","disableClose","onClose","ref","layoutRef","_inheritsLoose","_proto","prototype","componentDidMount","_this$globalObject$ad","_this$globalObject","addEventListener","add","componentDidUpdate","prevProps","blockBackground","rerender","componentWillUnmount","_this$globalObject$re","_this$globalObject2","removeEventListener","remove","render","_this2","styles","emotion","createElement","Consumer","theme","renderMain","_this3","_this$props","onOpened","disableAnimations","_ref","isMobile","priority","onScroll","emit","createStackingContext","style","position","renderShadow","classNames","getTransitionNames","appear","enter","exit","timeout","nodeRef","onEntered","renderContainer","_this$cx","_this$cx2","_this$props2","mobileWidth","ariaLabel","_this$getProps","offset","role","widthDesktop","width","widthMobile","className","cx","right","left","disabled","isFocusLockDisabled","autoFocus","focusLock","onClickOutside","active","wrapper","wrapperLeft","wrapperMarginLeft","wrapperMarginRight","shadow","Provider","value","children","_this$cx3","overlay","key","background","backgroundGray","transition","transitionRight","transitionLeft","enterActive","transitionActive","transitionLeave","exitActive","transitionLeaveActive","appearActive","_createClass","get","_this$getProps2","disableFocusLock","undefined","Component","__KONTUR_REACT_UI__","displayName","Header","Body","Footer","Container"],"sources":["SidePage.tsx"],"sourcesContent":["import type { AriaAttributes, HTMLAttributes } from 'react';\nimport React from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport FocusLock from 'react-focus-lock';\nimport type { Emotion } from '@emotion/css/types/create-instance';\n\nimport type { GlobalObject } from '../../lib/globalObject';\nimport { isNonNullable, isReactUIInstance } from '../../lib/utils';\nimport { isKeyEscape } from '../../lib/events/keyboard/identifiers';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { HideBodyVerticalScroll } from '../../internal/HideBodyVerticalScroll';\nimport type { ModalStackSubscription } from '../../lib/ModalStack';\nimport { ModalStack } from '../../lib/ModalStack';\nimport { RenderContainer } from '../../internal/RenderContainer';\nimport { RenderLayer } from '../../internal/RenderLayer';\nimport { ZIndex } from '../../internal/ZIndex';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { ResponsiveLayout } from '../ResponsiveLayout';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isInstanceOf } from '../../lib/isInstanceOf';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment';\n\nimport { SidePageBody } from './SidePageBody';\nimport { SidePageContainer } from './SidePageContainer';\nimport type { SidePageContextType } from './SidePageContext';\nimport { SidePageContext } from './SidePageContext';\nimport { SidePageFooter } from './SidePageFooter';\nimport { SidePageHeader } from './SidePageHeader';\nimport { getStyles } from './SidePage.styles';\n\nexport interface SidePageProps\n extends CommonProps,\n Pick<HTMLAttributes<unknown>, 'role'>,\n Pick<AriaAttributes, 'aria-label'> {\n /** Добавляет блокирующий фон, когда сайдпейдж открыт. */\n blockBackground?: boolean;\n\n /** Отключает событие onClose, также дизейблит кнопку закрытия сайдпейджа. */\n disableClose?: boolean;\n\n /** Оставляет окно открытым при клике на фон. */\n ignoreBackgroundClick?: boolean;\n\n /** Задает ширину сайдпейджа. */\n width?: number | string;\n\n /** Задает ширину сайдпейджаю на мобилке. По умолчанию ширина во весь экран. */\n mobileWidth?: number | string;\n\n /** Задает функцию, которая вызывается при запросе закрытия сайдпейджа пользователем (нажал на фон, на Escape или на крестик). */\n onClose?: () => void;\n\n /** Задает функцию, которая вызывается при завершении анимации открытия сайдпейджа. */\n onOpened?: () => void;\n\n /** Отображает сайдпэйдж слева. */\n fromLeft?: boolean;\n\n /** Отключает анимацию. */\n disableAnimations?: boolean;\n\n /** Отключает фокус-лок внутри сайдпейджа.\n * Работает только при заблокированном фоне: `blockBackground = true`.*/\n disableFocusLock?: boolean;\n\n /** Задает отступ от края экрана. */\n offset?: number | string;\n}\n\nexport interface SidePageState {\n stackPosition?: number;\n hasMargin?: boolean;\n hasShadow?: boolean;\n hasBackground?: boolean;\n hasHeader: boolean;\n hasFooter: boolean;\n hasPanel: boolean;\n}\n\nexport const SidePageDataTids = {\n root: 'SidePage__root',\n container: 'SidePage__container',\n} as const;\n\ntype DefaultProps = Required<Pick<SidePageProps, 'disableAnimations' | 'offset' | 'role'>>;\n\nconst TRANSITION_TIMEOUT = 200;\n\n/**\n * `SidePage` — это модальное окно, которое открывается поверх основной страницы и занимает всю высоту окна браузера.\n *\n * Используйте его, когда нужно сохранить контекст и показать большое количество данных.\n *\n * Содержит в себе три компоненты: `SidePage.Header`, `SidePage.Body` и `SidePage.Footer`.\n *\n * Для отображения серой плашки в футере в компонент `Footer` необходимо передать пропс `panel`.\n */\n@withRenderEnvironment\nexport class SidePage extends React.Component<SidePageProps, SidePageState> {\n public static __KONTUR_REACT_UI__ = 'SidePage';\n public static displayName = 'SidePage';\n\n public static Header = SidePageHeader;\n public static Body = SidePageBody;\n public static Footer = SidePageFooter;\n public static Container = SidePageContainer;\n public state: SidePageState = {\n hasHeader: false,\n hasFooter: false,\n hasPanel: false,\n };\n\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n private stackSubscription: ModalStackSubscription | null = null;\n private layout: HTMLElement | null = null;\n private header: SidePageHeader | null = null;\n private footer: SidePageFooter | null = null;\n public rootRef = React.createRef<HTMLDivElement>();\n\n public componentDidMount() {\n this.globalObject.addEventListener?.('keydown', this.handleKeyDown);\n this.stackSubscription = ModalStack.add(this, this.handleStackChange, this.globalObject);\n }\n\n public componentDidUpdate(prevProps: SidePageProps) {\n if (prevProps.blockBackground !== this.props.blockBackground) {\n ModalStack.rerender(this.globalObject);\n this.setState({\n hasBackground: ModalStack.isBlocking(this, this.globalObject),\n });\n }\n }\n\n public componentWillUnmount() {\n this.globalObject.removeEventListener?.('keydown', this.handleKeyDown);\n if (isNonNullable(this.stackSubscription)) {\n this.stackSubscription.remove();\n }\n ModalStack.remove(this, this.globalObject);\n }\n\n /**\n * Обновляет разметку компонента.\n * @public\n */\n public updateLayout = (): void => {\n this.header?.update();\n this.footer?.update();\n };\n\n public static defaultProps: DefaultProps = {\n disableAnimations: isTestEnv,\n offset: 0,\n role: 'dialog',\n };\n\n private getProps = createPropsGetter(SidePage.defaultProps);\n\n public render(): JSX.Element {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { blockBackground, onOpened } = this.props;\n const disableAnimations = this.getProps().disableAnimations;\n return (\n <ResponsiveLayout>\n {({ isMobile }) => (\n <RenderContainer>\n <CommonWrapper {...this.props}>\n <ZIndex\n priority={'Sidepage'}\n onScroll={LayoutEvents.emit}\n createStackingContext\n style={{ position: 'absolute' }}\n >\n {!isMobile && blockBackground && this.renderShadow()}\n <CSSTransition\n in\n classNames={this.getTransitionNames()}\n appear={!disableAnimations}\n enter={!disableAnimations}\n exit={false}\n timeout={{\n enter: TRANSITION_TIMEOUT,\n exit: TRANSITION_TIMEOUT,\n }}\n nodeRef={this.rootRef}\n onEntered={onOpened}\n >\n {this.renderContainer(isMobile)}\n </CSSTransition>\n {isMobile && <HideBodyVerticalScroll />}\n </ZIndex>\n </CommonWrapper>\n </RenderContainer>\n )}\n </ResponsiveLayout>\n );\n }\n\n private get isFocusLockDisabled() {\n const { disableFocusLock } = this.getProps();\n const { blockBackground } = this.props;\n if (!blockBackground) {\n return true;\n }\n if (disableFocusLock !== undefined) {\n return disableFocusLock;\n }\n return false;\n }\n\n private renderContainer(isMobile: boolean): JSX.Element {\n const { mobileWidth, blockBackground, fromLeft, 'aria-label': ariaLabel } = this.props;\n const { offset, role } = this.getProps();\n\n const widthDesktop = this.props.width || (blockBackground ? 800 : 500);\n const widthMobile = mobileWidth || '100%';\n const width = isMobile ? widthMobile : widthDesktop;\n\n return (\n <div\n aria-modal\n role={role}\n aria-label={ariaLabel}\n data-tid={SidePageDataTids.root}\n className={this.cx({\n [this.styles.root()]: true,\n })}\n ref={this.rootRef}\n onScroll={LayoutEvents.emit}\n style={{\n width,\n right: fromLeft ? 'auto' : offset,\n left: fromLeft ? offset : 'auto',\n }}\n >\n <FocusLock disabled={this.isFocusLockDisabled} autoFocus={false} className={this.styles.focusLock()}>\n <RenderLayer onClickOutside={this.handleClickOutside} active>\n <div\n data-tid={SidePageDataTids.container}\n className={this.cx(this.styles.wrapper(this.theme), {\n [this.styles.wrapperLeft()]: fromLeft,\n [this.styles.wrapperMarginLeft()]: this.state.hasMargin && fromLeft,\n [this.styles.wrapperMarginRight()]: this.state.hasMargin && !fromLeft,\n [this.styles.shadow(this.theme)]: this.state.hasShadow,\n })}\n ref={this.layoutRef}\n >\n <SidePageContext.Provider value={this.getSidePageContextProps()}>\n {this.props.children}\n </SidePageContext.Provider>\n </div>\n </RenderLayer>\n </FocusLock>\n </div>\n );\n }\n\n private getSidePageContextProps = (): SidePageContextType => {\n return {\n hasHeader: this.state.hasHeader,\n hasFooter: this.state.hasFooter,\n hasPanel: this.state.hasPanel,\n requestClose: this.requestClose,\n getWidth: this.getWidth,\n updateLayout: this.updateLayout,\n headerRef: this.headerRef,\n footerRef: this.footerRef,\n setHasHeader: this.setHasHeader,\n setHasFooter: this.setHasFooter,\n setHasPanel: this.setHasPanel,\n };\n };\n\n private getWidth = () => {\n if (!this.layout) {\n return 'auto';\n }\n return this.layout.clientWidth;\n };\n\n private renderShadow(): JSX.Element {\n return (\n <div className={this.styles.overlay()} onScroll={LayoutEvents.emit}>\n <HideBodyVerticalScroll key=\"hbvs\" />\n <div\n key=\"overlay\"\n className={this.cx({\n [this.styles.background()]: true,\n [this.styles.backgroundGray(this.theme)]: this.state.hasBackground,\n })}\n />\n </div>\n );\n }\n\n private getTransitionNames(): Record<string, string> {\n const transition = this.props.fromLeft ? this.styles.transitionRight : this.styles.transitionLeft;\n\n return {\n enter: transition(),\n enterActive: this.styles.transitionActive(),\n exit: this.styles.transitionLeave(),\n exitActive: this.styles.transitionLeaveActive(),\n appear: transition(),\n appearActive: this.styles.transitionActive(),\n };\n }\n\n private handleStackChange = (stack: readonly React.Component[]) => {\n const sidePages = stack.filter(\n (x) => isReactUIInstance<SidePage>(x, 'SidePage') && x.props.fromLeft === this.props.fromLeft,\n );\n const currentSidePagePosition = sidePages.indexOf(this);\n\n const hasMargin = sidePages.length > 1 && currentSidePagePosition === sidePages.length - 1;\n const hasShadow = sidePages.length < 3 || currentSidePagePosition > sidePages.length - 3;\n const hasBackground = ModalStack.isBlocking(this, this.globalObject);\n\n this.setState({\n stackPosition: stack.indexOf(this),\n hasMargin,\n hasShadow,\n hasBackground,\n });\n };\n\n private handleClickOutside = (e: Event) => {\n if (this.state.stackPosition === 0 && !this.props.ignoreBackgroundClick) {\n // ignore mousedown on window scrollbar\n if (\n isInstanceOf(e, this.globalObject.MouseEvent) &&\n this.globalObject.document &&\n e.clientX > this.globalObject.document.documentElement.clientWidth\n ) {\n return;\n }\n this.requestClose();\n }\n };\n\n private handleKeyDown = (e: KeyboardEvent) => {\n if (this.state.stackPosition !== 0) {\n return;\n }\n if (isKeyEscape(e)) {\n e.stopPropagation();\n this.requestClose();\n }\n };\n\n private requestClose = () => {\n if (this.props.disableClose) {\n return;\n }\n if (this.props.onClose) {\n this.props.onClose();\n }\n };\n\n private headerRef = (ref: SidePageHeader | null) => {\n this.header = ref;\n };\n\n private footerRef = (ref: SidePageFooter | null) => {\n this.footer = ref;\n };\n\n private layoutRef = (ref: HTMLDivElement | null) => {\n this.layout = ref;\n };\n\n private setHasHeader = (hasHeader = true) => {\n this.state.hasHeader !== hasHeader && this.setState({ hasHeader });\n };\n\n private setHasFooter = (hasFooter = true) => {\n this.state.hasFooter !== hasFooter && this.setState({ hasFooter });\n };\n\n private setHasPanel = (hasPanel = false) => {\n this.state.hasPanel !== hasPanel && this.setState({ hasPanel });\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","CSSTransition","FocusLock","isNonNullable","isReactUIInstance","isKeyEscape","LayoutEvents","HideBodyVerticalScroll","ModalStack","RenderContainer","RenderLayer","ZIndex","ThemeContext","CommonWrapper","isTestEnv","ResponsiveLayout","createPropsGetter","isInstanceOf","rootNode","withRenderEnvironment","SidePageBody","SidePageContainer","SidePageContext","SidePageFooter","SidePageHeader","getStyles","SidePageDataTids","root","container","TRANSITION_TIMEOUT","SidePage","_class","_SidePage","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","state","hasHeader","hasFooter","hasPanel","stackSubscription","layout","header","footer","rootRef","createRef","updateLayout","_this$header","_this$footer","update","getProps","defaultProps","getSidePageContextProps","requestClose","getWidth","headerRef","footerRef","setHasHeader","setHasFooter","setHasPanel","clientWidth","handleStackChange","stack","sidePages","filter","x","props","fromLeft","currentSidePagePosition","indexOf","hasMargin","hasShadow","hasBackground","isBlocking","globalObject","setState","stackPosition","handleClickOutside","e","ignoreBackgroundClick","MouseEvent","document","clientX","documentElement","handleKeyDown","stopPropagation","disableClose","onClose","ref","layoutRef","_inheritsLoose","_proto","prototype","componentDidMount","_this$globalObject$ad","_this$globalObject","addEventListener","add","componentDidUpdate","prevProps","blockBackground","rerender","componentWillUnmount","_this$globalObject$re","_this$globalObject2","removeEventListener","remove","render","_this2","styles","emotion","createElement","Consumer","theme","renderMain","_this3","_this$props","onOpened","disableAnimations","_ref","isMobile","_extends","rootNodeRef","setRootNode","priority","onScroll","emit","createStackingContext","style","position","renderShadow","classNames","getTransitionNames","appear","enter","exit","timeout","nodeRef","onEntered","renderContainer","_this$cx","_this$cx2","_this$props2","mobileWidth","ariaLabel","_this$getProps","offset","role","widthDesktop","width","widthMobile","className","cx","right","left","disabled","isFocusLockDisabled","autoFocus","focusLock","onClickOutside","active","wrapper","wrapperLeft","wrapperMarginLeft","wrapperMarginRight","shadow","Provider","value","children","_this$cx3","overlay","key","background","backgroundGray","transition","transitionRight","transitionLeft","enterActive","transitionActive","transitionLeave","exitActive","transitionLeaveActive","appearActive","_createClass","get","_this$getProps2","disableFocusLock","undefined","Component","__KONTUR_REACT_UI__","displayName","Header","Body","Footer","Container"],"sources":["SidePage.tsx"],"sourcesContent":["import type { AriaAttributes, HTMLAttributes, JSX } from 'react';\nimport React from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport FocusLock from 'react-focus-lock';\nimport type { Emotion } from '@emotion/css/types/create-instance';\n\nimport type { GlobalObject } from '../../lib/globalObject';\nimport { isNonNullable, isReactUIInstance } from '../../lib/utils';\nimport { isKeyEscape } from '../../lib/events/keyboard/identifiers';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { HideBodyVerticalScroll } from '../../internal/HideBodyVerticalScroll';\nimport type { ModalStackSubscription } from '../../lib/ModalStack';\nimport { ModalStack } from '../../lib/ModalStack';\nimport { RenderContainer } from '../../internal/RenderContainer';\nimport { RenderLayer } from '../../internal/RenderLayer';\nimport { ZIndex } from '../../internal/ZIndex';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { ResponsiveLayout } from '../ResponsiveLayout';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isInstanceOf } from '../../lib/isInstanceOf';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment';\n\nimport { SidePageBody } from './SidePageBody';\nimport { SidePageContainer } from './SidePageContainer';\nimport type { SidePageContextType } from './SidePageContext';\nimport { SidePageContext } from './SidePageContext';\nimport { SidePageFooter } from './SidePageFooter';\nimport { SidePageHeader } from './SidePageHeader';\nimport { getStyles } from './SidePage.styles';\n\nexport interface SidePageProps\n extends CommonProps,\n Pick<HTMLAttributes<unknown>, 'role'>,\n Pick<AriaAttributes, 'aria-label'> {\n /** Добавляет блокирующий фон, когда сайдпейдж открыт. */\n blockBackground?: boolean;\n\n /** Отключает событие onClose, также дизейблит кнопку закрытия сайдпейджа. */\n disableClose?: boolean;\n\n /** Оставляет окно открытым при клике на фон. */\n ignoreBackgroundClick?: boolean;\n\n /** Задает ширину сайдпейджа. */\n width?: number | string;\n\n /** Задает ширину сайдпейджаю на мобилке. По умолчанию ширина во весь экран. */\n mobileWidth?: number | string;\n\n /** Задает функцию, которая вызывается при запросе закрытия сайдпейджа пользователем (нажал на фон, на Escape или на крестик). */\n onClose?: () => void;\n\n /** Задает функцию, которая вызывается при завершении анимации открытия сайдпейджа. */\n onOpened?: () => void;\n\n /** Отображает сайдпэйдж слева. */\n fromLeft?: boolean;\n\n /** Отключает анимацию. */\n disableAnimations?: boolean;\n\n /** Отключает фокус-лок внутри сайдпейджа.\n * Работает только при заблокированном фоне: `blockBackground = true`.*/\n disableFocusLock?: boolean;\n\n /** Задает отступ от края экрана. */\n offset?: number | string;\n}\n\nexport interface SidePageState {\n stackPosition?: number;\n hasMargin?: boolean;\n hasShadow?: boolean;\n hasBackground?: boolean;\n hasHeader: boolean;\n hasFooter: boolean;\n hasPanel: boolean;\n}\n\nexport const SidePageDataTids = {\n root: 'SidePage__root',\n container: 'SidePage__container',\n} as const;\n\ntype DefaultProps = Required<Pick<SidePageProps, 'disableAnimations' | 'offset' | 'role'>>;\n\nconst TRANSITION_TIMEOUT = 200;\n\n/**\n * `SidePage` — это модальное окно, которое открывается поверх основной страницы и занимает всю высоту окна браузера.\n *\n * Используйте его, когда нужно сохранить контекст и показать большое количество данных.\n *\n * Содержит в себе три компоненты: `SidePage.Header`, `SidePage.Body` и `SidePage.Footer`.\n *\n * Для отображения серой плашки в футере в компонент `Footer` необходимо передать пропс `panel`.\n */\n@withRenderEnvironment\n@rootNode\nexport class SidePage extends React.Component<SidePageProps, SidePageState> {\n public static __KONTUR_REACT_UI__ = 'SidePage';\n public static displayName = 'SidePage';\n\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public static Header = SidePageHeader;\n public static Body = SidePageBody;\n public static Footer = SidePageFooter;\n public static Container = SidePageContainer;\n public state: SidePageState = {\n hasHeader: false,\n hasFooter: false,\n hasPanel: false,\n };\n\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n private stackSubscription: ModalStackSubscription | null = null;\n private layout: HTMLElement | null = null;\n private header: SidePageHeader | null = null;\n private footer: SidePageFooter | null = null;\n public rootRef = React.createRef<HTMLDivElement>();\n\n public componentDidMount() {\n this.globalObject.addEventListener?.('keydown', this.handleKeyDown);\n this.stackSubscription = ModalStack.add(this, this.handleStackChange, this.globalObject);\n }\n\n public componentDidUpdate(prevProps: SidePageProps) {\n if (prevProps.blockBackground !== this.props.blockBackground) {\n ModalStack.rerender(this.globalObject);\n this.setState({\n hasBackground: ModalStack.isBlocking(this, this.globalObject),\n });\n }\n }\n\n public componentWillUnmount() {\n this.globalObject.removeEventListener?.('keydown', this.handleKeyDown);\n if (isNonNullable(this.stackSubscription)) {\n this.stackSubscription.remove();\n }\n ModalStack.remove(this, this.globalObject);\n }\n\n /**\n * Обновляет разметку компонента.\n * @public\n */\n public updateLayout = (): void => {\n this.header?.update();\n this.footer?.update();\n };\n\n public static defaultProps: DefaultProps = {\n disableAnimations: isTestEnv,\n offset: 0,\n role: 'dialog',\n };\n\n private getProps = createPropsGetter(SidePage.defaultProps);\n\n public render(): JSX.Element {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { blockBackground, onOpened } = this.props;\n const disableAnimations = this.getProps().disableAnimations;\n return (\n <ResponsiveLayout>\n {({ isMobile }) => (\n <RenderContainer>\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <ZIndex\n priority={'Sidepage'}\n onScroll={LayoutEvents.emit}\n createStackingContext\n style={{ position: 'absolute' }}\n >\n {!isMobile && blockBackground && this.renderShadow()}\n <CSSTransition\n in\n classNames={this.getTransitionNames()}\n appear={!disableAnimations}\n enter={!disableAnimations}\n exit={false}\n timeout={{\n enter: TRANSITION_TIMEOUT,\n exit: TRANSITION_TIMEOUT,\n }}\n nodeRef={this.rootRef}\n onEntered={onOpened}\n >\n {this.renderContainer(isMobile)}\n </CSSTransition>\n {isMobile && <HideBodyVerticalScroll />}\n </ZIndex>\n </CommonWrapper>\n </RenderContainer>\n )}\n </ResponsiveLayout>\n );\n }\n\n private get isFocusLockDisabled() {\n const { disableFocusLock } = this.getProps();\n const { blockBackground } = this.props;\n if (!blockBackground) {\n return true;\n }\n if (disableFocusLock !== undefined) {\n return disableFocusLock;\n }\n return false;\n }\n\n private renderContainer(isMobile: boolean): JSX.Element {\n const { mobileWidth, blockBackground, fromLeft, 'aria-label': ariaLabel } = this.props;\n const { offset, role } = this.getProps();\n\n const widthDesktop = this.props.width || (blockBackground ? 800 : 500);\n const widthMobile = mobileWidth || '100%';\n const width = isMobile ? widthMobile : widthDesktop;\n\n return (\n <div\n aria-modal\n role={role}\n aria-label={ariaLabel}\n data-tid={SidePageDataTids.root}\n className={this.cx({\n [this.styles.root()]: true,\n })}\n ref={this.rootRef}\n onScroll={LayoutEvents.emit}\n style={{\n width,\n right: fromLeft ? 'auto' : offset,\n left: fromLeft ? offset : 'auto',\n }}\n >\n <FocusLock disabled={this.isFocusLockDisabled} autoFocus={false} className={this.styles.focusLock()}>\n <RenderLayer onClickOutside={this.handleClickOutside} active>\n <div\n data-tid={SidePageDataTids.container}\n className={this.cx(this.styles.wrapper(this.theme), {\n [this.styles.wrapperLeft()]: fromLeft,\n [this.styles.wrapperMarginLeft()]: this.state.hasMargin && fromLeft,\n [this.styles.wrapperMarginRight()]: this.state.hasMargin && !fromLeft,\n [this.styles.shadow(this.theme)]: this.state.hasShadow,\n })}\n ref={this.layoutRef}\n >\n <SidePageContext.Provider value={this.getSidePageContextProps()}>\n {this.props.children}\n </SidePageContext.Provider>\n </div>\n </RenderLayer>\n </FocusLock>\n </div>\n );\n }\n\n private getSidePageContextProps = (): SidePageContextType => {\n return {\n hasHeader: this.state.hasHeader,\n hasFooter: this.state.hasFooter,\n hasPanel: this.state.hasPanel,\n requestClose: this.requestClose,\n getWidth: this.getWidth,\n updateLayout: this.updateLayout,\n headerRef: this.headerRef,\n footerRef: this.footerRef,\n setHasHeader: this.setHasHeader,\n setHasFooter: this.setHasFooter,\n setHasPanel: this.setHasPanel,\n };\n };\n\n private getWidth = () => {\n if (!this.layout) {\n return 'auto';\n }\n return this.layout.clientWidth;\n };\n\n private renderShadow(): JSX.Element {\n return (\n <div className={this.styles.overlay()} onScroll={LayoutEvents.emit}>\n <HideBodyVerticalScroll key=\"hbvs\" />\n <div\n key=\"overlay\"\n className={this.cx({\n [this.styles.background()]: true,\n [this.styles.backgroundGray(this.theme)]: this.state.hasBackground,\n })}\n />\n </div>\n );\n }\n\n private getTransitionNames(): Record<string, string> {\n const transition = this.props.fromLeft ? this.styles.transitionRight : this.styles.transitionLeft;\n\n return {\n enter: transition(),\n enterActive: this.styles.transitionActive(),\n exit: this.styles.transitionLeave(),\n exitActive: this.styles.transitionLeaveActive(),\n appear: transition(),\n appearActive: this.styles.transitionActive(),\n };\n }\n\n private handleStackChange = (stack: readonly React.Component[]) => {\n const sidePages = stack.filter(\n (x) => isReactUIInstance<SidePage>(x, 'SidePage') && x.props.fromLeft === this.props.fromLeft,\n );\n const currentSidePagePosition = sidePages.indexOf(this);\n\n const hasMargin = sidePages.length > 1 && currentSidePagePosition === sidePages.length - 1;\n const hasShadow = sidePages.length < 3 || currentSidePagePosition > sidePages.length - 3;\n const hasBackground = ModalStack.isBlocking(this, this.globalObject);\n\n this.setState({\n stackPosition: stack.indexOf(this),\n hasMargin,\n hasShadow,\n hasBackground,\n });\n };\n\n private handleClickOutside = (e: Event) => {\n if (this.state.stackPosition === 0 && !this.props.ignoreBackgroundClick) {\n // ignore mousedown on window scrollbar\n if (\n isInstanceOf(e, this.globalObject.MouseEvent) &&\n this.globalObject.document &&\n e.clientX > this.globalObject.document.documentElement.clientWidth\n ) {\n return;\n }\n this.requestClose();\n }\n };\n\n private handleKeyDown = (e: KeyboardEvent) => {\n if (this.state.stackPosition !== 0) {\n return;\n }\n if (isKeyEscape(e)) {\n e.stopPropagation();\n this.requestClose();\n }\n };\n\n private requestClose = () => {\n if (this.props.disableClose) {\n return;\n }\n if (this.props.onClose) {\n this.props.onClose();\n }\n };\n\n private headerRef = (ref: SidePageHeader | null) => {\n this.header = ref;\n };\n\n private footerRef = (ref: SidePageFooter | null) => {\n this.footer = ref;\n };\n\n private layoutRef = (ref: HTMLDivElement | null) => {\n this.layout = ref;\n };\n\n private setHasHeader = (hasHeader = true) => {\n this.state.hasHeader !== hasHeader && this.setState({ hasHeader });\n };\n\n private setHasFooter = (hasFooter = true) => {\n this.state.hasFooter !== hasFooter && this.setState({ hasFooter });\n };\n\n private setHasPanel = (hasPanel = false) => {\n this.state.hasPanel !== hasPanel && this.setState({ hasPanel });\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,7 @@
1
- import type { AriaAttributes, HTMLAttributes } from 'react';
1
+ import type { AriaAttributes, HTMLAttributes, JSX } from 'react';
2
2
  import React from 'react';
3
3
  import type { CommonProps } from '../../internal/CommonWrapper';
4
+ import type { TGetRootNode } from '../../lib/rootNode';
4
5
  import { SidePageBody } from './SidePageBody';
5
6
  import { SidePageContainer } from './SidePageContainer';
6
7
  import { SidePageFooter } from './SidePageFooter';
@@ -56,6 +57,8 @@ type DefaultProps = Required<Pick<SidePageProps, 'disableAnimations' | 'offset'
56
57
  export declare class SidePage extends React.Component<SidePageProps, SidePageState> {
57
58
  static __KONTUR_REACT_UI__: string;
58
59
  static displayName: string;
60
+ getRootNode: TGetRootNode;
61
+ private setRootNode;
59
62
  static Header: typeof SidePageHeader;
60
63
  static Body: typeof SidePageBody;
61
64
  static Footer: typeof SidePageFooter;
@@ -70,7 +73,7 @@ export declare class SidePage extends React.Component<SidePageProps, SidePageSta
70
73
  private layout;
71
74
  private header;
72
75
  private footer;
73
- rootRef: React.RefObject<HTMLDivElement>;
76
+ rootRef: React.RefObject<HTMLDivElement | null>;
74
77
  componentDidMount(): void;
75
78
  componentDidUpdate(prevProps: SidePageProps): void;
76
79
  componentWillUnmount(): void;
@@ -1 +1 @@
1
- {"version":3,"names":["React","LayoutEvents","ThemeContext","CommonWrapper","responsiveLayout","getRootNode","rootNode","getDOMRect","Gapped","isNonNullable","ModalSeparator","withRenderEnvironment","getStyles","SidePageContext","SidePageFooterDataTids","root","SidePageFooter","_class","_SidePageFooter","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","context","state","fixed","content","layoutSub","update","setProperStyles","refContent","node","wrapper","wrapperRect","contentRect","top","setState","_inheritsLoose","_proto","prototype","componentDidMount","_this$context$setHasF","_this$context","_this$context$setHasP","_this$context2","footerRef","addListener","globalObject","setHasFooter","setHasPanel","props","panel","componentDidUpdate","prevProps","_this$context$setHasP2","_this$context3","componentWillUnmount","_this$context$setHasF2","_this$context4","_this$context$setHasP3","_this$context5","remove","getSticky","sticky","isMobileLayout","render","_this2","styles","emotion","createElement","Consumer","theme","renderMain","_this3","separator","_extends","rootNodeRef","setRootNode","style","height","getContentHeight","className","footerWrapper","_ref","_this3$cx","_this3$cx2","getWidth","cx","footer","positionStatic","width","footerContent","footerFixed","panelFixed","mobileFooterContent","ref","gap","vertical","children","Component","__KONTUR_REACT_UI__","displayName","contextType"],"sources":["SidePageFooter.tsx"],"sourcesContent":["import React from 'react';\nimport type { Emotion } from '@emotion/css/types/create-instance';\n\nimport type { GlobalObject } from '../../lib/globalObject';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { responsiveLayout } from '../ResponsiveLayout/decorator';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getRootNode, rootNode } from '../../lib/rootNode';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport type { GappedProps } from '../Gapped';\nimport { Gapped } from '../Gapped';\nimport { isNonNullable } from '../../lib/utils';\nimport { ModalSeparator } from '../Modal/ModalSeparator';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment';\n\nimport { getStyles } from './SidePage.styles';\nimport type { SidePageContextType } from './SidePageContext';\nimport { SidePageContext } from './SidePageContext';\n\nexport interface SidePageFooterProps extends Omit<CommonProps, 'children'> {\n /** @ignore */\n children?: React.ReactNode | ((fixed: boolean) => React.ReactNode);\n\n /** Включает серый цвет в футере. */\n panel?: boolean;\n\n /** Закрепляет футер снизу сайдпейджа. */\n sticky?: boolean;\n\n /** Задает расстояние между элементами футера в пикселях. */\n gap?: GappedProps['gap'];\n}\n\ninterface SidePageFooterState {\n fixed: boolean;\n}\n\nexport const SidePageFooterDataTids = {\n root: 'SidePageFooter__root',\n} as const;\n\n/**\n * Футер сайдпейджа.\n *\n * @visibleName SidePage.Footer\n */\n@withRenderEnvironment\n@responsiveLayout\n@rootNode\nexport class SidePageFooter extends React.Component<React.PropsWithChildren<SidePageFooterProps>> {\n public static __KONTUR_REACT_UI__ = 'SidePageFooter';\n public static displayName = 'SidePageFooter';\n\n public static contextType = SidePageContext;\n public context: SidePageContextType = this.context;\n private isMobileLayout!: boolean;\n\n public state: SidePageFooterState = {\n fixed: false,\n };\n\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n private content: HTMLElement | null = null;\n private layoutSub: ReturnType<typeof LayoutEvents.addListener> | null = null;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n this.context.footerRef(this);\n this.update();\n this.layoutSub = LayoutEvents.addListener(this.update, this.globalObject);\n this.context.setHasFooter?.();\n this.context.setHasPanel?.(this.props.panel);\n }\n\n public componentDidUpdate(prevProps: Readonly<SidePageFooterProps>) {\n this.props.panel !== prevProps.panel && this.context.setHasPanel?.(this.props.panel);\n }\n\n public componentWillUnmount() {\n this.context.footerRef(null);\n if (this.layoutSub) {\n this.layoutSub.remove();\n }\n this.context.setHasFooter?.(false);\n this.context.setHasPanel?.(false);\n }\n\n public getSticky() {\n if (typeof this.props.sticky !== 'undefined') {\n return this.props.sticky;\n }\n\n if (this.isMobileLayout) {\n return false;\n }\n\n return true;\n }\n\n public render(): JSX.Element {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public update = () => {\n this.setProperStyles();\n };\n\n private renderMain() {\n const separator: React.ReactNode = (this.props.panel || this.state.fixed) && (\n <ModalSeparator fixed={this.state.fixed} />\n );\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div\n data-tid={SidePageFooterDataTids.root}\n style={{ height: this.getContentHeight() }}\n className={this.styles.footerWrapper()}\n >\n <SidePageContext.Consumer>\n {({ getWidth }) => (\n <div\n className={this.cx(this.styles.footer(this.theme), {\n [this.styles.positionStatic()]: !this.getSticky(),\n })}\n style={{\n width: getWidth(),\n }}\n >\n {separator}\n <div\n className={this.cx(this.styles.footerContent(this.theme), {\n [this.styles.footerFixed(this.theme)]: this.state.fixed,\n [this.styles.panel(this.theme)]: !!this.props.panel,\n [this.styles.panelFixed(this.theme)]: !!this.props.panel && this.state.fixed,\n [this.styles.mobileFooterContent(this.theme)]: this.isMobileLayout,\n })}\n ref={this.refContent}\n >\n {isNonNullable(this.props.gap) ? (\n <Gapped vertical={this.isMobileLayout} gap={this.props.gap}>\n {this.props.children}\n </Gapped>\n ) : (\n this.props.children\n )}\n </div>\n </div>\n )}\n </SidePageContext.Consumer>\n </div>\n </CommonWrapper>\n );\n }\n\n private refContent = (node: HTMLElement | null) => {\n this.content = node;\n };\n\n private setProperStyles = () => {\n const wrapper = getRootNode(this);\n if (wrapper && this.content) {\n const wrapperRect = getDOMRect(wrapper);\n const contentRect = getDOMRect(this.content);\n const fixed = wrapperRect.top > contentRect.top;\n this.setState({ fixed });\n }\n };\n\n private getContentHeight() {\n if (!this.content) {\n return 'auto';\n }\n return getDOMRect(this.content).height;\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","LayoutEvents","ThemeContext","CommonWrapper","responsiveLayout","getRootNode","rootNode","getDOMRect","Gapped","isNonNullable","ModalSeparator","withRenderEnvironment","getStyles","SidePageContext","SidePageFooterDataTids","root","SidePageFooter","_class","_SidePageFooter","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","context","state","fixed","content","layoutSub","update","setProperStyles","refContent","node","wrapper","wrapperRect","contentRect","top","setState","_inheritsLoose","_proto","prototype","componentDidMount","_this$context$setHasF","_this$context","_this$context$setHasP","_this$context2","footerRef","addListener","globalObject","setHasFooter","setHasPanel","props","panel","componentDidUpdate","prevProps","_this$context$setHasP2","_this$context3","componentWillUnmount","_this$context$setHasF2","_this$context4","_this$context$setHasP3","_this$context5","remove","getSticky","sticky","isMobileLayout","render","_this2","styles","emotion","createElement","Consumer","theme","renderMain","_this3","separator","_extends","rootNodeRef","setRootNode","style","height","getContentHeight","className","footerWrapper","_ref","_this3$cx","_this3$cx2","getWidth","cx","footer","positionStatic","width","footerContent","footerFixed","panelFixed","mobileFooterContent","ref","gap","vertical","children","Component","__KONTUR_REACT_UI__","displayName","contextType"],"sources":["SidePageFooter.tsx"],"sourcesContent":["import React, { type JSX } from 'react';\nimport type { Emotion } from '@emotion/css/types/create-instance';\n\nimport type { GlobalObject } from '../../lib/globalObject';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { responsiveLayout } from '../ResponsiveLayout/decorator';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getRootNode, rootNode } from '../../lib/rootNode';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport type { GappedProps } from '../Gapped';\nimport { Gapped } from '../Gapped';\nimport { isNonNullable } from '../../lib/utils';\nimport { ModalSeparator } from '../Modal/ModalSeparator';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment';\n\nimport { getStyles } from './SidePage.styles';\nimport type { SidePageContextType } from './SidePageContext';\nimport { SidePageContext } from './SidePageContext';\n\nexport interface SidePageFooterProps extends Omit<CommonProps, 'children'> {\n /** @ignore */\n children?: React.ReactNode | ((fixed: boolean) => React.ReactNode);\n\n /** Включает серый цвет в футере. */\n panel?: boolean;\n\n /** Закрепляет футер снизу сайдпейджа. */\n sticky?: boolean;\n\n /** Задает расстояние между элементами футера в пикселях. */\n gap?: GappedProps['gap'];\n}\n\ninterface SidePageFooterState {\n fixed: boolean;\n}\n\nexport const SidePageFooterDataTids = {\n root: 'SidePageFooter__root',\n} as const;\n\n/**\n * Футер сайдпейджа.\n *\n * @visibleName SidePage.Footer\n */\n@withRenderEnvironment\n@responsiveLayout\n@rootNode\nexport class SidePageFooter extends React.Component<React.PropsWithChildren<SidePageFooterProps>> {\n public static __KONTUR_REACT_UI__ = 'SidePageFooter';\n public static displayName = 'SidePageFooter';\n\n public static contextType = SidePageContext;\n public context: SidePageContextType = this.context;\n private isMobileLayout!: boolean;\n\n public state: SidePageFooterState = {\n fixed: false,\n };\n\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n private content: HTMLElement | null = null;\n private layoutSub: ReturnType<typeof LayoutEvents.addListener> | null = null;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n this.context.footerRef(this);\n this.update();\n this.layoutSub = LayoutEvents.addListener(this.update, this.globalObject);\n this.context.setHasFooter?.();\n this.context.setHasPanel?.(this.props.panel);\n }\n\n public componentDidUpdate(prevProps: Readonly<SidePageFooterProps>) {\n this.props.panel !== prevProps.panel && this.context.setHasPanel?.(this.props.panel);\n }\n\n public componentWillUnmount() {\n this.context.footerRef(null);\n if (this.layoutSub) {\n this.layoutSub.remove();\n }\n this.context.setHasFooter?.(false);\n this.context.setHasPanel?.(false);\n }\n\n public getSticky() {\n if (typeof this.props.sticky !== 'undefined') {\n return this.props.sticky;\n }\n\n if (this.isMobileLayout) {\n return false;\n }\n\n return true;\n }\n\n public render(): JSX.Element {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public update = () => {\n this.setProperStyles();\n };\n\n private renderMain() {\n const separator: React.ReactNode = (this.props.panel || this.state.fixed) && (\n <ModalSeparator fixed={this.state.fixed} />\n );\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div\n data-tid={SidePageFooterDataTids.root}\n style={{ height: this.getContentHeight() }}\n className={this.styles.footerWrapper()}\n >\n <SidePageContext.Consumer>\n {({ getWidth }) => (\n <div\n className={this.cx(this.styles.footer(this.theme), {\n [this.styles.positionStatic()]: !this.getSticky(),\n })}\n style={{\n width: getWidth(),\n }}\n >\n {separator}\n <div\n className={this.cx(this.styles.footerContent(this.theme), {\n [this.styles.footerFixed(this.theme)]: this.state.fixed,\n [this.styles.panel(this.theme)]: !!this.props.panel,\n [this.styles.panelFixed(this.theme)]: !!this.props.panel && this.state.fixed,\n [this.styles.mobileFooterContent(this.theme)]: this.isMobileLayout,\n })}\n ref={this.refContent}\n >\n {isNonNullable(this.props.gap) ? (\n <Gapped vertical={this.isMobileLayout} gap={this.props.gap}>\n {this.props.children}\n </Gapped>\n ) : (\n this.props.children\n )}\n </div>\n </div>\n )}\n </SidePageContext.Consumer>\n </div>\n </CommonWrapper>\n );\n }\n\n private refContent = (node: HTMLElement | null) => {\n this.content = node;\n };\n\n private setProperStyles = () => {\n const wrapper = getRootNode(this);\n if (wrapper && this.content) {\n const wrapperRect = getDOMRect(wrapper);\n const contentRect = getDOMRect(this.content);\n const fixed = wrapperRect.top > contentRect.top;\n this.setState({ fixed });\n }\n };\n\n private getContentHeight() {\n if (!this.content) {\n return 'auto';\n }\n return getDOMRect(this.content).height;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React, { type JSX } from 'react';
2
2
  import type { CommonProps } from '../../internal/CommonWrapper';
3
3
  import type { TGetRootNode } from '../../lib/rootNode';
4
4
  import type { GappedProps } from '../Gapped';
@@ -1 +1 @@
1
- {"version":3,"names":["React","throttle","Sticky","isFunction","ThemeContext","CommonWrapper","responsiveLayout","getRootNode","rootNode","ModalSeparator","withRenderEnvironment","getStyles","SidePageContext","SidePageCloseButton","SidePageHeaderDataTids","root","close","SidePageHeader","_class","_SidePageHeader","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","context","state","isNativeStuck","isReadyToStuck","sticky","componentDidMount","_getRootNode","parentNode","addEventListener","throttleHandleScroll","setHasHeader","headerRef","componentWillUnmount","_getRootNode2","removeEventListener","event","target","currentTarget","scrollTop","setState","update","_this$sticky","reflow","renderHeader","fixed","_this$cx","_this$cx2","isDisplayed","props","hasSeparator","createElement","className","cx","styles","header","theme","headerFixed","mobileHeader","isMobileLayout","renderClose","title","mobileTitle","titleCut","cutTitleOnStuck","children","_this$cx3","stickyOffset","parseInt","sidePageHeaderStickyOffset","wrapperClose","wrapperCloseFixed","mobileWrapperClose","side","offset","isHeaderFixed","isMobile","stickyRef","el","_inheritsLoose","_proto","prototype","render","_this2","emotion","Consumer","renderMain","getStickyProp","_this$cx4","isStickyDesktop","isStickyMobile","_extends","rootNodeRef","setRootNode","headerWrapper","headerNativeStuck","ref","Component","__KONTUR_REACT_UI__","displayName","contextType","defaultProps"],"sources":["SidePageHeader.tsx"],"sourcesContent":["import React from 'react';\nimport throttle from 'lodash.throttle';\nimport type { Emotion } from '@emotion/css/types/create-instance';\n\nimport { Sticky } from '../Sticky';\nimport { isFunction } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { responsiveLayout } from '../ResponsiveLayout/decorator';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getRootNode, rootNode } from '../../lib/rootNode';\nimport { ModalSeparator } from '../Modal/ModalSeparator';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment';\n\nimport { getStyles } from './SidePage.styles';\nimport type { SidePageContextType } from './SidePageContext';\nimport { SidePageContext } from './SidePageContext';\nimport { SidePageCloseButton } from './SidePageCloseButton';\n\nexport interface SidePageHeaderProps extends Omit<CommonProps, 'children'> {\n children?: React.ReactNode | ((fixed: boolean) => React.ReactNode);\n /** Закрепляет хедер сверху сайдпейджа. */\n sticky?: boolean;\n\n /** Определяет, нужно ли показывать ModalSeparator. */\n hasSeparator?: boolean;\n\n /**\n * Обрезает длинный заголовок при «залипании» шапки.\n * @default false.\n */\n cutTitleOnStuck?: boolean;\n}\n\nexport interface SidePageHeaderState {\n isNativeStuck: boolean;\n isReadyToStuck: boolean;\n}\n\nexport const SidePageHeaderDataTids = {\n root: 'SidePageHeader__root',\n close: 'SidePage__close',\n} as const;\n\n/**\n * Шапка сайдпейджа\n *\n * @visibleName SidePage.Header\n */\n@withRenderEnvironment\n@responsiveLayout\n@rootNode\nexport class SidePageHeader extends React.Component<SidePageHeaderProps, SidePageHeaderState> {\n public static __KONTUR_REACT_UI__ = 'SidePageHeader';\n public static displayName = 'SidePageHeader';\n\n public static contextType = SidePageContext;\n public context: SidePageContextType = this.context;\n\n private isMobileLayout!: boolean;\n\n public state: SidePageHeaderState = {\n isNativeStuck: true,\n isReadyToStuck: false,\n };\n\n public static defaultProps: Partial<SidePageHeaderProps> = {\n hasSeparator: false,\n };\n\n private theme!: Theme;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private sticky: Sticky | null = null;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount = () => {\n getRootNode(this)?.parentNode?.addEventListener?.('scroll', this.throttleHandleScroll, true);\n this.context.setHasHeader?.();\n this.context.headerRef(this);\n };\n\n public componentWillUnmount = () => {\n getRootNode(this)?.parentNode?.removeEventListener?.('scroll', this.throttleHandleScroll, true);\n this.context.setHasHeader?.(false);\n this.context.headerRef(null);\n };\n\n private throttleHandleScroll = throttle((event: Event) => {\n const target = event.currentTarget as HTMLElement;\n if (target && typeof target.scrollTop === 'number') {\n this.setState({ isNativeStuck: target.scrollTop === 0 });\n }\n this.update();\n }, 5);\n\n public update = () => {\n this.sticky?.reflow();\n };\n\n public render(): JSX.Element {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public getStickyProp() {\n if (typeof this.props.sticky !== 'undefined') {\n return this.props.sticky;\n }\n\n if (this.isMobileLayout) {\n return false;\n }\n\n return true;\n }\n\n private renderMain() {\n const isStickyDesktop = !this.isMobileLayout && this.getStickyProp();\n const isStickyMobile = this.isMobileLayout && this.getStickyProp();\n\n const header = this.renderHeader;\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div\n data-tid={SidePageHeaderDataTids.root}\n className={this.cx(this.styles.headerWrapper(), {\n [this.styles.headerNativeStuck(this.theme)]: this.state.isNativeStuck,\n })}\n >\n {!this.state.isNativeStuck && (isStickyDesktop || isStickyMobile) ? (\n <Sticky ref={this.stickyRef} side=\"top\">\n {header}\n </Sticky>\n ) : (\n header()\n )}\n </div>\n </CommonWrapper>\n );\n }\n\n private renderHeader = (fixed = false) => {\n const isDisplayed = this.props.hasSeparator || fixed;\n return (\n <div>\n <div\n className={this.cx(this.styles.header(this.theme), {\n [this.styles.headerFixed(this.theme)]: fixed,\n [this.styles.mobileHeader(this.theme)]: this.isMobileLayout,\n })}\n >\n {this.renderClose(fixed)}\n <div\n className={this.cx(this.styles.title(this.theme), {\n [this.styles.mobileTitle(this.theme)]: this.isMobileLayout,\n [this.styles.titleCut()]: fixed && this.props.cutTitleOnStuck,\n })}\n >\n {isFunction(this.props.children) ? this.props.children(fixed) : this.props.children}\n </div>\n </div>\n {isDisplayed && <ModalSeparator fixed={fixed} />}\n </div>\n );\n };\n\n private renderClose = (fixed: boolean) => {\n const stickyOffset = parseInt(this.theme.sidePageHeaderStickyOffset);\n return (\n <div\n className={this.cx(this.styles.wrapperClose(this.theme), {\n [this.styles.wrapperCloseFixed(this.theme)]: fixed,\n [this.styles.mobileWrapperClose(this.theme)]: this.isMobileLayout,\n })}\n >\n {!this.isMobileLayout ? (\n <Sticky side=\"top\" offset={stickyOffset}>\n <SidePageCloseButton isHeaderFixed={fixed} />\n </Sticky>\n ) : (\n <SidePageCloseButton isHeaderFixed={fixed} isMobile={this.isMobileLayout} />\n )}\n </div>\n );\n };\n\n private stickyRef = (el: Sticky | null) => {\n this.sticky = el;\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","throttle","Sticky","isFunction","ThemeContext","CommonWrapper","responsiveLayout","getRootNode","rootNode","ModalSeparator","withRenderEnvironment","getStyles","SidePageContext","SidePageCloseButton","SidePageHeaderDataTids","root","close","SidePageHeader","_class","_SidePageHeader","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","context","state","isNativeStuck","isReadyToStuck","sticky","componentDidMount","_getRootNode","parentNode","addEventListener","throttleHandleScroll","setHasHeader","headerRef","componentWillUnmount","_getRootNode2","removeEventListener","event","target","currentTarget","scrollTop","setState","update","_this$sticky","reflow","renderHeader","fixed","_this$cx","_this$cx2","isDisplayed","props","hasSeparator","createElement","className","cx","styles","header","theme","headerFixed","mobileHeader","isMobileLayout","renderClose","title","mobileTitle","titleCut","cutTitleOnStuck","children","_this$cx3","stickyOffset","parseInt","sidePageHeaderStickyOffset","wrapperClose","wrapperCloseFixed","mobileWrapperClose","side","offset","isHeaderFixed","isMobile","stickyRef","el","_inheritsLoose","_proto","prototype","render","_this2","emotion","Consumer","renderMain","getStickyProp","_this$cx4","isStickyDesktop","isStickyMobile","_extends","rootNodeRef","setRootNode","headerWrapper","headerNativeStuck","ref","Component","__KONTUR_REACT_UI__","displayName","contextType","defaultProps"],"sources":["SidePageHeader.tsx"],"sourcesContent":["import React, { type JSX } from 'react';\nimport throttle from 'lodash.throttle';\nimport type { Emotion } from '@emotion/css/types/create-instance';\n\nimport { Sticky } from '../Sticky';\nimport { isFunction } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { responsiveLayout } from '../ResponsiveLayout/decorator';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getRootNode, rootNode } from '../../lib/rootNode';\nimport { ModalSeparator } from '../Modal/ModalSeparator';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment';\n\nimport { getStyles } from './SidePage.styles';\nimport type { SidePageContextType } from './SidePageContext';\nimport { SidePageContext } from './SidePageContext';\nimport { SidePageCloseButton } from './SidePageCloseButton';\n\nexport interface SidePageHeaderProps extends Omit<CommonProps, 'children'> {\n children?: React.ReactNode | ((fixed: boolean) => React.ReactNode);\n /** Закрепляет хедер сверху сайдпейджа. */\n sticky?: boolean;\n\n /** Определяет, нужно ли показывать ModalSeparator. */\n hasSeparator?: boolean;\n\n /**\n * Обрезает длинный заголовок при «залипании» шапки.\n * @default false.\n */\n cutTitleOnStuck?: boolean;\n}\n\nexport interface SidePageHeaderState {\n isNativeStuck: boolean;\n isReadyToStuck: boolean;\n}\n\nexport const SidePageHeaderDataTids = {\n root: 'SidePageHeader__root',\n close: 'SidePage__close',\n} as const;\n\n/**\n * Шапка сайдпейджа\n *\n * @visibleName SidePage.Header\n */\n@withRenderEnvironment\n@responsiveLayout\n@rootNode\nexport class SidePageHeader extends React.Component<SidePageHeaderProps, SidePageHeaderState> {\n public static __KONTUR_REACT_UI__ = 'SidePageHeader';\n public static displayName = 'SidePageHeader';\n\n public static contextType = SidePageContext;\n public context: SidePageContextType = this.context;\n\n private isMobileLayout!: boolean;\n\n public state: SidePageHeaderState = {\n isNativeStuck: true,\n isReadyToStuck: false,\n };\n\n public static defaultProps: Partial<SidePageHeaderProps> = {\n hasSeparator: false,\n };\n\n private theme!: Theme;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private sticky: Sticky | null = null;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount = () => {\n getRootNode(this)?.parentNode?.addEventListener?.('scroll', this.throttleHandleScroll, true);\n this.context.setHasHeader?.();\n this.context.headerRef(this);\n };\n\n public componentWillUnmount = () => {\n getRootNode(this)?.parentNode?.removeEventListener?.('scroll', this.throttleHandleScroll, true);\n this.context.setHasHeader?.(false);\n this.context.headerRef(null);\n };\n\n private throttleHandleScroll = throttle((event: Event) => {\n const target = event.currentTarget as HTMLElement;\n if (target && typeof target.scrollTop === 'number') {\n this.setState({ isNativeStuck: target.scrollTop === 0 });\n }\n this.update();\n }, 5);\n\n public update = () => {\n this.sticky?.reflow();\n };\n\n public render(): JSX.Element {\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public getStickyProp() {\n if (typeof this.props.sticky !== 'undefined') {\n return this.props.sticky;\n }\n\n if (this.isMobileLayout) {\n return false;\n }\n\n return true;\n }\n\n private renderMain() {\n const isStickyDesktop = !this.isMobileLayout && this.getStickyProp();\n const isStickyMobile = this.isMobileLayout && this.getStickyProp();\n\n const header = this.renderHeader;\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div\n data-tid={SidePageHeaderDataTids.root}\n className={this.cx(this.styles.headerWrapper(), {\n [this.styles.headerNativeStuck(this.theme)]: this.state.isNativeStuck,\n })}\n >\n {!this.state.isNativeStuck && (isStickyDesktop || isStickyMobile) ? (\n <Sticky ref={this.stickyRef} side=\"top\">\n {header}\n </Sticky>\n ) : (\n header()\n )}\n </div>\n </CommonWrapper>\n );\n }\n\n private renderHeader = (fixed = false) => {\n const isDisplayed = this.props.hasSeparator || fixed;\n return (\n <div>\n <div\n className={this.cx(this.styles.header(this.theme), {\n [this.styles.headerFixed(this.theme)]: fixed,\n [this.styles.mobileHeader(this.theme)]: this.isMobileLayout,\n })}\n >\n {this.renderClose(fixed)}\n <div\n className={this.cx(this.styles.title(this.theme), {\n [this.styles.mobileTitle(this.theme)]: this.isMobileLayout,\n [this.styles.titleCut()]: fixed && this.props.cutTitleOnStuck,\n })}\n >\n {isFunction(this.props.children) ? this.props.children(fixed) : this.props.children}\n </div>\n </div>\n {isDisplayed && <ModalSeparator fixed={fixed} />}\n </div>\n );\n };\n\n private renderClose = (fixed: boolean) => {\n const stickyOffset = parseInt(this.theme.sidePageHeaderStickyOffset);\n return (\n <div\n className={this.cx(this.styles.wrapperClose(this.theme), {\n [this.styles.wrapperCloseFixed(this.theme)]: fixed,\n [this.styles.mobileWrapperClose(this.theme)]: this.isMobileLayout,\n })}\n >\n {!this.isMobileLayout ? (\n <Sticky side=\"top\" offset={stickyOffset}>\n <SidePageCloseButton isHeaderFixed={fixed} />\n </Sticky>\n ) : (\n <SidePageCloseButton isHeaderFixed={fixed} isMobile={this.isMobileLayout} />\n )}\n </div>\n );\n };\n\n private stickyRef = (el: Sticky | null) => {\n this.sticky = el;\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React, { type JSX } from 'react';
2
2
  import type { CommonProps } from '../../internal/CommonWrapper';
3
3
  import type { TGetRootNode } from '../../lib/rootNode';
4
4
  import type { SidePageContextType } from './SidePageContext';
@@ -13,7 +13,7 @@ import { Toast } from '../Toast';
13
13
  export declare class SingleToast extends React.Component<ToastProps> {
14
14
  static __KONTUR_REACT_UI__: string;
15
15
  static displayName: string;
16
- static ref: React.RefObject<Toast>;
16
+ static ref: React.RefObject<Toast | null>;
17
17
  static close: ToastClose;
18
18
  /**
19
19
  * Показывает тост с `notification` в качестве сообщения.
@@ -41,10 +41,10 @@ export var Sticky = withRenderEnvironment(_class = rootNode(_class = (_Sticky =
41
41
  };
42
42
  _this.reflowCounter = 0;
43
43
  _this.refWrapper = function (ref) {
44
- return _this.wrapper = ref;
44
+ _this.wrapper = ref;
45
45
  };
46
46
  _this.refInner = function (ref) {
47
- return _this.inner = ref;
47
+ _this.inner = ref;
48
48
  };
49
49
 
50
50
  /**
@@ -1 +1 @@
1
- {"version":3,"names":["React","shallowEqual","warning","LayoutEvents","isFunction","ZIndex","CommonWrapper","rootNode","getDOMRect","createPropsGetter","withRenderEnvironment","getStyles","MAX_REFLOW_RETRIES","StickyDataTids","root","Sticky","_class","_Sticky","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","defaultProps","state","fixed","deltaHeight","stopped","relativeTop","layoutSubscription","remove","reflowCounter","refWrapper","ref","wrapper","refInner","inner","reflow","_this$globalObject$do","globalObject","document","documentElement","windowHeight","innerHeight","clientHeight","_getDOMRect","top","bottom","left","width","_getDOMRect2","height","_this$props","props","getStop","side","_this$state","prevFixed","_this$state$height","prevHeight","offset","Math","ceil","floor","setState","stop","stopRect","outerHeight","_inheritsLoose","_proto","prototype","componentDidMount","addListener","componentWillUnmount","componentDidUpdate","prevProps","prevState","render","styles","emotion","renderMain","_this$cx","children","_this$state2","innerStyle","createElement","_extends","rootNodeRef","setRootNode","className","priority","applyZIndex","cx","style","wrapperRef","container","Component","__KONTUR_REACT_UI__","displayName"],"sources":["Sticky.tsx"],"sourcesContent":["import React from 'react';\nimport shallowEqual from 'shallowequal';\nimport type { Emotion } from '@emotion/css/types/create-instance';\nimport warning from 'warning';\n\nimport type { GlobalObject } from '../../lib/globalObject';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport type { Nullable } from '../../typings/utility-types';\nimport { isFunction } from '../../lib/utils';\nimport { ZIndex } from '../../internal/ZIndex';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment';\n\nimport { getStyles } from './Sticky.styles';\n\nconst MAX_REFLOW_RETRIES = 5;\n\nexport interface StickyProps extends Omit<CommonProps, 'children'> {\n /** Задает сторону залипания. */\n side: 'top' | 'bottom';\n\n /** Задает отступ от края экрана в пикселях, на который сдвигается элемент в залипшем состоянии.\n * @default 0 */\n offset?: number;\n\n /** Задает функцию, которая возвращает DOM-элемент, который нельзя пересекать. */\n getStop?: () => Nullable<HTMLElement>;\n\n /** @ignore */\n children?: React.ReactNode | ((fixed: boolean) => React.ReactNode);\n}\n\nexport interface StickyState {\n fixed: boolean;\n deltaHeight: number;\n height?: number;\n width?: number;\n left?: number;\n stopped: boolean;\n relativeTop: number;\n}\n\nexport const StickyDataTids = {\n root: 'Sticky__root',\n} as const;\n\ntype DefaultProps = Required<Pick<StickyProps, 'offset'>>;\n\n/**\n * `Sticky` позволяет закреплять элемент интерфейса в определенной позиции на экране при прокрутке страницы.\n * Это полезно для создания \"прилипающих\" элементов, которые остаются видимыми при прокрутке содержимого.\n */\n@withRenderEnvironment\n@rootNode\nexport class Sticky extends React.Component<StickyProps, StickyState> {\n public static __KONTUR_REACT_UI__ = 'Sticky';\n public static displayName = 'Sticky';\n\n public static defaultProps: DefaultProps = { offset: 0 };\n\n private getProps = createPropsGetter(Sticky.defaultProps);\n\n public state: StickyState = {\n fixed: false,\n deltaHeight: 0,\n stopped: false,\n relativeTop: 0,\n };\n\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private wrapper: Nullable<HTMLElement>;\n private inner: Nullable<HTMLElement>;\n private layoutSubscription: { remove: Nullable<() => void> } = { remove: null };\n private reflowCounter = 0;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n this.reflow();\n\n this.layoutSubscription = LayoutEvents.addListener(this.reflow, this.globalObject);\n }\n\n public componentWillUnmount() {\n if (this.layoutSubscription.remove) {\n this.layoutSubscription.remove();\n }\n }\n\n public componentDidUpdate(prevProps: StickyProps, prevState: StickyState) {\n if (!shallowEqual(prevProps, this.props) || !shallowEqual(prevState, this.state)) {\n if (this.reflowCounter < MAX_REFLOW_RETRIES) {\n this.reflow();\n this.reflowCounter += 1;\n return;\n }\n }\n this.reflowCounter = 0;\n }\n\n public render() {\n this.styles = getStyles(this.emotion);\n return this.renderMain();\n }\n\n private renderMain() {\n let { children } = this.props;\n const { side } = this.props;\n const offset = this.getProps().offset;\n const { fixed, stopped, relativeTop, deltaHeight, width, height, left } = this.state;\n const innerStyle: React.CSSProperties = {};\n\n if (fixed) {\n if (stopped) {\n innerStyle.top = relativeTop;\n innerStyle[side === 'top' ? 'marginTop' : 'marginBottom'] = deltaHeight;\n } else {\n innerStyle.width = width;\n innerStyle[side] = offset;\n innerStyle.left = left;\n }\n }\n\n if (isFunction(children)) {\n children = children(fixed);\n }\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div data-tid={StickyDataTids.root} ref={this.refWrapper} className={this.styles.wrapper()}>\n <ZIndex\n priority=\"Sticky\"\n applyZIndex={fixed}\n className={this.cx(this.styles.inner(), {\n [this.styles.fixed()]: fixed && !stopped,\n [this.styles.stopped()]: stopped,\n })}\n style={innerStyle}\n wrapperRef={this.refInner}\n >\n <div className={this.styles.container()}>{children}</div>\n </ZIndex>\n {fixed && !stopped ? <div style={{ width, height }} /> : null}\n </div>\n </CommonWrapper>\n );\n }\n\n private refWrapper = (ref: Nullable<HTMLElement>) => (this.wrapper = ref);\n\n private refInner = (ref: Nullable<HTMLElement>) => (this.inner = ref);\n\n /**\n * Пересчитать габариты и позицию залипшего элемента\n *\n * @public\n */\n public reflow = () => {\n if (!this.globalObject.document?.documentElement) {\n warning(false, 'There is no \"documentElement\" in document');\n return;\n }\n\n const windowHeight = this.globalObject.innerHeight || this.globalObject.document.documentElement.clientHeight;\n if (!this.wrapper || !this.inner) {\n return;\n }\n const { top, bottom, left, width } = getDOMRect(this.wrapper);\n const { height } = getDOMRect(this.inner);\n const { getStop, side } = this.props;\n const { fixed: prevFixed, height: prevHeight = height } = this.state;\n const offset = this.getProps().offset;\n const fixed = side === 'top' ? Math.ceil(top) < offset : Math.floor(bottom) > windowHeight - offset;\n\n this.setState({ fixed, left });\n\n if (fixed && !prevFixed) {\n this.setState({ width, height });\n }\n\n if (fixed) {\n this.setState({ width });\n const stop = getStop && getStop();\n if (stop) {\n const deltaHeight = prevHeight - height;\n const stopRect = getDOMRect(stop);\n const outerHeight = height + offset;\n let stopped = false;\n let relativeTop = 0;\n\n if (side === 'top') {\n stopped = stopRect.top - outerHeight < 0;\n relativeTop = stopRect.top - prevHeight - top;\n } else {\n stopped = stopRect.bottom + outerHeight > windowHeight;\n relativeTop = stopRect.bottom - top;\n }\n\n this.setState({ relativeTop, deltaHeight, stopped });\n }\n }\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","shallowEqual","warning","LayoutEvents","isFunction","ZIndex","CommonWrapper","rootNode","getDOMRect","createPropsGetter","withRenderEnvironment","getStyles","MAX_REFLOW_RETRIES","StickyDataTids","root","Sticky","_class","_Sticky","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","defaultProps","state","fixed","deltaHeight","stopped","relativeTop","layoutSubscription","remove","reflowCounter","refWrapper","ref","wrapper","refInner","inner","reflow","_this$globalObject$do","globalObject","document","documentElement","windowHeight","innerHeight","clientHeight","_getDOMRect","top","bottom","left","width","_getDOMRect2","height","_this$props","props","getStop","side","_this$state","prevFixed","_this$state$height","prevHeight","offset","Math","ceil","floor","setState","stop","stopRect","outerHeight","_inheritsLoose","_proto","prototype","componentDidMount","addListener","componentWillUnmount","componentDidUpdate","prevProps","prevState","render","styles","emotion","renderMain","_this$cx","children","_this$state2","innerStyle","createElement","_extends","rootNodeRef","setRootNode","className","priority","applyZIndex","cx","style","wrapperRef","container","Component","__KONTUR_REACT_UI__","displayName"],"sources":["Sticky.tsx"],"sourcesContent":["import React from 'react';\nimport shallowEqual from 'shallowequal';\nimport type { Emotion } from '@emotion/css/types/create-instance';\nimport warning from 'warning';\n\nimport type { GlobalObject } from '../../lib/globalObject';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport type { Nullable } from '../../typings/utility-types';\nimport { isFunction } from '../../lib/utils';\nimport { ZIndex } from '../../internal/ZIndex';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment';\n\nimport { getStyles } from './Sticky.styles';\n\nconst MAX_REFLOW_RETRIES = 5;\n\nexport interface StickyProps extends Omit<CommonProps, 'children'> {\n /** Задает сторону залипания. */\n side: 'top' | 'bottom';\n\n /** Задает отступ от края экрана в пикселях, на который сдвигается элемент в залипшем состоянии.\n * @default 0 */\n offset?: number;\n\n /** Задает функцию, которая возвращает DOM-элемент, который нельзя пересекать. */\n getStop?: () => Nullable<HTMLElement>;\n\n /** @ignore */\n children?: React.ReactNode | ((fixed: boolean) => React.ReactNode);\n}\n\nexport interface StickyState {\n fixed: boolean;\n deltaHeight: number;\n height?: number;\n width?: number;\n left?: number;\n stopped: boolean;\n relativeTop: number;\n}\n\nexport const StickyDataTids = {\n root: 'Sticky__root',\n} as const;\n\ntype DefaultProps = Required<Pick<StickyProps, 'offset'>>;\n\n/**\n * `Sticky` позволяет закреплять элемент интерфейса в определенной позиции на экране при прокрутке страницы.\n * Это полезно для создания \"прилипающих\" элементов, которые остаются видимыми при прокрутке содержимого.\n */\n@withRenderEnvironment\n@rootNode\nexport class Sticky extends React.Component<StickyProps, StickyState> {\n public static __KONTUR_REACT_UI__ = 'Sticky';\n public static displayName = 'Sticky';\n\n public static defaultProps: DefaultProps = { offset: 0 };\n\n private getProps = createPropsGetter(Sticky.defaultProps);\n\n public state: StickyState = {\n fixed: false,\n deltaHeight: 0,\n stopped: false,\n relativeTop: 0,\n };\n\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private wrapper: Nullable<HTMLElement>;\n private inner: Nullable<HTMLElement>;\n private layoutSubscription: { remove: Nullable<() => void> } = { remove: null };\n private reflowCounter = 0;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n this.reflow();\n\n this.layoutSubscription = LayoutEvents.addListener(this.reflow, this.globalObject);\n }\n\n public componentWillUnmount() {\n if (this.layoutSubscription.remove) {\n this.layoutSubscription.remove();\n }\n }\n\n public componentDidUpdate(prevProps: StickyProps, prevState: StickyState) {\n if (!shallowEqual(prevProps, this.props) || !shallowEqual(prevState, this.state)) {\n if (this.reflowCounter < MAX_REFLOW_RETRIES) {\n this.reflow();\n this.reflowCounter += 1;\n return;\n }\n }\n this.reflowCounter = 0;\n }\n\n public render() {\n this.styles = getStyles(this.emotion);\n return this.renderMain();\n }\n\n private renderMain() {\n let { children } = this.props;\n const { side } = this.props;\n const offset = this.getProps().offset;\n const { fixed, stopped, relativeTop, deltaHeight, width, height, left } = this.state;\n const innerStyle: React.CSSProperties = {};\n\n if (fixed) {\n if (stopped) {\n innerStyle.top = relativeTop;\n innerStyle[side === 'top' ? 'marginTop' : 'marginBottom'] = deltaHeight;\n } else {\n innerStyle.width = width;\n innerStyle[side] = offset;\n innerStyle.left = left;\n }\n }\n\n if (isFunction(children)) {\n children = children(fixed);\n }\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div data-tid={StickyDataTids.root} ref={this.refWrapper} className={this.styles.wrapper()}>\n <ZIndex\n priority=\"Sticky\"\n applyZIndex={fixed}\n className={this.cx(this.styles.inner(), {\n [this.styles.fixed()]: fixed && !stopped,\n [this.styles.stopped()]: stopped,\n })}\n style={innerStyle}\n wrapperRef={this.refInner}\n >\n <div className={this.styles.container()}>{children}</div>\n </ZIndex>\n {fixed && !stopped ? <div style={{ width, height }} /> : null}\n </div>\n </CommonWrapper>\n );\n }\n\n private refWrapper = (ref: Nullable<HTMLElement>) => {\n this.wrapper = ref;\n };\n\n private refInner = (ref: Nullable<HTMLElement>) => {\n this.inner = ref;\n };\n\n /**\n * Пересчитать габариты и позицию залипшего элемента\n *\n * @public\n */\n public reflow = () => {\n if (!this.globalObject.document?.documentElement) {\n warning(false, 'There is no \"documentElement\" in document');\n return;\n }\n\n const windowHeight = this.globalObject.innerHeight || this.globalObject.document.documentElement.clientHeight;\n if (!this.wrapper || !this.inner) {\n return;\n }\n const { top, bottom, left, width } = getDOMRect(this.wrapper);\n const { height } = getDOMRect(this.inner);\n const { getStop, side } = this.props;\n const { fixed: prevFixed, height: prevHeight = height } = this.state;\n const offset = this.getProps().offset;\n const fixed = side === 'top' ? Math.ceil(top) < offset : Math.floor(bottom) > windowHeight - offset;\n\n this.setState({ fixed, left });\n\n if (fixed && !prevFixed) {\n this.setState({ width, height });\n }\n\n if (fixed) {\n this.setState({ width });\n const stop = getStop && getStop();\n if (stop) {\n const deltaHeight = prevHeight - height;\n const stopRect = getDOMRect(stop);\n const outerHeight = height + offset;\n let stopped = false;\n let relativeTop = 0;\n\n if (side === 'top') {\n stopped = stopRect.top - outerHeight < 0;\n relativeTop = stopRect.top - prevHeight - top;\n } else {\n stopped = stopRect.bottom + outerHeight > windowHeight;\n relativeTop = stopRect.bottom - top;\n }\n\n this.setState({ relativeTop, deltaHeight, stopped });\n }\n }\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["React","ThemeContext","CommonWrapper","getRootNode","rootNode","createPropsGetter","isInstanceOf","withRenderEnvironment","Indicator","getStyles","TabsContext","Tab","TabsDataTids","root","indicatorRoot","Tabs","_class","_Tabs","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","defaultProps","tabs","tabUpdates","on","cb","index","listeners","push","splice","shiftFocus","fromTab","delta","_this2","findIndex","x","id","newIndex","Math","max","min","tab","tabNode","getNode","htmlNode","globalObject","HTMLElement","focus","notifyUpdate","forEach","switchTab","_this$props","props","onValueChange","value","getTab","_ref","find","_ref$getNode","addTab","removeTab","filter","_inheritsLoose","_proto","prototype","render","_this3","_this$props2","width","children","indicatorClassName","ariaDescribedby","_this$getProps","vertical","size","styles","emotion","createElement","Consumer","theme","_this3$cx","_extends","rootNodeRef","setRootNode","className","cx","rootSmall","rootMedium","rootLarge","style","Provider","activeTab","Component","__KONTUR_REACT_UI__","displayName"],"sources":["Tabs.tsx"],"sourcesContent":["import type { AriaAttributes } from 'react';\nimport React from 'react';\nimport type { Emotion } from '@emotion/css/types/create-instance';\n\nimport type { GlobalObject } from '../../lib/globalObject';\nimport type { emptyHandler } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { getRootNode } from '../../lib/rootNode/getRootNode';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport type { SizeProp } from '../../lib/types/props';\nimport { isInstanceOf } from '../../lib/isInstanceOf';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment';\n\nimport { Indicator } from './Indicator';\nimport { getStyles } from './Tabs.styles';\nimport type { TabsContextType } from './TabsContext';\nimport { TabsContext } from './TabsContext';\nimport { Tab } from './Tab';\n\ntype ValueBaseType = string;\ninterface TabType<T extends ValueBaseType> {\n getNode: () => Tab<T> | null;\n id: T;\n}\n\nexport interface TabsProps<T extends ValueBaseType = string> extends CommonProps {\n /** Задает кастомный класс подчёркиванию таба. */\n indicatorClassName?: string;\n\n /** Задает размер контрола. */\n size?: SizeProp;\n\n /** Задает текущий активный `<Tab />`. Принимает `id` таба. */\n value: T;\n\n /** Задает функцию, изменяющую текущий активный `<Tab />`. */\n onValueChange?: (value: T) => void;\n\n /** Задает расположение элементов по вертикали.\n * @default false */\n vertical?: boolean;\n\n /** Задает ширину компонента Tabs. */\n width?: number | string;\n\n /** @ignore */\n 'aria-describedby'?: AriaAttributes['aria-describedby'];\n}\n\nexport const TabsDataTids = {\n root: 'Tabs__root',\n indicatorRoot: 'Indicator__root',\n} as const;\n\ntype DefaultProps = Required<Pick<TabsProps, 'vertical' | 'size'>>;\n\n/**\n * Родитель компонента Tab. Связывает `Tab`'ы в группу и позволяет управлять их состоянием, помогают в навигации.\n *\n * Используйте `Tabs` для второстепенной навигации, для группировки или фильтрации контента.\n *\n * Не используйте `Tabs` для основной навигации. Для этого лучше подходит главное меню на цветной плашке — оно более заметно на странице.\n * Не используйте `Tabs` для переключения состояний — для этого есть RadioGroup, Toggle и Switcher.\n */\n@withRenderEnvironment\n@rootNode\nexport class Tabs<T extends string = string> extends React.Component<TabsProps<T>> {\n public static __KONTUR_REACT_UI__ = 'Tabs';\n public static displayName = 'Tabs';\n\n public static defaultProps: DefaultProps = {\n vertical: false,\n size: 'large',\n };\n\n private getProps = createPropsGetter(Tabs.defaultProps);\n\n public static Tab = Tab;\n\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n\n private tabs: Array<TabType<T>> = [];\n\n private tabUpdates = {\n on: (cb: () => void) => {\n const index = this.listeners.push(cb);\n return () => {\n this.listeners.splice(index, 1);\n };\n },\n };\n\n private listeners: Array<typeof emptyHandler> = [];\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public render(): JSX.Element {\n const { value, width, children, indicatorClassName, 'aria-describedby': ariaDescribedby } = this.props;\n const { vertical, size } = this.getProps();\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div\n data-tid={TabsDataTids.root}\n className={this.cx({\n [this.styles.rootSmall(this.theme)]: size === 'small',\n [this.styles.rootMedium(this.theme)]: size === 'medium',\n [this.styles.rootLarge(this.theme)]: size === 'large',\n [this.styles.vertical()]: vertical,\n })}\n style={{ width }}\n aria-describedby={ariaDescribedby}\n >\n <TabsContext.Provider\n value={{\n vertical,\n activeTab: value,\n size,\n getTab: this.getTab,\n addTab: this.addTab,\n removeTab: this.removeTab,\n notifyUpdate: this.notifyUpdate,\n shiftFocus: this.shiftFocus,\n switchTab: this.switchTab,\n }}\n >\n {children}\n <Indicator\n className={indicatorClassName}\n tabUpdates={this.tabUpdates}\n vertical={this.getProps().vertical}\n />\n </TabsContext.Provider>\n </div>\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private shiftFocus: TabsContextType<T>['shiftFocus'] = (fromTab, delta) => {\n const { tabs } = this;\n const index = tabs.findIndex((x) => x.id === fromTab);\n const newIndex = Math.max(0, Math.min(index + delta, tabs.length - 1));\n const tab = tabs[newIndex];\n\n const tabNode = tab.getNode();\n const htmlNode = getRootNode(tabNode);\n\n if (isInstanceOf(htmlNode, this.globalObject.HTMLElement) && typeof htmlNode.focus === 'function') {\n htmlNode.focus();\n }\n };\n\n private notifyUpdate: TabsContextType<T>['notifyUpdate'] = () => {\n this.listeners.forEach((cb) => cb());\n };\n\n private switchTab: TabsContextType<T>['switchTab'] = (id) => {\n const { onValueChange, value } = this.props;\n if (id !== value && onValueChange) {\n onValueChange(id);\n }\n };\n\n private getTab: TabsContextType<T>['getTab'] = (id) => {\n const { getNode = null } = this.tabs.find((x) => x.id === id) || {};\n return getNode && getNode();\n };\n\n private addTab: TabsContextType<T>['addTab'] = (id, getNode) => {\n this.tabs = this.tabs.concat({ id, getNode });\n };\n\n private removeTab: TabsContextType<T>['removeTab'] = (id) => {\n this.tabs = this.tabs.filter((tab) => tab.id !== id);\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","ThemeContext","CommonWrapper","getRootNode","rootNode","createPropsGetter","isInstanceOf","withRenderEnvironment","Indicator","getStyles","TabsContext","Tab","TabsDataTids","root","indicatorRoot","Tabs","_class","_Tabs","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","defaultProps","tabs","tabUpdates","on","cb","index","listeners","push","splice","shiftFocus","fromTab","delta","_this2","findIndex","x","id","newIndex","Math","max","min","tab","tabNode","getNode","htmlNode","globalObject","HTMLElement","focus","notifyUpdate","forEach","switchTab","_this$props","props","onValueChange","value","getTab","_ref","find","_ref$getNode","addTab","removeTab","filter","_inheritsLoose","_proto","prototype","render","_this3","_this$props2","width","children","indicatorClassName","ariaDescribedby","_this$getProps","vertical","size","styles","emotion","createElement","Consumer","theme","_this3$cx","_extends","rootNodeRef","setRootNode","className","cx","rootSmall","rootMedium","rootLarge","style","Provider","activeTab","Component","__KONTUR_REACT_UI__","displayName"],"sources":["Tabs.tsx"],"sourcesContent":["import type { AriaAttributes, JSX } from 'react';\nimport React from 'react';\nimport type { Emotion } from '@emotion/css/types/create-instance';\n\nimport type { GlobalObject } from '../../lib/globalObject';\nimport type { emptyHandler } from '../../lib/utils';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport type { Theme } from '../../lib/theming/Theme';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { getRootNode } from '../../lib/rootNode/getRootNode';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport type { SizeProp } from '../../lib/types/props';\nimport { isInstanceOf } from '../../lib/isInstanceOf';\nimport { withRenderEnvironment } from '../../lib/renderEnvironment';\n\nimport { Indicator } from './Indicator';\nimport { getStyles } from './Tabs.styles';\nimport type { TabsContextType } from './TabsContext';\nimport { TabsContext } from './TabsContext';\nimport { Tab } from './Tab';\n\ntype ValueBaseType = string;\ninterface TabType<T extends ValueBaseType> {\n getNode: () => Tab<T> | null;\n id: T;\n}\n\nexport interface TabsProps<T extends ValueBaseType = string> extends CommonProps {\n /** Задает кастомный класс подчёркиванию таба. */\n indicatorClassName?: string;\n\n /** Задает размер контрола. */\n size?: SizeProp;\n\n /** Задает текущий активный `<Tab />`. Принимает `id` таба. */\n value: T;\n\n /** Задает функцию, изменяющую текущий активный `<Tab />`. */\n onValueChange?: (value: T) => void;\n\n /** Задает расположение элементов по вертикали.\n * @default false */\n vertical?: boolean;\n\n /** Задает ширину компонента Tabs. */\n width?: number | string;\n\n /** @ignore */\n 'aria-describedby'?: AriaAttributes['aria-describedby'];\n}\n\nexport const TabsDataTids = {\n root: 'Tabs__root',\n indicatorRoot: 'Indicator__root',\n} as const;\n\ntype DefaultProps = Required<Pick<TabsProps, 'vertical' | 'size'>>;\n\n/**\n * Родитель компонента Tab. Связывает `Tab`'ы в группу и позволяет управлять их состоянием, помогают в навигации.\n *\n * Используйте `Tabs` для второстепенной навигации, для группировки или фильтрации контента.\n *\n * Не используйте `Tabs` для основной навигации. Для этого лучше подходит главное меню на цветной плашке — оно более заметно на странице.\n * Не используйте `Tabs` для переключения состояний — для этого есть RadioGroup, Toggle и Switcher.\n */\n@withRenderEnvironment\n@rootNode\nexport class Tabs<T extends string = string> extends React.Component<TabsProps<T>> {\n public static __KONTUR_REACT_UI__ = 'Tabs';\n public static displayName = 'Tabs';\n\n public static defaultProps: DefaultProps = {\n vertical: false,\n size: 'large',\n };\n\n private getProps = createPropsGetter(Tabs.defaultProps);\n\n public static Tab = Tab;\n\n private globalObject!: GlobalObject;\n private emotion!: Emotion;\n private cx!: Emotion['cx'];\n private styles!: ReturnType<typeof getStyles>;\n private theme!: Theme;\n\n private tabs: Array<TabType<T>> = [];\n\n private tabUpdates = {\n on: (cb: () => void) => {\n const index = this.listeners.push(cb);\n return () => {\n this.listeners.splice(index, 1);\n };\n },\n };\n\n private listeners: Array<typeof emptyHandler> = [];\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public render(): JSX.Element {\n const { value, width, children, indicatorClassName, 'aria-describedby': ariaDescribedby } = this.props;\n const { vertical, size } = this.getProps();\n this.styles = getStyles(this.emotion);\n\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div\n data-tid={TabsDataTids.root}\n className={this.cx({\n [this.styles.rootSmall(this.theme)]: size === 'small',\n [this.styles.rootMedium(this.theme)]: size === 'medium',\n [this.styles.rootLarge(this.theme)]: size === 'large',\n [this.styles.vertical()]: vertical,\n })}\n style={{ width }}\n aria-describedby={ariaDescribedby}\n >\n <TabsContext.Provider\n value={{\n vertical,\n activeTab: value,\n size,\n getTab: this.getTab,\n addTab: this.addTab,\n removeTab: this.removeTab,\n notifyUpdate: this.notifyUpdate,\n shiftFocus: this.shiftFocus,\n switchTab: this.switchTab,\n }}\n >\n {children}\n <Indicator\n className={indicatorClassName}\n tabUpdates={this.tabUpdates}\n vertical={this.getProps().vertical}\n />\n </TabsContext.Provider>\n </div>\n </CommonWrapper>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private shiftFocus: TabsContextType<T>['shiftFocus'] = (fromTab, delta) => {\n const { tabs } = this;\n const index = tabs.findIndex((x) => x.id === fromTab);\n const newIndex = Math.max(0, Math.min(index + delta, tabs.length - 1));\n const tab = tabs[newIndex];\n\n const tabNode = tab.getNode();\n const htmlNode = getRootNode(tabNode);\n\n if (isInstanceOf(htmlNode, this.globalObject.HTMLElement) && typeof htmlNode.focus === 'function') {\n htmlNode.focus();\n }\n };\n\n private notifyUpdate: TabsContextType<T>['notifyUpdate'] = () => {\n this.listeners.forEach((cb) => cb());\n };\n\n private switchTab: TabsContextType<T>['switchTab'] = (id) => {\n const { onValueChange, value } = this.props;\n if (id !== value && onValueChange) {\n onValueChange(id);\n }\n };\n\n private getTab: TabsContextType<T>['getTab'] = (id) => {\n const { getNode = null } = this.tabs.find((x) => x.id === id) || {};\n return getNode && getNode();\n };\n\n private addTab: TabsContextType<T>['addTab'] = (id, getNode) => {\n this.tabs = this.tabs.concat({ id, getNode });\n };\n\n private removeTab: TabsContextType<T>['removeTab'] = (id) => {\n this.tabs = this.tabs.filter((tab) => tab.id !== id);\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import type { AriaAttributes } from 'react';
1
+ import type { AriaAttributes, JSX } from 'react';
2
2
  import React from 'react';
3
3
  import type { CommonProps } from '../../internal/CommonWrapper';
4
4
  import type { TGetRootNode } from '../../lib/rootNode';