@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
@@ -1,50 +1,40 @@
1
1
  import React from 'react';
2
- import PropTypes from 'prop-types';
3
2
  import type { Nullable } from '../../typings/utility-types';
4
3
  interface Props {
4
+ /**
5
+ * Цвет фон пина
6
+ */
5
7
  backgroundColor: string;
8
+ /**
9
+ * Цвет границы пина
10
+ */
6
11
  borderColor: string;
12
+ /**
13
+ * Ширина границы пина
14
+ */
7
15
  borderWidth: number;
16
+ /**
17
+ * Смещение пина от края попапа. Край задаётся в пропе position вторым словом
18
+ */
8
19
  offset: number;
20
+ /**
21
+ * Ссылка на попап
22
+ */
9
23
  popupElement: Nullable<Element>;
24
+ /**
25
+ * Позиция попапа, по которой будет вычислено положение пина
26
+ */
10
27
  popupPosition: string;
28
+ /**
29
+ * Сторона пина без учёта границы.
30
+ * Пин представляет собой равносторонний треугольник, высота от попапа
31
+ * до "носика" пина будет соответствовать формуле (size* √3)/2
32
+ */
11
33
  size: number;
12
34
  }
13
35
  export declare class PopupPin extends React.Component<Props> {
14
36
  static __KONTUR_REACT_UI__: string;
15
37
  static displayName: string;
16
- static propTypes: {
17
- /**
18
- * Цвет фон пина
19
- */
20
- backgroundColor: PropTypes.Requireable<string>;
21
- /**
22
- * Цвет границы пина
23
- */
24
- borderColor: PropTypes.Requireable<string>;
25
- /**
26
- * Ширина границы пина
27
- */
28
- borderWidth: PropTypes.Requireable<number>;
29
- /**
30
- * Смещение пина от края попапа. Край задаётся в пропе position вторым словом
31
- */
32
- offset: PropTypes.Requireable<number>;
33
- /**
34
- * Ссылка на попап
35
- */
36
- popupElement: PropTypes.Requireable<any>;
37
- /**
38
- * Позиция попапа, по которой будет вычислено положение пина
39
- */
40
- popupPosition: PropTypes.Requireable<string>;
41
- /**
42
- * Сторона пина без учёта границы.
43
- * Пин представляет собой равносторонний треугольник, высота от попапа
44
- * до "носика" пина будет соответствовать формуле (size* √3)/2
45
- */
46
- size: PropTypes.Requireable<number>;
47
- };
48
38
  render(): React.JSX.Element | null;
49
39
  private getPopupOppositeDirection;
50
40
  private getWrapperStyle;
@@ -0,0 +1,146 @@
1
+ import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
2
+ import React from 'react';
3
+ import { cx } from "../../../lib/theming/Emotion";
4
+ import { PopupHelper } from "../PopupHelper";
5
+ import { styles } from "../PopupPinNew.styles";
6
+ import { PopupDataTids } from "../Popup";
7
+ export var PopupPinNew = /*#__PURE__*/function (_React$Component) {
8
+ function PopupPinNew() {
9
+ var _this;
10
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
11
+ args[_key] = arguments[_key];
12
+ }
13
+ _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;
14
+ _this.getPinInlineStyle = function (left, top) {
15
+ var _ref, _ref2;
16
+ var direction = _this.getPopupOppositeDirection();
17
+ if (!direction) {
18
+ return;
19
+ }
20
+
21
+ // Добавляем запас в 1px, чтобы пофиксить случайные отделения пинов
22
+ var correctedLeft = left - 1;
23
+ var correctedTop = top - 1;
24
+ var correctedSize = _this.props.size + 1;
25
+ switch (direction) {
26
+ case 'top':
27
+ case 'bottom':
28
+ return _ref = {}, _ref[direction] = -_this.props.size + 'px', _ref.left = correctedLeft + 'px', _ref.width = correctedSize * 2 + 'px', _ref.height = correctedSize + 'px', _ref.backgroundColor = _this.props.backgroundColor, _ref;
29
+ case 'left':
30
+ case 'right':
31
+ return _ref2 = {}, _ref2[direction] = -_this.props.size + 'px', _ref2.top = correctedTop + 'px', _ref2.height = correctedSize * 2 + 'px', _ref2.width = correctedSize + 'px', _ref2.backgroundColor = _this.props.backgroundColor, _ref2;
32
+ default:
33
+ console.error("Can't get inline style: invalid direction '" + direction + "'. Returning default");
34
+ }
35
+ };
36
+ _this.getPinCoordinates = function (popupElement) {
37
+ var popupRect = PopupHelper.getElementAbsoluteRect(popupElement);
38
+ var _this$positionObject = _this.positionObject,
39
+ direction = _this$positionObject.direction,
40
+ align = _this$positionObject.align;
41
+ switch (direction) {
42
+ case 'top':
43
+ return {
44
+ top: popupRect.height,
45
+ left: _this.getPinLeftCoordinate(popupRect, align)
46
+ };
47
+ case 'bottom':
48
+ return {
49
+ top: -2 * _this.props.size,
50
+ left: _this.getPinLeftCoordinate(popupRect, align)
51
+ };
52
+ case 'left':
53
+ return {
54
+ top: _this.getPinTopCoordinate(popupRect, align),
55
+ left: popupRect.width
56
+ };
57
+ case 'right':
58
+ return {
59
+ top: _this.getPinTopCoordinate(popupRect, align),
60
+ left: -2 * _this.props.size
61
+ };
62
+ default:
63
+ console.error("Can't get coordinate: invalid direction '" + direction + "'.");
64
+ }
65
+ };
66
+ _this.getPinTopCoordinate = function (popupRect, align) {
67
+ switch (align) {
68
+ case 'top':
69
+ return _this.props.offset;
70
+ case 'middle':
71
+ return popupRect.height / 2 - _this.props.size;
72
+ case 'bottom':
73
+ return popupRect.height - _this.props.offset - 2 * _this.props.size;
74
+ default:
75
+ console.error("Can't get coordinate: invalid align '" + align + "'.");
76
+ }
77
+ };
78
+ _this.getPinLeftCoordinate = function (popupRect, align) {
79
+ switch (align) {
80
+ case 'left':
81
+ return _this.props.offset;
82
+ case 'center':
83
+ return popupRect.width / 2 - _this.props.size;
84
+ case 'right':
85
+ return popupRect.width - _this.props.offset - 2 * _this.props.size;
86
+ default:
87
+ console.error("Can't get coordinate: invalid align '" + align + "'.");
88
+ }
89
+ };
90
+ _this.getPinDirectionalStyle = function () {
91
+ switch (_this.positionObject.direction) {
92
+ case 'top':
93
+ return styles.pinTop();
94
+ case 'bottom':
95
+ return styles.pinBottom();
96
+ case 'left':
97
+ return styles.pinLeft();
98
+ case 'right':
99
+ return styles.pinRight();
100
+ default:
101
+ console.error("Can't get directional style: invalid direction '" + _this.positionObject.direction + "'.");
102
+ }
103
+ };
104
+ return _this;
105
+ }
106
+ _inheritsLoose(PopupPinNew, _React$Component);
107
+ var _proto = PopupPinNew.prototype;
108
+ _proto.render = function render() {
109
+ if (!this.props.popupElement) {
110
+ return null;
111
+ }
112
+ this.positionObject = PopupHelper.getPositionObject(this.props.popupPosition);
113
+ var coords = this.getPinCoordinates(this.props.popupElement);
114
+ if (!coords || !coords.left || !coords.top) {
115
+ return null;
116
+ }
117
+ var inlineStyle = this.getPinInlineStyle(coords.left, coords.top);
118
+ var directionalStyle = this.getPinDirectionalStyle();
119
+ if (!inlineStyle || !directionalStyle) {
120
+ return null;
121
+ }
122
+ return /*#__PURE__*/React.createElement("div", {
123
+ "data-tid": PopupDataTids.popupPin,
124
+ className: cx(styles.pin(), directionalStyle),
125
+ style: inlineStyle
126
+ });
127
+ };
128
+ _proto.getPopupOppositeDirection = function getPopupOppositeDirection() {
129
+ var popupDirection = PopupHelper.getPositionObject(this.props.popupPosition).direction;
130
+ switch (popupDirection) {
131
+ case 'top':
132
+ return 'bottom';
133
+ case 'bottom':
134
+ return 'top';
135
+ case 'left':
136
+ return 'right';
137
+ case 'right':
138
+ return 'left';
139
+ default:
140
+ console.error("Can't get opposite direction: invalid direction '" + popupDirection + "'");
141
+ }
142
+ };
143
+ return PopupPinNew;
144
+ }(React.Component);
145
+ PopupPinNew.__KONTUR_REACT_UI__ = 'PopupPin';
146
+ PopupPinNew.displayName = 'PopupPin';
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","cx","PopupHelper","styles","PopupDataTids","PopupPinNew","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getPinInlineStyle","left","top","_ref","_ref2","direction","getPopupOppositeDirection","correctedLeft","correctedTop","correctedSize","props","size","width","height","backgroundColor","console","error","getPinCoordinates","popupElement","popupRect","getElementAbsoluteRect","_this$positionObject","positionObject","align","getPinLeftCoordinate","getPinTopCoordinate","offset","getPinDirectionalStyle","pinTop","pinBottom","pinLeft","pinRight","_inheritsLoose","_proto","prototype","render","getPositionObject","popupPosition","coords","inlineStyle","directionalStyle","createElement","popupPin","className","pin","style","popupDirection","Component","__KONTUR_REACT_UI__","displayName"],"sources":["PopupPinNew.tsx"],"sourcesContent":["import React from 'react';\n\nimport type { Nullable } from '../../typings/utility-types';\nimport { cx } from '../../lib/theming/Emotion';\n\nimport type { PositionObject, Rect } from './PopupHelper';\nimport { PopupHelper } from './PopupHelper';\nimport { styles } from './PopupPinNew.styles';\nimport { PopupDataTids } from './Popup';\n\ninterface PopupPinProps {\n /** Цвет фона пина */\n backgroundColor: string;\n\n /** Смещение пина от края попапа. Край задаётся в пропе position вторым словом */\n offset: number;\n\n /** Ссылка на попап */\n popupElement?: Nullable<Element>;\n\n /** Позиция попапа, по которой будет вычислено положение пина */\n popupPosition: string;\n\n /**\n * Сторона пина без учёта границы.\n * Пин представляет собой равносторонний треугольник, высота от попапа\n * до \"носика\" пина будет соответствовать формуле (size* √3)/2\n */\n size: number;\n}\n\nexport class PopupPinNew extends React.Component<PopupPinProps> {\n public static __KONTUR_REACT_UI__ = 'PopupPin';\n public static displayName = 'PopupPin';\n\n private positionObject!: PositionObject;\n\n public render() {\n if (!this.props.popupElement) {\n return null;\n }\n\n this.positionObject = PopupHelper.getPositionObject(this.props.popupPosition);\n\n const coords = this.getPinCoordinates(this.props.popupElement);\n if (!coords || !coords.left || !coords.top) {\n return null;\n }\n\n const inlineStyle = this.getPinInlineStyle(coords.left, coords.top);\n const directionalStyle = this.getPinDirectionalStyle();\n if (!inlineStyle || !directionalStyle) {\n return null;\n }\n\n return (\n <div data-tid={PopupDataTids.popupPin} className={cx(styles.pin(), directionalStyle)} style={inlineStyle}></div>\n );\n }\n\n private getPopupOppositeDirection() {\n const popupDirection = PopupHelper.getPositionObject(this.props.popupPosition).direction;\n switch (popupDirection) {\n case 'top':\n return 'bottom';\n case 'bottom':\n return 'top';\n case 'left':\n return 'right';\n case 'right':\n return 'left';\n default:\n console.error(`Can't get opposite direction: invalid direction '${popupDirection}'`);\n }\n }\n\n private getPinInlineStyle = (left: number, top: number) => {\n const direction = this.getPopupOppositeDirection();\n if (!direction) {\n return;\n }\n\n // Добавляем запас в 1px, чтобы пофиксить случайные отделения пинов\n const correctedLeft = left - 1;\n const correctedTop = top - 1;\n const correctedSize = this.props.size + 1;\n\n switch (direction) {\n case 'top':\n case 'bottom':\n return {\n [direction]: -this.props.size + 'px',\n left: correctedLeft + 'px',\n width: correctedSize * 2 + 'px',\n height: correctedSize + 'px',\n backgroundColor: this.props.backgroundColor,\n };\n case 'left':\n case 'right':\n return {\n [direction]: -this.props.size + 'px',\n top: correctedTop + 'px',\n height: correctedSize * 2 + 'px',\n width: correctedSize + 'px',\n backgroundColor: this.props.backgroundColor,\n };\n default:\n console.error(`Can't get inline style: invalid direction '${direction}'. Returning default`);\n }\n };\n\n private getPinCoordinates = (popupElement: Element) => {\n const popupRect = PopupHelper.getElementAbsoluteRect(popupElement);\n const { direction, align } = this.positionObject;\n switch (direction) {\n case 'top':\n return {\n top: popupRect.height,\n left: this.getPinLeftCoordinate(popupRect, align),\n };\n case 'bottom':\n return {\n top: -2 * this.props.size,\n left: this.getPinLeftCoordinate(popupRect, align),\n };\n case 'left':\n return {\n top: this.getPinTopCoordinate(popupRect, align),\n left: popupRect.width,\n };\n case 'right':\n return {\n top: this.getPinTopCoordinate(popupRect, align),\n left: -2 * this.props.size,\n };\n default:\n console.error(`Can't get coordinate: invalid direction '${direction}'.`);\n }\n };\n\n private getPinTopCoordinate = (popupRect: Rect, align: string) => {\n switch (align) {\n case 'top':\n return this.props.offset;\n case 'middle':\n return popupRect.height / 2 - this.props.size;\n case 'bottom':\n return popupRect.height - this.props.offset - 2 * this.props.size;\n default:\n console.error(`Can't get coordinate: invalid align '${align}'.`);\n }\n };\n\n private getPinLeftCoordinate = (popupRect: Rect, align: string) => {\n switch (align) {\n case 'left':\n return this.props.offset;\n case 'center':\n return popupRect.width / 2 - this.props.size;\n case 'right':\n return popupRect.width - this.props.offset - 2 * this.props.size;\n default:\n console.error(`Can't get coordinate: invalid align '${align}'.`);\n }\n };\n\n private getPinDirectionalStyle = () => {\n switch (this.positionObject.direction) {\n case 'top':\n return styles.pinTop();\n case 'bottom':\n return styles.pinBottom();\n case 'left':\n return styles.pinLeft();\n case 'right':\n return styles.pinRight();\n default:\n console.error(`Can't get directional style: invalid direction '${this.positionObject.direction}'.`);\n }\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../../../cjs/internal/Popup/PopupPinNew.js",
3
+ "module": "PopupPinNew",
4
+ "types": "../PopupPinNew.d.ts",
5
+ "sideEffects": false
6
+ }
@@ -0,0 +1,31 @@
1
+ import React from 'react';
2
+ import type { Nullable } from '../../typings/utility-types';
3
+ interface PopupPinProps {
4
+ /** Цвет фона пина */
5
+ backgroundColor: string;
6
+ /** Смещение пина от края попапа. Край задаётся в пропе position вторым словом */
7
+ offset: number;
8
+ /** Ссылка на попап */
9
+ popupElement?: Nullable<Element>;
10
+ /** Позиция попапа, по которой будет вычислено положение пина */
11
+ popupPosition: string;
12
+ /**
13
+ * Сторона пина без учёта границы.
14
+ * Пин представляет собой равносторонний треугольник, высота от попапа
15
+ * до "носика" пина будет соответствовать формуле (size* √3)/2
16
+ */
17
+ size: number;
18
+ }
19
+ export declare class PopupPinNew extends React.Component<PopupPinProps> {
20
+ static __KONTUR_REACT_UI__: string;
21
+ static displayName: string;
22
+ private positionObject;
23
+ render(): React.JSX.Element | null;
24
+ private getPopupOppositeDirection;
25
+ private getPinInlineStyle;
26
+ private getPinCoordinates;
27
+ private getPinTopCoordinate;
28
+ private getPinLeftCoordinate;
29
+ private getPinDirectionalStyle;
30
+ }
31
+ export {};
@@ -0,0 +1,20 @@
1
+ import _taggedTemplateLiteralLoose from "@babel/runtime/helpers/esm/taggedTemplateLiteralLoose";
2
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
3
+ import { css, memoizeStyle } from "../../../lib/theming/Emotion";
4
+ export var styles = memoizeStyle({
5
+ pin: function pin() {
6
+ return css(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n position: absolute;\n "])));
7
+ },
8
+ pinTop: function pinTop() {
9
+ return css(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n clip-path: polygon(0 0, 50% 100%, 100% 0);\n "])));
10
+ },
11
+ pinBottom: function pinBottom() {
12
+ return css(_templateObject3 || (_templateObject3 = _taggedTemplateLiteralLoose(["\n clip-path: polygon(0 100%, 50% 0, 100% 100%);\n "])));
13
+ },
14
+ pinLeft: function pinLeft() {
15
+ return css(_templateObject4 || (_templateObject4 = _taggedTemplateLiteralLoose(["\n clip-path: polygon(0 0, 100% 50%, 0 100%);\n "])));
16
+ },
17
+ pinRight: function pinRight() {
18
+ return css(_templateObject5 || (_templateObject5 = _taggedTemplateLiteralLoose(["\n clip-path: polygon(100% 0, 0 50%, 100% 100%);\n "])));
19
+ }
20
+ });
@@ -0,0 +1 @@
1
+ {"version":3,"names":["css","memoizeStyle","styles","pin","_templateObject","_taggedTemplateLiteralLoose","pinTop","_templateObject2","pinBottom","_templateObject3","pinLeft","_templateObject4","pinRight","_templateObject5"],"sources":["PopupPinNew.styles.ts"],"sourcesContent":["import { css, memoizeStyle } from '../../lib/theming/Emotion';\n\nexport const styles = memoizeStyle({\n pin() {\n return css`\n position: absolute;\n `;\n },\n\n pinTop() {\n return css`\n clip-path: polygon(0 0, 50% 100%, 100% 0);\n `;\n },\n\n pinBottom() {\n return css`\n clip-path: polygon(0 100%, 50% 0, 100% 100%);\n `;\n },\n\n pinLeft() {\n return css`\n clip-path: polygon(0 0, 100% 50%, 0 100%);\n `;\n },\n\n pinRight() {\n return css`\n clip-path: polygon(100% 0, 0 50%, 100% 100%);\n `;\n },\n});\n"],"mappings":"4LAAA,SAASA,GAAG,EAAEC,YAAY,QAAQ,2BAA2B;;AAE7D,OAAO,IAAMC,MAAM,GAAGD,YAAY,CAAC;EACjCE,GAAG,WAAAA,IAAA,EAAG;IACJ,OAAOH,GAAG,CAAAI,eAAA,KAAAA,eAAA,GAAAC,2BAAA;;;EAGZ,CAAC;;EAEDC,MAAM,WAAAA,OAAA,EAAG;IACP,OAAON,GAAG,CAAAO,gBAAA,KAAAA,gBAAA,GAAAF,2BAAA;;;EAGZ,CAAC;;EAEDG,SAAS,WAAAA,UAAA,EAAG;IACV,OAAOR,GAAG,CAAAS,gBAAA,KAAAA,gBAAA,GAAAJ,2BAAA;;;EAGZ,CAAC;;EAEDK,OAAO,WAAAA,QAAA,EAAG;IACR,OAAOV,GAAG,CAAAW,gBAAA,KAAAA,gBAAA,GAAAN,2BAAA;;;EAGZ,CAAC;;EAEDO,QAAQ,WAAAA,SAAA,EAAG;IACT,OAAOZ,GAAG,CAAAa,gBAAA,KAAAA,gBAAA,GAAAR,2BAAA;;;EAGZ;AACF,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,6 @@
1
+ {
2
+ "main": "../../../cjs/internal/Popup/PopupPinNew.styles.js",
3
+ "module": "PopupPinNew.styles",
4
+ "types": "../PopupPinNew.styles.d.ts",
5
+ "sideEffects": false
6
+ }
@@ -0,0 +1,7 @@
1
+ export declare const styles: {
2
+ pin(): string;
3
+ pinTop(): string;
4
+ pinBottom(): string;
5
+ pinLeft(): string;
6
+ pinRight(): string;
7
+ };
@@ -1 +1 @@
1
- {"version":3,"names":["React","globalObject","getRandomID","isKeyArrowVertical","isKeyEnter","isKeyEscape","isKeySpace","someKeys","ThemeContext","ThemeFactory","Popup","PopupIds","RenderLayer","CommonWrapper","responsiveLayout","rootNode","createPropsGetter","Menu","isValidPositions","styles","PopupMenuDataTids","PopupMenuType","Dropdown","Tooltip","Positions","PopupMenu","_class","_PopupMenu","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","rootId","root","getProps","defaultProps","state","menuVisible","firstItemShouldBeSelected","captionWrapper","savedFocusableElement","menu","open","showMenu","close","hideMenu","menuRef","element","handleOpen","focus","passPropsToCaption","caption","_this$props$popupMenu","cloneElement","id","props","popupMenuId","renderCaption","opened","openMenu","closeMenu","toggleMenu","corners","createElement","className","ref","onClick","handleCaptionClick","onKeyDown","handleCaptionKeyDown","hideMenuWithoutFocusing","saveFocus","setState","handleChangeMenuVisible","restoreFocus","e","preventDefault","handleKeyDown","document","activeElement","focusShouldBeRestored","onOpen","onClose","onChangeMenuState","handleItemSelection","event","isDefaultPrevented","type","_inheritsLoose","_proto","prototype","render","_this2","Consumer","theme","Provider","value","create","menuOffsetY","popupMenuMenuOffsetY","renderMain","_this$props$popupMenu2","_this$getProps","popupHasPin","disableAnimations","_extends","rootNodeRef","setRootNode","onClickOutside","onFocusOutside","active","container","style","width","children","anchorElement","hasShadow","margin","popupMargin","hasPin","pinOffset","popupPinOffset","positions","getPositions","mobileOnCloseRequest","isMobileLayout","menuWidth","maxHeight","menuMaxHeight","onItemClick","preventIconsOffset","cyclicSelection","initialSelectedItemIndex","header","footer","Component","__KONTUR_REACT_UI__","displayName","Type"],"sources":["PopupMenu.tsx"],"sourcesContent":["import type { AriaAttributes, HTMLAttributes } from 'react';\nimport React from 'react';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { getRandomID } from '../../lib/utils';\nimport type { HTMLProps } from '../../typings/html';\nimport {\n isKeyArrowVertical,\n isKeyEnter,\n isKeyEscape,\n isKeySpace,\n someKeys,\n} from '../../lib/events/keyboard/identifiers';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport type { PopupPositionsType } from '../Popup';\nimport { Popup, PopupIds } from '../Popup';\nimport { RenderLayer } from '../RenderLayer';\nimport type { Nullable } from '../../typings/utility-types';\nimport type { CommonProps } from '../CommonWrapper';\nimport { CommonWrapper } from '../CommonWrapper';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport type { TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport type { MenuProps } from '../Menu';\nimport { Menu } from '../Menu';\n\nimport { isValidPositions } from './validatePositions';\nimport { styles } from './PopupMenu.styles';\nimport { PopupMenuDataTids } from './tids';\n\nexport * from './tids';\n\nexport interface PopupMenuCaptionProps {\n opened: boolean;\n openMenu: (firstItemShouldBeSelected?: boolean) => void;\n closeMenu: (restoreFocus?: boolean) => void;\n toggleMenu: () => void;\n /** @ignore */\n corners?: React.CSSProperties;\n}\n\nexport interface PopupMenuProps\n extends CommonProps,\n Pick<MenuProps, 'preventIconsOffset'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'>,\n Pick<AriaAttributes, 'aria-label'> {\n children?: React.ReactNode;\n /** Максимальная высота меню */\n menuMaxHeight?: number | string;\n /** Ширина меню */\n menuWidth?: number | string;\n /** Ширина контейнера и caption */\n width?: React.CSSProperties['width'];\n\n /**\n * Элемент или функция возвращающая элемент,\n * если передана, используется вместо ```caption```,\n * в таком случае управлять открытием и закрытием меню\n * придется в этой функции\n */\n caption: React.ReactNode | ((props: PopupMenuCaptionProps) => React.ReactNode);\n\n header?: React.ReactNode;\n footer?: React.ReactNode;\n\n /** Массив разрешенных положений меню относительно caption'а. */\n positions?: PopupPositionsType[];\n /** Колбэк, вызываемый после открытия/закрытия меню */\n onChangeMenuState?: (isOpened: boolean, restoreFocus: boolean) => void;\n /** Пропсы, передающиеся в Popup */\n popupHasPin?: boolean;\n popupMargin?: number;\n popupPinOffset?: number;\n type?: 'dropdown' | 'tooltip';\n disableAnimations?: boolean;\n /** Действие при открытии меню */\n onOpen?: () => void;\n /** Действие при закрытии меню */\n onClose?: () => void;\n /**\n * Позволяет задать `id` выпадающему меню.\n *\n * Это может пригодиться при реализации a11y. Например, для того, чтобы связать `aria-controls` с выпадающим меню.\n */\n popupMenuId?: HTMLProps['id'];\n\n /** @ignore */\n corners?: React.CSSProperties;\n}\n\ninterface PopupMenuState {\n menuVisible: boolean;\n firstItemShouldBeSelected?: boolean;\n}\n\nexport const PopupMenuType = {\n Dropdown: 'dropdown',\n Tooltip: 'tooltip',\n} as const;\n\nconst Positions: PopupPositionsType[] = [\n 'top left',\n 'top center',\n 'top right',\n 'right top',\n 'right middle',\n 'right bottom',\n 'bottom left',\n 'bottom center',\n 'bottom right',\n 'left top',\n 'left middle',\n 'left bottom',\n];\n\ntype DefaultProps = Required<Pick<PopupMenuProps, 'positions' | 'type' | 'popupHasPin' | 'disableAnimations'>>;\n\n@rootNode\n@responsiveLayout\nexport class PopupMenu extends React.Component<PopupMenuProps, PopupMenuState> {\n public static __KONTUR_REACT_UI__ = 'PopupMenu';\n public static displayName = 'PopupMenu';\n\n private isMobileLayout!: boolean;\n private rootId = PopupIds.root + getRandomID();\n\n public static defaultProps: DefaultProps = {\n positions: Positions,\n type: PopupMenuType.Tooltip,\n popupHasPin: true,\n disableAnimations: false,\n };\n\n private getProps = createPropsGetter(PopupMenu.defaultProps);\n\n public static Type = PopupMenuType;\n\n public state = {\n menuVisible: false,\n firstItemShouldBeSelected: false,\n };\n\n private captionWrapper: HTMLSpanElement | null = null;\n private savedFocusableElement: HTMLElement | null = null;\n private menu: Nullable<Menu> = null;\n private setRootNode!: TSetRootNode;\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n menuOffsetY: theme.popupMenuMenuOffsetY,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { popupHasPin, disableAnimations } = this.getProps();\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <RenderLayer\n onClickOutside={this.hideMenuWithoutFocusing}\n onFocusOutside={this.hideMenuWithoutFocusing}\n active={this.state.menuVisible}\n >\n <div data-tid={PopupMenuDataTids.root} className={styles.container()} style={{ width: this.props.width }}>\n {this.renderCaption()}\n {this.captionWrapper && this.props.children && (\n <Popup\n id={this.props.popupMenuId ?? this.rootId}\n anchorElement={this.captionWrapper}\n opened={this.state.menuVisible}\n hasShadow\n margin={this.props.popupMargin}\n hasPin={popupHasPin}\n pinOffset={this.props.popupPinOffset}\n positions={this.getPositions()}\n disableAnimations={disableAnimations}\n onOpen={this.handleOpen}\n mobileOnCloseRequest={this.hideMenu}\n width={this.isMobileLayout ? 'auto' : this.props.menuWidth || 'auto'}\n >\n <Menu\n maxHeight={this.isMobileLayout ? 'none' : this.props.menuMaxHeight || 'none'}\n onKeyDown={this.handleKeyDown}\n onItemClick={this.handleItemSelection}\n preventIconsOffset={this.props.preventIconsOffset}\n cyclicSelection={false}\n ref={this.menuRef}\n initialSelectedItemIndex={this.state.firstItemShouldBeSelected ? 0 : -1}\n header={this.props.header}\n footer={this.props.footer}\n >\n {this.props.children}\n </Menu>\n </Popup>\n )}\n </div>\n </RenderLayer>\n </CommonWrapper>\n );\n }\n\n public open = (): void => this.showMenu();\n public close = (): void => this.hideMenu();\n\n private menuRef = (element: Nullable<Menu>) => (this.menu = element);\n\n private handleOpen = () => {\n if (this.menu) {\n this.menu.focus();\n }\n };\n\n private passPropsToCaption = (caption: React.ReactNode) => {\n if (typeof caption === 'string' || typeof caption === 'number') {\n return caption;\n }\n\n return React.cloneElement(caption as React.ReactElement, {\n id: this.props.id,\n 'aria-controls': this.props.popupMenuId ?? this.rootId,\n 'aria-expanded': this.state.menuVisible ? 'true' : 'false',\n 'aria-label': this.props['aria-label'],\n });\n };\n\n private renderCaption = () => {\n if (typeof this.props.caption === 'function') {\n const caption = this.props.caption({\n opened: this.state.menuVisible,\n openMenu: this.showMenu,\n closeMenu: this.hideMenu,\n toggleMenu: this.toggleMenu,\n corners: this.props.corners,\n });\n\n return (\n <span\n data-tid={PopupMenuDataTids.caption}\n className={styles.caption()}\n ref={(element) => (this.captionWrapper = element)}\n >\n {this.passPropsToCaption(caption)}\n </span>\n );\n }\n\n return (\n <span\n data-tid={PopupMenuDataTids.caption}\n onClick={this.handleCaptionClick}\n onKeyDown={this.handleCaptionKeyDown}\n ref={(element) => (this.captionWrapper = element)}\n className={styles.caption()}\n >\n {this.passPropsToCaption(this.props.caption)}\n </span>\n );\n };\n\n private hideMenuWithoutFocusing = () => this.hideMenu();\n\n private getPositions(): Readonly<PopupPositionsType[]> {\n const positions = this.getProps().positions;\n if (positions && isValidPositions(positions)) {\n return positions;\n }\n\n return Positions;\n }\n\n private showMenu = (firstItemShouldBeSelected?: boolean): void => {\n this.saveFocus();\n this.setState(\n {\n menuVisible: true,\n firstItemShouldBeSelected,\n },\n () => {\n this.handleChangeMenuVisible(false);\n },\n );\n };\n\n private hideMenu = (restoreFocus?: boolean): void => {\n this.setState(\n {\n menuVisible: false,\n firstItemShouldBeSelected: false,\n },\n () => {\n this.handleChangeMenuVisible(!!restoreFocus);\n },\n );\n };\n\n private toggleMenu = (): void => {\n this.state.menuVisible ? this.hideMenu() : this.showMenu();\n };\n\n private handleCaptionClick = (): void => {\n this.toggleMenu();\n };\n\n private handleCaptionKeyDown = (e: React.KeyboardEvent<HTMLElement>): void => {\n if (someKeys(isKeyEnter, isKeySpace, isKeyArrowVertical)(e)) {\n e.preventDefault();\n this.showMenu(true);\n }\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (isKeyEscape(e)) {\n const restoreFocus = true;\n this.hideMenu(restoreFocus);\n }\n };\n\n private saveFocus = (): void => {\n if (globalObject.document) {\n this.savedFocusableElement = globalObject.document.activeElement as HTMLElement;\n }\n };\n\n private restoreFocus = (): void => {\n if (this.savedFocusableElement) {\n this.savedFocusableElement.focus();\n this.savedFocusableElement = null;\n }\n };\n\n private handleChangeMenuVisible = (focusShouldBeRestored: boolean): void => {\n if (focusShouldBeRestored) {\n this.restoreFocus();\n }\n\n if (this.state.menuVisible && this.props.onOpen) {\n this.props.onOpen();\n }\n\n if (!this.state.menuVisible && this.props.onClose) {\n this.props.onClose();\n }\n\n if (typeof this.props.onChangeMenuState === 'function') {\n this.props.onChangeMenuState(this.state.menuVisible, focusShouldBeRestored);\n }\n };\n\n private handleItemSelection = (event: React.SyntheticEvent<HTMLElement>): void => {\n if (event.isDefaultPrevented()) {\n return;\n }\n\n if (event.type === 'keydown') {\n event.preventDefault();\n }\n\n const restoreFocus = event.type === 'keydown';\n this.hideMenu(restoreFocus);\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","globalObject","getRandomID","isKeyArrowVertical","isKeyEnter","isKeyEscape","isKeySpace","someKeys","ThemeContext","ThemeFactory","Popup","PopupIds","RenderLayer","CommonWrapper","responsiveLayout","rootNode","createPropsGetter","Menu","isValidPositions","styles","PopupMenuDataTids","PopupMenuType","Dropdown","Tooltip","Positions","PopupMenu","_class","_PopupMenu","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","rootId","root","getProps","defaultProps","state","menuVisible","firstItemShouldBeSelected","captionWrapper","savedFocusableElement","menu","open","showMenu","close","hideMenu","menuRef","element","handleOpen","focus","passPropsToCaption","caption","_this$props$popupMenu","cloneElement","id","props","popupMenuId","renderCaption","opened","openMenu","closeMenu","toggleMenu","corners","createElement","className","ref","onClick","handleCaptionClick","onKeyDown","handleCaptionKeyDown","hideMenuWithoutFocusing","saveFocus","setState","handleChangeMenuVisible","restoreFocus","e","preventDefault","handleKeyDown","document","activeElement","focusShouldBeRestored","onOpen","onClose","onChangeMenuState","handleItemSelection","event","isDefaultPrevented","type","_inheritsLoose","_proto","prototype","render","_this2","Consumer","theme","Provider","value","create","menuOffsetY","popupMenuMenuOffsetY","renderMain","_this$props$popupMenu2","_this$getProps","popupHasPin","disableAnimations","_extends","rootNodeRef","setRootNode","onClickOutside","onFocusOutside","active","container","style","width","children","anchorElement","hasShadow","margin","popupMargin","hasPin","pinOffset","popupPinOffset","positions","getPositions","mobileOnCloseRequest","isMobileLayout","menuWidth","maxHeight","menuMaxHeight","onItemClick","preventIconsOffset","cyclicSelection","initialSelectedItemIndex","header","footer","Component","__KONTUR_REACT_UI__","displayName","Type"],"sources":["PopupMenu.tsx"],"sourcesContent":["import type { AriaAttributes, HTMLAttributes } from 'react';\nimport React from 'react';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { getRandomID } from '../../lib/utils';\nimport type { HTMLProps } from '../../typings/html';\nimport {\n isKeyArrowVertical,\n isKeyEnter,\n isKeyEscape,\n isKeySpace,\n someKeys,\n} from '../../lib/events/keyboard/identifiers';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport type { PopupPositionsType } from '../Popup';\nimport { Popup, PopupIds } from '../Popup';\nimport { RenderLayer } from '../RenderLayer';\nimport type { Nullable } from '../../typings/utility-types';\nimport type { CommonProps } from '../CommonWrapper';\nimport { CommonWrapper } from '../CommonWrapper';\nimport { responsiveLayout } from '../../components/ResponsiveLayout/decorator';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { rootNode } from '../../lib/rootNode';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport type { MenuProps } from '../Menu';\nimport { Menu } from '../Menu';\n\nimport { isValidPositions } from './validatePositions';\nimport { styles } from './PopupMenu.styles';\nimport { PopupMenuDataTids } from './tids';\n\nexport * from './tids';\n\nexport interface PopupMenuCaptionProps {\n opened: boolean;\n openMenu: (firstItemShouldBeSelected?: boolean) => void;\n closeMenu: (restoreFocus?: boolean) => void;\n toggleMenu: () => void;\n /** @ignore */\n corners?: React.CSSProperties;\n}\n\nexport interface PopupMenuProps\n extends CommonProps,\n Pick<MenuProps, 'preventIconsOffset'>,\n Pick<HTMLAttributes<HTMLElement>, 'id'>,\n Pick<AriaAttributes, 'aria-label'> {\n children?: React.ReactNode;\n /** Максимальная высота меню */\n menuMaxHeight?: number | string;\n /** Ширина меню */\n menuWidth?: number | string;\n /** Ширина контейнера и caption */\n width?: React.CSSProperties['width'];\n\n /**\n * Элемент или функция возвращающая элемент,\n * если передана, используется вместо ```caption```,\n * в таком случае управлять открытием и закрытием меню\n * придется в этой функции\n */\n caption: React.ReactNode | ((props: PopupMenuCaptionProps) => React.ReactNode);\n\n header?: React.ReactNode;\n footer?: React.ReactNode;\n\n /** Массив разрешенных положений меню относительно caption'а. */\n positions?: PopupPositionsType[];\n /** Колбэк, вызываемый после открытия/закрытия меню */\n onChangeMenuState?: (isOpened: boolean, restoreFocus: boolean) => void;\n /** Пропсы, передающиеся в Popup */\n popupHasPin?: boolean;\n popupMargin?: number;\n popupPinOffset?: number;\n type?: 'dropdown' | 'tooltip';\n disableAnimations?: boolean;\n /** Действие при открытии меню */\n onOpen?: () => void;\n /** Действие при закрытии меню */\n onClose?: () => void;\n /**\n * Позволяет задать `id` выпадающему меню.\n *\n * Это может пригодиться при реализации a11y. Например, для того, чтобы связать `aria-controls` с выпадающим меню.\n */\n popupMenuId?: HTMLProps['id'];\n\n /** @ignore */\n corners?: React.CSSProperties;\n}\n\ninterface PopupMenuState {\n menuVisible: boolean;\n firstItemShouldBeSelected?: boolean;\n}\n\nexport const PopupMenuType = {\n Dropdown: 'dropdown',\n Tooltip: 'tooltip',\n} as const;\n\nconst Positions: PopupPositionsType[] = [\n 'top left',\n 'top center',\n 'top right',\n 'right top',\n 'right middle',\n 'right bottom',\n 'bottom left',\n 'bottom center',\n 'bottom right',\n 'left top',\n 'left middle',\n 'left bottom',\n];\n\ntype DefaultProps = Required<Pick<PopupMenuProps, 'positions' | 'type' | 'popupHasPin' | 'disableAnimations'>>;\n\n@rootNode\n@responsiveLayout\nexport class PopupMenu extends React.Component<PopupMenuProps, PopupMenuState> {\n public static __KONTUR_REACT_UI__ = 'PopupMenu';\n public static displayName = 'PopupMenu';\n\n private isMobileLayout!: boolean;\n private rootId = PopupIds.root + getRandomID();\n\n public static defaultProps: DefaultProps = {\n positions: Positions,\n type: PopupMenuType.Tooltip,\n popupHasPin: true,\n disableAnimations: false,\n };\n\n private getProps = createPropsGetter(PopupMenu.defaultProps);\n\n public static Type = PopupMenuType;\n\n public state = {\n menuVisible: false,\n firstItemShouldBeSelected: false,\n };\n\n private captionWrapper: HTMLSpanElement | null = null;\n private savedFocusableElement: HTMLElement | null = null;\n private menu: Nullable<Menu> = null;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public render(): JSX.Element {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n menuOffsetY: theme.popupMenuMenuOffsetY,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private renderMain() {\n const { popupHasPin, disableAnimations } = this.getProps();\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <RenderLayer\n onClickOutside={this.hideMenuWithoutFocusing}\n onFocusOutside={this.hideMenuWithoutFocusing}\n active={this.state.menuVisible}\n >\n <div data-tid={PopupMenuDataTids.root} className={styles.container()} style={{ width: this.props.width }}>\n {this.renderCaption()}\n {this.captionWrapper && this.props.children && (\n <Popup\n id={this.props.popupMenuId ?? this.rootId}\n anchorElement={this.captionWrapper}\n opened={this.state.menuVisible}\n hasShadow\n margin={this.props.popupMargin}\n hasPin={popupHasPin}\n pinOffset={this.props.popupPinOffset}\n positions={this.getPositions()}\n disableAnimations={disableAnimations}\n onOpen={this.handleOpen}\n mobileOnCloseRequest={this.hideMenu}\n width={this.isMobileLayout ? 'auto' : this.props.menuWidth || 'auto'}\n >\n <Menu\n maxHeight={this.isMobileLayout ? 'none' : this.props.menuMaxHeight || 'none'}\n onKeyDown={this.handleKeyDown}\n onItemClick={this.handleItemSelection}\n preventIconsOffset={this.props.preventIconsOffset}\n cyclicSelection={false}\n ref={this.menuRef}\n initialSelectedItemIndex={this.state.firstItemShouldBeSelected ? 0 : -1}\n header={this.props.header}\n footer={this.props.footer}\n >\n {this.props.children}\n </Menu>\n </Popup>\n )}\n </div>\n </RenderLayer>\n </CommonWrapper>\n );\n }\n\n public open = (): void => this.showMenu();\n public close = (): void => this.hideMenu();\n\n private menuRef = (element: Nullable<Menu>) => (this.menu = element);\n\n private handleOpen = () => {\n if (this.menu) {\n this.menu.focus();\n }\n };\n\n private passPropsToCaption = (caption: React.ReactNode) => {\n if (typeof caption === 'string' || typeof caption === 'number') {\n return caption;\n }\n\n return React.cloneElement(caption as React.ReactElement, {\n id: this.props.id,\n 'aria-controls': this.props.popupMenuId ?? this.rootId,\n 'aria-expanded': this.state.menuVisible ? 'true' : 'false',\n 'aria-label': this.props['aria-label'],\n });\n };\n\n private renderCaption = () => {\n if (typeof this.props.caption === 'function') {\n const caption = this.props.caption({\n opened: this.state.menuVisible,\n openMenu: this.showMenu,\n closeMenu: this.hideMenu,\n toggleMenu: this.toggleMenu,\n corners: this.props.corners,\n });\n\n return (\n <span\n data-tid={PopupMenuDataTids.caption}\n className={styles.caption()}\n ref={(element) => (this.captionWrapper = element)}\n >\n {this.passPropsToCaption(caption)}\n </span>\n );\n }\n\n return (\n <span\n data-tid={PopupMenuDataTids.caption}\n onClick={this.handleCaptionClick}\n onKeyDown={this.handleCaptionKeyDown}\n ref={(element) => (this.captionWrapper = element)}\n className={styles.caption()}\n >\n {this.passPropsToCaption(this.props.caption)}\n </span>\n );\n };\n\n private hideMenuWithoutFocusing = () => this.hideMenu();\n\n private getPositions(): Readonly<PopupPositionsType[]> {\n const positions = this.getProps().positions;\n if (positions && isValidPositions(positions)) {\n return positions;\n }\n\n return Positions;\n }\n\n private showMenu = (firstItemShouldBeSelected?: boolean): void => {\n this.saveFocus();\n this.setState(\n {\n menuVisible: true,\n firstItemShouldBeSelected,\n },\n () => {\n this.handleChangeMenuVisible(false);\n },\n );\n };\n\n private hideMenu = (restoreFocus?: boolean): void => {\n this.setState(\n {\n menuVisible: false,\n firstItemShouldBeSelected: false,\n },\n () => {\n this.handleChangeMenuVisible(!!restoreFocus);\n },\n );\n };\n\n private toggleMenu = (): void => {\n this.state.menuVisible ? this.hideMenu() : this.showMenu();\n };\n\n private handleCaptionClick = (): void => {\n this.toggleMenu();\n };\n\n private handleCaptionKeyDown = (e: React.KeyboardEvent<HTMLElement>): void => {\n if (someKeys(isKeyEnter, isKeySpace, isKeyArrowVertical)(e)) {\n e.preventDefault();\n this.showMenu(true);\n }\n };\n\n private handleKeyDown = (e: React.KeyboardEvent<HTMLElement>) => {\n if (isKeyEscape(e)) {\n const restoreFocus = true;\n this.hideMenu(restoreFocus);\n }\n };\n\n private saveFocus = (): void => {\n if (globalObject.document) {\n this.savedFocusableElement = globalObject.document.activeElement as HTMLElement;\n }\n };\n\n private restoreFocus = (): void => {\n if (this.savedFocusableElement) {\n this.savedFocusableElement.focus();\n this.savedFocusableElement = null;\n }\n };\n\n private handleChangeMenuVisible = (focusShouldBeRestored: boolean): void => {\n if (focusShouldBeRestored) {\n this.restoreFocus();\n }\n\n if (this.state.menuVisible && this.props.onOpen) {\n this.props.onOpen();\n }\n\n if (!this.state.menuVisible && this.props.onClose) {\n this.props.onClose();\n }\n\n if (typeof this.props.onChangeMenuState === 'function') {\n this.props.onChangeMenuState(this.state.menuVisible, focusShouldBeRestored);\n }\n };\n\n private handleItemSelection = (event: React.SyntheticEvent<HTMLElement>): void => {\n if (event.isDefaultPrevented()) {\n return;\n }\n\n if (event.type === 'keydown') {\n event.preventDefault();\n }\n\n const restoreFocus = event.type === 'keydown';\n this.hideMenu(restoreFocus);\n };\n}\n"],"mappings":"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","ignoreList":[]}
@@ -3,6 +3,7 @@ import React from 'react';
3
3
  import type { HTMLProps } from '../../typings/html';
4
4
  import type { PopupPositionsType } from '../Popup';
5
5
  import type { CommonProps } from '../CommonWrapper';
6
+ import type { TGetRootNode } from '../../lib/rootNode';
6
7
  import type { MenuProps } from '../Menu';
7
8
  export * from './tids';
8
9
  export interface PopupMenuCaptionProps {
@@ -80,6 +81,7 @@ export declare class PopupMenu extends React.Component<PopupMenuProps, PopupMenu
80
81
  private captionWrapper;
81
82
  private savedFocusableElement;
82
83
  private menu;
84
+ getRootNode: TGetRootNode;
83
85
  private setRootNode;
84
86
  render(): JSX.Element;
85
87
  private renderMain;
@@ -1,9 +1,6 @@
1
1
  import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
2
2
  import React from 'react';
3
3
  import ReactDOM from 'react-dom';
4
- import propTypes from 'prop-types';
5
- import { globalObject } from '@skbkontur/global-object';
6
- import { safePropTypesInstanceOf } from "../../../lib/SSRSafe";
7
4
  import { PORTAL_INLET_ATTR } from "../RenderContainer";
8
5
 
9
6
  // Заглушка нужна для корректной гидрации порталов после SSR,
@@ -67,10 +64,5 @@ export var RenderInnerContainer = /*#__PURE__*/function (_React$Component) {
67
64
  }(React.Component);
68
65
  RenderInnerContainer.__KONTUR_REACT_UI__ = 'RenderInnerContainer';
69
66
  RenderInnerContainer.displayName = 'RenderInnerContainer';
70
- Portal.propTypes = {
71
- container: safePropTypesInstanceOf(globalObject.HTMLElement),
72
- rt_rootID: propTypes.string.isRequired,
73
- children: propTypes.node.isRequired
74
- };
75
67
  Portal.__KONTUR_REACT_UI__ = 'Portal';
76
68
  Portal.displayName = 'Portal';
@@ -1 +1 @@
1
- {"version":3,"names":["React","ReactDOM","propTypes","globalObject","safePropTypesInstanceOf","PORTAL_INLET_ATTR","SSRPlaceholder","createElement","Portal","_ref","_ref2","container","rt_rootID","children","Fragment","createPortal","RenderInnerContainer","_React$Component","apply","arguments","_inheritsLoose","_proto","prototype","render","_this$props","props","anchor","domContainer","rootId","inner","key","Component","__KONTUR_REACT_UI__","displayName","HTMLElement","string","isRequired","node"],"sources":["RenderInnerContainer.tsx"],"sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\nimport propTypes from 'prop-types';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport type { Nullable } from '../../typings/utility-types';\nimport { safePropTypesInstanceOf } from '../../lib/SSRSafe';\n\nimport type { PortalProps, RenderContainerProps } from './RenderContainerTypes';\nimport { PORTAL_INLET_ATTR } from './RenderContainer';\n\ninterface RenderInnerContainerProps extends RenderContainerProps {\n domContainer: Nullable<HTMLElement>;\n rootId: string;\n}\n\n// Заглушка нужна для корректной гидрации порталов после SSR,\n// которую реакт сам пока не поддерживает.\n// @see https://github.com/facebook/react/issues/13097\n// А также для вставки актуального render-container-id на клиенте.\n//\n// Дело в том, что во время гидрации, структура HTML на сервере\n// и на клиенте должна совпадать, иначе возможны артефакты.\n// Алгоритм там примерно такой. Клиент во время гидрации идет\n// по этим двум деревьям и сравнивает узлы. Элементы разных типов\n// он подменяет на свои. А те, что совпадают, он оставляет как есть\n// вместе со всеми атрибутами, навесив только обработчики событий.\n//\n// Поэтому, для портала, который рендерится только на клиенте,\n// нужно использовать серверную заглушку, чтобы при гидрации\n// он не испортил какой-то другой элемент. Null не подходит,\n// т.к. на сервере он тоже не рендерится.\n// А элемент с render-container-id нужно отрендерить с нуля.\n\nconst SSRPlaceholder = () => <script data-id=\"ssr-placeholder\" />;\n\nexport const Portal = ({ container, rt_rootID, children }: PortalProps) => {\n // container exists only in browser\n return (\n <React.Fragment>\n {container ? ReactDOM.createPortal(children, container) : <SSRPlaceholder />}\n {container ? <noscript {...{ [PORTAL_INLET_ATTR]: rt_rootID }} /> : <SSRPlaceholder />}\n </React.Fragment>\n );\n};\n\nexport class RenderInnerContainer extends React.Component<RenderInnerContainerProps> {\n public static __KONTUR_REACT_UI__ = 'RenderInnerContainer';\n public static displayName = 'RenderInnerContainer';\n\n public render() {\n const { anchor, children, domContainer, rootId } = this.props;\n let inner = anchor;\n\n if (children) {\n inner = (\n <React.Fragment>\n {anchor}\n <Portal key=\"portal-ref\" rt_rootID={rootId} container={domContainer}>\n {children}\n </Portal>\n </React.Fragment>\n );\n }\n\n return inner;\n }\n}\n\nPortal.propTypes = {\n container: safePropTypesInstanceOf(globalObject.HTMLElement),\n rt_rootID: propTypes.string.isRequired,\n children: propTypes.node.isRequired,\n};\n\nPortal.__KONTUR_REACT_UI__ = 'Portal';\nPortal.displayName = 'Portal';\n"],"mappings":"sEAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,QAAQ,MAAM,WAAW;AAChC,OAAOC,SAAS,MAAM,YAAY;AAClC,SAASC,YAAY,QAAQ,0BAA0B;;;AAGvD,SAASC,uBAAuB,QAAQ,mBAAmB;;;AAG3D,SAASC,iBAAiB,QAAQ,mBAAmB;;;;;;;AAOrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAMC,cAAc,GAAG,SAAjBA,cAAcA,CAAA,uBAASN,KAAA,CAAAO,aAAA,aAAQ,WAAQ,iBAAiB,EAAE,CAAC;;AAEjE,OAAO,IAAMC,MAAM,GAAG,SAATA,MAAMA,CAAAC,IAAA,EAAwD,KAAAC,KAAA,KAAlDC,SAAS,GAAAF,IAAA,CAATE,SAAS,CAAEC,SAAS,GAAAH,IAAA,CAATG,SAAS,CAAEC,QAAQ,GAAAJ,IAAA,CAARI,QAAQ;EACrD;EACA;IACEb,KAAA,CAAAO,aAAA,CAACP,KAAK,CAACc,QAAQ;IACZH,SAAS,gBAAGV,QAAQ,CAACc,YAAY,CAACF,QAAQ,EAAEF,SAAS,CAAC,gBAAGX,KAAA,CAAAO,aAAA,CAACD,cAAc,MAAE,CAAC;IAC3EK,SAAS,gBAAGX,KAAA,CAAAO,aAAA,cAAAG,KAAA,OAAAA,KAAA,CAAiBL,iBAAiB,IAAGO,SAAS,EAAAF,KAAA,CAAK,CAAC,gBAAGV,KAAA,CAAAO,aAAA,CAACD,cAAc,MAAE;IACvE,CAAC;;AAErB,CAAC;;AAED,WAAaU,oBAAoB,0BAAAC,gBAAA,YAAAD,qBAAA,UAAAC,gBAAA,CAAAC,KAAA,OAAAC,SAAA,WAAAC,cAAA,CAAAJ,oBAAA,EAAAC,gBAAA,MAAAI,MAAA,GAAAL,oBAAA,CAAAM,SAAA,CAAAD,MAAA;;;;EAIxBE,MAAM,GAAb,SAAAA,OAAA,EAAgB;IACd,IAAAC,WAAA,GAAmD,IAAI,CAACC,KAAK,CAArDC,MAAM,GAAAF,WAAA,CAANE,MAAM,CAAEb,QAAQ,GAAAW,WAAA,CAARX,QAAQ,CAAEc,YAAY,GAAAH,WAAA,CAAZG,YAAY,CAAEC,MAAM,GAAAJ,WAAA,CAANI,MAAM;IAC9C,IAAIC,KAAK,GAAGH,MAAM;;IAElB,IAAIb,QAAQ,EAAE;MACZgB,KAAK;MACH7B,KAAA,CAAAO,aAAA,CAACP,KAAK,CAACc,QAAQ;MACZY,MAAM;MACP1B,KAAA,CAAAO,aAAA,CAACC,MAAM,IAACsB,GAAG,EAAC,YAAY,EAAClB,SAAS,EAAEgB,MAAO,EAACjB,SAAS,EAAEgB,YAAa;MACjEd;MACK;MACM,CACjB;;IACH;;IAEA,OAAOgB,KAAK;EACd,CAAC,QAAAb,oBAAA,GApBuChB,KAAK,CAAC+B,SAAS,EAA5Cf,oBAAoB,CACjBgB,mBAAmB,GAAG,sBAAsB,CAD/ChB,oBAAoB,CAEjBiB,WAAW,GAAG,sBAAsB;;;AAqBpDzB,MAAM,CAACN,SAAS,GAAG;EACjBS,SAAS,EAAEP,uBAAuB,CAACD,YAAY,CAAC+B,WAAW,CAAC;EAC5DtB,SAAS,EAAEV,SAAS,CAACiC,MAAM,CAACC,UAAU;EACtCvB,QAAQ,EAAEX,SAAS,CAACmC,IAAI,CAACD;AAC3B,CAAC;;AAED5B,MAAM,CAACwB,mBAAmB,GAAG,QAAQ;AACrCxB,MAAM,CAACyB,WAAW,GAAG,QAAQ","ignoreList":[]}
1
+ {"version":3,"names":["React","ReactDOM","PORTAL_INLET_ATTR","SSRPlaceholder","createElement","Portal","_ref","_ref2","container","rt_rootID","children","Fragment","createPortal","RenderInnerContainer","_React$Component","apply","arguments","_inheritsLoose","_proto","prototype","render","_this$props","props","anchor","domContainer","rootId","inner","key","Component","__KONTUR_REACT_UI__","displayName"],"sources":["RenderInnerContainer.tsx"],"sourcesContent":["import React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport type { Nullable } from '../../typings/utility-types';\n\nimport type { PortalProps, RenderContainerProps } from './RenderContainerTypes';\nimport { PORTAL_INLET_ATTR } from './RenderContainer';\n\ninterface RenderInnerContainerProps extends RenderContainerProps {\n domContainer: Nullable<HTMLElement>;\n rootId: string;\n}\n\n// Заглушка нужна для корректной гидрации порталов после SSR,\n// которую реакт сам пока не поддерживает.\n// @see https://github.com/facebook/react/issues/13097\n// А также для вставки актуального render-container-id на клиенте.\n//\n// Дело в том, что во время гидрации, структура HTML на сервере\n// и на клиенте должна совпадать, иначе возможны артефакты.\n// Алгоритм там примерно такой. Клиент во время гидрации идет\n// по этим двум деревьям и сравнивает узлы. Элементы разных типов\n// он подменяет на свои. А те, что совпадают, он оставляет как есть\n// вместе со всеми атрибутами, навесив только обработчики событий.\n//\n// Поэтому, для портала, который рендерится только на клиенте,\n// нужно использовать серверную заглушку, чтобы при гидрации\n// он не испортил какой-то другой элемент. Null не подходит,\n// т.к. на сервере он тоже не рендерится.\n// А элемент с render-container-id нужно отрендерить с нуля.\n\nconst SSRPlaceholder = () => <script data-id=\"ssr-placeholder\" />;\n\nexport const Portal = ({ container, rt_rootID, children }: PortalProps) => {\n // container exists only in browser\n return (\n <React.Fragment>\n {container ? ReactDOM.createPortal(children, container) : <SSRPlaceholder />}\n {container ? <noscript {...{ [PORTAL_INLET_ATTR]: rt_rootID }} /> : <SSRPlaceholder />}\n </React.Fragment>\n );\n};\n\nexport class RenderInnerContainer extends React.Component<RenderInnerContainerProps> {\n public static __KONTUR_REACT_UI__ = 'RenderInnerContainer';\n public static displayName = 'RenderInnerContainer';\n\n public render() {\n const { anchor, children, domContainer, rootId } = this.props;\n let inner = anchor;\n\n if (children) {\n inner = (\n <React.Fragment>\n {anchor}\n <Portal key=\"portal-ref\" rt_rootID={rootId} container={domContainer}>\n {children}\n </Portal>\n </React.Fragment>\n );\n }\n\n return inner;\n }\n}\n\nPortal.__KONTUR_REACT_UI__ = 'Portal';\nPortal.displayName = 'Portal';\n"],"mappings":"sEAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,QAAQ,MAAM,WAAW;;;;;AAKhC,SAASC,iBAAiB,QAAQ,mBAAmB;;;;;;;AAOrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,IAAMC,cAAc,GAAG,SAAjBA,cAAcA,CAAA,uBAASH,KAAA,CAAAI,aAAA,aAAQ,WAAQ,iBAAiB,EAAE,CAAC;;AAEjE,OAAO,IAAMC,MAAM,GAAG,SAATA,MAAMA,CAAAC,IAAA,EAAwD,KAAAC,KAAA,KAAlDC,SAAS,GAAAF,IAAA,CAATE,SAAS,CAAEC,SAAS,GAAAH,IAAA,CAATG,SAAS,CAAEC,QAAQ,GAAAJ,IAAA,CAARI,QAAQ;EACrD;EACA;IACEV,KAAA,CAAAI,aAAA,CAACJ,KAAK,CAACW,QAAQ;IACZH,SAAS,gBAAGP,QAAQ,CAACW,YAAY,CAACF,QAAQ,EAAEF,SAAS,CAAC,gBAAGR,KAAA,CAAAI,aAAA,CAACD,cAAc,MAAE,CAAC;IAC3EK,SAAS,gBAAGR,KAAA,CAAAI,aAAA,cAAAG,KAAA,OAAAA,KAAA,CAAiBL,iBAAiB,IAAGO,SAAS,EAAAF,KAAA,CAAK,CAAC,gBAAGP,KAAA,CAAAI,aAAA,CAACD,cAAc,MAAE;IACvE,CAAC;;AAErB,CAAC;;AAED,WAAaU,oBAAoB,0BAAAC,gBAAA,YAAAD,qBAAA,UAAAC,gBAAA,CAAAC,KAAA,OAAAC,SAAA,WAAAC,cAAA,CAAAJ,oBAAA,EAAAC,gBAAA,MAAAI,MAAA,GAAAL,oBAAA,CAAAM,SAAA,CAAAD,MAAA;;;;EAIxBE,MAAM,GAAb,SAAAA,OAAA,EAAgB;IACd,IAAAC,WAAA,GAAmD,IAAI,CAACC,KAAK,CAArDC,MAAM,GAAAF,WAAA,CAANE,MAAM,CAAEb,QAAQ,GAAAW,WAAA,CAARX,QAAQ,CAAEc,YAAY,GAAAH,WAAA,CAAZG,YAAY,CAAEC,MAAM,GAAAJ,WAAA,CAANI,MAAM;IAC9C,IAAIC,KAAK,GAAGH,MAAM;;IAElB,IAAIb,QAAQ,EAAE;MACZgB,KAAK;MACH1B,KAAA,CAAAI,aAAA,CAACJ,KAAK,CAACW,QAAQ;MACZY,MAAM;MACPvB,KAAA,CAAAI,aAAA,CAACC,MAAM,IAACsB,GAAG,EAAC,YAAY,EAAClB,SAAS,EAAEgB,MAAO,EAACjB,SAAS,EAAEgB,YAAa;MACjEd;MACK;MACM,CACjB;;IACH;;IAEA,OAAOgB,KAAK;EACd,CAAC,QAAAb,oBAAA,GApBuCb,KAAK,CAAC4B,SAAS,EAA5Cf,oBAAoB,CACjBgB,mBAAmB,GAAG,sBAAsB,CAD/ChB,oBAAoB,CAEjBiB,WAAW,GAAG,sBAAsB;;;AAqBpDzB,MAAM,CAACwB,mBAAmB,GAAG,QAAQ;AACrCxB,MAAM,CAACyB,WAAW,GAAG,QAAQ","ignoreList":[]}
@@ -1,5 +1,4 @@
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 { PortalProps, RenderContainerProps } from './RenderContainerTypes';
5
4
  interface RenderInnerContainerProps extends RenderContainerProps {
@@ -8,11 +7,6 @@ interface RenderInnerContainerProps extends RenderContainerProps {
8
7
  }
9
8
  export declare const Portal: {
10
9
  ({ container, rt_rootID, children }: PortalProps): React.JSX.Element;
11
- propTypes: {
12
- container: propTypes.Requireable<HTMLElement>;
13
- rt_rootID: propTypes.Validator<string>;
14
- children: propTypes.Validator<NonNullable<propTypes.ReactNodeLike>>;
15
- };
16
10
  __KONTUR_REACT_UI__: string;
17
11
  displayName: string;
18
12
  };
@@ -42,7 +42,8 @@ export var RenderLayer = rootNode(_class = (_RenderLayer = /*#__PURE__*/function
42
42
  }
43
43
  };
44
44
  _proto.componentDidUpdate = function componentDidUpdate(prevProps) {
45
- var active = this.getProps().active;
45
+ var _this$getProps = this.getProps(),
46
+ active = _this$getProps.active;
46
47
  if (!prevProps.active && active) {
47
48
  this.attachListeners();
48
49
  }
@@ -86,15 +87,6 @@ export var RenderLayer = rootNode(_class = (_RenderLayer = /*#__PURE__*/function
86
87
  (_globalObject$documen2 = globalObject.document) == null || _globalObject$documen2.removeEventListener('ontouchstart' in globalObject.document.documentElement && 'onpointerup' in globalObject.document.documentElement ? 'pointerup' : 'mousedown', this.handleNativeDocClick);
87
88
  };
88
89
  return RenderLayer;
89
- }(React.Component), _RenderLayer.__KONTUR_REACT_UI__ = 'RenderLayer', _RenderLayer.displayName = 'RenderLayer', _RenderLayer.propTypes = {
90
- active: function active(props, propName, componentName) {
91
- var active = props.active,
92
- onClickOutside = props.onClickOutside,
93
- onFocusOutside = props.onFocusOutside;
94
- if (active && !(onClickOutside || onFocusOutside)) {
95
- return new Error("[" + componentName + "]: using the component without either 'onClickOutside' or 'onFocusOutside' callback is pointless.");
96
- }
97
- }
98
- }, _RenderLayer.defaultProps = {
90
+ }(React.Component), _RenderLayer.__KONTUR_REACT_UI__ = 'RenderLayer', _RenderLayer.displayName = 'RenderLayer', _RenderLayer.defaultProps = {
99
91
  active: true
100
92
  }, _RenderLayer)) || _class;
@@ -1 +1 @@
1
- {"version":3,"names":["React","globalObject","listen","listenFocusOutside","containsTargetOrRenderContainer","CommonWrapper","getRootNode","rootNode","createPropsGetter","isInstanceOf","RenderLayer","_class","_RenderLayer","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","defaultProps","focusOutsideListenerToken","handleFocusOutside","event","props","onFocusOutside","handleNativeDocClick","target","srcElement","node","getAnchorNode","Element","onClickOutside","_inheritsLoose","_proto","prototype","componentDidMount","active","attachListeners","componentDidUpdate","prevProps","detachListeners","componentWillUnmount","render","createElement","_extends","rootNodeRef","setRootNode","Children","only","children","getAnchorElement","_globalObject$documen","addEventListener","document","documentElement","_globalObject$documen2","remove","removeEventListener","Component","__KONTUR_REACT_UI__","displayName","propTypes","propName","componentName","Error"],"sources":["RenderLayer.tsx"],"sourcesContent":["import React from 'react';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { listen as listenFocusOutside, containsTargetOrRenderContainer } from '../../lib/listenFocusOutside';\nimport type { CommonProps } from '../CommonWrapper';\nimport { CommonWrapper } from '../CommonWrapper';\nimport type { TSetRootNode } from '../../lib/rootNode';\nimport { getRootNode, rootNode } from '../../lib/rootNode';\nimport type { Nullable } from '../../typings/utility-types';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isInstanceOf } from '../../lib/isInstanceOf';\n\nexport interface RenderLayerProps extends CommonProps {\n children: JSX.Element;\n onClickOutside?: (e: Event) => void;\n onFocusOutside?: (e: Event) => void;\n active?: boolean;\n getAnchorElement?: () => Nullable<Element>;\n}\n\ntype DefaultProps = Required<Pick<RenderLayerProps, 'active'>>;\n\n@rootNode\nexport class RenderLayer extends React.Component<RenderLayerProps> {\n public static __KONTUR_REACT_UI__ = 'RenderLayer';\n public static displayName = 'RenderLayer';\n\n public static propTypes = {\n active(props: RenderLayerProps, propName: keyof RenderLayerProps, componentName: string) {\n const { active, onClickOutside, onFocusOutside } = props;\n if (active && !(onClickOutside || onFocusOutside)) {\n return new Error(\n `[${componentName}]: using the component without either 'onClickOutside' or 'onFocusOutside' callback is pointless.`,\n );\n }\n },\n };\n\n public static defaultProps: DefaultProps = {\n active: true,\n };\n\n private getProps = createPropsGetter(RenderLayer.defaultProps);\n\n private focusOutsideListenerToken: {\n remove: () => void;\n } | null = null;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n if (this.getProps().active) {\n this.attachListeners();\n }\n }\n\n public componentDidUpdate(prevProps: RenderLayerProps) {\n const active = this.getProps().active;\n if (!prevProps.active && active) {\n this.attachListeners();\n }\n if (prevProps.active && !active) {\n this.detachListeners();\n }\n }\n\n public componentWillUnmount() {\n if (this.getProps().active) {\n this.detachListeners();\n }\n }\n\n public render() {\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {React.Children.only(this.props.children)}\n </CommonWrapper>\n );\n }\n\n private getAnchorNode(): Nullable<Element> {\n const { getAnchorElement } = this.props;\n return getAnchorElement ? getAnchorElement() : getRootNode(this);\n }\n\n private attachListeners() {\n const node = this.getAnchorNode();\n if (!node) {\n return;\n }\n\n this.focusOutsideListenerToken = listenFocusOutside(() => [node], this.handleFocusOutside);\n globalObject.addEventListener?.('blur', this.handleFocusOutside);\n globalObject.document?.addEventListener(\n 'ontouchstart' in globalObject.document.documentElement && 'onpointerup' in globalObject.document.documentElement\n ? 'pointerup'\n : 'mousedown',\n this.handleNativeDocClick,\n );\n }\n\n private detachListeners() {\n if (this.focusOutsideListenerToken) {\n this.focusOutsideListenerToken.remove();\n this.focusOutsideListenerToken = null;\n }\n\n globalObject.removeEventListener?.('blur', this.handleFocusOutside);\n globalObject.document?.removeEventListener(\n 'ontouchstart' in globalObject.document.documentElement && 'onpointerup' in globalObject.document.documentElement\n ? 'pointerup'\n : 'mousedown',\n this.handleNativeDocClick,\n );\n }\n\n private handleFocusOutside = (event: Event) => {\n if (this.props.onFocusOutside) {\n this.props.onFocusOutside(event);\n }\n };\n\n private handleNativeDocClick = (event: Event) => {\n const target = event.target || event.srcElement;\n const node = this.getAnchorNode();\n\n if (!node || (isInstanceOf(target, globalObject.Element) && containsTargetOrRenderContainer(target)(node))) {\n return;\n }\n\n if (this.props.onClickOutside) {\n this.props.onClickOutside(event);\n }\n };\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","globalObject","listen","listenFocusOutside","containsTargetOrRenderContainer","CommonWrapper","getRootNode","rootNode","createPropsGetter","isInstanceOf","RenderLayer","_class","_RenderLayer","_React$Component","_this","_len","arguments","length","args","Array","_key","call","apply","concat","getProps","defaultProps","focusOutsideListenerToken","handleFocusOutside","event","props","onFocusOutside","handleNativeDocClick","target","srcElement","node","getAnchorNode","Element","onClickOutside","_inheritsLoose","_proto","prototype","componentDidMount","active","attachListeners","componentDidUpdate","prevProps","_this$getProps","detachListeners","componentWillUnmount","render","createElement","_extends","rootNodeRef","setRootNode","Children","only","children","getAnchorElement","_globalObject$documen","addEventListener","document","documentElement","_globalObject$documen2","remove","removeEventListener","Component","__KONTUR_REACT_UI__","displayName"],"sources":["RenderLayer.tsx"],"sourcesContent":["import React from 'react';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { listen as listenFocusOutside, containsTargetOrRenderContainer } from '../../lib/listenFocusOutside';\nimport type { CommonProps } from '../CommonWrapper';\nimport { CommonWrapper } from '../CommonWrapper';\nimport type { TGetRootNode, TSetRootNode } from '../../lib/rootNode';\nimport { getRootNode, rootNode } from '../../lib/rootNode';\nimport type { Nullable } from '../../typings/utility-types';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isInstanceOf } from '../../lib/isInstanceOf';\n\nexport interface RenderLayerProps extends CommonProps {\n children: JSX.Element;\n onClickOutside?: (e: Event) => void;\n onFocusOutside?: (e: Event) => void;\n active?: boolean;\n getAnchorElement?: () => Nullable<Element>;\n}\n\ntype DefaultProps = Required<Pick<RenderLayerProps, 'active'>>;\n\n@rootNode\nexport class RenderLayer extends React.Component<RenderLayerProps> {\n public static __KONTUR_REACT_UI__ = 'RenderLayer';\n public static displayName = 'RenderLayer';\n\n public static defaultProps: DefaultProps = {\n active: true,\n };\n\n private getProps = createPropsGetter(RenderLayer.defaultProps);\n\n private focusOutsideListenerToken: {\n remove: () => void;\n } | null = null;\n public getRootNode!: TGetRootNode;\n private setRootNode!: TSetRootNode;\n\n public componentDidMount() {\n if (this.getProps().active) {\n this.attachListeners();\n }\n }\n\n public componentDidUpdate(prevProps: RenderLayerProps) {\n const { active } = this.getProps();\n\n if (!prevProps.active && active) {\n this.attachListeners();\n }\n if (prevProps.active && !active) {\n this.detachListeners();\n }\n }\n\n public componentWillUnmount() {\n if (this.getProps().active) {\n this.detachListeners();\n }\n }\n\n public render() {\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {React.Children.only(this.props.children)}\n </CommonWrapper>\n );\n }\n\n private getAnchorNode(): Nullable<Element> {\n const { getAnchorElement } = this.props;\n return getAnchorElement ? getAnchorElement() : getRootNode(this);\n }\n\n private attachListeners() {\n const node = this.getAnchorNode();\n if (!node) {\n return;\n }\n\n this.focusOutsideListenerToken = listenFocusOutside(() => [node], this.handleFocusOutside);\n globalObject.addEventListener?.('blur', this.handleFocusOutside);\n globalObject.document?.addEventListener(\n 'ontouchstart' in globalObject.document.documentElement && 'onpointerup' in globalObject.document.documentElement\n ? 'pointerup'\n : 'mousedown',\n this.handleNativeDocClick,\n );\n }\n\n private detachListeners() {\n if (this.focusOutsideListenerToken) {\n this.focusOutsideListenerToken.remove();\n this.focusOutsideListenerToken = null;\n }\n\n globalObject.removeEventListener?.('blur', this.handleFocusOutside);\n globalObject.document?.removeEventListener(\n 'ontouchstart' in globalObject.document.documentElement && 'onpointerup' in globalObject.document.documentElement\n ? 'pointerup'\n : 'mousedown',\n this.handleNativeDocClick,\n );\n }\n\n private handleFocusOutside = (event: Event) => {\n if (this.props.onFocusOutside) {\n this.props.onFocusOutside(event);\n }\n };\n\n private handleNativeDocClick = (event: Event) => {\n const target = event.target || event.srcElement;\n const node = this.getAnchorNode();\n\n if (!node || (isInstanceOf(target, globalObject.Element) && containsTargetOrRenderContainer(target)(node))) {\n return;\n }\n\n if (this.props.onClickOutside) {\n this.props.onClickOutside(event);\n }\n };\n}\n"],"mappings":"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","ignoreList":[]}