@vkontakte/vkui 5.1.0 → 5.2.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 (516) hide show
  1. package/LICENSE +25 -0
  2. package/README.md +118 -0
  3. package/dist/cjs/components/AdaptivityProvider/AdaptivityProvider.js +1 -1
  4. package/dist/cjs/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
  5. package/dist/cjs/components/AppRoot/AppRoot.js +7 -4
  6. package/dist/cjs/components/AppRoot/AppRoot.js.map +1 -1
  7. package/dist/cjs/components/Avatar/Avatar.d.ts +1 -1
  8. package/dist/cjs/components/Avatar/AvatarBadge/AvatarBadgeWithPreset.d.ts +1 -1
  9. package/dist/cjs/components/Avatar/AvatarBadge/AvatarBadgeWithPreset.js +5 -4
  10. package/dist/cjs/components/Avatar/AvatarBadge/AvatarBadgeWithPreset.js.map +1 -1
  11. package/dist/cjs/components/Cell/CellCheckbox/CellCheckbox.js +7 -4
  12. package/dist/cjs/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -1
  13. package/dist/cjs/components/Checkbox/Checkbox.d.ts +3 -2
  14. package/dist/cjs/components/Checkbox/Checkbox.js +12 -2
  15. package/dist/cjs/components/Checkbox/Checkbox.js.map +1 -1
  16. package/dist/cjs/components/ChipsSelect/ChipsSelect.js +0 -4
  17. package/dist/cjs/components/ChipsSelect/ChipsSelect.js.map +1 -1
  18. package/dist/cjs/components/ContentCard/ContentCard.js +2 -1
  19. package/dist/cjs/components/ContentCard/ContentCard.js.map +1 -1
  20. package/dist/cjs/components/CustomSelect/CustomSelect.js +11 -7
  21. package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
  22. package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +2 -3
  23. package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.js +21 -72
  24. package/dist/cjs/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
  25. package/dist/cjs/components/DateInput/DateInput.d.ts +3 -2
  26. package/dist/cjs/components/DateInput/DateInput.js +3 -3
  27. package/dist/cjs/components/DateInput/DateInput.js.map +1 -1
  28. package/dist/cjs/components/DateRangeInput/DateRangeInput.d.ts +2 -2
  29. package/dist/cjs/components/DateRangeInput/DateRangeInput.js +3 -2
  30. package/dist/cjs/components/DateRangeInput/DateRangeInput.js.map +1 -1
  31. package/dist/cjs/components/Epic/Epic.js +1 -1
  32. package/dist/cjs/components/Epic/Epic.js.map +1 -1
  33. package/dist/cjs/components/FixedLayout/FixedLayout.js +2 -2
  34. package/dist/cjs/components/FixedLayout/FixedLayout.js.map +1 -1
  35. package/dist/cjs/components/FormField/FormField.js +6 -10
  36. package/dist/cjs/components/FormField/FormField.js.map +1 -1
  37. package/dist/cjs/components/IconButton/IconButton.js +9 -0
  38. package/dist/cjs/components/IconButton/IconButton.js.map +1 -1
  39. package/dist/cjs/components/ModalCard/ModalCard.d.ts +1 -1
  40. package/dist/cjs/components/ModalCard/ModalCard.js +4 -2
  41. package/dist/cjs/components/ModalCard/ModalCard.js.map +1 -1
  42. package/dist/cjs/components/ModalCardBase/ModalCardBase.d.ts +5 -1
  43. package/dist/cjs/components/ModalCardBase/ModalCardBase.js +9 -2
  44. package/dist/cjs/components/ModalCardBase/ModalCardBase.js.map +1 -1
  45. package/dist/cjs/components/ModalPage/ModalPage.d.ts +2 -6
  46. package/dist/cjs/components/ModalPage/ModalPage.js +13 -7
  47. package/dist/cjs/components/ModalPage/ModalPage.js.map +1 -1
  48. package/dist/cjs/components/ModalRoot/ModalRoot.js +1 -2
  49. package/dist/cjs/components/ModalRoot/ModalRoot.js.map +1 -1
  50. package/dist/cjs/components/NativeSelect/NativeSelect.d.ts +1 -1
  51. package/dist/cjs/components/NativeSelect/NativeSelect.js +2 -2
  52. package/dist/cjs/components/NativeSelect/NativeSelect.js.map +1 -1
  53. package/dist/cjs/components/PanelHeader/PanelHeader.js +18 -4
  54. package/dist/cjs/components/PanelHeader/PanelHeader.js.map +1 -1
  55. package/dist/cjs/components/PanelHeaderButton/PanelHeaderButton.js +11 -2
  56. package/dist/cjs/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
  57. package/dist/cjs/components/Popover/Popover.js +4 -1
  58. package/dist/cjs/components/Popover/Popover.js.map +1 -1
  59. package/dist/cjs/components/Popper/Popper.d.ts +12 -9
  60. package/dist/cjs/components/Popper/Popper.js +92 -119
  61. package/dist/cjs/components/Popper/Popper.js.map +1 -1
  62. package/dist/cjs/components/PopperArrow/PopperArrow.d.ts +15 -5
  63. package/dist/cjs/components/PopperArrow/PopperArrow.js +44 -17
  64. package/dist/cjs/components/PopperArrow/PopperArrow.js.map +1 -1
  65. package/dist/cjs/components/Progress/Progress.js +3 -1
  66. package/dist/cjs/components/Progress/Progress.js.map +1 -1
  67. package/dist/cjs/components/Root/Root.js +2 -2
  68. package/dist/cjs/components/Root/Root.js.map +1 -1
  69. package/dist/cjs/components/Select/Select.d.ts +1 -5
  70. package/dist/cjs/components/Select/Select.js +13 -41
  71. package/dist/cjs/components/Select/Select.js.map +1 -1
  72. package/dist/cjs/components/SelectMimicry/SelectMimicry.d.ts +1 -1
  73. package/dist/cjs/components/SelectMimicry/SelectMimicry.js +2 -2
  74. package/dist/cjs/components/SelectMimicry/SelectMimicry.js.map +1 -1
  75. package/dist/cjs/components/SelectTypography/SelectTypography.d.ts +11 -0
  76. package/dist/cjs/components/SelectTypography/SelectTypography.js +48 -0
  77. package/dist/cjs/components/SelectTypography/SelectTypography.js.map +1 -0
  78. package/dist/cjs/components/Slider/Slider.d.ts +1 -1
  79. package/dist/cjs/components/Slider/Slider.js +4 -3
  80. package/dist/cjs/components/Slider/Slider.js.map +1 -1
  81. package/dist/cjs/components/Spacing/Spacing.js +2 -1
  82. package/dist/cjs/components/Spacing/Spacing.js.map +1 -1
  83. package/dist/cjs/components/SplitCol/SplitCol.d.ts +0 -6
  84. package/dist/cjs/components/SplitCol/SplitCol.js +3 -11
  85. package/dist/cjs/components/SplitCol/SplitCol.js.map +1 -1
  86. package/dist/cjs/components/SplitCol/SplitColContext.d.ts +7 -0
  87. package/dist/cjs/components/SplitCol/SplitColContext.js +18 -0
  88. package/dist/cjs/components/SplitCol/SplitColContext.js.map +1 -0
  89. package/dist/cjs/components/Switch/Switch.js +2 -3
  90. package/dist/cjs/components/Switch/Switch.js.map +1 -1
  91. package/dist/cjs/components/TabbarItem/TabbarItem.js +9 -0
  92. package/dist/cjs/components/TabbarItem/TabbarItem.js.map +1 -1
  93. package/dist/cjs/components/Tabs/Tabs.js +6 -15
  94. package/dist/cjs/components/Tabs/Tabs.js.map +1 -1
  95. package/dist/cjs/components/Tooltip/Tooltip.d.ts +3 -3
  96. package/dist/cjs/components/Tooltip/Tooltip.js +116 -151
  97. package/dist/cjs/components/Tooltip/Tooltip.js.map +1 -1
  98. package/dist/cjs/components/Touch/Touch.js +4 -4
  99. package/dist/cjs/components/Touch/Touch.js.map +1 -1
  100. package/dist/cjs/components/View/View.js +2 -2
  101. package/dist/cjs/components/View/View.js.map +1 -1
  102. package/dist/cjs/components/View/ViewInfinite.d.ts +1 -1
  103. package/dist/cjs/components/View/ViewInfinite.js +2 -2
  104. package/dist/cjs/components/View/ViewInfinite.js.map +1 -1
  105. package/dist/cjs/components/WriteBarIcon/WriteBarIcon.js +10 -8
  106. package/dist/cjs/components/WriteBarIcon/WriteBarIcon.js.map +1 -1
  107. package/dist/cjs/index.d.ts +37 -30
  108. package/dist/cjs/index.js +13 -13
  109. package/dist/cjs/index.js.map +1 -1
  110. package/dist/cjs/lib/floating/adapters.d.ts +2 -0
  111. package/dist/cjs/lib/floating/adapters.js +63 -0
  112. package/dist/cjs/lib/floating/adapters.js.map +1 -0
  113. package/dist/cjs/lib/floating/functions.d.ts +10 -0
  114. package/dist/cjs/lib/floating/functions.js +36 -0
  115. package/dist/cjs/lib/floating/functions.js.map +1 -0
  116. package/dist/cjs/lib/floating/index.d.ts +4 -0
  117. package/dist/cjs/lib/floating/index.js +75 -0
  118. package/dist/cjs/lib/floating/index.js.map +1 -0
  119. package/dist/cjs/lib/floating/types.d.ts +4 -0
  120. package/dist/cjs/lib/floating/types.js +6 -0
  121. package/dist/cjs/lib/floating/types.js.map +1 -0
  122. package/dist/cjs/lib/useIsomorphicLayoutEffect.d.ts +1 -1
  123. package/dist/cjs/lib/warnOnce.d.ts +7 -0
  124. package/dist/cjs/lib/warnOnce.js +14 -0
  125. package/dist/cjs/lib/warnOnce.js.map +1 -1
  126. package/dist/cjs/shared/breakpoints.d.ts +2 -2
  127. package/dist/cjs/shared/breakpoints.js +12 -13
  128. package/dist/cjs/shared/breakpoints.js.map +1 -1
  129. package/dist/components/AdaptivityProvider/AdaptivityProvider.js +1 -1
  130. package/dist/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
  131. package/dist/components/AppRoot/AppRoot.js +7 -4
  132. package/dist/components/AppRoot/AppRoot.js.map +1 -1
  133. package/dist/components/Avatar/Avatar.d.ts +1 -1
  134. package/dist/components/Avatar/AvatarBadge/AvatarBadgeWithPreset.d.ts +1 -1
  135. package/dist/components/Avatar/AvatarBadge/AvatarBadgeWithPreset.js +5 -4
  136. package/dist/components/Avatar/AvatarBadge/AvatarBadgeWithPreset.js.map +1 -1
  137. package/dist/components/Cell/CellCheckbox/CellCheckbox.js +7 -4
  138. package/dist/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -1
  139. package/dist/components/Checkbox/Checkbox.d.ts +3 -2
  140. package/dist/components/Checkbox/Checkbox.js +12 -2
  141. package/dist/components/Checkbox/Checkbox.js.map +1 -1
  142. package/dist/components/ChipsSelect/ChipsSelect.js +0 -4
  143. package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
  144. package/dist/components/ContentCard/ContentCard.js +2 -1
  145. package/dist/components/ContentCard/ContentCard.js.map +1 -1
  146. package/dist/components/CustomSelect/CustomSelect.js +12 -8
  147. package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
  148. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +2 -3
  149. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.js +22 -73
  150. package/dist/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
  151. package/dist/components/DateInput/DateInput.d.ts +3 -2
  152. package/dist/components/DateInput/DateInput.js +3 -3
  153. package/dist/components/DateInput/DateInput.js.map +1 -1
  154. package/dist/components/DateRangeInput/DateRangeInput.d.ts +2 -2
  155. package/dist/components/DateRangeInput/DateRangeInput.js +3 -2
  156. package/dist/components/DateRangeInput/DateRangeInput.js.map +1 -1
  157. package/dist/components/Epic/Epic.js +1 -1
  158. package/dist/components/Epic/Epic.js.map +1 -1
  159. package/dist/components/FixedLayout/FixedLayout.js +1 -1
  160. package/dist/components/FixedLayout/FixedLayout.js.map +1 -1
  161. package/dist/components/FormField/FormField.js +6 -10
  162. package/dist/components/FormField/FormField.js.map +1 -1
  163. package/dist/components/IconButton/IconButton.js +9 -0
  164. package/dist/components/IconButton/IconButton.js.map +1 -1
  165. package/dist/components/ModalCard/ModalCard.d.ts +1 -1
  166. package/dist/components/ModalCard/ModalCard.js +4 -2
  167. package/dist/components/ModalCard/ModalCard.js.map +1 -1
  168. package/dist/components/ModalCardBase/ModalCardBase.d.ts +5 -1
  169. package/dist/components/ModalCardBase/ModalCardBase.js +9 -2
  170. package/dist/components/ModalCardBase/ModalCardBase.js.map +1 -1
  171. package/dist/components/ModalPage/ModalPage.d.ts +2 -6
  172. package/dist/components/ModalPage/ModalPage.js +13 -7
  173. package/dist/components/ModalPage/ModalPage.js.map +1 -1
  174. package/dist/components/ModalRoot/ModalRoot.js +1 -2
  175. package/dist/components/ModalRoot/ModalRoot.js.map +1 -1
  176. package/dist/components/NativeSelect/NativeSelect.d.ts +1 -1
  177. package/dist/components/NativeSelect/NativeSelect.js +1 -1
  178. package/dist/components/NativeSelect/NativeSelect.js.map +1 -1
  179. package/dist/components/PanelHeader/PanelHeader.js +18 -4
  180. package/dist/components/PanelHeader/PanelHeader.js.map +1 -1
  181. package/dist/components/PanelHeaderButton/PanelHeaderButton.js +11 -2
  182. package/dist/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
  183. package/dist/components/Popover/Popover.js +4 -1
  184. package/dist/components/Popover/Popover.js.map +1 -1
  185. package/dist/components/Popper/Popper.d.ts +12 -9
  186. package/dist/components/Popper/Popper.js +93 -120
  187. package/dist/components/Popper/Popper.js.map +1 -1
  188. package/dist/components/PopperArrow/PopperArrow.d.ts +15 -5
  189. package/dist/components/PopperArrow/PopperArrow.js +40 -15
  190. package/dist/components/PopperArrow/PopperArrow.js.map +1 -1
  191. package/dist/components/Progress/Progress.js +3 -1
  192. package/dist/components/Progress/Progress.js.map +1 -1
  193. package/dist/components/Root/Root.js +1 -1
  194. package/dist/components/Root/Root.js.map +1 -1
  195. package/dist/components/Select/Select.d.ts +1 -5
  196. package/dist/components/Select/Select.js +12 -39
  197. package/dist/components/Select/Select.js.map +1 -1
  198. package/dist/components/SelectMimicry/SelectMimicry.d.ts +1 -1
  199. package/dist/components/SelectMimicry/SelectMimicry.js +1 -1
  200. package/dist/components/SelectMimicry/SelectMimicry.js.map +1 -1
  201. package/dist/components/SelectTypography/SelectTypography.d.ts +11 -0
  202. package/dist/components/SelectTypography/SelectTypography.js +39 -0
  203. package/dist/components/SelectTypography/SelectTypography.js.map +1 -0
  204. package/dist/components/Slider/Slider.d.ts +1 -1
  205. package/dist/components/Slider/Slider.js +4 -3
  206. package/dist/components/Slider/Slider.js.map +1 -1
  207. package/dist/components/Spacing/Spacing.js +2 -1
  208. package/dist/components/Spacing/Spacing.js.map +1 -1
  209. package/dist/components/SplitCol/SplitCol.d.ts +0 -6
  210. package/dist/components/SplitCol/SplitCol.js +1 -7
  211. package/dist/components/SplitCol/SplitCol.js.map +1 -1
  212. package/dist/components/SplitCol/SplitColContext.d.ts +7 -0
  213. package/dist/components/SplitCol/SplitColContext.js +9 -0
  214. package/dist/components/SplitCol/SplitColContext.js.map +1 -0
  215. package/dist/components/Switch/Switch.js +2 -3
  216. package/dist/components/Switch/Switch.js.map +1 -1
  217. package/dist/components/TabbarItem/TabbarItem.js +9 -0
  218. package/dist/components/TabbarItem/TabbarItem.js.map +1 -1
  219. package/dist/components/Tabs/Tabs.js +6 -15
  220. package/dist/components/Tabs/Tabs.js.map +1 -1
  221. package/dist/components/Tooltip/Tooltip.d.ts +3 -3
  222. package/dist/components/Tooltip/Tooltip.js +116 -151
  223. package/dist/components/Tooltip/Tooltip.js.map +1 -1
  224. package/dist/components/Touch/Touch.js +4 -4
  225. package/dist/components/Touch/Touch.js.map +1 -1
  226. package/dist/components/View/View.js +1 -1
  227. package/dist/components/View/View.js.map +1 -1
  228. package/dist/components/View/ViewInfinite.d.ts +1 -1
  229. package/dist/components/View/ViewInfinite.js +1 -1
  230. package/dist/components/View/ViewInfinite.js.map +1 -1
  231. package/dist/components/WriteBarIcon/WriteBarIcon.js +11 -9
  232. package/dist/components/WriteBarIcon/WriteBarIcon.js.map +1 -1
  233. package/dist/components.css +142 -2
  234. package/dist/components.css.map +1 -1
  235. package/dist/components.js.tmp +61921 -4
  236. package/dist/cssm/components/ActionSheet/ActionSheet.module.css +1 -1
  237. package/dist/cssm/components/ActionSheetItem/ActionSheetItem.module.css +1 -1
  238. package/dist/cssm/components/AdaptivityProvider/AdaptivityProvider.js +1 -1
  239. package/dist/cssm/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
  240. package/dist/cssm/components/Alert/Alert.module.css +1 -1
  241. package/dist/cssm/components/AppRoot/AppRoot.js +7 -4
  242. package/dist/cssm/components/AppRoot/AppRoot.js.map +1 -1
  243. package/dist/cssm/components/AppRoot/AppRoot.module.css +1 -1
  244. package/dist/cssm/components/Avatar/Avatar.d.ts +1 -1
  245. package/dist/cssm/components/Avatar/Avatar.module.css +1 -1
  246. package/dist/cssm/components/Avatar/AvatarBadge/AvatarBadge.module.css +1 -1
  247. package/dist/cssm/components/Avatar/AvatarBadge/AvatarBadgeWithPreset.d.ts +1 -1
  248. package/dist/cssm/components/Avatar/AvatarBadge/AvatarBadgeWithPreset.js +5 -4
  249. package/dist/cssm/components/Avatar/AvatarBadge/AvatarBadgeWithPreset.js.map +1 -1
  250. package/dist/cssm/components/Badge/Badge.module.css +1 -1
  251. package/dist/cssm/components/Banner/Banner.module.css +1 -1
  252. package/dist/cssm/components/BaseGallery/BaseGallery.module.css +1 -1
  253. package/dist/cssm/components/Button/Button.module.css +1 -1
  254. package/dist/cssm/components/ButtonGroup/ButtonGroup.module.css +1 -1
  255. package/dist/cssm/components/Calendar/Calendar.module.css +1 -1
  256. package/dist/cssm/components/CalendarDay/CalendarDay.module.css +1 -1
  257. package/dist/cssm/components/CalendarDays/CalendarDays.module.css +1 -1
  258. package/dist/cssm/components/CalendarHeader/CalendarHeader.module.css +1 -1
  259. package/dist/cssm/components/CalendarRange/CalendarRange.module.css +1 -1
  260. package/dist/cssm/components/CalendarTime/CalendarTime.module.css +1 -1
  261. package/dist/cssm/components/Card/Card.module.css +2 -2
  262. package/dist/cssm/components/CardGrid/CardGrid.module.css +1 -1
  263. package/dist/cssm/components/CardScroll/CardScroll.module.css +1 -1
  264. package/dist/cssm/components/Cell/Cell.module.css +1 -1
  265. package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.js +7 -4
  266. package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -1
  267. package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.module.css +1 -1
  268. package/dist/cssm/components/Cell/CellDragger/CellDragger.module.css +1 -1
  269. package/dist/cssm/components/CellButton/CellButton.module.css +1 -1
  270. package/dist/cssm/components/Checkbox/Checkbox.d.ts +3 -2
  271. package/dist/cssm/components/Checkbox/Checkbox.js +12 -2
  272. package/dist/cssm/components/Checkbox/Checkbox.js.map +1 -1
  273. package/dist/cssm/components/Checkbox/Checkbox.module.css +1 -1
  274. package/dist/cssm/components/Chip/Chip.module.css +1 -1
  275. package/dist/cssm/components/ChipsInputBase/ChipsInputBase.module.css +1 -1
  276. package/dist/cssm/components/ChipsSelect/ChipsSelect.js +0 -4
  277. package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
  278. package/dist/cssm/components/ChipsSelect/ChipsSelect.module.css +1 -1
  279. package/dist/cssm/components/ContentCard/ContentCard.js +2 -1
  280. package/dist/cssm/components/ContentCard/ContentCard.js.map +1 -1
  281. package/dist/cssm/components/ContentCard/ContentCard.module.css +1 -1
  282. package/dist/cssm/components/Counter/Counter.module.css +1 -1
  283. package/dist/cssm/components/CustomScrollView/CustomScrollView.module.css +1 -1
  284. package/dist/cssm/components/CustomSelect/CustomSelect.js +12 -8
  285. package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
  286. package/dist/cssm/components/CustomSelect/CustomSelect.module.css +1 -1
  287. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +2 -3
  288. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.js +22 -73
  289. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.js.map +1 -1
  290. package/dist/cssm/components/CustomSelectDropdown/CustomSelectDropdown.module.css +1 -1
  291. package/dist/cssm/components/CustomSelectOption/CustomSelectOption.module.css +1 -1
  292. package/dist/cssm/components/DateInput/DateInput.d.ts +3 -2
  293. package/dist/cssm/components/DateInput/DateInput.js +4 -3
  294. package/dist/cssm/components/DateInput/DateInput.js.map +1 -1
  295. package/dist/cssm/components/DateInput/DateInput.module.css +1 -1
  296. package/dist/cssm/components/DateRangeInput/DateRangeInput.d.ts +2 -2
  297. package/dist/cssm/components/DateRangeInput/DateRangeInput.js +3 -2
  298. package/dist/cssm/components/DateRangeInput/DateRangeInput.js.map +1 -1
  299. package/dist/cssm/components/DateRangeInput/DateRangeInput.module.css +1 -1
  300. package/dist/cssm/components/Div/Div.module.css +1 -1
  301. package/dist/cssm/components/Epic/Epic.js +1 -1
  302. package/dist/cssm/components/Epic/Epic.js.map +1 -1
  303. package/dist/cssm/components/FixedLayout/FixedLayout.js +1 -1
  304. package/dist/cssm/components/FixedLayout/FixedLayout.js.map +1 -1
  305. package/dist/cssm/components/FixedLayout/FixedLayout.module.css +1 -1
  306. package/dist/cssm/components/FocusVisible/FocusVisible.module.css +1 -1
  307. package/dist/cssm/components/Footer/Footer.module.css +1 -1
  308. package/dist/cssm/components/FormField/FormField.js +6 -10
  309. package/dist/cssm/components/FormField/FormField.js.map +1 -1
  310. package/dist/cssm/components/FormField/FormField.module.css +1 -1
  311. package/dist/cssm/components/FormItem/FormItem.module.css +1 -1
  312. package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.module.css +1 -1
  313. package/dist/cssm/components/FormStatus/FormStatus.module.css +1 -1
  314. package/dist/cssm/components/Gradient/Gradient.module.css +1 -1
  315. package/dist/cssm/components/Group/Group.module.css +1 -1
  316. package/dist/cssm/components/Header/Header.module.css +1 -1
  317. package/dist/cssm/components/HorizontalCell/HorizontalCell.module.css +1 -1
  318. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.module.css +1 -1
  319. package/dist/cssm/components/HorizontalScroll/HorizontalScrollArrow.module.css +1 -1
  320. package/dist/cssm/components/IconButton/IconButton.js +9 -0
  321. package/dist/cssm/components/IconButton/IconButton.js.map +1 -1
  322. package/dist/cssm/components/IconButton/IconButton.module.css +1 -1
  323. package/dist/cssm/components/ImageBase/ImageBase.module.css +1 -1
  324. package/dist/cssm/components/ImageBase/ImageBaseBadge/ImageBaseBadge.module.css +1 -1
  325. package/dist/cssm/components/ImageBase/ImageBaseOverlay/ImageBaseOverlay.module.css +1 -1
  326. package/dist/cssm/components/InfoRow/InfoRow.module.css +1 -1
  327. package/dist/cssm/components/Input/Input.module.css +1 -1
  328. package/dist/cssm/components/InputLike/InputLike.module.css +1 -1
  329. package/dist/cssm/components/InputLike/InputLikeDivider.module.css +1 -1
  330. package/dist/cssm/components/Link/Link.module.css +1 -1
  331. package/dist/cssm/components/MiniInfoCell/MiniInfoCell.module.css +1 -1
  332. package/dist/cssm/components/ModalCard/ModalCard.d.ts +1 -1
  333. package/dist/cssm/components/ModalCard/ModalCard.js +4 -2
  334. package/dist/cssm/components/ModalCard/ModalCard.js.map +1 -1
  335. package/dist/cssm/components/ModalCard/ModalCard.module.css +1 -1
  336. package/dist/cssm/components/ModalCardBase/ModalCardBase.d.ts +5 -1
  337. package/dist/cssm/components/ModalCardBase/ModalCardBase.js +9 -2
  338. package/dist/cssm/components/ModalCardBase/ModalCardBase.js.map +1 -1
  339. package/dist/cssm/components/ModalCardBase/ModalCardBase.module.css +1 -1
  340. package/dist/cssm/components/ModalDismissButton/ModalDismissButton.module.css +1 -1
  341. package/dist/cssm/components/ModalPage/ModalPage.d.ts +2 -6
  342. package/dist/cssm/components/ModalPage/ModalPage.js +13 -7
  343. package/dist/cssm/components/ModalPage/ModalPage.js.map +1 -1
  344. package/dist/cssm/components/ModalPage/ModalPage.module.css +1 -1
  345. package/dist/cssm/components/ModalPageHeader/ModalPageHeader.module.css +1 -1
  346. package/dist/cssm/components/ModalRoot/ModalRoot.js +1 -2
  347. package/dist/cssm/components/ModalRoot/ModalRoot.js.map +1 -1
  348. package/dist/cssm/components/ModalRoot/ModalRoot.module.css +1 -1
  349. package/dist/cssm/components/NativeSelect/NativeSelect.d.ts +1 -1
  350. package/dist/cssm/components/NativeSelect/NativeSelect.js +1 -1
  351. package/dist/cssm/components/NativeSelect/NativeSelect.js.map +1 -1
  352. package/dist/cssm/components/Pagination/Pagination.module.css +1 -1
  353. package/dist/cssm/components/Panel/Panel.module.css +1 -1
  354. package/dist/cssm/components/PanelHeader/PanelHeader.js +18 -4
  355. package/dist/cssm/components/PanelHeader/PanelHeader.js.map +1 -1
  356. package/dist/cssm/components/PanelHeader/PanelHeader.module.css +1 -1
  357. package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.js +11 -2
  358. package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
  359. package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.module.css +1 -1
  360. package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.module.css +1 -1
  361. package/dist/cssm/components/PanelHeaderContext/PanelHeaderContext.module.css +1 -1
  362. package/dist/cssm/components/Placeholder/Placeholder.module.css +1 -1
  363. package/dist/cssm/components/PopoutRoot/PopoutRoot.module.css +1 -1
  364. package/dist/cssm/components/PopoutWrapper/PopoutWrapper.module.css +1 -1
  365. package/dist/cssm/components/Popover/Popover.js +4 -1
  366. package/dist/cssm/components/Popover/Popover.js.map +1 -1
  367. package/dist/cssm/components/Popover/Popover.module.css +1 -1
  368. package/dist/cssm/components/Popper/Popper.d.ts +12 -9
  369. package/dist/cssm/components/Popper/Popper.js +93 -120
  370. package/dist/cssm/components/Popper/Popper.js.map +1 -1
  371. package/dist/cssm/components/Popper/Popper.module.css +1 -1
  372. package/dist/cssm/components/PopperArrow/PopperArrow.d.ts +15 -5
  373. package/dist/cssm/components/PopperArrow/PopperArrow.js +40 -15
  374. package/dist/cssm/components/PopperArrow/PopperArrow.js.map +1 -1
  375. package/dist/cssm/components/PopperArrow/PopperArrow.module.css +1 -1
  376. package/dist/cssm/components/Progress/Progress.js +3 -1
  377. package/dist/cssm/components/Progress/Progress.js.map +1 -1
  378. package/dist/cssm/components/Progress/Progress.module.css +1 -1
  379. package/dist/cssm/components/PromoBanner/PromoBanner.module.css +1 -1
  380. package/dist/cssm/components/PullToRefresh/PullToRefresh.module.css +1 -1
  381. package/dist/cssm/components/Radio/Radio.module.css +1 -1
  382. package/dist/cssm/components/RadioGroup/RadioGroup.module.css +1 -1
  383. package/dist/cssm/components/Removable/Removable.module.css +1 -1
  384. package/dist/cssm/components/RichCell/RichCell.module.css +1 -1
  385. package/dist/cssm/components/RichTooltip/RichTooltip.module.css +1 -1
  386. package/dist/cssm/components/Root/Root.js +1 -1
  387. package/dist/cssm/components/Root/Root.js.map +1 -1
  388. package/dist/cssm/components/Root/Root.module.css +1 -1
  389. package/dist/cssm/components/ScreenSpinner/ScreenSpinner.module.css +1 -1
  390. package/dist/cssm/components/Search/Search.module.css +1 -1
  391. package/dist/cssm/components/SegmentedControl/SegmentedControl.module.css +1 -1
  392. package/dist/cssm/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.module.css +1 -1
  393. package/dist/cssm/components/Select/Select.d.ts +1 -5
  394. package/dist/cssm/components/Select/Select.js +12 -39
  395. package/dist/cssm/components/Select/Select.js.map +1 -1
  396. package/dist/cssm/components/Select/Select.module.css +1 -1
  397. package/dist/cssm/components/SelectMimicry/SelectMimicry.d.ts +1 -1
  398. package/dist/cssm/components/SelectMimicry/SelectMimicry.js +1 -1
  399. package/dist/cssm/components/SelectMimicry/SelectMimicry.js.map +1 -1
  400. package/dist/cssm/components/SelectTypography/SelectTypography.d.ts +11 -0
  401. package/dist/cssm/components/SelectTypography/SelectTypography.js +40 -0
  402. package/dist/cssm/components/SelectTypography/SelectTypography.js.map +1 -0
  403. package/dist/cssm/components/SelectTypography/SelectTypography.module.css +1 -0
  404. package/dist/cssm/components/Separator/Separator.module.css +1 -1
  405. package/dist/cssm/components/SimpleCell/SimpleCell.module.css +1 -1
  406. package/dist/cssm/components/Slider/Slider.d.ts +1 -1
  407. package/dist/cssm/components/Slider/Slider.js +4 -3
  408. package/dist/cssm/components/Slider/Slider.js.map +1 -1
  409. package/dist/cssm/components/Slider/Slider.module.css +1 -1
  410. package/dist/cssm/components/Snackbar/Snackbar.module.css +1 -1
  411. package/dist/cssm/components/Spacing/Spacing.js +2 -1
  412. package/dist/cssm/components/Spacing/Spacing.js.map +1 -1
  413. package/dist/cssm/components/Spacing/Spacing.module.css +1 -1
  414. package/dist/cssm/components/Spinner/Spinner.module.css +1 -1
  415. package/dist/cssm/components/SplitCol/SplitCol.d.ts +0 -6
  416. package/dist/cssm/components/SplitCol/SplitCol.js +1 -7
  417. package/dist/cssm/components/SplitCol/SplitCol.js.map +1 -1
  418. package/dist/cssm/components/SplitCol/SplitCol.module.css +1 -1
  419. package/dist/cssm/components/SplitCol/SplitColContext.d.ts +7 -0
  420. package/dist/cssm/components/SplitCol/SplitColContext.js +9 -0
  421. package/dist/cssm/components/SplitCol/SplitColContext.js.map +1 -0
  422. package/dist/cssm/components/SplitLayout/SplitLayout.module.css +1 -1
  423. package/dist/cssm/components/SubnavigationBar/SubnavigationBar.module.css +1 -1
  424. package/dist/cssm/components/SubnavigationButton/SubnavigationButton.module.css +1 -1
  425. package/dist/cssm/components/Switch/Switch.js +2 -3
  426. package/dist/cssm/components/Switch/Switch.js.map +1 -1
  427. package/dist/cssm/components/Switch/Switch.module.css +1 -1
  428. package/dist/cssm/components/Tabbar/Tabbar.module.css +1 -1
  429. package/dist/cssm/components/TabbarItem/TabbarItem.js +9 -0
  430. package/dist/cssm/components/TabbarItem/TabbarItem.js.map +1 -1
  431. package/dist/cssm/components/TabbarItem/TabbarItem.module.css +1 -1
  432. package/dist/cssm/components/Tabs/Tabs.js +6 -15
  433. package/dist/cssm/components/Tabs/Tabs.js.map +1 -1
  434. package/dist/cssm/components/Tabs/Tabs.module.css +1 -1
  435. package/dist/cssm/components/TabsItem/TabsItem.module.css +1 -1
  436. package/dist/cssm/components/Tappable/Tappable.module.css +1 -1
  437. package/dist/cssm/components/TextTooltip/TextTooltip.module.css +1 -1
  438. package/dist/cssm/components/Textarea/Textarea.module.css +1 -1
  439. package/dist/cssm/components/Tooltip/Tooltip.d.ts +3 -3
  440. package/dist/cssm/components/Tooltip/Tooltip.js +122 -151
  441. package/dist/cssm/components/Tooltip/Tooltip.js.map +1 -1
  442. package/dist/cssm/components/Tooltip/Tooltip.module.css +1 -1
  443. package/dist/cssm/components/Touch/Touch.js +4 -4
  444. package/dist/cssm/components/Touch/Touch.js.map +1 -1
  445. package/dist/cssm/components/Typography/Caption/Caption.module.css +1 -1
  446. package/dist/cssm/components/Typography/Footnote/Footnote.module.css +1 -1
  447. package/dist/cssm/components/Typography/Headline/Headline.module.css +1 -1
  448. package/dist/cssm/components/Typography/Paragraph/Paragraph.module.css +1 -1
  449. package/dist/cssm/components/Typography/Subhead/Subhead.module.css +1 -1
  450. package/dist/cssm/components/Typography/Text/Text.module.css +1 -1
  451. package/dist/cssm/components/Typography/Title/Title.module.css +1 -1
  452. package/dist/cssm/components/UsersStack/UsersStack.module.css +1 -1
  453. package/dist/cssm/components/View/View.js +1 -1
  454. package/dist/cssm/components/View/View.js.map +1 -1
  455. package/dist/cssm/components/View/View.module.css +1 -1
  456. package/dist/cssm/components/View/ViewIOS.module.css +1 -1
  457. package/dist/cssm/components/View/ViewInfinite.d.ts +1 -1
  458. package/dist/cssm/components/View/ViewInfinite.js +1 -1
  459. package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
  460. package/dist/cssm/components/WriteBar/WriteBar.module.css +1 -1
  461. package/dist/cssm/components/WriteBarIcon/WriteBarIcon.js +11 -9
  462. package/dist/cssm/components/WriteBarIcon/WriteBarIcon.js.map +1 -1
  463. package/dist/cssm/components/WriteBarIcon/WriteBarIcon.module.css +1 -1
  464. package/dist/cssm/index.d.ts +37 -30
  465. package/dist/cssm/index.js +24 -18
  466. package/dist/cssm/index.js.map +1 -1
  467. package/dist/cssm/lib/floating/adapters.d.ts +2 -0
  468. package/dist/cssm/lib/floating/adapters.js +56 -0
  469. package/dist/cssm/lib/floating/adapters.js.map +1 -0
  470. package/dist/cssm/lib/floating/functions.d.ts +10 -0
  471. package/dist/cssm/lib/floating/functions.js +28 -0
  472. package/dist/cssm/lib/floating/functions.js.map +1 -0
  473. package/dist/cssm/lib/floating/index.d.ts +4 -0
  474. package/dist/cssm/lib/floating/index.js +4 -0
  475. package/dist/cssm/lib/floating/index.js.map +1 -0
  476. package/dist/cssm/lib/floating/types.d.ts +4 -0
  477. package/dist/cssm/lib/floating/types.js +2 -0
  478. package/dist/cssm/lib/floating/types.js.map +1 -0
  479. package/dist/cssm/lib/useIsomorphicLayoutEffect.d.ts +1 -1
  480. package/dist/cssm/lib/warnOnce.d.ts +7 -0
  481. package/dist/cssm/lib/warnOnce.js +12 -0
  482. package/dist/cssm/lib/warnOnce.js.map +1 -1
  483. package/dist/cssm/shared/breakpoints.d.ts +2 -2
  484. package/dist/cssm/shared/breakpoints.js +12 -13
  485. package/dist/cssm/shared/breakpoints.js.map +1 -1
  486. package/dist/cssm/styles/adaptivity.module.css +1 -1
  487. package/dist/cssm/styles/common.css +1 -1
  488. package/dist/cssm/styles/themes.css +1 -1
  489. package/dist/index.d.ts +37 -30
  490. package/dist/index.js +22 -16
  491. package/dist/index.js.map +1 -1
  492. package/dist/lib/floating/adapters.d.ts +2 -0
  493. package/dist/lib/floating/adapters.js +56 -0
  494. package/dist/lib/floating/adapters.js.map +1 -0
  495. package/dist/lib/floating/functions.d.ts +10 -0
  496. package/dist/lib/floating/functions.js +28 -0
  497. package/dist/lib/floating/functions.js.map +1 -0
  498. package/dist/lib/floating/index.d.ts +4 -0
  499. package/dist/lib/floating/index.js +4 -0
  500. package/dist/lib/floating/index.js.map +1 -0
  501. package/dist/lib/floating/types.d.ts +4 -0
  502. package/dist/lib/floating/types.js +2 -0
  503. package/dist/lib/floating/types.js.map +1 -0
  504. package/dist/lib/useIsomorphicLayoutEffect.d.ts +1 -1
  505. package/dist/lib/warnOnce.d.ts +7 -0
  506. package/dist/lib/warnOnce.js +12 -0
  507. package/dist/lib/warnOnce.js.map +1 -1
  508. package/dist/shared/breakpoints.d.ts +2 -2
  509. package/dist/shared/breakpoints.js +12 -13
  510. package/dist/shared/breakpoints.js.map +1 -1
  511. package/dist/stable.js.tmp +69 -21
  512. package/dist/vkui.css +143 -3
  513. package/dist/vkui.css.map +1 -1
  514. package/dist/vkui.js.tmp +61837 -0
  515. package/package.json +6 -6
  516. package/dist/cssm/styles/components.css +0 -3
@@ -1 +1 @@
1
- {"version":3,"file":"PanelHeader.js","names":["PanelHeaderIn","before","after","separator","children","useConfigProvider","webviewType","React","useContext","ModalRootContext","isInsideModal","platform","usePlatform","Platform","VKCOM","WebviewType","INTERNAL","PanelHeader","visor","transparent","shadow","getRef","getRootRef","fixed","className","restProps","useAdaptivity","sizeX","useAdaptivityConditionalRender","adaptiveSizeX","isFixed","undefined","classNames","getPlatformClassName","VKAPPS","getSizeXClassName","compact","regular"],"sources":["../../../../src/components/PanelHeader/PanelHeader.tsx"],"sourcesContent":["import * as React from 'react';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { getPlatformClassName } from '../../helpers/getPlatformClassName';\nimport { getSizeXClassName } from '../../helpers/getSizeXClassName';\nimport { classNames } from '@vkontakte/vkjs';\nimport { FixedLayout } from '../FixedLayout/FixedLayout';\nimport { Separator } from '../Separator/Separator';\nimport { Platform } from '../../lib/platform';\nimport { HasRef, HasRootRef } from '../../types';\nimport { useConfigProvider, WebviewType } from '../ConfigProvider/ConfigProviderContext';\nimport { Text } from '../Typography/Text/Text';\nimport { TooltipContainer } from '../Tooltip/TooltipContainer';\nimport { ModalRootContext } from '../ModalRoot/ModalRootContext';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useAdaptivityConditionalRender } from '../../hooks/useAdaptivityConditionalRender';\nimport { Spacing } from '../Spacing/Spacing';\nimport styles from './PanelHeader.module.css';\n\nexport interface PanelHeaderProps\n extends React.HTMLAttributes<HTMLDivElement>,\n HasRef<HTMLDivElement>,\n HasRootRef<HTMLDivElement> {\n before?: React.ReactNode;\n after?: React.ReactNode;\n separator?: boolean;\n transparent?: boolean;\n shadow?: boolean;\n /**\n * Если `false`, то шапка будет нулевой высоты и контент панели \"залезет\" под неё\n */\n visor?: boolean;\n /**\n * Если `false`, то шапка будет в потоке. По умолчанию `true`, но если платформа vkcom, то по умолчанию `false`.\n */\n fixed?: boolean;\n}\n\nconst PanelHeaderIn = ({ before, after, separator, children }: PanelHeaderProps) => {\n const { webviewType } = useConfigProvider();\n const { isInsideModal } = React.useContext(ModalRootContext);\n const platform = usePlatform();\n\n return (\n <React.Fragment>\n <TooltipContainer fixed className={styles['PanelHeader__in']}>\n <div className={styles['PanelHeader__before']}>{before}</div>\n <div className={styles['PanelHeader__content']}>\n {platform === Platform.VKCOM ? (\n <Text weight=\"2\">{children}</Text>\n ) : (\n <span className={styles['PanelHeader__content-in']}>{children}</span>\n )}\n </div>\n <div className={styles['PanelHeader__after']}>\n {(webviewType === WebviewType.INTERNAL || isInsideModal) && after}\n </div>\n </TooltipContainer>\n {separator && platform === Platform.VKCOM && <Separator wide />}\n </React.Fragment>\n );\n};\n\n/**\n * @see https://vkcom.github.io/VKUI/#/PanelHeader\n */\nexport const PanelHeader = ({\n before,\n children,\n after,\n separator = true,\n visor = true,\n transparent = false,\n shadow,\n getRef,\n getRootRef,\n fixed,\n className,\n ...restProps\n}: PanelHeaderProps) => {\n const platform = usePlatform();\n const { webviewType } = useConfigProvider();\n const { isInsideModal } = React.useContext(ModalRootContext);\n const { sizeX } = useAdaptivity();\n const { sizeX: adaptiveSizeX } = useAdaptivityConditionalRender();\n let isFixed = fixed !== undefined ? fixed : platform !== Platform.VKCOM;\n\n return (\n <div\n {...restProps}\n className={classNames(\n styles['PanelHeader'],\n getPlatformClassName(styles['PanelHeader'], platform),\n transparent && styles['PanelHeader--trnsp'],\n shadow && styles['PanelHeader--shadow'],\n visor && styles['PanelHeader--vis'],\n separator && visor && styles['PanelHeader--sep'],\n webviewType === WebviewType.VKAPPS && !isInsideModal && styles['PanelHeader--vkapps'],\n !before && styles['PanelHeader--no-before'],\n !after && styles['PanelHeader--no-after'],\n isFixed && styles['PanelHeader--fixed'],\n getSizeXClassName(styles['PanelHeader'], sizeX),\n className,\n )}\n ref={isFixed ? getRootRef : getRef}\n >\n {isFixed ? (\n <FixedLayout className={styles['PanelHeader__fixed']} vertical=\"top\" getRootRef={getRef}>\n <PanelHeaderIn before={before} after={after} separator={separator}>\n {children}\n </PanelHeaderIn>\n </FixedLayout>\n ) : (\n <PanelHeaderIn before={before} after={after} separator={separator}>\n {children}\n </PanelHeaderIn>\n )}\n {separator && visor && platform !== Platform.VKCOM && (\n <React.Fragment>\n {adaptiveSizeX.compact && <Separator className={adaptiveSizeX.compact.className} />}\n {adaptiveSizeX.regular && (\n <Spacing className={adaptiveSizeX.regular.className} size={16} />\n )}\n </React.Fragment>\n )}\n </div>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"PanelHeader.js","names":["getPlatformClassName","platform","sizeXClassNames","compact","regular","none","PanelHeaderIn","before","after","separator","children","useConfigProvider","webviewType","React","useContext","ModalRootContext","isInsideModal","usePlatform","Platform","VKCOM","WebviewType","INTERNAL","PanelHeader","visor","transparent","shadow","getRef","getRootRef","fixed","className","restProps","useAdaptivity","sizeX","useAdaptivityConditionalRender","adaptiveSizeX","isFixed","undefined","classNames","VKAPPS"],"sources":["../../../../src/components/PanelHeader/PanelHeader.tsx"],"sourcesContent":["import * as React from 'react';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { classNames } from '@vkontakte/vkjs';\nimport { FixedLayout } from '../FixedLayout/FixedLayout';\nimport { Separator } from '../Separator/Separator';\nimport { Platform } from '../../lib/platform';\nimport { HasRef, HasRootRef } from '../../types';\nimport { useConfigProvider, WebviewType } from '../ConfigProvider/ConfigProviderContext';\nimport { Text } from '../Typography/Text/Text';\nimport { TooltipContainer } from '../Tooltip/TooltipContainer';\nimport { ModalRootContext } from '../ModalRoot/ModalRootContext';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useAdaptivityConditionalRender } from '../../hooks/useAdaptivityConditionalRender';\nimport { Spacing } from '../Spacing/Spacing';\nimport styles from './PanelHeader.module.css';\n\nfunction getPlatformClassName(platform: string): string {\n switch (platform) {\n case 'ios':\n return styles['PanelHeader--ios'];\n case 'vkcom':\n return styles['PanelHeader--vkcom'];\n default:\n return styles['PanelHeader--android'];\n }\n}\n\nconst sizeXClassNames = {\n compact: '',\n regular: styles['PanelHeader--sizeX-regular'],\n none: styles['PanelHeader--sizeX-none'],\n};\n\nexport interface PanelHeaderProps\n extends React.HTMLAttributes<HTMLDivElement>,\n HasRef<HTMLDivElement>,\n HasRootRef<HTMLDivElement> {\n before?: React.ReactNode;\n after?: React.ReactNode;\n separator?: boolean;\n transparent?: boolean;\n shadow?: boolean;\n /**\n * Если `false`, то шапка будет нулевой высоты и контент панели \"залезет\" под неё\n */\n visor?: boolean;\n /**\n * Если `false`, то шапка будет в потоке. По умолчанию `true`, но если платформа vkcom, то по умолчанию `false`.\n */\n fixed?: boolean;\n}\n\nconst PanelHeaderIn = ({ before, after, separator, children }: PanelHeaderProps) => {\n const { webviewType } = useConfigProvider();\n const { isInsideModal } = React.useContext(ModalRootContext);\n const platform = usePlatform();\n\n return (\n <React.Fragment>\n <TooltipContainer fixed className={styles['PanelHeader__in']}>\n <div className={styles['PanelHeader__before']}>{before}</div>\n <div className={styles['PanelHeader__content']}>\n {platform === Platform.VKCOM ? (\n <Text weight=\"2\">{children}</Text>\n ) : (\n <span className={styles['PanelHeader__content-in']}>{children}</span>\n )}\n </div>\n <div className={styles['PanelHeader__after']}>\n {(webviewType === WebviewType.INTERNAL || isInsideModal) && after}\n </div>\n </TooltipContainer>\n {separator && platform === Platform.VKCOM && <Separator wide />}\n </React.Fragment>\n );\n};\n\n/**\n * @see https://vkcom.github.io/VKUI/#/PanelHeader\n */\nexport const PanelHeader = ({\n before,\n children,\n after,\n separator = true,\n visor = true,\n transparent = false,\n shadow,\n getRef,\n getRootRef,\n fixed,\n className,\n ...restProps\n}: PanelHeaderProps) => {\n const platform = usePlatform();\n const { webviewType } = useConfigProvider();\n const { isInsideModal } = React.useContext(ModalRootContext);\n const { sizeX = 'none' } = useAdaptivity();\n const { sizeX: adaptiveSizeX } = useAdaptivityConditionalRender();\n let isFixed = fixed !== undefined ? fixed : platform !== Platform.VKCOM;\n\n return (\n <div\n {...restProps}\n className={classNames(\n styles['PanelHeader'],\n getPlatformClassName(platform),\n transparent && styles['PanelHeader--trnsp'],\n shadow && styles['PanelHeader--shadow'],\n visor && styles['PanelHeader--vis'],\n separator && visor && styles['PanelHeader--sep'],\n webviewType === WebviewType.VKAPPS && !isInsideModal && styles['PanelHeader--vkapps'],\n !before && styles['PanelHeader--no-before'],\n !after && styles['PanelHeader--no-after'],\n isFixed && styles['PanelHeader--fixed'],\n sizeXClassNames[sizeX],\n className,\n )}\n ref={isFixed ? getRootRef : getRef}\n >\n {isFixed ? (\n <FixedLayout className={styles['PanelHeader__fixed']} vertical=\"top\" getRootRef={getRef}>\n <PanelHeaderIn before={before} after={after} separator={separator}>\n {children}\n </PanelHeaderIn>\n </FixedLayout>\n ) : (\n <PanelHeaderIn before={before} after={after} separator={separator}>\n {children}\n </PanelHeaderIn>\n )}\n {separator && visor && platform !== Platform.VKCOM && (\n <React.Fragment>\n {adaptiveSizeX.compact && <Separator className={adaptiveSizeX.compact.className} />}\n {adaptiveSizeX.regular && (\n <Spacing className={adaptiveSizeX.regular.className} size={16} />\n )}\n </React.Fragment>\n )}\n </div>\n );\n};\n"],"mappings":"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"}
@@ -10,7 +10,6 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
10
10
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
11
11
  var React = _interopRequireWildcard(require("react"));
12
12
  var _Tappable = require("../Tappable/Tappable");
13
- var _getPlatformClassName = require("../../helpers/getPlatformClassName");
14
13
  var _vkjs = require("@vkontakte/vkjs");
15
14
  var _warnOnce = require("../../lib/warnOnce");
16
15
  var _usePlatform = require("../../hooks/usePlatform");
@@ -19,6 +18,16 @@ var _platform = require("../../lib/platform");
19
18
  var _Text = require("../Typography/Text/Text");
20
19
  var _Title = require("../Typography/Title/Title");
21
20
  var _excluded = ["children", "primary", "label", "className"];
21
+ function getPlatformClassName(platform) {
22
+ switch (platform) {
23
+ case 'ios':
24
+ return "vkuiPanelHeaderButton--ios";
25
+ case 'vkcom':
26
+ return "vkuiPanelHeaderButton--vkcom";
27
+ default:
28
+ return "vkuiPanelHeaderButton--android";
29
+ }
30
+ }
22
31
  var ButtonTypography = function ButtonTypography(_ref) {
23
32
  var primary = _ref.primary,
24
33
  children = _ref.children;
@@ -75,7 +84,7 @@ var PanelHeaderButton = function PanelHeaderButton(_ref2) {
75
84
  Component: restProps.href ? 'a' : 'button',
76
85
  activeEffectDelay: 200,
77
86
  activeMode: activeMode,
78
- className: (0, _vkjs.classNames)("vkuiPanelHeaderButton", (0, _getPlatformClassName.getPlatformClassName)("vkuiPanelHeaderButton", platform), isPrimitive && "vkuiPanelHeaderButton--primitive", !isPrimitive && !isPrimitiveLabel && "vkuiPanelHeaderButton--notPrimitive", className)
87
+ className: (0, _vkjs.classNames)("vkuiPanelHeaderButton", getPlatformClassName(platform), isPrimitive && "vkuiPanelHeaderButton--primitive", !isPrimitive && !isPrimitiveLabel && "vkuiPanelHeaderButton--notPrimitive", className)
79
88
  }), isPrimitive ? /*#__PURE__*/React.createElement(ButtonTypography, {
80
89
  primary: primary
81
90
  }, children) : children, isPrimitiveLabel ? /*#__PURE__*/React.createElement(ButtonTypography, {
@@ -1 +1 @@
1
- {"version":3,"file":"PanelHeaderButton.js","names":["ButtonTypography","primary","children","platform","usePlatform","Platform","IOS","VKCOM","undefined","warn","warnOnce","PanelHeaderButton","label","className","restProps","isPrimitive","isPrimitiveReactNode","isPrimitiveLabel","hoverMode","activeMode","process","env","NODE_ENV","hasAccessibleName","Boolean","getTitleFromChildren","href","classNames","getPlatformClassName"],"sources":["../../../../src/components/PanelHeaderButton/PanelHeaderButton.tsx"],"sourcesContent":["import * as React from 'react';\nimport { TappableProps, Tappable } from '../Tappable/Tappable';\nimport { getPlatformClassName } from '../../helpers/getPlatformClassName';\nimport { classNames, isPrimitiveReactNode } from '@vkontakte/vkjs';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { getTitleFromChildren } from '../../lib/utils';\nimport { Platform } from '../../lib/platform';\nimport { Text } from '../Typography/Text/Text';\nimport { Title } from '../Typography/Title/Title';\nimport styles from './PanelHeaderButton.module.css';\n\nexport interface PanelHeaderButtonProps extends Omit<TappableProps, 'label'> {\n primary?: boolean;\n label?: React.ReactNode;\n}\n\ninterface ButtonTypographyProps extends React.AllHTMLAttributes<HTMLElement> {\n primary?: PanelHeaderButtonProps['primary'];\n}\n\nconst ButtonTypography = ({ primary, children }: ButtonTypographyProps) => {\n const platform = usePlatform();\n\n if (platform === Platform.IOS) {\n return (\n <Title Component=\"span\" level=\"3\" weight={primary ? '1' : '3'}>\n {children}\n </Title>\n );\n }\n\n return <Text weight={platform === Platform.VKCOM ? undefined : '2'}>{children}</Text>;\n};\n\nconst warn = warnOnce('PanelHeaderButton');\n\n/**\n * @see https://vkcom.github.io/VKUI/#/PanelHeaderButton\n */\nexport const PanelHeaderButton = ({\n children,\n primary = false,\n label,\n className,\n ...restProps\n}: PanelHeaderButtonProps) => {\n const isPrimitive = isPrimitiveReactNode(children);\n const isPrimitiveLabel = isPrimitiveReactNode(label);\n const platform = usePlatform();\n\n let hoverMode;\n let activeMode;\n\n switch (platform) {\n case Platform.IOS:\n hoverMode = 'background';\n activeMode = 'opacity';\n break;\n case Platform.VKCOM:\n hoverMode = styles['PanelHeaderButton--hover'];\n activeMode = styles['PanelHeaderButton--active'];\n break;\n default:\n hoverMode = 'background';\n activeMode = 'background';\n }\n\n if (process.env.NODE_ENV === 'development') {\n const hasAccessibleName = Boolean(\n getTitleFromChildren(children) ||\n getTitleFromChildren(label) ||\n restProps['aria-label'] ||\n restProps['aria-labelledby'],\n );\n\n if (!hasAccessibleName) {\n warn(\n 'a11y: У кнопки нет названия, которое может прочитать скринридер, и она недоступна для части пользователей. Замените содержимое на текст или добавьте описание действия с помощью пропа aria-label.',\n 'error',\n );\n }\n }\n\n return (\n <Tappable\n {...restProps}\n hoverMode={hoverMode}\n Component={restProps.href ? 'a' : 'button'}\n activeEffectDelay={200}\n activeMode={activeMode}\n className={classNames(\n styles['PanelHeaderButton'],\n getPlatformClassName(styles['PanelHeaderButton'], platform),\n isPrimitive && styles['PanelHeaderButton--primitive'],\n !isPrimitive && !isPrimitiveLabel && styles['PanelHeaderButton--notPrimitive'],\n className,\n )}\n >\n {isPrimitive ? <ButtonTypography primary={primary}>{children}</ButtonTypography> : children}\n {isPrimitiveLabel ? (\n <ButtonTypography primary={primary} className={styles['PanelHeaderButton__label']}>\n {label}\n </ButtonTypography>\n ) : (\n label\n )}\n </Tappable>\n );\n};\n"],"mappings":";;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAkD;AAYlD,IAAMA,gBAAgB,GAAG,SAAnBA,gBAAgB,OAAqD;EAAA,IAA/CC,OAAO,QAAPA,OAAO;IAAEC,QAAQ,QAARA,QAAQ;EAC3C,IAAMC,QAAQ,GAAG,IAAAC,wBAAW,GAAE;EAE9B,IAAID,QAAQ,KAAKE,kBAAQ,CAACC,GAAG,EAAE;IAC7B,oBACE,oBAAC,YAAK;MAAC,SAAS,EAAC,MAAM;MAAC,KAAK,EAAC,GAAG;MAAC,MAAM,EAAEL,OAAO,GAAG,GAAG,GAAG;IAAI,GAC3DC,QAAQ,CACH;EAEZ;EAEA,oBAAO,oBAAC,UAAI;IAAC,MAAM,EAAEC,QAAQ,KAAKE,kBAAQ,CAACE,KAAK,GAAGC,SAAS,GAAG;EAAI,GAAEN,QAAQ,CAAQ;AACvF,CAAC;AAED,IAAMO,IAAI,GAAG,IAAAC,kBAAQ,EAAC,mBAAmB,CAAC;;AAE1C;AACA;AACA;AACO,IAAMC,iBAAiB,GAAG,SAApBA,iBAAiB,QAMA;EAAA,IAL5BT,QAAQ,SAARA,QAAQ;IAAA,sBACRD,OAAO;IAAPA,OAAO,8BAAG,KAAK;IACfW,KAAK,SAALA,KAAK;IACLC,SAAS,SAATA,SAAS;IACNC,SAAS;EAEZ,IAAMC,WAAW,GAAG,IAAAC,0BAAoB,EAACd,QAAQ,CAAC;EAClD,IAAMe,gBAAgB,GAAG,IAAAD,0BAAoB,EAACJ,KAAK,CAAC;EACpD,IAAMT,QAAQ,GAAG,IAAAC,wBAAW,GAAE;EAE9B,IAAIc,SAAS;EACb,IAAIC,UAAU;EAEd,QAAQhB,QAAQ;IACd,KAAKE,kBAAQ,CAACC,GAAG;MACfY,SAAS,GAAG,YAAY;MACxBC,UAAU,GAAG,SAAS;MACtB;IACF,KAAKd,kBAAQ,CAACE,KAAK;MACjBW,SAAS,iCAAqC;MAC9CC,UAAU,kCAAsC;MAChD;IACF;MACED,SAAS,GAAG,YAAY;MACxBC,UAAU,GAAG,YAAY;EAAC;EAG9B,IAAIC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,aAAa,EAAE;IAC1C,IAAMC,iBAAiB,GAAGC,OAAO,CAC/B,IAAAC,2BAAoB,EAACvB,QAAQ,CAAC,IAC5B,IAAAuB,2BAAoB,EAACb,KAAK,CAAC,IAC3BE,SAAS,CAAC,YAAY,CAAC,IACvBA,SAAS,CAAC,iBAAiB,CAAC,CAC/B;IAED,IAAI,CAACS,iBAAiB,EAAE;MACtBd,IAAI,CACF,oMAAoM,EACpM,OAAO,CACR;IACH;EACF;EAEA,oBACE,oBAAC,kBAAQ,6BACHK,SAAS;IACb,SAAS,EAAEI,SAAU;IACrB,SAAS,EAAEJ,SAAS,CAACY,IAAI,GAAG,GAAG,GAAG,QAAS;IAC3C,iBAAiB,EAAE,GAAI;IACvB,UAAU,EAAEP,UAAW;IACvB,SAAS,EAAE,IAAAQ,gBAAU,2BAEnB,IAAAC,0CAAoB,2BAA8BzB,QAAQ,CAAC,EAC3DY,WAAW,sCAA0C,EACrD,CAACA,WAAW,IAAI,CAACE,gBAAgB,yCAA6C,EAC9EJ,SAAS;EACT,IAEDE,WAAW,gBAAG,oBAAC,gBAAgB;IAAC,OAAO,EAAEd;EAAQ,GAAEC,QAAQ,CAAoB,GAAGA,QAAQ,EAC1Fe,gBAAgB,gBACf,oBAAC,gBAAgB;IAAC,OAAO,EAAEhB,OAAQ;IAAC,SAAS;EAAqC,GAC/EW,KAAK,CACW,GAEnBA,KACD,CACQ;AAEf,CAAC;AAAC"}
1
+ {"version":3,"file":"PanelHeaderButton.js","names":["getPlatformClassName","platform","ButtonTypography","primary","children","usePlatform","Platform","IOS","VKCOM","undefined","warn","warnOnce","PanelHeaderButton","label","className","restProps","isPrimitive","isPrimitiveReactNode","isPrimitiveLabel","hoverMode","activeMode","process","env","NODE_ENV","hasAccessibleName","Boolean","getTitleFromChildren","href","classNames"],"sources":["../../../../src/components/PanelHeaderButton/PanelHeaderButton.tsx"],"sourcesContent":["import * as React from 'react';\nimport { TappableProps, Tappable } from '../Tappable/Tappable';\nimport { classNames, isPrimitiveReactNode } from '@vkontakte/vkjs';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { getTitleFromChildren } from '../../lib/utils';\nimport { Platform } from '../../lib/platform';\nimport { Text } from '../Typography/Text/Text';\nimport { Title } from '../Typography/Title/Title';\nimport styles from './PanelHeaderButton.module.css';\n\nfunction getPlatformClassName(platform: string): string {\n switch (platform) {\n case 'ios':\n return styles['PanelHeaderButton--ios'];\n case 'vkcom':\n return styles['PanelHeaderButton--vkcom'];\n default:\n return styles['PanelHeaderButton--android'];\n }\n}\n\nexport interface PanelHeaderButtonProps extends Omit<TappableProps, 'label'> {\n primary?: boolean;\n label?: React.ReactNode;\n}\n\ninterface ButtonTypographyProps extends React.AllHTMLAttributes<HTMLElement> {\n primary?: PanelHeaderButtonProps['primary'];\n}\n\nconst ButtonTypography = ({ primary, children }: ButtonTypographyProps) => {\n const platform = usePlatform();\n\n if (platform === Platform.IOS) {\n return (\n <Title Component=\"span\" level=\"3\" weight={primary ? '1' : '3'}>\n {children}\n </Title>\n );\n }\n\n return <Text weight={platform === Platform.VKCOM ? undefined : '2'}>{children}</Text>;\n};\n\nconst warn = warnOnce('PanelHeaderButton');\n\n/**\n * @see https://vkcom.github.io/VKUI/#/PanelHeaderButton\n */\nexport const PanelHeaderButton = ({\n children,\n primary = false,\n label,\n className,\n ...restProps\n}: PanelHeaderButtonProps) => {\n const isPrimitive = isPrimitiveReactNode(children);\n const isPrimitiveLabel = isPrimitiveReactNode(label);\n const platform = usePlatform();\n\n let hoverMode;\n let activeMode;\n\n switch (platform) {\n case Platform.IOS:\n hoverMode = 'background';\n activeMode = 'opacity';\n break;\n case Platform.VKCOM:\n hoverMode = styles['PanelHeaderButton--hover'];\n activeMode = styles['PanelHeaderButton--active'];\n break;\n default:\n hoverMode = 'background';\n activeMode = 'background';\n }\n\n if (process.env.NODE_ENV === 'development') {\n const hasAccessibleName = Boolean(\n getTitleFromChildren(children) ||\n getTitleFromChildren(label) ||\n restProps['aria-label'] ||\n restProps['aria-labelledby'],\n );\n\n if (!hasAccessibleName) {\n warn(\n 'a11y: У кнопки нет названия, которое может прочитать скринридер, и она недоступна для части пользователей. Замените содержимое на текст или добавьте описание действия с помощью пропа aria-label.',\n 'error',\n );\n }\n }\n\n return (\n <Tappable\n {...restProps}\n hoverMode={hoverMode}\n Component={restProps.href ? 'a' : 'button'}\n activeEffectDelay={200}\n activeMode={activeMode}\n className={classNames(\n styles['PanelHeaderButton'],\n getPlatformClassName(platform),\n isPrimitive && styles['PanelHeaderButton--primitive'],\n !isPrimitive && !isPrimitiveLabel && styles['PanelHeaderButton--notPrimitive'],\n className,\n )}\n >\n {isPrimitive ? <ButtonTypography primary={primary}>{children}</ButtonTypography> : children}\n {isPrimitiveLabel ? (\n <ButtonTypography primary={primary} className={styles['PanelHeaderButton__label']}>\n {label}\n </ButtonTypography>\n ) : (\n label\n )}\n </Tappable>\n );\n};\n"],"mappings":"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"}
@@ -96,7 +96,10 @@ var Popover = function Popover(_ref) {
96
96
  setShown(false);
97
97
  }
98
98
  };
99
- (0, _useGlobalEventListener.useGlobalEventListener)(document, 'click', handleOutsideClick);
99
+ (0, _useGlobalEventListener.useGlobalEventListener)(document, 'click', handleOutsideClick, {
100
+ capture: true,
101
+ passive: true
102
+ });
100
103
  var targetEnterListener = (0, _useEventListener.useEventListener)('mouseenter', handleTargetEnter);
101
104
  var targetClickEvent = (0, _useEventListener.useEventListener)('click', handleTargetClick);
102
105
  var targetLeaveListener = (0, _useEventListener.useEventListener)('mouseleave', handleTargetLeave);
@@ -1 +1 @@
1
- {"version":3,"file":"Popover.js","names":["Popover","action","shownProp","shown","showDelay","hideDelay","offsetDistance","content","children","styleProp","style","className","getRef","onShownChange","restProps","useDOM","document","hoverable","hovered","React","useRef","useState","computedShown","setComputedShown","dropdownNode","setPopperNode","patchedPopperRef","useExternRef","usePatchChildrenRef","childRef","child","setShown","value","showTimeout","useTimeout","hideTimeout","handleTargetEnter","current","clear","set","handleTargetClick","handleTargetLeave","handleContentKeyDownEscape","handleOutsideClick","e","contains","target","useGlobalEventListener","targetEnterListener","useEventListener","targetClickEvent","targetLeaveListener","useEffect","add","remove","classNames","wrapperClassName","undefined"],"sources":["../../../../src/components/Popover/Popover.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useDOM } from '../../lib/dom';\nimport { classNames } from '@vkontakte/vkjs';\nimport { PopperCommonProps, Popper } from '../Popper/Popper';\nimport { FocusTrap } from '../FocusTrap/FocusTrap';\nimport { useTimeout } from '../../hooks/useTimeout';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useEventListener } from '../../hooks/useEventListener';\nimport { useGlobalEventListener } from '../../hooks/useGlobalEventListener';\nimport { usePatchChildrenRef } from '../../hooks/usePatchChildrenRef';\nimport styles from './Popover.module.css';\n\nexport interface PopoverProps extends Omit<PopperCommonProps, 'arrow' | 'arrowClassName'> {\n /**\n * Механика вызова всплывающего окна.\n *\n * - `\"click\"` – показывается/скрывается только при нажатии.\n * - `\"hover\"` – помимо нажатия, будет показываться/скрывается при наведении/отведении мыши.\n *\n * > ⚠️`\"hover\"` на тач-устройствах будет работать как `\"click\"`, с одним лишь нюансом, что не будет закрываться\n * > при повторном нажатии на целевой элемент. Для закрытия необходимо нажать на область вне целевого элемента\n * > и выпадающего окна.\n */\n action?: 'click' | 'hover';\n /**\n * Если передан, то всплывающее окно будет показан/скрыт в зависимости от значения свойства.\n */\n shown?: boolean;\n /**\n * Количество миллисекунд, после которых произойдёт показ всплывающего окна.\n *\n * > Используется только для `action=\"hover\"` при наведении/отведении мыши.\n */\n showDelay?: number;\n /**\n * Количество миллисекунд, после которых произойдёт скрытие всплывающего окна.\n *\n * > Используется только для `action=\"hover\"` при наведении/отведении мыши.\n */\n hideDelay?: number;\n /**\n * Содержимое всплывающего окна.\n */\n content?: React.ReactNode;\n /**\n * Целевой элемент. Всплывающее окно появится возле него.\n *\n * > ⚠️ Если это пользовательский компонент, то он должен предоставлять параметры либо `getRootRef`, либо `ref` для получения ссылки на DOM-узел.\n */\n children?: React.ReactElement;\n /**\n * Вызывается при каждом изменении видимости всплывающего окна.\n */\n onShownChange?(shown: boolean): void;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Popover\n */\nexport const Popover = ({\n action = 'click',\n shown: shownProp,\n showDelay = 150,\n hideDelay = 150,\n offsetDistance = 8,\n content,\n children,\n style: styleProp,\n className,\n getRef,\n onShownChange,\n ...restProps\n}: PopoverProps) => {\n const { document } = useDOM();\n\n const hoverable = action === 'hover';\n const hovered = React.useRef(false);\n const [computedShown, setComputedShown] = React.useState(shownProp || false);\n const [dropdownNode, setPopperNode] = React.useState<HTMLElement | null>(null);\n\n const shown = typeof shownProp === 'boolean' ? shownProp : computedShown;\n\n const patchedPopperRef = useExternRef<HTMLDivElement>(setPopperNode, getRef);\n\n const [childRef, child] = usePatchChildrenRef(children);\n\n const setShown = (value: boolean) => {\n if (typeof shownProp !== 'boolean') {\n setComputedShown(value);\n }\n typeof onShownChange === 'function' && onShownChange(value);\n };\n\n const showTimeout = useTimeout(() => setShown(true), showDelay);\n\n const hideTimeout = useTimeout(() => setShown(false), hideDelay);\n\n const handleTargetEnter = () => {\n hovered.current = true;\n hideTimeout.clear();\n showTimeout.set();\n };\n\n const handleTargetClick = () => {\n if (hovered.current && shown) {\n return;\n }\n setShown(!shown);\n };\n\n const handleTargetLeave = () => {\n hovered.current = false;\n showTimeout.clear();\n hideTimeout.set();\n };\n\n const handleContentKeyDownEscape = () => {\n setShown(false);\n };\n\n const handleOutsideClick = (e: MouseEvent) => {\n if (\n dropdownNode &&\n !childRef.current?.contains(e.target as Node) &&\n !dropdownNode.contains(e.target as Node)\n ) {\n setShown(false);\n }\n };\n\n useGlobalEventListener(document, 'click', handleOutsideClick);\n const targetEnterListener = useEventListener('mouseenter', handleTargetEnter);\n const targetClickEvent = useEventListener('click', handleTargetClick);\n const targetLeaveListener = useEventListener('mouseleave', handleTargetLeave);\n\n React.useEffect(() => {\n if (!childRef.current) {\n return;\n }\n\n targetClickEvent.add(childRef.current);\n }, [childRef, targetClickEvent]);\n\n React.useEffect(() => {\n if (!childRef.current) {\n return;\n }\n\n if (hoverable) {\n targetEnterListener.add(childRef.current);\n targetLeaveListener.add(childRef.current);\n }\n\n return () => {\n targetEnterListener.remove();\n targetLeaveListener.remove();\n };\n }, [childRef, hoverable, targetEnterListener, targetLeaveListener]);\n\n return (\n <React.Fragment>\n {child}\n {shown && (\n <Popper\n {...restProps}\n className={classNames(styles['Popover'], className)}\n targetRef={childRef}\n getRef={patchedPopperRef}\n offsetDistance={offsetDistance}\n style={\n // Reason: Typescript ругается на CSS Custom Properties в объекте\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n {\n ...styleProp,\n '--vkui_internal--popover_safe_zone_padding': `${offsetDistance}px`,\n } as React.CSSProperties\n }\n renderContent={({ className: wrapperClassName }) => (\n <FocusTrap className={wrapperClassName} onClose={handleContentKeyDownEscape}>\n {content}\n </FocusTrap>\n )}\n onMouseOver={hoverable ? hideTimeout.clear : undefined}\n onMouseOut={hoverable ? handleTargetLeave : undefined}\n />\n )}\n </React.Fragment>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"Popover.js","names":["Popover","action","shownProp","shown","showDelay","hideDelay","offsetDistance","content","children","styleProp","style","className","getRef","onShownChange","restProps","useDOM","document","hoverable","hovered","React","useRef","useState","computedShown","setComputedShown","dropdownNode","setPopperNode","patchedPopperRef","useExternRef","usePatchChildrenRef","childRef","child","setShown","value","showTimeout","useTimeout","hideTimeout","handleTargetEnter","current","clear","set","handleTargetClick","handleTargetLeave","handleContentKeyDownEscape","handleOutsideClick","e","contains","target","useGlobalEventListener","capture","passive","targetEnterListener","useEventListener","targetClickEvent","targetLeaveListener","useEffect","add","remove","classNames","wrapperClassName","undefined"],"sources":["../../../../src/components/Popover/Popover.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useDOM } from '../../lib/dom';\nimport { classNames } from '@vkontakte/vkjs';\nimport { PopperCommonProps, Popper } from '../Popper/Popper';\nimport { FocusTrap } from '../FocusTrap/FocusTrap';\nimport { useTimeout } from '../../hooks/useTimeout';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useEventListener } from '../../hooks/useEventListener';\nimport { useGlobalEventListener } from '../../hooks/useGlobalEventListener';\nimport { usePatchChildrenRef } from '../../hooks/usePatchChildrenRef';\nimport styles from './Popover.module.css';\n\nexport interface PopoverProps extends Omit<PopperCommonProps, 'arrow' | 'arrowClassName'> {\n /**\n * Механика вызова всплывающего окна.\n *\n * - `\"click\"` – показывается/скрывается только при нажатии.\n * - `\"hover\"` – помимо нажатия, будет показываться/скрывается при наведении/отведении мыши.\n *\n * > ⚠️`\"hover\"` на тач-устройствах будет работать как `\"click\"`, с одним лишь нюансом, что не будет закрываться\n * > при повторном нажатии на целевой элемент. Для закрытия необходимо нажать на область вне целевого элемента\n * > и выпадающего окна.\n */\n action?: 'click' | 'hover';\n /**\n * Если передан, то всплывающее окно будет показан/скрыт в зависимости от значения свойства.\n */\n shown?: boolean;\n /**\n * Количество миллисекунд, после которых произойдёт показ всплывающего окна.\n *\n * > Используется только для `action=\"hover\"` при наведении/отведении мыши.\n */\n showDelay?: number;\n /**\n * Количество миллисекунд, после которых произойдёт скрытие всплывающего окна.\n *\n * > Используется только для `action=\"hover\"` при наведении/отведении мыши.\n */\n hideDelay?: number;\n /**\n * Содержимое всплывающего окна.\n */\n content?: React.ReactNode;\n /**\n * Целевой элемент. Всплывающее окно появится возле него.\n *\n * > ⚠️ Если это пользовательский компонент, то он должен предоставлять параметры либо `getRootRef`, либо `ref` для получения ссылки на DOM-узел.\n */\n children?: React.ReactElement;\n /**\n * Вызывается при каждом изменении видимости всплывающего окна.\n */\n onShownChange?(shown: boolean): void;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Popover\n */\nexport const Popover = ({\n action = 'click',\n shown: shownProp,\n showDelay = 150,\n hideDelay = 150,\n offsetDistance = 8,\n content,\n children,\n style: styleProp,\n className,\n getRef,\n onShownChange,\n ...restProps\n}: PopoverProps) => {\n const { document } = useDOM();\n\n const hoverable = action === 'hover';\n const hovered = React.useRef(false);\n const [computedShown, setComputedShown] = React.useState(shownProp || false);\n const [dropdownNode, setPopperNode] = React.useState<HTMLElement | null>(null);\n\n const shown = typeof shownProp === 'boolean' ? shownProp : computedShown;\n\n const patchedPopperRef = useExternRef<HTMLDivElement>(setPopperNode, getRef);\n\n const [childRef, child] = usePatchChildrenRef(children);\n\n const setShown = (value: boolean) => {\n if (typeof shownProp !== 'boolean') {\n setComputedShown(value);\n }\n typeof onShownChange === 'function' && onShownChange(value);\n };\n\n const showTimeout = useTimeout(() => setShown(true), showDelay);\n\n const hideTimeout = useTimeout(() => setShown(false), hideDelay);\n\n const handleTargetEnter = () => {\n hovered.current = true;\n hideTimeout.clear();\n showTimeout.set();\n };\n\n const handleTargetClick = () => {\n if (hovered.current && shown) {\n return;\n }\n setShown(!shown);\n };\n\n const handleTargetLeave = () => {\n hovered.current = false;\n showTimeout.clear();\n hideTimeout.set();\n };\n\n const handleContentKeyDownEscape = () => {\n setShown(false);\n };\n\n const handleOutsideClick = (e: MouseEvent) => {\n if (\n dropdownNode &&\n !childRef.current?.contains(e.target as Node) &&\n !dropdownNode.contains(e.target as Node)\n ) {\n setShown(false);\n }\n };\n\n useGlobalEventListener(document, 'click', handleOutsideClick, {\n capture: true,\n passive: true,\n });\n const targetEnterListener = useEventListener('mouseenter', handleTargetEnter);\n const targetClickEvent = useEventListener('click', handleTargetClick);\n const targetLeaveListener = useEventListener('mouseleave', handleTargetLeave);\n\n React.useEffect(() => {\n if (!childRef.current) {\n return;\n }\n\n targetClickEvent.add(childRef.current);\n }, [childRef, targetClickEvent]);\n\n React.useEffect(() => {\n if (!childRef.current) {\n return;\n }\n\n if (hoverable) {\n targetEnterListener.add(childRef.current);\n targetLeaveListener.add(childRef.current);\n }\n\n return () => {\n targetEnterListener.remove();\n targetLeaveListener.remove();\n };\n }, [childRef, hoverable, targetEnterListener, targetLeaveListener]);\n\n return (\n <React.Fragment>\n {child}\n {shown && (\n <Popper\n {...restProps}\n className={classNames(styles['Popover'], className)}\n targetRef={childRef}\n getRef={patchedPopperRef}\n offsetDistance={offsetDistance}\n style={\n // Reason: Typescript ругается на CSS Custom Properties в объекте\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n {\n ...styleProp,\n '--vkui_internal--popover_safe_zone_padding': `${offsetDistance}px`,\n } as React.CSSProperties\n }\n renderContent={({ className: wrapperClassName }) => (\n <FocusTrap className={wrapperClassName} onClose={handleContentKeyDownEscape}>\n {content}\n </FocusTrap>\n )}\n onMouseOver={hoverable ? hideTimeout.clear : undefined}\n onMouseOut={hoverable ? handleTargetLeave : undefined}\n />\n )}\n </React.Fragment>\n );\n};\n"],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  import * as React from 'react';
2
- import { Modifier } from 'react-popper';
3
- import { HasRef } from '../../types';
4
- export declare type Placement = 'auto' | 'auto-start' | 'auto-end' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end' | 'right-start' | 'right-end' | 'left-start' | 'left-end' | 'top' | 'bottom' | 'left' | 'right';
2
+ import type { HasRef } from '../../types';
3
+ import { type Placement, type PlacementWithAuto, type UseFloatingMiddleware } from '../../lib/floating';
5
4
  export interface PopperRenderContentProps {
6
5
  className: string;
7
6
  }
@@ -9,7 +8,7 @@ export interface PopperCommonProps extends React.HTMLAttributes<HTMLDivElement>,
9
8
  /**
10
9
  * По умолчанию компонент выберет наилучшее расположение сам. Но его можно задать извне с помощью этого свойства
11
10
  */
12
- placement?: Placement;
11
+ placement?: PlacementWithAuto;
13
12
  /**
14
13
  * Отступ по вспомогательной оси
15
14
  */
@@ -31,13 +30,14 @@ export interface PopperCommonProps extends React.HTMLAttributes<HTMLDivElement>,
31
30
  */
32
31
  sameWidth?: boolean;
33
32
  forcePortal?: boolean;
34
- onPlacementChange?: (data: {
35
- placement?: Placement;
36
- }) => void;
33
+ /**
34
+ * Подписывается на изменение геометрии `targetRef`, чтобы пересчитать свою позицию.
35
+ */
36
+ autoUpdateOnTargetResize?: boolean;
37
37
  /**
38
38
  * Массив кастомных модификаторов для Popper (необходимо мемоизировать)
39
39
  */
40
- customModifiers?: Array<Modifier<string>>;
40
+ customMiddlewares?: UseFloatingMiddleware[];
41
41
  /**
42
42
  * При передаче содержимого в `children`, он будет обёрнут во внутренний контейнер.
43
43
  *
@@ -46,6 +46,9 @@ export interface PopperCommonProps extends React.HTMLAttributes<HTMLDivElement>,
46
46
  * > ⚠️ Параметр `children` будет проигнорирован.
47
47
  */
48
48
  renderContent?(props: PopperRenderContentProps): React.ReactNode;
49
+ onPlacementChange?(data: {
50
+ placement?: Placement;
51
+ }): void;
49
52
  }
50
53
  export interface PopperProps extends PopperCommonProps {
51
54
  targetRef: React.RefObject<HTMLElement>;
@@ -53,4 +56,4 @@ export interface PopperProps extends PopperCommonProps {
53
56
  /**
54
57
  * @see https://vkcom.github.io/VKUI/#/Popper
55
58
  */
56
- export declare const Popper: ({ targetRef, children, getRef, placement, onPlacementChange, arrow, arrowClassName, sameWidth, offsetDistance, offsetSkidding, forcePortal, style: compStyles, customModifiers, renderContent, className, ...restProps }: PopperProps) => JSX.Element;
59
+ export declare const Popper: ({ targetRef, children, getRef, placement: placementProp, onPlacementChange, arrow, arrowClassName, sameWidth, offsetDistance, offsetSkidding, forcePortal, autoUpdateOnTargetResize, style: styleProp, customMiddlewares, renderContent, className, ...restProps }: PopperProps) => JSX.Element;
@@ -9,146 +9,119 @@ exports.Popper = void 0;
9
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
10
  var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
11
11
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
12
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
12
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
14
13
  var React = _interopRequireWildcard(require("react"));
15
- var _reactPopper = require("react-popper");
16
14
  var _AppRootPortal = require("../AppRoot/AppRootPortal");
17
15
  var _PopperArrow = require("../PopperArrow/PopperArrow");
18
- var _usePlatform = require("../../hooks/usePlatform");
19
- var _getPlatformClassName = require("../../helpers/getPlatformClassName");
20
16
  var _useExternRef = require("../../hooks/useExternRef");
21
- var _useIsomorphicLayoutEffect = require("../../lib/useIsomorphicLayoutEffect");
17
+ var _floating = require("../../lib/floating");
22
18
  var _vkjs = require("@vkontakte/vkjs");
23
- var _excluded = ["targetRef", "children", "getRef", "placement", "onPlacementChange", "arrow", "arrowClassName", "sameWidth", "offsetDistance", "offsetSkidding", "forcePortal", "style", "customModifiers", "renderContent", "className"];
24
- var ARROW_PADDING = 8;
25
- var ARROW_WIDTH = 20;
26
- var ARROW_HEIGHT = 8;
27
- var preventOverflowModifier = {
28
- name: 'preventOverflow',
29
- options: {
30
- mainAxis: false
31
- }
32
- };
33
- var flipModifier = {
34
- name: 'flip'
35
- };
36
- var arrowModifier = {
37
- name: 'arrow',
38
- options: {
39
- padding: ARROW_PADDING
40
- }
41
- };
42
- var sameWidthModifier = {
43
- name: 'sameWidth',
44
- enabled: true,
45
- phase: 'beforeWrite',
46
- requires: ['computeStyles'],
47
- fn: function fn(_ref) {
48
- var state = _ref.state;
49
- state.styles.popper.width = "".concat(state.rects.reference.width, "px");
50
- },
51
- effect: function effect(_ref2) {
52
- var state = _ref2.state;
53
- state.elements.popper.style.width = "".concat(state.elements.reference.offsetWidth, "px");
54
- }
55
- };
56
-
19
+ var _excluded = ["targetRef", "children", "getRef", "placement", "onPlacementChange", "arrow", "arrowClassName", "sameWidth", "offsetDistance", "offsetSkidding", "forcePortal", "autoUpdateOnTargetResize", "style", "customMiddlewares", "renderContent", "className"];
57
20
  /**
58
21
  * @see https://vkcom.github.io/VKUI/#/Popper
59
22
  */
60
- var Popper = function Popper(_ref3) {
61
- var _targetRef$current3;
62
- var targetRef = _ref3.targetRef,
63
- children = _ref3.children,
64
- getRef = _ref3.getRef,
65
- _ref3$placement = _ref3.placement,
66
- placement = _ref3$placement === void 0 ? 'bottom-start' : _ref3$placement,
67
- onPlacementChange = _ref3.onPlacementChange,
68
- arrow = _ref3.arrow,
69
- arrowClassName = _ref3.arrowClassName,
70
- sameWidth = _ref3.sameWidth,
71
- _ref3$offsetDistance = _ref3.offsetDistance,
72
- offsetDistance = _ref3$offsetDistance === void 0 ? 8 : _ref3$offsetDistance,
73
- _ref3$offsetSkidding = _ref3.offsetSkidding,
74
- offsetSkidding = _ref3$offsetSkidding === void 0 ? 0 : _ref3$offsetSkidding,
75
- _ref3$forcePortal = _ref3.forcePortal,
76
- forcePortal = _ref3$forcePortal === void 0 ? true : _ref3$forcePortal,
77
- compStyles = _ref3.style,
78
- customModifiers = _ref3.customModifiers,
79
- renderContent = _ref3.renderContent,
80
- className = _ref3.className,
81
- restProps = (0, _objectWithoutProperties2.default)(_ref3, _excluded);
82
- var _React$useState = React.useState(null),
83
- _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
84
- popperNode = _React$useState2[0],
85
- setPopperNode = _React$useState2[1];
86
- var _React$useState3 = React.useState(0),
87
- _React$useState4 = (0, _slicedToArray2.default)(_React$useState3, 2),
88
- smallTargetOffsetSkidding = _React$useState4[0],
89
- setSmallTargetOffsetSkidding = _React$useState4[1];
90
- var platform = (0, _usePlatform.usePlatform)();
91
- var setExternalRef = (0, _useExternRef.useExternRef)(getRef, setPopperNode);
92
- var modifiers = React.useMemo(function () {
93
- var modifiers = [preventOverflowModifier, {
94
- name: 'offset',
95
- options: {
96
- offset: [arrow ? offsetSkidding - smallTargetOffsetSkidding : offsetSkidding, arrow ? offsetDistance + ARROW_HEIGHT : offsetDistance]
97
- }
98
- }, flipModifier];
99
- if (arrow) {
100
- modifiers.push(arrowModifier);
23
+ var Popper = function Popper(_ref) {
24
+ var targetRef = _ref.targetRef,
25
+ children = _ref.children,
26
+ getRef = _ref.getRef,
27
+ _ref$placement = _ref.placement,
28
+ placementProp = _ref$placement === void 0 ? 'bottom-start' : _ref$placement,
29
+ onPlacementChange = _ref.onPlacementChange,
30
+ arrow = _ref.arrow,
31
+ arrowClassName = _ref.arrowClassName,
32
+ sameWidth = _ref.sameWidth,
33
+ _ref$offsetDistance = _ref.offsetDistance,
34
+ offsetDistance = _ref$offsetDistance === void 0 ? 8 : _ref$offsetDistance,
35
+ _ref$offsetSkidding = _ref.offsetSkidding,
36
+ offsetSkidding = _ref$offsetSkidding === void 0 ? 0 : _ref$offsetSkidding,
37
+ _ref$forcePortal = _ref.forcePortal,
38
+ forcePortal = _ref$forcePortal === void 0 ? true : _ref$forcePortal,
39
+ _ref$autoUpdateOnTarg = _ref.autoUpdateOnTargetResize,
40
+ autoUpdateOnTargetResize = _ref$autoUpdateOnTarg === void 0 ? false : _ref$autoUpdateOnTarg,
41
+ styleProp = _ref.style,
42
+ customMiddlewares = _ref.customMiddlewares,
43
+ renderContent = _ref.renderContent,
44
+ className = _ref.className,
45
+ restProps = (0, _objectWithoutProperties2.default)(_ref, _excluded);
46
+ var arrowRef = React.useRef(null);
47
+ var isNotAutoPlacement = (0, _floating.checkIsNotAutoPlacement)(placementProp);
48
+ var memoizedMiddlewares = React.useMemo(function () {
49
+ var middlewares = [(0, _floating.offsetMiddleware)({
50
+ crossAxis: offsetSkidding,
51
+ mainAxis: arrow ? offsetDistance + _PopperArrow.ARROW_HEIGHT : offsetDistance
52
+ })];
53
+
54
+ // см. https://floating-ui.com/docs/flip#conflict-with-autoplacement
55
+ if (isNotAutoPlacement) {
56
+ middlewares.push((0, _floating.flipMiddleware)());
57
+ } else {
58
+ middlewares.push((0, _floating.autoPlacementMiddleware)({
59
+ alignment: (0, _floating.getAutoPlacementAlign)(placementProp)
60
+ }));
101
61
  }
62
+ middlewares.push((0, _floating.shiftMiddleware)());
102
63
  if (sameWidth) {
103
- modifiers.push(sameWidthModifier);
64
+ middlewares.push((0, _floating.sizeMiddleware)({
65
+ apply: function apply(_ref2) {
66
+ var rects = _ref2.rects,
67
+ elements = _ref2.elements;
68
+ Object.assign(elements.floating.style, {
69
+ width: "".concat(rects.reference.width, "px")
70
+ });
71
+ }
72
+ }));
104
73
  }
105
- if (customModifiers) {
106
- modifiers.push.apply(modifiers, (0, _toConsumableArray2.default)(customModifiers));
74
+ if (customMiddlewares) {
75
+ middlewares.push.apply(middlewares, (0, _toConsumableArray2.default)(customMiddlewares));
107
76
  }
108
- return modifiers;
109
- }, [arrow, sameWidth, smallTargetOffsetSkidding, offsetSkidding, offsetDistance, customModifiers]);
110
- var _usePopper = (0, _reactPopper.usePopper)(targetRef.current, popperNode, {
111
- placement: placement,
112
- modifiers: modifiers
113
- }),
114
- popperStyles = _usePopper.styles,
115
- state = _usePopper.state,
116
- attributes = _usePopper.attributes;
117
- var resolvedPlacement = state === null || state === void 0 ? void 0 : state.placement;
118
- var isEdgePlacement = !!resolvedPlacement && resolvedPlacement.includes('-'); // true, если поппер отрисован с краю
119
77
 
120
- // Если поппер рисуется с краю, то нужно опционально сместить его в тех случаях, когда стрелка не дотягивается до
121
- // таргета из-за маленьких размеров последнего
122
- (0, _useIsomorphicLayoutEffect.useIsomorphicLayoutEffect)(function () {
123
- if (arrow && isEdgePlacement) {
124
- var _ref4, _targetRef$current, _targetRef$current2;
125
- var placementDirection = resolvedPlacement !== null && resolvedPlacement !== void 0 && resolvedPlacement.startsWith('bottom') || resolvedPlacement !== null && resolvedPlacement !== void 0 && resolvedPlacement.startsWith('top') ? 'vertical' : 'horizontal';
126
- var arrowSize = placementDirection === 'vertical' ? ARROW_WIDTH : ARROW_HEIGHT;
127
- var targetSize = (_ref4 = placementDirection === 'vertical' ? (_targetRef$current = targetRef.current) === null || _targetRef$current === void 0 ? void 0 : _targetRef$current.offsetWidth : (_targetRef$current2 = targetRef.current) === null || _targetRef$current2 === void 0 ? void 0 : _targetRef$current2.offsetHeight) !== null && _ref4 !== void 0 ? _ref4 : 0;
128
- if (targetSize < arrowSize + 2 * ARROW_PADDING) {
129
- setSmallTargetOffsetSkidding(ARROW_PADDING + arrowSize / 2);
130
- }
131
- } else {
132
- setSmallTargetOffsetSkidding(0);
78
+ // см. https://floating-ui.com/docs/arrow#order
79
+ if (arrow) {
80
+ middlewares.push((0, _floating.arrowMiddleware)({
81
+ element: arrowRef,
82
+ padding: _PopperArrow.ARROW_PADDING
83
+ }));
133
84
  }
134
- }, [arrow, isEdgePlacement]);
85
+ return middlewares;
86
+ }, [arrow, sameWidth, offsetSkidding, offsetDistance, customMiddlewares, placementProp, isNotAutoPlacement]);
87
+ var _useFloating = (0, _floating.useFloating)({
88
+ placement: isNotAutoPlacement ? placementProp : undefined,
89
+ middleware: memoizedMiddlewares,
90
+ whileElementsMounted: function whileElementsMounted() {
91
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
92
+ args[_key] = arguments[_key];
93
+ }
94
+ return _floating.autoUpdateFloatingElement.apply(void 0, args.concat([{
95
+ elementResize: autoUpdateOnTargetResize
96
+ }]));
97
+ }
98
+ }),
99
+ floatingDataX = _useFloating.x,
100
+ floatingDataY = _useFloating.y,
101
+ floatingPositionStrategy = _useFloating.strategy,
102
+ resolvedPlacement = _useFloating.placement,
103
+ refs = _useFloating.refs,
104
+ arrowCoords = _useFloating.middlewareData.arrow;
105
+ var handleRootRef = (0, _useExternRef.useExternRef)(refs.setFloating, getRef);
106
+ React.useEffect(function () {
107
+ refs.setReference(targetRef.current);
108
+ }, [refs, targetRef]);
135
109
  React.useEffect(function () {
136
- if (resolvedPlacement) {
137
- onPlacementChange && onPlacementChange({
110
+ if (resolvedPlacement && onPlacementChange) {
111
+ onPlacementChange({
138
112
  placement: resolvedPlacement
139
113
  });
140
114
  }
141
115
  }, [onPlacementChange, resolvedPlacement]);
142
- var dropdown = /*#__PURE__*/React.createElement("div", (0, _extends2.default)({}, restProps, attributes.popper, {
143
- className: (0, _vkjs.classNames)("vkuiPopper", (0, _getPlatformClassName.getPlatformClassName)("vkuiPopper", platform), className),
144
- ref: setExternalRef,
145
- style: (0, _objectSpread2.default)((0, _objectSpread2.default)((0, _objectSpread2.default)({}, compStyles), popperStyles.popper), {}, {
146
- minWidth: sameWidth ? (_targetRef$current3 = targetRef.current) === null || _targetRef$current3 === void 0 ? void 0 : _targetRef$current3.scrollWidth : undefined
147
- })
116
+ var dropdown = /*#__PURE__*/React.createElement("div", (0, _extends2.default)({}, restProps, {
117
+ className: (0, _vkjs.classNames)("vkuiPopper", className),
118
+ ref: handleRootRef,
119
+ style: (0, _objectSpread2.default)((0, _objectSpread2.default)({}, styleProp), (0, _floating.convertFloatingDataToReactCSSProperties)(floatingPositionStrategy, floatingDataX, floatingDataY, sameWidth ? null : undefined))
148
120
  }), arrow && /*#__PURE__*/React.createElement(_PopperArrow.PopperArrow, {
149
- attributes: attributes.arrow,
150
- style: popperStyles.arrow,
151
- arrowClassName: arrowClassName
121
+ coords: arrowCoords,
122
+ placement: resolvedPlacement,
123
+ arrowClassName: arrowClassName,
124
+ getRootRef: arrowRef
152
125
  }), renderContent ? renderContent({
153
126
  className: "vkuiPopper__content"
154
127
  }) : /*#__PURE__*/React.createElement("div", {
@@ -1 +1 @@
1
- {"version":3,"file":"Popper.js","names":["ARROW_PADDING","ARROW_WIDTH","ARROW_HEIGHT","preventOverflowModifier","name","options","mainAxis","flipModifier","arrowModifier","padding","sameWidthModifier","enabled","phase","requires","fn","state","styles","popper","width","rects","reference","effect","elements","style","offsetWidth","Popper","targetRef","children","getRef","placement","onPlacementChange","arrow","arrowClassName","sameWidth","offsetDistance","offsetSkidding","forcePortal","compStyles","customModifiers","renderContent","className","restProps","React","useState","popperNode","setPopperNode","smallTargetOffsetSkidding","setSmallTargetOffsetSkidding","platform","usePlatform","setExternalRef","useExternRef","modifiers","useMemo","offset","push","usePopper","current","popperStyles","attributes","resolvedPlacement","isEdgePlacement","includes","useIsomorphicLayoutEffect","placementDirection","startsWith","arrowSize","targetSize","offsetHeight","useEffect","dropdown","classNames","getPlatformClassName","minWidth","scrollWidth","undefined"],"sources":["../../../../src/components/Popper/Popper.tsx"],"sourcesContent":["import * as React from 'react';\nimport { usePopper, Modifier } from 'react-popper';\nimport { AppRootPortal } from '../AppRoot/AppRootPortal';\nimport { PopperArrow } from '../PopperArrow/PopperArrow';\nimport { HasRef } from '../../types';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { getPlatformClassName } from '../../helpers/getPlatformClassName';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { classNames } from '@vkontakte/vkjs';\nimport styles from './Popper.module.css';\n\nexport type Placement =\n | 'auto'\n | 'auto-start'\n | 'auto-end'\n | 'top-start'\n | 'top-end'\n | 'bottom-start'\n | 'bottom-end'\n | 'right-start'\n | 'right-end'\n | 'left-start'\n | 'left-end'\n | 'top'\n | 'bottom'\n | 'left'\n | 'right';\n\nexport interface PopperRenderContentProps {\n className: string;\n}\n\nexport interface PopperCommonProps\n extends React.HTMLAttributes<HTMLDivElement>,\n HasRef<HTMLDivElement> {\n /**\n * По умолчанию компонент выберет наилучшее расположение сам. Но его можно задать извне с помощью этого свойства\n */\n placement?: Placement;\n /**\n * Отступ по вспомогательной оси\n */\n offsetSkidding?: number;\n /**\n * Отступ по главной оси\n */\n offsetDistance?: number;\n /**\n * Отображать ли стрелку, указывающую на якорный элемент\n */\n arrow?: boolean;\n /**\n * Стиль стрелки\n */\n arrowClassName?: string;\n /**\n * Выставлять ширину равной target элементу\n */\n sameWidth?: boolean;\n forcePortal?: boolean;\n onPlacementChange?: (data: { placement?: Placement }) => void;\n /**\n * Массив кастомных модификаторов для Popper (необходимо мемоизировать)\n */\n customModifiers?: Array<Modifier<string>>;\n /**\n * При передаче содержимого в `children`, он будет обёрнут во внутренний контейнер.\n *\n * Если хочется управлять этим контейнером, то используйте данную функцию.\n *\n * > ⚠️ Параметр `children` будет проигнорирован.\n */\n renderContent?(props: PopperRenderContentProps): React.ReactNode;\n}\n\nexport interface PopperProps extends PopperCommonProps {\n targetRef: React.RefObject<HTMLElement>;\n}\n\nconst ARROW_PADDING = 8;\nconst ARROW_WIDTH = 20;\nconst ARROW_HEIGHT = 8;\n\nconst preventOverflowModifier: Modifier<string> = {\n name: 'preventOverflow',\n options: {\n mainAxis: false,\n },\n};\n\nconst flipModifier: Modifier<string> = {\n name: 'flip',\n};\n\nconst arrowModifier: Modifier<string> = {\n name: 'arrow',\n options: {\n padding: ARROW_PADDING,\n },\n};\n\nconst sameWidthModifier: Modifier<string> = {\n name: 'sameWidth',\n enabled: true,\n phase: 'beforeWrite',\n requires: ['computeStyles'],\n fn: ({ state }) => {\n state.styles.popper.width = `${state.rects.reference.width}px`;\n },\n effect: ({ state }) => {\n state.elements.popper.style.width = `${\n (state.elements.reference as HTMLElement).offsetWidth\n }px`;\n },\n};\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Popper\n */\nexport const Popper = ({\n targetRef,\n children,\n getRef,\n placement = 'bottom-start',\n onPlacementChange,\n arrow,\n arrowClassName,\n sameWidth,\n offsetDistance = 8,\n offsetSkidding = 0,\n forcePortal = true,\n style: compStyles,\n customModifiers,\n renderContent,\n className,\n ...restProps\n}: PopperProps) => {\n const [popperNode, setPopperNode] = React.useState<HTMLDivElement | null>(null);\n const [smallTargetOffsetSkidding, setSmallTargetOffsetSkidding] = React.useState(0);\n const platform = usePlatform();\n\n const setExternalRef = useExternRef<HTMLDivElement>(getRef, setPopperNode);\n\n const modifiers = React.useMemo(() => {\n const modifiers: Array<Modifier<string>> = [\n preventOverflowModifier,\n {\n name: 'offset',\n options: {\n offset: [\n arrow ? offsetSkidding - smallTargetOffsetSkidding : offsetSkidding,\n arrow ? offsetDistance + ARROW_HEIGHT : offsetDistance,\n ],\n },\n },\n flipModifier,\n ];\n\n if (arrow) {\n modifiers.push(arrowModifier);\n }\n\n if (sameWidth) {\n modifiers.push(sameWidthModifier);\n }\n\n if (customModifiers) {\n modifiers.push(...customModifiers);\n }\n return modifiers;\n }, [\n arrow,\n sameWidth,\n smallTargetOffsetSkidding,\n offsetSkidding,\n offsetDistance,\n customModifiers,\n ]);\n\n const {\n styles: popperStyles,\n state,\n attributes,\n } = usePopper(targetRef.current, popperNode, {\n placement,\n modifiers,\n });\n\n const resolvedPlacement = state?.placement;\n const isEdgePlacement = !!resolvedPlacement && resolvedPlacement.includes('-'); // true, если поппер отрисован с краю\n\n // Если поппер рисуется с краю, то нужно опционально сместить его в тех случаях, когда стрелка не дотягивается до\n // таргета из-за маленьких размеров последнего\n useIsomorphicLayoutEffect(() => {\n if (arrow && isEdgePlacement) {\n const placementDirection =\n resolvedPlacement?.startsWith('bottom') || resolvedPlacement?.startsWith('top')\n ? 'vertical'\n : 'horizontal';\n\n const arrowSize = placementDirection === 'vertical' ? ARROW_WIDTH : ARROW_HEIGHT;\n const targetSize =\n (placementDirection === 'vertical'\n ? targetRef.current?.offsetWidth\n : targetRef.current?.offsetHeight) ?? 0;\n\n if (targetSize < arrowSize + 2 * ARROW_PADDING) {\n setSmallTargetOffsetSkidding(ARROW_PADDING + arrowSize / 2);\n }\n } else {\n setSmallTargetOffsetSkidding(0);\n }\n }, [arrow, isEdgePlacement]);\n\n React.useEffect(() => {\n if (resolvedPlacement) {\n onPlacementChange && onPlacementChange({ placement: resolvedPlacement });\n }\n }, [onPlacementChange, resolvedPlacement]);\n\n const dropdown = (\n <div\n {...restProps}\n {...attributes.popper}\n className={classNames(\n styles['Popper'],\n getPlatformClassName(styles['Popper'], platform),\n className,\n )}\n ref={setExternalRef}\n style={{\n ...compStyles,\n ...popperStyles.popper,\n minWidth: sameWidth ? targetRef.current?.scrollWidth : undefined,\n }}\n >\n {arrow && (\n <PopperArrow\n attributes={attributes.arrow}\n style={popperStyles.arrow}\n arrowClassName={arrowClassName}\n />\n )}\n {renderContent ? (\n renderContent({ className: styles['Popper__content'] })\n ) : (\n <div className={styles['Popper__content']}>{children}</div>\n )}\n </div>\n );\n\n return (\n <AppRootPortal forcePortal={forcePortal} className={styles['PopperPortal']}>\n {dropdown}\n </AppRootPortal>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"Popper.js","names":["Popper","targetRef","children","getRef","placement","placementProp","onPlacementChange","arrow","arrowClassName","sameWidth","offsetDistance","offsetSkidding","forcePortal","autoUpdateOnTargetResize","styleProp","style","customMiddlewares","renderContent","className","restProps","arrowRef","React","useRef","isNotAutoPlacement","checkIsNotAutoPlacement","memoizedMiddlewares","useMemo","middlewares","offsetMiddleware","crossAxis","mainAxis","ARROW_HEIGHT","push","flipMiddleware","autoPlacementMiddleware","alignment","getAutoPlacementAlign","shiftMiddleware","sizeMiddleware","apply","rects","elements","Object","assign","floating","width","reference","arrowMiddleware","element","padding","ARROW_PADDING","useFloating","undefined","middleware","whileElementsMounted","args","autoUpdateFloatingElement","elementResize","floatingDataX","x","floatingDataY","y","floatingPositionStrategy","strategy","resolvedPlacement","refs","arrowCoords","middlewareData","handleRootRef","useExternRef","setFloating","useEffect","setReference","current","dropdown","classNames","convertFloatingDataToReactCSSProperties"],"sources":["../../../../src/components/Popper/Popper.tsx"],"sourcesContent":["import * as React from 'react';\nimport { AppRootPortal } from '../AppRoot/AppRootPortal';\nimport { ARROW_PADDING, ARROW_HEIGHT, PopperArrow } from '../PopperArrow/PopperArrow';\nimport type { HasRef } from '../../types';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport {\n type Placement,\n type PlacementWithAuto,\n checkIsNotAutoPlacement,\n getAutoPlacementAlign,\n convertFloatingDataToReactCSSProperties,\n useFloating,\n autoUpdateFloatingElement,\n type UseFloatingMiddleware,\n offsetMiddleware,\n flipMiddleware,\n shiftMiddleware,\n autoPlacementMiddleware,\n arrowMiddleware,\n sizeMiddleware,\n} from '../../lib/floating';\nimport { classNames } from '@vkontakte/vkjs';\nimport styles from './Popper.module.css';\n\nexport interface PopperRenderContentProps {\n className: string;\n}\n\nexport interface PopperCommonProps\n extends React.HTMLAttributes<HTMLDivElement>,\n HasRef<HTMLDivElement> {\n /**\n * По умолчанию компонент выберет наилучшее расположение сам. Но его можно задать извне с помощью этого свойства\n */\n placement?: PlacementWithAuto;\n /**\n * Отступ по вспомогательной оси\n */\n offsetSkidding?: number;\n /**\n * Отступ по главной оси\n */\n offsetDistance?: number;\n /**\n * Отображать ли стрелку, указывающую на якорный элемент\n */\n arrow?: boolean;\n /**\n * Стиль стрелки\n */\n arrowClassName?: string;\n /**\n * Выставлять ширину равной target элементу\n */\n sameWidth?: boolean;\n forcePortal?: boolean;\n /**\n * Подписывается на изменение геометрии `targetRef`, чтобы пересчитать свою позицию.\n */\n autoUpdateOnTargetResize?: boolean;\n /**\n * Массив кастомных модификаторов для Popper (необходимо мемоизировать)\n */\n customMiddlewares?: UseFloatingMiddleware[];\n /**\n * При передаче содержимого в `children`, он будет обёрнут во внутренний контейнер.\n *\n * Если хочется управлять этим контейнером, то используйте данную функцию.\n *\n * > ⚠️ Параметр `children` будет проигнорирован.\n */\n renderContent?(props: PopperRenderContentProps): React.ReactNode;\n onPlacementChange?(data: { placement?: Placement }): void;\n}\n\nexport interface PopperProps extends PopperCommonProps {\n targetRef: React.RefObject<HTMLElement>;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Popper\n */\nexport const Popper = ({\n targetRef,\n children,\n getRef,\n placement: placementProp = 'bottom-start',\n onPlacementChange,\n arrow,\n arrowClassName,\n sameWidth,\n offsetDistance = 8,\n offsetSkidding = 0,\n forcePortal = true,\n autoUpdateOnTargetResize = false,\n style: styleProp,\n customMiddlewares,\n renderContent,\n className,\n ...restProps\n}: PopperProps) => {\n const arrowRef = React.useRef<HTMLDivElement>(null);\n\n const isNotAutoPlacement = checkIsNotAutoPlacement(placementProp);\n\n const memoizedMiddlewares = React.useMemo(() => {\n const middlewares: UseFloatingMiddleware[] = [\n offsetMiddleware({\n crossAxis: offsetSkidding,\n mainAxis: arrow ? offsetDistance + ARROW_HEIGHT : offsetDistance,\n }),\n ];\n\n // см. https://floating-ui.com/docs/flip#conflict-with-autoplacement\n if (isNotAutoPlacement) {\n middlewares.push(flipMiddleware());\n } else {\n middlewares.push(\n autoPlacementMiddleware({ alignment: getAutoPlacementAlign(placementProp) }),\n );\n }\n\n middlewares.push(shiftMiddleware());\n\n if (sameWidth) {\n middlewares.push(\n sizeMiddleware({\n apply({ rects, elements }) {\n Object.assign(elements.floating.style, {\n width: `${rects.reference.width}px`,\n });\n },\n }),\n );\n }\n\n if (customMiddlewares) {\n middlewares.push(...customMiddlewares);\n }\n\n // см. https://floating-ui.com/docs/arrow#order\n if (arrow) {\n middlewares.push(\n arrowMiddleware({\n element: arrowRef,\n padding: ARROW_PADDING,\n }),\n );\n }\n\n return middlewares;\n }, [\n arrow,\n sameWidth,\n offsetSkidding,\n offsetDistance,\n customMiddlewares,\n placementProp,\n isNotAutoPlacement,\n ]);\n\n const {\n x: floatingDataX,\n y: floatingDataY,\n strategy: floatingPositionStrategy,\n placement: resolvedPlacement,\n refs,\n middlewareData: { arrow: arrowCoords },\n } = useFloating({\n placement: isNotAutoPlacement ? placementProp : undefined,\n middleware: memoizedMiddlewares,\n whileElementsMounted(...args) {\n return autoUpdateFloatingElement(...args, {\n elementResize: autoUpdateOnTargetResize,\n });\n },\n });\n\n const handleRootRef = useExternRef<HTMLDivElement>(refs.setFloating, getRef);\n\n React.useEffect(() => {\n refs.setReference(targetRef.current);\n }, [refs, targetRef]);\n\n React.useEffect(() => {\n if (resolvedPlacement && onPlacementChange) {\n onPlacementChange({ placement: resolvedPlacement });\n }\n }, [onPlacementChange, resolvedPlacement]);\n\n const dropdown = (\n <div\n {...restProps}\n className={classNames(styles['Popper'], className)}\n ref={handleRootRef}\n style={{\n ...styleProp,\n ...convertFloatingDataToReactCSSProperties(\n floatingPositionStrategy,\n floatingDataX,\n floatingDataY,\n sameWidth ? null : undefined,\n ),\n }}\n >\n {arrow && (\n <PopperArrow\n coords={arrowCoords}\n placement={resolvedPlacement}\n arrowClassName={arrowClassName}\n getRootRef={arrowRef}\n />\n )}\n {renderContent ? (\n renderContent({ className: styles['Popper__content'] })\n ) : (\n <div className={styles['Popper__content']}>{children}</div>\n )}\n </div>\n );\n\n return (\n <AppRootPortal forcePortal={forcePortal} className={styles['PopperPortal']}>\n {dropdown}\n </AppRootPortal>\n );\n};\n"],"mappings":"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"}
@@ -1,7 +1,17 @@
1
- import * as React from 'react';
2
- export interface PopperArrowProps {
3
- style?: React.CSSProperties;
4
- attributes?: React.HTMLAttributes<HTMLDivElement> | null;
1
+ /// <reference types="react" />
2
+ import type { HasRootRef } from '../../types';
3
+ import type { Placement } from '../../lib/floating';
4
+ export declare const ARROW_PADDING = 10;
5
+ export declare const ARROW_WIDTH = 20;
6
+ export declare const ARROW_HEIGHT = 8;
7
+ declare type Coords = {
8
+ x?: number;
9
+ y?: number;
10
+ };
11
+ export interface PopperArrowProps extends HasRootRef<HTMLDivElement> {
12
+ coords?: Coords;
13
+ placement: Placement;
5
14
  arrowClassName?: string;
6
15
  }
7
- export declare const PopperArrow: ({ style, attributes, arrowClassName }: PopperArrowProps) => JSX.Element;
16
+ export declare const PopperArrow: ({ coords, arrowClassName, placement, getRootRef, }: PopperArrowProps) => JSX.Element;
17
+ export {};