@skbkontur/react-ui 5.2.1 → 5.3.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 (554) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/README.md +7 -7
  3. package/cjs/components/Autocomplete/Autocomplete.d.ts +6 -23
  4. package/cjs/components/Autocomplete/Autocomplete.js +49 -46
  5. package/cjs/components/Autocomplete/Autocomplete.js.map +1 -1
  6. package/cjs/components/Button/Button.d.ts +2 -0
  7. package/cjs/components/Button/Button.js +29 -1
  8. package/cjs/components/Button/Button.js.map +1 -1
  9. package/cjs/components/Button/Button.styles.d.ts +6 -0
  10. package/cjs/components/Button/Button.styles.js +107 -75
  11. package/cjs/components/Button/Button.styles.js.map +1 -1
  12. package/cjs/components/Calendar/Calendar.d.ts +2 -0
  13. package/cjs/components/Calendar/Calendar.js +1 -0
  14. package/cjs/components/Calendar/Calendar.js.map +1 -1
  15. package/cjs/components/Center/Center.d.ts +2 -0
  16. package/cjs/components/Center/Center.js +1 -0
  17. package/cjs/components/Center/Center.js.map +1 -1
  18. package/cjs/components/Checkbox/Checkbox.d.ts +2 -12
  19. package/cjs/components/Checkbox/Checkbox.js +2 -14
  20. package/cjs/components/Checkbox/Checkbox.js.map +1 -1
  21. package/cjs/components/ComboBox/ComboBox.d.ts +2 -0
  22. package/cjs/components/ComboBox/ComboBox.js +1 -0
  23. package/cjs/components/ComboBox/ComboBox.js.map +1 -1
  24. package/cjs/components/CurrencyInput/CurrencyInput.d.ts +6 -24
  25. package/cjs/components/CurrencyInput/CurrencyInput.js +5 -28
  26. package/cjs/components/CurrencyInput/CurrencyInput.js.map +1 -1
  27. package/cjs/components/CurrencyInput/constants.js +1 -2
  28. package/cjs/components/CurrencyInput/constants.js.map +1 -1
  29. package/cjs/components/CurrencyLabel/CurrencyLabel.js +21 -28
  30. package/cjs/components/CurrencyLabel/CurrencyLabel.js.map +1 -1
  31. package/cjs/components/DateInput/DateInput.d.ts +2 -0
  32. package/cjs/components/DateInput/DateInput.js +1 -0
  33. package/cjs/components/DateInput/DateInput.js.map +1 -1
  34. package/cjs/components/DatePicker/DatePicker.d.ts +6 -33
  35. package/cjs/components/DatePicker/DatePicker.js +6 -60
  36. package/cjs/components/DatePicker/DatePicker.js.map +1 -1
  37. package/cjs/components/Dropdown/Dropdown.d.ts +2 -47
  38. package/cjs/components/Dropdown/Dropdown.js +2 -82
  39. package/cjs/components/Dropdown/Dropdown.js.map +1 -1
  40. package/cjs/components/DropdownMenu/DropdownMenu.d.ts +4 -2
  41. package/cjs/components/DropdownMenu/DropdownMenu.js +1 -0
  42. package/cjs/components/DropdownMenu/DropdownMenu.js.map +1 -1
  43. package/cjs/components/FxInput/FxInput.d.ts +2 -5
  44. package/cjs/components/FxInput/FxInput.js +2 -7
  45. package/cjs/components/FxInput/FxInput.js.map +1 -1
  46. package/cjs/components/Gapped/Gapped.d.ts +2 -15
  47. package/cjs/components/Gapped/Gapped.js +1 -24
  48. package/cjs/components/Gapped/Gapped.js.map +1 -1
  49. package/cjs/components/GlobalLoader/GlobalLoader.d.ts +2 -0
  50. package/cjs/components/GlobalLoader/GlobalLoader.js +1 -0
  51. package/cjs/components/GlobalLoader/GlobalLoader.js.map +1 -1
  52. package/cjs/components/Group/Group.d.ts +5 -4
  53. package/cjs/components/Group/Group.js +91 -40
  54. package/cjs/components/Group/Group.js.map +1 -1
  55. package/cjs/components/Group/Group.styles.d.ts +1 -0
  56. package/cjs/components/Group/Group.styles.js +12 -6
  57. package/cjs/components/Group/Group.styles.js.map +1 -1
  58. package/cjs/components/Hint/Hint.d.ts +2 -0
  59. package/cjs/components/Hint/Hint.js +1 -0
  60. package/cjs/components/Hint/Hint.js.map +1 -1
  61. package/cjs/components/Input/Input.d.ts +2 -0
  62. package/cjs/components/Input/Input.js +1 -0
  63. package/cjs/components/Input/Input.js.map +1 -1
  64. package/cjs/components/Kebab/Kebab.d.ts +2 -1
  65. package/cjs/components/Kebab/Kebab.js +2 -26
  66. package/cjs/components/Kebab/Kebab.js.map +1 -1
  67. package/cjs/components/Link/Link.d.ts +2 -0
  68. package/cjs/components/Link/Link.js +1 -0
  69. package/cjs/components/Link/Link.js.map +1 -1
  70. package/cjs/components/Loader/Loader.d.ts +6 -36
  71. package/cjs/components/Loader/Loader.js +3 -57
  72. package/cjs/components/Loader/Loader.js.map +1 -1
  73. package/cjs/components/MaskedInput/MaskedInput.d.ts +1 -0
  74. package/cjs/components/MaskedInput/MaskedInput.js +17 -1
  75. package/cjs/components/MaskedInput/MaskedInput.js.map +1 -1
  76. package/cjs/components/MenuItem/MenuItem.d.ts +2 -12
  77. package/cjs/components/MenuItem/MenuItem.js +2 -22
  78. package/cjs/components/MenuItem/MenuItem.js.map +1 -1
  79. package/cjs/components/MiniModal/MiniModal.styles.d.ts +1 -0
  80. package/cjs/components/MiniModal/MiniModal.styles.js +14 -7
  81. package/cjs/components/MiniModal/MiniModal.styles.js.map +1 -1
  82. package/cjs/components/MiniModal/MiniModalBody.js +17 -2
  83. package/cjs/components/MiniModal/MiniModalBody.js.map +1 -1
  84. package/cjs/components/Modal/Modal.styles.d.ts +1 -0
  85. package/cjs/components/Modal/Modal.styles.js +36 -28
  86. package/cjs/components/Modal/Modal.styles.js.map +1 -1
  87. package/cjs/components/Modal/ModalBody.d.ts +2 -0
  88. package/cjs/components/Modal/ModalBody.js +1 -0
  89. package/cjs/components/Modal/ModalBody.js.map +1 -1
  90. package/cjs/components/Modal/ModalHeader.d.ts +5 -0
  91. package/cjs/components/Modal/ModalHeader.js +8 -1
  92. package/cjs/components/Modal/ModalHeader.js.map +1 -1
  93. package/cjs/components/Paging/DotsIcon.d.ts +3 -0
  94. package/cjs/components/Paging/DotsIcon.js +13 -0
  95. package/cjs/components/Paging/DotsIcon.js.map +1 -0
  96. package/cjs/components/Paging/ForwardIcon.d.ts +3 -0
  97. package/cjs/components/Paging/ForwardIcon.js +13 -1
  98. package/cjs/components/Paging/ForwardIcon.js.map +1 -1
  99. package/cjs/components/Paging/NavigationHelper.d.ts +3 -2
  100. package/cjs/components/Paging/NavigationHelper.js +8 -6
  101. package/cjs/components/Paging/NavigationHelper.js.map +1 -1
  102. package/cjs/components/Paging/Paging.d.ts +13 -2
  103. package/cjs/components/Paging/Paging.js +120 -50
  104. package/cjs/components/Paging/Paging.js.map +1 -1
  105. package/cjs/components/Paging/Paging.styles.d.ts +24 -1
  106. package/cjs/components/Paging/Paging.styles.js +151 -22
  107. package/cjs/components/Paging/Paging.styles.js.map +1 -1
  108. package/cjs/components/Paging/PagingHelper.d.ts +1 -1
  109. package/cjs/components/Paging/PagingHelper.js +18 -11
  110. package/cjs/components/Paging/PagingHelper.js.map +1 -1
  111. package/cjs/components/PasswordInput/PasswordInput.d.ts +2 -7
  112. package/cjs/components/PasswordInput/PasswordInput.js +2 -11
  113. package/cjs/components/PasswordInput/PasswordInput.js.map +1 -1
  114. package/cjs/components/Radio/Radio.d.ts +2 -0
  115. package/cjs/components/Radio/Radio.js +1 -0
  116. package/cjs/components/Radio/Radio.js.map +1 -1
  117. package/cjs/components/RadioGroup/RadioGroup.d.ts +2 -0
  118. package/cjs/components/RadioGroup/RadioGroup.js +1 -0
  119. package/cjs/components/RadioGroup/RadioGroup.js.map +1 -1
  120. package/cjs/components/ScrollContainer/ScrollContainer.d.ts +2 -9
  121. package/cjs/components/ScrollContainer/ScrollContainer.js +2 -11
  122. package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
  123. package/cjs/components/Select/Select.d.ts +2 -0
  124. package/cjs/components/Select/Select.js +1 -0
  125. package/cjs/components/Select/Select.js.map +1 -1
  126. package/cjs/components/SidePage/SidePage.styles.d.ts +3 -1
  127. package/cjs/components/SidePage/SidePage.styles.js +52 -38
  128. package/cjs/components/SidePage/SidePage.styles.js.map +1 -1
  129. package/cjs/components/SidePage/SidePageBody.d.ts +2 -0
  130. package/cjs/components/SidePage/SidePageBody.js +1 -0
  131. package/cjs/components/SidePage/SidePageBody.js.map +1 -1
  132. package/cjs/components/SidePage/SidePageContainer.d.ts +2 -0
  133. package/cjs/components/SidePage/SidePageContainer.js +1 -0
  134. package/cjs/components/SidePage/SidePageContainer.js.map +1 -1
  135. package/cjs/components/SidePage/SidePageFooter.d.ts +2 -0
  136. package/cjs/components/SidePage/SidePageFooter.js +1 -0
  137. package/cjs/components/SidePage/SidePageFooter.js.map +1 -1
  138. package/cjs/components/SidePage/SidePageHeader.d.ts +12 -2
  139. package/cjs/components/SidePage/SidePageHeader.js +60 -19
  140. package/cjs/components/SidePage/SidePageHeader.js.map +1 -1
  141. package/cjs/components/Spinner/Spinner.d.ts +2 -18
  142. package/cjs/components/Spinner/Spinner.js +2 -32
  143. package/cjs/components/Spinner/Spinner.js.map +1 -1
  144. package/cjs/components/Sticky/Sticky.d.ts +2 -13
  145. package/cjs/components/Sticky/Sticky.js +2 -22
  146. package/cjs/components/Sticky/Sticky.js.map +1 -1
  147. package/cjs/components/Switcher/Switcher.d.ts +6 -21
  148. package/cjs/components/Switcher/Switcher.js +11 -20
  149. package/cjs/components/Switcher/Switcher.js.map +1 -1
  150. package/cjs/components/Switcher/Switcher.styles.d.ts +1 -0
  151. package/cjs/components/Switcher/Switcher.styles.js +17 -9
  152. package/cjs/components/Switcher/Switcher.styles.js.map +1 -1
  153. package/cjs/components/Tabs/Indicator.d.ts +2 -0
  154. package/cjs/components/Tabs/Indicator.js +1 -0
  155. package/cjs/components/Tabs/Indicator.js.map +1 -1
  156. package/cjs/components/Tabs/Tab.d.ts +2 -0
  157. package/cjs/components/Tabs/Tab.js +1 -0
  158. package/cjs/components/Tabs/Tab.js.map +1 -1
  159. package/cjs/components/Tabs/Tabs.d.ts +2 -0
  160. package/cjs/components/Tabs/Tabs.js +1 -0
  161. package/cjs/components/Tabs/Tabs.js.map +1 -1
  162. package/cjs/components/Textarea/Textarea.d.ts +2 -44
  163. package/cjs/components/Textarea/Textarea.js +2 -56
  164. package/cjs/components/Textarea/Textarea.js.map +1 -1
  165. package/cjs/components/Textarea/TextareaCounter.js +2 -13
  166. package/cjs/components/Textarea/TextareaCounter.js.map +1 -1
  167. package/cjs/components/Toast/Toast.d.ts +2 -0
  168. package/cjs/components/Toast/Toast.js +1 -0
  169. package/cjs/components/Toast/Toast.js.map +1 -1
  170. package/cjs/components/Toast/ToastView.d.ts +2 -14
  171. package/cjs/components/Toast/ToastView.js +3 -22
  172. package/cjs/components/Toast/ToastView.js.map +1 -1
  173. package/cjs/components/Toggle/Toggle.d.ts +2 -10
  174. package/cjs/components/Toggle/Toggle.js +1 -11
  175. package/cjs/components/Toggle/Toggle.js.map +1 -1
  176. package/cjs/components/Token/Token.d.ts +2 -0
  177. package/cjs/components/Token/Token.js +1 -0
  178. package/cjs/components/Token/Token.js.map +1 -1
  179. package/cjs/components/TokenInput/TokenInput.d.ts +2 -0
  180. package/cjs/components/TokenInput/TokenInput.js +1 -0
  181. package/cjs/components/TokenInput/TokenInput.js.map +1 -1
  182. package/cjs/components/Tooltip/Tooltip.d.ts +14 -9
  183. package/cjs/components/Tooltip/Tooltip.js +95 -13
  184. package/cjs/components/Tooltip/Tooltip.js.map +1 -1
  185. package/cjs/components/Tooltip/Tooltip.styles.d.ts +7 -1
  186. package/cjs/components/Tooltip/Tooltip.styles.js +50 -12
  187. package/cjs/components/Tooltip/Tooltip.styles.js.map +1 -1
  188. package/cjs/components/TooltipMenu/TooltipMenu.d.ts +4 -2
  189. package/cjs/components/TooltipMenu/TooltipMenu.js +1 -0
  190. package/cjs/components/TooltipMenu/TooltipMenu.js.map +1 -1
  191. package/cjs/index.d.ts +1 -0
  192. package/cjs/index.js.map +1 -1
  193. package/cjs/internal/CommonWrapper/CommonWrapper.d.ts +2 -0
  194. package/cjs/internal/CommonWrapper/CommonWrapper.js +1 -0
  195. package/cjs/internal/CommonWrapper/CommonWrapper.js.map +1 -1
  196. package/cjs/internal/ComponentTable.js +2 -3
  197. package/cjs/internal/ComponentTable.js.map +1 -1
  198. package/cjs/internal/CustomComboBox/ComboBoxView.d.ts +2 -0
  199. package/cjs/internal/CustomComboBox/ComboBoxView.js +1 -0
  200. package/cjs/internal/CustomComboBox/ComboBoxView.js.map +1 -1
  201. package/cjs/internal/CustomComboBox/CustomComboBox.d.ts +2 -0
  202. package/cjs/internal/CustomComboBox/CustomComboBox.js +1 -0
  203. package/cjs/internal/CustomComboBox/CustomComboBox.js.map +1 -1
  204. package/cjs/internal/DateSelect/DateSelect.d.ts +0 -10
  205. package/cjs/internal/DateSelect/DateSelect.js +1 -18
  206. package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
  207. package/cjs/internal/FocusTrap/FocusTrap.d.ts +2 -0
  208. package/cjs/internal/FocusTrap/FocusTrap.js +1 -0
  209. package/cjs/internal/FocusTrap/FocusTrap.js.map +1 -1
  210. package/cjs/internal/IgnoreLayerClick/IgnoreLayerClick.js +1 -0
  211. package/cjs/internal/IgnoreLayerClick/IgnoreLayerClick.js.map +1 -1
  212. package/cjs/internal/InputLikeText/InputLikeText.d.ts +2 -0
  213. package/cjs/internal/InputLikeText/InputLikeText.js +1 -0
  214. package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
  215. package/cjs/internal/Menu/Menu.d.ts +2 -0
  216. package/cjs/internal/Menu/Menu.js +1 -0
  217. package/cjs/internal/Menu/Menu.js.map +1 -1
  218. package/cjs/internal/MobilePopup/MobilePopup.d.ts +2 -0
  219. package/cjs/internal/MobilePopup/MobilePopup.js +1 -0
  220. package/cjs/internal/MobilePopup/MobilePopup.js.map +1 -1
  221. package/cjs/internal/Popup/Popup.d.ts +41 -59
  222. package/cjs/internal/Popup/Popup.js +36 -79
  223. package/cjs/internal/Popup/Popup.js.map +1 -1
  224. package/cjs/internal/Popup/PopupPin.d.ts +23 -33
  225. package/cjs/internal/Popup/PopupPin.js +2 -35
  226. package/cjs/internal/Popup/PopupPin.js.map +1 -1
  227. package/cjs/internal/Popup/PopupPinNew.d.ts +31 -0
  228. package/cjs/internal/Popup/PopupPinNew.js +180 -0
  229. package/cjs/internal/Popup/PopupPinNew.js.map +1 -0
  230. package/cjs/internal/Popup/PopupPinNew.styles.d.ts +7 -0
  231. package/cjs/internal/Popup/PopupPinNew.styles.js +33 -0
  232. package/cjs/internal/Popup/PopupPinNew.styles.js.map +1 -0
  233. package/cjs/internal/PopupMenu/PopupMenu.d.ts +2 -0
  234. package/cjs/internal/PopupMenu/PopupMenu.js +1 -0
  235. package/cjs/internal/PopupMenu/PopupMenu.js.map +1 -1
  236. package/cjs/internal/RenderContainer/RenderInnerContainer.d.ts +0 -6
  237. package/cjs/internal/RenderContainer/RenderInnerContainer.js +0 -9
  238. package/cjs/internal/RenderContainer/RenderInnerContainer.js.map +1 -1
  239. package/cjs/internal/RenderLayer/RenderLayer.d.ts +2 -3
  240. package/cjs/internal/RenderLayer/RenderLayer.js +3 -12
  241. package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
  242. package/cjs/internal/ThemePlayground/Playground.js +1 -1
  243. package/cjs/internal/ThemePlayground/Playground.js.map +1 -1
  244. package/cjs/internal/ThemePlayground/Playground.styles.js +5 -8
  245. package/cjs/internal/ThemePlayground/Playground.styles.js.map +1 -1
  246. package/cjs/internal/ThemePlayground/ShowcaseGroup.js +12 -1
  247. package/cjs/internal/ThemePlayground/ShowcaseGroup.js.map +1 -1
  248. package/cjs/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  249. package/cjs/internal/ZIndex/ZIndex.d.ts +3 -3
  250. package/cjs/internal/ZIndex/ZIndex.js +5 -1
  251. package/cjs/internal/ZIndex/ZIndex.js.map +1 -1
  252. package/cjs/internal/icons2022/UiMenuDots3HIcon/UiMenuDots3HIcon16Regular.d.ts +2 -0
  253. package/cjs/internal/icons2022/UiMenuDots3HIcon/UiMenuDots3HIcon16Regular.js +16 -0
  254. package/cjs/internal/icons2022/UiMenuDots3HIcon/UiMenuDots3HIcon16Regular.js.map +1 -0
  255. package/cjs/internal/themes/BasicTheme.d.ts +112 -20
  256. package/cjs/internal/themes/BasicTheme.js +149 -18
  257. package/cjs/internal/themes/BasicTheme.js.map +1 -1
  258. package/cjs/internal/themes/DarkTheme5_2.js +1 -1
  259. package/cjs/internal/themes/DarkTheme5_2.js.map +1 -1
  260. package/cjs/internal/themes/DarkTheme5_3.d.ts +1 -0
  261. package/cjs/internal/themes/DarkTheme5_3.js +13 -0
  262. package/cjs/internal/themes/DarkTheme5_3.js.map +1 -0
  263. package/cjs/internal/themes/LightTheme5_3.d.ts +1 -0
  264. package/cjs/internal/themes/LightTheme5_3.js +13 -0
  265. package/cjs/internal/themes/LightTheme5_3.js.map +1 -0
  266. package/cjs/lib/delay.mts +3 -0
  267. package/cjs/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +5 -0
  268. package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +5 -0
  269. package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js +11 -1
  270. package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
  271. package/cjs/lib/forwardRefAndName.d.ts +1 -1
  272. package/cjs/lib/forwardRefAndName.js +0 -1
  273. package/cjs/lib/forwardRefAndName.js.map +1 -1
  274. package/cjs/lib/rootNode/rootNodeDecorator.d.ts +2 -1
  275. package/cjs/lib/rootNode/rootNodeDecorator.js +1 -0
  276. package/cjs/lib/rootNode/rootNodeDecorator.js.map +1 -1
  277. package/cjs/lib/theming/ThemeVersions.d.ts +1 -1
  278. package/cjs/lib/theming/ThemeVersions.js.map +1 -1
  279. package/cjs/lib/theming/themes/DarkTheme.d.ts +1 -0
  280. package/cjs/lib/theming/themes/DarkTheme.js +4 -2
  281. package/cjs/lib/theming/themes/DarkTheme.js.map +1 -1
  282. package/cjs/lib/theming/themes/LightTheme.d.ts +1 -0
  283. package/cjs/lib/theming/themes/LightTheme.js +4 -2
  284. package/cjs/lib/theming/themes/LightTheme.js.map +1 -1
  285. package/cjs/lib/utils.d.ts +4 -0
  286. package/cjs/lib/utils.js +5 -1
  287. package/cjs/lib/utils.js.map +1 -1
  288. package/components/Autocomplete/Autocomplete/Autocomplete.js +49 -45
  289. package/components/Autocomplete/Autocomplete/Autocomplete.js.map +1 -1
  290. package/components/Autocomplete/Autocomplete.d.ts +6 -23
  291. package/components/Button/Button/Button.js +26 -5
  292. package/components/Button/Button/Button.js.map +1 -1
  293. package/components/Button/Button.d.ts +2 -0
  294. package/components/Button/Button.styles/Button.styles.js +78 -60
  295. package/components/Button/Button.styles/Button.styles.js.map +1 -1
  296. package/components/Button/Button.styles.d.ts +6 -0
  297. package/components/Calendar/Calendar/Calendar.js.map +1 -1
  298. package/components/Calendar/Calendar.d.ts +2 -0
  299. package/components/Center/Center/Center.js.map +1 -1
  300. package/components/Center/Center.d.ts +2 -0
  301. package/components/Checkbox/Checkbox/Checkbox.js +0 -11
  302. package/components/Checkbox/Checkbox/Checkbox.js.map +1 -1
  303. package/components/Checkbox/Checkbox.d.ts +2 -12
  304. package/components/ComboBox/ComboBox/ComboBox.js.map +1 -1
  305. package/components/ComboBox/ComboBox.d.ts +2 -0
  306. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js +12 -36
  307. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js.map +1 -1
  308. package/components/CurrencyInput/CurrencyInput.d.ts +6 -24
  309. package/components/CurrencyInput/constants/constants.js +0 -1
  310. package/components/CurrencyInput/constants/constants.js.map +1 -1
  311. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js +10 -22
  312. package/components/CurrencyLabel/CurrencyLabel/CurrencyLabel.js.map +1 -1
  313. package/components/DateInput/DateInput/DateInput.js.map +1 -1
  314. package/components/DateInput/DateInput.d.ts +2 -0
  315. package/components/DatePicker/DatePicker/DatePicker.js +1 -32
  316. package/components/DatePicker/DatePicker/DatePicker.js.map +1 -1
  317. package/components/DatePicker/DatePicker.d.ts +6 -33
  318. package/components/Dropdown/Dropdown/Dropdown.js +1 -47
  319. package/components/Dropdown/Dropdown/Dropdown.js.map +1 -1
  320. package/components/Dropdown/Dropdown.d.ts +2 -47
  321. package/components/DropdownMenu/DropdownMenu/DropdownMenu.js.map +1 -1
  322. package/components/DropdownMenu/DropdownMenu.d.ts +4 -2
  323. package/components/FxInput/FxInput/FxInput.js +1 -5
  324. package/components/FxInput/FxInput/FxInput.js.map +1 -1
  325. package/components/FxInput/FxInput.d.ts +2 -5
  326. package/components/Gapped/Gapped/Gapped.js +1 -15
  327. package/components/Gapped/Gapped/Gapped.js.map +1 -1
  328. package/components/Gapped/Gapped.d.ts +2 -15
  329. package/components/GlobalLoader/GlobalLoader/GlobalLoader.js.map +1 -1
  330. package/components/GlobalLoader/GlobalLoader.d.ts +2 -0
  331. package/components/Group/Group/Group.js +64 -28
  332. package/components/Group/Group/Group.js.map +1 -1
  333. package/components/Group/Group.d.ts +5 -4
  334. package/components/Group/Group.styles/Group.styles.js +9 -6
  335. package/components/Group/Group.styles/Group.styles.js.map +1 -1
  336. package/components/Group/Group.styles.d.ts +1 -0
  337. package/components/Hint/Hint/Hint.js.map +1 -1
  338. package/components/Hint/Hint.d.ts +2 -0
  339. package/components/Input/Input/Input.js.map +1 -1
  340. package/components/Input/Input.d.ts +2 -0
  341. package/components/Kebab/Kebab/Kebab.js +2 -20
  342. package/components/Kebab/Kebab/Kebab.js.map +1 -1
  343. package/components/Kebab/Kebab.d.ts +2 -1
  344. package/components/Link/Link/Link.js.map +1 -1
  345. package/components/Link/Link.d.ts +2 -0
  346. package/components/Loader/Loader/Loader.js +0 -33
  347. package/components/Loader/Loader/Loader.js.map +1 -1
  348. package/components/Loader/Loader.d.ts +6 -36
  349. package/components/MaskedInput/MaskedInput/MaskedInput.js +14 -0
  350. package/components/MaskedInput/MaskedInput/MaskedInput.js.map +1 -1
  351. package/components/MaskedInput/MaskedInput.d.ts +1 -0
  352. package/components/MenuItem/MenuItem/MenuItem.js +1 -12
  353. package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
  354. package/components/MenuItem/MenuItem.d.ts +2 -12
  355. package/components/MiniModal/MiniModal.styles/MiniModal.styles.js +10 -7
  356. package/components/MiniModal/MiniModal.styles/MiniModal.styles.js.map +1 -1
  357. package/components/MiniModal/MiniModal.styles.d.ts +1 -0
  358. package/components/MiniModal/MiniModalBody/MiniModalBody.js +13 -5
  359. package/components/MiniModal/MiniModalBody/MiniModalBody.js.map +1 -1
  360. package/components/Modal/Modal.styles/Modal.styles.js +31 -28
  361. package/components/Modal/Modal.styles/Modal.styles.js.map +1 -1
  362. package/components/Modal/Modal.styles.d.ts +1 -0
  363. package/components/Modal/ModalBody/ModalBody.js.map +1 -1
  364. package/components/Modal/ModalBody.d.ts +2 -0
  365. package/components/Modal/ModalHeader/ModalHeader.js +3 -1
  366. package/components/Modal/ModalHeader/ModalHeader.js.map +1 -1
  367. package/components/Modal/ModalHeader.d.ts +5 -0
  368. package/components/Paging/DotsIcon/DotsIcon.js +14 -0
  369. package/components/Paging/DotsIcon/DotsIcon.js.map +1 -0
  370. package/components/Paging/DotsIcon/package.json +6 -0
  371. package/components/Paging/DotsIcon.d.ts +3 -0
  372. package/components/Paging/ForwardIcon/ForwardIcon.js +15 -1
  373. package/components/Paging/ForwardIcon/ForwardIcon.js.map +1 -1
  374. package/components/Paging/ForwardIcon.d.ts +3 -0
  375. package/components/Paging/NavigationHelper/NavigationHelper.js +9 -8
  376. package/components/Paging/NavigationHelper/NavigationHelper.js.map +1 -1
  377. package/components/Paging/NavigationHelper.d.ts +3 -2
  378. package/components/Paging/Paging/Paging.js +96 -47
  379. package/components/Paging/Paging/Paging.js.map +1 -1
  380. package/components/Paging/Paging.d.ts +13 -2
  381. package/components/Paging/Paging.styles/Paging.styles.js +77 -16
  382. package/components/Paging/Paging.styles/Paging.styles.js.map +1 -1
  383. package/components/Paging/Paging.styles.d.ts +24 -1
  384. package/components/Paging/PagingHelper/PagingHelper.js +16 -8
  385. package/components/Paging/PagingHelper/PagingHelper.js.map +1 -1
  386. package/components/Paging/PagingHelper.d.ts +1 -1
  387. package/components/PasswordInput/PasswordInput/PasswordInput.js +1 -7
  388. package/components/PasswordInput/PasswordInput/PasswordInput.js.map +1 -1
  389. package/components/PasswordInput/PasswordInput.d.ts +2 -7
  390. package/components/Radio/Radio/Radio.js.map +1 -1
  391. package/components/Radio/Radio.d.ts +2 -0
  392. package/components/RadioGroup/RadioGroup/RadioGroup.js.map +1 -1
  393. package/components/RadioGroup/RadioGroup.d.ts +2 -0
  394. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +1 -9
  395. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
  396. package/components/ScrollContainer/ScrollContainer.d.ts +2 -9
  397. package/components/Select/Select/Select.js.map +1 -1
  398. package/components/Select/Select.d.ts +2 -0
  399. package/components/SidePage/SidePage.styles/SidePage.styles.js +41 -35
  400. package/components/SidePage/SidePage.styles/SidePage.styles.js.map +1 -1
  401. package/components/SidePage/SidePage.styles.d.ts +3 -1
  402. package/components/SidePage/SidePageBody/SidePageBody.js.map +1 -1
  403. package/components/SidePage/SidePageBody.d.ts +2 -0
  404. package/components/SidePage/SidePageContainer/SidePageContainer.js.map +1 -1
  405. package/components/SidePage/SidePageContainer.d.ts +2 -0
  406. package/components/SidePage/SidePageFooter/SidePageFooter.js.map +1 -1
  407. package/components/SidePage/SidePageFooter.d.ts +2 -0
  408. package/components/SidePage/SidePageHeader/SidePageHeader.js +61 -39
  409. package/components/SidePage/SidePageHeader/SidePageHeader.js.map +1 -1
  410. package/components/SidePage/SidePageHeader.d.ts +12 -2
  411. package/components/Spinner/Spinner/Spinner.js +1 -18
  412. package/components/Spinner/Spinner/Spinner.js.map +1 -1
  413. package/components/Spinner/Spinner.d.ts +2 -18
  414. package/components/Sticky/Sticky/Sticky.js +1 -13
  415. package/components/Sticky/Sticky/Sticky.js.map +1 -1
  416. package/components/Sticky/Sticky.d.ts +2 -13
  417. package/components/Switcher/Switcher/Switcher.js +19 -16
  418. package/components/Switcher/Switcher/Switcher.js.map +1 -1
  419. package/components/Switcher/Switcher.d.ts +6 -21
  420. package/components/Switcher/Switcher.styles/Switcher.styles.js +12 -9
  421. package/components/Switcher/Switcher.styles/Switcher.styles.js.map +1 -1
  422. package/components/Switcher/Switcher.styles.d.ts +1 -0
  423. package/components/Tabs/Indicator/Indicator.js.map +1 -1
  424. package/components/Tabs/Indicator.d.ts +2 -0
  425. package/components/Tabs/Tab/Tab.js.map +1 -1
  426. package/components/Tabs/Tab.d.ts +2 -0
  427. package/components/Tabs/Tabs/Tabs.js.map +1 -1
  428. package/components/Tabs/Tabs.d.ts +2 -0
  429. package/components/Textarea/Textarea/Textarea.js +1 -44
  430. package/components/Textarea/Textarea/Textarea.js.map +1 -1
  431. package/components/Textarea/Textarea.d.ts +2 -44
  432. package/components/Textarea/TextareaCounter/TextareaCounter.js +1 -11
  433. package/components/Textarea/TextareaCounter/TextareaCounter.js.map +1 -1
  434. package/components/Toast/Toast/Toast.js.map +1 -1
  435. package/components/Toast/Toast.d.ts +2 -0
  436. package/components/Toast/ToastView/ToastView.js +3 -17
  437. package/components/Toast/ToastView/ToastView.js.map +1 -1
  438. package/components/Toast/ToastView.d.ts +2 -14
  439. package/components/Toggle/Toggle/Toggle.js +1 -10
  440. package/components/Toggle/Toggle/Toggle.js.map +1 -1
  441. package/components/Toggle/Toggle.d.ts +2 -10
  442. package/components/Token/Token/Token.js.map +1 -1
  443. package/components/Token/Token.d.ts +2 -0
  444. package/components/TokenInput/TokenInput/TokenInput.js.map +1 -1
  445. package/components/TokenInput/TokenInput.d.ts +2 -0
  446. package/components/Tooltip/Tooltip/Tooltip.js +67 -20
  447. package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
  448. package/components/Tooltip/Tooltip.d.ts +14 -9
  449. package/components/Tooltip/Tooltip.styles/Tooltip.styles.js +22 -4
  450. package/components/Tooltip/Tooltip.styles/Tooltip.styles.js.map +1 -1
  451. package/components/Tooltip/Tooltip.styles.d.ts +7 -1
  452. package/components/TooltipMenu/TooltipMenu/TooltipMenu.js.map +1 -1
  453. package/components/TooltipMenu/TooltipMenu.d.ts +4 -2
  454. package/index.d.ts +1 -0
  455. package/index.js +1 -0
  456. package/index.js.map +1 -1
  457. package/internal/CommonWrapper/CommonWrapper/CommonWrapper.js.map +1 -1
  458. package/internal/CommonWrapper/CommonWrapper.d.ts +2 -0
  459. package/internal/ComponentTable/ComponentTable.js +0 -2
  460. package/internal/ComponentTable/ComponentTable.js.map +1 -1
  461. package/internal/CustomComboBox/ComboBoxView/ComboBoxView.js.map +1 -1
  462. package/internal/CustomComboBox/ComboBoxView.d.ts +2 -0
  463. package/internal/CustomComboBox/CustomComboBox/CustomComboBox.js.map +1 -1
  464. package/internal/CustomComboBox/CustomComboBox.d.ts +2 -0
  465. package/internal/DateSelect/DateSelect/DateSelect.js +1 -10
  466. package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
  467. package/internal/DateSelect/DateSelect.d.ts +0 -10
  468. package/internal/FocusTrap/FocusTrap/FocusTrap.js.map +1 -1
  469. package/internal/FocusTrap/FocusTrap.d.ts +2 -0
  470. package/internal/IgnoreLayerClick/IgnoreLayerClick/IgnoreLayerClick.js.map +1 -1
  471. package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
  472. package/internal/InputLikeText/InputLikeText.d.ts +2 -0
  473. package/internal/Menu/Menu/Menu.js.map +1 -1
  474. package/internal/Menu/Menu.d.ts +2 -0
  475. package/internal/MobilePopup/MobilePopup/MobilePopup.js.map +1 -1
  476. package/internal/MobilePopup/MobilePopup.d.ts +2 -0
  477. package/internal/Popup/Popup/Popup.js +14 -64
  478. package/internal/Popup/Popup/Popup.js.map +1 -1
  479. package/internal/Popup/Popup.d.ts +41 -59
  480. package/internal/Popup/PopupPin/PopupPin.js +1 -34
  481. package/internal/Popup/PopupPin/PopupPin.js.map +1 -1
  482. package/internal/Popup/PopupPin.d.ts +23 -33
  483. package/internal/Popup/PopupPinNew/PopupPinNew.js +146 -0
  484. package/internal/Popup/PopupPinNew/PopupPinNew.js.map +1 -0
  485. package/internal/Popup/PopupPinNew/package.json +6 -0
  486. package/internal/Popup/PopupPinNew.d.ts +31 -0
  487. package/internal/Popup/PopupPinNew.styles/PopupPinNew.styles.js +20 -0
  488. package/internal/Popup/PopupPinNew.styles/PopupPinNew.styles.js.map +1 -0
  489. package/internal/Popup/PopupPinNew.styles/package.json +6 -0
  490. package/internal/Popup/PopupPinNew.styles.d.ts +7 -0
  491. package/internal/PopupMenu/PopupMenu/PopupMenu.js.map +1 -1
  492. package/internal/PopupMenu/PopupMenu.d.ts +2 -0
  493. package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js +0 -8
  494. package/internal/RenderContainer/RenderInnerContainer/RenderInnerContainer.js.map +1 -1
  495. package/internal/RenderContainer/RenderInnerContainer.d.ts +0 -6
  496. package/internal/RenderLayer/RenderLayer/RenderLayer.js +3 -11
  497. package/internal/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
  498. package/internal/RenderLayer/RenderLayer.d.ts +2 -3
  499. package/internal/ThemePlayground/Playground/Playground.js +4 -3
  500. package/internal/ThemePlayground/Playground/Playground.js.map +1 -1
  501. package/internal/ThemePlayground/Playground.styles/Playground.styles.js +4 -4
  502. package/internal/ThemePlayground/Playground.styles/Playground.styles.js.map +1 -1
  503. package/internal/ThemePlayground/ShowcaseGroup/ShowcaseGroup.js +6 -1
  504. package/internal/ThemePlayground/ShowcaseGroup/ShowcaseGroup.js.map +1 -1
  505. package/internal/ThemeShowcase/VariablesCollector.d.ts +1 -1
  506. package/internal/ZIndex/ZIndex/ZIndex.js +8 -10
  507. package/internal/ZIndex/ZIndex/ZIndex.js.map +1 -1
  508. package/internal/ZIndex/ZIndex.d.ts +3 -3
  509. package/internal/icons2022/UiMenuDots3HIcon/UiMenuDots3HIcon16Regular/UiMenuDots3HIcon16Regular.js +21 -0
  510. package/internal/icons2022/UiMenuDots3HIcon/UiMenuDots3HIcon16Regular/UiMenuDots3HIcon16Regular.js.map +1 -0
  511. package/internal/icons2022/UiMenuDots3HIcon/UiMenuDots3HIcon16Regular/package.json +6 -0
  512. package/internal/icons2022/UiMenuDots3HIcon/UiMenuDots3HIcon16Regular.d.ts +2 -0
  513. package/internal/themes/BasicTheme/BasicTheme.js +170 -26
  514. package/internal/themes/BasicTheme/BasicTheme.js.map +1 -1
  515. package/internal/themes/BasicTheme.d.ts +112 -20
  516. package/internal/themes/DarkTheme5_2/DarkTheme5_2.js +3 -3
  517. package/internal/themes/DarkTheme5_2/DarkTheme5_2.js.map +1 -1
  518. package/internal/themes/DarkTheme5_3/DarkTheme5_3.js +16 -0
  519. package/internal/themes/DarkTheme5_3/DarkTheme5_3.js.map +1 -0
  520. package/internal/themes/DarkTheme5_3/package.json +6 -0
  521. package/internal/themes/DarkTheme5_3.d.ts +1 -0
  522. package/internal/themes/LightTheme5_3/LightTheme5_3.js +16 -0
  523. package/internal/themes/LightTheme5_3/LightTheme5_3.js.map +1 -0
  524. package/internal/themes/LightTheme5_3/package.json +6 -0
  525. package/internal/themes/LightTheme5_3.d.ts +1 -0
  526. package/lib/delay.d.mts +1 -0
  527. package/lib/delay.mts +3 -0
  528. package/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +5 -0
  529. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js +6 -1
  530. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
  531. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +5 -0
  532. package/lib/forwardRefAndName/forwardRefAndName.js.map +1 -1
  533. package/lib/forwardRefAndName.d.ts +1 -1
  534. package/lib/rootNode/rootNodeDecorator/rootNodeDecorator.js.map +1 -1
  535. package/lib/rootNode/rootNodeDecorator.d.ts +2 -1
  536. package/lib/theming/ThemeVersions/ThemeVersions.js.map +1 -1
  537. package/lib/theming/ThemeVersions.d.ts +1 -1
  538. package/lib/theming/themes/DarkTheme/DarkTheme.js +3 -1
  539. package/lib/theming/themes/DarkTheme/DarkTheme.js.map +1 -1
  540. package/lib/theming/themes/DarkTheme.d.ts +1 -0
  541. package/lib/theming/themes/LightTheme/LightTheme.js +3 -1
  542. package/lib/theming/themes/LightTheme/LightTheme.js.map +1 -1
  543. package/lib/theming/themes/LightTheme.d.ts +1 -0
  544. package/lib/utils/utils.js +2 -0
  545. package/lib/utils/utils.js.map +1 -1
  546. package/lib/utils.d.ts +4 -0
  547. package/package.json +10 -13
  548. package/cjs/lib/SSRSafe.d.ts +0 -2
  549. package/cjs/lib/SSRSafe.js +0 -5
  550. package/cjs/lib/SSRSafe.js.map +0 -1
  551. package/lib/SSRSafe/SSRSafe.js +0 -4
  552. package/lib/SSRSafe/SSRSafe.js.map +0 -1
  553. package/lib/SSRSafe/package.json +0 -6
  554. package/lib/SSRSafe.d.ts +0 -2
@@ -3,18 +3,18 @@ import _createClass from "@babel/runtime/helpers/esm/createClass";
3
3
  import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
4
4
  var _class, _SidePageHeader;
5
5
  import React from 'react';
6
- import { globalObject } from '@skbkontur/global-object';
6
+ import throttle from 'lodash.throttle';
7
7
  import { Sticky } from "../../Sticky";
8
8
  import { isFunction } from "../../../lib/utils";
9
9
  import { ThemeContext } from "../../../lib/theming/ThemeContext";
10
10
  import { CommonWrapper } from "../../../internal/CommonWrapper";
11
11
  import { cx } from "../../../lib/theming/Emotion";
12
12
  import { responsiveLayout } from "../../ResponsiveLayout/decorator";
13
- import { rootNode } from "../../../lib/rootNode";
13
+ import { getRootNode, rootNode } from "../../../lib/rootNode";
14
14
  import { getDOMRect } from "../../../lib/dom/getDOMRect";
15
15
  import { ModalSeparator } from "../../Modal/ModalSeparator";
16
16
  import { isThemeGTE } from "../../../lib/theming/ThemeHelpers";
17
- import { ReactUIFeatureFlagsContext } from "../../../lib/featureFlagsContext";
17
+ import { getFullReactUIFlagsContext, ReactUIFeatureFlagsContext } from "../../../lib/featureFlagsContext";
18
18
  import { styles } from "../SidePage.styles";
19
19
  import { SidePageContext } from "../SidePageContext";
20
20
  import { SidePageCloseButton } from "../SidePageCloseButton";
@@ -37,28 +37,42 @@ export var SidePageHeader = responsiveLayout(_class = rootNode(_class = (_SidePa
37
37
  _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;
38
38
  _this.context = _this.context;
39
39
  _this.state = {
40
- isReadyToFix: false
40
+ isNativeStuck: true,
41
+ isReadyToStuck: false
41
42
  };
42
43
  _this.wrapper = null;
43
44
  _this.sticky = null;
44
45
  _this.lastRegularHeight = 0;
45
46
  _this.componentDidMount = function () {
46
- globalObject.addEventListener == null || globalObject.addEventListener('scroll', _this.update, true);
47
+ var _getRootNode;
48
+ (_getRootNode = getRootNode(_this)) == null || (_getRootNode = _getRootNode.parentNode) == null || _getRootNode.addEventListener == null || _getRootNode.addEventListener('scroll', _this.throttleHandleScroll, true);
47
49
  _this.context.setHasHeader == null || _this.context.setHasHeader();
48
50
  _this.context.headerRef(_this);
49
51
  };
50
52
  _this.componentWillUnmount = function () {
51
- globalObject.removeEventListener == null || globalObject.removeEventListener('scroll', _this.update, true);
53
+ var _getRootNode2;
54
+ (_getRootNode2 = getRootNode(_this)) == null || (_getRootNode2 = _getRootNode2.parentNode) == null || _getRootNode2.removeEventListener == null || _getRootNode2.removeEventListener('scroll', _this.throttleHandleScroll, true);
52
55
  _this.context.setHasHeader == null || _this.context.setHasHeader(false);
53
56
  _this.context.headerRef(null);
54
57
  };
58
+ _this.throttleHandleScroll = throttle(function (event) {
59
+ var target = event.currentTarget;
60
+ if (target && typeof target.scrollTop === 'number') {
61
+ _this.setState({
62
+ isNativeStuck: target.scrollTop === 0
63
+ });
64
+ }
65
+ _this.update();
66
+ }, 5);
55
67
  _this.update = function () {
56
68
  var _this$sticky;
57
69
  (_this$sticky = _this.sticky) == null || _this$sticky.reflow();
58
- _this.updateReadyToFix();
70
+ if (!_this.featureFlags.sidePageDisableHeaderShrink) {
71
+ _this.updateReadyToStuck();
72
+ }
59
73
  };
60
74
  _this.renderHeader = function (fixed) {
61
- var _cx, _cx2;
75
+ var _cx, _this$props$cutTitleO, _cx2;
62
76
  if (fixed === void 0) {
63
77
  fixed = false;
64
78
  }
@@ -66,10 +80,10 @@ export var SidePageHeader = responsiveLayout(_class = rootNode(_class = (_SidePa
66
80
  return /*#__PURE__*/(
67
81
  React.createElement("div", null, /*#__PURE__*/
68
82
  React.createElement("div", {
69
- className: cx(styles.header(_this.theme), (_cx = {}, _cx[styles.headerFixed(_this.theme)] = fixed, _cx[styles.mobileHeader(_this.theme)] = _this.isMobileLayout, _cx))
83
+ className: cx(styles.header(_this.theme), (_cx = {}, _cx[styles.headerFixed(_this.theme)] = fixed, _cx[styles.headerShrink(_this.theme)] = fixed && !_this.featureFlags.sidePageDisableHeaderShrink, _cx[styles.mobileHeader(_this.theme)] = _this.isMobileLayout, _cx))
70
84
  }, _this.renderClose(fixed), /*#__PURE__*/
71
85
  React.createElement("div", {
72
- className: cx(styles.title(_this.theme), (_cx2 = {}, _cx2[styles.title5_1(_this.theme)] = isThemeGTE(_this.theme, '5.1'), _cx2[styles.mobileTitle(_this.theme)] = _this.isMobileLayout, _cx2[styles.titleFixed()] = fixed, _cx2))
86
+ className: cx(styles.title(_this.theme), (_cx2 = {}, _cx2[styles.title5_1(_this.theme)] = isThemeGTE(_this.theme, '5.1'), _cx2[styles.mobileTitle(_this.theme)] = _this.isMobileLayout, _cx2[styles.titleCut()] = fixed && ((_this$props$cutTitleO = _this.props.cutTitleOnStuck) != null ? _this$props$cutTitleO : !_this.featureFlags.sidePageNotCutTitleOnStuckByDefault), _cx2))
73
87
  }, isFunction(_this.props.children) ? _this.props.children(fixed) : _this.props.children)), isDisplayed && /*#__PURE__*/React.createElement(ModalSeparator, {
74
88
  fixed: fixed
75
89
  }))
@@ -81,29 +95,29 @@ export var SidePageHeader = responsiveLayout(_class = rootNode(_class = (_SidePa
81
95
  var versionGTE5_1 = isThemeGTE(_this.theme, '5.1');
82
96
  return /*#__PURE__*/(
83
97
  React.createElement("div", {
84
- className: cx(styles.wrapperClose(_this.theme), (_cx3 = {}, _cx3[styles.wrapperClose5_1(_this.theme)] = versionGTE5_1, _cx3[styles.wrapperCloseFixed(_this.theme)] = fixed, _cx3[styles.wrapperCloseFixed5_1(_this.theme)] = fixed && versionGTE5_1, _cx3[styles.mobileWrapperClose(_this.theme)] = _this.isMobileLayout, _cx3[styles.mobileWrapperClose5_1(_this.theme)] = _this.isMobileLayout && versionGTE5_1, _cx3))
85
- }, _this.isMobileLayout ? /*#__PURE__*/
86
- React.createElement(SidePageCloseButton, {
87
- isHeaderFixed: fixed,
88
- isMobile: true
89
- }) : /*#__PURE__*/
90
-
98
+ className: cx(styles.wrapperClose(_this.theme), (_cx3 = {}, _cx3[styles.wrapperClose5_1(_this.theme)] = versionGTE5_1, _cx3[styles.wrapperCloseFixed(_this.theme)] = fixed && !_this.featureFlags.sidePageDisableHeaderShrink, _cx3[styles.wrapperCloseFixed5_1(_this.theme)] = fixed && versionGTE5_1 && !_this.featureFlags.sidePageDisableHeaderShrink, _cx3[styles.mobileWrapperClose(_this.theme)] = _this.isMobileLayout, _cx3[styles.mobileWrapperClose5_1(_this.theme)] = _this.isMobileLayout && versionGTE5_1, _cx3))
99
+ }, !(_this.isMobileLayout || _this.featureFlags.sidePageDisableHeaderShrink) ? /*#__PURE__*/
91
100
  React.createElement(Sticky, {
92
101
  side: "top",
93
102
  offset: stickyOffset
94
103
  }, /*#__PURE__*/
95
104
  React.createElement(SidePageCloseButton, {
96
105
  isHeaderFixed: fixed
97
- })))
106
+ })) : /*#__PURE__*/
107
+
108
+ React.createElement(SidePageCloseButton, {
109
+ isHeaderFixed: fixed,
110
+ isMobile: _this.isMobileLayout
111
+ }))
98
112
  );
99
113
  };
100
- _this.updateReadyToFix = function () {
114
+ _this.updateReadyToStuck = function () {
101
115
  if (_this.wrapper) {
102
116
  var wrapperScrolledUp = getDOMRect(_this.wrapper).top;
103
- var isReadyToFix = _this.regularHeight + wrapperScrolledUp <= _this.fixedHeaderHeight;
117
+ var isReadyToStuck = _this.regularHeight + wrapperScrolledUp <= _this.fixedHeaderHeight;
104
118
  _this.setState(function (state) {
105
- return state.isReadyToFix !== isReadyToFix ? _extends({}, state, {
106
- isReadyToFix: isReadyToFix
119
+ return state.isReadyToStuck !== isReadyToStuck ? _extends({}, state, {
120
+ isReadyToStuck: isReadyToStuck
107
121
  }) : state;
108
122
  });
109
123
  }
@@ -135,33 +149,41 @@ export var SidePageHeader = responsiveLayout(_class = rootNode(_class = (_SidePa
135
149
  return true;
136
150
  };
137
151
  _proto.renderMain = function renderMain() {
138
- var isReadyToFix = this.state.isReadyToFix;
139
- var isStickyDesktop = !this.isMobileLayout && this.getStickyProp() && isReadyToFix;
152
+ var _this3 = this;
153
+ var isReadyToStuck = this.state.isReadyToStuck;
154
+ var isStickyDesktop = !this.isMobileLayout && this.getStickyProp();
140
155
  var isStickyMobile = this.isMobileLayout && this.getStickyProp();
141
156
  var header = this.renderHeader;
142
- return /*#__PURE__*/React.createElement(CommonWrapper, _extends({
143
- rootNodeRef: this.setRootNode
144
- }, this.props), /*#__PURE__*/React.createElement("div", {
145
- "data-tid": SidePageHeaderDataTids.root,
146
- ref: this.wrapperRef,
147
- className: styles.headerWrapper()
148
- }, /*#__PURE__*/React.createElement(ReactUIFeatureFlagsContext.Provider, {
149
- value: {
150
- stickyReduceLayoutEvents: true
157
+ return /*#__PURE__*/React.createElement(ReactUIFeatureFlagsContext.Consumer, null, function (flags) {
158
+ var _cx4;
159
+ _this3.featureFlags = getFullReactUIFlagsContext(flags);
160
+ if (!_this3.featureFlags.sidePageDisableHeaderShrink) {
161
+ isStickyDesktop = isStickyDesktop && isReadyToStuck;
151
162
  }
152
- }, isStickyDesktop || isStickyMobile ? /*#__PURE__*/React.createElement(Sticky, {
153
- ref: this.stickyRef,
154
- side: "top"
155
- }, header) : header())));
163
+ return /*#__PURE__*/React.createElement(CommonWrapper, _extends({
164
+ rootNodeRef: _this3.setRootNode
165
+ }, _this3.props), /*#__PURE__*/React.createElement("div", {
166
+ "data-tid": SidePageHeaderDataTids.root,
167
+ ref: _this3.wrapperRef,
168
+ className: cx(styles.headerWrapper(), (_cx4 = {}, _cx4[styles.headerNativeStuck(_this3.theme)] = _this3.state.isNativeStuck, _cx4))
169
+ }, /*#__PURE__*/React.createElement(ReactUIFeatureFlagsContext.Provider, {
170
+ value: {
171
+ stickyReduceLayoutEvents: true
172
+ }
173
+ }, !_this3.state.isNativeStuck && (isStickyDesktop || isStickyMobile) ? /*#__PURE__*/React.createElement(Sticky, {
174
+ ref: _this3.stickyRef,
175
+ side: "top"
176
+ }, header) : header())));
177
+ });
156
178
  };
157
179
  return _createClass(SidePageHeader, [{
158
180
  key: "regularHeight",
159
181
  get: function get() {
160
- var isReadyToFix = this.state.isReadyToFix;
182
+ var isReadyToStuck = this.state.isReadyToStuck;
161
183
  if (!this.wrapper) {
162
184
  return 0;
163
185
  }
164
- if (!isReadyToFix) {
186
+ if (!isReadyToStuck) {
165
187
  this.lastRegularHeight = getDOMRect(this.wrapper).height;
166
188
  }
167
189
  return this.lastRegularHeight;
@@ -1 +1 @@
1
- {"version":3,"names":["React","globalObject","Sticky","isFunction","ThemeContext","CommonWrapper","cx","responsiveLayout","rootNode","getDOMRect","ModalSeparator","isThemeGTE","ReactUIFeatureFlagsContext","styles","SidePageContext","SidePageCloseButton","SidePageHeaderDataTids","root","close","SidePageHeader","_class","_SidePageHeader","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","context","state","isReadyToFix","wrapper","sticky","lastRegularHeight","componentDidMount","addEventListener","update","setHasHeader","headerRef","componentWillUnmount","removeEventListener","_this$sticky","reflow","updateReadyToFix","renderHeader","fixed","_cx","_cx2","isDisplayed","props","hasSeparator","createElement","className","header","theme","headerFixed","mobileHeader","isMobileLayout","renderClose","title","title5_1","mobileTitle","titleFixed","children","_cx3","stickyOffset","parseInt","sidePageHeaderStickyOffset","versionGTE5_1","wrapperClose","wrapperClose5_1","wrapperCloseFixed","wrapperCloseFixed5_1","mobileWrapperClose","mobileWrapperClose5_1","isHeaderFixed","isMobile","side","offset","wrapperScrolledUp","top","regularHeight","fixedHeaderHeight","setState","_extends","wrapperRef","el","stickyRef","_inheritsLoose","_proto","prototype","render","_this2","Consumer","renderMain","getStickyProp","isStickyDesktop","isStickyMobile","rootNodeRef","setRootNode","ref","headerWrapper","Provider","value","stickyReduceLayoutEvents","_createClass","key","get","height","sidePageHeaderFixedLineHeight","sidePageHeaderFixedPaddingY","Component","__KONTUR_REACT_UI__","displayName","contextType","defaultProps"],"sources":["SidePageHeader.tsx"],"sourcesContent":["import React from 'react';\nimport { globalObject } from '@skbkontur/global-object';\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 { cx } from '../../lib/theming/Emotion';\nimport { responsiveLayout } from '../ResponsiveLayout/decorator';\nimport type { TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { ModalSeparator } from '../Modal/ModalSeparator';\nimport { isThemeGTE } from '../../lib/theming/ThemeHelpers';\nimport { ReactUIFeatureFlagsContext } from '../../lib/featureFlagsContext';\n\nimport { styles } 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\nexport interface SidePageHeaderState {\n isReadyToFix: 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@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 isReadyToFix: false,\n };\n\n public static defaultProps: Partial<SidePageHeaderProps> = {\n hasSeparator: false,\n };\n\n private theme!: Theme;\n private wrapper: HTMLElement | null = null;\n private sticky: Sticky | null = null;\n private lastRegularHeight = 0;\n private setRootNode!: TSetRootNode;\n public get regularHeight(): number {\n const { isReadyToFix } = this.state;\n if (!this.wrapper) {\n return 0;\n }\n if (!isReadyToFix) {\n this.lastRegularHeight = getDOMRect(this.wrapper).height;\n }\n return this.lastRegularHeight;\n }\n\n public get fixedHeaderHeight(): number {\n const { theme } = this;\n return parseInt(theme.sidePageHeaderFixedLineHeight) + parseInt(theme.sidePageHeaderFixedPaddingY) * 2;\n }\n\n public componentDidMount = () => {\n globalObject.addEventListener?.('scroll', this.update, true);\n this.context.setHasHeader?.();\n this.context.headerRef(this);\n };\n\n public componentWillUnmount = () => {\n globalObject.removeEventListener?.('scroll', this.update, true);\n this.context.setHasHeader?.(false);\n this.context.headerRef(null);\n };\n\n public update = () => {\n this.sticky?.reflow();\n this.updateReadyToFix();\n };\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n 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 { isReadyToFix } = this.state;\n\n const isStickyDesktop = !this.isMobileLayout && this.getStickyProp() && isReadyToFix;\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 data-tid={SidePageHeaderDataTids.root} ref={this.wrapperRef} className={styles.headerWrapper()}>\n <ReactUIFeatureFlagsContext.Provider value={{ stickyReduceLayoutEvents: true }}>\n {isStickyDesktop || isStickyMobile ? (\n <Sticky ref={this.stickyRef} side=\"top\">\n {header}\n </Sticky>\n ) : (\n header()\n )}\n </ReactUIFeatureFlagsContext.Provider>\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={cx(styles.header(this.theme), {\n [styles.headerFixed(this.theme)]: fixed,\n [styles.mobileHeader(this.theme)]: this.isMobileLayout,\n })}\n >\n {this.renderClose(fixed)}\n <div\n className={cx(styles.title(this.theme), {\n [styles.title5_1(this.theme)]: isThemeGTE(this.theme, '5.1'),\n [styles.mobileTitle(this.theme)]: this.isMobileLayout,\n [styles.titleFixed()]: fixed,\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 const versionGTE5_1 = isThemeGTE(this.theme, '5.1');\n return (\n <div\n className={cx(styles.wrapperClose(this.theme), {\n [styles.wrapperClose5_1(this.theme)]: versionGTE5_1,\n [styles.wrapperCloseFixed(this.theme)]: fixed,\n [styles.wrapperCloseFixed5_1(this.theme)]: fixed && versionGTE5_1,\n [styles.mobileWrapperClose(this.theme)]: this.isMobileLayout,\n [styles.mobileWrapperClose5_1(this.theme)]: this.isMobileLayout && versionGTE5_1,\n })}\n >\n {this.isMobileLayout ? (\n <SidePageCloseButton isHeaderFixed={fixed} isMobile />\n ) : (\n <Sticky side=\"top\" offset={stickyOffset}>\n <SidePageCloseButton isHeaderFixed={fixed} />\n </Sticky>\n )}\n </div>\n );\n };\n\n private updateReadyToFix = () => {\n if (this.wrapper) {\n const wrapperScrolledUp = getDOMRect(this.wrapper).top;\n const isReadyToFix = this.regularHeight + wrapperScrolledUp <= this.fixedHeaderHeight;\n this.setState((state) => (state.isReadyToFix !== isReadyToFix ? { ...state, isReadyToFix } : state));\n }\n };\n\n private wrapperRef = (el: HTMLElement | null) => {\n this.wrapper = el;\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","cx","responsiveLayout","getRootNode","rootNode","getDOMRect","ModalSeparator","isThemeGTE","getFullReactUIFlagsContext","ReactUIFeatureFlagsContext","styles","SidePageContext","SidePageCloseButton","SidePageHeaderDataTids","root","close","SidePageHeader","_class","_SidePageHeader","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","context","state","isNativeStuck","isReadyToStuck","wrapper","sticky","lastRegularHeight","componentDidMount","_getRootNode","parentNode","addEventListener","throttleHandleScroll","setHasHeader","headerRef","componentWillUnmount","_getRootNode2","removeEventListener","event","target","currentTarget","scrollTop","setState","update","_this$sticky","reflow","featureFlags","sidePageDisableHeaderShrink","updateReadyToStuck","renderHeader","fixed","_cx","_this$props$cutTitleO","_cx2","isDisplayed","props","hasSeparator","createElement","className","header","theme","headerFixed","headerShrink","mobileHeader","isMobileLayout","renderClose","title","title5_1","mobileTitle","titleCut","cutTitleOnStuck","sidePageNotCutTitleOnStuckByDefault","children","_cx3","stickyOffset","parseInt","sidePageHeaderStickyOffset","versionGTE5_1","wrapperClose","wrapperClose5_1","wrapperCloseFixed","wrapperCloseFixed5_1","mobileWrapperClose","mobileWrapperClose5_1","side","offset","isHeaderFixed","isMobile","wrapperScrolledUp","top","regularHeight","fixedHeaderHeight","_extends","wrapperRef","el","stickyRef","_inheritsLoose","_proto","prototype","render","_this2","Consumer","renderMain","getStickyProp","_this3","isStickyDesktop","isStickyMobile","flags","_cx4","rootNodeRef","setRootNode","ref","headerWrapper","headerNativeStuck","Provider","value","stickyReduceLayoutEvents","_createClass","key","get","height","sidePageHeaderFixedLineHeight","sidePageHeaderFixedPaddingY","Component","__KONTUR_REACT_UI__","displayName","contextType","defaultProps"],"sources":["SidePageHeader.tsx"],"sourcesContent":["import React from 'react';\nimport throttle from 'lodash.throttle';\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 { cx } from '../../lib/theming/Emotion';\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 { ModalSeparator } from '../Modal/ModalSeparator';\nimport { isThemeGTE } from '../../lib/theming/ThemeHelpers';\nimport type { ReactUIFeatureFlags } from '../../lib/featureFlagsContext';\nimport { getFullReactUIFlagsContext, ReactUIFeatureFlagsContext } from '../../lib/featureFlagsContext';\n\nimport { styles } 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 true. Если включить флаг sidePageNotCutTitleOnStuckByDefault, дефолтное значение - 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@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 wrapper: HTMLElement | null = null;\n private sticky: Sticky | null = null;\n private lastRegularHeight = 0;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n private featureFlags!: ReactUIFeatureFlags;\n public get regularHeight(): number {\n const { isReadyToStuck } = this.state;\n if (!this.wrapper) {\n return 0;\n }\n if (!isReadyToStuck) {\n this.lastRegularHeight = getDOMRect(this.wrapper).height;\n }\n return this.lastRegularHeight;\n }\n\n public get fixedHeaderHeight(): number {\n const { theme } = this;\n return parseInt(theme.sidePageHeaderFixedLineHeight) + parseInt(theme.sidePageHeaderFixedPaddingY) * 2;\n }\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 if (!this.featureFlags.sidePageDisableHeaderShrink) {\n this.updateReadyToStuck();\n }\n };\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n 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 { isReadyToStuck } = this.state;\n\n let isStickyDesktop = !this.isMobileLayout && this.getStickyProp();\n const isStickyMobile = this.isMobileLayout && this.getStickyProp();\n\n const header = this.renderHeader;\n\n return (\n <ReactUIFeatureFlagsContext.Consumer>\n {(flags) => {\n this.featureFlags = getFullReactUIFlagsContext(flags);\n if (!this.featureFlags.sidePageDisableHeaderShrink) {\n isStickyDesktop = isStickyDesktop && isReadyToStuck;\n }\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div\n data-tid={SidePageHeaderDataTids.root}\n ref={this.wrapperRef}\n className={cx(styles.headerWrapper(), {\n [styles.headerNativeStuck(this.theme)]: this.state.isNativeStuck,\n })}\n >\n <ReactUIFeatureFlagsContext.Provider value={{ stickyReduceLayoutEvents: true }}>\n {!this.state.isNativeStuck && (isStickyDesktop || isStickyMobile) ? (\n <Sticky ref={this.stickyRef} side=\"top\">\n {header}\n </Sticky>\n ) : (\n header()\n )}\n </ReactUIFeatureFlagsContext.Provider>\n </div>\n </CommonWrapper>\n );\n }}\n </ReactUIFeatureFlagsContext.Consumer>\n );\n }\n\n private renderHeader = (fixed = false) => {\n const isDisplayed = this.props.hasSeparator || fixed;\n return (\n <div>\n <div\n className={cx(styles.header(this.theme), {\n [styles.headerFixed(this.theme)]: fixed,\n [styles.headerShrink(this.theme)]: fixed && !this.featureFlags.sidePageDisableHeaderShrink,\n [styles.mobileHeader(this.theme)]: this.isMobileLayout,\n })}\n >\n {this.renderClose(fixed)}\n <div\n className={cx(styles.title(this.theme), {\n [styles.title5_1(this.theme)]: isThemeGTE(this.theme, '5.1'),\n [styles.mobileTitle(this.theme)]: this.isMobileLayout,\n [styles.titleCut()]:\n fixed && (this.props.cutTitleOnStuck ?? !this.featureFlags.sidePageNotCutTitleOnStuckByDefault),\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 const versionGTE5_1 = isThemeGTE(this.theme, '5.1');\n return (\n <div\n className={cx(styles.wrapperClose(this.theme), {\n [styles.wrapperClose5_1(this.theme)]: versionGTE5_1,\n [styles.wrapperCloseFixed(this.theme)]: fixed && !this.featureFlags.sidePageDisableHeaderShrink,\n [styles.wrapperCloseFixed5_1(this.theme)]:\n fixed && versionGTE5_1 && !this.featureFlags.sidePageDisableHeaderShrink,\n [styles.mobileWrapperClose(this.theme)]: this.isMobileLayout,\n [styles.mobileWrapperClose5_1(this.theme)]: this.isMobileLayout && versionGTE5_1,\n })}\n >\n {!(this.isMobileLayout || this.featureFlags.sidePageDisableHeaderShrink) ? (\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 updateReadyToStuck = () => {\n if (this.wrapper) {\n const wrapperScrolledUp = getDOMRect(this.wrapper).top;\n const isReadyToStuck = this.regularHeight + wrapperScrolledUp <= this.fixedHeaderHeight;\n this.setState((state) => (state.isReadyToStuck !== isReadyToStuck ? { ...state, isReadyToStuck } : state));\n }\n };\n\n private wrapperRef = (el: HTMLElement | null) => {\n this.wrapper = el;\n };\n\n private stickyRef = (el: Sticky | null) => {\n this.sticky = el;\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
2
  import type { CommonProps } from '../../internal/CommonWrapper';
3
+ import type { TGetRootNode } from '../../lib/rootNode';
3
4
  import type { SidePageContextType } from './SidePageContext';
4
5
  export interface SidePageHeaderProps extends Omit<CommonProps, 'children'> {
5
6
  children?: React.ReactNode | ((fixed: boolean) => React.ReactNode);
@@ -7,9 +8,15 @@ export interface SidePageHeaderProps extends Omit<CommonProps, 'children'> {
7
8
  sticky?: boolean;
8
9
  /** Определяет, нужно ли показывать ModalSeparator. */
9
10
  hasSeparator?: boolean;
11
+ /**
12
+ * Обрезает длинный заголовок при «залипании» шапки.
13
+ * @default true. Если включить флаг sidePageNotCutTitleOnStuckByDefault, дефолтное значение - false
14
+ */
15
+ cutTitleOnStuck?: boolean;
10
16
  }
11
17
  export interface SidePageHeaderState {
12
- isReadyToFix: boolean;
18
+ isNativeStuck: boolean;
19
+ isReadyToStuck: boolean;
13
20
  }
14
21
  export declare const SidePageHeaderDataTids: {
15
22
  readonly root: "SidePageHeader__root";
@@ -32,18 +39,21 @@ export declare class SidePageHeader extends React.Component<SidePageHeaderProps,
32
39
  private wrapper;
33
40
  private sticky;
34
41
  private lastRegularHeight;
42
+ getRootNode: TGetRootNode;
35
43
  private setRootNode;
44
+ private featureFlags;
36
45
  get regularHeight(): number;
37
46
  get fixedHeaderHeight(): number;
38
47
  componentDidMount: () => void;
39
48
  componentWillUnmount: () => void;
49
+ private throttleHandleScroll;
40
50
  update: () => void;
41
51
  render(): JSX.Element;
42
52
  getStickyProp(): boolean;
43
53
  private renderMain;
44
54
  private renderHeader;
45
55
  private renderClose;
46
- private updateReadyToFix;
56
+ private updateReadyToStuck;
47
57
  private wrapperRef;
48
58
  private stickyRef;
49
59
  }
@@ -2,7 +2,6 @@ import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
3
3
  var _class, _Spinner;
4
4
  import React from 'react';
5
- import PropTypes from 'prop-types';
6
5
  import { ThemeContext } from "../../../lib/theming/ThemeContext";
7
6
  import { SpinnerIcon } from "../../../internal/SpinnerIcon/SpinnerIcon";
8
7
  import { CommonWrapper } from "../../../internal/CommonWrapper";
@@ -79,23 +78,7 @@ export var Spinner = rootNode(_class = (_Spinner = /*#__PURE__*/function (_React
79
78
  }, this.renderSpinner(type, dimmed, inline)), caption && this.renderCaption(type, caption)));
80
79
  };
81
80
  return Spinner;
82
- }(React.Component), _Spinner.__KONTUR_REACT_UI__ = 'Spinner', _Spinner.displayName = 'Spinner', _Spinner.propTypes = {
83
- /**
84
- * Текст рядом с мини-лоадером.
85
- *
86
- * 'Загрузка' - значение по-умолчанию
87
- */
88
- caption: PropTypes.node,
89
- dimmed: PropTypes.bool,
90
- /**
91
- * Тип спиннера: mini, normal, big
92
- *
93
- * Значение по-умолчанию - normal
94
- *
95
- * Spinner.types - все доступные типы
96
- */
97
- type: PropTypes.oneOf(types)
98
- }, _Spinner.defaultProps = {
81
+ }(React.Component), _Spinner.__KONTUR_REACT_UI__ = 'Spinner', _Spinner.displayName = 'Spinner', _Spinner.defaultProps = {
99
82
  type: 'normal'
100
83
  }, _Spinner.Types = Object.assign.apply(Object, [{}].concat(types.map(function (type) {
101
84
  var _ref;
@@ -1 +1 @@
1
- {"version":3,"names":["React","PropTypes","ThemeContext","SpinnerIcon","CommonWrapper","cx","rootNode","createPropsGetter","styles","types","SpinnerDataTids","root","Spinner","_class","_Spinner","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","defaultProps","renderSpinner","type","dimmed","inline","_cx","createElement","size","className","circle","theme","props","color","circleDimmedColor","circleWithoutColorAnimation","width","renderCaption","caption","captionColor","_inheritsLoose","_proto","prototype","render","_this2","Consumer","renderMain","_this$props","_this$props$caption","_extends","rootNodeRef","setRootNode","spinner","inner","Component","__KONTUR_REACT_UI__","displayName","propTypes","node","bool","oneOf","Types","Object","assign","map","_ref"],"sources":["Spinner.tsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport type { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { SpinnerIcon } from '../../internal/SpinnerIcon/SpinnerIcon';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport type { TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { styles } from './Spinner.styles';\n\nconst types = ['big', 'mini', 'normal'] as const;\n\nexport type SpinnerType = (typeof types)[number];\n\nexport interface SpinnerProps extends CommonProps {\n /** Задает подпись под спиннером.\n * @default \"Загрузка\" */\n caption?: React.ReactNode;\n\n /** Переводит спиннер в \"затемнённый режим\".\n * Цвет спиннера в \"затемнённом режиме\" определяется переменной `spinnerDimmedColor`. */\n dimmed?: boolean;\n\n /** Задает размер спиннера и текста.\n * @default normal. */\n type?: SpinnerType;\n\n /** Уменьшает спиннер для вставки в инлайн элемент. При type = \"big\"|\"normal\" размер спиннера уменьшается. */\n inline?: boolean;\n\n /** Задает толщину спиннера. */\n width?: number;\n\n /** Задает цвет спиннера. Не работает с пропом dimmed. */\n color?: React.CSSProperties['color'];\n}\n\nexport const SpinnerDataTids = {\n root: 'Spinner__root',\n} as const;\n\ntype DefaultProps = Required<Pick<SpinnerProps, 'type'>>;\n\n/**\n * `Spinner` — это зацикленный индикатор, не отображающий прогресс выполнения задачи.\n *\n * Используйте `Spinner`, чтобы показать, что система выполняет команду, которую дал пользователь.\n * Не применяйте `Spinner` для заполнения паузы при загрузке контента, для этого предназначен GlobalLoader.\n *\n * Используйте компонент `Spinner`, если вам нужен спиннер, без дополнительного функционала, который предоставляет компонент Loader.\n */\n@rootNode\nexport class Spinner extends React.Component<SpinnerProps> {\n public static __KONTUR_REACT_UI__ = 'Spinner';\n public static displayName = 'Spinner';\n\n public static propTypes = {\n /**\n * Текст рядом с мини-лоадером.\n *\n * 'Загрузка' - значение по-умолчанию\n */\n caption: PropTypes.node,\n\n dimmed: PropTypes.bool,\n\n /**\n * Тип спиннера: mini, normal, big\n *\n * Значение по-умолчанию - normal\n *\n * Spinner.types - все доступные типы\n */\n type: PropTypes.oneOf(types),\n };\n\n public static defaultProps: DefaultProps = {\n type: 'normal',\n };\n\n private getProps = createPropsGetter(Spinner.defaultProps);\n\n public static Types: Record<SpinnerType, SpinnerType> = Object.assign({}, ...types.map((type) => ({ [type]: type })));\n private theme!: Theme;\n private setRootNode!: TSetRootNode;\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { caption = null, dimmed, inline } = this.props;\n const type = this.getProps().type;\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div data-tid={SpinnerDataTids.root} className={styles.spinner()}>\n <span className={styles.inner()}>{this.renderSpinner(type, dimmed, inline)}</span>\n {caption && this.renderCaption(type, caption)}\n </div>\n </CommonWrapper>\n );\n }\n\n private renderSpinner = (type: SpinnerType, dimmed?: boolean, inline?: boolean) => {\n return (\n <SpinnerIcon\n size={type}\n className={cx({\n [styles.circle(this.theme)]: !dimmed && !this.props.color,\n [styles.circleDimmedColor(this.theme)]: dimmed,\n [styles.circleWithoutColorAnimation()]: dimmed || !!this.props.color,\n })}\n dimmed={dimmed}\n width={this.props.width}\n color={this.props.color}\n inline={inline}\n />\n );\n };\n\n private renderCaption = (type: SpinnerType, caption: React.ReactNode) => (\n <span className={cx(styles[type](this.theme), styles.captionColor(this.theme))}>{caption}</span>\n );\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","ThemeContext","SpinnerIcon","CommonWrapper","cx","rootNode","createPropsGetter","styles","types","SpinnerDataTids","root","Spinner","_class","_Spinner","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","defaultProps","renderSpinner","type","dimmed","inline","_cx","createElement","size","className","circle","theme","props","color","circleDimmedColor","circleWithoutColorAnimation","width","renderCaption","caption","captionColor","_inheritsLoose","_proto","prototype","render","_this2","Consumer","renderMain","_this$props","_this$props$caption","_extends","rootNodeRef","setRootNode","spinner","inner","Component","__KONTUR_REACT_UI__","displayName","Types","Object","assign","map","_ref"],"sources":["Spinner.tsx"],"sourcesContent":["import React from 'react';\n\nimport type { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { SpinnerIcon } from '../../internal/SpinnerIcon/SpinnerIcon';\nimport type { CommonProps } from '../../internal/CommonWrapper';\nimport { CommonWrapper } from '../../internal/CommonWrapper';\nimport { cx } from '../../lib/theming/Emotion';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\n\nimport { styles } from './Spinner.styles';\n\nconst types = ['big', 'mini', 'normal'] as const;\n\nexport type SpinnerType = (typeof types)[number];\n\nexport interface SpinnerProps extends CommonProps {\n /** Задает подпись под спиннером.\n * @default \"Загрузка\" */\n caption?: React.ReactNode;\n\n /** Переводит спиннер в \"затемнённый режим\".\n * Цвет спиннера в \"затемнённом режиме\" определяется переменной `spinnerDimmedColor`. */\n dimmed?: boolean;\n\n /** Задает размер спиннера и текста.\n * @default normal. */\n type?: SpinnerType;\n\n /** Уменьшает спиннер для вставки в инлайн элемент. При type = \"big\"|\"normal\" размер спиннера уменьшается. */\n inline?: boolean;\n\n /** Задает толщину спиннера. */\n width?: number;\n\n /** Задает цвет спиннера. Не работает с пропом dimmed. */\n color?: React.CSSProperties['color'];\n}\n\nexport const SpinnerDataTids = {\n root: 'Spinner__root',\n} as const;\n\ntype DefaultProps = Required<Pick<SpinnerProps, 'type'>>;\n\n/**\n * `Spinner` — это зацикленный индикатор, не отображающий прогресс выполнения задачи.\n *\n * Используйте `Spinner`, чтобы показать, что система выполняет команду, которую дал пользователь.\n * Не применяйте `Spinner` для заполнения паузы при загрузке контента, для этого предназначен GlobalLoader.\n *\n * Используйте компонент `Spinner`, если вам нужен спиннер, без дополнительного функционала, который предоставляет компонент Loader.\n */\n@rootNode\nexport class Spinner extends React.Component<SpinnerProps> {\n public static __KONTUR_REACT_UI__ = 'Spinner';\n public static displayName = 'Spinner';\n\n public static defaultProps: DefaultProps = {\n type: 'normal',\n };\n\n private getProps = createPropsGetter(Spinner.defaultProps);\n\n public static Types: Record<SpinnerType, SpinnerType> = Object.assign({}, ...types.map((type) => ({ [type]: type })));\n private theme!: Theme;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { caption = null, dimmed, inline } = this.props;\n const type = this.getProps().type;\n\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <div data-tid={SpinnerDataTids.root} className={styles.spinner()}>\n <span className={styles.inner()}>{this.renderSpinner(type, dimmed, inline)}</span>\n {caption && this.renderCaption(type, caption)}\n </div>\n </CommonWrapper>\n );\n }\n\n private renderSpinner = (type: SpinnerType, dimmed?: boolean, inline?: boolean) => {\n return (\n <SpinnerIcon\n size={type}\n className={cx({\n [styles.circle(this.theme)]: !dimmed && !this.props.color,\n [styles.circleDimmedColor(this.theme)]: dimmed,\n [styles.circleWithoutColorAnimation()]: dimmed || !!this.props.color,\n })}\n dimmed={dimmed}\n width={this.props.width}\n color={this.props.color}\n inline={inline}\n />\n );\n };\n\n private renderCaption = (type: SpinnerType, caption: React.ReactNode) => (\n <span className={cx(styles[type](this.theme), styles.captionColor(this.theme))}>{caption}</span>\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
- import PropTypes from 'prop-types';
3
2
  import type { CommonProps } from '../../internal/CommonWrapper';
3
+ import type { TGetRootNode } from '../../lib/rootNode';
4
4
  declare const types: readonly ["big", "mini", "normal"];
5
5
  export type SpinnerType = (typeof types)[number];
6
6
  export interface SpinnerProps extends CommonProps {
@@ -35,27 +35,11 @@ type DefaultProps = Required<Pick<SpinnerProps, 'type'>>;
35
35
  export declare class Spinner extends React.Component<SpinnerProps> {
36
36
  static __KONTUR_REACT_UI__: string;
37
37
  static displayName: string;
38
- static propTypes: {
39
- /**
40
- * Текст рядом с мини-лоадером.
41
- *
42
- * 'Загрузка' - значение по-умолчанию
43
- */
44
- caption: PropTypes.Requireable<PropTypes.ReactNodeLike>;
45
- dimmed: PropTypes.Requireable<boolean>;
46
- /**
47
- * Тип спиннера: mini, normal, big
48
- *
49
- * Значение по-умолчанию - normal
50
- *
51
- * Spinner.types - все доступные типы
52
- */
53
- type: PropTypes.Requireable<"big" | "normal" | "mini">;
54
- };
55
38
  static defaultProps: DefaultProps;
56
39
  private getProps;
57
40
  static Types: Record<SpinnerType, SpinnerType>;
58
41
  private theme;
42
+ getRootNode: TGetRootNode;
59
43
  private setRootNode;
60
44
  render(): React.JSX.Element;
61
45
  private renderMain;
@@ -2,7 +2,6 @@ import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
3
3
  var _class, _Sticky;
4
4
  import React from 'react';
5
- import PropTypes from 'prop-types';
6
5
  import shallowEqual from 'shallowequal';
7
6
  import { globalObject } from '@skbkontur/global-object';
8
7
  import * as LayoutEvents from "../../../lib/LayoutEvents";
@@ -194,17 +193,6 @@ export var Sticky = rootNode(_class = (_Sticky = /*#__PURE__*/function (_React$C
194
193
  }) : null));
195
194
  };
196
195
  return Sticky;
197
- }(React.Component), _Sticky.__KONTUR_REACT_UI__ = 'Sticky', _Sticky.displayName = 'Sticky', _Sticky.propTypes = {
198
- children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),
199
- /**
200
- * Функция, которая возвращает DOM-элемент, который нельзя пересекать.
201
- */
202
- getStop: PropTypes.func,
203
- /**
204
- * Отступ от границы в пикселях
205
- */
206
- offset: PropTypes.number,
207
- side: PropTypes.oneOf(['top', 'bottom']).isRequired
208
- }, _Sticky.defaultProps = {
196
+ }(React.Component), _Sticky.__KONTUR_REACT_UI__ = 'Sticky', _Sticky.displayName = 'Sticky', _Sticky.defaultProps = {
209
197
  offset: 0
210
198
  }, _Sticky)) || _class;
@@ -1 +1 @@
1
- {"version":3,"names":["React","PropTypes","shallowEqual","globalObject","LayoutEvents","isFunction","ZIndex","CommonWrapper","cx","rootNode","getDOMRect","createPropsGetter","getFullReactUIFlagsContext","ReactUIFeatureFlagsContext","styles","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","_globalObject$documen","document","documentElement","Error","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","featureFlags","stickyReduceLayoutEvents","emit","render","_this2","createElement","Consumer","flags","renderMain","_cx","children","_this$state2","innerStyle","_extends","rootNodeRef","setRootNode","className","priority","applyZIndex","style","wrapperRef","container","Component","__KONTUR_REACT_UI__","displayName","propTypes","oneOfType","node","func","number","oneOf","isRequired"],"sources":["Sticky.tsx"],"sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport shallowEqual from 'shallowequal';\nimport { globalObject } from '@skbkontur/global-object';\n\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 { cx } from '../../lib/theming/Emotion';\nimport type { TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport type { ReactUIFeatureFlags } from '../../lib/featureFlagsContext';\nimport { getFullReactUIFlagsContext, ReactUIFeatureFlagsContext } from '../../lib/featureFlagsContext';\n\nimport { styles } 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@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 propTypes = {\n children: PropTypes.oneOfType([PropTypes.node, PropTypes.func]),\n\n /**\n * Функция, которая возвращает DOM-элемент, который нельзя пересекать.\n */\n getStop: PropTypes.func,\n\n /**\n * Отступ от границы в пикселях\n */\n offset: PropTypes.number,\n\n side: PropTypes.oneOf(['top', 'bottom']).isRequired,\n };\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 wrapper: Nullable<HTMLElement>;\n private inner: Nullable<HTMLElement>;\n private layoutSubscription: { remove: Nullable<() => void> } = { remove: null };\n private reflowCounter = 0;\n private setRootNode!: TSetRootNode;\n public featureFlags!: ReactUIFeatureFlags;\n\n public componentDidMount() {\n this.reflow();\n\n this.layoutSubscription = LayoutEvents.addListener(this.reflow);\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.featureFlags.stickyReduceLayoutEvents ? this.reflow() : LayoutEvents.emit();\n this.reflowCounter += 1;\n return;\n }\n }\n this.reflowCounter = 0;\n }\n\n public render() {\n return (\n <ReactUIFeatureFlagsContext.Consumer>\n {(flags) => {\n this.featureFlags = getFullReactUIFlagsContext(flags);\n return this.renderMain();\n }}\n </ReactUIFeatureFlagsContext.Consumer>\n );\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={styles.wrapper()}>\n <ZIndex\n priority=\"Sticky\"\n applyZIndex={fixed}\n className={cx(styles.inner(), {\n [styles.fixed()]: fixed && !stopped,\n [styles.stopped()]: stopped,\n })}\n style={innerStyle}\n wrapperRef={this.refInner}\n >\n <div className={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 (!globalObject.document?.documentElement) {\n throw Error('There is no \"documentElement\" in document');\n }\n\n const windowHeight = globalObject.innerHeight || 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","globalObject","LayoutEvents","isFunction","ZIndex","CommonWrapper","cx","rootNode","getDOMRect","createPropsGetter","getFullReactUIFlagsContext","ReactUIFeatureFlagsContext","styles","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","_globalObject$documen","document","documentElement","Error","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","featureFlags","stickyReduceLayoutEvents","emit","render","_this2","createElement","Consumer","flags","renderMain","_cx","children","_this$state2","innerStyle","_extends","rootNodeRef","setRootNode","className","priority","applyZIndex","style","wrapperRef","container","Component","__KONTUR_REACT_UI__","displayName"],"sources":["Sticky.tsx"],"sourcesContent":["import React from 'react';\nimport shallowEqual from 'shallowequal';\nimport { globalObject } from '@skbkontur/global-object';\n\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 { cx } from '../../lib/theming/Emotion';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport type { ReactUIFeatureFlags } from '../../lib/featureFlagsContext';\nimport { getFullReactUIFlagsContext, ReactUIFeatureFlagsContext } from '../../lib/featureFlagsContext';\n\nimport { styles } 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@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 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 public featureFlags!: ReactUIFeatureFlags;\n\n public componentDidMount() {\n this.reflow();\n\n this.layoutSubscription = LayoutEvents.addListener(this.reflow);\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.featureFlags.stickyReduceLayoutEvents ? this.reflow() : LayoutEvents.emit();\n this.reflowCounter += 1;\n return;\n }\n }\n this.reflowCounter = 0;\n }\n\n public render() {\n return (\n <ReactUIFeatureFlagsContext.Consumer>\n {(flags) => {\n this.featureFlags = getFullReactUIFlagsContext(flags);\n return this.renderMain();\n }}\n </ReactUIFeatureFlagsContext.Consumer>\n );\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={styles.wrapper()}>\n <ZIndex\n priority=\"Sticky\"\n applyZIndex={fixed}\n className={cx(styles.inner(), {\n [styles.fixed()]: fixed && !stopped,\n [styles.stopped()]: stopped,\n })}\n style={innerStyle}\n wrapperRef={this.refInner}\n >\n <div className={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 (!globalObject.document?.documentElement) {\n throw Error('There is no \"documentElement\" in document');\n }\n\n const windowHeight = globalObject.innerHeight || 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,7 +1,7 @@
1
1
  import React from 'react';
2
- import PropTypes from 'prop-types';
3
2
  import type { Nullable } from '../../typings/utility-types';
4
3
  import type { CommonProps } from '../../internal/CommonWrapper';
4
+ import type { TGetRootNode } from '../../lib/rootNode';
5
5
  import type { ReactUIFeatureFlags } from '../../lib/featureFlagsContext';
6
6
  export interface StickyProps extends Omit<CommonProps, 'children'> {
7
7
  /** Задает сторону залипания. */
@@ -34,18 +34,6 @@ type DefaultProps = Required<Pick<StickyProps, 'offset'>>;
34
34
  export declare class Sticky extends React.Component<StickyProps, StickyState> {
35
35
  static __KONTUR_REACT_UI__: string;
36
36
  static displayName: string;
37
- static propTypes: {
38
- children: PropTypes.Requireable<NonNullable<((...args: any[]) => any) | PropTypes.ReactNodeLike>>;
39
- /**
40
- * Функция, которая возвращает DOM-элемент, который нельзя пересекать.
41
- */
42
- getStop: PropTypes.Requireable<(...args: any[]) => any>;
43
- /**
44
- * Отступ от границы в пикселях
45
- */
46
- offset: PropTypes.Requireable<number>;
47
- side: PropTypes.Validator<string>;
48
- };
49
37
  static defaultProps: DefaultProps;
50
38
  private getProps;
51
39
  state: StickyState;
@@ -53,6 +41,7 @@ export declare class Sticky extends React.Component<StickyProps, StickyState> {
53
41
  private inner;
54
42
  private layoutSubscription;
55
43
  private reflowCounter;
44
+ getRootNode: TGetRootNode;
56
45
  private setRootNode;
57
46
  featureFlags: ReactUIFeatureFlags;
58
47
  componentDidMount(): void;